var service;
var queue;

function xmlService(queue){

  if(window.XMLHttpRequest) {
	service = new XMLHttpRequest();
  } else {
	service = new ActiveXObject("Microsoft.XMLHTTP");
  }

  service.queue=queue;

  service.requestContent=function(url){
     //alert("URL:"+url+" "+requestIndex);
     service.open("GET",url,true);
     service.onreadystatechange=service.getContent;
     service.send(null);
  }

   service.getContent=function(){
     //alert(service.readyState)
     if(service.readyState==4){
        //service.directory.content.innerHTML=service.responseText;
        //service.directory.getScrollBars();
        service.queue.onProcessed(service.responseText);
     }
  }

  return service
}

function Queue(){

     this.xmlService=xmlService(this);
     this.requests=new Array();

     this.addRequest=function(client){
         this.requests.push(client);
         //process immediately if service is available
         if(this.xmlService.readyState==0||this.xmlService.readyState==4){
            this.xmlService.requestContent(client.requestURL)
         }
     }
     this.onProcessed=function(content){
         alert(content)
         if(content.length>0){
            this.requests[0].addContent(content);
         }
            this.requests.shift();
         //process next request
         if(this.xmlService.readyState==0||this.xmlService.readyState==4&&this.requests.length>0){
            this.xmlService.requestContent(this.requests[0].requestURL)
         }
     }


}

function Client(container,requestURL){
 this.container=container;
 this.requestURL=requestURL;
 if(!queue){

     queue=new Queue();
 }

 this.queue=queue;
  
 this.getContent=function(requestURL){
   this.requestURL-requestURL;
   this.queue.addRequest(this);
 }

 this.addContent=function(content){
   this.container.innerHTML=content;
 }
 this.getContent(this.requestURL);
}

