	function getXmlHttpRequestObject() {	
		if (window.XMLHttpRequest) {		
			return new XMLHttpRequest(); //Not IE	
		} else if(window.ActiveXObject) {		
			return new ActiveXObject("Microsoft.XMLHTTP"); //IE	
		} else {
			alert("Your browser doesn't support the XmlHttpRequest object.");	
		}
	}

	function getX(obj) {
	  var curleft = 0;
		if (obj.offsetParent) {
			while (obj.offsetParent) {
				curleft += obj.offsetLeft;
				obj = obj.offsetParent;
			}
		}
		else if (obj.x)
			curleft += obj.x;
		return curleft;
	}


	function getY(obj){
		var curtop = 0;
		if (obj.offsetParent){
			while (obj.offsetParent) {
				curtop += obj.offsetTop;
				obj = obj.offsetParent;
			}
		}
		else if (obj.y)
			curtop += obj.y;
		return curtop;
	}

	function show_def_div(span, receiveReq) {
		//Check to see if the XmlHttpRequests state is finished.
		if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
		//Set the contents of our span element to the result of the asyncronous call.
		//just to see if it moves
			document.getElementById('qgiv_def').style.display='block';			
			document.getElementById(span).innerHTML = receiveReq.responseText;
		}
	}

	function display_def(word, span) {
		args = "&def=" + escape(word);
		
		document.getElementById('qgiv_def').style.left = getX(span) + 20 + 'px';
		document.getElementById('qgiv_def').style.top = getY(span) + 20 + 'px';
		
		var req = getXmlHttpRequestObject();
		req.open("POST", "/util/def.php", true);
		req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8;');
		req.onreadystatechange = function () {show_def_div("qgiv_def_txt", req);};
		req.send(args);
	}
	
	// demo related functions
function getTimes(el) {
	var index = el.selectedIndex;
	var args = "time=" + escape( el.options[ index ].value )
	var req = getXmlHttpRequestObject();
	req.open("POST", "/live-demo/_times.php", true);
	req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=UTF-8;');
	req.onreadystatechange = function () { showTimes("date_time", req);};
	req.send(args);
}
function showTimes(id, receiveReq) {
	if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
		var el = document.getElementById(id);
		while ( el.childNodes.length > 0 ) {
			el.removeChild( el.childNodes[0] );
		}
		var lines = receiveReq.responseText.split("\r\n");
		var parts;
		for(var line in lines) {
			if(lines[line].length == 0)
				continue;
			parts = lines[line].split("|");
			
			var o = document.createElement('option');
			o.value = parts[0];
			o.innerHTML = parts[1];
			el.appendChild(o);
		}

		/*
		document.getElementById(id).innerHTML = receiveReq.readyState;
		document.getElementById(id).selectedIndex = 0;
		*/
	}
}
