// JavaScript Document
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( sUrl, sFunction, sMethod, sPostParams, sContentType, sErrorFunction )
{
	this.sUrl    = sUrl;
	this.sReq    = null;
	this.onload  = sFunction; 
	this.onerror = ( sErrorFunction ) ? sErrorFunction : this.defaultError;
	sMethod      = ( ! sMethod ) ? "GET" : sMethod;
	sContentType = ( sMethod == "POST" && ! sContentType ) ? "application/x-www-form-urlencoded;charset=utf-8" : sContentType;
	this.loadXMLContent( sUrl, sPostParams, sMethod, sContentType );
}
net.ContentLoader.prototype = {
	loadXMLContent:function(sUrl, sPostParams, sMethod, sContentType)		
	{
		sMethod = ( sMethod) ? sMethod : "GET";
		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()
				{
					loader.onReadyState.call( loader )	;
				}
				this.req.open(sMethod, sUrl, true);
				if(sContentType) 
				{
					this.req.setRequestHeader("Content-Type", sContentType);
				}
				if( sPostParams )
				{
					this.req.send(sPostParams + "&nocache=" + Math.random());
				}
				else
				{
					this.req.send( null );
				}
			}
			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() 
	{
		alert("Se ha producido un error al obtener los datos"
		+ "\n\nreadyState:" + this.req.readyState
		+ "\nstatus: " + this.req.status
		+ "\nheaders: " + this.req.getAllResponseHeaders());
	}
}

