/*
 ******************************************************************************
 * File: cc_tooltip.js
 * Description: dhtml tooltip widget
 * Usage: ToolTip.add(<id>,title,content);
 * Dept: cc_api.js
 * Browsers: IE 5+, Mozilla 1+ and Opera 7+
 ******************************************************************************
 * Copyright (C) 2002 Caspar Due [http://caspar.dk/]
 * Free for non-commercial use.
 ******************************************************************************
*/

function ToolTip() {}

// tooltip delay in ms
ToolTip.delay  = 750;
ToolTip.deltaX = 0;
ToolTip.deltaY = 26;

// If false the pointer needs only to be somethere inside the elmement. If true the pointer has to be completly still
ToolTip.noMove = false;
// If true the tooltip will follow the pointer around when shown
ToolTip.follow = true;

ToolTip._tooltipElm = null;
ToolTip.isOver = false;
ToolTip.isLoaded = false;
ToolTip.timer = null;

ToolTip._x = 0;
ToolTip._y = 0;
ToolTip._shown = false;

ToolTip.add = function(id,title,content) {
	// Create tooltip element if not already created

	if(!ToolTip._tooltipElm) {

	}
	
	var elm = document.getElementById(id);

	if(elm) {
		ToolTip._assignMouseOver(elm,title,content);
		ToolTip._assignMouseOut(elm);
		ToolTip._assignMouseMove(elm);
	}
	else {
		return;
	}
}

ToolTip._assignMouseOver = function(elm,title,content) {
	elm._title = title;
	elm._content = content;
	_over = function(event,elm) {
		ToolTip.elmOver(event,elm._title,elm._content,elm);
	}
	Dom.addEvent(elm,"safemouseover","_over");
}

ToolTip._assignMouseOut = function(elm) {
	_out = function(event) {
		ToolTip.elmOut();
	}
	Dom.addEvent(elm,"safemouseout","_out");
}

ToolTip._assignMouseMove = function(elm)
{
	_move = function(event)
	{
	  if(ToolTip.isLoaded)
	  {
	    Dom.trackMouse(event);

	    if(ToolTip._x != Dom.mouseX || ToolTip._y != Dom.mouseY) // mouse moved
	    {
	      if(ToolTip.timer && ToolTip.noMove) ToolTip.timer = clearTimeout(ToolTip.timer);
	      ToolTip._x = Dom.mouseX;
	      ToolTip._y = Dom.mouseY;
	      if(!ToolTip._shown || ToolTip.follow) ToolTip.place(event);
	      
	      if(!ToolTip._shown && !ToolTip.timer) ToolTip.timer = setTimeout( "ToolTip.show()", ToolTip.delay );
	    }
	    if ( window.event )
	    {
		    window.event.cancelBubble = true;
				window.event.returnValue = false;
				return false;
		}
	  }
	}
	Dom.addEvent(elm,"mousemove","_move");
}

ToolTip.place = function(event) {
	
	if(ToolTip.isLoaded) {
		Dom.trackMouse(event);
		
		var top = Dom.mouseY + ((Browser.isIE || Browser.isOpera) ? Dom.scrollY : 0) + ToolTip.deltaY;
		//alert( Dom.mouseX + "," + Dom.mouseY );
		
		if(top + ToolTip._tooltipElm.offsetHeight > Dom.height + ((Browser.isIE || Browser.isOpera) ? Dom.scrollY : 0)) top = top - 2*ToolTip.deltaY -ToolTip._tooltipElm.offsetHeight;
		
		ToolTip._tooltipElm.style.left = Dom.mouseX + ((Browser.isIE || Browser.isOpera) ? Dom.scrollX : 0) + 'px';

		ToolTip._tooltipElm.style.top = top + 'px';
		
		//alert( "Hest: " +ToolTip._tooltipElm.style.left + "," + ToolTip._tooltipElm.style.top );
	}
	
	/*
	if(ToolTip.isLoaded) {
		Dom.trackMouse(event);
		ToolTip._tooltipElm.style.left = Dom.mouseX + ((Browser.isIE) ? Dom.scrollX : 0) + 8;
		ToolTip._tooltipElm.style.top = Dom.mouseY + ((Browser.isIE) ? Dom.scrollY : 0) - ToolTip._tooltipElm.offsetHeight - 6;
	}
	*/
}

ToolTip.elmOver = function(event,title,content,elm)
{
  ToolTip.elm = elm;
  ToolTip.isOver = true;
  
  // get ready to show the tooltip
  //ToolTip.hide();
  ToolTip.place(event);
  ToolTip.setContent(title, content);
}

ToolTip.elmOut = function()
{
  ToolTip.isOver = false;
  if(ToolTip.timer) ToolTip.timer = clearTimeout(ToolTip.timer);
  ToolTip.hide();
}

ToolTip.setContent = function(title, content)
{
  if(ToolTip.isLoaded) {
		var html = 
			'<div id="tooltip">' +
			'<div id="tooltip-text" class="p10" style="text-align: left; padding: 0px; color: black;">' + content + '</div>' +
			'</div>';
		ToolTip._tooltipElm.innerHTML = html;
	}
}

ToolTip.show = function() {
  
  if(ToolTip.isLoaded && ToolTip.isOver) {
  	ToolTip._tooltipElm.style.visibility = "visible";
  	ToolTip._shown = true;
	}
}

ToolTip.hide = function() {
 	
 	if(ToolTip.isLoaded) {
 		ToolTip._tooltipElm.style.visibility = "hidden";
 		ToolTip._shown = false;
 	}
}

ToolTip._create = function() {
  if(document.getElementById("cc_tooltip_elm"))
  {
    ToolTip._tooltipElm = document.getElementById("cc_tooltip_elm");
  	ToolTip.isLoaded = true;
  }
  else
  {
  	var elm = document.createElement("DIV");
  	elm.id = "cc_tooltip_elm";
  	elm.className = "tooltip";
  	elm.style.position = "absolute";
  	//elm.style.overflow = "auto";
  	elm.style.zIndex = 1000;
  	document.body.appendChild(elm);
  	ToolTip._tooltipElm = elm;
  	ToolTip.isLoaded = true;
  }
}

ToolTip.write = function() {
  document.write("<div id=\"cc_tooltip_elm\" class=\"tooltip\" style=\"position: absolute; visibility: hidden; z-index: 1000;\"></div>");
  
  //<div style=\"position: absolute; left: 0; top: 0; border: 1px solid black; background-color: yellow; width: 200px; height: 200px;\" id=\"debug\">xxx</div>
}

ToolTip._destroy = function() {
	ToolTip._tooltipElm = null;
}

Dom.addEvent(window,"load","ToolTip._create");
Dom.addEvent(window,"unload","ToolTip._destroy");