var xmlDoc;

function ajaxrequest(dest) {
	
	var url, querystring;
	
	
	var xmlhttp = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		xmlhttp = new XMLHttpRequest();
		if (xmlhttp.overrideMimeType) {
			xmlhttp.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!xmlhttp) {
		alert("Your browser cannot handle this script.");
		return false;
	}
		
	
	url = null;
	querystring = null;
	var aPart = dest.split("?");
	if (aPart && aPart.length>1) {
		url = aPart[0];
		querystring = aPart[1];
	} else {
		// no querystring, or invalid format (2+ question marks)
		url = dest;
	}

	url = url + ((url.indexOf("?")>=0) ? "&" : "?") + "_ct=" + new Date().getTime();
	
	xmlhttp.onreadystatechange = function() { httptriggered(xmlhttp); };
	xmlhttp.open("POST", url, true);
	xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
	xmlhttp.send(querystring);
}


function httptriggered(xmlhttp) {
	var o;
	if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
		loadXML(xmlhttp.responseText);
	}
}


function loadXML(xml) {
	if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.loadXML(xml);
		ajaxresponse();
	} else if (document.implementation && document.implementation.createDocument) {
		var vParser = new DOMParser();
		xmlDoc = vParser.parseFromString(xml, "text/xml");
		ajaxresponse();
	} else {
		alert('Your browser cannot handle this script.');
	}
}


function getInnerText(node) {
	if (typeof node.textContent != 'undefined') {
		return node.textContent;
	} else if (typeof node.innerText != 'undefined') {
		return node.innerText;
	} else if (typeof node.text != 'undefined') {
		return node.text;
	} else {
		switch (node.nodeType) {
			case 3:
			case 4:
				return node.nodeValue;
				break;
			case 1:
			case 11:
				var innerText = '';
				for (var i = 0; i < node.childNodes.length; i++) {
					innerText += getInnerText(node.childNodes[i]);
				}
				return innerText;
				break;
			default:
				return '';
		}
	}
}
