// JavaScript Document

// sets AJAX Object for browser compatibility
function FactoryXMLHttpRequest(){
	if(window.XMLHttpRequest)
	{
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	
	{
		var msxmls = new Array(	'Microsoft.XMLHTTP', 'Msxmls2.XMLHTTP.5.0','Msxmls2.XMLHTTP.4.0','Msxmls2.XMLHTTP.3.0','Msxmls2.XMLHTTP');
		for(var i = 0; i < msxmls.length; i++)
		{
			try
			{
				return new ActiveXObject(msxmls[i]);
			}
			catch (e){}
		}
	}	
	throw alert("Could not initiate XMLHttpRequest");
}
	
function Asynchronous(){
	this._xmlhttp = new FactoryXMLHttpRequest();
}

function Asynchronous_call(method, url, vars){
	var instance = this;
	method == 'GET' ? this._xmlhttp.open(method, url+'?'+vars, true) : this._xmlhttp.open(method, url, true);
	this._xmlhttp.onreadystatechange = function()
	{
		switch(instance._xmlhttp.readyState)
		{
			case 1:
				instance.loading();
				break;
			case 2:
				instance.loaded();
				break;
			case 3:
				instance.interactive();
				break;
			case 4:
				instance.complete(instance._xmlhttp.status,instance._xmlhttp.statusText,instance._xmlhttp.responseText,instance._xmlhttp.responseXML) 
				break;
		}
	}
	method == 'POST' ? this._xmlhttp.send(vars) : this._xmlhttp.send(null);
}

function Asynchronous_loading(){}

function Asynchronous_loaded(){}

function Asynchronous_interactive(){}

function Asynchronous_complete(status, statusText, responseText, responseXML){}

Asynchronous.prototype.loading = Asynchronous_loading;
Asynchronous.prototype.loaded = Asynchronous_loaded;
Asynchronous.prototype.interactive = Asynchronous_interactive;
Asynchronous.prototype.complete = Asynchronous_complete;

Asynchronous.prototype.call = Asynchronous_call;