function ahah(url, target, delay) {
	// document.getElementById(target).innerHTML = '&hellip;';
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if (req != undefined) {
		alert(url);
		req.onreadystatechange = function() { ahahDone(url, target, delay); };
		req.open("GET", url, true);
		req.send("");
	}
}  

function ahahDone(url, target, delay) {
	if (req.readyState == 4) { // only if req is "loaded"
		if (req.status == 200) { // only if "OK"
			document.getElementById(target).innerHTML = '';
			document.getElementById(target).innerHTML = req.responseText;
		} else {
			document.getElementById(target).innerHTML = "error:\n" + req.statusText;
		}

		if (delay != undefined) {
			setTimeout("ahah(url,target,delay)", delay); // resubmit after delay
			//server should ALSO delay before respondingv
		}
	}
}

function ahahByID(url, sourceid, target, delay) {
	// document.getElementById(target).innerHTML = '&hellip;';
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}

	if (req != undefined) {
		source = document.getElementById(sourceid);
		urlplus = source.innerHTML;
		req.onreadystatechange = function() { ahahDone(url+urlplus, target, delay); };
		req.open("GET", url+urlplus, true);
		req.send("");
	}
}  


