// globals
var AJAX_override = "text/xml";
var httpRequest;
var target = null;

function setTestTarget(name) {
	target = document.getElementById(name);
}

function AJAX_request(method, url, pfunction) {

	/* deny multiple requests */
	if (httpRequest != null) {
		try { 
			if (httpRequest.readyState > 0 && httpRequest.readyState < 4) {
			//alert("Please wait a moment and try again.");
			window.status = "";
			}
		} catch(e) {
			httpRequest = null;
			alert("The server may be busy at the moment. Please wait a few seconds and try again.");
			return 0;
		}
	}

	if (window.XMLHttpRequest) { // Mozilla, Safari, ...
		httpRequest = new XMLHttpRequest();
		if (httpRequest.overrideMimeType) {
			httpRequest.overrideMimeType(AJAX_override);
		}	   
	} 
	else if (window.ActiveXObject) { // IE
		try {
			httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			window.status = window.status + " " + e.description;
			try {
				httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) {
				window.status = window.status + " " + e.description;
			}
		}
	}

	if (!httpRequest) {
		alert('Giving up :( Cannot create an XMLHTTP instance');
		return false;
	}

	httpRequest.onreadystatechange = pfunction;
	window.status = "AJAX:";
	try {		
		if (method == 'GET') {
			httpRequest.open(method, url, true);
			httpRequest.send(null);
		}		
		if (method == 'POST') {
			var params = url.replace(/^.*\?/, '');
			url = url.replace(/\?.*$/, '');
			httpRequest.open(method, url, true);
			httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			httpRequest.send(params);
		}
	} catch(httpe) {}

}



//DEFAULT TRUE/FALSE HANDLER
/*  httpRequest.readyState  : what the httpRequest is doing
    * 0 (uninitialized)
    * 1 (loading)
    * 2 (loaded)
    * 3 (interactive)
    * 4 (complete) 
    httpRequest is global 
*/

/* httpRequest.status is the HTTP status */
function _AJAX_handler() {
	window.status = window.status+" "+httpRequest.readyState;
	try { 
		if (httpRequest.readyState == 4) {
			if (httpRequest.status == 200) {
				window.status = "TRUE";
				//alert(httpRequest.responseText);
			} else {
				//FAILED: webserver/web gateway error
				window.status = "FALSE";
				//alert("Server Response:"+httpRequest.status);
			}			
		}
	} catch(e) {
		//FAILED: webserver/webgateway/client request error
		//remove hixclient to duplicate
		httpRequest = null;
		//alert('failed AJAX call');
		window.status = "failed to mark record(s)";
	}
}


/* A test handler for the response */
/*  httpRequest.readyState
    * 0 (uninitialized)
    * 1 (loading)
    * 2 (loaded)
    * 3 (interactive)
    * 4 (complete) 

    httpRequest.status is the HTTP status 

*/
function _AJAX_test() {
	window.status = window.status+" "+httpRequest.readyState;
	try { 
		if (httpRequest.readyState == 4) {
			if (httpRequest.status == 200) {
				window.status = "TRUE";
				//alert(httpRequest.responseText);
				if (target) target.innerHTML = httpRequest.responseText
			} else {
				//FAILED: webserver/web gateway error
				window.status = "FALSE";
				alert("Server Response:"+httpRequest.status);		
			}			
		}
	} catch(e) {
		alert("Server Response:"+httpRequest.status);	
		//FAILED: webserver/webgateway/client request error	
		//httpRequest = null;
		//alert('failed AJAX call');
		window.status = "NULL : "+e.description;
	}
}
