// JavaScript Document

function AJAXHttp()
{
	this.XMLHttpObj		= null;
	this.responseTEXT	= '';
	this.responseXML	= '';
	this.onLoadingFunc	= null;
	this.onCompleteFunc = null;
	this.StatusCheckFunc= null;
	this.onErrorFunc	= null;
	this.Status			= 0;
	this.StatusTEXT		= '';
	this.LoadSuccess	= false;
	this.requesting		= false;
	
	this.RequestMethod	= 'GET';	// Default
	
	this.err			= '';
		
	this.init = function()
	{
		if (window.XMLHttpRequest)
		{
			this.XMLHttpObj = new XMLHttpRequest();		
		}
		else {
			if (window.ActiveXObject){
				try {
					this.XMLHttpObj = new ActiveXObject('Microsoft.XMLHTTP');
				}
				catch (e) {}
			}
		}
		
		if (!this.XMLHttpObj)
		{
			this.err = 'Error opening an AJAX handler';
			return false;
		}
		else return true;	
	}
	
	this.SendRequest = function(reqURL)
	{
		if (this.processing)
		{
			this.XMLHttpObj.abort();
			this.processing = true;
		}
		
		var initialized = this.init();
		if (!initialized) return false;
		
		if (this.StatusCheckFunc) { this.XMLHttpObj.onreadystatechange = this.StatusCheckFunc; }
		else { this.XMLHttpObj.onreadystatechange = XMLHttpStatus; }
		this.XMLHttpObj.open(this.RequestMethod,reqURL,true);
		this.XMLHttpObj.send(null);
		this.processing = true;
		return true;
	}
	
	XMLHttpStatus = function()
	{ 
		if (AJAX.onLoadingFunc)
		{
			var st = AJAX.XMLHttpObj.readyState;
			if (st==1 || st==2 || st==3)
			{
				AJAX.onLoadingFunc();
				return true;
			}
		}
		
		if (AJAX.XMLHttpObj.readyState == 4)
		{
			if (AJAX.XMLHttpObj.status == 200)
			{
				AJAX.Status		= AJAX.XMLHttpObj.status;
				AJAX.StatusTEXT	= AJAX.XMLHttpObj.statusText;
				AJAX.processing		= false;
				AJAX.LoadSuccess	= true;
				AJAX.responseTEXT	= AJAX.XMLHttpObj.responseText;
				AJAX.responseXML 	= AJAX.XMLHttpObj.responseXML;
				if (AJAX.onCompleteFunc) { AJAX.onCompleteFunc(); }
				else { alert('The request has completed successfully');}
			}
			else {
				AJAX.Status		= AJAX.XMLHttpObj.status;
				AJAX.err = "There was an error sending an AJAX request. The error status is: " + AJAX.XMLHttpObj.status;
				AJAX.LoadSuccess = false;
				AJAX.processing	 = false;
			}
		}
	} 
}

var AJAX = new AJAXHttp();