/************************************************************************************************************
Ajax tooltip
Copyright (C) 2006  DTHMLGoodies.com, Alf Magne Kalleland

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
written by Alf Magne Kalleland.

Alf Magne Kalleland, 2006
Owner of DHTMLgoodies.com
	
************************************************************************************************************/	
/* Custom variables */
var ajax_tooltipObj = false;
var ajax_tooltipObj_iframe = false;
var contentDiv = false;

var ajax_tooltip_MSIE = false;
if(navigator.userAgent.indexOf('MSIE')>=0) ajax_tooltip_MSIE=true;

var ajax_tooltipId = '';
var ajax_lastinputObj;

function ajax_clickhideTooltip(e) 
{ 
	if(ajax_lastinputObj)
	{
		var posx = 0;
		var posy = 0;
		if (!e) var e = window.event;
		if (e.pageX || e.pageY) 	
		{
			posx = e.pageX;
			posy = e.pageY;
		}
		else if (e.clientX || e.clientY) 	
		{
			posx = e.clientX + document.body.scrollLeft
				+ document.documentElement.scrollLeft;
			posy = e.clientY + document.body.scrollTop
				+ document.documentElement.scrollTop;
		}

		var top = ajax_findTopPos(document.getElementById('ajax_tooltip_content'));
		var left = ajax_findLeftPos(document.getElementById('ajax_tooltip_content'));
		var tooltipWidth = document.getElementById('ajax_tooltip_content').offsetWidth;
		var tooltipHeight = document.getElementById('ajax_tooltip_content').offsetHeight;
		
		if(!(posx >= left && posx <= left+tooltipWidth && posy >= top && posy <= top + tooltipHeight))
		{
			ajax_hideTooltip();
		}
	}	
}

function ajax_cancelMouseDown(e)
{
	if (ajax_tooltip_MSIE) window.event.cancelBubble = true; else e.stopPropagation();
}

function ajax_toggleMenuTooltip(divId,inputObj)
{
	if (document.layers) document.captureEvents(Event.MOUSEDOWN);
	
	document.onmousedown=ajax_clickhideTooltip;
	inputObj.onmousedown=ajax_cancelMouseDown;
	
	if(ajax_tooltipId == '' || ajax_tooltipId != divId)
	{		
		ajax_showTooltip(divId,inputObj,'menu_tooltip',1);
		ajax_tooltipId = divId;
		ajax_lastinputObj = inputObj;		
	}
	else{ajax_hideTooltip();}
}

function ajax_toggleTooltip(externalFile,inputObj)
{
	if (document.layers) document.captureEvents(Event.MOUSEDOWN);
	
	document.onmousedown=ajax_clickhideTooltip;
	inputObj.onmousedown=ajax_cancelMouseDown;
	
	if(ajax_tooltipId == '' || ajax_tooltipId != externalFile)
	{		
		ajax_showTooltip(externalFile,inputObj,'ajax_tooltip_content',0);
		ajax_tooltipId = externalFile;
		ajax_lastinputObj = inputObj;		
	}
	else{ajax_hideTooltip();}
}

function ajax_showTooltip(externalFileOrDivId,inputObj,className,IsMenu)
{
	/* Tooltip div not created yet ? */
	if(!ajax_tooltipObj)	
	{
		ajax_tooltipObj = document.createElement('DIV');
		ajax_tooltipObj.style.position = 'absolute';
		ajax_tooltipObj.style.left = '10px';
		ajax_tooltipObj.style.top = '10px';
		ajax_tooltipObj.id = 'ajax_tooltipObj';
		document.body.appendChild(ajax_tooltipObj);
 
		/* Create tooltip content div */
		contentDiv = document.createElement('DIV');
		contentDiv.id = 'ajax_tooltip_content';

		ajax_tooltipObj.appendChild(contentDiv);
	}

	contentDiv.className = className;

	// Find position of tooltip
	ajax_tooltipObj.style.display = 'block';

	if(IsMenu == 0){
		ajax_loadContent('ajax_tooltip_content',externalFileOrDivId);
	}
	else{
		ajax_loadMenu('ajax_tooltip_content',externalFileOrDivId);
		ajax_MaskForIE6();
	}

	ajax_positionTooltip(inputObj, IsMenu);
}

function ajax_positionTooltip(inputObj, IsMenu)
{
	var leftPos = (ajax_findLeftPos(inputObj) + inputObj.offsetWidth);
	var topPos = ajax_findTopPos(inputObj);

	if(IsMenu == 1)
	{
		var tooltipWidth = document.getElementById('ajax_tooltip_content').offsetWidth;

		//THIS CODE WILL CENTER IF DESIRED
		//if(tooltipWidth > inputObj.offsetWidth)
		//{
		//	leftPos = leftPos - inputObj.offsetWidth - ((tooltipWidth-inputObj.offsetWidth)/2)+1;
		//}else{
		//	leftPos = leftPos - inputObj.offsetWidth + ((inputObj.offsetWidth-tooltipWidth)/2)+1;
		//}

		leftPos = leftPos - inputObj.offsetWidth;
		topPos = topPos + inputObj.offsetHeight + 5;
	}
	
	ajax_tooltipObj.style.left = leftPos + 'px';
	ajax_tooltipObj.style.top = topPos + 'px';
}


function ajax_hideTooltip()
{
	if(ajax_tooltipObj)
	{
		ajax_tooltipObj.style.display='none';
		ajax_tooltipId = '';
	}
}


function ajax_findLeftPos(obj) {
	var curleft = 0;

	if (obj.offsetParent) 
	{
		do 
		{
		curleft += obj.offsetLeft;
		} while (obj = obj.offsetParent);
	
		return curleft;
	}
}

function ajax_findTopPos(obj) {
	var curtop = 0;

	if (obj.offsetParent) 
	{
		do 
		{
		curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	
		return curtop;
	}
}

function ajax_MaskForIE6()
{
	if(ajax_tooltip_MSIE && ajax_tooltipObj && contentDiv)
	{
		/* Create iframe object for MSIE in order to make the tooltip cover select boxes */
		ajax_tooltipObj_iframe = document.createElement('<IFRAME frameborder="0">');
		ajax_tooltipObj_iframe.style.position = 'absolute';
		ajax_tooltipObj_iframe.style.display = 'block';
		ajax_tooltipObj_iframe.style.left = '0px';
		ajax_tooltipObj_iframe.style.top = '0px';
		ajax_tooltipObj_iframe.style.zindex = '-1';
		ajax_tooltipObj_iframe.style.filter = 'mask()';
		ajax_tooltipObj_iframe.style.width = contentDiv.clientWidth + 'px';
		ajax_tooltipObj_iframe.style.height = contentDiv.clientHeight + 'px';
	
		contentDiv.appendChild(ajax_tooltipObj_iframe);

	}
}

