﻿//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 marketOpenVn = "Mở cửa";
var marketOpenEn = "Open";
var marketRunOffVn = "Đóng cửa";
var marketRunOffEn = "Close";
var everageTooltipVn = "Giá trung bình: ";
var everageTooltipEn = "Everage Price: ";
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;
}

//Tai du lieu day du
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 typeRow = firstCol[1];   
    var objRow =document.getElementById('tr' + typeRow);
    var language = document.getElementById('hdnLanguage').value;    
    
    for (var k=0; k< arrRow.length; k++ )
    {            
        if (arrRow[k] != "")  //Tong so chi co 26 cot
        {   
            arrCell = arrRow[k].split("~");           
            if (k < 26) //Tong so co 26 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) 
                        {
                            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==4 || k==5 || k==6 || k==7 || k==8 || k==9 || k==11 || k==12 || k==13 || k==14 || k==15 || k==16 || k==17 || k==18 || k==22 || 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 gia tri trung binh
             if(k==26)
             {
                objRow.cells[19].title = GetEverageTooltip(language) + arrRow[26];                
             }
             //Thay Room NN
             if(k==27)
             {
                objRow.cells[24].title = GetRoomTooltip(language) + arrRow[27];
                objRow.cells[25].title = GetRoomTooltip(language) + arrRow[27];             
             }
        }
    }
    //alert(window.status);
}

function GetEverageTooltip(language)
{
    var vEverageTooltip;
    if (language == "vi-VN") 
    {
        vEverageTooltip = everageTooltipVn;
    }
    else
    {
        vEverageTooltip = everageTooltipEn;
    }
    return vEverageTooltip;
}

function GetRoomTooltip(language)
{
    var vRoomTooltip;
    if (language == "vi-VN") 
    {
        vRoomTooltip = roomTooltipVn;
    }
    else
    {
        vRoomTooltip = roomTooltipEn;
    }
    return vRoomTooltip;
}

function ChangeMarketInfo(arrRowList,type)
{
    arrRowList = arrRowList.replace("+","▲");
    arrRowList = arrRowList.replace("-","▼");
    var arrRow = arrRowList.split("|");
    var firstCol = arrRow[0].split("~");
    var typeRow = firstCol[1];   
    var objRow =document.getElementById('tr' + typeRow);
    var language = document.getElementById('hdnLanguage').value;
    //alert(arrRow);
    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);
    }
}

function GetMarketStatusName(marketStatus, language)
{
    var vMarketStatus;
    if (language == "vi-VN") 
    {
        if (marketStatus == "C")
        {
            vMarketStatus = marketRunOffVn;
        }
        else
        {
            vMarketStatus = marketOpenVn;
        }
    }
    else
    {
        if (marketStatus == "C")
        {
            vMarketStatus = marketRunOffEn;
        }
        else
        {
            vMarketStatus = marketOpenEn;
        }
    }
    
    return vMarketStatus;
}

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 '';
    }
}
// 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)
{
	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;
		}
	}
	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 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 GetTowDigit(value)
{
    var vString = "";
    if (StringToInt(value) < 10)
        vString = "0" + value; 
    else
        vString = value; 
    return vString;
}

function StringToFloat(pString)
{
    //Convert sang so he so 10
    var vFloat = parseFloat(pString);
    if (isNaN(vFloat))
    {
        return 0;
    }
    else
    {
        return vFloat;
    }
}
function StringToDouble(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 StringToInt(pString)
{
    //Convert sang so he so 10
    var vInt = parseInt(pString,10);
    if (isNaN(vInt))
    {
        return 0;
    }
    else
    {
        return vInt;
    }
}

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 ShowOption()
{
    if (document.getElementById("divOption").style.display == "none")  
    {
        document.getElementById("divOption").style.display = "block";
    }
    else
    {
        document.getElementById("divOption").style.display = "none";
    }
}
function PutThrough()
{
    if (document.getElementById("divPutThrough").style.display == "none")  
    {
        document.getElementById("divPutThrough").style.display = "block";
    }
    else
    {
        document.getElementById("divPutThrough").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){
                    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();
}
