var AJAX_Requests = [];

function xmlhttpPost(Key, strURL, Callback) 
 {
  var xmlHttpReq = false;
  var self = this;
  if (window.XMLHttpRequest) // Mozilla/Safari
    {self.xmlHttpReq = new XMLHttpRequest();}
  else // IE
    if (window.ActiveXObject) 
     {self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");}

  self.xmlHttpReq.open('POST', strURL, true);
  self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  if (Callback != null)  
   {self.xmlHttpReq.onreadystatechange = Callback;}
  self.xmlHttpReq.send("");
 }

function AJAX(Key, URL, CompletedCallback)
 {
  this.key = Key; 
  AJAX_Requests[this.key] = this;
  this.URL = URL;
  this.CompletedCallback = CompletedCallback;

  if (window.XMLHttpRequest) // Mozilla/Safari
    {this.request = new XMLHttpRequest();}
  else // IE
    if (window.ActiveXObject) 
     {this.request = new ActiveXObject("Microsoft.XMLHTTP");}
  
  var strEvent = '';
  
  strEvent += '  { ';
  strEvent += '   var AJAX_Request = AJAX_Requests["' + this.key + '"]; ';
  strEvent += '  ';    
  strEvent += '    switch (AJAX_Request.request.readyState) ';
  strEvent += '     { ';
  strEvent += '      case 4: ';
  strEvent += '        if (AJAX_Request.CompletedCallback != null)  ';
  strEvent += '         {AJAX_Request.CompletedCallback(AJAX_Request.key);} ';
  strEvent += '        break;  ';
  strEvent += '     } ';
  strEvent += '   } ';
  
  this.request.onreadystatechange = new Function(strEvent);
   
  this.execute = 
    function()
     {
      this.request.open('POST', this.URL, true);
      this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      this.request.send("");
     };  
 }
  