var ajaxShowAlerts = false;
var XMLHttpFactories = [
	function () {return new XMLHttpRequest()},
	function () {return new ActiveXObject("Msxml2.XMLHTTP")},
	function () {return new ActiveXObject("Msxml3.XMLHTTP")},
	function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function ajaxObject(url, callbackFunction, postData) {
	this.url = url;
	this.callbackFunction = callbackFunction;
	this.postData = postData;
	this.XMLHttpObject = false;
	this.ajaxShowAlerts = false;
	for (var i = 0; i < XMLHttpFactories.length; i++) {
		try { this.XMLHttpObject = XMLHttpFactories[i](); }
		catch (e) { continue; }
		break;
	};
	this.XMLHttpObject.onreadystatechange = function () {
		if (this.XMLHttpObject.readyState != 4) { return; }
		if (this.XMLHttpObject.status != 200 && this.XMLHttpObject.status != 304) {
			if (this.ajaxShowAlerts) alert("HTTP Error " + XMLHttpObject.status);
			return;
		}
		if (this.callbackFunction) { this.callbackFunction(this.XMLHttpObject); }
	};

	this.ajaxSendRequest = function() {
		if (!this.XMLHttpObject) { return; }
		var method = (this.postData) ? "POST" : "GET";
		this.XMLHttpObject.open(method, this.url, true);
		this.XMLHttpObject.setRequestHeader("User-Agent", "XMLHTTP/1.0, Hypnosis Simple AJAX 0.3.beta");
		if (this.postData) {
			this.XMLHttpObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		}
		if (this.XMLHttpObject.readyState == 4) { return; }
		this.XMLHttpObject.send(postData);
	};
}

function ajaxCreateXMLHttpObject() {
	var XMLHttpObject = false;
	for (var i = 0; i < XMLHttpFactories.length; i++) {
		try { XMLHttpObject = XMLHttpFactories[i](); }
		catch (e) { continue; }
		break;
	}
	return XMLHttpObject;
}

function ajaxSendRequest(url, callback, postData) {
	var XMLHttpObject = ajaxCreateXMLHttpObject();
	if (!XMLHttpObject) return;
	var method = (postData) ? "POST" : "GET";
	XMLHttpObject.open(method, url, true);
	XMLHttpObject.setRequestHeader('User-Agent','XMLHTTP/1.0, Hypnosis Simple AJAX 0.3.beta');
	if (postData) XMLHttpObject.setRequestHeader('Content-type','application/x-www-form-urlencoded');
	XMLHttpObject.onreadystatechange = function () {
		if (XMLHttpObject.readyState != 4) return;
		if (XMLHttpObject.status != 200 && XMLHttpObject.status != 304) {
			if (ajaxShowAlerts) alert('HTTP Error ' + XMLHttpObject.status);
			return;
		}
		callback(XMLHttpObject);
		XMLHttpObject = null;
	}
	if (XMLHttpObject.readyState == 4) return;
	XMLHttpObject.send(postData);
}

function ajaxGetData(url, querystr, callback) {
	if (url == "") return;
	if (url.indexOf("?") == -1) url += "?";
	else url += "&";
	var dtObj = new Date();
	if (querystr != "") url += querystr + "&ajaxid=" + dtObj.getTime();
	else url += "ajaxid=" + dtObj.getTime();
	ajaxSendRequest(url, callback, null);
}

// Callback Function Example

function ajaxCallbackExample(XMLHttpObject) {
	var textData = XMLHttpObject.responseText;
	var xmlData = XMLHttpObject.responseXML;
	var httpStatus = XMLHttpObject.statusText;

	/* TYPE YOUR CODE HERE */

}

