﻿//Create by: Ngo Xuan Chuong
//Khai bao cac bien toan cuc
var scrollstep = 1;
var directUp = true;
var currentpos = 0;
var rowHeight = 21;
var hlColor = "#000099";
var bgColor = "#000000";
var hlbgColor = "#1d1d1d";
var rowhlbgColor = "#333333";

var marketSession1Vn = "Đợt 1";
var marketSession1En = "Session 1";
var marketContinuousVn = "KL Liên tục";
var marketContinuousEn = "Continuous";
var marketSession3Vn = "Đợt 3";
var marketSession3En = "Session 3";
var marketPutThroughVn = "Thỏa thuận";
var marketPutThroughEn = "PutThrough";
var marketRunOffVn = "Đóng cửa";
var marketRunOffEn = "Close";
var roomTooltipVn = "Room còn lại: ";
var roomTooltipEn = "Room: ";
var messageConnectionVn = "Khong the ket noi den Server";
var messageConnectionEn = "Can not connect to Server";
var _CONST_ROW_HEIGTH = 21;

if (navigator.userAgent.indexOf("Firefox")!=-1)
{
    rowHeight = 20;
}

function LoadFull()
{
    WebService.LoadFull("0",SucceededCallback,FailedCallback,"LoadFull");  
}

//Tai du lieu day du
function LoadChange()
{
    if ($get('sequence')){
        var sequence = StringToInt($get('sequence').value);
        WebService.LoadChange(sequence,SucceededCallback,FailedCallback,"LoadChange");  
    }
}

//Lay thoi gian tu server
function GetTime()
{    
    WebService.GetTime(SucceededCallback,FailedCallback,"GetTime");  
}
//Ham goi webservice goi tra ve
function SucceededCallback(result, userContext, methodName)  
{  
    if ((typeof(result)=="undefined") || (result==null) || (result=="undefined")) return;
    window.status = "Done";       
    if (userContext == "LoadFull")
    {
        if (document.getElementById("hdnLanguage").value == "vi-VN")
            langObject = LangVN;
        else
            langObject = LangEN; 
        document.getElementById("mainContent").innerHTML = CreateTableMain(result, document.getElementById("hdnStockListSelected").value, document.getElementById("hdnTableType").value, document.getElementById("hdnNumRowPerPage").value, document.getElementById("hdnTimeDelay").value, document.getElementById("hdnResolutionType").value, document.getElementById("hdnFontType").value,document.getElementById("hdnLanguage").value, langObject);
    }
    if (userContext == "LoadChange")
    {
        var arrResult = result.split("#");
        if (arrResult.length == 2)
        {            
            var sequence = arrResult[1];
            if (sequence >= 0)
            {
                var data = arrResult[0];        
                if (data!="")
                {            
                    $get('sequence').value = sequence;
                    ChangeRow(data,0);
                    setTimeout('ChangeRow("'+data+'",1)',500); 
                    setTimeout('ChangeRow("'+data+'",2)',4000);            
                }
            }
            else
            {
                $get('sequence').value = 1;
                theForm.submit();
            }
        }
    }    
    
    if (userContext == "GetTime")
    {
        if (document.getElementById("serverTime"))
        {
            document.getElementById("serverTime").innerHTML = result;
        }
    }
}

//Ham nay duoc goi khi goi webservice gay ra loi 
function FailedCallback(exception, userContext, methodName)  
{  
    var language = document.getElementById('hdnLanguage').value;
    if (language == "vi-VN") 
    {
        window.status = messageConnectionVn;
    }
    else
    {
        window.status = messageConnectionEn;
    }
} 

function ChangeRow(data,type)
{
    var arrAll = data.split("@@");
    for (var i=0; i< arrAll.length; i++)
    {                
        var arrRowList = arrAll[i].split("@");        
        for (var j=0; j< arrRowList.length; j++)
        {
            var arrRow = arrRowList[j].split("|");
            var firstCol = arrRow[0].split("~");
            var typeRow = firstCol[1];
            if (typeRow == "Bid" || typeRow == "Match" || typeRow == "Off")
            {
                ChangePutThrough(arrRowList[j],"tbl"+typeRow,type);
            }
            else                         
                if (typeRow == "MARKET")
                {
                    ChangeMarketInfo(arrRowList[j],type);     
                }
                else
                {
                    ChangeCell(arrRowList[j],type);                         
                } //End If
        } //End For        
    }

}

//Thay doi du lieu cua cell
function ChangeCell(arrRowList,type)
{
    //Thay the gia dau + thanh hinh len, dau - thanh hinh xuong
    arrRowList = arrRowList.replace("+","▲");
    arrRowList = arrRowList.replace("-","▼");
    var arrRow = arrRowList.split("|");
    var firstCol = arrRow[0].split("~");
    var stockCode = firstCol[1];   
    var changeVol = 0;
    var objRow =document.getElementById('tr' + stockCode);
    var language = document.getElementById('hdnLanguage').value;
    //window.status = arrRowList;
    for (var k=0; k< arrRow.length; k++ )
    {            
        if (arrRow[k] != "")
        {   
            arrCell = arrRow[k].split("~");            
            if (k < 25) //Tong so co 24 cot
            {
                objCell = objRow.cells[k];
                if (type == 0 && k!=0 && arrCell[1] != "") //Nhay o truoc khi thay doi
                {
                    objCell.style.backgroundColor = hlColor;
                }
                else 
                {
                    if(type == 2 && k!=0 && arrCell[1] != "") //Tra lai mau nen cho o vua nhay
                    {   
                        //Neu la cac cot co mau nen noi
                        if (k==10 || k==11 || k==12 || k==19 || k==20 || k==21 || k==22) 
                        {
                            objCell.style.backgroundColor = hlbgColor;
                        }
                        else                     
                        {
                            objCell.style.backgroundColor = bgColor;                       
                        }
                    }
                    else //Thay doi gia tri cua o
                    {
                        objCell.style.color = GetColor(arrCell[0]);
                        //objCell.className = arrCell[0];
                        if (arrCell[1] != "" && arrCell[1] != "0")
                        {
                            if (k==5 || k==7 || k==9 || k==12 || k==14 || k==16 || k==17 || k==18 || k==23)
                            {
                                changeVol = StringToInt(arrCell[1].replace(',','')) - StringToInt(objCell.innerHTML.replace(',',''));
                                objCell.title = changeVol;
                            }    
                            if (k==4 || k==6 || k==8 || k==11 || k==13 || k==15 || k==17)
                            {
                                changeVol = (StringToFloat(arrCell[1].replace(',','')) - StringToFloat(objCell.innerHTML.replace(',',''))).toFixed(1);
                                objCell.title = changeVol;
                            }                                                    
                            objCell.innerHTML = arrCell[1];
                        }
                        else
                        {
                            objCell.innerHTML = "&nbsp;";
                        }            
                    } //End If
                 } //End If
             }
             //Thay Room NN
             if (k==25)
             {
                objRow.cells[24].title = GetRoomTooltip(language) + arrRow[25];
             }
        }
    }
    //alert(window.status);
}
function GetMarketStatusName(marketStatus, language)
{
    var vStatusName;
    if (language == "vi-VN") 
    {
        vStatusName = marketRunOffVn;
        if (marketStatus == "P")
        {
            vStatusName = marketSession1Vn;
        }
        if (marketStatus == "O")
        {
            vStatusName = marketContinuousVn;
        }
        if (marketStatus == "A")
        {
            vStatusName = marketSession3Vn;
        }
        if (marketStatus == "C")
        {
            vStatusName = marketPutThroughVn;
        }
        if (marketStatus == "K")
        {
            vStatusName = marketRunOffVn;
        }
    }
    else
    {
        vStatusName = marketRunOffEn;
        if (marketStatus == "P")
        {
            vStatusName = marketSession1En;
        }
        if (marketStatus == "O")
        {
            vStatusName = marketContinuousEn;
        }
        if (marketStatus == "A")
        {
            vStatusName = marketSession3En;
        }
        if (marketStatus == "C")
        {
            vStatusName = marketPutThroughEn;
        }
        if (marketStatus == "K")
        {
            vStatusName = marketRunOffEn;
        }
    }
    return vStatusName;
}
function GetRoomTooltip(language)
{
    var vRoomTooltip;
    if (language == "vi-VN") 
    {
        vRoomTooltip = roomTooltipVn;
    }
    else
    {
        vRoomTooltip = roomTooltipEn;
    }
    return vRoomTooltip;
}
function ChangePutThrough(arrRowList,tableId, type)
{
    var arrRow = arrRowList.split("|");
    var firstCol = arrRow[0].split("~");
    var secondCol = arrRow[1].split("~");
    var typeRow = firstCol[1];   
    var typeAction = firstCol[0]; 
    var stockCode = secondCol[1];  
    var rowId = typeRow + stockCode;
    if (type==0)
    {
        if (typeAction == "Add")
        {
            var objTable = document.getElementById(tableId);
            var row = objTable.insertRow(2);
            row.id = rowId;
            row.className = "round_row";

            for (var k=1; k< arrRow.length; k++)
            {     
                if (arrRow[k] != "")
                {                                          
                    arrCell = arrRow[k].split("~");
                    var cellCode = row.insertCell(k-1);
                    cellCode.className = arrCell[0];
                    if (k == 1)
                        cellCode.style.textAlign = "left";
                    if (arrCell[1] != "")
                    {
                        cellCode.innerHTML = arrCell[1];   
                    }
                    else
                    {
                        cellCode.innerHTML = "&nbsp;";
                    }                
                }
            }

        }
        if (typeAction == "Up")
        {
            var objRow = document.getElementById(rowId); 
            for (var k=1; k< arrRow.length; k++)
            {     
                if (arrRow[k] != "")
                {                       
                    arrCell = arrRow[k].split("~");
                    objRow.cells[k-1].className = arrCell[0];
                    if (arrCell[1] != "")
                    {
                        objRow.cells[k-1].innerHTML = arrCell[1];     
                    }
                    else
                    {
                        objRow.cells[k-1].innerHTML = "&nbsp;";
                    }                 
                }
            }

        }
    }
        
}

function GetColor(pClass)
{
    switch(pClass)
    {
        case 'c'   :return "#FF00FF";
        case 'f'  :return "#66FFFF";
        case 'e':return "#FFFF00";
        case 'i'    :return "#32DF32";
        case 'd'    :return "#FF0000";
        case 'q'   :return "#FFFFFF";
        default       :return '';
    }
}

function ChangeMarketInfo(arrRowList,type)
{
    arrRowList = arrRowList.replace("+","▲");
    arrRowList = arrRowList.replace("-","▼");
    var arrRow = arrRowList.split("|");
    var firstCol = arrRow[0].split("~");
    var stockCode = firstCol[1];   
    var objRow =document.getElementById('tr' + stockCode);
    var language = document.getElementById('hdnLanguage').value;
    //alert(arrRowList);
    for (var k=1; k< arrRow.length-1; k++)//k =1 la bo phan dau di, arrRow.length-1 Set trang thai thi truong rieng
    {     
        l = 2*(k-1) + 1;
        if (arrRow[k] != "")
        {   
            arrCell = arrRow[k].split("~");
            objCell = objRow.cells[l];             
            objCell.className = arrCell[0];
            objCell.innerHTML = arrCell[1];
        }
    }
    if (arrRow[9] != "")
    {
        arrCell = arrRow[9].split("~");
        objCell = objRow.cells[17];          
        objCell.className = arrCell[0];
        objCell.innerHTML = GetMarketStatusName(arrCell[1],language);
    }
}


// Lay phan tu dau tien cua danh sach
function ListGetFirst(the_list,the_separator)
{
	if (the_list=="") return "";
	arr_value = the_list.split(the_separator);
	return arr_value[0];
}

// Kiem tra phan tu the_element co trong danh sach the_list hay khong
function ListHaveElement(the_list,the_element, the_separator)
{
	try{
		if (the_list=="") return -1;
		if (the_list==the_element) return 1;
		if (the_list.indexOf(the_separator)==-1) return -1;
		arr_value = the_list.split(the_separator);
		for(var i=0;i<arr_value.length;i++){
			if (arr_value[i]==the_element){
				return i;
			}
		}
	}catch(e){;}
	return -1;
}
//Dem so phan tu trong danh sach
function ListCountElement(the_list,the_separator)
{	
	if (the_list=="") return -1;
	arr_value = the_list.split(the_separator);
	if (arr_value.length > 0){
		return arr_value.length;
	}
	return -1;
}	
// add a value to a list
function ListAppend(the_list,the_value,the_separator)
{
	var list=the_list;
	the_value = the_value + ""; //Chuyen the_value sang kieu xau
	if (list=="") list = the_value;
	else if (the_value !="") list = list+the_separator+the_value;
	return list;
}
function StringToInt(pString)
{
    //Convert sang so he so 10
    var vInt = parseInt(pString,10);
    if (isNaN(vInt))
    {
        return 0;
    }
    else
    {
        return vInt;
    }
}
function StringToFloat(pString)
{
    //Convert sang so he so 10
    var vFloat = parseFloat(pString);
    if (isNaN(vFloat))
    {
        return 0;
    }
    else
    {
        return vFloat;
    }
}
function GetValueSelectBox(objListboxId){
    var vAllItem = "";
    for (var i = 0; i < document.getElementById(objListboxId).options.length; i++) {      
           vAllItem = ListAppend(vAllItem,document.getElementById(objListboxId).options[i].value,",");
    }   
    return vAllItem;     
}
function GetValueTableType(){
    if (document.getElementById("radTableTypeNormal").checked)  
    {
        return document.getElementById("radTableTypeNormal").value;  
    }
    if (document.getElementById("radTableTypeScroll").checked)  
    {
        return document.getElementById("radTableTypeScroll").value;
    }
    if (document.getElementById("radTableTypeUpSide").checked)  
    {
        return document.getElementById("radTableTypeUpSide").value;
    }
}
function GetValueResolutionType(){
    if (document.getElementById("radResolutionTypeSmall").checked)  
    {
        return document.getElementById("radResolutionTypeSmall").value;  
    }
    if (document.getElementById("radResolutionTypeNormal").checked)  
    {
        return document.getElementById("radResolutionTypeNormal").value;
    }
    if (document.getElementById("radResolutionTypeLarge").checked)  
    {
        return document.getElementById("radResolutionTypeLarge").value;
    }
}
function GetValueFontType(){
    if (document.getElementById("radFontTypeNormal").checked)  
    {
        return document.getElementById("radFontTypeNormal").value;  
    }
    if (document.getElementById("radFontTypeBold").checked)  
    {
        return document.getElementById("radFontTypeBold").value;
    }
}
function ShowServerTime(id){
	var objTime = document.getElementById(id);
	if (objTime)
	{
	    var vTime = objTime.innerHTML;
	    var arrTime = vTime.split(":");
	    var h, m,s;
	    h = StringToInt(arrTime[0]);
	    m = StringToInt(arrTime[1]);
	    s = StringToInt(arrTime[2]);	
	    //Kiem tra neu giay bang 59 thi dat ve 1 va tang phut len 1
	    if (s == 59){
		    s = 0;
		    m = m + 1;
	    }else{
		    s = s + 1;
	    }
	    if (m == 60){ // Kiem tra neu phut bang 60 thi dat ve 0 va tang gio len 1
		    m = 0;
		    h = h + 1;		
	    }
	    // Kiem tra neu gio bang 24 thi dat gio ve 0
	    if (h == 24){
		    h = 0;
	    }
        objTime.innerHTML = GetTowDigit(h) + ":" + GetTowDigit(m) + ":" + GetTowDigit(s);
    }
}
function StringToDouble(pString)
{
    //Convert sang so he so 10
    var vFloat = parseFloat(pString);
    if (isNaN(vFloat))
    {
        return 0;
    }
    else
    {
        return vFloat;
    }
}
function GetTowDigit(value)
{
    var vString = "";
    if (StringToInt(value) < 10)
        vString = "0" + value; 
    else
        vString = value; 
    return vString;
}

function PutThrough()
{
    if (document.getElementById("divPutThrough").style.display == "none")  
    {
        document.getElementById("divPutThrough").style.display = "block";
    }
    else
    {
        document.getElementById("divPutThrough").style.display = "none";
    }
}
function ShowOption()
{
    if (document.getElementById("divOption").style.display == "none")  
    {
        document.getElementById("divOption").style.display = "block";
    }
    else
    {
        document.getElementById("divOption").style.display = "none";
    }
}
function HideOption()
{
    document.getElementById("divOption").style.display = "none";       
}
function SetOption()
{
    document.getElementById("stockListSelected").value = GetValueSelectBox("selSelectedStock");  
    document.getElementById("tableType").value = GetValueTableType(); 
    document.getElementById("resolutionType").value = GetValueResolutionType(); 
    document.getElementById("fontType").value = GetValueFontType(); 
    theForm.submit();
}
function ViewOnClick()
{
    theForm.submit();
}	
function SetLanguage(lang)
{
    document.getElementById("language").value = lang;  
    theForm.submit();
}
function SelectButton(m){
	var rbtTableType=document.getElementById(m);
	rbtTableType.checked=true;
}
function SelectTableType(m){
	var rbtTableType = document.getElementById(m);
	var timeDelayObj = document.getElementById("timeDelay");
	rbtTableType.checked = true;
	if (rbtTableType.id == "radTableTypeScroll"){
	    timeDelayObj.value = "30";
	}
	if (rbtTableType.id == "radTableTypeUpSide"){
	    timeDelayObj.value = "3000";
	}
}
function CloseBanner(){
    if (document.getElementById("radResolutionTypeSmall").checked)  
    {       
        document.getElementById("tblHeader").style.display = "none";
        document.getElementById("tblfooter").style.display = "none";
        document.body.scroll = "no";
	    document.body.status = "no";
	}
}

function RowOnClick(rowObj){
    rowSelected = document.getElementById("rowSelected").value;    
    if (rowSelected == ""){       
        RowHightLight(rowObj,rowhlbgColor,false);
        document.getElementById("rowSelected").value = rowObj.id;
    }else{
        if (document.getElementById(rowSelected).id == rowObj.id)
        {
            RowHightLight(rowObj,bgColor,true);
            document.getElementById("rowSelected").value = "";          
        }else{
            RowHightLight(rowObj,rowhlbgColor,false);
            RowHightLight(document.getElementById(rowSelected),bgColor,true);               
            document.getElementById("rowSelected").value = rowObj.id;     
        }    
    }      
}

function RowHightLight(rowObj, bgColor, reset){ 
    if(rowObj){
        var color = bgColor;
        for (var i=0; i< rowObj.cells.length; i++){
            if(reset){
                if (i==0 || i==1 || i==2 || i==3 || i==10 || i==11 || i==12 || i==19 || i== 20 || i==21 || i==22){
                    color =  hlbgColor;               
                }else{
                    color =  bgColor;                 
                }
            }
            rowObj.cells[i].style.backgroundColor = color;            
        }        
    }
}

function AutoRoll(divid) {
	var total = document.getElementById("total").value;
	var scrolldelay = document.getElementById("timeDelay").value;
	var numRowSelected = ListCountElement(document.getElementById("stockListSelected").value,",");
	obj=document.getElementById(divid);
	if (obj) {
		if (parseInt(parseInt(currentpos)/rowHeight) == (total - numRowSelected)){
		    currentpos = scrollstep;		    	
		}						
		obj.scrollTop = currentpos;
		if (directUp) 
		    currentpos=currentpos + scrollstep;
		else 
		    currentpos=currentpos - scrollstep;
	}
	setTimeout("AutoRoll('"+divid+"')",scrolldelay);
}

function AutoSwitch(divid) {
	var numRowPerPage = document.getElementById("numRowPerPage").value;	
    var total = document.getElementById("total").value;
    var switchDelay = document.getElementById("timeDelay").value;
    var numRowSelected = ListCountElement(document.getElementById("stockListSelected").value,",");    
	var rowSwitch = parseInt(numRowPerPage) - parseInt(numRowSelected);
	var heightSwitch = rowSwitch * rowHeight; 
	var heightTotal = (parseInt(total) - parseInt(numRowSelected)) * rowHeight;
	obj=document.getElementById(divid);
	
	if (obj) {	
		//window.status = currentpos;				
		if(currentpos > heightTotal) currentpos = 0;			
		obj.scrollTop = currentpos;	
		currentpos = currentpos + ((rowSwitch-1) * rowHeight);
	}
	setTimeout("AutoSwitch('"+divid+"')", switchDelay);
}

function InitStart(){
    InitLang();
    var objTableType = document.getElementById("tableType");
    if (!objTableType) return;
    if (objTableType.value == "Scroll")
        AutoRoll('inner');
    if (objTableType.value == "UpSide") 
        AutoSwitch('inner');
    CloseBanner();
}