// charset = utf-8;
// Switches
var withDDZ = true;

// Globals
var stockCode = '600000';
var stockType = 'SH';
var dataObj = {};
var currItems = [];
var currDate = '00000000'
var sNumber = -1;
var avgVol = 0;
var totalVol = 0;
var changeRate = 0;

var lastValue = null;
var stockFix = null;

//realstock variables
var znzReal = null;
var znzIdx = null;
var znzLast = null;
var znzMystocks = null;
var znzDS = null;
var znzNews = null;
var znzEntrst = null;
var znzF10Instance = null;
var znzBoardInstance = null;
var znzPriceTab = null;
var znzFin = null;
var znzBigWeight = null;
var znzBigTrade = null;

var znzK = null;

var indcs = {};
var times = ["min5","min15","min30","min60","day","week","month","min1"];
var currentIndc = null;
var currentTime = "";

var znzAD1 = null;
var znzAD2 = null;
var znzAD3 = null;
var znzAD4 = null;
var znzAD5 = null;
var znzAD6 = null;

$_old_znzMarketBigTradeStock_set = znzMarketBigTradeStock.prototype._set;
znzMarketBigTradeStock.prototype._set = function()
{    
    //alert(this.tradeItems.length);    
    var tableStr = '<table style="width:193px" cellpadding="0" cellspacing="0" >';
    tableStr += '<tr><td align="left" width=\'50px\'>时间</td><td align="left" style="padding-left: 5px;">个股</td><td align="right">现价</td><td align="right">成交量</td></tr>';
    for(i = this.tradeItems.length -1; i >= 0; i --)
    {
        var volColor = 'nocolor';
        var valColor = 'nocolor';
    
        if (this.tradeItems[i][1][3] == 'B')
            volColor = 'incolor';
        if (this.tradeItems[i][1][3] == 'S')
            volColor = 'decolor';

        tableStr += '<tr><td align=\'left\' >' + timeStrGen(this.tradeItems[i][1][0]) + '</td>';

            
        tableStr += '<td align=\'left\' style=\'padding-left: 5px;\'><a href="./realstock.php?code=' + this.stockType.toLowerCase() + this.tradeItems[i][0] +'">' + decodeURIComponent(this.tradeItems[i][2]) + '</a></td>'    
        tableStr += '<td align=\'right\' class=\'' + valColor + '\'>' + this.tradeItems[i][1][1].toFixed(2) + '</td>'
        tableStr += '<td align=\'right\' class=\'' + volColor + '\'>' + this.tradeItems[i][1][2] + '</td>';
        tableStr += '</tr>';    
    }
    
    tableStr +='</table>';
    innerSet($(this.divID + '-table'), tableStr, null);
}
//2008/07/21  huangliang add
var realBlink = null;
    
function start()
{       
    queryInit();
    logoShow = false;
    znzK = new znzHDStock("znzKLineSWF", "realstock-swf-kline",
         stockCode, stockName, stockType, onDataChange, 3 * 1000, realstock_data, 545, 340, 1, 0.18, null, logoShow);
    znzIdx = new znzIdxSummary('stock-index-all', 10 * 1000, idxsumry_data);
    scrollDiv('stock-index-all', 3*1000, 3, 22);
    
    znzDS = new znzDDZSort('stock-ddzsort-table', 60 * 1000, 'stock-ddzsort-order', ddzsort_data);
        
   
    znzLast = new znzLastVisit('stock-lastv-table', 10 * 1000, true, stockCode, stockType);
    $('stock-lastv').style.display = "block";
    /*
    if(withDDZ && !znzEntrst)
    {
        znzEntrst = new znzDDX('realstock-entrust-table', 'DDZ', 'realstock-entrust-graph-swf', 60 * 1000, stockCode, stockType)
    }*/
    
    
    znzF10Instance = new znzF10("stock-F10", stockCode, stockType, f10_data);
   
    znzBoardInstance = new znzBoard("stock-boardInfo", 60 * 1000, stockCode, stockType, board_data);
    
    znzBigWeight = new znzBWStock("realstock-bigweight", 30 * 1000);
    znzBigTrade = new znzMarketBigTradeStock("realstock-marketbigtrade", 10 * 1000, stockType);
    //spcial 
    eventInit();
}

function resetState()
{
    var list = ['realstock-kline-real', 'realstock-kline-day', 'realstock-kline-week', 'realstock-kline-month'];
    var i = 0;
    for(i = 0; i < list.length; i ++)
    {
        $(list[i]).className = "";
    }
}

function eventInit()
{    
    $('realstock-kline-real').onclick = function()
    {
        resetState();
        $('realstock-kline-per-sel').value = "";
        $('realstock-kline-ind-sel').value = "";        
        $('realstock-kline-ind-sel').setAttribute('disabled', 'disabled');
        this.className = "active";
        onKTypeChange("");
    }
    $('realstock-kline-day').onclick = function()
    {
        resetState();
        $('realstock-kline-per-sel').value = "day";
        $('realstock-kline-ind-sel').value = "";
        $('realstock-kline-ind-sel').removeAttribute('disabled');
        this.className = "active";
        onIndChange("");
        onKTypeChange("day");
    }
    $('realstock-kline-week').onclick = function()
    {
        resetState();
        $('realstock-kline-per-sel').value = "week";
        $('realstock-kline-ind-sel').value = "";
        $('realstock-kline-ind-sel').removeAttribute('disabled');
        this.className = "active";
        onIndChange("");
        onKTypeChange("week");
    }
    
    $('realstock-kline-month').onclick = function()
    {
        resetState();
        $('realstock-kline-per-sel').value = "month";
        $('realstock-kline-ind-sel').value = "";
        $('realstock-kline-ind-sel').removeAttribute('disabled');
        this.className = "active";
        onIndChange("");
        onKTypeChange("month");
    }
    
    $('realstock-kline-ind-sel').onchange = function()
    {
        if(!currentTime)
            return;
        
        onIndChange(this.value);
    }
    
    $('realstock-kline-per-sel').onchange = function()
    {
        resetState();
        if(!this.value)
        {
            $('realstock-kline-ind-sel').setAttribute('disabled', 'disabled');
            $('realstock-kline-real').className = 'active';
        }
        else
        {
             $('realstock-kline-ind-sel').removeAttribute('disabled');
        }
        
        if($('realstock-kline-' + this.value))
        {
            $('realstock-kline-' + this.value).className = "active";
        }
        onKTypeChange(this.value);
    }
}

function onDataChange(obj)
{
    if (obj['ret'] == 'ERR_STOCK_CODE')
    {
        var stateInfo = "交易提示：已退市";
        innerSet($('realstock-values-state'), stateInfo, null);
    }
    
    if (obj['ret'] != 'OK')
        return;
     
    dataObj = obj;
    //upd2Finance();
    upd2KLine();    
    valuesSet();    
}

var finTimer = null;
function upd2Finance()
{
    if(!dataObj)
        return;
    
    var lastv = dataObj['info']['instant'][0];
    var currv = dataObj['info']['instant'][2];
    if (currv.toFixed(3) == 0.000){
        currv = lastv;
    }

    if (znzFin)
        znzFin.update(currv);
    else
    {   
        if(finTimer)
            window.clearTimeout(finTimer);
            
        finTimer = window.setTimeout(upd2Finance, 100);    
    }
    
}

var dataStrBuff = [];

function upd2KLine()
{   
    dataStrBuff.push(KISSY.JSON.stringify(dataObj));
}

function valuesSet()
{
    var lastv = dataObj['info']['instant'][0];
    lastValue = lastv;
    var openv = dataObj['info']['instant'][1];
    var currv = dataObj['info']['instant'][2];
    if (currv.toFixed(3) == 0.000){
        currv = lastv;
    }
    var volumn = dataObj['info']['instant'][3];
    var amount = dataObj['info']['instant'][4];
    var highv = dataObj['info']['instant'][5];
    var lowv = dataObj['info']['instant'][6];
    if (lowv > 99900)
        lowv = 0;
    var ina = dataObj['info']['in'];
    var outa = dataObj['info']['out'];
    var longPrice = dataObj['info']['longPrice'];
    var buya = 0;
    var sella = 0;
    var buyas = [];
    var sellas = [];
    var nfix = 2;
    
    if (longPrice == 1)
        nfix = 3;
    
    stockFix = nfix;
    
    var limitRate = 0.1;
    if(stockName.indexOf('ST') >= 0 || stockName.indexOf('PT') >= 0)
    {
        limitRate = 0.05;
    }

    var hlimitv = (lastv * (1 + limitRate));
    var llimitv = (lastv * (1 - limitRate));
    
    //涨停
    innerSet($('realstock-values-hlimit'), hlimitv.toFixed(nfix).toString(), hlimitv - lastv);
    //跌停
    if(obj = $('realstock-values-llimit'))
    {
        var color = (llimitv - lastv > 0) ? "red" : (llimitv - lastv < 0 ? "green" : "")
        var currClassName = obj.className;
        obj.className = currClassName.replace(/(green)|(red)/, "") + color;
        obj.innerHTML = llimitv.toFixed(nfix).toString();
    }
    
    innerSet($('realstock-marks-last'), lastv.toFixed(nfix).toString(), lastv - lastv);
    innerSet($('realstock-marks-close'), lastv.toFixed(nfix).toString(), lastv - lastv);
    //开盘
    innerSet($('realstock-marks-open'), openv.toFixed(nfix).toString(), openv - lastv);
    innerSet($('realstock-marks-open2'), openv.toFixed(nfix).toString(), openv - lastv);
    innerSet($('realstock-values-value'), currv.toFixed(nfix).toString(), currv - lastv);
    innerSet($('realstock-values-value2'), currv.toFixed(nfix).toString(), currv - lastv);
    
    if(obj = $('realstock-bs-cvalue'))
    {
        var color = (currv - lastv > 0) ? "red" : (currv - lastv < 0 ? "green" : "")
        var currClassName = obj.className;
        obj.className = currClassName.replace(/(green)|(red)/, "") + color;
        obj.innerHTML = currv.toFixed(nfix).toString();
    }
    
    if (dataObj['info']&&dataObj['info']['items']&&dataObj['info']['items'].length>2&&dataObj['info']['items'][2].length > 0){
        var newamount = dataObj['info']['items'][2][dataObj['info']['items'][2].length-1];
        if (currDate != dataObj['info']['timeInfo'][0] && currDate != '00000000'){
            newamount = 0;
        }
        innerSet($('realstock-bs-camount'), newamount[2], null);
        innerSet($('realstock-bs-camount2'), newamount[2], 0);
    }
    innerSet($('realstock-marks-volumn'), volumn.toString(), null);
    innerSet($('realstock-marks-volumn2'), volumn.toString(), null);
    avag = 0;
    if (volumn > 0)
        avag = (amount*100/volumn).toFixed(2);
    if (amount > 10000){
        amount = (amount/10000).toFixed(2) + " 亿元";
    }else{
        amount = amount + " 万元";
    }
    innerSet($('realstock-marks-amount'), amount.toString(), null);
    innerSet($('realstock-marks-amount2'), amount.toString(), null);
    innerSet($('realstock-marks-avag'), avag.toString(), null);
    innerSet($('realstock-marks-high'), highv.toFixed(nfix).toString(), highv - lastv);
    innerSet($('realstock-marks-low'), lowv.toFixed(nfix).toString(), lowv - lastv);
    innerSet($('realstock-marks-high2'), highv.toFixed(nfix).toString(), highv - lastv);
    innerSet($('realstock-marks-low2'), lowv.toFixed(nfix).toString(), lowv - lastv);    
   
    //2008/07/21 huangliang add
    if(realBlink == null)
    {
        realBlink = new blinkCharacter($('realstock-values-value'));
    }
    realBlink.blinks(currv, currv - lastv);
    
    var rate = (currv - lastv) / lastv;
    var delta = currv - lastv;
    var rateStr = (rate * 100).toFixed(2).toString() + '%';
    var deltaStr = delta.toFixed(nfix).toString();
    var rateStr2 = rateStr; 
    var imgDown = '<img height="9" width="9" src="./agents/zhicheng/images/down1.gif" />';
    var imgUp = '<img height="9" width="9" src="./agents/zhicheng/images/up1.gif" />';
    if (delta > 0)
        rateStr = imgUp + ' +' + deltaStr + ' &nbsp; ' + imgUp + ' +' + rateStr; 
    else
        rateStr = imgDown + " " + deltaStr + ' &nbsp; ' + imgDown + " " + rateStr;     
    
    innerSet($('realstock-values-rate'), rateStr, delta);
    innerSet($('realstock-values-rate2'), deltaStr, delta);
    innerSet($('realstock-values-rate3'), rateStr2, delta);
    
    var timeStr = timeStrGen(dataObj['info']['timeInfo'][1]);
    var dataStr = dataObj['info']['timeInfo'][0].toString();
    dataStr = dataStr.substring(0,4)+"-"+dataStr.substring(4,6)+"-"+dataStr.substring(6,8)+" ";
    innerSet($('realstock-values-time'), dataStr + ' ' + timeStr, null);
    
    var stateInfo = "已退市";
    var currTime = dataObj['info']['timeInfo'][1];
    
    if(currTime < "093000" || currTime > "150000" || currTime > "113000" && currTime < "130000")
    {
        stateInfo = "交易结束";
    }
    else
    {
        stateInfo = "交易中...";
        if(openv.toFixed(3) == 0.000)
            stateInfo = "停牌";
    }
    innerSet($('realstock-values-state'), stateInfo, null);
    
    //上涨下跌平盘
    var nInc = dataObj['info']['instant'][7];
    var nEql = dataObj['info']['instant'][8];
    var nDec = dataObj['info']['instant'][9];
    
    innerSet($('realstock-indec-inc'), nInc.toString(), 1);
    innerSet($('realstock-indec-eql'), nEql.toString(), null);
    innerSet($('realstock-indec-dec'), nDec.toString(), -1);    
    
    //委买委卖
    buya =  dataObj['info']['instant'][10];
    sella =  dataObj['info']['instant'][11];
    innerSet($('realstock-analyst-sell'), sella.toFixed(0).toString(), -1);
    innerSet($('realstock-analyst-buy'), buya.toFixed(0).toString(), 1);
    
        
    var bsRate;
    if (buya + sella !== 0)
        bsRate = (buya - sella)/(buya + sella);
    else
        bsRate = 0;
    var bsDelta = buya - sella;
    var bsRateStr = (bsRate * 100).toFixed(2).toString() + '%';
    //委比
    innerSet($('realstock-analyst-rate'), bsRateStr, bsDelta);
    //委差
    innerSet($('realstock-analyst-delta'), bsDelta.toFixed(0).toString(), bsDelta);
    innerSet($('realstock-analyst-buysell'), bsDelta.toFixed(0)+"&nbsp;&nbsp;&nbsp;"+bsRateStr, bsDelta);

    if (dataObj['info']&&dataObj['info']['items']&&dataObj['info']['items'].length>2)
    {
        var tmpbsV;
              
        for( var i=0; i< dataObj['info']['items'][2].length; i++)
        {                    
            if( currItems.length == 10)
            {
                tmpbsV = currItems[0][1];
                currItems.remove(0);
            }
            currItems.push(dataObj['info']['items'][2][i]);
        }
            
        var tableStr = '<table cellpadding=0 cellspacing=0 class="cjl"><tr><td align="left">时间</td><td align="right">成交价</td><td>&nbsp;</td><td align="right">成交量(手)</td></tr>';
        for(i=currItems.length-1; i>= 0; i--)
        {
            var volColor = 'nocolor';
            var valColor = 'nocolor';
            
            if (currItems[i][3] == 'B' && dataObj['info']['index'] == false)
            {
                volColor = 'incolor';
            }
            if (currItems[i][3] == 'S' && dataObj['info']['index'] == false)
            {
                volColor = 'decolor';
            }
            
            if(currItems[i][1] > lastv)
                valColor = 'incolor';
                
            if(currItems[i][1] < lastv)
                valColor = 'decolor';
            
            if(i == 0)
                tableStr += '<tr><td align=\'left\' width=\'50px\'>' + timeStrGen(currItems[i][0]) + '</td>';
            else          
                tableStr += '<tr class=\'hasbtm\'><td align=\'left\' width=\'50px\'>' + timeStrGen(currItems[i][0]) + '</td>';
                
            tableStr += '<td align=\'right\' class=\'' + valColor + '\'>' + currItems[i][1].toFixed(nfix) + '</td>'
            if( i==0 && tmpbsV && currItems[i][1] > tmpbsV || i !=0 && currItems[i][1] > currItems[i-1][1])
                tableStr += '<td align=\'center\'><img src=\'agents/zhicheng/images/up1.gif\'/></td>';
            else if( i==0 && tmpbsV && currItems[i][1] < tmpbsV || i !=0 && currItems[i][1] < currItems[i-1][1])
                tableStr += '<td align=\'center\'><img src=\'agents/zhicheng/images/down1.gif\'/></td>';
            else
                tableStr += '<td align=\'center\'>&nbsp;&nbsp;</td>';
                
            tableStr += '<td align=\'right\' class=\'' + volColor + '\'>' + currItems[i][2] + '</td>';
            tableStr += '</tr>';
            
            //tableStr += '<td width=\'20%\' align=\'right\' class=\'' + color + '\'>' + tradeType + '</td></tr>';
            
        }
        tableStr +='</table>';
        innerSet($('realstock-trade-table'), tableStr, null);   

    }
}

function energeSet()
{
    if(avgVol == 0 || totalVol == 0)
        return;
    
    changeRate = (dataObj['info']['instant'][3]*100)/(totalVol*10000);
    
    var changeStr = (changeRate * 100).toFixed(2).toString() + '%';
    innerSet($('realstock-energe-change'), changeStr, 0);

    
    var ticks = dataObj['info']['start'] + dataObj['info']['history'].length -1;
    var rateStr;
    if(ticks == 0)
        rateStr = '--';
    else
        rateStr = ((dataObj['info']['instant'][3]*100)/(avgVol*ticks/240)).toFixed(2).toString();
    
    innerSet($('realstock-energe-rate'), rateStr, 0);
    
}

window.onload = start;



//2008/07/21 huangliang add 
function blinkCharacter(obj)
{	
	this.obj = obj;
	this.before = 0.00;
}

blinkCharacter.prototype._blink = function()
{
		if(this.timer)
			  window.clearTimeout(this.timer);
		if( this.times == 11)
		{
		    this.obj.style.color = this.color;
			  return;
		}
		
		if(this.times % 2 == 0)
		{
			  this.obj.style.color = this.color;
		}
		else
		{
			this.obj.style.color = "#000000";
		}
		
		this.times ++;
		this.timer = window.setTimeout(this._blink.bind(this) , 150);
}

blinkCharacter.prototype.blinks = function(cur, val)
{
	if(cur == this.before)
		return ;
	this.color = val > 0 ? "#FF0000" : (val == 0 ? "#000000" : "#00A000");
	this.times = -1;
	this._blink();
	this.before = cur;
}


function onIndChange(indKey)
{
    if(currentIndc == indKey)
    {
        return;
    }
    if(currentIndc != null)
    {
        znzK.indRemove(currentIndc);
    }
    currentIndc = indKey;
    if(!indKey)
    {
        return;
    }
    znzK.indAdd(indKey);
    
}

function onKTypeChange(ktype)
{
    if (currentTime != ktype){
        if (znzK){
            znzK.restart(ktype, stockCode, stockType, stockName);
            znzK.updateSpecial();
            currentTime = ktype;
        }
    }
}





