function doAjax() {

	prepareLinks("new","newsubmissions");
	prepareLinks("comments","newcomments");
	prepareLinks("search","searchresults");
	prepareLinks("requests","newrequests");

}

addLoadEvent(doAjax);

function prepareLinks(parentId,containerId) {

	if (!document.getElementById) return false;

	if (!document.getElementById(parentId)) return false;

	if (!document.getElementById(containerId)) return false;

	var lnks = document.getElementById(parentId).getElementsByTagName("a");

	for (var i=0; i< lnks.length; i++) {

		if (lnks[i].getAttribute("href").indexOf("/index.php/"+parentId+"?") > -1 && lnks[i].getAttribute("href").indexOf("#") == -1) {

			var lnk = lnks[i].href.match(/\?(\w.+)/)[1];

			lnks[i].containerId = containerId;

			lnks[i].url = "/includes/ajax/"+containerId+".php?"+lnk+"&area="+area;

			lnks[i].action = function() { displayNewest(parentId,containerId); }

			lnks[i].onclick = function() {

				ajax = getHTTPObject();
			
				if (!ajax) return true;

				displayLoading(this.containerId);

				loadXMLDoc(this.url,this.action);

				return false;

			}

			lnks[i].onkeypress = lnks[i].onclick;

		}
	}
}

function displayLoading(containerId) {

	var message = '<img src="/images/loading.gif" alt="Loading..." />';

	var container = document.getElementById(containerId);

	insertFragment(container,message);

	scrollTo(0,0);

}

function displayNewest(parentId,containerId) {

	if (ajax.readyState != 4) return false;

	if (ajax.status != 200) return false;

	var container = document.getElementById(containerId);

	var content = ajax.responseText;

	insertFragment(container,content);

	prepareLinks(parentId,containerId);

}

function loadXMLDoc(url,action) {

	ajax.onreadystatechange = action;
	ajax.open("GET", url, true);
	ajax.send(null);

}

function insertFragment(element,content) {

	if (typeof document.body.innerHTML == 'string') {

		element.innerHTML = content;

	} else if (typeof window.Range != 'undefined' && typeof Range.prototype.createContextualFragment == 'function') {

		var rng = document.createRange();
	
		rng.setStartBefore(element);
	
		var htmlFrag = rng.createContextualFragment(content);
	
		while (element.hasChildNodes()) {
	
			element.removeChild(element.lastChild);
	
		}
	
		element.appendChild(htmlFrag);

	} else {

		return false;

	}
}

function getHTTPObject() {

	try {

		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");

	} catch (e) {

		try {

			var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

		} catch (e) {

			try {

				var xmlhttp = new XMLHttpRequest();

			} catch (e) {

				var xmlhttp = false;

			}
		}
	}

	return xmlhttp;

}