var tooltipOffsetX=16;
var tooltipOffsetY=16;

function setToolTip (element) {
  element.onmouseover=tooltip_over;
  element.onmouseout=tooltip_out;
  element.onmousemove=tooltip_move;
  element.tooltip=element.title.replace (/\n/gi,'<br />');
  element.title='';
}

function tooltip_over (e) {
  if (window.getComputedStyle) {
    element=e.currentTarget;
    e.stopPropagation();
    if (element.tooltip!='' && !element.tooltipDiv) {
      tooltip=document.createElement ('div');
      tooltip.className='tooltip';
      document.body.appendChild (tooltip);
      tooltip.innerHTML=element.tooltip;
      element.tooltipDiv=tooltip;
      element.tooltipDiv.style.top=e.pageY+tooltipOffsetY+'px';
      element.tooltipDiv.style.left=e.pageX+tooltipOffsetX+'px';
      element.tooltipDiv.style.visibility='visible';
    }
  } else {
    element=this;
    event.cancelBubble=true;
    if (element.tooltip!='' && !element.tooltipDiv) {
      tooltip=document.createElement ('div');
      tooltip.className='tooltip';
      tooltip.style.top=event.y+document.body.scrollTop+tooltipOffsetY+'px';
      tooltip.style.left=event.x+document.body.scrollLeft+tooltipOffsetX+'px';
      tooltip.style.visibility='visible';
      element.tooltipDiv=tooltip;
      document.body.appendChild (element.tooltipDiv);
      tooltip.innerHTML=element.tooltip;
    }
  }
}

function tooltip_out (e) {
  if (window.getComputedStyle) {
    element=e.currentTarget;
    e.stopPropagation();
  } else {
    element=this;
    event.cancelBubble=true;
  }
  if (element.tooltipDiv) {
    document.body.removeChild (element.tooltipDiv);
    element.tooltipDiv=null;
  }
}

function tooltip_move (e) {
  if (window.getComputedStyle) {
    element=e.currentTarget;
    if (element.tooltipDiv) {
      e.stopPropagation();
      element.tooltipDiv.style.top=e.pageY+tooltipOffsetY+'px';
      element.tooltipDiv.style.left=e.pageX+tooltipOffsetX+'px';
    }
  } else {
    element=this;
    if (element.tooltipDiv) {
      event.cancelBubble=true;
      element.tooltipDiv.style.top=event.y+document.body.scrollTop+tooltipOffsetY+'px';
      element.tooltipDiv.style.left=event.x+document.body.scrollLeft+tooltipOffsetX+'px';
    }
  }
}
