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){
  	this.url = url;
    this.req = null;
    this.onload = onload;
    this.onerror = (onerror) ? onerror : this.defaultError;
    this.loadXMLDoc(this.url);   
}

net.ContentLoader.prototype={
  loadXMLDoc:function(url){
      if (window.XMLHttpRequest) {
             this.req=new XMLHttpRequest();
        } else if (window.ActiveXObject) {
        	try{ 
        		this.req=new ActiveXObject("Msxml2.XMLHTTP");       	
        	} catch (e) {
        		this.req=new ActiveXObject("Microsoft.XMLHTTP");
        	}
            
            //this.req=new ActiveXObject("Microsoft.XMLHTTP");
        }
        if (this.req) {
             try {
                     var loader=this;
                     this.req.onreadystatechange=function(){
                          loader.onReadyState.call(loader);                                                                            
                     }
                     this.req.open('POST',url,true);
                     this.req.send(null);
             } 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
         + "\n\nstatus: " + this.req.status
         + "\n\nheaders: " + this.req.getAllResponseHeaders()
         + "\n" + this.req);
    }
}