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_COMPLETED=4;

var NULL = 0;

net.ContentLoader = function(url, onload, onerror) {
	this.url = url;
	this.req = null;
	this.onload = onload;
	this.onerror = (onerror) ? onerror: this.defaultError;
	this.loadXMLDoc(url);
}

net.ContentLoader.prototype = {
	loadXMLDoc:function()  {
		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',this.url,true);
				this.req.send(null);
				
			} catch (err) {
				this.onerror.call(this);
			}
		}
	},
	onReadyState:function() {
		var req=this.req;
		var ready=this.req.readyState;

		if (ready==net.READY_STATE_COMPLETED) {
			var httpStatus = req.status;
			if (httpStatus==200 || httpStatus==0) {
				this.onload.call(this);
			} else {
				alert("HTTP Status: "+httpStatus);
				this.onerror.call(this);
			}
		}
	},
	defaultError:function() {
		alert("AJAX: Error fetching data!");
/*				+ "\n\nreadyState:" + this.req.readyState
				+ "\nstatus: " + this.req.status
				+ "\nheaders:" + this.req.getAllResponseHeader());*/
	}
}
