javascript - htmltooltip.js

//Inline HTML Tooltip script: By JavaScript Kit: http://www.javascriptkit.com
//Created: July 10th, 08'

var htmltooltip={
     tipclass: 'htmltooltip',
     fadeeffect: [true, 500],
     anchors: [],
     tooltips: [], //array to contain references to all tooltip DIVs on the page

     positiontip:function($, tipindex, e){
          var anchor=this.anchors[tipindex]
          var tooltip=this.tooltips[tipindex]
          var scrollLeft=window.pageXOffset? window.pageXOffset : this.iebody.scrollLeft
          var scrollTop=window.pageYOffset? window.pageYOffset : this.iebody.scrollTop
          var docwidth=(window.innerWidth)? window.innerWidth-15 : htmltooltip.iebody.clientWidth-15
          var docheight=(window.innerHeight)? window.innerHeight-18 : htmltooltip.iebody.clientHeight-15
          var tipx=anchor.dimensions.offsetx
          var tipy=anchor.dimensions.offsety+anchor.dimensions.h
          tipx=(tipx+tooltip.dimensions.w-scrollLeft>docwidth)? tipx-tooltip.dimensions.w : tipx //account for right edge
          tipy=(tipy+tooltip.dimensions.h-scrollTop>docheight)? tipy-tooltip.dimensions.h-anchor.dimensions.h : tipy //account for bottom edge
          $(tooltip).css({left: tipx, top: tipy})
     },

     showtip:function($, tipindex, e){
          var tooltip=this.tooltips[tipindex]
          if (this.fadeeffect[0])
               $(tooltip).hide().fadeIn(this.fadeeffect[1])
          else
               $(tooltip).show()
     },

     hidetip:function($, tipindex, e){
          var tooltip=this.tooltips[tipindex]
          if (this.fadeeffect[0])
               $(tooltip).fadeOut(this.fadeeffect[1])
          else
               $(tooltip).hide()
     },

     updateanchordimensions:function($){
          var $anchors=$('*[@rel="'+htmltooltip.tipclass+'"]')
          $anchors.each(function(index){
               this.dimensions={w:this.offsetWidth, h:this.offsetHeight, offsetx:$(this).offset().left, offsety:$(this).offset().top}
          })
     },

     render:function(){
          jQuery(document).ready(function($){
               htmltooltip.iebody=(document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
               var $anchors=$('*[@rel="'+htmltooltip.tipclass+'"]')
               var $tooltips=$('div[@class="'+htmltooltip.tipclass+'"]')
               $anchors.each(function(index){ //find all links with "title=htmltooltip" declaration
                    this.dimensions={w:this.offsetWidth, h:this.offsetHeight, offsetx:$(this).offset().left, offsety:$(this).offset().top} //store anchor dimensions
                    this.tippos=index+' pos' //store index of corresponding tooltip
                    var tooltip=$tooltips.eq(index).get(0) //ref corresponding tooltip
                    if (tooltip==null) //if no corresponding tooltip found
                         return //exist
                    tooltip.dimensions={w:tooltip.offsetWidth, h:tooltip.offsetHeight}
                    $(tooltip).remove().appendTo('body') //add tooltip to end of BODY for easier positioning
                    htmltooltip.tooltips.push(tooltip) //store reference to each tooltip
                    htmltooltip.anchors.push(this) //store reference to each anchor
                    var $anchor=$(this)
                    $anchor.hover(
                         function(e){ //onMouseover element
                              htmltooltip.positiontip($, parseInt(this.tippos), e)
                              htmltooltip.showtip($, parseInt(this.tippos), e)
                         },
                         function(e){ //onMouseout element
                              htmltooltip.hidetip($, parseInt(this.tippos), e)
                         }
                    )
                    $(window).bind("resize", function(){htmltooltip.updateanchordimensions($)})
               })
          })
     }
}

htmltooltip.render()

Popular posts from this blog

SAP CPI - Loop Process Call with SuccessFactor (oData V2)

Setting IntelliJ IDEA to run Groovy Script

C# - BASE64 to Image