document.writeln("<div id=\"tooltip\" style=\"position:absolute;visibility:hidden;z-index:100;\"><\/div>");
var tooltip = document.getElementById('tooltip');

var isOpera = (            navigator.userAgent.indexOf('Opera') != -1);
var isIE    = (!isOpera && navigator.userAgent.indexOf('MSIE')  != -1);

var innerWidthX, innerHeightY;
var scrollAmountX, scrollAmountY;
var eventPosX, eventPosY;

var tooltipAlign;

function init_toolbar (tooltipParam) {
   ahref = document.links;
   
   for (i = 0; i < ahref.length; i++) {
      if (ahref[i].id && (ahref[i].title)) {
         ahref[i].onmouseover = function () {show_tooltip(this.id);};
         ahref[i].onmousemove = move_tooltip;
         ahref[i].onmouseout  = function () {hide_tooltip(this.id);};
      }
   }
   
   imgs = document.images;
   
   for (i = 0; i < imgs.length; i++) {
      if (imgs[i].id && (imgs[i].title)) {
         imgs[i].onmouseover = function () {show_tooltip(this.id);};
         imgs[i].onmousemove = move_tooltip;
         imgs[i].onmouseout  = function () {hide_tooltip(this.id);};
      }
   }
   
   tagP = document.getElementsByTagName('p');
   
   for (i = 0; i < tagP.length; i++) {
      if (tagP[i].id && (tagP[i].title)) {
         tagP[i].onmouseover = function () {show_tooltip(this.id);};
         tagP[i].onmousemove = move_tooltip;
         tagP[i].onmouseout  = function () {hide_tooltip(this.id);};
      }
   }
   
   tagp = document.getElementsByTagName('th');
   
   for (i = 0; i < tagp.length; i++) {
      if (tagp[i].id && (tagp[i].title)) {
         tagp[i].onmouseover = function () {show_tooltip(this.id);};
         tagp[i].onmousemove = move_tooltip;
         tagp[i].onmouseout  = function () {hide_tooltip(this.id);};
      }
   }
   
   tagp = document.getElementsByTagName('td');
   
   for (i = 0; i < tagp.length; i++) {
      if (tagp[i].id && (tagp[i].title)) {
         tagp[i].onmouseover = function () {show_tooltip(this.id);};
         tagp[i].onmousemove = move_tooltip;
         tagp[i].onmouseout  = function () {hide_tooltip(this.id);};
      }
   }
   
   tagp = document.getElementsByTagName('span');
   
   for (i = 0; i < tagp.length; i++) {
      if (tagp[i].id && (tagp[i].title)) {
         tagp[i].onmouseover = function () {show_tooltip(this.id);};
         tagp[i].onmousemove = move_tooltip;
         tagp[i].onmouseout  = function () {hide_tooltip(this.id);};
      }
   }
   
   tooltip = document.getElementById('tooltip');
}

function show_tooltip (id) {
   tooltip.style.visibility = 'visible';
   tooltip.innerHTML        = document.getElementById(id).title.replace(/\; /g, "<br>");
   
   tooltipAlign = document.getElementById(id).style.textAlign;
   if (!tooltipAlign) {tooltipAlign = "right";}
   
   tooltip.style.width = "150px";
   
   if (tooltip.innerHTML.length < 20) {
      tooltip.style.width = (tooltip.innerHTML.length * 6) + "px";
   }
   document.getElementById(id).title = "";
}

function move_tooltip (eventHandle) {
   if (self.innerHeight) { // all except Explorer
      innerWidthX  = self.innerWidth;
      innerHeightY = self.innerHeight;
   }
   else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
      innerWidthX  = document.documentElement.clientWidth;
      innerHeightY = document.documentElement.clientHeight;
   }
   else if (document.body) { // other Explorers
      innerWidthX  = document.body.clientWidth;
      innerHeightY = document.body.clientHeight;
   }
   
   if (self.pageYOffset) { // all except Explorer
      scrollAmountX = self.pageXOffset;
      scrollAmountY = self.pageYOffset;
   }
   else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
      scrollAmountX = document.documentElement.scrollLeft;
      scrollAmountY = document.documentElement.scrollTop;
   }
   else if (document.body) { // all other Explorers
      scrollAmountX = document.body.scrollLeft;
      scrollAmountY = document.body.scrollTop;
   }
   
   if (!eventHandle) var eventHandle = window.event;
   
   if (eventHandle.pageX || eventHandle.pageY) {
      eventPosX = eventHandle.pageX;
      eventPosY = eventHandle.pageY;
   }
   else if (eventHandle.clientX || eventHandle.clientY) {
      eventPosX = eventHandle.clientX;
      eventPosY = eventHandle.clientY;
      
      if (isIE) {
         eventPosX += scrollAmountX;
         eventPosY += scrollAmountY;
      }
   }
   
   leftSpaceX = innerWidthX  + scrollAmountX - eventPosX;
   leftSpaceY = innerHeightY + scrollAmountY - eventPosY;
   
   var left_value;
   if (tooltipAlign == "center") {
      offsetXPlus  = 15;
      offsetXMinus = 5;
      left_value = (eventPosX - (tooltip.offsetWidth / 2)) + "px"
   }
   else if (tooltipAlign == "right") {
      offsetXPlus  = 15;
      offsetXMinus = 5;
      if  (leftSpaceX - 20 < tooltip.offsetWidth + offsetXPlus) {
         left_value = (scrollAmountX + eventPosX - tooltip.offsetWidth - offsetXMinus) + "px";
      }
      else {
         left_value = (eventPosX + offsetXPlus) + "px"
      }
   }
   else {
      offsetXPlus  = 15;
      offsetXMinus = 5;
      if  (scrollAmountX + eventPosX < tooltip.offsetWidth + offsetXPlus) {
         left_value = (eventPosX + offsetXPlus) + "px"
      }
      else {
         left_value = (scrollAmountX + eventPosX - tooltip.offsetWidth - offsetXMinus) + "px";
      }
   }
   
   offsetYPlus  = 5;
   offsetYMinus = 5;
   
   var top_value;
   if  (leftSpaceY < tooltip.offsetHeight + offsetYPlus) {
      top_value = (eventPosY - tooltip.offsetHeight - offsetYMinus) + "px";
   }
   else {
      top_value = (eventPosY + offsetYPlus)+ "px";
   }
   
   tooltip.style.top        = top_value;
   tooltip.style.left       = left_value;
}

function hide_tooltip (id) {
   if (tooltip.innerHTML.length != 0) {
      tooltip.style.visibility = 'hidden';
      document.getElementById(id).title =  tooltip.innerHTML;
   }
}

