﻿function sysError(){return true;}
window.onerror = sysError;

var timerQ;
var wasRL = false;
var iu = new Image(9,5);
var id = new Image(9,5);
iu.src = "Images/Forex.arrow_up.gif";
id.src = "Images/Forex.arrow_down.gif";

function pageOnLoad()
{
	if(self.parent == null || !self.parent._tdLM) return;
	if(save_mid.length > 0)
	{
		getQuotes();
		//timer=setInterval(getQuotes, upInt);
	}
}

function getQuotes()
{
     QuotesService.GetQuotes(cpList, 2 , 0, 3, myCallback);
	
}

function myCallback(res)
{   
    processReqChange(res.value);
    timerQ = window.setTimeout(getQuotes,  upInt);
}

var xmlDOM = null;
function loadXMLDoc(url)
{
	if(xmlDOM == null) xmlDOM = new ActiveXObject("Microsoft.XMLDOM");
	if(xmlDOM)
	{
		xmlDOM.onreadystatechange = processReqChange;
		xmlDOM.async = false;
		xmlDOM.load(url);
	}
}

function processReqChange(resultStr) 
{

			
			if(resultStr == null || resultStr == "null" || wasRL) return;
			
			resultStr = resultStr.split("|");
			var qnameLength=qname.length-2;
			
			if (resultStr.length/qnameLength == 7) setQuotesInServerMode(resultStr); // Server mode function - 7 params
			else setQuotes(resultStr); // Client mode - 6 params

}

function setQuotes(results)
{
	var qnameLength=qname.length-2;
	var params = 6; // Client mode params: midRate, highMid, lowMid, change, prevHigh, prevLow
	
	// Quotes box is open
	if(results.length == qnameLength * params) // midRate, highMid, lowMid, change, prevHigh, prevMid
	{
		for(i=0; i<qnameLength; i++)
		{
			var mid_rate = results[i*params] * 1;
			var half_spr = Math.abs(arrDtrSpreads[i]);
			var fp = fPoints[i].value*1;
			
			if(save_mid[i]*1 > mid_rate*1) {bid[i].className = ask[i].className = "red_value"; qarrow[i].src = id.src;}
			if(save_mid[i]*1 < mid_rate*1) {bid[i].className = ask[i].className = "green_value"; qarrow[i].src = iu.src;}
			if(save_mid[i]*1 == mid_rate*1){bid[i].className = ask[i].className = "black_value";}
			save_mid[i] = mid_rate*1;
			
			bid[i].innerHTML = '<b>' + getFormatedNumber(mid_rate*1 - half_spr*1, fPoints[i].value*1) + '</b>';
			ask[i].innerHTML = '<b>' + getFormatedNumber(mid_rate*1 + half_spr*1, fPoints[i].value*1) + '</b>';
			
			change[i].innerHTML = '' + (results[i*params+3]*1 != 0 ? getFormatedNumber(results[i*params+3]*1, 2) : "0.00") + '&nbsp;%';
			if(results[i*params+2]*1 == 0) change[i].className = "black_value";
			else change[i].className = (results[i*params+3]*1 < 0 ? "red_value" : "green_value");
			
			high[i].innerText = '' + getFormatedNumber(results[i*params+1]*1 + half_spr, fp);
			low[i].innerText = '' + getFormatedNumber(results[i*params+2]*1 - half_spr, fp);
			
			prevhigh[i].innerText = '' + getFormatedNumber(results[i*params+4]*1 + half_spr, fp);
			prevlow[i].innerText = '' + getFormatedNumber(results[i*params+5]*1 - half_spr, fp);	
		}
	}
}

// This function is a test function for testing the stream of quotes that are being calculated in the server
function setQuotesInServerMode(results)
{
	var qnameLength=qname.length-2;
	var params = 7; // Server mode params: highMid, lowMid, change, prevHigh, prevLow, bid, ask
	
	// Quotes box is open + bid  and ask
	if(results.length == qnameLength * params) // highMid, lowMid, change, prevHigh, prevMid, bid, ask 
	{
		for(i=0; i<qnameLength; i++)
		{
			// Calculating the midRate
			var mid_rate = (results[i*params+5]*1 + results[i*params+6]*1) / 2; // Server mode - midRate calculation
			var half_spr = Math.abs(arrDtrSpreads[i]);
			var fp = fPoints[i].value*1;
			
			if(save_mid[i]*1 > mid_rate*1) {bid[i].className = ask[i].className = "red_value"; qarrow[i].src = id.src;}
			if(save_mid[i]*1 < mid_rate*1) {bid[i].className = ask[i].className = "green_value"; qarrow[i].src = iu.src;}
			if(save_mid[i]*1 == mid_rate*1){bid[i].className = ask[i].className = "black_value";}
			save_mid[i] = mid_rate*1;
			
			bid[i].innerHTML = '<b>' + results[i*params+5] + '</b>';
			ask[i].innerHTML = '<b>' + results[i*params+6] + '</b>';
			
			change[i].innerHTML = '' + (results[i*params+2]*1 != 0 ? getFormatedNumber(results[i*params+2]*1, 2) : "0.00") + '&nbsp;%';
			if(results[i*params+2]*1 == 0) change[i].className = "black_value";
			else change[i].className = (results[i*params+2]*1 < 0 ? "red_value" : "green_value");
			
			high[i].innerText = '' + getFormatedNumber(results[i*params]*1 + half_spr, fp);
			low[i].innerText = '' + getFormatedNumber(results[i*params+1]*1 - half_spr, fp);
			
			prevhigh[i].innerText = '' + getFormatedNumber(results[i*params+3]*1 + half_spr, fp);
			prevlow[i].innerText = '' + getFormatedNumber(results[i*params+4]*1 - half_spr, fp);	
		}
	}
}

function pageOnUnLoad()
{
	//clearInterval(timer);
	timerQ=null;
}



