﻿function CafeF_StockMarketOverview(instanceName)
{
    this.host = 'http://solieu7.vcmedia.vn';
    //this.host = 'http://localhost:8081';
    this.script_folder = this.host + '/www/dantri/';
    this.script_object = null;
    this.instance_name = instanceName;
    
    this.CreateStyleSheet = function()
    {
        var css = '#CafeF_StockMarketOverview{overflow: hidden;font-family:Arial;font-size:1.1em; padding-left:1px; border:1px solid #D6D6D6; margin:0 0 10px;width:307px}#CafeF_StockMarketOverview table.main{width:307px; background-color:#ffffff;}#CafeF_StockMarketOverview table.main td#CafeF_MarketOverview_UpdateTime{color:#333333; text-align:right}#CafeF_StockMarketOverview table.main td#CafeF_MarketOverview_TradeState{border-top:solid 1px #cdcdcd}#CafeF_StockMarketOverview table.main td.Title{font-family:Tahoma;font-weight:700;}#CafeF_StockMarketOverview table.main .Price{font-size:11px;font-weight:700;}#CafeF_StockMarketOverview table.main .Index{font-size:11px;font-weight:700;}#CafeF_StockMarketOverview table.main span.Up{font-size:11px; font-weight:400;}#CafeF_StockMarketOverview table.main span.Down{font-size:12px;color:#c00;font-weight:400;}#CafeF_StockMarketOverview table.main span.NoChange{font-size:12px;color:#D0AD08;font-weight:400;}';
        
        var style = document.createElement('style');
        style.type = 'text/css';
        var head = document.getElementsByTagName('head')[0];
        head.appendChild(style);
        if(style.styleSheet)  // IE
            style.styleSheet.cssText = css;
        else  // other browserss
            style.appendChild(document.createTextNode(css));
    }

    this.InitScript = function()
    {
        this.CreateStyleSheet();
    
        var output = '';
        
        output += '<h3 class="bdred"><span>Chứng khoán</span></h3>';
        output += '<table class="main" cellspacing="0" cellpadding="3">';
        output += '<tr><td style="padding: 5px; border-bottom: 1px solid #D6D6D6" id="CafeF_MarketOverview_UpdateTime"></td></tr>';
        output += '<tr><td style="padding: 3px 3px 3px 3px; border:none"><table cellspacing="0" cellpadding="3">';
        output += '<tr><td style="padding: 3px 3px 3px 3px; border:none" width="145" class="Title" id="CafeF_MarketOverview_VNIndex_img"></td><td style="padding: 3px 3px 3px 3px; border:none" class="Title" id="CafeF_MarketOverview_HaSTCIndex_img"></td></tr>';
        output += '<tr><td style="padding: 3px 3px 3px 3px; border:none" class="Index" id="CafeF_MarketOverview_VNIndex"></td><td style="padding: 3px 3px 3px 3px; border:none" class="Index" id="CafeF_MarketOverview_HaSTCIndex"></td></tr>';
        output += '<tr><td style="padding: 3px 3px 3px 3px; border:none">KLGD: <span class="Price" id="CafeF_MarketOverview_HoTotalVol"></span> cp</td><td style="padding: 3px 3px 3px 3px; border:none">KLGD: <span class="Price" id="CafeF_MarketOverview_HaTotalVol"></span> cp</td></tr>';
        output += '<tr><td style="padding: 3px 3px 3px 3px; border:none">GTGD: <span class="Price" id="CafeF_MarketOverview_HoTotalValue"></span> tỷ VNĐ</td><td style="padding: 3px 3px 3px 3px; border:none">GTGD: <span class="Price" id="CafeF_MarketOverview_HaTotalValue"></span> tỷ VNĐ</td></tr>';
        output += '<tr><td style="padding: 3px 3px 3px 3px; border:none; padding-left: 5px;" id="CafeF_MarketOverview_VNIndex_Chart"></td><td style="padding: 3px 3px 3px 3px; border:none" id="CafeF_MarketOverview_HaSTCIndex_Chart"></td></tr>';
        output += '</table></td></tr>';
        output += '<tr><td style="padding: 3px 3px 3px 3px" id="CafeF_MarketOverview_TradeState"></td></tr>';
        output += '</table>';

        document.getElementById('CafeF_StockMarketOverview').innerHTML = output;
    }
    
    this.LoadData = function()
    {
        this.CreateScriptObject(this.host + '/ProxyHandler.ashx?RequestName=MarketSymmary&CallBack=' + this.instance_name + '.OnLoaded&RequestType=json');
    }

    this.OnLoaded = function(data, methodName)
    {
        var json = eval(data);
        
        document.getElementById('CafeF_MarketOverview_VNIndex_Chart').innerHTML = this.GetChartImage('HoSE', json.VNIndex_Change);
        document.getElementById('CafeF_MarketOverview_HaSTCIndex_Chart').innerHTML = this.GetChartImage('HaSTC', json.HaSTCIndex_Change);
        document.getElementById('CafeF_MarketOverview_UpdateTime').innerHTML = json.LastTradeDate;
        if (json.VNIndex_Change > 0)
        {
            document.getElementById('CafeF_MarketOverview_VNIndex_img').innerHTML = '<img style="margin-right:3px;" alt="" src="' + this.script_folder + 'images/up.gif"/>VN-Index';
            document.getElementById('CafeF_MarketOverview_VNIndex').innerHTML = this.FormatNumber(json.VNIndex_Index) + '&nbsp;&nbsp;<span class="Up">+' + this.FormatNumber(json.VNIndex_Change) + '(+' + this.FormatNumber(json.VNIndex_ChangePercent) + '%)</span>';
        }
        else if (json.VNIndex_Change < 0)
        {
            document.getElementById('CafeF_MarketOverview_VNIndex_img').innerHTML = '<img style="margin-right:3px;" alt="" src="' + this.script_folder + 'images/down.gif"/>VN-Index';
            document.getElementById('CafeF_MarketOverview_VNIndex').innerHTML = this.FormatNumber(json.VNIndex_Index) + '&nbsp;&nbsp;<span class="Down">' + this.FormatNumber(json.VNIndex_Change) + '(' + this.FormatNumber(json.VNIndex_ChangePercent) + '%)</span>';
        }
        else
        {
            document.getElementById('CafeF_MarketOverview_VNIndex_img').innerHTML = '<img style="margin-right:3px;" alt="" src="' + this.script_folder + 'images/nochange.gif"/>VN-Index';
            document.getElementById('CafeF_MarketOverview_VNIndex').innerHTML = this.FormatNumber(json.VNIndex_Index) + '&nbsp;&nbsp;<span class="NoChange">0(0%)</span>';
        }
        if (json.HaSTCIndex_Change > 0)
        {
            document.getElementById('CafeF_MarketOverview_HaSTCIndex_img').innerHTML = '<img style="margin-right:3px;" alt="" src="' + this.script_folder + 'images/up.gif"/>HaSTC-Index';
            document.getElementById('CafeF_MarketOverview_HaSTCIndex').innerHTML = this.FormatNumber(json.HaSTCIndex_Index) + '&nbsp;&nbsp;<span class="Up">+' + this.FormatNumber(json.HaSTCIndex_Change) + '(+' + this.FormatNumber(json.HaSTCIndex_ChangePercent) + '%)</span>';
        }
        else if (json.HaSTCIndex_Change < 0)
        {
            document.getElementById('CafeF_MarketOverview_HaSTCIndex_img').innerHTML = '<img style="margin-right:3px;" alt="" src="' + this.script_folder + 'images/down.gif"/>HaSTC-Index';
            document.getElementById('CafeF_MarketOverview_HaSTCIndex').innerHTML = this.FormatNumber(json.HaSTCIndex_Index) + '&nbsp;&nbsp;<span class="Down">' + this.FormatNumber(json.HaSTCIndex_Change) + '(' + this.FormatNumber(json.HaSTCIndex_ChangePercent) + '%)</span>';
        }
        else
        {
            document.getElementById('CafeF_MarketOverview_HaSTCIndex_img').innerHTML = '<img style="margin-right:3px;" alt="" src="' + this.script_folder + 'images/nochange.gif"/>HaSTC-Index';
            document.getElementById('CafeF_MarketOverview_HaSTCIndex').innerHTML = this.FormatNumber(json.HaSTCIndex_Index) + '&nbsp;&nbsp;<span class="NoChange">0(0%)</span>';
        }
        
        if (json.TradeState == "1")
        {
            document.getElementById('CafeF_MarketOverview_TradeState').innerHTML = 'Trạng thái thị trường: <span>Đang giao dịch</span>';
        }
        else
        {
            document.getElementById('CafeF_MarketOverview_TradeState').innerHTML = 'Trạng thái thị trường: <span>Đóng cửa</span>';
        }
        
        document.getElementById('CafeF_MarketOverview_HoTotalVol').innerHTML = this.FormatNumber(json.VNIndex_TotalVolume, true);
        document.getElementById('CafeF_MarketOverview_HaTotalVol').innerHTML = this.FormatNumber(json.HaSTCIndex_TotalVolume, true);
        
        document.getElementById('CafeF_MarketOverview_HoTotalValue').innerHTML = this.FormatNumber(json.VNIndex_TotalValue, true);
        document.getElementById('CafeF_MarketOverview_HaTotalValue').innerHTML = this.FormatNumber(json.HaSTCIndex_TotalValue, true);
    }
    
    this.GetChartImage = function(center, change)
    {
        var prefix = (center == 'HoSE' ? 'ho' : 'ha');
        
        var alt = '';
        
        if (center == 'HoSE')
        {
            alt = 'Diễn biến chỉ số chứng khoán tại sàn  TPHCM';
        }
        else
        {
            alt = 'Diễn biến chỉ số chứng khoán tại sàn  Hà Nội';
        }
        
        var currentDate = new Date();
        
        if (change > 0)
        {
            return '<img width="135" alt="' + alt + '" src="http://cafef.vn/HomeMountainChartImage/' + prefix + '_green.png?udt' + currentDate.toDateString() + currentDate.toTimeString() + '"/>';
        }
        else if (change < 0)
        {
            return '<img width="135" alt="' + alt + '" src="http://cafef.vn/HomeMountainChartImage/' + prefix + '_red.png?udt' + currentDate.toDateString() + currentDate.toTimeString() + '"/>';
        }
        else
        {
            return '<img width="135" alt="' + alt + '" src="http://cafef.vn/HomeMountainChartImage/' + prefix + '_yellow.png?udt' + currentDate.toDateString() + currentDate.toTimeString() + '"/>';
        }
    }

    this.CreateScriptObject = function(src)
    {
        if (this.script_object != null)
	    {
		    this.RemoveScriptObject();
	    }
    	
	    this.script_object = document.createElement('script');

        this.script_object.setAttribute('type','text/javascript');
        this.script_object.setAttribute('src', src);
        
        var head = document.getElementsByTagName('head')[0];
        head.appendChild(this.script_object);
    }

    this.RemoveScriptObject = function()
    {
	    this.script_object.parentNode.removeChild(this.script_object) ;
	    this.script_object = null ;
    }

    this.FormatNumber = function(value, displayZero)
    {
        if (value == '') return (displayZero ? '0' : '');
        try
        {
            var number = parseFloat(value);
            value = this.FormatNumber1(number, 2, '.', ',');
            return (value);
        }
        catch (err)
        {
            return (displayZero ? '0' : '');
        }
    }

    this.FormatNumber1 = function(number, decimals, decimalSeparator, thousandSeparator) 
    {
        var number = number.toFixed(decimals);
        
        var temp = number.toString();
        
        var f = temp.substr(temp.length - decimals, decimals);
        
        while (f != '' && f.charAt(f.length - 1) == '0') f = f.substr(0, f.length - 1);
        
        if (f != '') f = decimalSeparator + f;
        
        var t = temp.substr(0, temp.length - 3);
        
        if (thousandSeparator != '' && t.length > 3) 
	    {
		    h = t;
		    t = '';
    		
		    for (j = 3; j < h.length; j += 3) 
		    {
			    i = h.slice(h.length - j, h.length - j + 3);
			    t = thousandSeparator + i +  t + '';
		    }
    		
		    j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
		    t = j + t;
	    }
    	
	    temp = t + f;
    	
        return temp;
    }
}

if (document.getElementById('CafeF_StockMarketOverview'))
{
    var cafef_stock_market_overview = new CafeF_StockMarketOverview('cafef_stock_market_overview');
    cafef_stock_market_overview.InitScript();
    cafef_stock_market_overview.LoadData();
}
