/*
twToolTipManager - Unobtrusive and Accessible Tooltip Manager
Author: Tom Wright <developer@tomwright.me.uk>
Copyright (c): 2003-2004 Tom Wright, all rights reserved
Version: 1.1 03/11/2004 03:30
*/

var isIE = (navigator.appName == "Microsoft Internet Explorer");

var SS_TIP_SHOW  =  1;
var SS_TIP_HIDE  = -1;

function twToolTipManager() {
    
  // @access  private
  var self = this;
  var tooltip = null;
  var coords = {left:0,top:0};
  var current_tip = null;
  var interval_id = null;
    
  var __construct = function() {
    tooltip = create("div");
    tooltip.appendChild(create("div"));
    tooltip.id = "tip";
    get("body")(0).appendChild(tooltip);        
    addEvent(document, 'mousemove', function(evt) {
      var c;
      if(!evt)evt=window.event;
      c=getPosEvtScr(evt);     
      coords.left=c.x;
      coords.top=c.y;
    });  
    addEvent(document, 'mousemove', function() {
      document.getElementById("debug").innerHTML = "(" + coords.left + ", " + coords.top + ")";    
    });
  }

  this.register = function(elem) {
    elem.tip = new String(elem.getAttribute('title'));
    elem.setAttribute('title', '');
    addEvent(elem, 'mouseover', function() {
      window.clearTimeout(interval_id);  
      current_tip = elem.tip;
      interval_id = window.setTimeout(function() {self.repaint(SS_TIP_SHOW)},500);
    });
    addEvent(elem, 'mouseout', function() {self.repaint(SS_TIP_HIDE)});
    addEvent(elem, 'focus', function() {
      var obj_coords=getPosObj(elem);
      var obj_size=getObjSize(elem);
      coords.left=obj_coords.x + obj_size.w;
      coords.top=obj_coords.y;
      current_tip = elem.tip;
      interval_id = window.setTimeout(function() {self.repaint(SS_TIP_SHOW)},500);      
    });    
    addEvent(elem, 'blur', function() {self.repaint(SS_TIP_HIDE)});
  }

  this.repaint = function(state) {
    if (state == SS_TIP_SHOW) {
   	  tooltip.style.top = (coords.top+20) + "px";
   	  tooltip.style.left = coords.left + "px";  
   	  tooltip.firstChild.innerHTML = current_tip;  	 
      if (isIE) {
        tooltip.firstChild.style.background = "#fff";  
      }            
      tooltip.style.display = "block";     
      interval_id = window.setTimeout(function() {self.repaint(SS_TIP_HIDE)},3000);      
    }
    else {
      tooltip.style.display = "none";
      current_tip = null;
      window.clearTimeout(interval_id);          
    }
  }
 
  __construct();
      
}

function __initToolTips() {
  var tooltipManager = new twToolTipManager(); 
  (function(elem){if(elem.title.length>0){tooltipManager.register(elem);}}).Iterate(get('A')());
}
addLoadEvent(__initToolTips);

