//Ajax functions
var xmlHttp;
var ajaxClientListener;

function getXmlHttpObject(handler) { 
	var objXmlHttp=null

	if (navigator.userAgent.indexOf("Opera")>=0) {
		alert("Opera is not a supported browser - please use IE or a Mozilla derived browser (eg Firefox)") 
		return; 
	}
	if (navigator.userAgent.indexOf("MSIE")>=0) { 
		var strName="Msxml2.XMLHTTP"
		if (navigator.appVersion.indexOf("MSIE 5.5")>=0) {
			strName="Microsoft.XMLHTTP"
		} 
		try { 
			objXmlHttp=new ActiveXObject(strName)
			if (handler != null) {
				objXmlHttp.onreadystatechange=handler
			} 
			return objXmlHttp
		} catch(e) { 
			alert("Error. Scripting for ActiveX might be disabled") 
			return;
		} 
	} 
	if (navigator.userAgent.indexOf("Mozilla")>=0) {
		objXmlHttp=new XMLHttpRequest()
		objXmlHttp.onload=handler
		objXmlHttp.onerror=handler 
		return objXmlHttp
	}
}

function callAJAX(url, listener) {
	xmlHttp=getXmlHttpObject(listener)
	xmlHttp.open("GET", url + (getRandParam(url) + Math.random()) , true)
	xmlHttp.send(null)
}

function ajaxText(url, listener) {
	ajaxClientListener = listener;
	xmlHttp=getXmlHttpObject(internalTextAJAXListener)
	xmlHttp.open("GET", url + (getRandParam(url) + Math.random()) , true)
	xmlHttp.send(null)
}
function postAjaxText(url, listener, contentType, content) {
	ajaxClientListener = listener;
	xmlHttp=getXmlHttpObject(internalTextAJAXListener)
	xmlHttp.open("POST", url + getRandParam(url) + Math.random(), true)
	xmlHttp.setRequestHeader("Content-Type", contentType);
	xmlHttp.send(content);
}
function internalTextAJAXListener() {
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
		var text = xmlHttp.responseText;
		ajaxClientListener(text);
	}
}
function ajaxXML(url, listener) {
	ajaxClientListener = listener;
	xmlHttp=getXmlHttpObject(internalXMLAJAXListener)
	xmlHttp.open("GET", url + (getRandParam(url) + Math.random()) , true)
	xmlHttp.send(null)
}
function sjaxXML(url) {
	xmlHttp=getXmlHttpObject(null)
	xmlHttp.open("GET", url + (getRandParam(url) + Math.random()) , false)
	xmlHttp.send(null)
	return xmlHttp.responseXML
}

function postFormAjaxXML(url, listener, content) {
	postAjaxXML(url, listener, "application/x-www-form-urlencoded", content);
}
function postAjaxXML(url, listener, contentType, content) {
	ajaxClientListener = listener;
	xmlHttp=getXmlHttpObject(internalXMLAJAXListener)
	xmlHttp.open("POST", url + getRandParam(url) + Math.random(), true)
	xmlHttp.setRequestHeader("Content-Type", contentType);
	xmlHttp.send(content);
}
function postSOAPXML(url, listener, action, content) {
	ajaxClientListener = listener;
	xmlHttp=getXmlHttpObject(internalXMLAJAXListener)
	xmlHttp.open("POST", url + getRandParam(url) + Math.random(), true)
	xmlHttp.setRequestHeader("SOAPAction", action);
	xmlHttp.setRequestHeader("Content-Type", "text/xml");
	xmlHttp.send(content);
}
function internalXMLAJAXListener() {
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete") {
		var xml = xmlHttp.responseXML;
		ajaxClientListener(xml);
	}
}
function getRandParam(url) {
	var randParam = "&r=";
	if (url.indexOf("?") == -1) {
		randParam = "?r=";
	}
	return randParam;
}
