function getHTTPObject()
{
    var req = getHTTPObject1();
    if (req == null)	
            req = getHTTPObject2();	
    return req;
}
function getHTTPObject2()
{
  var obj = null;
  try
  {
    obj = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e)
  {  }

  if (obj == null)
  {
    try
    {
      obj = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {}
  }
  
  if ((obj == null) && (typeof XMLHttpRequest != "undefined"))
    obj = new XMLHttpRequest();
  return(obj);
}
function getHTTPObject1()
{
  var xmlhttp = null;
  if (typeof XMLHttpRequest != 'undefined')
  {
    try
    {
      xmlhttp = new XMLHttpRequest();
    }
    catch (e)
    {
      dbg(iERR, "getHTTPObject\ncatch");
      xmlhttp = null;
    }
  }
  return xmlhttp;
}

var req  = null;	//fills "request", uses "response"

//req.responseXML	
//req.responseText
//req.open
//req.onreadystatechange
//req.send
//req.overrideMimeType
//req.setRequestHeader
//req.readyState
//req.status

function request()
{
    req = getHTTPObject();
    if (req == null)
    {
        dbg(iERR, "request\n!req");
        return false;
    }
    var d = new Date();
    var sUrl = getpath(getpath(self.location.href))+"/jipajax.jsp?tmstmp="+d.getMilliseconds();
    req.onreadystatechange = response;
    req.open("GET", sUrl, true);
    if (window.XMLHttpRequest)
    {
        req.send(null);
    }
    else if (window.ActiveXObject)	// branch for IE/Windows ActiveX version
    {
       req.send();
    }
    return true;
}
function response()
{
    if(req == null)
    {
        dbg(iERR, "response\n!req");
        return false;
    }
    if (req.readyState	!= 4)			//4 == "Complete" in ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
    {
        dbg(iINF, "response\nreq.readyState:"+req.readyState);	
        return false;
    }
    if (!responseIsSuccess(req))
    {
        dbg(iINF, "response\nreq.status:"+req.status);
        return false;
    }
    var oResponses = getelement("responses");
    if(!oResponses)
    {
        dbg(iINF, "response\n!oResponses:");	
        return false;
    }
    var sVal = oResponses.value;
    var sAnswer = req.responseText;
    sAnswer = trim(sAnswer);
    if(sVal != null && sVal != "")
        sVal = sVal+"\n"+sAnswer;
    else
        sVal = sAnswer;

    oResponses.value = sVal;
    return true;
}
function responseIsSuccess(_req)
{
    if(_req == null)		return false;
    if(_req.status == null)	return false;
    if(_req.status == 0)	return false;
    if(_req.status >= 200 && _req.status < 300)	return true;
    return false;
}

