// name				ahah.js
// details		Asynchronous HTML and HTTP
// function		Update page data without refreshing the page
// syntax			do_ahah_request(<url>)
// paramaters	url to be called asynchronously 
// return			true or false and this.ahah_result with result/error details

function do_ahah_request(request_url){
  this.ahah_result = "";
  if (window.XMLHttpRequest){
    req = new XMLHttpRequest();
    req.onreadystatechange = function() {do_ahah_response();};
    req.open("GET", request_url, true);
    req.send(null);
  }else{
    if (window.ActiveXObject){
      req = new ActiveXObject("Microsoft.XMLHTTP");
      if (req){
        req.onreadystatechange = function() {do_ahah_response();};
        req.open("GET", request_url, true);
        req.send();
      }else{
        return false;
      }
    }else{
      return false;
    }
  }
  return true;
}

function do_ahah_post(post_url,post_params){
  this.ahah_result = "";
  if (window.XMLHttpRequest){
    req = new XMLHttpRequest();
  }else{
    if (window.ActiveXObject){
      req = new ActiveXObject("Microsoft.XMLHTTP");
  	}else{
  	  return false;
  	}
  }
  if (req){
    req.onreadystatechange = function() {do_ahah_response();};
    req.open("POST", post_url, true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	req.setRequestHeader("Content-length", post_params.length);
	req.setRequestHeader("Connection", "close");
    req.send(post_params);
  }else{
    return false;
  }
  return true;
}

function do_ahah_response(){
  if (req.readyState == 4){
    if ((req.status == 200) || (req.status == 304)){
      this.ahah_result = req.responseText;
    }else{
      this.ahah_result = "Error: " + req.statusText;
    }
  }
}