var selSerTV = new Array();

function initSeriesTreeSelection()
{
	var selSeries = document.getElementById('hfSelectedSeries').value.split(',');
	var tvSeries = document.getElementById('tvSeries').control;
	for (var i=0; i<selSeries.length; ++i)
	{
		var treeNode = tvSeries.FindNodeById(selSeries[i]);
		var div = document.getElementById('tvSeries_item_'+treeNode.StorageIndex+'_cell');
		div.treeNodeID = treeNode.ID;
		div.reportID = treeNode.reportID;
		selectNode(div);
		Array.add(selSerTV,div);
	}
}

function getSelectedSeries()
{
	var ids = new Array();
	for (var i=0; i<selSerTV.length; ++i)
	{
	    Array.add(ids, selSerTV[i].treeNodeID);
	}

	return ids;
}

function onNodeSelect(sender, args)
{
    //debugger;
	var evt = getEvent();
		
	if (evt != null && typeof(evt) != 'undefined'){	    
	    var elem;
	    if (isMSIE() || isSafari()) elem = evt.srcElement;
	    if (isMozilla()) elem = evt.target;	    
	    var node = elem.parentNode;

	    var nodeDiv = node;
	    var treeNode = args.get_node();
	    
	    nodeDiv.treeNodeID = treeNode.Data[0][1];
	    nodeDiv.reportID = treeNode.Data[2][1];
    	
	    if (evt.ctrlKey || evt.metaKey)
	    {
		    if (Array.contains(selSerTV, nodeDiv))
		    {
			    if (selSerTV.length == 1)
				    return;
			    Array.remove(selSerTV, nodeDiv);
			    unselectNode(nodeDiv);
		    }
		    else
		    {
			    if (selSerTV.length == 2)
			    {
				    var oldestSelected = Array.dequeue(selSerTV);
				    unselectNode(oldestSelected);
			    }
			    Array.add(selSerTV, nodeDiv);
			    selectNode(nodeDiv);
		    }
	    }
	    else
	    {
		    for (var i=0; i<selSerTV.length; ++i)
			    unselectNode(selSerTV[i]);
		    Array.clear(selSerTV);
		    Array.add(selSerTV, nodeDiv);
		    selectNode(nodeDiv);
	    }
    	
	    var item = document.getElementById('hfSelectedSeries');
	    item.value = getSelectedSeries().join(',');
	    
	    //setTimeout("document.getElementById('btnHiddenPostBack').click();",5);
	    setTimeout("__doPostBack('btnHiddenPostBack','')",5);
	}
}
function unselectNode(nodeDiv)
{
	nodeDiv.className = "TreeNode";
	nodeDiv.classNormal = "TreeNode";
	nodeDiv.classOver = "HoverTreeNode";
}
function selectNode(nodeDiv)
{
	nodeDiv.className = "SelectedTreeNode";
	nodeDiv.classNormal = "SelectedTreeNode";
	nodeDiv.classOver = "SelectedTreeNode";
}


var nodeTemp;
function delayExpand()
{
  nodeTemp.expand();
}

function tvSeries_onNodeBeforeSelect(sender, args)
{
    //debugger;
    var HasChildren;
    
    if(args.get_node().Value != "err")
    {
        if(isSafari()) 
        {
            if(args.get_node().Data.length != 3)
                HasChildren = (args.get_node().hasChildren != undefined) ? args.get_node().hasChildren : args.get_node().Data[3][1];
            else HasChildren = "0";
        }
        else  HasChildren = args.get_node().hasChildren;
        
        
	    if (HasChildren == "1")
	    {
		    if (args.get_node().get_expanded())
		    {
			    args.get_node().collapse();
		    }
		    else
		    {
			    nodeTemp = args.get_node();
			    if(nodeTemp.ContentCallbackUrl!=null && nodeTemp.ContentCallbackUrl.indexOf("rand") == -1)
			    {
			        nodeTemp.ContentCallbackUrl += "&rand=" + Math.random().toString();
			    }
			    setTimeout('delayExpand()', 5);
		    }
	    }
	    else
	    {
		    onNodeSelect(sender, args);
	    }
	    args.set_cancel(true);
	}
}

function tvSeries_onNodeBeforeExpand(sender, args)
{
    //debugger;
    var HasChildren;
    
    if(isSafari()) 
    {
        if(args.get_node().Data.length != 3)
            HasChildren = (args.get_node().hasChildren != undefined) ? args.get_node().hasChildren : args.get_node().Data[3][1];
        else HasChildren = "0";
    }
    else  HasChildren = args.get_node().hasChildren;
    
    if(HasChildren == "1")
    {
        nodeTemp = args.get_node();
        if(nodeTemp.ContentCallbackUrl != null && nodeTemp.ContentCallbackUrl.indexOf("rand") == -1)
		{
            nodeTemp.ContentCallbackUrl += "&rand=" + Math.random().toString();
        }
    }
}

function tvSeries_onNodeCollapse(sender, args)
{
    if(isSafari())
    {
        //alert(innerHeight);
        //eval(oResize.Resize.toString());
        //alert(oResize.Resize.toString());
        //setTimeout("oResize.Resize()",1000);
        args.get_node().expand();    
        args.get_node().collapse();
        onBodyResize(event);
        setTimeout('window.resizeBy("-1","-1")',2);
        setTimeout('window.resizeBy("+1","+1")',2);
    }
}

function resetSeriesSelectionToOne()
{
	var oldestSelected = Array.dequeue(selSerTV);
	unselectNode(oldestSelected);
	//new
	//setTimeout("__doPostBack('btnHiddenPostBack','')",5);
}

var lastQuery;

function getQueryAndChartName()
{
    //debugger;
	if (!isPeriodLegal())
		return false;
		
	doSelectionValid();
	
	var fromYear = cmbFromYear.value*1;
	var toYear = cmbToYear.value*1;			
	var cmbChartType = document.getElementById("cmbChartType");
	var cmbFrequency = document.getElementById("cmbFrequency");
	var cmbArea = document.getElementById("cmbArea");
	var cmbAreaTo = document.getElementById("cmbAreaTo");
	var hfAddXmlParams = document.getElementById("hfAddXmlParams");

	var url = "?freq=";
	
	switch(cmbFrequency.value)
	{
		case "1":							
			url += "1";
		break;
		case "2":
			url += "3";
		break;
		case "3":
			url += "4";
		break;
	}

	url += "&fromYear=" + fromYear;
	if (cmbFromQuarter)
		url+= "&fromQtr="+ cmbFromQuarter.value;
	if (cmbFromMonth)
		url+= "&fromMth="+ cmbFromMonth.value;
		
	url+= "&toYear="+toYear;
	if (cmbToQuarter)
		url+= "&toQtr="+ cmbToQuarter.value;
	if (cmbToMonth)
		url+= "&toMth="+ cmbToMonth.value;
	
	//-----------------------------------------------------------------------
	/*var BooleanChange=0;
	var AreaValue = cmbArea.value;
	var AreaToValue = null;
	if(hfAddXmlParams.value != "")
	{
	    var Territories = hfAddXmlParams.value.split('#');
	    AreaToValue = Territories[0];
	    var selSers = getSelectedSeries();
	    
	    
	    if(Territories[1] != selSers[1])
	    {
	        url+="&area="+AreaToValue.toString()+"&areaTo="+AreaValue.toString();
	        BooleanChange=1;
	    }
	    else
	    {
	        url+="&area="+AreaValue.toString()+"&areaTo="+AreaToValue.toString();
	        BooleanChange=0;
	    }
	}
	else 
	{
	    url+="&area="+cmbArea.value;
	    url+="&areaTo="+cmbAreaTo.value;
	}*/
	//-----------------------------------------------------------------------
	var Territories = "";
	url+= "&area="+cmbArea.value;
	if(hfAddXmlParams.value != "")
	{
	    var Territories = hfAddXmlParams.value.split('#');
	    /*for(var i=0;i<Territories.length-1;i++)
	    {
	        url+= "&areaTo="+Territories[i];
	    }*/
	}
	else url+= "&areaTo="+cmbAreaTo.value;
	    
	
	var ChartType=0, ChartName=0;
	var TotalAreas=1;
	
	if(cmbAreaTo.value>-1) TotalAreas=2;
	
	var selSers = getSelectedSeries();
	var TotalSeries=selSers.length;
	//debugger;
	if(hfAddXmlParams.value != "")
	{
	    url+= "&areaTo="+Territories[0];
	    
	    for(var k in selSers)
	    {
	        if(selSers[k] != Territories[1]) url+= "&ser1="+selSers[k];
	    }
	    
	    url+= "&ser2="+Territories[1];
	}
	else
	{
	    url+= "&ser1="+selSers[0];
	    if (selSers[1])
		    url+= "&ser2="+selSers[1];
	}

	switch(cmbChartType.value)
	{
		case "1":
		{
		    if(hfAddXmlParams.value != "")
			{
			    ChartType=8;
			    ChartName=1;
			    break;
			}
			
			if(TotalSeries==1)
			{
				if(TotalAreas==1) ChartType=1;
				else ChartType=3;
				ChartName=0;
			}
			else
			{
				ChartType=2;
				ChartName=1;
			}
		}
		break;
		case "2":
		{
		    if(hfAddXmlParams.value != "")
			{
			    ChartType=9;
			    ChartName=1;
			    break;
			}
			
			if(TotalSeries==1)
			{
				if(TotalAreas==1)
				{
					ChartType=4;
					ChartName=2;
				}
				else
				{
					ChartType=6;
					ChartName=0;
				}
			}
			else
			{
				ChartType=5;
				ChartName=1;
			}
		}
		break;
		case "3":
		{
			ChartType=7;
			ChartName=3;
		}
		break;
	}
	url+= "&chartType="+(ChartType);
	url+= "&pok="+ ((Territories.length == 0) ? "0":Territories[1]);
	url+= "&twin=" + document.getElementById("cmbSAData").value;
	lastQuery = url;
	return new Array(url,ChartName);
}

function createChartObj(param)
{
    var pars = getQueryAndChartName();
	if (!pars)
	{
	   hideChartProgress();
	   return false;
	}
	
	if(param == 0)
	{
        var url = pars[0];
	    var ChartName = g_chartName = pars[1];
	    url = "ChartBuild.aspx"+url+"&rand=" + Math.random().toString();
	    return url;
	}
	
	if(param == 1)
	{
	    var diagramName = [/*"MSLine.swf"*/"MultiAxisLine.swf","MultiAxisLine.swf","MSStackedColumn2D.swf","MSCombiDY2D.swf"];
	    var tdChart = document.getElementById("tdChart");
	    chart = new FusionCharts(diagramName[g_chartName], "ChartID", "100%", "100%", "0", "0");
	    chart.addParam('wmode','transparent');
	}
	return "success";
}

function requestChartXMLandRender()
{
    //debugger;
	showToolbarProgress();
	
	var url = createChartObj(0);
	if(false == url) return;
	
	var wRequest =  new Sys.Net.WebRequest();
	wRequest.set_url(url);  
	wRequest.set_httpVerb("GET");
	wRequest.add_completed(onRequestChartXMLCompleted);
	wRequest.invoke();
}

var chart;
var intResize = -1;
var g_chartData = null;
var g_chartName = null;

function onRequestChartXMLCompleted(executor, eventArgs) 
{
	if(executor.get_responseAvailable()) 
	{
		var chartData = g_chartData = executor.get_responseData();
		
		createChartObj(1);
		
		chart.setDataXML(escape(chartData));
		
		chart.render(document.getElementById('tdChart'));
		
		chartData = chartData.replace("<chart","<chart animation='0'");
		chart.addVariable("dataXML", escape(chartData));
		
		var ChartID = document.getElementById("ChartID");
		var tdChart = document.getElementById("tdChart");
		ChartID.width = tdChart.offsetWidth;
		ChartID.height = tdChart.offsetHeight;
		
		var aTable = document.getElementById("aTable");
		if (selSerTV.length==1)
		{
			aTable.title="";
			if(aTable.href == "")
			{
			    var URL = window.location.href;
			    var Index = URL.indexOf("terr=");
			    if(Index != -1)
			        aTable.href = "Table.aspx?terr=5705&report=";
			    else
			        aTable.href = "Table.aspx?report=";
			}
			var ind = aTable.href.indexOf("report=");
			aTable.href = aTable.href.substr(0,ind)+"report="+selSerTV[0].reportID;
			
			aTable.disabled="";
			aTable.style.cursor = "pointer";
		}
		else
		{
			aTable.title="Select one series only to view the table associated with it";
			aTable.removeAttribute("href");
			aTable.disabled="true";
			aTable.style.cursor = "default";
		}
		
		var Terr="";
		if(null!=window.location.href)
		{
		    var Index = window.location.href.indexOf("terr=");
		    if(Index!=-1) Terr="&terr=5705";
		}
		
		var aChart = document.getElementById("th_header_aChart");
		aChart.href = aChart.href.split("r=")[0]+"r="+Math.random() + Terr;
		var aGIF = document.getElementById("th_header_aGIF");
		aGIF.href = aGIF.href.split("r=")[0]+"r="+Math.random() + Terr;
		var aChartData = document.getElementById("aGraphData");
		aChartData.href  = aChartData.href.split("r=")[0]+"r="+Math.random() + Terr;
	}
	
	hideChartProgress();
}

function hideChartProgress()
{
	document.getElementById("divChartProgress").style.visibility="hidden";
}

function showToolbarProgress()
{
	document.getElementById("divChartProgress").style.visibility="visible";
}

function HideToolbarProgress() {
    document.getElementById('ExpressPanelProgress').style.display = 'none';
}  

function onBodyResize(event)
{
    clearInterval(intResize);
    intResize = setInterval("singleFireChartResize()", 5);
}

function singleFireChartResize()
{
    //debugger;
    if(chart!= null)
	{
        /*var tdChart = document.getElementById('tdChart');
	    clearInterval(intResize);
	
	    chart.setAttribute('width', '100%');//tdChart.offsetWidth);
        chart.setAttribute('height', '100%');//tdChart.offsetHeight);
        chart.addVariable('chartWidth', '100%');//tdChart.offsetWidth);
        chart.addVariable('chartHeight', '100%');//tdChart.offsetHeight);
    
        chart.render(document.getElementById('tdChart'));
	    var ChartID = document.getElementById("ChartID");*/
	    
	    createChartObj(1);
	    g_chartData = g_chartData.replace("<chart","<chart animation='0'");
		chart.addVariable("dataXML", escape(g_chartData));
	    chart.setDataXML(escape(g_chartData));
		chart.render(document.getElementById('tdChart'));
		
		var ChartID = document.getElementById("ChartID");
		var tdChart = document.getElementById("tdChart");
		ChartID.width = tdChart.offsetWidth;
		ChartID.height = tdChart.offsetHeight;
		
		clearInterval(intResize);
	}
	
}

function displayDialog(sURL,height,width)
{
	var iDialogHeight=height;
	var iDialogWidth=width;
	var iDialogScreenX=(window.screen.width-iDialogWidth)/2.0;
	var iDialogScreenY=(window.screen.height-iDialogHeight)/2.0;
	var sDialogSpec="alwaysRaised=1,height="+iDialogHeight+
		",width="+iDialogWidth+",left="+iDialogScreenX+
		",resizable=0,screenX="+iDialogScreenX+
		",screenY="+iDialogScreenY+",top="+iDialogScreenY+
		",scrollbars=1,status=0,titlebar=0";
	var childWindow;
	childWindow=window.open(sURL,"Dialog",sDialogSpec);
	childWindow.focus();
}

function showInfo()
{
	displayDialog("Info.aspx"+lastQuery,400,500);
}

document.onkeyup = function(e)
{
	if (!e) e = window.event;
	var Obj = document.getElementById("divCover");
	if (e.keyCode == 13 && (Obj.style.display=="none" || Obj.style.display==''))
	{
	    var Area = document.getElementById("cmbArea");
	    var AreaTo = document.getElementById("cmbAreaTo");
	    //Protection from flasmen
	    if(Area.options[Area.selectedIndex].value==AreaTo.options[AreaTo.selectedIndex].value)
	    {
	        AreaTo.selectedIndex = 0;
	    }
	    
	    requestChartXMLandRender();
	}
}

function tvSeries_onCallbackComplete(sender, eventArgs)
{
}

function onBodyLoad()
{
    initSeriesTreeSelection();
	requestChartXMLandRender();
}

//var g_SelChartTypeVal;
function updateCombosPanel()
{
    //debugger;
    var cmbChart = document.getElementById("cmbChartType");
    var cmbAreaTo = document.getElementById("cmbAreaTo");
    var returnValue;

    if(cmbChart.options[cmbChart.selectedIndex].style.color == "silver")
    {
        while(cmbChart.options[cmbChart.selectedIndex].style.color == "silver")
        {
            cmbChart.selectedIndex -=1;
        }
        returnValue = false;
    }
    else
    {
        //if(cmbChart.options[cmbChart.selectedIndex].value == "2" || g_SelChartTypeVal == "2" || selSerTV.length==2 || cmbAreaTo.selectedIndex!=0)
        //{
            __doPostBack('cmbChartType','');
        //}
        returnValue = true;
    }
    //g_SelChartTypeVal = cmbChart.options[cmbChart.selectedIndex].value;
    
    return returnValue;
}
function checkClick(src)
{
	src.blur();
	if(isSafari()) 
	{
		if(window.clientInformation.platform.indexOf("Mac") < 0)
		{
			if(src.id.indexOf("Pdf") >= 0)
			{
				src.target="_blank";
			}
		}
	}
}
