
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, id){
	this.url = url;
	this.req = null;
	this.onload = onload;
	this.onerror = (onerror) ? onerror : this.defaultError;
	if(typeof(id) != "undefined"){
		this.curid = id;
	}
	this.loadXMLDoc(url);
}
net.ContentLoader.prototype = {
	loadXMLDoc : function(url){
		var urlString = "";
		var queryString = "";
		var method = "GET";
		
		if(window.XMLHttpRequest)
			this.req = new XMLHttpRequest();
		else if(window.ActiveXObject)
			this.req = new ActiveXObject("Microsoft.XMLHTTP");
		
		if(url.indexOf("?") != -1){
			//alert(url + "   " + url.substring(url.indexOf("?") + 1, url.length));
			urlString = url.substring(0,url.indexOf("?"));
			queryString = url.substring(url.indexOf("?") + 1, url.length);
			method = "POST";
		}
		else{
			urlString = url;
			queryString = null;
		}
		
		if(this.req){
			try{
				var loader = this;
				this.req.onreadystatechange = function(){
					loader.onReadyState();
				}
				this.req.open(method, urlString, true);
				this.req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf8");
				this.req.send(queryString);
			}
			catch(err){
				this.onerror();
			}
		}	
	},
	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();
			}
			else{
				this.onerror();
			}
		}
	},
	defaultError : function(){
		alert("Error fetching date!"
			+ "\n\nreadystate: " + this.req.readyState
			+ "\nStatus: " + this.req.status
			+ "\nheaders: " + this.req.getAllResponseHeaders());
	}
}

