var req; 			// XML request opject
var t;				// timer Object
var updates=0;		// counter for updates
var running=true; 

function timer(time){
	if (running==true) {
		t=setTimeout("update()",time);
	}
}            
            
function loadXMLDoc(url) 
{
	req = false;
	
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest) {
		try { 
			req = new XMLHttpRequest();
		}catch(e){
			req = false;
		}
		// branch for IE/Windows ActiveX version
	} 
	
	else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){
				req = false;
			}
		}
   }
   	
	if(req) {
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send("");
	}
}   
         
function processReqChange() 
{
	// only if req shows "loaded"
	if (req.readyState == 4) 
	{
		// only if "OK"
		if (req.status == 200) 
		{
			updates++;
			var response  = req.responseXML.documentElement;
			var xml=req.responseXML;
			
			var nexttimer=xml.getElementsByTagName('update')[0].getAttribute("nextupdate");
			
			var lines=xml.getElementsByTagName('field');
			var count=0;
			for (var i = 0; i < lines.length; i++)
            {
                var xmlfield = xml.getElementsByTagName('field')[i];
                var key = xmlfield.getAttribute("key");
                var docfield = document.getElementById(key);
                if (docfield == null) {
                } else {
                    docfield.innerHTML = xmlfield.firstChild.nodeValue;
                    if (updates > 0) // avoid the "ALL IS RED!" effect
                    {
                        //new Effect.Highlight(docfield,{startcolor:'#FFAAAA'});
                        flashItem(docfield);
                    }else{
                        flashItem(docfield);
                    }
                }
                count++;
            }

			/* WIP
			var newslines=xml.getElementsByTagName('news');
			for (var i = 0; i < lines.length; i++)
			{
				var key=xml.getElementsByTagName('news')[i].getAttribute("key");
				var field = document.getElementById(key);
				var y=xml.getElementsByTagName('field')[i];
				field.innerHTML=y.firstChild.nodeValue;
				count++;
			}			
			*/
			
			// update debug tags (if available)
			var nup = document.getElementById("NUPDATE"); if (nup != null) { nup.firstChild.nodeValue=nexttimer; }			
			var nct = document.getElementById("NCOUNT");  if (nct!=null)   { nct.firstChild.nodeValue=count; }
			
			//call for next update
			timer(nexttimer);
		}
		else 
		{
                        //alert("There was following problem retrieving the XML data:\n" +req.statusText);
                        timer(30000); // wait 30sec and try again
		}
	}
}

function flashItem(item)
{
	if (item != null)
	{
		var oldColor=item.style.background;
		item.style.background="#fc3";				
		var t=setTimeout("unflashItem('"+item.id+"','"+oldColor+"')",500);
	}
}

function unflashItem(item,color)
{
	var it=document.getElementById(item);
	if (it != null)
	{
		it.style.background=color;				
	}
}


function pause()
{
	running=false;
}

function play()
{
	running=true;
	update();
}


function updatechart(chartid,src) 
{
   var nup = document.getElementById(chartid);
   nup.src=src;

}

function update(){
          loadXMLDoc("ajaxUpdate?id=DUPA&ts="+ new Date().getTime() +"");
      }

