var POSTDATA = "";

function request(url, callback, postobj)
{
  req = false;
  postdata = postDataToString(postobj);
  
  if (window.XMLHttpRequest)
  {
    try
    {
      req = new XMLHttpRequest();
    }
    catch (e)
    {
      req = false;
    }
  }
  else if (window.ActiveXObject)
  {
    try
    {
      req = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
      req = false;
    }
  }
  if (req)
  {
    req.onreadystatechange =
      function()
      {
        if (req.readyState == 4)
        {
          json = req.responseText;
          try {
            eval("result = { 'result': " + json + " }");
          }
          catch (e)
          {
            result = {};
            result["error"] = e;
          }

          result["status"] = req.status;
          result["response"] = json;
          
          callback(result);
        }
      };
      
    if (postdata.length > 0)
    {
      req.open("POST",url,true);
      req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      req.setRequestHeader("Content-length", postdata.length);
      req.setRequestHeader("Connection", "close");
      req.send(postdata);
    }
    else
    {
      req.open("GET",url,true);
      req.send(0);
    }
  }
}

function postDataToString(postdata)
{
  result = "";
  sep = "";
  
  for (var key in postdata)
  {
    result += sep + key + "=" + postdata[key];
    sep = "&";
  }
  return result;
}
