//------------------------------------------------------------------------------
var xmlJobs = new Array();
var xmlInProcess = null;

//------------------------------------------------------------------------------
function getXML(url, callback)
{
    var job = new Object();
    job.url = url;
    job.callback = callback;
    xmlJobs.push(job);
}

//------------------------------------------------------------------------------
function updateXML()
{
	if(xmlInProcess)
		return;
	
	var job = xmlJobs.shift();
	if(job)
	{
		var http_request = false;
		
		if(window.XMLHttpRequest)
		{ // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType)
				http_request.overrideMimeType('text/xml');
		}
		else if(window.ActiveXObject)
		{ // IE
			try
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					http_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e)
				{
				}
			}
		}
	
		if(!http_request)
			return;
		
		xmlInProcess = new Object();
		xmlInProcess.job = job;
		xmlInProcess.http_request = http_request;
	
		http_request.onreadystatechange = handleXML;
		http_request.open('GET', job.url, true);
		http_request.send(null);
//		debugDiv2.innerHTML += 'send xml<br>';
	}
}

//------------------------------------------------------------------------------
function handleXML()
{
    if(!xmlInProcess)
    	return;
    
    if(xmlInProcess.http_request.readyState == 4)
    {
//		debugDiv2.innerHTML += 'receive xml<br>';
		
		if(xmlInProcess.job.callback)
			xmlInProcess.job.callback(xmlInProcess.http_request);
    
	    xmlInProcess = null;
    }
}

//------------------------------------------------------------------------------
function xmlGetData(node, name)
{
	var node = xmlGetNode(node, name);
	if(node && node.firstChild)
		return node.firstChild.data;
	
	return null;
}

//------------------------------------------------------------------------------
function xmlGetNode(node, name)
{
	var nodes = node.getElementsByTagName(name);
	return nodes.item(0);
}

