//window.setInterval(DelayedUpdate, 10000);
//window.setInterval(GetTimeAndStatus, 60000);

function ShowHideSumm()
{
    oTrSumm = document.getElementById("trSumm");
    oHideLink = document.getElementById("hideLink");    
    oShowLink = document.getElementById("showLink");
    ShowHideObj(oTrSumm);        
    ShowHideObj(oHideLink);
    ShowHideObj(oShowLink);
}

var arrMapping = new Array();
arrMapping["ASKVOLUME"] = 0;
arrMapping["ASKPRICE"] = 1;
arrMapping["BIDPRICE"] = 2;
arrMapping["BIDVOLUME"] = 3;
arrMapping["VOLUME"] = 4;
arrMapping["TOTALVALUE"] = 5;
arrMapping["TRADES"] = 6;
arrMapping["HIGHPRICE"] = 7;
arrMapping["LOWPRICE"] = 8;
arrMapping["AVGPRICE"] = 9;
arrMapping["LASTTRADEPRICE"] = 10;
arrMapping["PREVCLOSE"] = 11;
arrMapping["OPENPRICE"] = 12;
arrMapping["HIGH52"] = 13;
arrMapping["LOW52"] = 14;
arrMapping["CHANGE"] = 15;
arrMapping["PERCENTCHANGE"] = 16;
arrMapping["LASTTRADETIME"] = 17;
arrMapping["SECTORID"] = 18;


var currTimeStamp = null;
var refreshRate = 10000;
var cTS = null; 
function UpdateData(arrData,ts)
{
    if(cTS == null)
     cTS = new Date(currTimeStamp);
    	if(window.location.toString().indexOf("adsm.ae") > 0 || window.location.toString().indexOf("adsm.co.ae") > 0)
		{window.location = "../../RedirectToADX.aspx";}
    for(comp in arrData)
	{
		ltd = arrData[comp][arrMapping["LASTTRADETIME"]];
		sect = arrData[comp][arrMapping["SECTORID"]];
		if(hiddenSectors.indexOf(sect+",") < 0)
		{						
		   // if((cTS - ltd) <= refreshRate)
		   // {		
		        UpdateRow(arrData[comp],comp);
		    //}
		} 		
	}
	
	CleanPrevious(); 
	cTS = ts; 
}

function UpdateRow(arrRow,symbol)
{
            window.status = "Updating " + symbol;
            var sectorID = arrRow[arrMapping["SECTORID"]]; 
            
            UpdateColValue(arrRow[arrMapping["ASKVOLUME"]], "ASKVOLUME",symbol, sectorID);      
                             
            
            //UpdateColValue(arrRow[arrMapping["ASKPRICE"]], "ASKPRICE",symbol, sectorID);
            //UpdateColValue(arrRow[arrMapping["BIDPRICE"]], "BIDPRICE",symbol, sectorID);
                         
            UpdateColValue(parseFloat(arrRow[arrMapping["ASKPRICE"]]).toFixed(2), "ASKPRICE",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["BIDPRICE"]]).toFixed(2), "BIDPRICE",symbol, sectorID);
            
            
            UpdateColValue(arrRow[arrMapping["BIDVOLUME"]], "BIDVOLUME",symbol, sectorID);
            UpdateColValue(arrRow[arrMapping["VOLUME"]], "VOLUME",symbol, sectorID);
            UpdateColValue(arrRow[arrMapping["TOTALVALUE"]], "TOTALVALUE",symbol, sectorID);
            UpdateColValue(arrRow[arrMapping["TRADES"]], "TRADES",symbol, sectorID);
            
            UpdateColValue(parseFloat(arrRow[arrMapping["HIGHPRICE"]]).toFixed(2), "HIGHPRICE",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["LOWPRICE"]]).toFixed(2), "LOWPRICE",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["AVGPRICE"]]).toFixed(2), "AVGPRICE",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["LASTTRADEPRICE"]]).toFixed(2), "LASTTRADEPRICE",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["PREVCLOSE"]]).toFixed(2), "PREVCLOSE",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["OPENPRICE"]]).toFixed(2), "OPENPRICE",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["HIGH52"]]).toFixed(2), "HIGH52",symbol, sectorID);
            UpdateColValue(parseFloat(arrRow[arrMapping["LOW52"]]).toFixed(2), "LOW52",symbol, sectorID);
            UpdateChange(parseFloat(arrRow[arrMapping["CHANGE"]]).toFixed(2), symbol, "CHANGE");
            UpdateChange(parseFloat(arrRow[arrMapping["PERCENTCHANGE"]]).toFixed(2), symbol, "PERCENTCHANGE");
            UpdateTime(arrRow[arrMapping["LASTTRADETIME"]], symbol, "LASTTRADETIME");
            UpdateImage(parseFloat(arrRow[arrMapping["CHANGE"]]).toFixed(2), symbol); 
}

function ShowHideObj(elm)
{
    if(elm.style.display == "" || elm.style.display == "block")
    {
        elm.style.display = "none";
    }
    else
    {
        elm.style.display = "";
    }
}

function ShowHideCat(elmID,secID)
{              
    var subFound = true;
    var i = 0;
    var isVisible = false;
    while(subFound && i < 200)        
    {
        var subElm = document.getElementById(elmID+""+i);            
        i++;                        
        if(subElm != null)
        {                
            isVisible = ShowHide(subElm);
        }
        else
            subFound = false;
    }
    
    UpdateHiddenSectors(secID,isVisible);      
}

var hiddenSectors = new String(); 

function ShowHide(elm)
{
    if(elm.className == "vis rE")
    {
        elm.className = "hid rE"; 
        return false;
    }
    else if(elm.className == "vis rO")
    {
        elm.className = "hid rO"; 
        return false;
    }
    else if(elm.className == "hid rE")
    {
        elm.className = "vis rE"; 
        return true;
    }
    else if(elm.className == "hid rO")
    {
         elm.className = "vis rO"; 
         return true;
    }
}


function UpdateHiddenSectors(secID,vis)
{
    if(vis)
    {
        hiddenSectors = hiddenSectors.replace(secID+",","");
    }
    else
    {
        hiddenSectors+= secID+","
    }       
}

var debtInstrumentsSectorID;

//market watch scripts
function DelayedUpdate()
{   
    if(marketStatusIsPreOpenVar == "1" || marketStatusIsOpenVar == "1")
    {
        debtInstrumentsSectorID = document.getElementById(debtInstrSectorIDClientID);
        // Get JSON data from web service 
        MarketWatchLiteWS.GetData(hiddenSectors.toString(),currTimeStamp, OnUpdateComplete, OnError, null);
    }
}

var arr = new Array();
var firstRun = true;             
var dataResult = null; 




function CleanPrevious()
{ 
  var arrPrevUpd = prevUpdatedCells.split(",");
  for(i=0;i<arrPrevUpd.length;i++)
  {
    cellObj = document.getElementById(arrPrevUpd[i]);
    if(cellObj)
    {
        cellObj.className = "un";
    }
  }
                                
  prevUpdatedCells = updatedCells;
  updatedCells = "";
}

var rootImgURL = "/Style%20Library/ADSM_Images/";

function UpdateImage(changeValue, symbol)
{
    var cellID = "MW_" + symbol + "_IMG";
    var clsName = "";
    var cellObj = document.getElementById(cellID);     
    
    if(cellObj != null)
    {
        if(changeValue == 0)
            clsName = "uni";
        else if (changeValue > 0)
            clsName = "upi"; 
        else
            clsName = "dni"; 
            
            
        if(clsName == "upi")
        {
            cellObj.src = rootImgURL+"MW_up_green.gif";
        }
        else if(clsName == "dni")
        {
            cellObj.src = rootImgURL+"MW_up_red.gif";
        }
        else
        {
            cellObj.src = rootImgURL+"MW_up_un.gif";
        }
    }
}

function UpdateChange(cellValue, symbol, columnName)
{   
            
    var colAbr = "CH"; 
    if(columnName == "PERCENTCHANGE")
        colAbr = "CHP"; 
        
    var cellID = "MW_" + symbol + "_" +colAbr;        
    var clsName = "";    
          
                
    var cellObj = document.getElementById(cellID);
    
    if(cellObj)          
    {   
        var tmpCurrVal = new String(cellObj.innerHTML);
        tmpCurrVal2 = tmpCurrVal.replace(/,/g,"");
        currVal = parseFloat(tmpCurrVal2); 

        if(cellValue == currVal)
        {
            return;           
        }
        else
        {   
            if(cellValue > 0)
            {
                clsName = "txtgreen";
            }
            else
            {
                if(cellValue < 0)
                    {
                        clsName = "txtred";
                    }
                else
                    {
                        clsName = "txtblack";
                    }
            }
            /*if(cellValue > currVal)
            {
                clsName = "txtgreen";
            }
            else
            {
                clsName = "txtred";
            }*/
            
            cellObj.innerHTML = commaSplitDecimalNumber(cellValue);
            if(cellObj.className != clsName)
            {
               cellObj.className = clsName;
            } 
        }
               
    }       
}

function UpdateTime(cellValue, symbol, columnName)
{
    var cellID = "MW_" + symbol + columnName;    
    var cellObj = document.getElementById(cellID);
    if(cellObj)          
    {   
        var tmpCurrVal = cellObj.innerHTML
        var newDT = formatDate(cellValue,'d/M/yyyy h:mm:ss a');
        
        if(tmpCurrVal != newDT)
        {
           
            cellObj.innerHTML = newDT;            
            cellObj.className = "txtgreen";
            updatedCells += cellID + ","                                    
            prevUpdatedCells = prevUpdatedCells.replace(cellID + ",","");         
        }
    }
}

//TODO: 
//hiddenDebtInstrumentsSectorID = 22; 

var updatedCells = new String();    
var prevUpdatedCells = new String();
function UpdateColValue(cellValue, col, symbol, sectorID)
{          
        var renderCol = true;                                      
                                  
        var cellID = "MW_" + symbol + col;                                                                   
        var cellObj = document.getElementById(cellID);
        
             
         
        if(cellObj != null)          
        {   
            var tmpCurrVal = new String(cellObj.innerHTML);
            tmpCurrVal2 = tmpCurrVal.replace(/,/g,"");
            currVal = parseFloat(tmpCurrVal2); 
            
            //dubug             
            //currVal = cellValue;
            if(cellValue == currVal)
            {
                return;           
            }
            else
            {   
                if(cellValue > currVal)
                {
                    clsName = "up";
                }
                else
                {
                    clsName = "dn";
                }
                   
                if(sectorID == debtInstrumentsSectorID && document.getElementById("%").value.toString().match(col))
                {
                    cellObj.innerHTML = commaSplitNumber(cellValue) + '%';
                }
                else
                {
                    cellObj.innerHTML = commaSplitNumber(cellValue);
                }
            
                if(cellObj.className != clsName)
                {
                    cellObj.className = clsName;                                        
                }
                
                updatedCells += cellID + ","                                    
                prevUpdatedCells = prevUpdatedCells.replace(cellID + ",","");                 
            }
        }            
}

function commaSplitNumber(srcNumber) 
{
	var txtNumber = '' + srcNumber;
	if (isNaN(txtNumber) || txtNumber == "") 
	{
	    return srcNumber;
	}
	else 
	{
	    var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
	    var arrNumber = txtNumber.split('.');
	    arrNumber[0] += '.';
	    do 
	    {
	        arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
	    } 
	    while (rxSplit.test(arrNumber[0]));
	    if (arrNumber.length > 1) 
	    {
	        return arrNumber.join('');
	    }
	    else 
	    {
	        return arrNumber[0].split('.')[0];
		}
	}
}

function commaSplitDecimalNumber(amount)
{
    var i = parseFloat(amount);
    if(isNaN(i)) { i = 0.00; }
    var minus = '';
    if(i < 0) { minus = '-'; }
    i = Math.abs(i);
    i = parseInt((i + .005) * 100);
    i = i / 100;
    s = new String(i);
    if(s.indexOf('.') < 0) { s += '.00'; }
    if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
    s = minus + s;
    return s;
}

function OnError(result)
{
    //alert("Error: " + result.get_message());
}



function OpenCDet(language, symbolToOpen)
{
    var uniqueDate = new Date();
    window.open('/' + language + '/MarketWatchCustomization/Pages/MWCompanyDetails.aspx?Symbol=' + symbolToOpen + '&cacheBuster=' + uniqueDate,symbolToOpen,'height=350,width=875,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes');
}

function OpenInsiderTrades()
{
    var uniqueDate = new Date();
    window.open('../../MarketWatchCustomization/Pages/InsiderTrades.aspx','asas','height=300,width=700,toolbar=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes');
}

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}


function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}

