function xmlHttpRequest(url) {
	this.url=url;
	return true;
}

// create the run function
xmlHttpRequest.prototype.run=function(params,async) {

	// initialize the xmlhttprequest object
	var	xmlhttprequest=null;	
	if (window.XMLHttpRequest) {
		xmlhttprequest=new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xmlhttprequest=new ActiveXObject("Microsoft.XMLHTTP");
	}

	// bail if the browser doesn't support xmlhttprequest
	if (xmlhttprequest==null) {
		return false;
	}

	var	that=this;

	// set up the ready state change callback
	function	onreadystatechange() {

		switch (xmlhttprequest.readyState) {
			case 0:
				// "uninitialized"
				break;
			case 1:
				// "open"
				break;
			case 2:
				// "sent"
				break;
			case 3:
				// "receiving"
				break;
			case 4:
				// "complete"
				switch (xmlhttprequest.status) {
					case 200:
						that.xmlHttpRequestCompleteOk(xmlhttprequest);
						break;
					case 404:
						that.xmlHttpRequestCompleteFileNotFound(xmlhttprequest);
						break;
					case 500:
						that.xmlHttpRequestCompleteInternalServerError(xmlhttprequest);
						break;
					break;
				}
				break;
		}
	}

	// assign the callback to the ready state change handler
	xmlhttprequest.onreadystatechange=function() {
		onreadystatechange();
	}

	// process the parameters
	var	paramurl=this.url;
	if (params) {
		var	first=true;
		paramurl=paramurl+"?";
		for (var key in params) {
			if (first) {
				first=false;
			} else {
				paramurl=paramurl+"&";
			}
			paramurl=paramurl+key+"="+params[key];
		}
	}

	// make the call
	xmlhttprequest.open("GET",paramurl,async);
	xmlhttprequest.send('');

	// if it was synchronous, run the callback manually
	if (!async) {
		onreadystatechange();
	}
	return true;
}

// set up some default callbacks
xmlHttpRequest.prototype.xmlHttpRequestCompleteOk=
						function(xmlhttprequest) {
	alert(xmlhttprequest.statusText);
}

xmlHttpRequest.prototype.xmlHttpRequestCompleteFileNotFound=
						function(xmlhttprequest) {
	alert(xmlhttprequest.statusText);
}

xmlHttpRequest.prototype.xmlHttpRequestCompleteInternalServerError=
						function(xmlhttprequest) {
	alert(xmlhttprequest.statusText);
}
