
var strIndicators = '';
var timer1;
var verI = -1;
var prevResponseI;
var inter = (this._UpdateIntervals ? this._UpdateIntervals.financialCalendar : 30000);

function Doc_onload()
{
	getData();
}

function getData()
{
     FCService.GetEvents("I", verI, wsid, myCallback);
}

function myCallback(res)
{
    var doc;
    if (window.ActiveXObject)
    {   

        doc=new ActiveXObject("Microsoft.XMLDOM");
        doc.async="false";
        doc.loadXML(res.value);
        if(doc.documentElement == null)
		{
			processIndicators(prevResponseI);
		}
		else
		{
		    processIndicators(doc.documentElement);
		}        
    }
    // code for Mozilla, Firefox, Opera, etc.
    else
    {

        var parser=new DOMParser();
        doc=parser.parseFromString(res.value,"text/xml");
        if (doc.xmlEncoding != null)
        {
            processIndicators(doc.firstChild);
        }
        else
        {
            processIndicators(prevResponseI);
        }
    }

    clearTimeout(timer1);
    timer1 = window.setTimeout(getData, inter);
}

var xmlDOM;
function loadXMLDoc(url)
{
	
	// code for IE
	if (window.ActiveXObject)
	{
		
		if(xmlDOM == null) xmlDOM = new ActiveXObject("Microsoft.xmlDOM");
		if(xmlDOM)
		{
			xmlDOM.onreadystatechange=processReqChange;
			xmlDOM.async = "false";
			xmlDOM.load(url);
		}
	}
	// code for Mozilla, etc.
	else if (window.XMLHttpRequest)
	{
		xmlDOM=new XMLHttpRequest()
		xmlDOM.onreadystatechange=processReqChange;
		xmlDOM.open("GET",url,true)
		xmlDOM.send(null);
	}
	
}

function processReqChange() 
{
	if(xmlDOM.readyState == 4)
	{
		if (window.ActiveXObject)//IE
		{
			if(xmlDOM.documentElement == null)
			{
				processIndicators(prevResponseI);
				return;
			}
			var response = xmlDOM.documentElement;
			processIndicators(response);
		}
		else if(window.XMLHttpRequest)//Mozilla
		{
			if (xmlDOM.status==200)
			{
				var xml = xmlDOM.responseXML.firstChild;
				processIndicators(xml);
				return;
			}
		}
	}
}

function processIndicators(response)
{
	if(response != null)
	{
		var HTML = "";
		var nodes = response.childNodes;
		//var index, length;
		if(nodes.length > 0)
		{
			HTML = tblHeader;
			for (i=0 ; i<nodes.length ; i++)
			{
				if(window.ActiveXObject)
				{
				    var strData = nodes(i).text;
				}
				else//Mozilla
				{
				    var strData = nodes[i].textContent;
				}
				
				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 date = strD + "/" + strM + "/" + 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 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 += tblBody1 + (i > 0 ? "<br>" : "") + date + " " + time + 
						tblBody2 +
						tblBody3 + loc + 
						tblBody4 +
						tblBody5 + name + 
						tblBody6 +
						tblBody7 + (previous != "" ? previous + symbol + (isRevised == "1" ? "R" : "") : "") + 
						tblBody8 +
						tblBody9 + (forecast != "" ? forecast + symbol : "") + 
						tblBody10 +
						tblBody11 + (actual != "" ? (mins <= 5 ? tblBodyActual1 + actual + symbol + tblBodyActual2 : actual + symbol) : "") + 
						tblBody12;
			}
			HTML += tblEnd;
		}
    	
		document.getElementById("datacontainer").innerHTML = HTML;
		verI = response.attributes[1].nodeValue;
		prevResponseI = response;
	}
}

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()
{
    if(timer1 != null)  clearTimeout(timer1);
	timer1=null;
}