//xmlHttpConnect
//xH.conn(URL,Method,Vars,Function done) - assync
//xH.syn(URL,Method,Vars) - sync, return result query
function xH()
{
  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.syn = function(sURL, sMethod, sVars)
  {
    if (!xmlhttp) return false;
    sMethod = sMethod.toUpperCase();
    if (sMethod == "GET")
    {
      xmlhttp.open(sMethod,sURL+"?"+sVars,false);
      xmlhttp.send(null);
      if (xmlhttp.status == 200)
      {
        return xmlhttp.responseText;
      }
      return false;
    }
    else
    {
      xmlhttp.open(sMethod, sURL, false); 
	    xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1"); 
	    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
      xmlhttp.send(sVars);
      if (xmlhttp.status == 200)
      {
        return xmlhttp.responseText;
      }
      return false;
    }
  }
  this.conn = 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.send(sVars);
      } 
      xmlhttp.onreadystatechange = function()
      { 
	      if (xmlhttp.readyState == 4 && !bComplete) 
	      { 
	        bComplete = true; 
	        fnDone(xmlhttp);  
	      }
      }; 
      xmlhttp.send(sVars);
    } 
    catch(z) 
    { 
      return false; 
    } 
    return true; 
  }; 
  return this;
}

