function createDynamicTip ()
{
	offsetFromCursorX = 10;
	offsetFromCursorY = 10;
	var dynamicTipHolder = document.createElement('div');
	dynamicTipHolder.setAttribute('id', 'dhtmltooltip');
	dynamicTipHolder.style.position = 'absolute';
	dynamicTipHolder.style.top = '0';
	dynamicTipHolder.style.width = '150px';
	dynamicTipHolder.style.zIndex = 1000;
	dynamicTipHolder.style.backgroundColor = 'lightyellow';
	dynamicTipHolder.style.visibility = 'hidden';
	dynamicTipHolder.style.padding = '0px';
	dynamicTipHolder.style.border = '0px';
	document.body.appendChild(dynamicTipHolder);	
	dynamicTipEnabled = 0;
	dynamicTipObject = document.getElementById('dhtmltooltip');
	document.onmousemove = positionDynamicTip;
} // end: createDynamicTip

function showDynamicTip(dynamicTipContent, dynamicTipInvoker)
{
		dynamicTipObject.innerHTML = dynamicTipContent;
		dynamicTipEnabled = 1;
		dynamicTipInvoker.onmouseout = hideDynamicTip;
} // end: showDynamicTip

function positionDynamicTip (e)
{
	if (dynamicTipEnabled)
	{
		var ieTrueBody = (document.compatMode && document.compatMode != 'BackCompat') ? document.documentElement : document.body;
		var currentX = (document.getElementById && !document.all) ? e.pageX : event.clientX+ieTrueBody.scrollLeft;
		var currentY = (document.getElementById && !document.all) ? e.pageY : event.clientY+ieTrueBody.scrollTop;
		var windowWidth = document.all && !window.opera ? ieTrueBody.clientWidth : window.innerWidth-20;
		var windowHeight = document.all && !window.opera ? ieTrueBody.clientHeight : window.innerHeight-20;		
		var rightedge = document.all && !window.opera ? windowWidth-event.clientX-offsetFromCursorX : windowWidth-e.clientX-offsetFromCursorX;
		var bottomedge = document.all && !window.opera ? windowHeight-event.clientY-offsetFromCursorY : windowHeight-e.clientY-offsetFromCursorY;		
		var leftedge = (offsetFromCursorX<0) ? offsetFromCursorX*(-1) : -1000;		
		dynamicTipObject.style.left = (rightedge < dynamicTipObject.offsetWidth) ? currentX-dynamicTipObject.offsetWidth+'px' : (currentX < leftedge) ? dynamicTipObject.style.left = '5px' : currentX+offsetFromCursorX+'px';
		dynamicTipObject.style.top = (bottomedge < dynamicTipObject.offsetHeight) ? currentY-dynamicTipObject.offsetHeight-offsetFromCursorY+'px' : currentY+offsetFromCursorY+'px';
		dynamicTipObject.style.visibility = 'visible';
	}
} // end: positionDynamicTip

function hideDynamicTip ()
{
		dynamicTipEnabled = 0;
		dynamicTipObject.style.visibility = 'hidden';
		dynamicTipObject.style.left = '-1000px';
} // end: hideDynamicTip

createDynamicTip();

