/***********************************************
* Cool DHTML tooltip script II- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

//Customize x offset of tooltip
var offsetfromcursorX = 12;
//Customize y offset of tooltip
var offsetfromcursorY = 10;

//Customize x offset of tooltip DIV relative to pointer image
var offsetdivfrompointerX = 10;
//Customize y offset of tooltip DIV relative to pointer image. Tip: Set it to (height_of_pointer_image-1).
var offsetdivfrompointerY = 14;


var objBrowser = navigator.appName;
var ie = document.all;
var ns6 = document.getElementById && !document.all;
var enabletip = false;
var objDefBox = document.getElementById( 'imageCaption' );
var objDefPointer = document.getElementById( 'imageCaptionPointer' );
var objDefPointerLow = document.getElementById( 'imageCaptionPointerLow' );

function ietruebody( )
{
	return ( document.compatMode && document.compatMode != 'BackCompat' ) ? document.documentElement : document.body;
}

function DisplayImageCaption( thetext, thewidth )
{
	if ( thetext != '' )
	{
		if ( ns6 || ie )
		{
			if ( typeof thewidth != 'undefined' )
			{
				objDefBox.style.width = thewidth + 'px';
			}
			
			objDefBox.innerHTML = thetext;
			enabletip = true;
			return false;
		}
	}
}

function HideImageCaption()
{
	if( ns6 || ie )
	{
		enabletip = false;
		objDefBox.style.visibility = 'hidden';
		objDefPointer.style.visibility = 'hidden';
		objDefPointerLow.style.visibility = 'hidden';
		objDefBox.style.left = '-1000px';
		objDefBox.style.backgroundColor = '';
		objDefBox.style.width = '';
	}
}

function positiontip( e )
{
	if ( enabletip )
	{
		var nondefaultpos = false;
		var curX = (ns6)?e.pageX : event.clientX+ietruebody().scrollLeft;
		var curY = (ns6)?e.pageY : event.clientY+ietruebody().scrollTop;
		//Find out how close the mouse is to the corner of the window
		var winwidth = ie && !window.opera? ietruebody().clientWidth : window.innerWidth-20;
		var winheight = ie && !window.opera? ietruebody().clientHeight : window.innerHeight-20;
		
		var rightedge = ie && !window.opera? winwidth-event.clientX-offsetfromcursorX : winwidth-e.clientX-offsetfromcursorX;
		var bottomedge = ie && !window.opera? winheight-event.clientY-offsetfromcursorY : winheight-e.clientY-offsetfromcursorY;
		
		var leftedge = ( offsetfromcursorX < 0 )? offsetfromcursorX * ( -1 ) : -1000;
		
		//if the horizontal distance isn't enough to accomodate the width of the context menu
		if( rightedge < objDefBox.offsetWidth )
		{
			//move the horizontal position of the menu to the left by it's width
			objDefBox.style.left = curX - objDefBox.offsetWidth + 'px';
			nondefaultpos = true;
		}
		else if ( curX < leftedge )
		{
			objDefBox.style.left = '5px';
		}
		else
		{
			//position the horizontal position of the menu where the mouse is positioned
			objDefBox.style.left = curX + offsetfromcursorX - offsetdivfrompointerX + 'px';
			objDefPointer.style.left = curX + offsetfromcursorX + 'px';
			objDefPointerLow.style.left = curX + offsetfromcursorX + 'px';
		}
		
		//same concept with the vertical position
		if( bottomedge < objDefBox.offsetHeight )
		{
			objDefBox.style.top = curY - objDefBox.offsetHeight - offsetfromcursorY + 'px';
			if ( objBrowser == 'Microsoft Internet Explorer' )
			{
				objDefPointerLow.style.top = curY - 19 + 'px';
			}
			else
			{
				objDefPointerLow.style.top = curY - 11 + 'px';
			}
			nondefaultpos = true;
		}
		else
		{
			objDefBox.style.top = curY + offsetfromcursorY + offsetdivfrompointerY + 'px';
			objDefPointer.style.top = curY+offsetfromcursorY + 'px';
		}
		objDefBox.style.visibility = 'visible';
		if( !nondefaultpos )
		{
			objDefPointer.style.visibility = 'visible';
			objDefPointerLow.style.visibility = 'hidden';
		}
		else
		{
			objDefPointer.style.visibility = 'hidden';
			objDefPointerLow.style.visibility = 'visible';
		}
	}
}

document.onmousemove = positiontip;
