// Core functionality for AJAX requests:

// Get new xmlhttp object
function get_new_xmlhttp_object() {
  objXmlHttp = false; // IE Check bool
  // Check for IE
  try {
    objXmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); // Javascript > 5
  } catch (e) {
    // Older version of IE
    try {
      objXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
      objXmlHttp = false; // Not using IE
    }
  }
  // Instantiate xmlhttp object if not IE
  if(!objXmlHttp && typeof(XMLHttpRequest != 'undefined')) {
    objXmlHttp = new XMLHttpRequest();
  }
  return objXmlHttp;
}

// Submit AJAX request to specified script, return data retrieved to a callback function
function ajax_request(phpFile, phpParams, callback) {
  var params = "";
  if(phpParams) {
    params = "?" + phpParams;
  }
  xmlhttp = get_new_xmlhttp_object();
  xmlhttp.open("GET", "ajax/" + phpFile + ".php" + params);
  xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
      callback.call(xmlhttp.responseText);
    }
  }
  xmlhttp.send(null);
}

// Update the value of an element property (e.g. 'innerHTML') with data retrieved via AJAX
function ajax_get_data(phpFile, phpParams, element, property) {
  var callback = function() {
    if(document.getElementById(element)) {
      document.getElementById(element)[property] = this;
    }
  };
  ajax_request(phpFile, phpParams, callback);
}
