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(url,onload,onerror,method,params,contentType){
	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() {
					loader.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 );
			}
		}
	},

	onReadyState: function(){
		var req = this.req;
		var ready = req.readyState;

		var httpStatus = 0;
		if (ready == net.READY_STATE_COMPLETE){
			if ( httpStatus == 200 || httpStatus == 0 ){
				this.onload.call( this );
			} else {
				this.onerror.call( this );
			}
		}
	},

	defaultError: function(){
		alert( "error fetching data!"
		+ "\n\nreadyState:" + this.req.readyState
		+ "\nstatus: " + this.req.status
		+ "\nheaders: " + this.req.getAllResponseHeaders() );
	}
}

