function Asynchronous(ReqType)
{
	this._xmlhttp = GetHttpRequestType(ReqType);
}

function Asynchronous_call(url)
{
	var instance = this;
    this._xmlhttp.open('GET', url, true);
	this.openCallback(this._xmlhttp);
    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:
			if(instance.complete)
			{
				instance.complete(instance._xmlhttp.status, instance._xmlhttp.statusText,
								  instance._xmlhttp.responseText, instance._xmlhttp.responseXML);
			}
			
            break;
        }
    }

    try{ this._xmlhttp.send(null); } catch(e) {}
}

function Asynchronous_openCallback(obj) {}
function Asynchronous_loading() {}
function Asynchronous_loaded() {}
function Asynchronous_interactive() {}
function Asynchronous_complete(status, statusText, responseText, responseXML) {}

Asynchronous.prototype.openCallback = Asynchronous_openCallback;
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;

