/* XMLHttprequest functions */

function load(url, target_div_id, args, callback){
	
	var req = 0;
	
	if(window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	req.onreadystatechange = function() { process_request(req, target_div_id, callback); };
	req.open("POST", url, true);
	req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	req.send(args);
	
	
}

function process_request(req, target_div_id, callback){
	// only if req shows "complete"
	
	if (req.readyState == 4) {
		if (req.status == 200) {
			if(target_div_id){		
				//alert(req.responseText);
				var target_div = document.getElementById(target_div_id);
				target_div.innerHTML = req.responseText;
				if(callback){
					callback();
				}
			}
		} else {
			alert("(error) target_div_id = " + target_div_id);
		}
	}
}

// similar to load() and process_request(), but instead of prefilling a div with
// the response, we just return the response.  Didn't want to break anything that
// depends on functionality present, so wrote a new function.
function getData(url, args, callback) {
   var req = 0;
   var data = null;
	
	if(window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	req.onreadystatechange = function() { 
	   if (req.readyState == 4) {
	      if (req.status == 200) {
	         data = req.responseText;
	         if (callback) callback(data);
	      }
	   }
   };
	
	req.open("POST", url, true);
	req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	req.send(args);
	
	if (data) {
	   return data;
   }
}