var xmlDocMain;
var xmlDocRoll;
var xmlDocMsg;
var xmlDocHome;
var xmlDocTable;
var xmlDocBought;
var xmlDocSold;
var xmlDocDetails;
var xmlDocPings;
var xmlDocPingsUS;
var xmlDocMsgs;
var xmlDocStradeSum;


///////////////////////////////////* general part *///////////////////////////////////////
function GetXmlHttpObject(handler)
{ 
    var objXmlHttp = null;
    if (!window.XMLHttpRequest)
    {
        // Microsoft
        objXmlHttp = GetMSXmlHttp();
        if (objXmlHttp != null)
        {
            objXmlHttp.onreadystatechange = handler;            
        }
    } 
    else
    {
        // Mozilla | Netscape | Safari
        objXmlHttp = new XMLHttpRequest();
        if (objXmlHttp != null)
        {
            //objXmlHttp.onload = handler;
            //objXmlHttp.onerror = handler;
            objXmlHttp.onreadystatechange = handler;
        }
    } 
    return objXmlHttp; 
} 

function GetMSXmlHttp() {
    var xmlHttp = null;
    var clsids = ["Msxml2.XMLHTTP.6.0",
                  "Msxml2.XMLHTTP.4.0",
                  "Msxml2.XMLHTTP.3.0"];
    for(var i=0; i<clsids.length && xmlHttp == null; i++) {
        xmlHttp = CreateXmlHttp(clsids[i]);
    }
    
    return xmlHttp;
}

function CreateXmlHttp(clsid) {
    var xmlHttp = null;
    try {
        xmlHttp = new ActiveXObject(clsid);
        lastclsid = clsid;
        return xmlHttp;
    }
    catch(e) {}
}

function getInnerText (node) {
    if (node==null)
        return '';
    if (typeof node.textContent != 'undefined') {
        return node.textContent;
    }
    else if (typeof node.innerText != 'undefined') {
        return node.innerText;
    }
    else if (typeof node.text != 'undefined') {
        return node.text;
    }
    else {
        switch (node.nodeType) {
            case 3:
            case 4:
                return node.nodeValue;
                break;
            case 1:
            case 11:
                var innerText = '';
                for (var i = 0; i < node.childNodes.length; i++) {
                    innerText += getInnerText(node.childNodes[i]);
                }
                return innerText;
                break;
            default:
                return '';
        }
    }
}

function dynamiccontent(elementid,content){
    if (typeof window.Range != 'undefined' && typeof Range.prototype.createContextualFragment == 'function') 
    {
      document.getElementById(elementid).innerHTML=content;
      dynamiccontentNS6(elementid,content);
    }
    else
    {
      document.getElementById(elementid).innerHTML=content;
    }
}

function dynamiccontentNS6(elementid,content){

    if (document.getElementById && !document.all){
        rng = document.createRange();
        el = document.getElementById(elementid);
        rng.setStartBefore(el);
        htmlFrag = rng.createContextualFragment(content);
        while (el.hasChildNodes())
          el.removeChild(el.lastChild);
        el.appendChild(htmlFrag);
    }
}

function numberToCurrency(input)
{
	var num = input.replace(/\,/g,'');
	
	if(num.indexOf('.') > -1)
	{ 
		num = num.split('.');
		num[0] = num[0].toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'');
		input = num[0]+'.'+num[1];
	}
	else
    	input = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'');
	
	return input;
}

//show hide div by div name ////////////////////////////////////////////
function ShowHideDiv(divName)
{
	if (document.getElementById(divName).style.display=='none')
	{
		document.getElementById(divName).style.display='block';
	}
	else
	{
		document.getElementById(divName).style.display='none';
	}
}
//

function printStocks(url) 
{
	//alert(SID)
	javascript:client_window=window.open(url ,'client_window',' width=650,height=290,left=0, top=0, location=no, menubar=no, resizable=yes, scrollbars=yes');
	client_window.focus();
}

function openHelp(pageID) 
{
	//alert(SID)
	javascript:client_window=window.open('helpPage.aspx?pageID=' + pageID ,'client_window',' width=650,height=290,left=0, top=0, location=no, menubar=no, resizable=yes, scrollbars=yes');
	client_window.focus(); 
}

function openStock(SID,IID,stocksType) 
{
	//alert(SID)
	javascript:product_window=window.open('StockDetails.aspx?SID='+ SID +'&IID='+ IID + '&stocksType=' + document.getElementById("stocksType").value ,'stock_window','width=550,height=290');
	product_window.focus(); 
}

function openMsg(CmsgID) 
{
	//alert(CmsgID)
	javascript:client_window=window.open('CmsgDetails.aspx?CmsgID='+ CmsgID ,'client_window',' width=650,height=290,left=0, top=0, location=no, menubar=no, resizable=yes, scrollbars=yes');
	client_window.focus(); 
}

function getNumberString(base,current,distance)
{
	//alert("getNumberString");
	// return the distance between base and current for a stock as string
	if (base != "")
	{
		num = (current - base) / base;
		num = eval(num + "* 10000");
		num = Math.round(num) / 100;
		str = num+"%";
		
		if (num > 0 && num < distance)
			str = "<font class=positive1>" + str + "</font>";
		else if (num > 0)
			str = "<font class=positive2>" + str + "</font>";
		else if (num < 0 && num > (-1 * distance))
			str = "<font class=negetive1>" + str + "</font>";
		else if (num < 0)
			str = "<font class=negetive2>" + str + "</font>";
	}
	return str;
}

function getNumber(num,distance)
{
	//alert("getNumberString");
	// return the distance between base and current for a stock as string
	if (num != "")
	{
		//num = (current - base) / base;
		//num = eval(num + "* 10000");
		//num = Math.round(num) / 100;
		
		str = num+"%";
		if (num > 0 && num < distance)
			str = "<font class=positive1>" + str + "</font>";
		else if (num > 0)
			str = "<font class=positive2>" + str + "</font>";
		else if (num < 0 && num > (-1 * distance))
			str = "<font class=negetive1>" + str + "</font>";
		else if (num < 0)
			str = "<font class=negetive2>" + str + "</font>";
	}
	return str;
}
///////////////////////////////////* end general part *///////////////////////////////////////

///////////////////////////////////* stocksRoll part *///////////////////////////////////////

function setTickerRoll()
{
	xmlDocRoll = GetXmlHttpObject(waitForTickerRoll); 
    var d=new Date();	
	xmlDocRoll.open("GET",'getxml.aspx?pid=1&time='+d.getMilliseconds(),true);
	xmlDocRoll.send(null);
	
	// do it all every 3.5 minutes
	setTimeout('setTickerRoll()',210000);
}

function waitForTickerRoll()
{	
    if(xmlDocRoll.readyState==4 && 
       xmlDocRoll.responseText && 
       xmlDocRoll.status==200)
	{
	     // draw the data in the control
	     setTimeout('updateTickerRoll()',20);	
	}	
}

///////////////////////////////////* end stocksRoll part *///////////////////////////////////////

///////////////////////////////////* stocksMain part *///////////////////////////////////////

function setTickerMain()
{
	xmlDocMain = GetXmlHttpObject(waitForTickerMain); 
    var d=new Date();
    xmlDocMain.open("GET",'getStocksMain.aspx?time='+d.getMilliseconds(),true);
    xmlDocMain.send(null);
		
	// do it all every 3.5 minutes
	setTimeout('setTickerMain()',210000);
}

function waitForTickerMain()
{	
    if(xmlDocMain.readyState==4 && 
       xmlDocMain.responseText && 
       xmlDocMain.status==200)
	{
	     // draw the data in the control
	     setTimeout('updateTickerMain()',20);	
	}	
}

///////////////////////////////////* end stocksMain part *///////////////////////////////////////

///////////////////////////////////* stocksMsg part *///////////////////////////////////////

function setTickerMsg()
{
	xmlDocMsg = GetXmlHttpObject(waitForTickerMsg); 
    var d=new Date();
	xmlDocMsg.open("GET",'getMsgsCount.aspx?time='+d.getMilliseconds(),true);
    xmlDocMsg.send(null);	
		
	// do it all every 60 seconds
	setTimeout('setTickerMsg()',60000);
}

function waitForTickerMsg()
{	
    if(xmlDocMsg.readyState==4 && 
       xmlDocMsg.responseText && 
       xmlDocMsg.status==200)
	{
	     // draw the data in the control
	     setTimeout('updateTickerMsg()',20);	
	}	
}

///////////////////////////////////* end stocksMsg part *///////////////////////////////////////

///////////////////////////////////* stocksHome part *///////////////////////////////////////

function setTickerHome()
{
	xmlDocHome = GetXmlHttpObject(waitForTickerHome); 
    var d=new Date();
    xmlDocHome.open("GET",'getStocksHome.aspx?time='+d.getMilliseconds(),true);
    xmlDocHome.send(null);
		
	// do it all every 3.5 minutes
	setTimeout('setTickerHome()',210000);
}

function waitForTickerHome()
{	
    if(xmlDocHome.readyState==4 && 
       xmlDocHome.responseText && 
       xmlDocHome.status==200)
	{
	     // draw the data in the control
	     setTimeout('updateTickerHome()',20);	
	}		
}

///////////////////////////////////* end stocksHome part *///////////////////////////////////////

///////////////////////////////////* stocksTable part *///////////////////////////////////////

function setTickerTable(sortBy,updown)
{
	xmlDocTable = GetXmlHttpObject(waitForTickerTable); 
    	
	xmlDocTable.open("GET",'getStocksInvest.aspx?sortBy=' + document.getElementById("btnSortBy").value + '&updown=' + document.getElementById("btnUpDown").value + '&searchTxt=' + document.getElementById("sSearchTxt").value + '&stocksType=' + document.getElementById("stocksType").value + '',true);
	xmlDocTable.send(null);
	
	// do it all every 3.5 minutes
	setTimeout('setTickerTable()',210000);
}


function waitForTickerTable()
{	
    if(xmlDocTable.readyState==4 && 
       xmlDocTable.responseText && 
       xmlDocTable.status==200)
	{
	     // draw the data in the control
	     setTimeout('updateTickerTable()',20);	
	}
}

///////////////////////////////////* end stocksTable part *///////////////////////////////////////

///////////////////////////////////* stocksBought part *///////////////////////////////////////

function setTickerBought()
{
	xmlDocBought = GetXmlHttpObject(waitForTickerBought); 
        
    xmlDocBought.open("GET",'getStocksBought.aspx?sortBy=' + document.getElementById("btnSortBy").value + '&updown=' + document.getElementById("btnUpDown").value + '&searchTxt=' + document.getElementById("sSearchTxt").value + '&stocksType=' + document.getElementById("stocksType").value + '',true);
    xmlDocBought.send(null);
		
	// do it all every 3.5 minutes
	setTimeout('setTickerBought()',210000);
}


function waitForTickerBought()
{	
    if(xmlDocBought.readyState==4 && 
       xmlDocBought.responseText && 
       xmlDocBought.status==200)
	{
		// draw the data in the control
		setTimeout('updateTickerBought()',20)
	}
}

///////////////////////////////////* end stocksBought part *///////////////////////////////////////

///////////////////////////////////* stocksSold part *///////////////////////////////////////

function setTickerSold(all)
{


	xmlDocSold = GetXmlHttpObject(waitForTickerSold); 
        
    xmlDocSold.open("GET",'getStocksSold.aspx?sortBy=' + document.getElementById("btnSortBy").value + '&updown=' + document.getElementById("btnUpDown").value + '&searchTxt=' + document.getElementById("sSearchTxt").value + '&stocksType=' + document.getElementById("stocksType").value + '&all=' + all + '',true);
    xmlDocSold.send(null);
		
	// do it all every 3.5 minutes
	setTimeout('setTickerSold('+all+')',210000);
}

function waitForTickerSold()
{	
	if(xmlDocSold.readyState==4 && 
       xmlDocSold.responseText && 
       xmlDocSold.status==200) 
	{
		// draw the data in the control
		setTimeout('updateTickerSold()',20);
	}
}

///////////////////////////////////* end stocksSold part *///////////////////////////////////////


///////////////////////////////////* stockDetails part *///////////////////////////////////////

function setTickerDetails(SID,IID,stocksType)
{
	xmlDocDetails = GetXmlHttpObject(waitForTickerDetails); 
        
    xmlDocDetails.open("GET",'getStockDetails.aspx?SID='+ SID +'&IID='+ IID + '&stocksType=' + stocksType,true);
    xmlDocDetails.send(null);
	
	// do it all every 3.5 minutes
	setTimeout('setTickerDetails()',210000);
}

function waitForTickerDetails()
{	
	if(xmlDocDetails.readyState==4 && 
       xmlDocDetails.responseText && 
       xmlDocDetails.status==200)  
	{
		// draw the data in the control
		setTimeout('updateTickerDetails()',20);
	}
}

///////////////////////////////////* end stockDetails part *///////////////////////////////////////

///////////////////////////////////* pings part *///////////////////////////////////////

function setTickerPings()
{
	xmlDocPings = GetXmlHttpObject(waitForTickerPings); 
    var d=new Date();
    xmlDocPings.open("GET",'getPings.aspx?time='+d.getMilliseconds(),true);
    xmlDocPings.send(null);
	
	// do it all every 60 seconds
	setTimeout('setTickerPings()',60000);
}

function waitForTickerPings()
{	
	if(xmlDocPings.readyState==4 && 
       xmlDocPings.responseText && 
       xmlDocPings.status==200) 
	{
		// draw the data in the control
		setTimeout('updateTickerPings()',20);
	}
}

///////////////////////////////////* end pings part *///////////////////////////////////////

///////////////////////////////////* pings US part *///////////////////////////////////////

function setTickerPingsUS()
{
	xmlDocPingsUS = GetXmlHttpObject(waitForTickerPingsUS); 
    var d=new Date();    
    xmlDocPingsUS.open("GET",'getPingsUS.aspx?time='+d.getMilliseconds(),true);
    xmlDocPingsUS.send(null);
		
	// do it all every 60 seconds
	setTimeout('setTickerPingsUS()',60000);
}

function waitForTickerPingsUS()
{	
	if(xmlDocPingsUS.readyState==4 && 
       xmlDocPingsUS.responseText && 
       xmlDocPingsUS.status==200) 
	{
		// draw the data in the control
		setTimeout('updateTickerPingsUS()',20);
	}
}

///////////////////////////////////* end pings part *///////////////////////////////////////


///////////////////////////////////* stocksMsgs part *///////////////////////////////////////

function setTickerMsgs()
{
	xmlDocMsgs = GetXmlHttpObject(waitForTickerMsgs); 
    var d=new Date();
    xmlDocMsgs.open("GET",'getMsgsXml.aspx?time='+d.getMilliseconds(),true);
    xmlDocMsgs.send(null);
		
	// do it all every 60 seconds
	setTimeout('setTickerMsgs()',60000);
}

function waitForTickerMsgs()
{	
	if(xmlDocMsgs.readyState==4 && 
       xmlDocMsgs.responseText && 
       xmlDocMsgs.status==200) 
	{
		// draw the data in the control
		setTimeout('updateTickerMsgs()',20)
	}
}

///////////////////////////////////* end stocksMsgs part *///////////////////////////////////////

///////////////////////////////////* stocksStradeSum part *///////////////////////////////////////

function setTickerStradeSum()
{
	xmlDocStradeSum = GetXmlHttpObject(waitForTickerStradeSum); 
    var d=new Date();
    xmlDocStradeSum.open("GET",'getStrade.aspx?time='+d.getMilliseconds(),true);
    xmlDocStradeSum.send(null);
	
	// do it all every 3.5 minutes
	setTimeout('setTickerStradeSum()',210000);
}

function waitForTickerStradeSum()
{	
	if(xmlDocStradeSum.readyState==4 && 
       xmlDocStradeSum.responseText && 
       xmlDocStradeSum.status==200) 
	{
		// draw the data in the control
		setTimeout('updateTickerStradeSum()',20)
	}
}

///////////////////////////////////* end stocksStradeSum part *///////////////////////////////////////

// function CommaFormatted() 1433385 = 143,338,5

function commify(Num) {
    //var Num = document.form.input.value;
    var newNum = "";
    var newNum2 = "";
    var count = 0;
    
    //check for decimal number
    if (Num.indexOf('.') != -1){  //number ends with a decimal point
        if (Num.indexOf('.') == Num.length-1){
            Num += "00";
        }
        if (Num.indexOf('.') == Num.length-2){ //number ends with a single digit
            Num += "0";
        }
        
        var a = Num.split("."); 
        Num = a[0];   //the part we will commify
        var end = a[1] //the decimal place we will ignore and add back later
    }
    else {var end = "00";}  
 
    //this loop actually adds the commas   
    for (var k = Num.length-1; k >= 0; k--){
      var oneChar = Num.charAt(k);
      if (count == 3){
        newNum += ",";
        newNum += oneChar;
        count = 1;
        continue;
      }
      else {
        newNum += oneChar;
        count ++;
      }
   }  //but now the string is reversed!
   
  //re-reverse the string
  for (var k = newNum.length-1; k >= 0; k--){
      var oneChar = newNum.charAt(k);
      newNum2 += oneChar;
  }
  return newNum2
 }
// end of function CommaFormatted()
