var currentTab=0;
var strIndicators = '';
var strHolidays = '';
var timer;
var verH = -1;
var verI = -1;
var prevResponseI;
var prevResponseH;

function selectTab(tabNum)
{
    currentTab=tabNum;
    var index=0;
    var sepImgArray= new Array(); 
    for(a=0; a<document.getElementById('sepImg').parentNode.parentNode.cells.length; a++)
	{
	    if(document.getElementById('sepImg').parentNode.parentNode.cells[a].id=='sep')
        {
		    sepImgArray[index++]=document.getElementById('sepImg').parentNode.parentNode.cells[a];
		}    
	}
    
    var tdTxtArray= new Array(); 
	index=0;
	for(a=0; a<document.getElementById('tabTxt').parentNode.cells.length; a++)
	{
        if(document.getElementById('tabTxt').parentNode.cells[a].id=='tabTxt')
            tdTxtArray[index++]=document.getElementById('tabTxt').parentNode.cells[a]; 
    }
    //Cleaning Tabs
    document.images["sepImg"].src=tabImg3;
    for(a=0; a<tdTxtArray.length; a++)
	{
	    tdTxtArray[a].style.backgroundColor= defTabBgColor;
	    tdTxtArray[a].style.borderTopColor=  defTabBorderTopColor;
	    tdTxtArray[a].style.borderBottomColor= defTabBorderBottomColor;
	}
	sepImgArray[1].firstChild.src=tabImg4;
	
	//Selecting Tab
	tdTxtArray[tabNum].style.backgroundColor=selTabBgColor;
	tdTxtArray[tabNum].style.borderTopColor=selTabBorderTopColor;
	tdTxtArray[tabNum].style.borderBottomColor=selTabBorderBottomColor;
	
	if (tabNum>0) sepImgArray[tabNum-1].firstChild.src=tabImg1;
	if (tabNum<1) sepImgArray[tabNum].firstChild.src=tabImg2;
	else sepImgArray[tabNum].firstChild.src=tabImg5;

	document.getElementById('cal').innerHTML = loadingMsg;
	getData();
	
	/*
	currentTab=tabNum;
	//Cleaning Tabs
	for(a=0; a<document.getElementById('tabTxt').length; a++)
	{
		document.all.tabTxt[a].style.backgroundColor=defTabBgColor;
		document.all.tabTxt[a].style.borderTopColor=defTabBorderTopColor;
		document.all.tabTxt[a].style.borderBottomColor=defTabBorderBottomColor;
		if (a<1) document.all.sepImg[a].src=tabImg3;
	}
	document.all.sepImg[1].src=tabImg4;
	
	//Selecting Tab
	document.all.tabTxt[tabNum].style.backgroundColor=selTabBgColor;
	document.all.tabTxt[tabNum].style.borderTopColor=selTabBorderTopColor;
	document.all.tabTxt[tabNum].style.borderBottomColor=selTabBorderBottomColor;
	if (tabNum>0) document.all.sepImg[tabNum-1].src=tabImg1;
	if (tabNum<1) document.all.sepImg[tabNum].src=tabImg2;
	else document.all.sepImg[tabNum].src=tabImg5;

	document.all.cal.innerHTML = loadingMsg;
	getData();	
	*/	
}

function Doc_onload()
{
	window.focus();
	getData();
}

function getData()
{
	if(currentTab == 0)
		loadXMLDoc("Services/Forex.FC.aspx?v=" + verI + "&g=I");
	else if(currentTab == 1)
		loadXMLDoc("Services/Forex.FC.aspx?v=" + verH + "&g=H");
		
	clearTimeout(timer);
	timer = setTimeout(getData,(this._UpdateIntervals ? this._UpdateIntervals.financialCalendar : 30000));
}

var xmlDOM=0;
function loadXMLDoc(url)
{
    if(navigator.userAgent.indexOf("Firefox")!=-1 && document.implementation && document.implementation.createDocument)// FireFox
    {
	    xmlDOM = document.implementation.createDocument("", "", null);
	    if (xmlDOM)
	    {
	        xmlDOM.async = "false";
	        xmlDOM.onload = processReqChange;
	        
	    }
    }
    else
    {
        xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
        if (xmlDOM)
	    {
            xmlDOM.async = "false";	
            xmlDOM.onreadystatechange = processReqChange;
	   }
    }
    xmlDOM.load(url);
	
    /*
	xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
	if (xmlDOM)
	{
		xmlDOM.onreadystatechange = processReqChange;
		xmlDOM.async = "false";
		xmlDOM.load(url);
	}
	*/
}

function processReqChange() 
{   
    if ( !xmlDOM.readyState || (xmlDOM.readyState && xmlDOM.readyState == 4) )
	{
	    if(xmlDOM.documentElement == null)
	    {
		    if(currentTab == 0)
			    processIndicators(prevResponseI);
		    else if(currentTab == 1)
			    processHolidays(prevResponseH);
		    return;
	    }
	    var response = xmlDOM.documentElement;
	    if(response.nodeName == "indicators")
	    {
		    processIndicators(response);
	    }
	    else if(response.nodeName == "holidays")
	    {
		    processHolidays(response);
	    }
	}
}

function processIndicators(response)
{ 

	if(response != null)
	{
		var HTML;
		var nodes = response.childNodes;
		if(nodes.length > 0)
		{
			HTML = indTblHeader;
			for (i=0 ; i<nodes.length ; i++)
			{
				var strData;
			    if(navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Safari") != -1)// FireFox
                {
                    strData = nodes[i].textContent;
                }
                else    //IE 
                {
                    strData = nodes[i].text;
                }
    

				var arrData = strData.split('|**|');
				
				// ------- calc local time -------
				var utcArr = arrData[0].split(' ')[0].split('/');
				var utcDate = new Date(utcArr[1] + '/' + utcArr[0] + '/20' + utcArr[2] + ' ' + arrData[0].split(' ')[1]);
				var utcMill = utcDate.getTime();
				var offsetMill = (utcDate.getTimezoneOffset())*60*1000;
				var localMill = utcMill - offsetMill;
				var localDate = new Date(localMill);
				
				// ---------- str ----------
				var y = localDate.getFullYear();
				var m = localDate.getMonth();
				var d = localDate.getDate();
				m = m + 1;
				strM = m.toString();
				if(strM.length == 1) { strM = '0' + strM; }
				strD = d.toString();
				if(strD.length == 1) { strD = '0' + strD; }
				var date;
				
				if(dateFormat.charAt(0) == 'd')
				    date = strD + "/" + strM + "/" + y.toString();
				else
				    date = strM + "/" + strD + "/" + y.toString();
				
				var h = localDate.getHours();
				var M = localDate.getMinutes();
				strH = h.toString();
				if(strH.length == 1) { strH = '0' + strH; }
				strMM = M.toString();
				if(strMM.length == 1) { strMM = '0' + strMM; }
				var time = strH + ":" + strMM;
								
				var loc = arrData[1];
				var name = arrData[2];
				var period = arrData[3];
				var symbol = arrData[7];
				var forecast = arrData[5];
				var previous = arrData[4];
				var isRevised = arrData[8];
				var actual = arrData[6];
				
				var arrDate = response.attributes[0].nodeValue.split(' ')[0].split('/');
				var serverDate = new Date(arrDate[1] + '/' + arrDate[0] + '/20' + arrDate[2] + ' ' + response.attributes[0].nodeValue.split(' ')[1]);
				
				var updDate = nodes[i].getAttribute("UPD");
				var arrUpdDt = updDate.split(' ')[0].split('/');
				var tmpUpdDate = new Date(arrUpdDt[1] + '/' + arrUpdDt[0] + '/20' + arrUpdDt[2] + ' ' + updDate.split(' ')[1]);
				var mins = minutesDiff(serverDate, tmpUpdDate);

				HTML += indTblBody1 + date + 
						indTblBody2 + time + 
						indTblBody3 + loc + 
						indTblBody4 + name + 
						indTblBody5 + period + 
						indTblBody6 + symbol + 
						indTblBody7 + forecast + 
						indTblBody8 + previous + (isRevised == "1" ? "R" : "") + 
						indTblBody9 + (mins <= 5 ? indTblBodyActual1 + actual + indTblBodyActual2 : actual) + 
						indTblBody10;
			}
			HTML += indTblFooter;
		}
		else
		{
			HTML = indTblEmpty;
		}
		document.getElementById('cal').innerHTML = HTML;
		//verI = response.attributes[1].nodeValue;
		prevResponseI = response;
	}
	else
	{
		document.getElementById('cal').innerHTML = indTblEmpty;
	}
}

function processHolidays(response)
{
	if(response != null)
	{
		var HTML = holTbl;
		var nodes = response.childNodes;
		if(nodes.length > 0)
		{
			var prevDT = "";
			for (i=0 ; i<nodes.length ; i++)
			{
				var DT = nodes[i].getAttribute("DT");
				if(prevDT != DT)
				{
					if(prevDT != "")
						HTML += holTblSpacer;
					HTML += holTblHeader1 + DT + 
							holTblHeader2;
					HTML += holTblHeader3;
					HTML += holTblHeader4;
				}
				prevDT = DT;
				
				var strData;
				if(navigator.userAgent.indexOf("Firefox") != -1 || navigator.userAgent.indexOf("Safari") != -1)// FireFox
                {
                    strData = nodes[i].textContent;
                }
                else    //IE 
                {
                    strData = nodes[i].text;
                }
				
				var arrData = strData.split('|**|');
				var date = arrData[0].split(' ')[0];
				var arrDateParts=date.split('/');
				
				if(dateFormat.charAt(0) == 'd')
				{
				    HTML += holTblBody1 + arrDateParts[0]+ '/'+ arrDateParts[1]+ '/'+ arrDateParts[2]+
						holTblBody2 + arrData[1] + 
						holTblBody3 + arrData[2] + 
						holTblBody4;
				}
				else
				{
				    HTML += holTblBody1 + arrDateParts[1]+ '/'+ arrDateParts[0]+ '/'+ arrDateParts[2]+
						holTblBody2 + arrData[1] + 
						holTblBody3 + arrData[2] + 
						holTblBody4;
				}
			}
		}
		else
		{
			HTML += holTblEmpty1;
		}
		document.getElementById('cal').innerHTML = HTML;
		//verH = response.attributes[0].nodeValue;
		prevResponseH = response;
	}
	else
	{
		document.getElementById('cal').innerHTML = holTblEmpty2;
	}
}

function minutesDiff(date1, date2)
{
	var diff  = new Date();
	diff.setTime(Math.abs(date1.getTime() - date2.getTime()));
	timediff = diff.getTime();

	var totalMins = Math.floor(timediff / (1000 * 60));
	return totalMins;
}
	
function pageOnUnLoad()
{
	clearTimeout(timer);
	timer=null;
}
