var net=new Object();
net.ContentLoader=function(url,onload,onerror)
{
	this.url=url+'&r='+Math.floor(Math.random()*1000000);
	this.req=null;
	this.onload=onload;
	this.onerror=(onerror) ? oneerror : this.defaultError;
	this.loadXMLDoc(url);
}


	
net.ContentLoader.prototype.loadXMLDoc=function(url)
{
	url=url+'&r='+Math.floor(Math.random()*1000000);
	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('GET',url,true);
			this.req.send(null);
		}
		catch(err)
		{
			this.onerror.call(this);
		}
	}
}
	
net.ContentLoader.prototype.onReadyState=function()
{
	var req=this.req;
	var ready=req.readyState;
	if (ready == 4)
	{
		var httpStatus=req.status;
		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());
}

function myCallBack()
{
	alert (
		this.url+"loaded! Here's the content:\n\n"
		+this.req.responseText
		);
}

