/*
	Zeigt eine Mouse-Over-Popup-Box an.

	Verwendungsbeispiel:
	onmouseover="mdxShowToolTip(this, '<div style=\'border:1px solid #000;\'><img src=\'%db02%\'></div>');" onmouseout="mdxHideToolTip();"
*/

var mdxToolTip = null, mdxToolTipCursorX, mdxToolTipCursorY;

function mdxShowToolTip(which, html, xOffset, yOffset) {
	if (mdxToolTip != null) {
		document.body.removeChild(mdxToolTip);
		mdxToolTip = null;
	}

	function setPosition() {
		var x = mdxToolTipCursorX, y = mdxToolTipCursorY;

		x += (typeof xOffset != 'undefined' ? xOffset : 10);
		y += (typeof yOffset != 'undefined' ? yOffset : 0);

		if (y + mdxToolTip.clientHeight > getScrollY() + getViewportHeight()) {
			y = getScrollY() + getViewportHeight() - mdxToolTip.clientHeight;
		}

		mdxToolTip.style.left = x + "px";
		mdxToolTip.style.top = y + "px";
	}

	which.onmousemove = function (e) {
		if (!e) {
			mdxToolTipCursorX = event.clientX + getScrollX();
			mdxToolTipCursorY = event.clientY + getScrollY();
		} else {
			mdxToolTipCursorX = e.pageX;
			mdxToolTipCursorY = e.pageY;
		}

		if (mdxToolTip == null) {
			var div = document.createElement("div");
			div.innerHTML = html;
			div.style.position = "absolute";
			div.style.zIndex = "100000";
			div.style.visibility= "hidden";
			mdxToolTip = document.body.appendChild(div);
			var imgs = mdxToolTip.getElementsByTagName('img');
			for (var i = 0; i < imgs.length; i++) {
				imgs[i].onload = (function (tt) { return function (e) { if (tt === mdxToolTip) setPosition(); }; })(mdxToolTip);
			}

			setPosition();
			mdxToolTip.style.visibility = "visible";
		} else {
			setPosition();
		}
	}

	function getScrollX() {
		if (window.pageXOffset) {
			return window.pageXOffset;
		} else if (document.documentElement && document.documentElement.scrollLeft) {
			return document.documentElement.scrollLeft;
		} else if (document.body) {
			return document.body.scrollLeft;
		} else {
			return 0;
		}
	}

	function getScrollY() {
		if (window.pageYOffset) {
			return window.pageYOffset;
		} else if (document.documentElement && document.documentElement.scrollTop) {
			return document.documentElement.scrollTop;
		} else if (document.body) {
			return document.body.scrollTop;
		} else {
			return 0;
		}
	}

	function getViewportHeight() {
		if (window.innerHeight) {
			return window.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) {
			return document.documentElement.clientHeight;
		} else if (document.body) {
			return document.body.clientHeight;
		} else {
			return 0;
		}
	}
}

function mdxHideToolTip() {
	if (mdxToolTip != null) {
		document.body.removeChild(mdxToolTip);
		mdxToolTip = null;
	}
}
