postback = function(Address)
{
  this.Address=Address || "";
  this.Results="";
  this.Parameters="";
};

postback.prototype.Retrieve = function()
{
  var XMLHttp=null;
  var Error_text="";
  
  if((XMLHttp)&&(XMLHttp.readyState!=0))
    XMLHttp.abort()

  XMLHttp=getXMLHTTP();
  if(XMLHttp)
  {
    XMLHttp.open("GET",this.Address + "?" + this.Parameters + "&rand=" + Math.random(),true);
    XMLHttp.onreadystatechange=function()
    {
      if(XMLHttp.readyState==4&&XMLHttp.responseText)
      {
        if(XMLHttp.responseText.charAt(0)=="<")
        {
          _timeoutAdjustment--
        }else{
          try{
            eval(XMLHttp.responseText);
          }catch(E){
            switch(E.name){
              case "EvalError":Error_text="Evaluation error";break;
              case "RangeError":Error_text="Out of range error";break;
              case "ReferenceError":Error_text="Reference error";break;
              case "SyntaxError":Error_text="Syntax error";break;
              case "TypeError":Error_text="Variable type error";break;
              case "URIError":Error_text="URI error";break;
              default: Error_text="Unspecified error";break;
            };
            alert("Error name: " + Error_text + "\nError message: " + E.message);
            alert(XMLHttp.responseText);
          };
        };
      };
    };
    XMLHttp.send(null)
  }
};

//Private Function
function getXMLHTTP()
{
  //var
  var ActiveX=null;
  //var
  
  try
  {
    ActiveX=new ActiveXObject("Msxml2.XMLHTTP")
  }catch(e){
    try
    {
      ActiveX=new ActiveXObject("Microsoft.XMLHTTP")
    }catch(oc){
      ActiveX=null
    };
  };
  if(!ActiveX && typeof XMLHttpRequest != "undefined")
    ActiveX=new XMLHttpRequest()

  return ActiveX
};