// Title: Titan Tooltips
// URL: http://www.thewebtier.com/products/tooltips/
// Version: 1.0 beta
// Date: 1/18/2004 (mm/dd/yyyy)
// Feedback: support@thewebtier.com 
// Note: You may use this product in your applications as long as you keep this header.

function Tooltip(startDelay, hideDelay){
  this.startDelay = startDelay;
  this.hideDelay  = hideDelay;
}

function TooltipManager(){
  this.tooltips = new Array();
  this.startDelay = 300;
  this.hideDelay  = 999999;
}
TooltipManager.prototype.getStartDelay = getStartDelay;
TooltipManager.prototype.getHideDelay  = getHideDelay;

function getStartDelay(divID){
  if(this.tooltips[divID] == null)
    return this.startDelay;
  return this.tooltips[divID].startDelay;
}
function getHideDelay(divID){
  if(this.tooltips[divID] == null)
    return this.hideDelay;
  return this.tooltips[divID].hideDelay;
}
TooltipManager.prototype.addTooltip = addTooltip;
TooltipManager.prototype.addTooltips = addTooltips;

function addTooltip(divID, startDelay, hideDelay){
  this.tooltips[divID] = new Tooltip(startDelay, hideDelay);
}

var tooltipManager = new TooltipManager();
var loaded = false;

var active = '';
var on = false;
var timerID = null;
var hideTimerID = null;
var num = 6780;

var NS6 = false;
var IE = false;
if(document.all)
  IE = true;
else
  NS6 = true;


function setFramePosition (left, top, width, height) { 
  var ifr = document.all ? document.all['winref2'] : document.getElementById('winref2');   
  ifr.style.position = 'absolute';
  if(NS6){
  ifr.style.left     = (left) + 'px'; 
  ifr.style.top      = (top ) + 'px'; 
  ifr.style.height   = 0;//height + 'px'; 
  ifr.style.width    = 0;//width + 'px'; 
  } else {
  ifr.style.left     = (left ) + 'px'; 
  ifr.style.top      = (top ) + 'px'; 
  ifr.style.height   = height + 'px'; 
  ifr.style.width    = width + 'px'; 
  }
  ifr.style.zIndex = 2;

} 
function hideFrame () { 
  var ifr = document.all ? document.all['winref2'] : document.getElementById('winref2');   
  ifr.style.position = 'absolute';
  ifr.style.left     = '1000px'; 
  ifr.style.top      = '1000px';//top + 'px'; 
  ifr.style.height   = 0;//height; 
  ifr.style.width    = 0;//width; 
} 
function addTooltips(filename, numberOfTooltips){
  var numbertooltips = 30;

  for(var i = 0; i < numbertooltips; i++){
     document.write("<div id=a" + i + " style='{position: absolute; top:0; visibility: hidden;}'></div>");
  }
  document.writeln("<iframe name=diviframe id='winref2' frameborder=0 height=0 width=0 scrolling=no></iframe>");
  document.writeln("<iframe name=iframe id='winref' frameborder=0 scrolling=no height=0  width=0 scrolling=no src=\"" + filename + "\"></iframe>");
  setTimeout("addHelpProcess()",300);
}

function findNumberOfTooltips(){
  var endCount = 0;
  for(var id in document.all){
    if(checkNumber(id) == false)
      endCount++;
  }
  return endCount;
}

function getFrameDiv(divId){
  var winref = frames['iframe'];
  if(IE){
   return winref.document.all[divId];
  }
  return winref.document.getElementById(divId);
}

function getDiv(divId){
if(IE)
    return document.all[divId];
  return document.getElementById(divId);
}

function copyDivProperties(rolloverDiv, winelem){
  var l = rolloverDiv.style;
  var r = winelem.style;
  l.backgroundAttachment = r.backgroundAttachment;
  l.backgroundColor = r.backgroundColor;
  l.backgroundImage = r.backgroundImage;
  l.backgroundPosition = r.backgroundPosition;
  l.backgroundRepeat   = r.backgroundRepeat;
  l.border = r.border;
  l.borderCollapse = r.borderCollapse;
  l.borderColor = r.borderColor;
  l.borderSpacing = r.borderSpacing;
  l.borderStyle = r.borderStyle;
  l.borderTop = r.borderTop;
  l.borderRight = r.borderRight;
  l.borderBottom = r.borderBottom;
  l.borderLeft = r.borderLeft;
  l.borderTopColor = r.borderTopColor;
  l.borderRightColor = r.borderRightColor;
  l.borderBottomColor = r.borderBottomColor;
  l.borderLeftColor = r.borderLeftColor;
  l.borderTopStyle = r.borderTopStyle;
  l.borderRightStyle = r.borderRightStyle;
  l.borderBottomStyle = r.borderBottomStyle;
  l.borderLeftStyle = r.borderLeftStyle;
  l.borderTopWidth = r.borderTopWidth;
  l.borderRightWidth = r.borderRightWidth;
  l.borderBottomWidth = r.borderBottomWidth;
  l.borderLeftWidth = r.borderLeftWidth;
 
  l.borderWidth = r.borderWidth;
  l.bottom      = r.bottom;
  l.captionSide = r.captionSide;
  l.clear      = r.clear;
  l.clip       = r.clip;
  l.color      = r.color;
  l.content    = r.content;

  l.counterIncrement = r.counterIncrement;
  l.cursor     = r.cursor;
  l.direction  = r.direction;
  l.display    = r.display;
  l.emptyCells = r.emptyCells;
  //l.float      = r.float;
  //l.font       = r.font;
 
  l.fontFamily     = r.fontFamily;
  l.fontSize       = r.fontSize;
  l.fontSizeAdjust = r.fontSizeAdjust;
  l.fontStretch    = r.fontStretch;
  l.fontStyle      = r.fontStyle;
  l.fontVariant    = r.fontVariant;
  l.fontWeight     = r.fontWeight;
  l.height         = r.height;
  l.left           = r.left;
  l.letterSpacing  = r.letterSpacing;
  l.lineHeight     = r.lineHeight;
  l.listStyle      = r.listStyle;
  l.listStyleImage = r.listStyleImage;
  l.listStylePosition = r.listStylePosition;
  l.listStyleType  = r.listStyleType;
  l.margin         = r.margin;
  l.marginTop      = r.marginTop;
  l.marginRight    = r.marginRight;
  l.marginBottom   = r.marginBottom;
  l.marginLeft     = r.marginLeft;
  l.marginOffset   = r.marginOffset;
  l.marks          = r.marks;
  l.maxHeight      = r.maxHeight;
  l.maxWidth       = r.maxWidth;
  l.minHeight      = r.minHeight;
  l.orphans        = r.orphans;
  l.outline        = r.outline;
  l.outlineColor   = r.outlineColor;
  l.outlineStyle   = r.outlineStyle;
  l.outlineWidth   = r.outlineWidth;
  l.overflow       = r.overflow;
  l.padding        = r.padding;
  l.paddingTop     = r.paddingTop;
  l.paddingRight   = r.paddingRight;
  l.paddingBottom  = r.paddingBottom;
  l.paddingLeft    = r.paddingLeft;
  l.page           = r.page;
  l.pageBreakAfter = r.pageBreakAfter;
  l.pageBreakBefore = r.pageBreakBefore;
  l.pageBreakInside = r.pageBreakInside;
  l.quotes         = r.quotes;
  l.size           = r.size;
  l.tableLayout    = r.tableLayout;
  l.textAlign      = r.textAlign;
  l.textDecoration = r.textDecoration;
  l.textIndent     = r.textIndent;
  l.textShadow     = r.textShadow;
  l.textTransform  = r.textTransform;
  l.verticalAlign  = r.verticalAlign;
  l.whiteSpace     = r.whiteSpace;
  l.widows         = r.widows;
  l.width          = r.width;
  l.wordSpacing    = r.wordSpacing;

}

function getFrameDivArray(){
  var winref = frames['iframe'];
  if(IE)
     return winref.document.all;
  return winref.document.getElementsByTagName('div');
}

function addHelpProcess(){
 
  var winref = frames['iframe'];
  
     if(winref == null || winref.loaded == null || winref.loaded == false) { setTimeout('addHelpProcess()',300); return; }
       
     var elem = null;
     var idNumber = 0;
     var frameDivArray = getFrameDivArray();
       for(var i = 0; i < frameDivArray.length; i++){
         var id = frameDivArray[i].id;      
         if(checkNumber(id) == true)
           continue;
         var winelem = getFrameDiv(id);
         if(winelem == null)continue; 
         if(winelem.innerHTML == null)continue;
         elem = getDiv(id);
         if(elem == null)continue;
         var rolloverDiv = getDiv('a' + idNumber);
         rolloverDiv.id = id + num;
         rolloverDiv.innerHTML = winelem.innerHTML;
         if(winelem.className != null && winelem.className != '')  
           rolloverDiv.className = winelem.className;
         copyDivProperties(rolloverDiv, winelem);
            
         rolloverDiv.style.visibility = 'hidden';
         rolloverDiv.style.position   = 'absolute';
         rolloverDiv.style.zIndex = 15;

         if(NS6){
           elem.addEventListener('mouseout', divMouseout, false);
           elem.addEventListener('mouseover', divMouseover, false);
         } else {
           elem.onmouseover = divMouseover;
           elem.onmouseout = divMouseout;
         }
         elem.tooltip = id + num;
         elem.startDelay = tooltipManager.getStartDelay(id);
         elem.hideDelay  = tooltipManager.getHideDelay(id);
         num++;
         idNumber++;
     } 
}

function checkNumber(checkStr)
{
  if (checkStr == '')
    return false;
  var checkOK = "0123456789";
  var ch = '';
  for (var i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    if(checkOK.indexOf(ch) == -1)
     return false;
  }
  return true;
}

function configureIframe(divId){
  var layer = getDiv(active);
  if(layer == null)return;
  if(layer.style == null)return;
  var left = 0; var top = 0;
  if(layer.style.left.indexOf('px') > -1){
    left = parseInt(layer.style.left.substring(0, layer.style.left.indexOf('px')));
  } else {
    left = layer.style.left;
  }
  if(layer.style.top.indexOf('px') > -1){
    top = parseInt(layer.style.top.substring(0, layer.style.top.indexOf('px')));
  } else {
    top = layer.style.top ;
  }
  if(IE){
    top = layer.offsetTop;
    left = layer.offsetLeft;
  }
  layer.style.visibility = 'visible';
  setFramePosition (left , top, layer.offsetWidth, layer.offsetHeight, layer);
}

function findSize(item){
  item = '' + item;
  if(item.indexOf('px') > -1){
    return parseInt(item.substring(0, item.indexOf('px')));
  } else {
    return item - 0;
  }
}
function displayEl(left, top) {
  document.onmousemove = null;
  var whichEl = getDiv(active);
  var y = 0;
  top = top - 0;
  var offset = 0;
  if(NS6) offset = pageYOffset;
  else offset = document.body.offsetHeight;
    if(top > offset/2  ){
          if(IE){
           top =  top - whichEl.offsetHeight + document.body.scrollTop;
         } else {
           top = top - whichEl.offsetHeight + window.pageYOffset;
         }
    } else {
      if(IE){
        top = top + document.body.scrollTop;  
      } else {
        top = top + window.pageYOffset;
      }
    }
    if(NS6) left = left + 20;
  whichEl.style.position = 'absolute';
  whichEl.style.left = left;//y;
  whichEl.style.top = top;
  whichEl.style.visibility = 'visible';
  whichEl.style.zIndex = 20;
  configureIframe(active);
  if (timerID) clearTimeout(timerID);
}

function divMouseout(e) {
  if(active){
    getDiv(active).style.visibility = 'hidden';
    hideFrame();
    on = false;
  }
  active = null;
  if (timerID) clearTimeout(timerID);
  if (hideTimerID) clearTimeout(hideTimerID);
  document.onmousemove = null;
}

function hideLayer(){
  if(active){
    hideFrame();
    getDiv(active).style.visibility = 'hidden';
  }
  active = null;
  document.onmousemove = null;
}


function prepareTimer(e, showDelay, hideDelay) {
  if (timerID) clearTimeout(timerID);
  if (hideTimerID) clearTimeout(hideTimerID);
  if(typeof(e) == 'undefined')e = event;

  var left = e.clientX;
  var top =  e.clientY;
  timerID = setTimeout("displayEl(" + left + ", " + top + ")", showDelay);
  hideTimerID = setTimeout("hideLayer()", showDelay + hideDelay);
}

function divMouseover(e) {
  active = this.tooltip;
  document.onmousemove = null;
  prepareTimer(e, this.startDelay, this.hideDelay);
}

