﻿// JScript File
var xmlMarketData;
var interval;
var imagesUP = new Image;
var imagesDown = new Image;
var imagesNoDiff = new Image;
var MarketDepthWindows = new Array(5);

imagesUP.src = 'images/iUp.gif';
imagesDown.src = 'images/iDown.gif';
imagesNoDiff.src = 'images/iNon.gif';

function Start()
{
	interval = window.setInterval("tTimer()", MWRefreshTime);
    UpdateNews(document.getElementById('tblNews').selectNodes('//N'));
}	
function End()
{
    for(var i=0;i<5;i++)
	{
		if (MarketDepthWindows[i] != null)
		    if (!(MarketDepthWindows[i].closed))
				MarketDepthWindows[i].close();
	}
}
function tTimer()
{
	init();
}

function Stop()
{
    window.clearInterval (interval);
}

function init(){
	window.onerror = handleError
	var MDC = "";
    for(var i=0;i<5;i++)
	{
		if (MarketDepthWindows[i] != null)
		    if (!(MarketDepthWindows[i].closed))
				MDC += MarketDepthWindows[i].name + ",";
	}

    GetXML('Service/Process.aspx?Op=MD&MDC=' + MDC);
    setProccessingflagOn();

}

function onResult(){
    if (xmlMarketData.readyState==4)
        if (xmlMarketData.status == 200){
	        RefreshMW(xmlMarketData.responseText);
	        setProccessingflagOff();
        }
}
function RefreshMW(wsXML){
	var tObj = document.getElementById('myTable');
	var n = document.getElementById('tblCompaniesNew');
	var e = document.getElementById('tblCompanies');
	n.XMLDocument.loadXML(wsXML);
//----------------------------------  Companies ----------------------------------
	var eExists;
	var Fix;
	var nn = n.selectNodes("//C");
	var oldNodes = e.selectNodes("//C");
	var i;
	var j;
	var myTrend;
	var DoStylize = false;

if (nn.length)
{
		for(i=nn.length-1;i>=0;i--){
		if (e.selectSingleNode("//C[@S='" + nn[i].getAttribute("S") + "']") == null)
			n.documentElement.removeChild(nn[i]);
		}
		nn = n.selectNodes("//C");
		
	while(tObj.readyState != 'complete')
			window.status = window.status;
			
		for(i=0;i<oldNodes.length;i++) {
			if (e.selectSingleNode("//C[@S='"+ nn[i].getAttribute("S") +"']") != null)
			{
			    ee = e.selectSingleNode("//C[@S='" + nn[i].getAttribute("S") + "']");
				var Row = parseInt(ee.getAttribute("Row")) + 4;
				atts = nn[i].attributes;
				if (ee.attributes[18].value != atts[17].value){
					FixRow(tObj.rows[Row], atts[18].value); //18
				}
		
				for(j=2;j< atts.length;j++) {
					if(j<=17)
					    if (!DoStylize)
					        if (ee.attributes[j].value != atts[j].value)
						        DoStylize = true;
					ee.setAttribute(atts[j].name,atts[j].value);
				}
	            
		        Stylize(tObj.rows[Row], DoStylize);

		        DoStylize = false;
			}
		}
//----------------------------------  /Companies ----------------------------------
		    UpdateData('dsMSMSummary', n.selectNodes("//I"), "I");
		    UpdateData('dsGainers', n.selectNodes("//G"), "G");
		    UpdateData('dsLosers', n.selectNodes("//L"), "L");
		    UpdateData('dsByVolume', n.selectNodes("//V"), "V");
		    UpdateData('dsByValue', n.selectNodes("//U"), "U");
		    
            for(var i=0;i<5;i++)
	        {
		        if (MarketDepthWindows[i] != null)
		            if (!(MarketDepthWindows[i].closed))
				        MarketDepthWindows[i].UpdateData(n.selectNodes("//" + MarketDepthWindows[i].name + '/M'));
	        }


//	if (Sortobj)
//		DoSort(Sortobj, SortDir);
	return 0;
}
}

function setProccessingflagOn()
{
    proceessFlag = true;
}
function setProccessingflagOff()
{
    proceessFlag = false;
}

function FixRow(objRow, Trend)
{
	if (Trend == '+'){
			objRow.cells('TD').children(0).src = imagesUP.src;//'images/up.gif';
			objRow.cells('NC').className = 'MWD frGreen';
			objRow.cells('CP').className = 'MWD frGreen';
		}
	else if (Trend == '='){
			objRow.cells('TD').children(0).src = imagesNoDiff.src; //'images/nodiff.gif';
			objRow.cells('NC').className = 'MWD';
			objRow.cells('CP').className = 'MWD';
		}
	else{
			objRow.cells('TD').children(0).src = imagesDown.src; //'images/down.gif';
			objRow.cells('NC').className = 'MWD frRed';
			objRow.cells('CP').className = 'MWD frRed';
		}
} 
function FixRows(tObj)
{
	if (tObj.readyState == 'complete'){
		var x = document.getElementById(tObj.dataSrc.substr(1, tObj.dataSrc.length-1));
		var l = x.selectNodes("//C[not(@S='_NA_')]");
		for(var i=0; i<l.length; i++)
			if(tObj.rows[i+4]){
				tObj.rows[i+4].cells[0].setAttribute("Symbol", l[i].getAttribute('S'));
				FixRow(tObj.rows[i+4], l[i].getAttribute('TR'));
			}
	}
}

function Stylize(objRow, DoColor)
{
    if (DoColor)
        objRow.className +=  " Changed";
    else
        objRow.className = objRow.className.replace(/ Changed/g, '');
}

function handleError(){
window.status =event.result.errorDetail.string
//"Failed to start the real-time update component.  The page will not be updated."
return true
}
function GetXML(url){
	xmlMarketData=GetXmlHttpObject();
	if (xmlMarketData==null){
			return;
	}
		xmlMarketData.onreadystatechange=function(){onResult(1);};
		xmlMarketData.open("GET", url, true);
		xmlMarketData.send(null);
		return 0;
}
function GetXmlHttpObject(){
	var instance=null;
	try{		// Firefox, Opera 8.0+, Safari
	instance=new XMLHttpRequest();
	}
	catch (e){	// Internet Explorer
	try{
		instance=new ActiveXObject("Msxml2.XMLHTTP");
		}
	catch (e){
		instance=new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return instance;
} 

function UpdateNews(n){
	var myObj;
	var myMarquee = document.getElementById('mqNews');
	var myData = document.getElementById('tblNews');
	var Nodes = myData.selectNodes('//N');
	
	for (i=0;i<n.length;i++){
		myObj = document.getElementById('news_' + n[i].getAttribute("I"));
		var Node = myData.selectSingleNode("//N[@I='"+ n[i].getAttribute("I") +"']");
		if (! myObj){
			var newElem = document.createElement("SPAN");
			newElem.id = 'news_' + n[i].getAttribute("I");
			newElem.innerHTML = '<a href="../pages/default.aspx?c=127&nid=' + n[i].getAttribute("I") + '"><Span Class="large Bold ND">' + n[i].getAttribute("D") + ': </Span><Span Class="Medium C">' + n[i].getAttribute("S") + ': </Span><Span class="NT">' + n[i].getAttribute("T") + '</Span></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
			myMarquee.appendChild(newElem);

			if (! Node){
				Node = myData.createNode(1,"//N",""); 
				atts = n[i].attributes;
				for(j=0; j< atts.length; j++) 
					Node.setAttribute(atts[j].name,atts[j].value);
				myData.documentElement.appendChild(Node);
			}
		}
	}
}
function FlipNews(visible)
{
    var trHide = document.getElementById('trHide');
    var trShow = document.getElementById('trShow');
    if (visible)
        {
            trHide.className = "";
            trShow.className = "Hidden";
        }
    else
        {
            trShow.className = "";
            trHide.className = "Hidden";
        }
        
}
function ButtonHighlight(obj, Highlight)
{
    if (obj.className != "ButtonOn")
        if (Highlight)
                obj.className = "ButtonHighlight";
        else
                obj.className = "ButtonOff";
}

function ChangeClass(obj, className)
{
    obj.className = className;
}

function ButtonClicked(obj)
{
    obj.parentElement.parentElement.children[0].children[0].className = "ButtonOff";
    document.getElementById('div' + obj.parentElement.parentElement.children[0].children[0].id).className = "Hidden";
    obj.parentElement.parentElement.children[1].children[0].className = "ButtonOff";
    document.getElementById('div' + obj.parentElement.parentElement.children[1].children[0].id).className = "Hidden";
    obj.parentElement.parentElement.children[1].children[1].className = "ButtonOff";
    document.getElementById('div' + obj.parentElement.parentElement.children[1].children[1].id).className = "Hidden";
    obj.parentElement.parentElement.children[2].children[0].className = "ButtonOff";
    document.getElementById('div' + obj.parentElement.parentElement.children[2].children[0].id).className = "Hidden";
    obj.parentElement.parentElement.children[2].children[1].className = "ButtonOff";
    document.getElementById('div' + obj.parentElement.parentElement.children[2].children[1].id).className = "Hidden";
    
    obj.className = "ButtonOn";
    document.getElementById('div' + obj.id).className = "";
    
}

function UpdateData(objID, Nodes, Tag)
{
		var e = document.getElementById(objID);
		var oldNodes = e.selectNodes("//" + Tag);
		var i;
		var ee;
		for(i=0;i<oldNodes.length; i++)
		if (Nodes[i] == null)
			e.documentElement.removeChild(oldNodes[i]);
		
		for(i=0;i<Nodes.length; i++) {
			if (oldNodes[i] == null){
				ee = e.createNode(1, Tag,""); 
				atts = Nodes[i].attributes;
				for(j=0;j<atts.length; j++) 
					ee.setAttribute(atts[j].name,atts[j].value);
				e.documentElement.appendChild(ee);
			}
			else
			{
				atts = Nodes[i].attributes;
				for (var j=0;j<atts.length;j++) 
					oldNodes[i].setAttribute(atts[j].name,atts[j].value);
			}
		}
}

// Menu
function ShowMenu(Header)
{
	CancelHideMenu();
	
	var position;
	
	if(document.dir == "rtl")
		position = 200;
	else
	    position = 0;
	    
	var dvMenu = document.getElementById("dvMenu");
	dvMenu.style.top = (document.all? window.event.clientY + document.body.scrollTop - 10 : Event.pageY - 15) + "px";
	dvMenu.style.left = (document.all? window.event.clientX + document.body.scrollLeft - position : Event.pageX - position) +"px";
	dvMenu.style.display = "block";
	dvMenu.children[0].children[0].children[0].children[0].children[0].innerText = ' - ' + Header;
	dvMenu.children[0].children[0].children[1].onclick = function(){ShowMarketDepth(Header);}
}

var menuTimerID;
function HideMenu(){
	menuTimerID = setTimeout("DoHideMenu();", 500);
}
function DoHideMenu(){
	var dvMenu = document.getElementById('dvMenu');
	dvMenu.style.display = "none";
	dvMenu.style.top = "0px";
	dvMenu.style.left = "-200px";
}
function CancelHideMenu(){
	if (menuTimerID > 0){
		clearTimeout(menuTimerID);
		menuTimerID = -1;
		}
}
// End of Menu

function ShowMarketDepth(Symbol)
{
    var i;
    for(i=0;i<5;i++)
	    if (MarketDepthWindows[i] != null)
	    {
	        if (MarketDepthWindows[i].closed)
				break;
			else
			    if (MarketDepthWindows[i].name == Symbol)
			    {
			        MarketDepthWindows[i].focus();
			        i=10;
			    }
		}
		else
			break;
    if (i<5)
        MarketDepthWindows[i] = window.open('MarketDepth.aspx?Symbol=' + Symbol, Symbol, "resizable=no,status=no,height=250px,width=450px,scrollbars=no, location=no, menubar=no");
    else
        if (i==5)
            alert(strMoreThan5Companies);
}
