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, info, onload, onerror, method, params, contentType ) {
	this.URL = URL;
	this.info = info;		
	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;
		
		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( "error fetching data!"
		+ "\n\nreadyState: " + this.req.readyState
		+ "\nStatus: " + this.req.status
		+ "\nheaders: " + this.req.getAllResponseHeaders() );*/
	}
}

