var net = new Object();

net.READY_STATE_UNINITIALIZED = 0;
net.READY_STATE_LOADING = 1;
net.READY_STATE_LOADED = 2;
net.READY_STATE_INTERACTIVE = 3;
net.READY_STATE_COMPLETE = 4;

net.ContentLoader = function(method, url, params, contentType, onload, onerror) 
{
	this.req = null;
	this.onload = onload;
	this.onerror = (onerror) ? onerror : this.defaultError;
	this.myloadData(method, url, params, contentType);
}
		
net.ContentLoader.prototype = 
{
	myloadData: function(method, url, params, contentType) 
	{
		if (!method) method = "GET";
		if (!contentType && method == "POST") contentType='application/x-www-form-urlencoded';
		if (window.XMLHttpRequest) 
		{
			this.req = new XMLHttpRequest();
		} 
		else 
		if (window.ActiveXObject) 
		{
			this.req = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		if (this.req) 
		{
			try 
			{
				this.req.open(method, url, true);
				
				if (contentType && method == "POST")
				{
					this.req.setRequestHeader('Content-Type', contentType);
				}
				var loader = this;
				this.req.onreadystatechange = function() 
				{
					loader.onReadyState.call(loader);
				}
				this.req.setRequestHeader("X-Requested-With", "XMLHttpRequest");
				this.req.send(params);
			} 
			catch (err)
			{
				this.onerror.call(this);
			}
		}
	},
	onReadyState: function() 
	{
		var req = this.req;
		var ready = req.readyState;
		if (ready == net.READY_STATE_COMPLETE) 
		{
			var httpStatus = req.status;
			if (httpStatus == 200 || httpStatus == 0) 
			{
				this.onload.call(this);
			} 
			else 
			{
				this.onerror.call(this);
			}
		}
	},
	defaultError : function() 
	{
		document.getElementById('div_waiting').style.display = 'none';
		alert("Error!" + "\n\nreadyState:" + this.req.readyState + "\nstatus: " + this.req.status + "\nheaders: " + this.req.getAllResponseHeaders());
	}
}
