﻿var m_activetab = "hsx";
var m_activetop = "val";
var m_process = false;
var m_sequence = -1;

var hsx_scc = "";
var hnx_scc = "";
var upc_scc = "";

var hsx_inf = "";
var hnx_inf = "";
var upc_inf = "";

var hsx_ref = [];
var hnx_ref = [];
var upc_ref = [];

var hsx_idx = [];
var hnx_idx = [];
var upc_idx = [];

var top_null = '||||||||||||||||||||||||||||||||||||||||||||||||||';

var hsx_pri = top_null;
var hsx_vol = top_null;
var hsx_val = top_null;

var hnx_pri = top_null;
var hnx_vol = top_null;
var hnx_val = top_null;

var upc_pri = top_null;
var upc_vol = top_null;
var upc_val = top_null;

m_run();

function m_run() {
    m_init();
    m_get_data();
    setInterval('m_get_data();', 60000);
}

function m_init() {
}

function m_set_tab(tab) {
    if (tab != "") m_activetab = tab;

    if (m_activetab == "hsx") {
        document.getElementById("mhsx").className = "selected";
        document.getElementById("mhnx").className = "none";
        document.getElementById("mupc").className = "none";
    }
    else if (m_activetab == "hnx") {
        document.getElementById("mhsx").className = "none";
        document.getElementById("mhnx").className = "selected";
        document.getElementById("mupc").className = "none";
    } else {
        document.getElementById("mhsx").className = "none";
        document.getElementById("mhnx").className = "none";
        document.getElementById("mupc").className = "selected";
    }
    m_reload_tab();
    m_reload_top();
}

function m_set_top(top) {
    if (top != "") m_activetop = top;

    if (m_activetop == "pri") {
        document.getElementById("mpri").className = "selected";
        document.getElementById("mvol").className = "none";
        document.getElementById("mval").className = "none";
    }
    else if (m_activetop == "vol") {
        document.getElementById("mpri").className = "none";
        document.getElementById("mvol").className = "selected";
        document.getElementById("mval").className = "none";
    } else {
        document.getElementById("mpri").className = "none";
        document.getElementById("mvol").className = "none";
        document.getElementById("mval").className = "selected";
    }
    m_reload_top();
}

function m_reload_tab() {
    if (m_activetab == "hsx") {
        set_innerhtml('mindex', hsx_inf);
        var options = {
            series: { lines: { show: true, lineWidth: 1 }, shadowSize: 0 },
            xaxis: { ticks: [[0, "8:30"], [30, "9:00"], [60, "9:30"], [90, "10:00"], [120, "10:30"], [150, "11:00"]] },
            grid: { show: true, backgroundColor: "#fff", borderWidth: 1, borderColor: "#000" }
        };
        $.plot($("#mchart"), [{ color: "#ff7f27", data: hsx_ref }, { color: "#005aaa", data: hsx_idx}], options);
        return;
    }

    if (m_activetab == "hnx") {
        set_innerhtml('mindex', hnx_inf);
        var options = {
            series: { lines: { show: true, lineWidth: 1 }, shadowSize: 0 },
            xaxis: { ticks: [[0, "8:30"], [30, "9:00"], [60, "9:30"], [90, "10:00"], [120, "10:30"], [150, "11:00"]] },
            grid: { show: true, backgroundColor: "#fff", borderWidth: 1, borderColor: "#000" }
        };
        $.plot($("#mchart"), [{ color: "#ff7f27", data: hnx_ref }, { color: "#005aaa", data: hnx_idx}], options);
        return;
    }

    if (m_activetab == "upc") {
        set_innerhtml('mindex', upc_inf);
        var options = {
            series: { lines: { show: true, lineWidth: 1 }, shadowSize: 0 },
            xaxis: { ticks: [[0, "8:30"], [60, "9:30"], [120, "10:30"], [150, "11:00"], [180, "13:00"], [240, "14:00"], [300, "15:00"]] },
            grid: { show: true, backgroundColor: "#fff", borderWidth: 1, borderColor: "#000" }
        };
        $.plot($("#mchart"), [{ color: "#ff7f27", data: upc_ref}], options);
        return;
    }
}

function m_reload_top() {
    if (m_activetab == "hsx") {
        if (m_activetop == "pri") m_reload_tbody(hsx_pri);
        else if (m_activetop == "vol") m_reload_tbody(hsx_vol);
        else if (m_activetop == "val") m_reload_tbody(hsx_val);
        else m_reload_tbody(top_null);
        return;
    }

    if (m_activetab == "hnx") {
        if (m_activetop == "pri") m_reload_tbody(hnx_pri);
        else if (m_activetop == "vol") m_reload_tbody(hnx_vol);
        else if (m_activetop == "val") m_reload_tbody(hnx_val);
        else m_reload_tbody(top_null);
        return;
    }

    if (m_activetab == "upc") {
        if (m_activetop == "pri") m_reload_tbody(upc_pri);
        else if (m_activetop == "vol") m_reload_tbody(upc_vol);
        else if (m_activetop == "val") m_reload_tbody(upc_val);
        else m_reload_tbody(top_null);
        return;
    }
}

function m_reload_tbody(top_data) {
    var tbody = document.getElementById('mtop');
    while (tbody.rows.length > 0) tbody.deleteRow(-1);
    var a = new Array();
    a = top_data.split('|');
    var ai = 0;
    for (i = 0; i < 10; i++) {
        if (i == 0) {
            row = tbody.insertRow(-1);
            cell = row.insertCell(-1);
            cell.rowSpan = 6;
            cell.innerHTML = '<img src="img/up.png" alt="up"/>';
            cell = row.insertCell(-1);
            cell.colSpan = 4;
        }
        if (i == 5) {
            row = tbody.insertRow(-1);
            cell = row.insertCell(-1);
            cell.rowSpan = 6;
            cell.innerHTML = '<img src="img/down.png" alt="down"/>';
            cell = row.insertCell(-1);
            cell.colSpan = 4;
        }
        row = tbody.insertRow(-1);
        for (j = 0; j < 4; j++) {
            var cell = row.insertCell(-1);
            var stockcode;
            if (j == 0) {
                stockcode = (a[ai] == '') ? '&nbsp;' : a[ai];
                cell.innerHTML = stockcode;
            }
            else if (j == 1) {
                if (a[ai] == '') a[ai] = '0';
                var ch = parseFloat(a[ai]);
                ai += 1;
                if (ch > 0)
                    a[ai] = '<span class="up">+'.concat(ch).concat(' (').concat(a[ai]).concat(')</span>');
                else if (ch < 0)
                    a[ai] = '<span class="down">'.concat(ch).concat(' (').concat(a[ai]).concat(')</span>');
                else
                    a[ai] = '<span class="ref">'.concat(ch).concat(' (').concat(a[ai]).concat(')</span>');
                cell.innerHTML = (stockcode == '&nbsp;') ? '&nbsp;' : a[ai];
            }
            else if (j == 2) {
                cell.style.textAlign = 'right';
                cell.innerHTML = m_convert_vol(a[ai]);
            }
            else {
                cell.style.textAlign = 'right';
                cell.innerHTML = m_convert_val(a[ai]);
            }
            ai += 1;
        }
    }
}

function m_convert_vol(vol) {
    if (vol == '') return '&nbsp;';
    var n = parseInt(vol);
    if (n < 99) return ''.concat(n * 10);
    if (n < 9999) return ''.concat(n / 100).concat('K');
    if (n < 9999999) return ''.concat(parseInt(n / 1000) / 100).concat('M');
    if (n < 9999999) return ''.concat(parseInt(n / 10000) / 10).concat('M');
    return ''.concat(parseInt(n / 1000000) / 100).concat('B');
}

function m_convert_val(val) {
    if (val == '') return '&nbsp;';
    var n = parseInt(val);
    if (n < 999) return ''.concat(n).concat('K');
    if (n < 99999) return ''.concat(parseInt(n / 100) / 10).concat('M');
    if (n < 99999999) return ''.concat(parseInt(n / 10000) / 100).concat('B');
    return ''.concat(parseInt(n / 100000) / 10).concat('B');
}

function m_get_data() {
    if (!m_process) {
        ws_www.m_get(m_sequence, m_get_success, m_get_failed);
    }
}

function m_get_success(result) {
    if ((result == null) || (result == "")) return;
    m_process = true;
    try {
        // info array
        var ia = new Array();
        ia = result.split(';');
        ial = ia.length;
        // market info
        
        var mi = new Array();
        mi = ia[0].split('|');
        mil = mi.length;

        set_innerhtml('mdate', mi[0].substr(6, 2) + '/' + mi[0].substr(4, 2) + '/' + mi[0].substr(0, 4));

        if (ial > 0) m_sequence = parseInt(mi[2]);

        hsx_scc = mi[3];
        var cls, img, sign;
        
        chgindex = parseFloat(mi[5]);
        refindex = parseFloat(mi[4]) - chgindex;
        hsx_ref = [];
        hsx_ref.push([0, refindex]);
        hsx_ref.push([150, refindex]);

        if (chgindex > 0) {
            cls = 'up';
            img = "▲";
            sign = '+';
        }
        else if (chgindex == 0) {
            cls = 'ref';
            img = '';
            sign = '';
        }
        else {
            cls = 'down';
            img = "▼";
            sign = '';
        }
        hsx_inf = '<div>INDEX &nbsp; <span class="'.concat(cls).concat('">').concat(mi[4]).concat(' &nbsp;').concat(sign).concat(chgindex).concat(' &nbsp;').concat(img).concat(sign).concat(mi[6]).concat('%</span></div>');
        hsx_inf = hsx_inf.concat('<div class="val">Giá trị <span class="up">').concat(mi[7]);
        hsx_inf = hsx_inf.concat('</span> tr</div><div class="vol">Số lượng <span class="up">').concat(mi[8]).concat('</span> cp</div>');

        hnx_scc = mi[9];
        chgindex = parseFloat(mi[11]);
        refindex = parseFloat(mi[10]) - chgindex;
        hnx_ref = [];
        hnx_ref.push([0, refindex]);
        hnx_ref.push([150, refindex]);
        if (chgindex > 0) {
            cls = 'up';
            img = "▲";
            sign = '+';
        }
        else if (chgindex == 0) {
            cls = 'ref';
            img = '';
            sign = '';
        }
        else {
            cls = 'down';
            img = "▼";
            sign = '';
        }
        hnx_inf = '<div>INDEX &nbsp; <span class="'.concat(cls).concat('">').concat(mi[10]).concat(' &nbsp;').concat(sign).concat(chgindex).concat(' &nbsp;').concat(img).concat(sign).concat(mi[12]).concat('%</span></div>');
        hnx_inf = hnx_inf.concat('<div class="val">Giá trị <span class="up">').concat(mi[13]);
        hnx_inf = hnx_inf.concat('</span> tr</div><div class="vol">Số lượng <span class="up">').concat(mi[14]).concat('</span> cp</div>');

        upc_scc = mi[15];
        chgindex = parseFloat(mi[17]);
        refindex = parseFloat(mi[16]) - chgindex;
        upc_ref = [];
        upc_ref.push([0, refindex]);
        upc_ref.push([150, refindex]);
        if (chgindex > 0) {
            cls = 'up';
            img = "▲";
            sign = '+';
        }
        else if (chgindex == 0) {
            cls = 'ref';
            img = '';
            sign = '';
        }
        else {
            cls = 'down';
            img = "▼";
            sign = '';
        }
        upc_inf = '<div>INDEX &nbsp; <span class="'.concat(cls).concat('">').concat(mi[16]).concat(' &nbsp;').concat(sign).concat(chgindex).concat(' &nbsp;').concat(img).concat(sign).concat(mi[18]).concat('%</span></div>');
        upc_inf = upc_inf.concat('<div class="val">Giá trị <span class="up">').concat(mi[19]);
        upc_inf = upc_inf.concat('</span> tr</div><div class="vol">Số lượng <span class="up">').concat(mi[20]).concat('</span> cp</div>');

        // hsx

        if (ial > 1) {
            hsx_idx = [];
            if (ia[1] != '') {
                var si = new Array();
                si = ia[1].split('|');
                sil = si.length;
                for (i = 0; i < 15; i++) {
                    hsx_idx.push([i, null]);
                }
                for (i = 0; i < sil; i++) {
                    hsx_idx.push([i + 15, parseFloat(si[i])]);
                }
            }
        }


        // hnx
        if (ial > 2) {
            hnx_idx = [];
            if (ia[2] != '') {
                var si = new Array();
                si = ia[2].split('|');
                sil = si.length;
                for (i = 0; i < sil; i++) {
                    hnx_idx.push([i, parseFloat(si[i])]);
                } 
            }
        }

        // upcom
        if (ial > 3) {
            upc_idx = [];
            if (ia[3] != '') {
                var si = new Array();
                si = ia[3].split('|');
                sil = si.length;
                for (i = 0; i < sil; i++) {
                    upc_idx.push([i, parseFloat(si[i])]);
                }
            }
        }

        //hsx top5 price
        if (ial > 4) {
            hsx_pri = ia[4];
        }

        //hsx top5 volume
        if (ial > 5) {
            hsx_vol = ia[5];
        }

        //hsx top5 value
        if (ial > 6) {
            hsx_val = ia[6];
        }

        //hnx top5 price
        if (ial > 7) {
            hnx_pri = ia[7];
        }

        //hnx top5 volume
        if (ial > 8) {
            hnx_vol = ia[8];
        }

        //hnx top5 value
        if (ial > 9) {
            hnx_val = ia[9];
        }

        //upcom top5 price
        if (ial > 10) {
            upc_pri = ia[10];
        }

        //upcom top5 volume
        if (ial > 11) {
            upc_vol = ia[11];
        }

        //upcom top5 value
        if (ial > 12) {
            upc_val = ia[12];
        }

        // reload top
        m_reload_top();

        // reload tab
        m_reload_tab();
    }
    catch (err) { }
    m_process = false;
}

function m_get_failed(result) {
}
