function AJAXQuery( AService, POSTData, Callback ) {
	var Request;

	function Query() {
		try {
			ObjectName = (navigator.userAgent.indexOf("MSIE") >= 0) ? "Msxml2.XMLHTTP" : ((navigator.appVersion.indexOf("MSIE 5.5") >= 0) ? "Microsoft.XMLHTTP" : "");
			Request = window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject(ObjectName) : null);

			Request.open(POSTData ? "POST" : "GET", AService, true);
			Request.onreadystatechange = ProcessRequestChange;
			if ( POSTData ) {
				Request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
				Request.setRequestHeader('Content-Length', POSTData.length);
			}
			Request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2005 00:00:00 GMT");
			Request.send(POSTData);
		}catch(AnException) { alert("An AJAX error has occured:\r\n" + AnException.description + "\r\n\r\nMake sure you are visiting http://www.twentygroups.com,\r\nnot just http://twentygroups.com."); }
	}

	function ProcessRequestChange() {
		if ( Request.readyState == 4 ) {
			if ( Request.status == 200 ) {
				Callback(Request);
				Request = null;
			}
		}
	}

	Query();
}
