// ----
// AJAX
// ----
function createAjaxObj() {
	// alert("createAjaxObj()");
	
	var reqObj = false;
	
	if (window.XMLHttpRequest) {
		// If Mozilla, Safari etc
		reqObj = new XMLHttpRequest();
		if (reqObj.overrideMimeType) {
			reqObj.overrideMimeType('text/xml');
		}
	} else {
		if (window.ActiveXObject) {
			// If IE
			var aXmlHttpVersions = ["Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];

			for (var i = 0; i < aXmlHttpVersions.length; i++) {
				try {
					reqObj = new ActiveXObject(aXmlHttpVersions[i]);
					if (reqObj) {
						break;
					}
				}
				catch (objException) {
					// Catch object exception errors so they don't display to the user...
				}
			}
		}
	}
	return reqObj;
}

function newAjaxObject() {
	var ajaxObj = new Object();
	
	ajaxObj.basedomain = "http://" + window.location.hostname;
	ajaxObj.reqObj = createAjaxObj();
	ajaxObj.filetype = "txt";
	ajaxObj.addrandomnumber = 0; // Set to 1 or 0. See documentation.
	
	ajaxObj.getAjaxRequest = function(url, parameters, filetype, callbackfunc, callbackargs) {
		
		ajaxObj.reqObj = createAjaxObj(); // Recreate ajax object to defeat cache problem in IE
		
		if (ajaxObj.addrandomnumber == 1) { // Further defeat caching problem in IE?
			var parameters = parameters + "&ajaxcachebust=" + new Date().getTime();
		}
		
		if (this.reqObj) {
			this.filetype = filetype;
			this.callbackargs = callbackargs;
			this.reqObj.onreadystatechange = function() {
				callbackfunc(ajaxObj);
			}
			if (parameters == '') {
			    this.reqObj.open('GET', url, true);
			} else {
			    if (url.indexOf("?") == -1) {
			        url = url + "?";
			    }
			    this.reqObj.open('GET', url + parameters, true);
			}
			this.reqObj.send(null);
		}
	};
	
	ajaxObj.postAjaxRequest = function(url, parameters, callbackfunc, filetype, callbackargs) {
		// alert("postAjaxRequest()");
		
		ajaxObj.reqObj = createAjaxObj(); // Recreate ajax object to defeat cache problem in IE
		
		if (this.reqObj) {
			this.filetype = filetype;
			this.callbackargs = callbackargs;
			this.reqObj.onreadystatechange = function() {
				callbackfunc(ajaxObj);
			}
			this.reqObj.open('POST', url, true);
			this.reqObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			this.reqObj.setRequestHeader("Content-length", parameters.length);
			this.reqObj.setRequestHeader("Connection", "close");
			this.reqObj.send(parameters);
		}
	};
	
	return( ajaxObj );
}