var XMLHttpFactories = [
    function () {return new XMLHttpRequest()},
    function () {return new ActiveXObject("Msxml2.XMLHTTP")},
    function () {return new ActiveXObject("Msxml3.XMLHTTP")},
    function () {return new ActiveXObject("Microsoft.XMLHTTP")}
];

function GetXmlHttpObject() 
{
  var xmlhttp = false;
  for (var i=0;i<XMLHttpFactories.length;i++) 
	{
    try 
		{
      xmlhttp = XMLHttpFactories[i]();
    }
    catch (e) 
		{
      continue;
    }
    break;
  }
  return xmlhttp;
}


function sendRequest(url,callback,postData)
{
  //alert('sendRequest');

  var xmlhttp = GetXmlHttpObject();
  if (!xmlhttp) return;
  var method = (postData) ? "POST" : "GET";
  xmlhttp.open(method,url,true);
  xmlhttp.setRequestHeader('User-Agent','XMLHTTP/1.0');
	//xmlhttp.setRequestHeader('X-AJAX', 'True');
  if (postData)
    xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
  xmlhttp.onreadystatechange = function ()
    {
    //alert('readyState: '  + xmlhttp.readyState);
    if (xmlhttp.readyState != 4) return;
    if (xmlhttp.status != 200 && xmlhttp.status != 304)
        {
      alert('HTTP error ' + req.status);
      return;
    }
      callback(xmlhttp);
  }
  if (xmlhttp.readyState == 4) return;
  xmlhttp.send(postData);
}
//extract data from xmlhttp.responseText string
function GetResponseValues(datastring, key)
{
  var regexS = key+"=([^&#]*)";
  var results = datastring.match(regexS);
  if( results == null )
	{
    return "";
	}
  else
	{
    return results[1];
	}
}
