﻿//align
var l = " left ", r = " right pd3r ", odd = "odd", edd = "edd";
var s1 = "bd1r ", s2 = "bd2l bd1r ", b1 = " bd1b ", b2 = " bd2b ";
//Array manager
var arrExchange = [], arrManager = [];
//rainbow
var rain;
var isload = false, isFisrt = true;

function callWebService(stockid, status){
	$.ajax({
          url: '../Service/iProfile_UPCoM_Security_Handle.ashx?stockboard=' + stockid + '&status=' + securitystatus,
          global: false,
          type: "POST",
          dataType: "html",
          success: function(msg){
                getData(msg);
            }
        }
    );	
};

function getData(obj){
    arrExchange = ConvertToObject(obj);
    if(isload == false)
    {
        LoadHeader();
        LoadData(arrExchange);        
        RowEven();
        arrManager = arrExchange;
        securitystatus = 1;     
        isload = true;   
    }
    else
    {
        ReloadData(arrExchange);  
        compareData(arrExchange);        
    }
    window.setTimeout("callWebService(" + stockboard + "," + securitystatus + ");", mTimeRequest);		  
};

function LoadData(objs){ 
    var head = "", body = "";
    $('#dvContentMain').html("<table style='width:100%;' class='bd1' frame='box' cellspacing='0' cellpadding='0' id='tbContentMain'></table>");
    if(objs.length >0){
        var arrHeader = [];
        if(mstrHeader != "")
            arrHeader = mstrHeader.split('|'); 
        var count = 0, m = 0, n = 0;
        var endhead = false;        
        for(var i=0; i<objs.length; i++){
            var ishead = false;
            if(!endhead){
                for(var j=0; j<arrHeader.length; j++){
                    if(arrHeader[j] == objs[i]._stockSymbol){                  
                        if(count == arrHeader.length-2){
                            head += GenTable(objs[i], n, b1 + b2);                            
                            endhead = true;
                        }
                        else
                            head += GenTable(objs[i], n, b1);
                        count++;
                        n++;
                        m--;
                        ishead = true;
                        break;
                    }                
                }
            }
            if(!ishead)
                body += GenTable(objs[i], m, b1);         
            m++;
        }        
    }  
    $('#tbContentMain').html(head + body);
    RowEven();
};

function ReloadData(objs){
    if(objs.length >0){
        for(var i=0; i<objs.length; i++){
            updateTable(objs[i]);            
        }
    }
};

function LoadHeader(){
    var sb = new strbuilder();
    sb.append("<table style='width:100%;' frame='box' cellspacing='0' cellpadding='0' border='0'>");
    sb.append("<tr class='center bold'>");
    sb.append("<td rowspan='2' class='bd1r bd1t' width='4%'>" + lg.Tick + "</td>");    
    sb.append("<td rowspan='2' class='bd1r bd1t' width='3.5%'>" + lg.Ceil + "</td>");
    sb.append("<td rowspan='2' class='bd1r bd1t' width='3.5%'>" + lg.Floor+ "</td>");    
    sb.append("<td rowspan='2' class='bd1r bd1t' width='3.5%'>" + lg.Ref + "</td>");
    sb.append("<td rowspan='2' class='bd1r bd1t' width='7%'>" + lg.Room + "</td>");
    sb.append("<td colspan='6' class='bd1r bd1t bd2l bd1b' width='27%'>" + lg.OrderBuy + "</td>");
    sb.append("<td colspan='4' class='bd1r bd1t bd2l bd1b' width='16.5%'>" + lg.Match + "</td>");
    sb.append("<td colspan='6' class='bd1r bd1t bd2l bd1b' width='27%'>" + lg.OrderSell + "</td>");
    sb.append("<td colspan='2' class='bd1r bd1t bd2l bd1b' width='7%'>" + lg.Today + "</td>");
    sb.append("</tr>");
    sb.append("<tr class='center bold'>");
    sb.append("<td class='bd1r bd2l' width='4%'>" + lg.Pri + "3</td>");
    sb.append("<td class='bd1r' width='5%'>" + lg.Unit + "3</td>");
    sb.append("<td class='bd1r' width='4%'>" + lg.Pri + "2</td>");
    sb.append("<td class='bd1r' width='5%'>" + lg.Unit + "2</td>");
    sb.append("<td class='bd1r' width='4%'>" + lg.Pri + "1</td>");
    sb.append("<td class='bd1r' width='5%'>" + lg.Unit + "1</td>");
    
    sb.append("<td class='bd1r bd2l' width='3.5%'>" + lg.Price + "</td>");
    sb.append("<td class='bd1r' width='4%'>" + "+/-" + "</td>");
    sb.append("<td class='bd1r' width='4%'>" + lg.Unit + "</td>");    
    sb.append("<td class='bd1r' width='5%'>" + lg.TotalVol + "</td>");
    
    sb.append("<td class='bd1r bd2l' width='4%'>" + lg.Pri + "1</td>");
    sb.append("<td class='bd1r' width='5%'>" + lg.Unit + "1</td>");
    sb.append("<td class='bd1r' width='4%'>" + lg.Pri + "2</td>");
    sb.append("<td class='bd1r' width='5%'>" + lg.Unit + "2</td>");
    sb.append("<td class='bd1r' width='4%'>" + lg.Pri + "3</td>");
    sb.append("<td class='bd1r' width='5%'>" + lg.Unit + "3</td>");
        
    sb.append("<td class='bd1r bd2l' width='3.5%'>" + lg.High + "</td>");    
    sb.append("<td class='bd1r' width='3.5%'>" + lg.Low + "</td>");
    
    sb.append("</tr>");
    sb.append("</table>");
    $('#dvHeader').html(sb.toString());    
};

function GenTable(obj, no, cs){    
    var sb = new strbuilder();
    var clo = "", cloa = "";    
    cloa = getColor(obj._price, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<tr class='tr1' id='" + obj._stockSymbol + "' onmouseover=trMouseOver('" + obj._stockSymbol + "') onmouseout=trMouseOut('" + obj._stockSymbol + "') ondblclick=add2Top(this)>");
    sb.append("<td width='4%' class='pd1 bold " + s1 + cs + l + cloa + "' title='" + obj._securityName + "'>" + obj._stockSymbol + "</td>");
    
    sb.append("<td width='3.5%' class='" + s1 + cs + r + font + " u'>" + obj._ceilingPrice + "</td>");
    sb.append("<td width='3.5%' class='" + s1 + cs + r + font + " d'>" + obj._floorPrice + "</td>");    
    sb.append("<td width='3.5%' class='" + s1 + cs + r + font + " s'>" + obj._basicPrice + "</td>");
    sb.append("<td width='7%' class='" + s1 + cs + r + font + " t'>" + obj._currentRoom + "</td>");
    
    clo = getColor(obj._bid3, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<td width='4%' class='" + s2 + cs + r + font + clo + "'>" + obj._bid3 + "</td>");
    sb.append("<td width='5%' class='" + s1 + cs + r + font + clo + "'>" + obj._bid3Volume + "</td>");    
    clo = getColor(obj._bid2, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<td width='4%' class='" + s1 + cs + r + font + clo + "'>" + obj._bid2 + "</td>");
    sb.append("<td width='5%' class='" + s1 + cs + r + font + clo + "'>" + obj._bid2Volume + "</td>");
    clo = getColor(obj._bid1, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);    
    sb.append("<td width='4%' class='" + s1 + cs + r + font + clo + "'>" + obj._bid1 + "</td>");
    sb.append("<td width='5%' class='" + s1 + cs + r + font + clo + "'>" + obj._bid1Volume + "</td>");
    
    sb.append("<td width='3.5%' class='" + s2 + cs + r + font + cloa + "'>" + obj._price + "</td>");
    sb.append("<td width='4%' class='" + s1 + cs + r + font + cloa + "'>" + getSymbol(obj._price, obj._ceilingPrice, obj._floorPrice, obj._basicPrice) + replacechar(obj._change) + "</td>");
    sb.append("<td width='4%' class='" + s1 + cs + r + font + cloa + "'>" + obj._volume + "</td>");    
    sb.append("<td width='5%' class='" + s1 + cs + r + font + cloa + " t'>" + obj._totalVolume + "</td>");
    
    clo = getColor(obj._ask1, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<td width='4%' class='" + s2 + cs + r + font + clo + "'>" + obj._ask1 + "</td>");
    sb.append("<td width='5%' class='" + s1 + cs + r + font + clo + "'>" + obj._ask1Volume + "</td>");
    clo = getColor(obj._ask2, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<td width='4%' class='" + s1 + cs + r + font + clo + "'>" + obj._ask2 + "</td>");
    sb.append("<td width='5%' class='" + s1 + cs + r + font + clo + "'>" + obj._ask2Volume + "</td>");
    clo = getColor(obj._ask3, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<td width='4%' class='" + s1 + cs + r + font + clo + "'>" + obj._ask3 + "</td>");
    sb.append("<td width='5%' class='" + s1 + cs + r + font + clo + "'>" + obj._ask3Volume + "</td>");
    
    clo = getColor(obj._highestPrice, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<td width='3.5%' class='" + s2 + cs + r + font + clo + "'>" + obj._highestPrice + "</td>");
    clo = getColor(obj._lowestPrice, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
    sb.append("<td width='3.5%' class='" + s1 + cs + r + font + clo + "'>" + obj._lowestPrice + "</td>");
    
    sb.append("</tr>");
    return sb.toString();
};

function updateTable(obj){
    var arr = $("#" + obj._stockSymbol + ">td");        
    var bdb = b1, cs = odd;
    if($("#" + obj._stockSymbol + ">td").hasClass('bd2b'))
        bdb = b2;    
    if($("#" + obj._stockSymbol).hasClass(odd))
        cs = odd;
    else
        cs = edd
    var color = getColor(obj._price, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);    
    //(2)
    if(arr[3].innerHTML != obj._basicPrice){
        rain = new Rainbow(arr[3]);
    }
    if(arr[1].innerHTML != obj._ceilingPrice){
        rain = new Rainbow(arr[1]);
    }
    if(arr[2].innerHTML != obj._floorPrice){
        rain = new Rainbow(arr[2]);
    }    
    if(arr[4].innerHTML != obj._currentRoom){
        rain = new Rainbow(arr[4]);
        arr[4].innerHTML = obj._currentRoom;
    }
    //(3)
    if(arr[6].innerHTML != obj._bid3Volume){
        rain = new Rainbow(arr[6]);
        arr[6].innerHTML = obj._bid3Volume;
    }
    if(arr[5].innerHTML != obj._bid3){
        rain = new Rainbow(arr[5]);
        arr[5].innerHTML = obj._bid3;
        var cl = getColor(obj._bid3, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);        
        arr[5].className = s2 + bdb + cs + cl + r + font;
        arr[6].className = s1 + bdb + cs + cl + r + font;
    }
    if(arr[8].innerHTML != obj._bid2Volume){
        rain = new Rainbow(arr[8]);
        arr[8].innerHTML = obj._bid2Volume;
    }
    if(arr[7].innerHTML != obj._bid2){
        rain = new Rainbow(arr[7]);
        arr[7].innerHTML = obj._bid2;
        var cl = getColor(obj._bid2, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
        arr[7].className = arr[8].className = s1 + bdb + cs + cl + r + font;
    }
    if(arr[10].innerHTML != obj._bid1Volume){
        rain = new Rainbow(arr[10]);
        arr[10].innerHTML = obj._bid1Volume;
    }
    if(arr[9].innerHTML != obj._bid1){
        rain = new Rainbow(arr[9]);
        arr[9].innerHTML = obj._bid1;
        var cl = getColor(obj._bid1, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
        arr[9].className = arr[10].className = s1 + bdb + cs + cl + r + font;
    }   
    //(4)
    if(arr[11].innerHTML != obj._price){
        rain = new Rainbow(arr[11]);
        arr[11].innerHTML = obj._price;        
        arr[11].className =  s2 + bdb + cs + "1" + r + color + font;
        rain = new Rainbow(arr[12]);
        //(1)    
        arr[0].className = 'pd1 bd1r bold' + bdb + cs + color + l + font;
        arr[12].innerHTML = getSymbol(obj._price, obj._ceilingPrice, obj._floorPrice, obj._basicPrice) + replacechar(obj._change);
        arr[12].className = arr[13].className = arr[14].className = s1 + bdb + cs + "1" + r + color + font;   
    }    
    if(arr[13].innerHTML != obj._volume){
        rain = new Rainbow(arr[13]);
        arr[13].innerHTML = obj._volume;
    }     
    if(arr[14].innerHTML != obj._totalVolume){
        rain = new Rainbow(arr[14]);
        arr[14].innerHTML = obj._totalVolume;
    }    
    //(5)
    if(arr[16].innerHTML != obj._ask1Volume){
        rain = new Rainbow(arr[16]);
        arr[16].innerHTML = obj._ask1Volume;
        var cl = getColor(obj._ask1, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
        arr[15].className = s2 + bdb + cs + cl + r + font;
        arr[16].className = s1 + bdb + cs + cl + r + font;
    }
    if(arr[15].innerHTML != obj._ask1){
        rain = new Rainbow(arr[15]);
        arr[15].innerHTML = obj._ask1;        
    }   
    if(arr[18].innerHTML != obj._ask2Volume){
        rain = new Rainbow(arr[18]);
        arr[18].innerHTML = obj._ask2Volume;
        var cla2 = getColor(obj._ask2, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
        arr[17].className = arr[18].className = s1 + bdb + cs + cla2 + r + font;
    }
    if(arr[17].innerHTML != obj._ask2){
        rain = new Rainbow(arr[17]);
        arr[17].innerHTML = obj._ask2;        
    }
    if(arr[20].innerHTML != obj._ask3Volume){
        rain = new Rainbow(arr[20]);
        arr[20].innerHTML = obj._ask3Volume;
        var cla3 = getColor(obj._ask3, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
        arr[19].className = arr[20].className = s1 + bdb + cs + cla3 + r + font;
    }
    if(arr[19].innerHTML != obj._ask3){
        rain = new Rainbow(arr[19]);
        arr[19].innerHTML = obj._ask3;        
    }    
    //(6)
    if(arr[21].innerHTML != obj._highestPrice){
        rain = new Rainbow(arr[21]);
        arr[21].innerHTML = obj._highestPrice; 
        var clh = getColor(obj._highestPrice, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
        arr[21].className = s2 + bdb + cs + clh + r + font;               
    }    
    if(arr[22].innerHTML != obj._lowestPrice){
        rain = new Rainbow(arr[22]);
        arr[22].innerHTML = obj._lowestPrice;        
        var cll = getColor(obj._lowestPrice, obj._ceilingPrice, obj._floorPrice, obj._basicPrice);
        arr[22].className = s1 + bdb + cs + cll + r + font;
    }    
    //End
};

function compareData(objs){
    if(objs.length >0){
        for(var i=0; i<objs.length; i++){
            for(var j=0; j<arrManager.length; j++){
                if(objs[i]._stockSymbol == arrManager[j]._stockSymbol){
                    var name = arrManager[j]._securityName;
                    arrManager[j] = objs[i];
                    arrManager[j]._securityName = name;
                    break;
                }
            }
        }
    }
};

function ConvertToObject(objs){
	var obj = [], result = [];
	if(objs.length >0){
	    obj = objs.split('\n');
		for (var j = 0; j < obj.length; j++) {
		    var exc = new ExchangeSecurity();
		    exc.Load(obj[j]);
		    result.push(exc);
		}
	}	
	return result;
};

function getDataBlock(element, post){    
    var result ="", price = "", symbol = "";
    var id = $(element).parent().attr('id');
    var position = $(element).position();
    //Get block Volume data in position
    for(var i=0; i<arrManager.length; i++){        
        if(id == arrManager[i]._stockSymbol){             
            switch(post){
                case 1:
                    price = arrManager[i]._bid1;
                    result = arrManager[i]._bid1Block;
                    break;
                case 2:
                    price = arrManager[i]._bid2;
                    result = arrManager[i]._bid2Block;
                    break;
                case 3:
                    price = arrManager[i]._bid3;
                    result = arrManager[i]._bid3Block;
                    break;
                case 4:
                    price = arrManager[i]._ask1;
                    result = arrManager[i]._ask1block;
                    break;
                case 5:
                    price = arrManager[i]._ask2;
                    result = arrManager[i]._ask2block;
                    break;
                case 6:
                    price = arrManager[i]._ask3;
                    result = arrManager[i]._ask3block;
                    break;      
            }
            break;        
        }
    }    
    //IF block is not null, gen script block volume to html
    if(result != ""){        
        $("#dvdialog").css('top', position.top + mtop);        
        $("#dvdialog").css('left', position.left + mleft);
        $("#dvdlhead").css('font-weight', 'bold');
        $("#dvdlhead").html(id + " - " + lg.Price + ": " + price);
        
        var arr = result.split('|');
        var sb = new strbuilder();
        sb.append("<table style='width:100%;' frame='box' cellspacing='0' cellpadding='0' border ='0'>");
        sb.append("<tr><td width='60%' class='right bold'>" + lg.Volume + "</td><td width='40%' class='right bold'>" + lg.Count + "</td><td>");
        var tprice = 0, count = 1;
        var arrTemp = [];        
        for(var j=0; j< arr.length; j++){            
            if(tprice == arr[j])          
            {    
                count++;
                for(var m=0; m<arrTemp.length; m++){
                    if(arrTemp[m]._price == tprice)
                        arrTemp[m]._count = count;
                }
            }
            else
            {   
                count = 1;                
                var eb = new ExchangeBlock();
                eb._price = tprice = arr[j];
                eb._count = count;                
                arrTemp.push(eb);
            }                            
        }   
        for(var m=0; m<arrTemp.length; m++){
            sb.append("<tr>");            
            sb.append("<td class='right'>" + arrTemp[m]._price +  "</td><td class='right'>" + arrTemp[m]._count + "</td>");                
            sb.append("</tr>");
        }
        sb.append("</table>");     
        $("#dvdlcontent").html(sb.toString());
	    $("#dvdialog").show();	    
	}
};

function tdMouseOver(element, position){
    if($(element).text() != "")
        getDataBlock(element, position);
};

function tdMouseOut(){
    $("#dvdialog").hide();
};

function trMouseOver(element){
    var arr = $("#" +  element + ">td");
    if(arr.length >0){
        for(var i=0; i< arr.length; i++){
            $(arr[i]).addClass('bgTrOver');
        }
    }    
};
function trMouseOut(element){
    var arr = $("#" +  element + ">td");
    if(arr.length >0){
        for(var i=0; i< arr.length; i++){
            $(arr[i]).removeClass('bgTrOver');
        }
    } 
};
function add2Top(element){    
    var id = $(element).attr('id');            
    if(mstrHeader.indexOf(id) == -1){
        if(countChar(mstrHeader) < 1)
            addClassTop(id); 
        if(mstrHeader.length != 0 || element.rowIndex !=0)
            $("#tbContentMain tr:first").before(element);        
        mstrHeader += id + "|";            
    }
    else{
        mstrHeader = mstrHeader.replace(id + '|','');
        moveRow(id);  
        removeClassTop(id);    
        if(mstrHeader.length >0){
            var str = mstrHeader.split('|');
            addClassTop(str[0]);
        }  
    }      
    //Remove css over 
    trMouseOut(id);
     setCookie('AddUCTop', mstrHeader, 3); 
};

function RowEven(){
    var arr = $("#tbContentMain tr:even");
    for(var i=0; i< arr.length; i++){
        var id = $(arr[i]).attr('id'); 
        var arr1 = $("#" + id + ">td");
        for(var j=0; j< arr1.length; j++){
            if(j >= 11 && j <= 14)
                $(arr1[j]).addClass(edd + '1');
            else
                $(arr1[j]).addClass(edd);
        }       
    }
    var arr = $("#tbContentMain tr:odd");
    for(var i=0; i< arr.length; i++){
        var id = $(arr[i]).attr('id'); 
        var arr1 = $("#" + id + ">td");
        for(var j=0; j< arr1.length; j++){            
            if(j >= 11 && j<= 14)
                $(arr1[j]).addClass(odd + '1');
            else
                $(arr1[j]).addClass(odd);
        }       
    }
};
