function XHConn()
{
  var xmlhttp,bComplete = false;
  try { 
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
  }
  catch (e) 
  { 
    try { 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    }
    catch (e) { 
      try { 
        xmlhttp = new XMLHttpRequest(); 
      }
      catch (e) { 
        xmlhttp = false; 
      }
    }
  }
  if (!xmlhttp) 
    return null;
  this.connect = function(sURL,sMethod,sVars,fnDone) {
    if (!xmlhttp) 
      return false;
    bComplete = false;
    sMethod = sMethod.toUpperCase();
    try {
      if (sMethod == "GET") {
        xmlhttp.open(sMethod,sURL + "?" + sVars,true);
        sVars = "";
      }
      else {
        xmlhttp.open(sMethod,sURL,true);
        xmlhttp.setRequestHeader("Method","POST " + sURL + " HTTP/1.1");
        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      }
      xmlhttp.onreadystatechange = function() {
        if ((xmlhttp.readyState == 4) && (!bComplete)) {
          bComplete = true;
          fnDone(xmlhttp);
        }
      };
      xmlhttp.send(sVars);
    }
    catch(z) { 
      return 
        false; 
    }
    return 
      true;
  };
  return 
    this;
}
