function initXMLHR(page,target_id)
{
  //alert('initXMLHR target div: ' + target_id);
  var target_div_id = document.getElementById(target_id).id;
  var requester;
  try
  {
    requester = new XMLHttpRequest();
  }
  catch (error)
  {
    try
    {
      requester = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (error)
    {
      requester = null;
    }
  }

  if (requester != null)
  {
    requester.onreadystatechange = function()
    {
      if (requester.readyState == 4)
      {
        if (requester.status == 200 || requester.status == 304)
        {
          //alert("it was successful to call success")
          success(requester,target_div_id);
          return true;
        }
        else
        {
          failure(requester);
        }
      } 

      return true;
    };

    requester.open("GET", page);
    requester.send(null);
  }
  else
  {
    return false;
  }
  
  return true;
}


function success(requester,target_id)
{
  //alert('success target div: ' + target_id);
  var target_div_id = document.getElementById(target_id).id;
  //alert('success target div: ' + target_div_id);
  try
  {
    var data = requester.responseText;
    //alert('it tried to call TEXT');
  }
  catch (error)
  {
    var rawData = requester.responseXML.getElementsByTagName('data')[0];
    //alert('it tried to cal xml');
  }
  if(rawData)
  {
  var i, j, oneRecord, oneObject;
  var data = new Array( );
  for (i = 0; i < rawData.childNodes.length; i++) {
      if (rawData.childNodes[i].nodeType == 1) {
          oneRecord = rawData.childNodes[i];
          oneObject = data[data.length] = new Object( );
          for (j = 0; j < oneRecord.childNodes.length; j++) {
              if (oneRecord.childNodes[j].nodeType == 1) {
                  oneObject[oneRecord.childNodes[j].tagName] =
                      oneRecord.childNodes[j].firstChild.nodeValue;
              }
          }
      }
  }
  }
  //alert(data);
  processdata(data,target_div_id);
  //return data;
}

function failure(requester)
{
  alert("The XMLHttpRequest failed with status code: " + requester.status);

  return true;
}

function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}
function processdata(data,target_div_id)
{
 //alert('ProcessData target div: ' + target_div_id);
 var target=document.getElementById(target_div_id);
 //alert('ProcessData target div: ' + target);
 var Replacetext = "";
 var i;
 if(typeof data == "object")
 {
   for (i = 0; i < data.length; i++)
   {
    var subarray = data[i];
    var y;
    foreach(y in subarray)
    {
      Replacetext += " " +y+ " ";
    }
    Replacetext += "<br>\n";
   }
 }
 else
 {
   Replacetext += data + "<br>\n";
 }
 target.innerHTML = Replacetext;
}
