  // | * 
  // | * 
  // | * 
  // | *
  // | *  AJAX Object
  // | *
  function HttpClient() { }

  HttpClient.prototype = {
     // type GET,POST passed to open
     requestType:'GET',
     // when set to true, async calls are made
     isAsync:true,

     // where an XMLHttpRequest instance is stored
     xmlhttp:false,

      // what is called when a successful async call is made
      callback:false,

      // 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('HttpClientStatus').style.display = 'block';
     },

     // what is called when readyState 4 is reached, this is
     // called before your callback
      onload:function() {
          //document.getElementById('HttpClientStatus').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)
           {
               alert('Unable to create XMLHttpRequest.');
               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);


         // set onreadystatechange here since it will be reset after a
        //completed call in Mozilla
         var self = this;
         this.xmlhttp.onreadystatechange = function() {
        self._readyStateChangeCallback(); }

         this.xmlhttp.send(payload);

         if (!this.isAsync) {
             return this.xmlhttp.responseText;
         }
    },

     // internal method used to handle ready state changes
    _readyStateChangeCallback:function() {

         switch(this.xmlhttp.readyState) {
              case 2:
               this.onSend();
               break;
            case 4:
               this.onload();
               if (this.xmlhttp.status == 200) {
                   this.callback(this.xmlhttp.responseText);
               } else {
                   this.onError('HTTP Error Making Request: ' + '[' + this.xmlhttp.status + ']' + this.xmlhttp.statusText);
               }
               break;
         }
     }
 }



  // | * 
  // | * 
  // | * 
  function ajax_load_into_div(url,div)
  {
      var client = new HttpClient();

      client.callback = function(result) {
          document.getElementById(div).innerHTML = result;
     }

      client.makeRequest(url,null);
  }

