﻿var RatesUpdateInterval_ms = 5000;

function ObjectPosition(obj) {
    if (obj == null)
        return;
    var curleft = 0;
    var curtop = 0;
    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft, curtop];
}

function MakeRatesTableTransparent(subTable) {
    if (subTable == null)
        return;
    subTable.style.zIndex = 2000;
    subTable.style.border = "1px solid #333333";
    var tbl = document.getElementById('tblRates');
    var trDiv = document.getElementById('divTransparency');
    if (tbl != null && trDiv != null) {
        trDiv.style.height = tbl.clientHeight + "px";
        trDiv.style.width = tbl.clientWidth + "px";
        var pos = ObjectPosition(tbl);
        trDiv.style.top = (pos[1] + 1).toString() + "px";
        trDiv.style.left = (pos[0] + 1).toString() + "px";
        trDiv.style.display = '';
    }
}

function RemoveTransparentBackground(subTable) {
    if (subTable == null)
        return;
    subTable.style.zIndex = 1;
    subTable.style.border = "1px solid #acbd30";
    document.getElementById('divTransparency').style.display = 'none';
}

function ShowMoreRates(caller) {
    if (caller == null)
        return;
    caller.innerHTML = '<span style="color: #D81F26">-</span> Less Pairs';
    caller.onclick = function () {
        ShowLessRates(caller);
    }
    document.getElementById('trRow2').style.display = '';
    document.getElementById('trs1').style.display = '';
    document.getElementById('trRow3').style.display = '';
    document.getElementById('trs2').style.display = '';
}

function ShowLessRates(caller) {
    if (caller == null)
        return;
    caller.innerHTML = '<span style="color: #7CAF11">+</span> More Pairs';
    caller.onclick = function () {
        ShowMoreRates(caller);
    }
    document.getElementById('trRow2').style.display = 'none';
    document.getElementById('trs1').style.display = 'none';
    document.getElementById('trRow3').style.display = 'none';
    document.getElementById('trs2').style.display = 'none';
}


function UpdateRatesDynamically() {
    try {
        FXRatesService.GetLatestRates(OnRatesUpdateSuccess, OnRatesUpdateFailure);
    }
    catch (err) {
    }
}

function OnRatesUpdateSuccess(result, userContext, methodName) {
    if (methodName == "GetLatestRates") {
        try {
            if (result != null) {
                // Split our rates
                var rates = result.split("!");
                for (var i = 0; i < rates.length; i++) {
                    // Get the specific rate data
                    var rateData = rates[i].split("|");
                    var oldRateBidi = document.getElementById("sp" + rateData[0] + "i");
                    var oldRateBidp = document.getElementById("sp" + rateData[0] + "p");
                    var oldRateBide = document.getElementById("sp" + rateData[0] + "e");
                    // Get the image field for this rate
                    var rateImage = document.getElementById("img" + rateData[0])
                    // Get the field for the change for this rate
                    var changeField = document.getElementById("sp" + rateData[0] + "c");

                    if (oldRateBidi == null || oldRateBidp == null || oldRateBide == null
                        || oldRateBidi.innerHTML == null || oldRateBidp.innerHTML == null || oldRateBide.innerHTML == null)
                        continue;
                    var oldRateBid = parseFloat(oldRateBidi.innerHTML + oldRateBidp.innerHTML + oldRateBide.innerHTML);
                    var newBid = parseFloat(rateData[1]);
                    oldRateBidi.innerHTML = rateData[1].substring(0, rateData[1].length - 3);
                    oldRateBidp.innerHTML = rateData[1].substring(rateData[1].length - 3, rateData[1].length - 1);
                    oldRateBide.innerHTML = rateData[1].substring(rateData[1].length - 1);
                    var change = rateData[2];
                    changeField.innerHTML = change;
                    if (change.indexOf("-") >= 0) {
                        changeField.style.color = "#D81F26";
                    }
                    else {
                        changeField.style.color = "#7CAF11";
                    }

                    var originalTimeout = 1000;
                    var changeInterval = 900;
                    if (newBid > oldRateBid) {
                        oldRateBidp.style.color = "#7CAF11";
                        oldRateBide.style.color = "#7CAF11";
                        rateImage.src = "/CMSTemplates/TFIMarkets/Images/tracker/Green_Stage_1_new.png";
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Green_Stage_2_new.png')", originalTimeout);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#809C45')", originalTimeout);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#809C45')", originalTimeout);
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Green_Stage_3_new.png')", originalTimeout + 250);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#728E36')", originalTimeout + changeInterval * 2);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#728E36')", originalTimeout + changeInterval * 2);
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Green_Stage_4_new.png')", originalTimeout + changeInterval * 3);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#6F7E4F')", originalTimeout + changeInterval * 3);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#6F7E4F')", originalTimeout + changeInterval * 3);
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Gray_Stage_Null_new.png')", originalTimeout + changeInterval * 4);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#666666')", originalTimeout + changeInterval * 4);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#666666')", originalTimeout + changeInterval * 4);
                    }
                    else if (newBid < oldRateBid) {
                        oldRateBidp.style.color = "#D81F26";
                        oldRateBide.style.color = "#D81F26";
                        rateImage.src = "/CMSTemplates/TFIMarkets/Images/tracker/Red_Stage_1_new.png";
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Red_Stage_2_new.png')", originalTimeout);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#c22d33')", originalTimeout);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#c22d33')", originalTimeout);
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Red_Stage_3_new.png')", originalTimeout + changeInterval * 2);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#A63C41')", originalTimeout + changeInterval * 2);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#A63C41')", originalTimeout + changeInterval * 2);
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Red_Stage_4_new.png')", originalTimeout + changeInterval * 3);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#836E6F')", originalTimeout + changeInterval * 3);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#836E6F')", originalTimeout + changeInterval * 3);
                        setTimeout("ChangeControlImage('" + rateImage.id + "', '/CMSTemplates/TFIMarkets/Images/tracker/Gray_Stage_Null_new.png')", originalTimeout + changeInterval * 4);
                        setTimeout("ChangeControlColor('" + oldRateBidp.id + "', '#666666')", originalTimeout + changeInterval * 4);
                        setTimeout("ChangeControlColor('" + oldRateBide.id + "', '#666666')", originalTimeout + changeInterval * 4);
                    }
                    else {
                        oldRateBidp.style.color = "#666666";
                        oldRateBide.style.color = "#666666";
                    }
                }
            }
        }
        catch (err) {
        }
        // Recall this after X seconds to get the latest updates again
        setTimeout(UpdateRatesDynamically, RatesUpdateInterval_ms);
    }
}

function OnRatesUpdateFailure(error, userContext, methodName) {
    if (error !== null) {
        if (methodName == "GetLatestRates") {
            // Show the error maybe

            // Recall this after X seconds to get the latest updates again
            setTimeout(UpdateRatesDynamically, RatesUpdateInterval_ms);
        }
    }
}

function ChangeControlColor(ctrlID, color) {
    var ctrl = document.getElementById(ctrlID);
    if (ctrl != null)
        ctrl.style.color = color;
}

function ChangeControlImage(ctrlID, src) {
    var ctrl = document.getElementById(ctrlID);
    if (ctrl != null)
        ctrl.src = src;
}

