﻿var checkViewTable={"x":"-1","y":"-1","00":"0","01":"1","02":"2","03":"3","10":"4","11":"5","12":"6","13":"7","20":"-1","21":"-1","22":"8","23":"-1","30":"9","31":"-1","32":"-1","33":"-1","40":"10","41":"11","42":"12","43":"13"};

function checkView(elem){
    var arr=elem.id.split("_");
    var dirc=arr[1];
    var tag=arr[2];
    if(elem.className!="default"){return;}
    if(checkViewTable[checkViewTable["x"]+checkViewTable["y"]]!="-1"){
        getnode("tab_" + checkViewTable[checkViewTable["x"] + checkViewTable["y"]]).className = "default";
    }
    var theother={"x":"y","y":"x","xcount":4,"ycount":5,"xid":"ti","yid":"it"};
    var firstA="-1";
    for(var i=0;i<theother[dirc+"count"];i++)
    {
        getnode("tab_" + theother[dirc] + "_" + i).className = "default";
        if(checkViewTable[theother[dirc+"id"].replace("t",tag).replace("i",i)]=="-1")
        {
            getnode("tab_" + theother[dirc] + "_" + i).className = "disabled";
                if(checkViewTable[theother[dirc]]==i)
                    {checkViewTable[theother[dirc]]="-1";}
         }
         else{firstA=i;}
    }
    if(checkViewTable[theother[dirc]]==-1)
    {checkViewTable[theother[dirc]]=firstA.toString();}
    getnode("tab_" + theother[dirc] + "_" + checkViewTable[theother[dirc]]).className = "active";
    getnode("tab_" + dirc + "_" + checkViewTable[dirc]).className = "default";
    elem.className="active";
    checkViewTable[dirc]=tag.toString();
    getnode("tab_" + checkViewTable[checkViewTable["x"] + checkViewTable["y"]]).className = "active";
    if(tabSwitchController){tabSwitchController.load();}
}

function initView(arr){
    checkViewTable["x"]=arr[0].toString();
    getnode("tab_x_" + arr[0]).className = "active";
    checkViewTable["y"]=arr[1].toString();
    getnode("tab_y_" + arr[1]).className = "active";
    getnode("tab_" + checkViewTable[arr.join("")]).className = "active";
}
function processDataArray(data1,data2,data3,colors){
    data3=isNaN(data3*1)?"--":(data3*1).toFixed(2);
    if(data2*1>0)
    {
        data2="+"+data2;data3='<span class="'+colors[0]+'">+'+data3+"%</span>";
    }
    if(data2*1<0)
    {
        data3='<span class="'+colors[1]+'">'+data3+"%</span>";
    }
    return[data1,data2,data3];
}
function processData(config){
    var colors=["green","red"];
    switch(config[4])
    {
        case "stock":
            var data=window["hq_str_"+config[1]].split(",");
            var data1=(data[3]*1).toFixed(2);
            var data2=(data[3]-data[2]).toFixed(2);
            var data3=(data[3]-data[2])*100/(data[2]*1);
            colors=["red","green"];
            break;
        case "int_":
            var data=window["hq_str_"+config[1]].split(",");
            var data1=data[1];
            var data2=data[2];
            var data3=data[3];
            break;
        case "int":
            var data=window["hq_str_"+config[1]].split(",");
            var data1=data[1];
            var data2=data[2];
            var data3=data[3];
            break;
        case "forex":
            var data=window["hq_str_"+config[1]].split(",");
            var data1=(data[8]*1).toFixed(4);
            var data2=(data[8]-data[3]).toFixed(4);
            var data3=(data[8]-data[3])*100/(data[3]*1);
            break;
        case "futures":
            var data=window["hq_str_"+config[1]].split(",");
            var data1=(data[8]*1).toFixed(2);
            var data2=(data[8]-data[10]).toFixed(2);
            var data3=(data[8]-data[10])*100/(data[10]*1);
            break;
        case "hk_futures":
            var data=window["hq_str_"+config[1]].split(",");
            var data1=(data[0]*1).toFixed(2);
            var data2=(data[0]*1-data[7]*1).toFixed(2);
            var data3=(data[0]*1-data[7]*1)*100/(data[7]*1);
            break;
        case "cffex":
            var data=window["hq_str_"+config[1]].split(",");
            var data1=(data[3]*1).toFixed(2);
            var data2=(data[3]-data[14]).toFixed(2);
            var data3=(data[3]-data[14])*100/(data[14]*1);
            break;
        default:
            var data1="--";
            var data2="--";
            var data3="--";
    }
    return processDataArray(data1,data2,data3,colors);
}
var TabSwitchController=function(loader,targets){
    this.elementLoader=loader;
    this.loadHQ=function(target){
        var element=document.createElement("script");
            element.type="text/javascript";
            element.charset="gb2312";
            element.src="http://hq.sinajs.cn/rn="+(new Date()).getTime()+"&list="+target.list;
            element.object=this;
            element.target=target;
            element[document.all?"onreadystatechange":"onload"]=function(){
                if(document.all&&this.readyState!="loaded"&&this.readyState!="complete"){return;}
                var target=this.target;
                for(var i=0;i<target.config.length;i++)
                {
                    var data=processData(target.config[i]);
                    target.lines[i][1].innerHTML=data[0];
                    if(target.lines[i][2])
                    {
                        target.lines[i][2].innerHTML=data[1];
                    }
                    target.lines[i][3].innerHTML=data[2];
                }
                this[document.all?"onreadystatechange":"onload"]=null;
                this.parentNode.removeChild(this);};
            this.elementLoader.appendChild(element);};
    this.targets=targets;
    this.load=function(){
        var object=arguments.callee.object;
        var targets=object.targets;
        for(var i=0;i<targets.length;i++)
        {
            var target=targets[i];
            var config=target.getAttribute("config");
            if(target.className=="active")
            {
                if(target.innerHTML=="")
                {
                    var arrayConfig=config.split("|");
                    var targetTable=document.createElement("table");
                    targetTable.cellPadding=0;
                    targetTable.cellSpacing=0;
                    target.lines=[];
                    target.config=[];
                    target.list="";
                    if(arrayConfig.length>2)
                    {
                        targetTable.className="table";
                        targetTable.style.marginTop="8px";
                        for(var j=0;j<arrayConfig.length;j++)
                        {
                            var stockConfig=arrayConfig[j].split(",");
                            target.config.push(stockConfig);
                            target.list+=stockConfig[1]+",";
                            var tempTr1=targetTable.insertRow(-1);
                                tempTr1.className="current";
                            var tempName=tempTr1.insertCell(-1);
                                tempName.className="left";
                                tempName.colSpan=3;
                            var tempNameLink=document.createElement("a");
                                tempNameLink.target="_blank";
                            tempNameLink.innerHTML=stockConfig[0];
                            tempName.appendChild(tempNameLink);
                            var tempTr2=targetTable.insertRow(-1);
                            var tempPrice=tempTr2.insertCell(-1);
                            var tempPriceVolume=tempTr2.insertCell(-1);
                            var tempPricePercent=tempTr2.insertCell(-1);
                            target.lines.push([tempTr,tempPrice,tempPriceVolume,tempPricePercent]);
                        }
                        target.appendChild(targetTable);
                    }
                    else{
                        targetTable.className="table";
                        for(var j=0;j<arrayConfig.length;j++)
                        {
                            var stockConfig=arrayConfig[j].split(",");
                            target.config.push(stockConfig);
                            target.list+=stockConfig[1]+",";
                            var tempTr=targetTable.insertRow(-1);
                                tempTr.target=target;
                                if(stockConfig[2])
                                {
                                    var tempImageLink=document.createElement("a");
                                        tempImageLink.className="image";
                                        tempImageLink.target="_blank";
                                    var tempImage=document.createElement("img");
                                        tempImage.src=stockConfig[2]+"?"+(new Date()).getTime();
                                        tempImage.linkElement=tempImageLink;
                                        tempImageLink.appendChild(tempImage);
                                        tempImageLink.style.display="none";
                                        target.appendChild(tempImageLink);
                                        tempTr.imageLink=tempImageLink;
                                        tempTr.image=tempImage;
                                        tempTr.style.cursor="pointer";
                                        tempTr.thread=-1;
                                        tempTr.switchLine=function(){
                                            var tr=arguments.callee.tr;
                                                tr.thread=-1;
                                            if(tr.target.currentLine)
                                            {
                                                tr.target.currentLine.className="";
                                                tr.target.currentLine.imageLink.style.display="none";
                                                if(!tr.image.last)
                                                {
                                                    tr.image.last=(new Date()).getTime();
                                                }
                                            }
                                            tr.className="current";
                                            tr.imageLink.style.display="";
                                            var rn=(new Date()).getTime();
                                            if(rn-tr.image.last>30000)
                                            {
                                                tr.image.src=tr.image.src.replace(/\?\d*$/,"?"+rn);
                                                tr.image.last=rn;
                                            }
                                            tr.target.currentLine=tr;
                                        };
                                        tempTr.switchLine.tr=tempTr;
                                        tempTr.onmouseover=function(){this.thread=setTimeout(this.switchLine,200);};
                                        tempTr.onmouseout=function(){if(this.thread!=-1){clearTimeout(this.thread);}};
                                    }
                                var tempName=tempTr.insertCell(-1);
                                    tempName.className="name";
                                var tempNameLink=document.createElement("a");
                                    tempNameLink.target="_blank";
                                    tempNameLink.innerHTML=stockConfig[0];
                                    tempName.appendChild(tempNameLink);
                                var tempPrice=tempTr.insertCell(-1);
                                var tempPricePercent=tempTr.insertCell(-1);
                                target.lines.push([tempTr,tempPrice,null,tempPricePercent,(stockConfig[2]?tempImage:false)]);
                            }
                            target.appendChild(targetTable);
                            for(var j=0;j<target.lines.length;j++)
                            {
                                if(target.lines[j][0].image)
                                {
                                    target.currentLine=target.lines[j][0];
                                    target.currentLine.className="current";
                                    target.currentLine.imageLink.style.display="";break;
                                }
                            }
                        }
                        target.list=target.list.replace(/,$/,"");
                        object.loadHQ(target);
                    }
                    else
                    {
                        var now=new Date();
                        if(now.getSeconds()<30&&now.getMinutes()%3==0)
                        {
                            var rn=now.getTime();
                            for(var j=0;j<target.lines.length;j++)
                            {
                                if(target.lines[j][4]&&target.lines[j][4].linkElement.style.display=="")
                                {
                                    target.lines[j][4].src=target.config[j][2]+"?"+rn;
                                    target.lines[j][4].last=(new Date()).getTime();
                                }
                            }
                        }
                        object.loadHQ(target);
                    }
                    break;
                }
            }
        };
    
    this.load.object=this;
    this.start=function(){this.load();setInterval(this.load,30000);}
};

var tabSwitchController = new TabSwitchController(getnode("tabss_script_loader"), [getnode("tab_0"), getnode("tab_1"), getnode("tab_2"), getnode("tab_3"), getnode("tab_4"), getnode("tab_5"), getnode("tab_6"), getnode("tab_7"), getnode("tab_8"), getnode("tab_9"), getnode("tab_10"), getnode("tab_11"), getnode("tab_12"), getnode("tab_13")]); initView([0, 0]);
tabSwitchController.start();
