/************************************************************************************************************
(C) www.dhtmlgoodies.com, June 2006

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/


/* Custom variables */

/* Offset position of tooltip */
var x_offset_tooltip = 3;
var y_offset_tooltip = 3;

/* Don't change anything below here */

var ajax_tooltipObj = false;
var ajax_tooltipObj_iframe = false;

var ajax_tooltip_MSIE = false;
if(navigator.userAgent.indexOf('MSIE')>=0)ajax_tooltip_MSIE=true;


function ajax_showTooltip(externalFile,inputObj,tooltipClass,e)
{
	showTooltipType(externalFile,true,inputObj,tooltipClass,e);
}

function showTooltip(text,inputObj,tooltipClass,e)
{
	showTooltipType(text,false,inputObj,tooltipClass,e);
}

/* Se typeFlag==true il parametro textOrExternalFile sarā interpretato
come externalFile e verrā fatta una richiesta asincrona, altrimenti
vorrā dire che al suo interno ci sarā semplicemente del testo. */
function showTooltipType(textOrExternalFile,typeFlag,inputObj,tooltipClass,e)
{
	var contentDiv;
		
	if(!ajax_tooltipObj)	/* Tooltip div not created yet ? */
	{
		ajax_tooltipObj = document.createElement('DIV');
		ajax_tooltipObj.style.position = 'absolute';
		ajax_tooltipObj.id = 'ajax_tooltipObj';
		document.body.appendChild(ajax_tooltipObj);

		
		var leftDiv = document.createElement('DIV');	/* Create arrow div */
		leftDiv.className='ajax_tooltip_arrow';
		leftDiv.id = 'ajax_tooltip_arrow';
		ajax_tooltipObj.appendChild(leftDiv);
		
		contentDiv = document.createElement('DIV'); /* Create tooltip content div */		
		ajax_tooltipObj.appendChild(contentDiv);
		contentDiv.id = 'ajax_tooltip_content';
		
		if(ajax_tooltip_MSIE){	/* 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.border='0';
			ajax_tooltipObj_iframe.frameborder=0;
			ajax_tooltipObj_iframe.style.backgroundColor='#FFF';
			ajax_tooltipObj_iframe.src = 'about:blank';
			contentDiv.appendChild(ajax_tooltipObj_iframe);
			ajax_tooltipObj_iframe.style.left = '0px';
			ajax_tooltipObj_iframe.style.top = '0px';
		}

			
	} else {
		// recupero il content div per poi applicargli le classi css
		contentDiv = document.getElementById('ajax_tooltip_content');
	}
						
	// se č presente il parametro che specifica la classe css del content div
	// la applico insieme alla classe di base (ajax_tooltip_content),
	// altrimenti applico solo quella di base.
	if(tooltipClass=='' || !tooltipClass) { tooltipClass='ajax_tooltip_content'; }
	else { tooltipClass='ajax_tooltip_content '+tooltipClass; }	
	contentDiv.className = tooltipClass;
	
	// Find position of tooltip
	ajax_tooltipObj.style.display='block';
	
	if (typeFlag) {
		ajax_loadContent('ajax_tooltip_content',textOrExternalFile);
	} else {
		contentDiv.innerHTML=textOrExternalFile;
	}
	
	if(ajax_tooltip_MSIE){
		ajax_tooltipObj_iframe.style.width = ajax_tooltipObj.clientWidth + 'px';
		//ajax_tooltipObj_iframe.style.height = ajax_tooltipObj.clientHeight + 'px';
	}	
	
	ajax_positionTooltip(inputObj,contentDiv,e);
}

function ajax_positionTooltip(inputObj,contentDiv,e)
{	
	//considero un'eventuale posizione di scroll della pagina
	var st = Math.max(document.body.scrollTop,document.documentElement.scrollTop);		

	//var topPos = ajaxTooltip_getLeftPos(inputObj);
	var leftPos = e.clientX + x_offset_tooltip;		
		
	//controllo se esce a destra
	var clientWidth = document.body.clientWidth; //larghezza della pagina (interna)
	var leftPosPlusWidth = leftPos  + contentDiv.offsetWidth;
	if (leftPosPlusWidth>clientWidth) //nel caso esca lo riporto dentro
		leftPos = leftPos - (leftPosPlusWidth-clientWidth);				
		
	//var topPos = ajaxTooltip_getTopPos(inputObj);
	//controllo se esce in alto
	var topPos = e.clientY + y_offset_tooltip;
	
	
	/*
	var rightedge=ajax_tooltip_MSIE? document.body.clientWidth-leftPos : window.innerWidth-leftPos
	var bottomedge=ajax_tooltip_MSIE? document.body.clientHeight-topPos : window.innerHeight-topPos
	*/
	var tooltipWidth = document.getElementById('ajax_tooltip_content').offsetWidth +  document.getElementById('ajax_tooltip_arrow').offsetWidth; 
	// Dropping this reposition for now because of flickering
	//var offset = tooltipWidth - rightedge; 
	//if(offset>0)leftPos = Math.max(0,leftPos - offset - 5);
	
	ajax_tooltipObj.style.left = leftPos + 'px';
	ajax_tooltipObj.style.top = topPos + st + 'px';		
}

function ajax_hideTooltip()
{
	ajax_tooltipObj.style.display='none';
}

function ajaxTooltip_getTopPos(inputObj)
{
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function ajaxTooltip_getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null) {
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}

