
function makeAjaxRequest(url, callback) {
    var http_request = CreateRequest();
    
    if(!http_request) { return null; }
    http_request.onreadystatechange = function() { alertContents(http_request, callback); };
    http_request.open('GET', url, true);
    http_request.send(null);
}

function makeAjaxPostRequest(url, formName, callback) {
    var http_request = CreateRequest();
    var parameters = formData(formName);
    
    if(!http_request) { return null; }
    http_request.onreadystatechange = function() { alertContents(http_request, callback); };
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    http_request.send(parameters);
}

function CreateRequest() {
	var http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
            // See note below about this line
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
		    alert('Giving up :( Cannot create an XMLHTTP instance');
        return null;
    }
    return http_request;
}

function alertContents(http_request, callback) {

    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            callback(http_request.responseText);
        } else {
            return false;
        }
    }
}

function formData(formName) {
	var getstr = "";
	var obj;
	
	obj = document.getElementById(formName);
	for (i=0; i<obj.elements.length; i++) {
      if (obj.elements[i].type == "text" || obj.elements[i].type == "submit" || obj.elements[i].type == "textarea" || obj.elements[i].type == "hidden" || obj.elements[i].type == "password") {
				  getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
      }
      if (obj.elements[i].type == "checkbox") {
          if (obj.elements[i].checked) {
            getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
          } else {
            getstr += obj.elements[i].name + "=&";
          }
      }
      if (obj.elements[i].type == "radio") {
          if (obj.elements[i].checked) {
            getstr += obj.elements[i].name + "=" + obj.elements[i].value + "&";
          }
      }
      if (obj.elements[i].type == "select-one") {
        var sel = obj.elements[i];
        getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
      }
  }
  return getstr;
}

