function showTip(event)
{
	if(typeof event=="undefined") event=window.event;
	var target = getEventTarget(event);
	while(target.className == null || !/(^| )hastooltip( |$)/.test(target.className))
	{
		target = target.parentNode;
	}
	var tip = document.createElement("div");
	var content = target.getAttribute("title");
	target.tooltip=tip;
	target.setAttribute("title","");
	tip.setAttribute("id","currentTooltip");

	tip.className = "tooltip";
	tip.innerHTML=content;

	var scrollingPosition = getScrollingPosition();
	var cursorPosition = getCursorPosition(event);

	tip.style.position = "absolute";
	tip.style.visibility = "hidden";
	document.getElementsByTagName("body")[0].appendChild(tip);
	var viewportSize = getViewportSize();
	if(cursorPosition[0] - scrollingPosition[0] + 10 + tip.offsetWidth > viewportSize[0] - 25)
		tip.style.left = scrollingPosition[0] + viewportSize[0] - 25 - tip.offsetWidth + "px";
	else
		tip.style.left = cursorPosition[0] + 10 + "px";
	if(cursorPosition[1] - scrollingPosition[1] + 10 + tip.offsetHeight > viewportSize[1] - 25)
	{
		if(event.clientX > (viewportSize[0] - 25 - tip.offsetWidth))
			tip.style.top = cursorPosition[1] - tip.offsetHeight - 10 + "px";
		else
			tip.style.top = scrollingPosition[1] + viewportSize[1] - 25 - tip.offsetHeight + "px";
	}
	else
		tip.style.top = cursorPosition[1] + 10 + "px";
	tip.style.visibility = "visible";
	initialize(tip);
	tip.style.width='0px';
	tip.style.height='0px';
	toggleSquish(tip);
	attachEventListener(document, "mousemove",mousemove, false);
	return true;
}

function positionTip(tip,cursorPosition,scrollingPosition,viewportSize)
{
	if(cursorPosition[0] - scrollingPosition[0] + 10 + tip.offsetWidth > viewportSize[0] - 25)
		tip.style.left = scrollingPosition[0] + viewportSize[0] - 25 - tip.offsetWidth + "px";
	else
		tip.style.left = cursorPosition[0] + 10 + "px";
	if(cursorPosition[1] - scrollingPosition[1] + 10 + tip.offsetHeight > viewportSize[1] - 25)
	{
		if(event.clientX > (viewportSize[0] - 25 - tip.offsetWidth))
			tip.style.top = cursorPosition[1] - tip.offsetHeight - 10 + "px";
		else
			tip.style.top = scrollingPosition[1] + viewportSize[1] - 25 - tip.offsetHeight + "px";
	}
	else
		tip.style.top = cursorPosition[1] + 10 + "px";
	return true;
}

function hideTip(event)
{
	if(typeof event == "undefined") event = window.event;
	var target = getEventTarget(event);
	while (target.className == null || !target.className.match(/(^| )hastooltip( |$)/))
	{
		target = target.parentNode;
	}
	if(target.tooltip != null)
	{
		target.setAttribute("title", target.tooltip.innerHTML);
		target.tooltip.parentNode.removeChild(target.tooltip);
	}
	detachEventListener(document, "mousemove",mousemove, false);
	return false;
}