/*************************************************************************

  dw_tooltip.js   requires: dw_event.js and dw_viewport.js

  version date: May 21, 2005 moved init call to body onload

  (March 14, 2005: minor changes in position algorithm and timer mechanism)

  

  This code is from Dynamic Web Coding at dyn-web.com

  Copyright 2003-5 by Sharon Paine 

  See Terms of Use at www.dyn-web.com/bus/terms.html

  regarding conditions under which you may use this code.

  This notice must be retained in the code as is!

*************************************************************************/



var var_show;

var Tooltip = {



             followMouse: false,

             offX: 8,

             offY: 12,

             tipID: "tipDiv",

             arrID: "arrDiv",

             showDelay: 100,

             hideDelay: 200,

             ready:false,

             timer:null,

             tip:null,

             arr:null,

             list_bool:null,

             list_html:null,

             ttready:true,

             sender:null,

             last_sender:null,



             init:function(){

                if(document.createElement&&document.body&&typeof document.body.appendChild!="undefined"){

                   if(!document.getElementById(this.tipID)){

                      var el1=document.createElement("DIV");

                      el1.id=this.tipID;

                      el1.style.position = "absolute";

                      el1.style.zIndex = 20;

                      document.body.appendChild(el1);

                   }

                   if(!document.getElementById(this.arrID)){

                      var el2=document.createElement("DIV");

                      el2.id=this.arrID;

                      el2.style.position = "absolute";

                      el2.style.zIndex = 21;

                      document.body.appendChild(el2);

                   }

                   this.ready=true;

                   this.list_bool = new Array();

                   this.list_html = new Array();

                }

             },

             show:function(e,msg){

               if (!e || e == null || e == "undefined") return;

               if(this.timer){

                   clearTimeout(this.timer);

                   this.timer=0;

                }

                

                if (!this.ttready)  return;
                
                var sender = document.getElementById(msg);

                if (sender == this.sender) return;
                
                this.tip=document.getElementById(this.tipID);

                this.arr=document.getElementById(this.arrID);

                this.sender=sender;

                this.sender_id = this.sender.id.substring(0,this.sender.id.indexOf('_'));

                this.last_sender=sender;

                if (this.writeTip(e, msg)) {

                 this.positionTip(e, msg);

                 this.timer=setTimeout("Tooltip.toggleVis('"+this.tipID+"', 'visible');Tooltip.toggleVis('"+this.arrID+"', 'visible')",this.showDelay);

                } 

             }

             ,writeTip:function(e,msg){

               if (this.sender.tagName == 'A') {

                  viewport.getAll();

                  this.x = e.pageX?e.pageX:e.clientX+viewport.scrollX;

                  this.y = e.pageY?e.pageY:e.clientY+viewport.scrollY;

               }

               this.list_bool[msg.substring(0,msg.indexOf('_'))] = 1;    

               this.list_html[msg.substring(0,msg.indexOf('_'))] = eval("var_"+msg);



               if (this.list_bool[msg.substring(0,msg.indexOf('_'))]) {
               
                if (this.list_html[msg.substring(0,msg.indexOf('_'))]) {  

                if(this.tip&&typeof this.tip.innerHTML!="undefined")

                  this.tip.innerHTML=this.list_html[msg.substring(0,msg.indexOf('_'))];

                  return true;

               }
               
               }

             }

             ,positionTip:function(e, msg){

                if(this.tip&&this.tip.style){

                   position.init(msg, this.tipID);

                   if (this.sender.tagName == 'A') {
                     var left = this.sender.offsetLeft;
                     var top = this.sender.offsetTop;
                     var parent = this.sender.offsetParent;
                     while(parent && parent.tagName != "BODY")
                     {
                        left += parent.offsetLeft;
                        top += parent.offsetTop;
                        parent = parent.offsetParent;
                     }
                     x = left+this.sender.offsetWidth/2;
                     y = top-45;
                     position.compareA(x, y);

                   } else {

                     position.compare();

                   }
                   //"if" condition added by kama

                   if (msg.indexOf('tooltip_publisher') < 0 && msg.indexOf('tooltip_alert') < 0 && msg.indexOf('tooltip_joingf') < 0) { 

                       this.arr.innerHTML = "<img src='images/" + position.image_name + "'>";

                       this.arr.style.left = position.arrX+"px";

                       if (position.image_name == 'up-left-combo.gif')
                       
                       this.arr.style.top =  (position.arrY+25)+"px";
                       
                       else 
                       
                       this.arr.style.top =  (position.arrY)+"px";

                   }

                   this.tip.style.left = position.tipX +"px";

                   this.tip.style.top =  position.tipY +"px";

                }

             }

             ,hide:function(){



                if(this.timer){

                   clearTimeout(this.timer);

                   this.timer=0;

                }

                this.timer=setTimeout("Tooltip.toggleVis('"+this.tipID+"', 'hidden'); Tooltip.toggleVis('"+this.arrID+"', 'hidden');",this.hideDelay);

                this.tip=null;

                this.arr=null;

                this.sender=null;

             }

             ,toggleVis:function(id,vis){

                var el=document.getElementById(id);

                if(el)el.style.visibility=vis;

             }

             ,trackMouse:function(e){

                e=dw_event.DOMit(e);

                Tooltip.positionTip(e);

             }

             ,hideImmediately:function(){

                eval("Tooltip.toggleVis('"+Tooltip.tipID+"', 'hidden'); Tooltip.toggleVis('"+Tooltip.arrID+"', 'hidden');");

             }



};



function doTooltip(e, msg) {

  if (!e || e == null || e == "undefined") return; 

  el = document.getElementById(msg);

  if (!el || el == null) return;

  if ( typeof Tooltip == "undefined" || !Tooltip.ready )  return;
  

  Tooltip.clearTimer();

  var tip = document.getElementById? document.getElementById(Tooltip.tipID): null;

  if ( tip && tip.onmouseout == null ) {

  //      tip.onmouseout = Tooltip.tipOutCheck1;

      tip.onmouseout = hideTip;

      tip.onmouseover = Tooltip.clearTimer;

      tip.onclick = Tooltip.hideImmediately;



  }

  var arr = document.getElementById? document.getElementById(Tooltip.arrID): null;

  if ( arr && arr.onmouseout == null ) {

      //arr.onmouseout = Tooltip.tipOutCheck;

      arr.onmouseout = hideTip;

      arr.onmouseover = Tooltip.clearTimer;

      arr.onclick = Tooltip.hideImmediately;

  }
  

  Tooltip.show(e, msg);

}

/*

function doTooltip(e, msg) {



  if ( typeof Tooltip == "undefined" || !Tooltip.ready ) return;

  Tooltip.clearTimer();



  var tip = document.getElementById? document.getElementById(Tooltip.tipID): null;

  if ( tip && tip.onmouseout == null ) {

      tip.onmouseout = Tooltip.tipOutCheck;

      tip.onmouseover = Tooltip.clearTimer;

  }

  var arr = document.getElementById? document.getElementById(Tooltip.arrID): null;

  if ( arr && arr.onmouseout == null ) {

      arr.onmouseout = Tooltip.tipOutCheck;

      arr.onmouseover = Tooltip.clearTimer;

  }



  Tooltip.show(e, msg);

}

  */

function hideTip() {
  
  if (typeof dont_hide_tip != "undefined" && dont_hide_tip)  return;
    
  global_tooltip_show = false;

  if ( typeof Tooltip == "undefined" || !Tooltip.ready ) return;

  Tooltip.timerId = setTimeout("Tooltip.hide()", 200);

}



Tooltip.tipOutCheck = function(e) {

  e = dw_event.DOMit(e);

  // is element moused into contained by tooltip?

  var toEl = e.relatedTarget? e.relatedTarget: e.toElement;

  if (this != toEl && !contained(toEl, this) && Tooltip.sender != toEl) {

    Tooltip.hide(); 

  } else {

//       dw_event.remove(Tooltip.sender)

  }

}



// returns true of oNode is contained by oCont (container)

function contained(oNode, oCont) {

  if (!oNode) return; // in case alt-tab away while hovering (prevent error)

  while ( oNode = oNode.parentNode ) if ( oNode == oCont ) return true;

  return false;

}



Tooltip.timerId = 0;

Tooltip.clearTimer = function() {

  if (Tooltip.timerId) { clearTimeout(Tooltip.timerId); Tooltip.timerId = 0; }

}



Tooltip.unHookHover = function () {

    var tip = document.getElementById? document.getElementById(Tooltip.tipID): null;

    if (tip) {

        tip.onmouseover = null; 

        tip.onmouseout = null;

        tip = null;

    }

}

if (var_show){

    dw_event.add(window, "unload", Tooltip.unHookHover, true);

}



