
var httpRequest_check;

function makeRequest(url, postdata)
{
  var httpRequest;

  // Mozilla, Safari, ...
  if(window.XMLHttpRequest)
  {
    httpRequest = new XMLHttpRequest();
    httpRequest_check = httpRequest;

    if (httpRequest.overrideMimeType)
    {
      httpRequest.overrideMimeType('text/xml');
    }
  }
  // IE
  else if(window.ActiveXObject)
  {
    try
    {
      httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
      try
      {
        httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch(e) {}
    }
  }
  else
  {
    //alert('Your Browser is not compatible.');
    return false;
  }

  if(!httpRequest)
  {
    //alert('Giving up :] Cannot create an XMLHTTP instance');
    return false;
  }

  httpRequest.onreadystatechange = function() { replaceContents(httpRequest, url); };

  httpRequest.open('POST', url, true);
  httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

  if(postdata)
    httpRequest.send("AJAX=true&" +postdata);

  return true;
}

function replaceContents(httpRequest, url)
{
  if(httpRequest.readyState == 4)
  {
    var returnstatus = httpRequest.status;

    if(returnstatus == 200)
    {
      var xmldoc = httpRequest.responseXML;

      var target = xmldoc.getElementsByTagName('target').item(0);
      var content = xmldoc.getElementsByTagName('content').item(0);
      var script = xmldoc.getElementsByTagName('script').item(0);

      // insert content
      if(content.firstChild)
      {
        if(target.firstChild)
          document.getElementById(target.firstChild.data).innerHTML = content.firstChild.data;
      }

      // Dyn. Scripts
      if(script.firstChild)
      {
        eval(script.firstChild.data);
      }
    }
    else if(returnstatus == 0)
    {
      return;
    }
    else
    {
      alert('There was a problem with the request.');
    }
  }
}

