/*
Author: Doug Varn
Date Created: 12/22/08
Notes: This file is included to set up and execute any Ajax requests.
History:
*/

// cross-browser attempt to create an XMLHttpRequest object - thanks Jeremy Keith!
function getHTTPObject() {
  var xhr = false;
  if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    try {
      xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xhr = false;
      }
    }
  }
  return xhr;
}

/* calls for a new XMLHttpRequest and sends get command for file from server.
also sets readystatechange of HTTP object to a function that will swap original
element with response data*/
function updateElement(element,file, fn) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
      swapElementWithResponse(request,element);
			if(fn != null) {
				fn();
			}
    };
    request.open("GET", file, true);
    request.send(null);
  }
}

/* function gets passed the initially created XMLHttpRequest object and the
ID of the element the request will update.  this function is called by
updateElement() or any function that needs to display a response in this way */
function swapElementWithResponse(request,element) {
  if (request.readyState == 4) {
    if (request.status == 200 || request.status == 304) {
	 element.innerHTML = request.responseText;
	}
  }
}

function updateFormXML(file) {
  var request = getHTTPObject();
  if (request) {
    request.onreadystatechange = function() {
      if(request.readyState == 4 && (request.status == 200 || request.status == 304)) {
          var d = document.createElement("div");
          d.innerHTML = request.responseText;
          var divs = d.childNodes;
	      for(var i = 0; i < divs.length; i++) {
	        var div = divs[i];
	        if(div.id != null)
	          document.getElementById(div.id).innerHTML = div.innerHTML;
	      }
	   }
    }
    request.open("GET", file);
    request.send(null);
  }
}