// Globals
var znzIdx = null;
var znzDS = null;
var znzAD1 = null;
var znzAD2 = null;
var znzAD3 = null;
var znzAD4 = null;
var znzAD5 = null;
var znzAD6 = null;
var znzMystocks = null;

var tbHeight = getBrowser() == "MSIE" ? 26 : 27;
znzMyStock.prototype._set = function(rep)
{
    var ret = rep || "[]";  
    this.mRetObj = ret.parseJSON();
    var tradeMarkets = {'sh': "上海证券交易所", 'sz':"深圳证券交易所"};
    this.mStockData = [];
    for(var i = 0; i < this.mystock.length; i++)
    {
        var row = [this.mystock[i], this.stocknames[this.mystock[i]], this.mystock[i].substr(2)];
        row.push(tradeMarkets[this.mystock[i].substr(0, 2)]);
        var curValue;
        var curRate;
        var yesValue;
        var diff = 0.00;
        var amount = 0.00;
        if(this.mRetObj[this.mystock[i]])
        {   
            var oneStockData = this.mRetObj[this.mystock[i]]; 

            if (oneStockData[2] == 0)
            {
                curValue = 0;       
                curRate = 0;                
            }
            else
            {
                curValue = oneStockData[2];
                diff = oneStockData[2] - oneStockData[1];
                if(oneStockData[1] != 0)
                    curRate = diff * 100 / oneStockData[1];
                else
                    curRate = 0.00;

            }
            yesValue = oneStockData[1];
            amount = oneStockData[3];
            //amount = number_format(amount, nfix);
            //diff = diff.toFixed(nfix);
            row.push(curValue);
            row.push(yesValue);
            row.push(diff);
            row.push(curRate);
            row.push(amount);
        }
        else
        {
            row.push(0);
            row.push(0);
            row.push(0);
            row.push(0);
            row.push(0);
        }
        this.mStockData.push(row);
    }    
    this._setTable();
}

znzMyStock.prototype._setTable = function()
{
    var tradeMarkets = {'sh': "沪&nbsp;&nbsp;市", 'sz':"深&nbsp;&nbsp;市"};
    var colHead = [ '股票名称', '股票代码', '市场类型', '最新价', '昨&nbsp;&nbsp;收', '涨跌额', '涨跌幅', '成交额(万元)'];
    var widths = [90, 90, 80, 90, 90, 90, 90, 100];
    var i = 0;
    var preState = [];
    var htmlStrs = [];
    htmlStrs.push('<table cellspacing="1" cellpadding="1">\n<tr class=\'\'><th width="30px">&nbsp;</th>')
    htmlStrs.push('<th width="40px" class="table-center">序&nbsp;号</th>');
    for(i = 0; i < colHead.length; i ++)
    {
        var arrow = '';
        if( (1 + i) == this.mCurSortedCol)
        {
            if(this.mUp)
                arrow = '↑';
            else
                arrow = '↓';
        }
        htmlStrs.push("<th width='" + widths[i] + "'  class='table-center'><a href='?' style='color:#0000EE' onclick='" + this.mVarName + ".sort(" + (i + 1) + "); return false'>" + colHead[i] + arrow + "</a></th>");
    }
    
    htmlStrs.push('<th width="100px" class=\'table-center\'>操&nbsp;作</th></tr>\n');
    for(i = 0; i < this.mystock.length; i++)
    {
        var disableUp = '';
        var disableDown = '';        
        var checkStr = '';
        
        if(this.mSelStates.hasOwnProperty(this.mystock[i]) && this.mSelStates[this.mystock[i]])
        {
            checkStr = 'checked';
        }
        
        if(i == 0)
            disableUp = 'style="visibility:hidden;"';
        if (i == this.mystock.length -1)
        {
            disableDown = 'style="visibility:hidden;"';
        }   
        var color = 'nocolor';
        var nfix = 2;
        var curValue ;
        var curRate;
        var yesValue;
        var diff = 0.00;
        var amount = 0.00;
        
        if(this.mRetObj[this.mystock[i]])
        {   
            var oneStockData = this.mRetObj[this.mystock[i]];     
            if (oneStockData[0] == 1)
                nfix = 3;
               
            if(oneStockData[2] > oneStockData[1])
                color = 'incolor';
            if(oneStockData[2] < oneStockData[1])
                color = 'decolor';           

            if (oneStockData[2] == 0)
            {
                curValue = '--';       
                curRate = '--%';
                color = 'nocolor';                
            }
            else
            {
                curValue = oneStockData[2].toFixed(nfix).toString();
                diff = oneStockData[2] - oneStockData[1];
                if(oneStockData[1] != 0)
                    curRate = (diff * 100 / oneStockData[1]).toFixed(nfix).toString() + '%';
                else
                    curRate = "0.00%";
                if (diff > 0)
                    curRate = "+" + curRate;
            }
            
            yesValue = oneStockData[1].toFixed(nfix);
            amount = oneStockData[3];
            amount = number_format(amount, nfix);
            diff = diff.toFixed(nfix);
        }
        else
        {
            curValue = '--'; 
            curRate = '--%';
            color = 'nocolor';
            diff = '--';
            yesValue = '--';
            amount = '--';
        }
        
        htmlStrs.push('<tr class=\'\'>');
        htmlStrs.push('<td class="table-center" style="padding-left:0px"><input name="list" ' + checkStr + ' onclick="' + this.mVarName+ '.stateSet(\'' + this.mystock[i].toLowerCase() + '\', this.checked)" type="checkbox" value="' + this.mystock[i] + '"/></td>');
        htmlStrs.push('<td class="table-center">' + (i + 1) + '</td>');
        htmlStrs.push('<td class=\'table-center\' ><a class="stockname" onmouseout="' + this.mVarName+ '.mouseOut()" onmouseover="' + this.mVarName+ '.showSwf(\'' + this.mystock[i] + '\', false, ' + tbHeight + ')" href=\'./realstock.php?code=' + this.mystock[i].toLowerCase() + '\' >' + this.stocknames[this.mystock[i]] + '</a></td>');
        htmlStrs.push('<td class=\'table-center\'><a href=\'./realstock.php?code=' + this.mystock[i].toLowerCase() + '\' >' + this.mystock[i].substr(2) + '</a></td>');
        htmlStrs.push('<td class = \'table-center\'>' + tradeMarkets[this.mystock[i].substr(0, 2)] + '</td>'); 
        htmlStrs.push('<td class = \'' + color + ' table-right\'>' + curValue + '&nbsp;</td>'); 
        htmlStrs.push('<td class = \'' + color + ' table-right\'>' + yesValue + '&nbsp;</td>');
        htmlStrs.push('<td class = \'' + color + ' table-right\'>' + diff + '&nbsp;</td>');                 
        htmlStrs.push('<td class = \'' + color + ' table-right\'>' + curRate  + '&nbsp;</td>');
        htmlStrs.push('<td class = \'table-right\'>' + amount  + '&nbsp;</td>');
        htmlStrs.push('<td class = \'table-center\'><div style="float:left; margin-left:10px;"><a ' + disableUp + ' href="javascript:" class="delx" title="上移"  onclick="' + this.mVarName + '.up(\'' + this.mystock[i].toLowerCase() + '\', 1)" /><img  src="./images/mystockup.gif"/></a></div><div style="float:left;margin-left:10px;"><a href="javascript:" title="下移" class="delx" ' + disableDown + ' onclick="' + this.mVarName + '.down(\'' + this.mystock[i].toLowerCase() + '\', 1)" /><img src="./images/mystockdown.gif"/></a></div><div style="float:left;margin-left:10px;"><a style="text-decoration:none;" class="delx" title="删除" href="javascript:" onclick="' + this.mVarName + '.delStock(\'' + this.mystock[i].toLowerCase() + '\'); return false" />X</a></div></td>');
        htmlStrs.push('</tr>\n');
        
    }    
    
    htmlStrs.push('</table>');
    var div = htmlStrs.join('');
    
    if (this.running)
        innerSet($(this.divID), div, null);
}
  
function start()
{
    znzIdx = new znzIdxSummary('stock-index-all', 10 * 1000, idxsumry_data);
    znzMystocks =  new  znzMyStock('stock-mystock-table-content', 10 * 1000, 'znzMystocks');
    var sugquery = new suggestQuery('add-stock', 'mystock-query-select', 'mystock-query-code', 'mystock-query-form', null, null, sugsel, false);
    var sugReal = new suggestQuery('realstock-query-query', 'realstock-query-select', 'realstock-query-code', 'realstock-query-form', null, null, null, true);
    //special
    eventInit();
    
    var inittime = new Date().getTime();   
}

function sugsel(stockCode, stockName)
{
    if(znzMystocks.addStock(stockCode.toLowerCase(), stockName))
    {        
        alert(stockName + "(" + stockCode.substr(2) + ")已添加到您的自选股列表中");
    }
}

function eventInit()
{
    $('add-stock').onfocus = function(){
        if(this.value == '代码/名称/拼音')
        {
            this.value = '';
        }
    }
    $('add-stock').onblur = function()
    {
        if(this.value == '')
        {
            this.value = '代码/名称/拼音';
        }
    }
}

var tips = ['目前自选股基于Cookies实现，请您不要轻易删除浏览器中的Cookies，谢谢合作^_^!','将鼠标移动到所添加的具体股票名称上面，可以看到该股今天的分时走势图.', '点击表头的“最新价”“涨跌幅”“涨跌额 ”等，可进行排序，点一次升序两次降序.', '点击<img  src="./images/mystockup.gif"/>和<img src="./images/mystockdown.gif" />箭头可以调整自选股位置.'];
var tipIndex = 0;
function preTip()
{
    tipIndex --;
    tipIndex += tips.length;
    tipIndex %= tips.length;
    $('help-tip-show').innerHTML = tips[tipIndex];
}

function nextTip()
{
    tipIndex ++;
    tipIndex %= tips.length;
    $('help-tip-show').innerHTML = tips[tipIndex]; 
}

// -1 anti select 0 reset 1 select all
function selAll(state)
{
    var selectList;
    
    if(typeof document.forms.mystockform.list != 'undefined')
        selectList = document.forms.mystockform.list;
    else
        return false;
    
    if( typeof selectList == 'undefined')
        return false;
    
    var len = 1;
    if( selectList.length)
    {
        len = selectList.length;
    }
    else
    {
        selectList = [selectList];
    }

    var currState = {};
    var i = 0;
    for(i = 0; i < len; i ++)
    {
        if(state == 1)
        {
            selectList[i].checked = true;
        }
        else if(state == 0)
        {
            selectList[i].checked = false; 
        }
        else
        {
            selectList[i].checked = ! selectList[i].checked; 
        }
        currState[selectList[i].value] = selectList[i].checked;
    }
    znzMystocks.selStateSet(currState);
    return false;
}

function myStockDel()
{
   var selectList;
    if(typeof document.forms.mystockform.list != 'undefined')
        selectList = document.forms.mystockform.list;
    else
        return false;
        
   if( typeof selectList == 'undefined')
        return false; 
    
    var len = 1;
    if( selectList.length)
    {
        len = selectList.length;
    }
    else
    {
        selectList = [selectList];
    }
    var i = 0;
    var delList = [];
    for(i = 0; i < len; i ++)
    {
        if(selectList[i].checked)
            delList.push(selectList[i].value);
    }

    if(delList.length > 0)
    {
        if(confirm("您确认要从自选股中删除这些股票吗？"))
        {
            znzMystocks.delStocks(delList);
        }
    }
    else
    {
        alert("请您选择要删除的股票!^_^");
    }
    return false;
}

function queryBack(reStr)
{
    
    if(reStr)
    {          
        var queryList = reStr.split("%3B");
        if(queryList.length > 2)
        {
            var stockCode = queryList[1].toLowerCase() + queryList[0];
            var stockName = decodeURIComponent(queryList[2]);
            var suc = znzMystocks.addStock(stockCode, stockName)
            if(suc == true);
            {
                alert(stockName+"(" + stockCode.substr(2) + ")已经添加到您的自选股中");
            }
        }
        else
        {
            alert("没有相应的股票存在!");
        }
    }
    else
    {
        alert("没有相应的股票存在!");
    }
    $('add-stock').value = '';
    $('mystock-query-select').innerHTML = '';
}

function addStock()
{   
    
    var query = $('mystock-query-code').value.substr(2) || $('add-stock').value;
    if(query == "" || query == "股票代码/名称/拼音")
    {
        alert("请输入股票代码/名称/拼音");
        return;
    }
    var requestUrl = 'http://' + WEB_SERVER + '/pyui/suggestion.py/handler?query=' + query;
    var args = {
        method : 'post',
        onComplete : queryBack
    }
    var ajaj = new Ajaj(requestUrl, args);
    return false;
}
window.onload = start;