Team:Imperial College London/balloontipjs
From 2011.igem.org
Line 1: | Line 1: | ||
- | /* | + | /* Image w/ description tooltip v2.0 |
- | + | * Created: April 23rd, 2010. This notice must stay intact for usage | |
* Author: Dynamic Drive at http://www.dynamicdrive.com/ | * Author: Dynamic Drive at http://www.dynamicdrive.com/ | ||
* Visit http://www.dynamicdrive.com/ for full source code | * Visit http://www.dynamicdrive.com/ for full source code | ||
*/ | */ | ||
- | |||
- | + | var ddimgtooltip={ | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | tiparray:function(){ | ||
+ | var tooltips=[] | ||
+ | //define each tooltip below: tooltip[inc]=['path_to_image', 'optional desc', optional_CSS_object] | ||
+ | //For desc parameter, backslash any special characters inside your text such as apotrophes ('). Example: "I\'m the king of the world" | ||
+ | //For CSS object, follow the syntax: {property1:"cssvalue1", property2:"cssvalue2", etc} | ||
+ | |||
+ | tooltips[0]=["red_balloon.gif", "Here is a red balloon<br /> on a white background", {background:"#FFFFFF", color:"black", border:"5px ridge darkblue"}] | ||
+ | tooltips[1]=["duck2.gif", "Here is a duck on a light blue background.", {background:"#DDECFF", width:"200px"}] | ||
+ | tooltips[2]=["../dynamicindex14/winter.jpg"] | ||
+ | tooltips[3]=["../dynamicindex17/bridge.gif", "Bridge to somewhere.", {background:"white", font:"bold 12px Arial"}] | ||
+ | |||
+ | return tooltips //do not remove/change this line | ||
+ | }(), | ||
+ | |||
+ | tooltipoffsets: [20, -30], //additional x and y offset from mouse cursor for tooltips | ||
+ | |||
+ | //***** NO NEED TO EDIT BEYOND HERE | ||
+ | |||
+ | tipprefix: 'imgtip', //tooltip ID prefixes | ||
+ | |||
+ | createtip:function($, tipid, tipinfo){ | ||
+ | if ($('#'+tipid).length==0){ //if this tooltip doesn't exist yet | ||
+ | return $('<div id="' + tipid + '" class="ddimgtooltip" />').html( | ||
+ | '<div style="text-align:center"><img src="' + tipinfo[0] + '" /></div>' | ||
+ | + ((tipinfo[1])? '<div style="text-align:left; margin-top:5px">'+tipinfo[1]+'</div>' : '') | ||
+ | ) | ||
+ | .css(tipinfo[2] || {}) | ||
+ | .appendTo(document.body) | ||
+ | } | ||
+ | return null | ||
}, | }, | ||
- | + | positiontooltip:function($, $tooltip, e){ | |
- | + | var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1] | |
- | + | var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(), | |
- | + | x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(ddimgtooltip.tooltipoffsets[0]*2) : x | |
- | + | y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y | |
- | + | $tooltip.css({left:x, top:y}) | |
- | + | ||
- | + | ||
- | $ | + | |
- | + | ||
- | + | ||
- | + | ||
}, | }, | ||
+ | showbox:function($, $tooltip, e){ | ||
+ | $tooltip.show() | ||
+ | this.positiontooltip($, $tooltip, e) | ||
+ | }, | ||
- | + | hidebox:function($, $tooltip){ | |
- | + | $tooltip.hide() | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
}, | }, | ||
- | init:function( | + | init:function(targetselector){ |
- | var | + | jQuery(document).ready(function($){ |
- | + | var tiparray=ddimgtooltip.tiparray | |
- | + | var $targets=$(targetselector) | |
- | + | if ($targets.length==0) | |
- | + | return | |
- | + | var tipids=[] | |
- | + | $targets.each(function(){ | |
- | + | var $target=$(this) | |
- | + | $target.attr('rel').match(/\[(\d+)\]/) //match d of attribute rel="imgtip[d]" | |
+ | var tipsuffix=parseInt(RegExp.$1) //get d as integer | ||
+ | var tipid=this._tipid=ddimgtooltip.tipprefix+tipsuffix //construct this tip's ID value and remember it | ||
+ | var $tooltip=ddimgtooltip.createtip($, tipid, tiparray[tipsuffix]) | ||
+ | $target.mouseenter(function(e){ | ||
+ | var $tooltip=$("#"+this._tipid) | ||
+ | ddimgtooltip.showbox($, $tooltip, e) | ||
+ | }) | ||
+ | $target.mouseleave(function(e){ | ||
+ | var $tooltip=$("#"+this._tipid) | ||
+ | ddimgtooltip.hidebox($, $tooltip) | ||
+ | }) | ||
+ | $target.mousemove(function(e){ | ||
+ | var $tooltip=$("#"+this._tipid) | ||
+ | ddimgtooltip.positiontooltip($, $tooltip, e) | ||
+ | }) | ||
+ | if ($tooltip){ //add mouseenter to this tooltip (only if event hasn't already been added) | ||
+ | $tooltip.mouseenter(function(){ | ||
+ | ddimgtooltip.hidebox($, $(this)) | ||
+ | }) | ||
} | } | ||
}) | }) | ||
- | |||
- | |||
- | |||
- | |||
- | |||
+ | }) //end dom ready | ||
+ | } | ||
} | } | ||
- | + | //ddimgtooltip.init("targetElementSelector") | |
- | + | ddimgtooltip.init("*[rel^=imgtip]") | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + |
Latest revision as of 20:48, 21 September 2011
/* Image w/ description tooltip v2.0
- Created: April 23rd, 2010. This notice must stay intact for usage
- Author: Dynamic Drive at http://www.dynamicdrive.com/
- Visit http://www.dynamicdrive.com/ for full source code
- /
var ddimgtooltip={
tiparray:function(){ var tooltips=[] //define each tooltip below: tooltip[inc]=['path_to_image', 'optional desc', optional_CSS_object] //For desc parameter, backslash any special characters inside your text such as apotrophes ('). Example: "I\'m the king of the world" //For CSS object, follow the syntax: {property1:"cssvalue1", property2:"cssvalue2", etc}
tooltips[0]=["red_balloon.gif", "Here is a red balloon
on a white background", {background:"#FFFFFF", color:"black", border:"5px ridge darkblue"}]
tooltips[1]=["duck2.gif", "Here is a duck on a light blue background.", {background:"#DDECFF", width:"200px"}]
tooltips[2]=["../dynamicindex14/winter.jpg"]
tooltips[3]=["../dynamicindex17/bridge.gif", "Bridge to somewhere.", {background:"white", font:"bold 12px Arial"}]
return tooltips //do not remove/change this line }(),
tooltipoffsets: [20, -30], //additional x and y offset from mouse cursor for tooltips
//***** NO NEED TO EDIT BEYOND HERE
tipprefix: 'imgtip', //tooltip ID prefixes
createtip:function($, tipid, tipinfo){ if ($('#'+tipid).length==0){ //if this tooltip doesn't exist yet return $('<div id="' + tipid + '" class="ddimgtooltip" />').html(
') .css(tipinfo[2] || {}) .appendTo(document.body) } return null },
positiontooltip:function($, $tooltip, e){ var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1] var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(), x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(ddimgtooltip.tooltipoffsets[0]*2) : x y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y $tooltip.css({left:x, top:y}) },
showbox:function($, $tooltip, e){ $tooltip.show() this.positiontooltip($, $tooltip, e) },
hidebox:function($, $tooltip){ $tooltip.hide() },
init:function(targetselector){
jQuery(document).ready(function($){
var tiparray=ddimgtooltip.tiparray
var $targets=$(targetselector)
if ($targets.length==0)
return
var tipids=[]
$targets.each(function(){
var $target=$(this)
$target.attr('rel').match(/\[(\d+)\]/) //match d of attribute rel="imgtip[d]"
var tipsuffix=parseInt(RegExp.$1) //get d as integer
var tipid=this._tipid=ddimgtooltip.tipprefix+tipsuffix //construct this tip's ID value and remember it
var $tooltip=ddimgtooltip.createtip($, tipid, tiparray[tipsuffix])
$target.mouseenter(function(e){
var $tooltip=$("#"+this._tipid)
ddimgtooltip.showbox($, $tooltip, e)
})
$target.mouseleave(function(e){
var $tooltip=$("#"+this._tipid)
ddimgtooltip.hidebox($, $tooltip)
})
$target.mousemove(function(e){
var $tooltip=$("#"+this._tipid)
ddimgtooltip.positiontooltip($, $tooltip, e)
})
if ($tooltip){ //add mouseenter to this tooltip (only if event hasn't already been added)
$tooltip.mouseenter(function(){
ddimgtooltip.hidebox($, $(this))
})
}
})
}) //end dom ready } }
//ddimgtooltip.init("targetElementSelector") ddimgtooltip.init("*[rel^=imgtip]")