if (!window.Document) {
	window.Document = new Object();
}

Document.getScrollPosition = function() {
	if (typeof self.pageXOffset != "undefined") {
		return {x: self.pageXOffset, y: self.pageYOffset};
	} else if (document.body && typeof document.body.scrollTop != "undefined") {
		return {x: document.body.scrollLeft, y: document.body.scrollTop};
	} else if (document.documentElement && typeof document.documentElement.scrollTop != "undefined") {
		return {x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop};
	} else {
		return {x: 0, y: 0};
	}
};

Document.getViewportSize = function() {
	if (typeof window.innerWidth != "undefined") {
		return {w: window.innerWidth, h: window.innerHeight};
	} else if (typeof document.documentElement != "undefined"
		&& typeof document.documentElement.clientWidth != "undefined"
		&& document.documentElement.clientWidth != 0)
	{
		return {w: document.documentElement.clientWidth,
			h: document.documentElement.clientHeight};
	} else {
		var body = document.getElementsByTagName("body")[0];
		return {w: body.clientWidth, h: body.clientHeight};
	}
};

if (!window.Event) {
	window.Event = new Object();
}

Event.getMousePosition = function(e) {
	if (e.pageX || e.pageY) {
		return {x: e.pageX, y: e.pageY};
	} else if (e.clientX || e.clientY) {
		return {x: document.body.scrollLeft + e.clientX, y: document.body.scrollTop + e.clientY};
	} else {
		return {x: 0, y: 0};
	}
};

document.write("<div id=\"ttip\" class=\"Eventtooltip\" style=\"display: none; position: absolute; max-width: 200px;\"><\/div>");

ToolTip = {
	el: document.getElementById("ttip"),

	xBump: 10,
	yBump: 10,
	maximizeView: true,

	Show: function(text) {
		ToolTip.el.innerHTML = text;
		ToolTip.el.style.top = "-1000px";
		ToolTip.el.style.display = "block";
		ToolTip.visible = true;

		return false;
	},

	Move: function(e) {
		var viewport = Document.getViewportSize();
		var scrollpos = Document.getScrollPosition();

//		window.status = viewport.w + " " + viewport.h + " " + scrollpos.x + " " + scrollpos.y;
		
		var mousepos = Event.getMousePosition(e || window.event);

		var x = mousepos.x + ToolTip.xBump, y = mousepos.y + ToolTip.yBump;
		
		if (ToolTip.maximizeView) {
			var spaceBelow = scrollpos.y + viewport.h - mousepos.y;
			if (spaceBelow < ToolTip.el.offsetHeight) {
				var spaceAbove = mousepos.y - scrollpos.y;
				if (spaceAbove > spaceBelow) {
					y = mousepos.y - ToolTip.yBump - ToolTip.el.offsetHeight;
				}
			}
			
			var spaceRight = scrollpos.x + viewport.w - mousepos.x;
			if (spaceRight < ToolTip.el.offsetWidth) {
				var spaceLeft = mousepos.x - scrollpos.x;
				if (spaceLeft > spaceRight) {
					x = mousepos.x - ToolTip.xBump - ToolTip.el.offsetWidth;
				}
			}

			y = Math.max(y, scrollpos.y);
		}

		ToolTip.el.style.left = x + "px";
		ToolTip.el.style.top = y + "px";
	},

	Hide: function() {
		ToolTip.el.style.display = "none";
		ToolTip.el.innerHTML = "";
		ToolTip.visible = false;
	}
};

window.ShowTip = ToolTip.Show;
window.HideTip = ToolTip.Hide;
document.onmousemove = ToolTip.Move;

/*if (document.onmousemove) {
	var tooltipOldOnMouseMove = document.onmousemove;
	document.onmousemove = function(e) {
		tooltipOldOnMouseMove(e);
		ToolTip.Move(e);
	};
} else {
	document.onmousemove = ToolTip.Move;
}*/
