var Ajax = new Object();

Ajax.loading = "";
Ajax.Request = function(url, callbackMethod, owner, loader)
{
	if(loader == null){
		this.loading = 'loading';
	}else{
		this.loading = loader;
	}
	
	show(this.loading);
	
	if(isNull(owner)) owner = new Object();
	
	owner.request = Ajax.createRequestObject();
	owner.request.onreadystatechange = function()
	{
		callbackMethod(owner);
	}
	owner.request.open("get", url, true);
	
	owner.request.send(url);
}

Ajax.RequestPost = function(url, callbackMethod, sBody,  owner, loader)
{
	if(loader == null){
		this.loading = 'loading';
	}else{
		this.loading = loader;
	}
	//show(this.loading);
	if(isNull(owner)) owner = new Object();
	
	owner.request = Ajax.createRequestObject();
	owner.request.onreadystatechange = function()
	{
		callbackMethod(owner);
	}
	owner.request.open("post", url, true);
	owner.request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	owner.request.send(sBody);
}

Ajax.createRequestObject = function()
{
	if(typeof XMLHttpRequest != "undefined")
	{
		return new XMLHttpRequest();
	}
	else
	{
		var aVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
		
		for(var i=0; i < aVersions.length; i++)
		{
			try {
				var obj = new ActiveXObject(aVersions[i]);
				return obj;
			} catch (oError) {
				// Do nothing	
			}
		}
		throw new Error("MSXML is not installed");
	}

}

Ajax.CheckReadyState = function(obj)
{
	if(obj.readyState == 0) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 1) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 2) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 3) {$(this.loading).innerHTML = "Loading..."; }
	if(obj.readyState == 4)
	{
		if(obj.status == 200){
			//hide(this.loading);
			$(this.loading).innerHTML = "";
			return true;
		}
		else
		{
			$(this.loading).innerHTML = "HTTP " + obj.status;
		}
	}
	return false;
}
