function makeAjaxRequest(url,callback,bAsynchronous)
{
    bAsynchronous = typeof(bAsynchronous) != 'undefined' ? ((bAsynchronous == false)?false:true) : true;
    //alert('yes');
	if (window.XMLHttpRequest)
	{
		var http_request = new XMLHttpRequest();
		//http_request = null;
	}
	else
	{
		if (window.ActiveXObject)
		{
			var http_request = new ActiveXObject("Microsoft.XMLHTTP");
			//http_request = null;
		}
	}
	http_request.onreadystatechange = function()
	{
		if (http_request.readyState == 4)
		{
			if (http_request.responseXML != null)
			{ 
			    var sFunc;
				sFunc= callback.replace("XML_OBJECT","http_request.responseXML");
				//alert(sFunc);
				eval(sFunc);
			}
		}
	}
	var timestamp = new Date();
    var uniqueURL = url+ (url.indexOf("?") > 0 ? "&" : "?") + "timestamp="+ timestamp.getTime();

	http_request.open("GET",uniqueURL,bAsynchronous);
	http_request.send("");
}

function getNode(obj,pos)
{
	if (window.XMLHttpRequest)
		return obj[pos];
	else
		return obj.item(pos);
}

function getSingleNode(obj,tagName)
{
	if (window.XMLHttpRequest)
	{
	    if (getRawNode(obj,tagName).selectSingleNode("text()")!=null)
		    return getRawNode(obj,tagName).selectSingleNode("text()").nodeValue;
		else
		    return null;
	}
	else
	    if (getRawNode(obj,tagName)!=null)
		    return getRawNode(obj,tagName).text;
	    else
	        return null;
}

function getRawNode(obj,tagName)
{
	return obj.selectSingleNode(tagName);
}

function getAttribute(obj,attName)
{
	if (window.XMLHttpRequest)
		return obj.selectSingleNode("@" + attName).nodeValue;
	else
		return obj.getAttribute(attName);
}
