//paulgrant.ca 2007
//Paul Grant

function HTTP_Request(sUrl, fReadyStateChangeHandler, sType, sPostData)
{
	if(!sType)
		sType = new String();

	if(!sPostData)
		sPostData = new String();

	this.http_request = null;

	if(window.XMLHttpRequest)
	{ // Mozilla
		this.http_request = new XMLHttpRequest();
		if(this.http_request.overrideMimeType)
			this.http_request.overrideMimeType('text/javascript');
	}
	else if(window.ActiveXObject)
	{ // IE
		try {
			this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if(!this.http_request)
	{
		//alert('Cannot create XMLHTTP instance');
		return false;
	}

//alert(sUrl);

	this.http_request.onreadystatechange = eval(fReadyStateChangeHandler);

	if(sType.toUpperCase() == "POST")
	{
		this.http_request.open('POST', sUrl, true);
		this.http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		this.http_request.setRequestHeader("Content-length", sPostData.length);
		this.http_request.setRequestHeader("Connection", "close");
		this.http_request.send(sPostData);
	}
	else
	{
		this.http_request.open('GET', sUrl, true);
		this.http_request.send(null);
	}

	return true;
}

function HTTP_Status()
{
	if(this.http_request.readyState != 4)
		return false;

	if(this.http_request.status != 200)
	{
		alert('There was a problem with the request. '+this.http_request.status);
		document.body.style.cursor = 'default';
		return false;
	}

	return true;
}

function DoReadyStateChange()
{
	var bRc = this.HTTP_Status();
	if(!bRc)
		return false;

	var sHTML = this.http_request.responseText;
	if(!sHTML)
		return false;

//alert(sHTML);

	return sHTML;
}

function HTTP_Class()
{
	this.http_request = null;

	this.HTTP_Request		= HTTP_Request;
	this.HTTP_Status		= HTTP_Status;
	this.DoReadyStateChange = DoReadyStateChange;

	return this;
}

//End.

