﻿var ratesStr;
var hasRatesLoaded = false;
buildTable();
getRates();
getRatesTimer=window.setInterval("getRates()",5000);

function refreshRates()
{
    if (!isResponseValid(ratesStr))
    {
        if (!hasRatesLoaded)
            showNotAvailable();
        return;
    }       
    if (document.getElementById("RatesBox").innerHTML.indexOf("rAsk0")==-1)
    {
        if (!isResponseValid(document.getElementById("RatesBox").innerHTML))
            setTimeout("refreshRates()",500);    
        return;
    }
    if (ratesStr != "")
    {
    var str1 = "<table cellspacing='0' cellpadding='0'>";
    var rlines = ratesStr.split(' ');
    for(i = 0; i <= rlines.length - 2; i++)
    {                           
        var strBid = rlines[i].split(",")[0];
        var strAsk = rlines[i].split(",")[1];
        
        newBid = parseFloat(strBid);
        newAsk = parseFloat(strAsk);
                    
        if ((document.getElementById("rBid"+i).innerHTML=="")||(document.getElementById('rAsk' + i).innerHTML==""))
        {
            document.getElementById("rAsk"+i).innerHTML = strAsk;
            document.getElementById("rBid"+i).innerHTML = strBid;
            document.getElementById("rBid"+i).className = "r";            
            document.getElementById("rAsk"+i).className = "r";
        }
        else
        {
            var curAsk;
            var curBid;
            curBid = parseFloat(document.getElementById("rBid"+i).innerHTML);
            curAsk = parseFloat(document.getElementById("rAsk"+i).innerHTML);
            
            if (newBid==curBid)
                    document.getElementById("rBid"+i).className = "r";        
            else
            {
                document.getElementById("rBid"+i).innerHTML = strBid;
                if (newBid>curBid)                       
                    document.getElementById("rBid"+i).className = "rise";
                else
                    document.getElementById("rBid"+i).className = "fall";
            }
            
            if (newAsk==curAsk)
                    document.getElementById("rAsk"+i).className = "r";        
            else
            {
                document.getElementById("rAsk"+i).innerHTML = strAsk;
                if (newAsk>curAsk)
                    document.getElementById("rAsk"+i).className = "rise";
                else
                    document.getElementById("rAsk"+i).className = "fall";
            }
        }
        
    }
    if (!hasRatesLoaded)
    {

        document.getElementById("fxTitle").style.display = "";
        document.getElementById("RatesBox").style.display = "";
        document.getElementById("tMessage").innerHTML = "";
        document.getElementById("tMessage").style.display = "none";
        hasRatesLoaded = true;
    }
    ratesStr = "";
    }    
}

function showNotAvailable()
{
        document.getElementById("tMessage").innerHTML = "Data will be available shortly...";
        document.getElementById("tMessage").style.display = "";
        document.getElementById("RatesBox").style.display = "none";
        document.getElementById("fxTitle").style.display = "none";
        window.clearTimeout(refreshRates);
        window.clearInterval(getRatesTimer);
}

function isResponseValid(res)
{
    if (res.length==0||res.toLowerCase().indexOf("error")!=-1)
        return false;
    else
        return true;
}

function getRates()
{
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }
     
    xhr.open("GET", "/Handlers/Rates.ashx?get=rates&t=" + new Date().getTime(),  true); 
    xhr.send(null); 
    xhr.onreadystatechange = function()
    {
         if(xhr.readyState  == 4)
         {
            if(xhr.status  == 200)
            {    
                ratesStr = xhr.responseText;
                refreshRates();
            }
         }
    }
} 
function buildTable()
{
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try { xhr = new XMLHttpRequest(); }
          catch (e3) {  xhr = false;   }
        }
     }
     
    xhr.open("GET", "/Handlers/Rates.ashx?get=pairs&t=" + new Date().getTime(),  true); 
    xhr.send(null); 
    xhr.onreadystatechange  = function()
    {
        if(xhr.readyState == 4)
        {
            if(xhr.status == 200)
            {   
                if (!isResponseValid(xhr.responseText))
                showNotAvailable();
            
                var str1;
                str1 = "<table cellpadding='0' cellspacing='0' width='100%'>";
                var rlines = xhr.responseText.split(' ');
                for(i = 0; i < rlines.length - 1; i++)
                {
                    var c1;
                    var c2;
                    c1 = rlines[i].substring(0, 3);
                    c2 = rlines[i].substring(4, 8);
                    str1 += "<tr><td style='width:44px;'><div class='Flags'><div class='" + c1 + "'>&nbsp;</div><div class='" + c2 + "'>&nbsp;</div></div></td><td class='Pair'>" + rlines[i] + "</td><td><span id='rBid" + i + "'></span></td><td><span id='rAsk" + i + "'></span></td></tr>";
                }
                str1 += "</table>";
                document.getElementById("RatesBox").innerHTML = str1;
            }
        }
    }
} 