﻿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(obj,url,onload,onerror,method,params,contentType)
{
	this.obj = obj;
	this.req = null;
	this.onload = onload;
	this.onerror = (onerror) ? onerror : this.defaultError;
	this.loadXMLDoc(url,method,params,contentType);
}

net.ContentLoader.prototype.loadXMLDoc = function(url,method,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
		{
			var loader = this;
			this.req.onreadystatechange = function()
			{
				net.ContentLoader.onReadyState.call(loader);
			}
			this.req.open(method,url,true);
			if(contentType)
			{
				this.req.setRequestHeader('Content-Type', contentType);
			}
			this.req.send(params);
		}
		catch(err)
		{
			this.onerror.call(this);
		}
	}
}

net.ContentLoader.onReadyState = function()
{
	var req = this.req;
	var ready = req.readyState;
	var httpStatus;
	
	try
	{	
		httpStatus = req.status;
	}
	catch(err)
	{
		
	}
	
	if(ready == net.READY_STATE_COMPLETE)
	{
		if(httpStatus == 200 || httpStatus == 0)
		{
			this.onload.call(this);
		}
		else
		{
			this.onerror.call(this);
		}
	}
}

net.ContentLoader.prototype.defaultError = function()
{
	/*
	alert("error fetching data!"
	+"\n\nreadyState:"+this.req.readyState
	+"\nstatus: "+this.req.status
	+"\nheaders: "+this.req.getAllResponseHeaders());
	*/
}