// display dynamic content with infobox divs
// example: see /email_webspace/e-mail/

// send http requests
function sendHttpRequest(url, callbackFunc, respXml) {
	var xmlobj = null;
	try {
		xmlobj = new XMLHttpRequest();
	} catch (e) {
		try {
			xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e) {
			// alert('AJAX is not supported by your browser!');
			return false;
		}
	}
	xmlobj.onreadystatechange = function() {
		if (xmlobj.readyState == 4) {
			if (xmlobj.status == 200) {
				respXml ? eval(callbackFunc + '(xmlobj.responseXML)')
						: eval(callbackFunc + '(xmlobj.responseText)');
			}
		}
	}
	// open socket connection
	xmlobj.open('GET', url, true);
	// send http header
	xmlobj.setRequestHeader('Content-Type', 'text/html;charset=UTF-8');
	// send http request
	xmlobj.send(null);
}
// display fill infobox divs with server contents
function displayResults(content) {
	var infoboxdiv = document.getElementById('infobox');
	if (!infoboxdiv) {
		return
	};
	infoboxdiv.innerHTML = '';
	infoboxdiv.innerHTML = content;
}
// display infobox div element
function displayInfoBox(e) {
	hideInfoBox();
	var posx = 0;
	var posy = 0;
	if (!e) {
		var e = window.event
	};
	// determine target div
	var targ = e.target ? e.target : e.srcElement;
	// calculate mouse coordinates
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	} else if (e.clientX || e.clientY) {
		posx = e.clientX;
		posy = e.clientY;
		// check for scroll offsets in IE 6
		if (document.documentElement.scrollLeft
				|| document.documentElement.scrollTop) {
			posx += document.documentElement.scrollLeft;
			posy += document.documentElement.scrollTop;
		}
	}
	// assign attributes to infobox div element and append
	// it to web document tree
	var div = document.getElementById('infobox');
	if (!div) {
		var div = document.createElement('div');
		div.setAttribute('id', 'infobox');
		div.className = 'infoboxdiv';
		document.getElementsByTagName('body')[0].appendChild(div);
		// sendHttpRequest('info/index.html?type='+targ.id,'displayResults');
		sendHttpRequest(targ.id, 'displayResults');
	}
	// move infobox div element
	div.style.top = posy + 5 + 'px';
	div.style.left = posx + 5 + 'px';
}
// remove infobox div element
function hideInfoBox() {
	var div = document.getElementById('infobox');
	if (!div) {
		return
	};
	div.parentNode.removeChild(div);
}
// activate infobox div elements
function activateInfoBoxes() {
	var divs = document.getElementsByTagName('img');
	if (!divs) {
		return
	};
	for ( var i = 0; i < divs.length; i++) {
		if (divs[i].className == 'infoboxcontainer') {
			// display infobox div element
			divs[i].onclick = displayInfoBox;
			// hide infobox div element
			//divs[i].onmouseout = hideInfoBox;
		}
	}
}
// activate infobox div elements when web page has been
// loaded
window.onload = function() {
	if (document.getElementById && document.createElement
			&& document.createTextNode) {
		activateInfoBoxes();
	}
}
