/*
url-loading object and a request queue built on top of it
*/

/* namespacing object */
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;


/*--- content loader object for cross-browser requests ---*/
net.ContentLoader=function(url,onload,onerror,method,params,contentType, paramfonction){
  this.req=null;
  this.onload = onload;
  this.paramfonction = paramfonction;

 
  this.onerror=(onerror) ? onerror : this.defaultError;
  
  this.loadXMLDoc(url,method,params,contentType);
    
};
net.ContentLoader.msgId=1;
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.notification=new msg.Message(
        "net00"+net.ContentLoader.msgId,
        "loading "+url,
        msg.PRIORITY_LOW.id,
        -1,
        "img/ball-earth.gif"
      );
      */
      net.ContentLoader.msgId++;
      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.notification.clear();
      this.onload.call(this);
    }else{
      this.onerror.call(this);
    }
  }
 },

 defaultError:function(){
   var msgTxt="error fetching data!"
     +"<ul><li>readyState:"+this.req.readyState
     +"<li>status: "+this.req.status
     +"<li>headers: "+this.req.getAllResponseHeaders()
     +"</ul>";
   if (this.notification){
     this.notification.clear();
   }
   
   this.notification=new msg.Message(
     "net_err00"+net.ContentLoader.msgId,
     msgTxt,msg.PRIORITY_DEFAULT.id
   );
   
   net.ContentLoader.msgId++;
  }
};
// JavaScript Document
