﻿
var requestInterval = 60000;
$.ajaxSetup({ cache: false });

function requestStockExchanges(path) {
    var stateArr = getTableStateArr();
    $.getJSON(path + "/Handlers/StockExchangeHandler.ashx", { current_state: JSON.stringify(stateArr) }, function(data) {
        try {
            for (var i = 0; i < data.length; i++) {
                var tr = $("#stockextbl tbody input[name='secid']").filter(function() { return $(this).attr("value") == data[i].s }).closest("tr");
                var localCell = tr.find("td.local");
                var usdCell = tr.find("td.usd");
                var sekCell = tr.find("td.sek");
                var oldLocalValue = parseFloat(localCell.text().replace(",", "."));
                var oldUsdValue = parseFloat(usdCell.text().replace(",", "."));
                var oldSekValue = parseFloat(sekCell.text().replace(",", "."));
                highlightRow(tr, parseFloat(data[i].l.replace(",", ".")) - oldLocalValue, parseFloat(data[i].u.replace(",", ".")) - oldUsdValue, parseFloat(data[i].se.replace(",", ".")) - oldSekValue);
                setCellColors(tr);
                tr.find("input[name='mod']").attr("value", data[i].m);
                localCell.text(data[i].l);
                usdCell.text(data[i].u);
                sekCell.text(data[i].se);
                tr.find("td.time").text(data[i].d);
            }
        } catch (e) {

        }
    });
}

var colors = {
    down: "#F0AAAA",
    neutral: "#000000",
    up: "#D8FFC5"
};

function highlightRow(row, local, usd, sek) {
    var localCell = row.find("td.local");
    var usdCell = row.find("td.usd");
    var sekCell = row.find("td.sek");

    var startColor = row.css("background-color");

    highlightCell(localCell, local, startColor);
    highlightCell(usdCell, usd, startColor);
    highlightCell(sekCell, sek, startColor);
}

function highlightCell(cell, valChange, startColor) {
    if (valChange > 0) {
        var color = colors.up;
    }
    if (valChange == 0) {
        var color = startColor;
    }
    if (valChange < 0) {
        var color = colors.down;
    }
    cell.animate({ backgroundColor: color }, 500).animate({ backgroundColor: startColor }, 500, function() {
        $(this).css({ backgroundColor: startColor });
    });
}

function setCellColors(row) {
    var localCell = row.find("td.local");
    var usdCell = row.find("td.usd");
    var sekCell = row.find("td.sek");
    var local = parseFloat(localCell.text().replace(',', '.'));
    var usd = parseFloat(usdCell.text().replace(',', '.'));
    var sek = parseFloat(sekCell.text().replace(',', '.'));
    setColor(localCell, Math.round(local * 10));
    setColor(usdCell, Math.round(usd * 10));
    setColor(sekCell, Math.round(sek * 10));
}

function setColor(cell, floatValue) {
    if (floatValue <= -10) {
        cell.removeClass("up").addClass("down").addClass("alot");
    } else if (floatValue < 0) {
        cell.removeClass("up").removeClass("alot").addClass("down");
    } else if (floatValue > 0 && floatValue < 10) {
        cell.removeClass("down").removeClass("alot").addClass("up");
    } else if (floatValue == 0) {
        cell.removeClass("down").removeClass("alot").removeClass("up");
    } else if (floatValue >= 10) {
        cell.removeClass("down").addClass("up").addClass("alot");
    }
}

function getTableStateArr() {
    var arr = [];
    $("#stockextbl tbody tr").each(function() {
        var mod = parseInt($(this).find("input[name='mod']").attr("value"));
        var secid = parseInt($(this).find("input[name='secid']").attr("value"));
        arr.push({ m: mod, s: secid });
    });
    return arr;
}