var hintdisplay;
var timer = null;
var delay = 1000;
var activeLink = null;

function initLinkHover() {
    
    var exclude = YAHOO.util.Dom.get("excludeinfobox");
    
    if (exclude) 
        return;
   
    var els = YAHOO.util.Dom.getElementsByClassName(this.className, 'div');
    for (var i =0; i < els.length; i++) {
          YAHOO.util.Event.addListener(els[i], "mouseover", ShowHint );
          YAHOO.util.Event.addListener(els[i], "mouseout", HideHint );
    }
    
    var els = YAHOO.util.Dom.getElementsByClassName(this.className, 'span');
    for (var i =0; i < els.length; i++) {
          YAHOO.util.Event.addListener(els[i], "mouseover", ShowHint );
          YAHOO.util.Event.addListener(els[i], "mouseout", HideHint );
    }
    
    hintdisplay = new YAHOO.widget.Overlay("hoverdisplay", { xy:[0,0], visible:false, constraintoviewport:true } );
    hintdisplay.setHeader("");
    hintdisplay.setBody("");
    hintdisplay.setFooter("");
    hintdisplay.render(document.body);
    YAHOO.util.Event.addListener("hoverdisplay", "mouseover", KeepVisible );
    YAHOO.util.Event.addListener("hoverdisplay", "mouseout", QuickHideHint );
}


YAHOO.util.Event.onDOMReady(initLinkHover, ({ className: "rolloverlink" }), true);

function ShowHint(e) {
    if (timer != null)
    {
        clearTimeout(timer);
    }
    
    if (activeLink) {
        YAHOO.util.Dom.setStyle(activeLink, "text-decoration", "none");
        activeLink = null;
    }

    var target = YAHOO.util.Event.getTarget(e).parentNode;
    var rolloverContainers = ["rolloverlink", "tablelink"];
    for (var i = 0; i < rolloverContainers.length; i++) {
        if (YAHOO.util.Dom.getAncestorByClassName(YAHOO.util.Event.getTarget(e), rolloverContainers[i])) {
            target = YAHOO.util.Dom.getAncestorByClassName(YAHOO.util.Event.getTarget(e), rolloverContainers[i]);
        } 
    }
   
    var hint = YAHOO.util.Dom.getElementsByClassName('rolloverbody', '*', target)[0];
    var hintLink = hint.getElementsByTagName('a')[0];
    
    activeLink = YAHOO.util.Event.getTarget(e);
    YAHOO.util.Dom.setStyle(activeLink, "text-decoration", "underline"); 

    var hintPositionTop = YAHOO.util.Dom.getRegion(target).bottom + 2;
    var hintPositionLeft = YAHOO.util.Dom.getRegion(target).right;
    hintdisplay.moveTo(hintPositionLeft,hintPositionTop);
    hintdisplay.setBody(hint.innerHTML);
    hintdisplay.show();
 }

 function KeepVisible() {
    if (timer != null)
    {
        clearTimeout(timer);
    }
 }

 function HideHint() {
    if (timer != null)
    {
        clearTimeout(timer);
    }
    timer = setTimeout("doHideHint()",delay);

 }
 function QuickHideHint() {
     if (timer != null)
    {
      clearTimeout(timer);
    }
    timer = setTimeout("doHideHint()",100);
 }
 
 function doHideHint() {
    YAHOO.util.Dom.setStyle(activeLink, "text-decoration", "none"); 

    if (hintdisplay) {
         hintdisplay.hide();
    }               
    timer = null;
 }