function Asynchronous( ) {
	this._xmlhttp = new FactoryXMLHttpRequest();
}

function Asynchronous_call(url) {
		var instance = this;
		this._xmlhttp.open('GET', 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;
		}
	}
	this._xmlhttp.send(null);
}

function Asynchronous_post(url, formstring) {
		var instance = this;
		this._xmlhttp.open('POST', url, true);
		if (this._xmlhttp.overrideMimeType) {
            this._xmlhttp.overrideMimeType("text/xml");
        }
		this._xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		this._xmlhttp.setRequestHeader("Content-length", formstring.length);
		this._xmlhttp.setRequestHeader("Connection", "close");
		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;
		}
	}
	
	this._xmlhttp.send(formstring);
}


function Asynchronous_loading() {
}
function Asynchronous_loaded() {
}
function Asynchronous_interactive() {
}
function Asynchronous_complete(status, statusText, responseText, responseHTML) {
}

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;
Asynchronous.prototype.post = Asynchronous_post;


