var http_request=false;
var ajax_function=false;
var ajax_function_err=false;
var ajax_alert_err = true;
var callbackFunction;

function prepareAJAXHTTPEl(type)
 {
  http_request=false;

// Mozilla, Safari,...
  if (window.XMLHttpRequest)
   {
    http_request=new XMLHttpRequest();
    if (http_request.overrideMimeType)
     { http_request.overrideMimeType(type); }
   }
// IE
  else if (window.ActiveXObject)
   {
    try { http_request=new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e)
     {
      try { http_request=new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) {}
     }
   }

  if (!http_request)
   {
//    alert('Your browser does not support this option');
    return false;
   }
  else
   { return http_request; }
 }

function makeRequest(url)
 {
  var http_request=prepareAJAXHTTPEl('text/xml');
  if (!http_request || typeof callbackFunction=='undefined') { return false; }
  if(typeof callbackFunction=='function'){
	 http_request.open('GET', url, true);
	http_request.onreadystatechange=callbackFunction;
	  http_request.send(null);
  }
 }

function postRequest(url, params)
 {
  var http_request=prepareAJAXHTTPEl('text/html');
  if (!http_request) { return false; }
  http_request.onreadystatechange=alertContents;
  var d, i, paramsURI='';
  if (params)
   {
    for (i in params)
     { paramsURI+='&'+i+'='+encodeURI(params[i]).replace(/\&/g,'%26').replace(/\+/g,'%2B'); }
    paramsURI=paramsURI.substring(1, paramsURI.length);
   }
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", paramsURI.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(paramsURI);
 }

function alertContents()
 {
  if (http_request.readyState==4)
   {
    if ((http_request.status==200)&&(ajax_function!=false))
     { ajax_function(http_request.responseText); }
    else if (ajax_function_err!=false)
     { ajax_function_err(); }
    else if (ajax_alert_err!=false)
     { alert('There was an error. please try again.'); }
   }
 }

