/* Author: David Mimms (david.mimms avantinformatica.it) * Desc: Make XHR request * Date: Sept 2006 */function initXHRObject (wantXML) {	var http_request = false;		if (!wantXML) wantXML = false;	if (window.XMLHttpRequest) { // Mozilla, Safari,...		http_request = new XMLHttpRequest();		if (http_request.overrideMimeType && wantXML == true) {			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) {}		}	}	return http_request;}function sendRequest (http_request, url, rmethod, sendData) {	http_request.open (rmethod, url, true);		if (!sendData) sendData = null;		if (rmethod == 'POST') {		http_request.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded');		http_request.setRequestHeader ("Content-length", sendData.length);	}		http_request.send (sendData);	return http_request;}function setStates (http_request, wantXML, onReady, onError) {	http_request.onreadystatechange = function() {		try {			if (http_request.readyState == 4) {				if (http_request.status == 200) {					var response = (wantXML == true) ? http_request.responseXML : http_request.responseText;					onReady (response);				} else {					onError (http_request.statusText);				}			}		} catch (e) {//			onError (e.description);		}	};	return http_request;}function XHRObject (url, onReady, onError, wantXML, rmethod, sendData) {	http_request = initXHRObject (wantXML);		if (!http_request) {		onError ('Cannot create an XMLHTTP instance');		return false;	}		http_request = setStates (http_request, wantXML, onReady, onError);	return sendRequest (http_request, url, rmethod, sendData);}