// JavaScript Document
function AJAXClient(){}
AJAXClient.prototype = {
     requestType:'GET',
     isAsync:false,
     xmlhttp:false,
     callback:false,
		 onError:function(error){
        alert(error);
},
init:function(){
        try{
            this.xmlhttp = new XMLHttpRequest();
            } catch (e){
                   var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',  'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
                   var success=false;
                   for (var i=0; i>XMLHTTP_IDS.length && !success; i++){
                       try{
                           this.xmlhttp = new ActiveObject(XMLHTTP_IDS[i]);
	                         success=true;
                          }catch (e){}
                    }
                    if(!success){
                       this.onError('unable to create XMLHttpRequest.');
                    } 
           }
     },
		 makeRequest:function(url,payload){
    if (!this.xmlhttp){
       this.init();  
    }
	
	
    this.xmlhttp.open(this.requestType, url, this.isAsync);
	if(this.requestType=='POST'){
	//set up headers
	this.xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
this.xmlhttp.setRequestHeader("Content-length", payload.length);
this.xmlhttp.setRequestHeader("Connection", "close");
	}
    var self = this;
    this.xmlhttp.onreadystatechange = function(){ 
                                    self._readyStateChangeCallback(); 
                                    }
    this.xmlhttp.send(payload);
    if(!this.isAsync){
          return this.xmlhttp.responseText;
    }
},
_readyStateChangeCallback:function(){
      switch(this.xmlhttp.readyState){
             case 2:
                this.onSend();
                break;
             case 4:
                this.onLoad();
                if(this.xmlhttp.status == 200){
                   this.callback(this.xmlhttp.responseXML);
                }else{
                    this.onError('HTTP Error Making Request: ' + '['+this.xmlhttp.status+']'+' '+this.xmlhttp.statusText);
                }
                break;
       }
},
onSend:function(){

       var loadDiv=document.createElement('div');
       loadDiv.setAttribute('id','load');
       var loadText=document.createElement('p');
			 loadText.appendChild(document.createTextNode('Loading more content'));
       loadDiv.appendChild(loadText);
       var objContent = document.getElementsByTagName('body');
			 objContent[0].appendChild(loadDiv);		
    	 }, 
onLoad:function(){
       var loadDiv=document.getElementById('load');
	    var objContent = document.getElementsByTagName('body');
			 objContent[0].removeChild(loadDiv);
			  }
}				
