
// Written by Wouter Bolsterlee <uws@xs4all.nl>
// BSD License. Do whatever you want!

function installTooltips() {

	// create the tooltip div
	var tooltip = document.createElement("div");
	tooltip.setAttribute("id", "tooltip");
	tooltip.style.position = 'absolute';
	tooltip.appendChild(document.createElement('h2'));
	tooltip.firstChild.appendChild(document.createTextNode(''));
	document.getElementById("body").appendChild(tooltip);

	// attach mouse handlers to images
	var images = document.images;
	var image;
	for (var i = 0; i < images.length; i++) {
		image = images[i];
		var alt = image.getAttribute("alt");
		var title = image.getAttribute("title");
		if (alt && title) { // only if both alt and title are set
			image.onmousemove = showTooltip;
			image.onmouseout = hideTooltip;
			// :FIXME: Move orig_alt and orig_title code. This can be done
			// right here.
		}
	}
}

function getMousePosition(event) {
	if (event.pageX || event.pageY) {
		x = event.pageX;
		y = event.pageY; }
	else if (event.clientX || event.clientY) {
		x = event.clientX + document.body.scrollLeft;
		y = event.clientY + document.body.scrollTop;
	}
	return [x, y];
}

function showTooltip(event) {
	// event
	if (!event) {
		if (window.event)
			event = window.event;
		else
			return true;
	}

	// target
	var target;
	if (event.target)
		target = event.target;
	else if (event.srcElement)
		target = event.srcElement;
	if (target.nodeType == 3) // Safari bug
		target = target.parentNode;

	// tooltip div
	var tooltip;
	tooltip = document.getElementById("tooltip");

	// current image
	var img = target;

	// mouse position
	var mouseCoords = getMousePosition(event);
	x = mouseCoords[0];
	y = mouseCoords[1];

	// set tooltip content
	var title, description;
	if (!img.getAttribute("orig_alt")) {
		title = new String(img.getAttribute("alt"));
		img.setAttribute("orig_alt", title);
	} else {
		title = img.getAttribute("orig_alt");
	}
	if (!img.getAttribute("orig_title")) {
		description = new String(img.getAttribute("title"));
		img.setAttribute("orig_title", description);
	} else {
		description = img.getAttribute("orig_title");
	}

	tooltip.firstChild.firstChild.nodeValue = title;
	img.setAttribute("alt", "");
	img.setAttribute("title", "");

	// move tooltip
	x += 20;
	y += 20;
	tooltip.style.left = x + "px";
	tooltip.style.top = y + "px";

	// show tooltip
	tooltip.style.display = 'block';

	return true;
}

function hideTooltip(event) {
	// event
	if (!event) {
		if (window.event)
			event = window.event;
		else
			return;
	}

	// target
	var target;
	if (event.target)
		target = event.target;
	else if (event.srcElement)
		target = event.srcElement;
	if (target.nodeType == 3) // Safari bug
		target = target.parentNode;

	// tooltip div
	var tooltip;
	tooltip = document.getElementById("tooltip");

	// current image
	var img = target;

	// set alt= and title= content
	img.setAttribute("alt", img.getAttribute("orig_alt"));
	img.setAttribute("alt", img.getAttribute("orig_title"));

	// hide tooltip
	tooltip.style.display = 'none';

	return true;
}

window.onload = installTooltips;

//function externalLinks() {
//	if (!document.getElementsByTagName) return;
//	var anchors = document.getElementsByTagName("a");
//	for (var i=0; i<anchors.length; i++) {
//		var anchor = anchors[i];
//		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
//			anchor.target = "_blank";
//		}
//	}
//}
//window.onload = externalLinks;
