  function HttpClient() { }
  HttpClient.prototype = {
      // type GET,POST passed to open
      requestType:'GET',
      // when set to true, async calls are made
      isAsync:false,

      // where an XMLHttpRequest instance is stored
     xmlhttp:false,

      // what is called when a successful async call is made
      callback:false,
	
	//status div tralalalal
	statusDiv:'HttpClientStatus',
	
      // what is called when send is called on XMLHttpRequest
      // set your own function to onSend to have a custom loading
     // effect
       onsend:function() {
         document.getElementById(this.statusDiv).style.display = 'block';
     },

     // what is called when readyState 4 is reached, this is
     // called before your callback
      onload:function() {
          document.getElementById(this.statusDiv).style.display = 'none';
      },

     // what is called when an http error happens
     onError:function(error) {
         alert(error);
    },

     // method to initialize an xmlhttpclient
     init:function() {
       try {
           // Mozilla / Safari
            this.xmlhttp = new XMLHttpRequest();
       } catch (e) {
           // IE
           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 ActiveXObject
                     (XMLHTTP_IDS[i]);
                   success = true;
               } catch (e) {}
           }
           if (!success) {
               this.onError('Unable to create XMLHttpRequest.');
           }
        }
    },

     // method to make a page request
     // @param string url  The page to make the request to
     // @param string payload  What you're sending if this is a POST
    //                        request
    makeRequest: function(url,payload) {
         if (!this.xmlhttp) {
             this.init();
         }
		  
         this.xmlhttp.open(this.requestType,url,this.isAsync);
		if(this.requestType=='POST')
		{
			 try {
                   this.xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded'); 
               } catch (e) {}
			
		}
         // set onreadystatechange here since it will be reset after a
        //completed call in Mozilla
         var self = this;
         this.xmlhttp.onreadystatechange = function() {
        self._readyStateChangeCallback(); }
		try {
         this.xmlhttp.send(payload);
		} catch(e) {}
         if (!this.isAsync) {
             return this.xmlhttp.responseText;
         }
    },

     // internal method used to handle ready state changes
    _readyStateChangeCallback:function() {
         switch(this.xmlhttp.readyState) {
              case 1:
               this.onsend();
               break;
            case 4:
               this.onload();
               if (this.xmlhttp.status == 200) {
				 try {
					this.callback(this.xmlhttp.responseText);
				 }catch (e) {}
               } else {
                   this.onError('HTTP Error Making Request:'+'['+this.xmlhttp.status+']'+' '+this.xmlhttp.statusText);
               }
               break;
         }
     }
 }
 
