var req;					//xmlhttprequest object
var divHandle;				//id of the div currently scheduled to get html
var callBackFunc = null; 	//call back function when html is returned

//get content into the div newid
function getContent(url, newid) {
	getContentWithCallback(url, newid, null);
}

//get content from url, put into newid and call callback when through
function getContentWithCallback(url, newid, callback) {
	//only allow new requests if one has never been made before or if last one is finished
	if ((req == null) ) {
	if ((req == null) || (req.readyState == 4)) {
		//init request object
		req = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            req = new XMLHttpRequest();
        } else if (window.ActiveXObject) { // IE
            try {
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!req) {	//debug
            alert('Cannot create an XMLHTTP instance');
            return false;
        }
		
		divHandle = getElementHandle(newid);
		callBackFunc = callback;
		
		if(req!=null) {
			req.onreadystatechange = processHTML;
			req.open("GET", url, true);
			req.send(null);
		}
	} //else {	//deubg
		//alert("couldn't start request for " + url + "\ndue to req's readystate set to " + req.readyState);
	}
}

//process the html returned by req
function processHTML() {
	if (req.readyState == 4) {
		if (req.status == 200) {	// only if "OK"
			if(req.responseText=="")
				;	//do nothing, response is blank
			else {
				divHandle.innerHTML=req.responseText;
				if (callBackFunc != null) { callBackFunc(); }
			}
		} else {
			divHandle.innerHTML="There was a problem retrieving data:<br>" + req.statusText;
		}
	} //else {	//debug
		//alert("ready state = " + req.readyState);
	//}
}

function getElementHandle(elemID) {
	if (document.layers)
		return document.layers[elemID];
	else
		return document.getElementById(elemID);
}