// JavaScript Document
error = new Object();
error.display_error = function(error){
	alert(error);
}

/*snagged from developer.apple.com
and later updated with sitepoint.com stuff
tweaked somewhat for our uses, naturally.
*/
function kfajax() {
	var numargs = kfajax.arguments.length;
	var url = kfajax.arguments[0];
	if(numargs > 1){
		var callback = kfajax.arguments[1];
		var type = kfajax.arguments[2];
	}else{
		var callback = 'error.display_error';
		var type = 'eval';
	}
	if(numargs > 3){
		var method = kfajax.arguments[3];
		var postvars = kfajax.arguments[4];
	}else{
		var method = 'GET';
		var postvars = null;
	}
	xml = false;
	if (window.XMLHttpRequest) {
		try {
			xml = new XMLHttpRequest();
		} catch (e) {
			xml = false;
		}
	}else if(window.ActiveXObject){
		try {
			xml = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xml = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
				xml = false;
			}
		}
	}
	if(!xml){
		//error.display_error('XML not supported!');
		return false;
	}
	xml.open(method,url,true);
	if(method == 'POST'){
		//alert(postvars + ' ' + method);
		xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	}
	xml.onreadystatechange = function(){
		if (xml.readyState == 4) {
			if (xml.status == 200) {
				switch(type){
					case 'eval':
						eval(xml.responseText);
						break;
					case 'xml':
					case 'XML':
						eval(callback + '(xml.responseXML);');
						break;
					default:
						eval(callback + '(xml.responseText);');
				}
			}else if(xml.status == 0){
				//nada
			}else{
				error.display_error('Unhandled status: '+ xml.status+"\n"+xml.responseText);
			}
		}
	}
	xml.send(postvars);
	return true;
}
