From a32b635d5eca43dd8a645f3b9bc46cc584d07328 Mon Sep 17 00:00:00 2001 From: louisameline Date: Sat, 21 Dec 2013 17:32:31 +0100 Subject: [PATCH 01/15] Title attributes are now treated as strings as they should be, not HTML --- js/jquery.tooltipster.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 607a6c8..37d03e7 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -278,11 +278,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI pointerEvents = self.options.interactive ? 'pointer-events: auto;' : ''; // build the base of our tooltip - self.$tooltip = $('
'); + self.$tooltip = $('
'); + var $cont = $('
'); + + if(typeof self.content === 'string') $cont.text(self.content); + else $cont.append(self.content); + self.$tooltip - .children() - .append(self.content) - .end() + .append($cont) .appendTo('body'); // do all the crazy calculations and positioning From b1d1ee7a14abf7fb5f8c75cc6620ff7cbe75a748 Mon Sep 17 00:00:00 2001 From: louisameline Date: Sun, 22 Dec 2013 12:58:41 +0100 Subject: [PATCH 02/15] Made the animation process simpler and easier to track with a status property. Used a queue only for css animations. Got rid of the delay on API call on the show method (kept in our click and hover triggers only). --- js/jquery.tooltipster.js | 359 ++++++++++++++++++++++----------------- 1 file changed, 203 insertions(+), 156 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 37d03e7..91671d9 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -1,6 +1,6 @@ /* -Tooltipster 2.3.0rc3 | 10/26/13 +Tooltipster 3.0.0rc1 | 2013-12-22 A rockin' custom tooltip jQuery plugin Developed by Caleb Jacob under the MIT license http://opensource.org/licenses/MIT @@ -16,6 +16,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI animation: 'fade', arrow: true, arrowColor: '', + autoClose: true, content: null, contentCloning: true, delay: 200, @@ -34,7 +35,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI iconTheme: '.tooltipster-icon', interactive: false, interactiveTolerance: 350, - interactiveAutoClose: true, offsetX: 0, offsetY: 0, onlyOne: false, @@ -62,8 +62,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // this will be the element which triggers the appearance of the tooltip on hover/click/custom events. // it will be the same as this.$el if icons are not used (see in the options), otherwise it will correspond to the created icon this.$elProxy; + this.enabled = true; this.options = $.extend({}, defaults, options); - this.timer = null; + this.randomId = Math.round(Math.random()*100000); + // status can be either : appearing, shown, disappearing, hidden + this.status = 'hidden'; + this.timerHide = null; + this.timerShow = null; // this will be the tooltip element (jQuery wrapped HTML element) this.$tooltip; this.tooltipArrowReposition; @@ -86,18 +91,18 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // if content is provided in the options, its has precedence over the title attribute. Remark : an empty string is considered content, only 'null' represents the absence of content. if (self.options.content !== null){ - self.updateContent(self.options.content); + self.setContent(self.options.content); } else { // the same remark as above applies : empty strings (like title="") are considered content and will be shown. Do not define any attribute at all if you want to initialize the plugin without content at start. var t = self.$el.attr('title'); if(typeof t === 'undefined') t = null; - self.updateContent(t); + self.setContent(t); } var c = self.options.functionInit(self.$el, self.content); - if(c) self.updateContent(c); + if(typeof c !== 'undefined') self.setContent(c); self.$el // strip the title off of the element to prevent the default tooltips from popping up @@ -133,7 +138,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // just in case the device ever triggers touch events, add a touch handler that will launch the tooltip. Right after we'll bind the mouse events, they'll just never be used if there is no mouse on the system. // informative note about device which have touch capacity : if self.options.touchDevices is false, tooltips will not be shown because of touch events. However the plugin itself has been initialized, thus preventing the native "title" tooltips to show. It is assumed that you would not want that anyway. - if (self.options.touchDevices && hasTouchCapability && ((self.options.trigger == 'click') || (self.options.trigger == 'hover'))) { + if (self.options.touchDevices && hasTouchCapability && (self.options.trigger == 'click' || self.options.trigger == 'hover')) { self.$elProxy.on('touchstart.tooltipster', function() { self.showTooltip(); }); @@ -151,7 +156,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI var keepAlive = false; - if (self.$tooltip) { + if (self.status == 'shown' || self.status == 'appearing') { + self.$tooltip.mouseenter(function() { keepAlive = true; }); @@ -162,7 +168,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI var tolerance = setTimeout(function() { if (keepAlive) { - if (self.options.interactiveAutoClose) { + if (self.options.autoClose) { self.$tooltip.mouseleave(function(e) { var $target = $(e.target); @@ -199,7 +205,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // if click events are set to show and hide the tooltip, attach those events respectively else if (self.options.trigger == 'click') { self.$elProxy.on('click.tooltipster', function() { - if (!self.$tooltip) { + if (self.status != 'shown' && self.status != 'appearing') { self.showTooltip(); } else { @@ -210,129 +216,166 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } }, - showTooltip: function(options) { + // this function will schedule the opening of the tooltip after the delay, if there is one + showTooltip: function() { var self = this; - // continue if this tooltip is enabled and has any content, otherwise just ignore it completely - if (!self.$elProxy.hasClass('tooltipster-disable') && self.content !== null) { - - // if we only want one tooltip open at a time, close all tooltips currently open and not already dying - if(self.options.onlyOne){ - $('.tooltipstered').not(self.$el).not('.tooltipster-dying') - .addClass('tooltipster-kill') - // hide using the object public method - [pluginName]('hide'); - } + if (self.status != 'shown' && self.status != 'appearing') { - //get rid of any appearance effect that might be queued or disappearance timer that might be set - self.$elProxy.clearQueue(); - clearTimeout(self.timer); - self.timer = null; - - // delay the showing of the tooltip according to the delay time, if there is one - if(self.options.delay > 0) self.$elProxy.delay(self.options.delay); + if (self.options.delay) { + self.timerShow = setTimeout(function(){ + self.showTooltipNow(); + }, self.options.delay); + } + else self.showTooltipNow(); + } + }, + + // this function will open the tooltip right away + showTooltipNow: function() { + + var self = this; + + //get rid of any appearance timer + clearTimeout(self.timerShow); + self.timerShow = null; + clearTimeout(self.timerHide); + self.timerHide = null; + + // continue only if : is enabled, has any content, is not already open + if (self.enabled && self.content !== null && self.status != 'shown' && self.status != 'appearing') { - self.$elProxy.queue(function() { + // if we only want one tooltip open at a time, close all tooltips currently open and not already disappearing + if (self.options.onlyOne) { + $('.tooltipstered').not(self.$el).each(function(i,el) { + // we use the public methods here + var s = el[pluginName]('status'); + if (s !== 'hidden' && s !== 'disappearing') { + el[pluginName]('hide'); + } + }); + } - // call our custom function before continuing - self.options.functionBefore(self.$elProxy, function() { + // call our custom function before continuing + self.options.functionBefore(self.$elProxy, function() { + + // if this origin already has its tooltip open + if (self.status !== 'hidden') { + + // the timer (if any) will start right now + var extraTime = 0; - // if this origin already has its tooltip open - if (self.$tooltip) { + // if it was disappearing, cancel that + if(self.status === 'disappearing'){ - // the timer (if any) will start right now - var extraTime = 0; + self.status = 'appearing'; - if (!self.$tooltip.hasClass('tooltipster-kill')) { + if (supportsTransitions()) { - // if it was dying, cancel that - self.$tooltip.removeClass('tooltipster-dying'); + self.$tooltip + .clearQueue() + .removeClass('tooltipster-dying') + .addClass('tooltipster-'+ self.options.animation +'-show'); - if (supportsTransitions()) { - self.$tooltip.clearQueue().addClass('tooltipster-'+ self.options.animation +'-show'); - } - else { - // in case the tooltip was currently fading out, bring it back to life - self.$tooltip.stop().fadeIn(); - } + if(self.options.speed > 0) self.$tooltip.delay(self.options.speed); + + self.$tooltip.queue(function(){ + self.status = 'shown'; + }); + } + else { + // in case the tooltip was currently fading out, bring it back to life + self.$tooltip + .stop() + .fadeIn(function(){ + self.status = 'shown'; + }); } } - // if the tooltip isn't already open, open that sucker up! - else { - - // the timer (if any) will start when the tooltip has fully appeared after its transition - var extraTime = self.options.speed; - - // disable horizontal scrollbar to keep overflowing tooltips from jacking with it and then restore it to its previous value - self.bodyOverflowX = $('body').css('overflow-x'); - $('body').css('overflow-x', 'hidden'); - - // get some other settings related to building the tooltip - var theme = self.options.theme, - themeClass = theme.replace('.', ''), - animation = 'tooltipster-' + self.options.animation, - animationSpeed = '-webkit-transition-duration: '+ self.options.speed +'ms; -webkit-animation-duration: '+ self.options.speed +'ms; -moz-transition-duration: '+ self.options.speed +'ms; -moz-animation-duration: '+ self.options.speed +'ms; -o-transition-duration: '+ self.options.speed +'ms; -o-animation-duration: '+ self.options.speed +'ms; -ms-transition-duration: '+ self.options.speed +'ms; -ms-animation-duration: '+ self.options.speed +'ms; transition-duration: '+ self.options.speed +'ms; animation-duration: '+ self.options.speed +'ms;', - fixedWidth = self.options.fixedWidth > 0 ? 'width:'+ Math.round(self.options.fixedWidth) +'px;' : '', - maxWidth = self.options.maxWidth > 0 ? 'max-width:'+ Math.round(self.options.maxWidth) +'px;' : '', - pointerEvents = self.options.interactive ? 'pointer-events: auto;' : ''; - - // build the base of our tooltip - self.$tooltip = $('
'); - var $cont = $('
'); - - if(typeof self.content === 'string') $cont.text(self.content); - else $cont.append(self.content); - - self.$tooltip - .append($cont) - .appendTo('body'); - - // do all the crazy calculations and positioning - self.positionTooltip(); + } + // if the tooltip isn't already open, open that sucker up! + else { + + self.status = 'appearing'; + + // the timer (if any) will start when the tooltip has fully appeared after its transition + var extraTime = self.options.speed; + + // disable horizontal scrollbar to keep overflowing tooltips from jacking with it and then restore it to its previous value + self.bodyOverflowX = $('body').css('overflow-x'); + $('body').css('overflow-x', 'hidden'); + + // get some other settings related to building the tooltip + var theme = self.options.theme, + themeClass = theme.replace('.', ''), + animation = 'tooltipster-' + self.options.animation, + animationSpeed = '-webkit-transition-duration: '+ self.options.speed +'ms; -webkit-animation-duration: '+ self.options.speed +'ms; -moz-transition-duration: '+ self.options.speed +'ms; -moz-animation-duration: '+ self.options.speed +'ms; -o-transition-duration: '+ self.options.speed +'ms; -o-animation-duration: '+ self.options.speed +'ms; -ms-transition-duration: '+ self.options.speed +'ms; -ms-animation-duration: '+ self.options.speed +'ms; transition-duration: '+ self.options.speed +'ms; animation-duration: '+ self.options.speed +'ms;', + fixedWidth = self.options.fixedWidth > 0 ? 'width:'+ Math.round(self.options.fixedWidth) +'px;' : '', + maxWidth = self.options.maxWidth > 0 ? 'max-width:'+ Math.round(self.options.maxWidth) +'px;' : '', + pointerEvents = self.options.interactive ? 'pointer-events: auto;' : ''; + + // build the base of our tooltip + self.$tooltip = $('
'); + var $cont = $('
'); + + if(typeof self.content === 'string') $cont.text(self.content); + else $cont.append(self.content); + + self.$tooltip + .append($cont) + .appendTo('body'); + + // do all the crazy calculations and positioning + self.positionTooltip(); + + // call our custom callback since the content of the tooltip is now part of the DOM + self.options.functionReady(self.$el, self.$tooltip); + + // animate in the tooltip + if (supportsTransitions()) { - // call our custom callback since the content of the tooltip is now part of the DOM - self.options.functionReady(self.$el, self.$tooltip); + self.$tooltip.addClass(animation + '-show'); - // animate in the tooltip - if (supportsTransitions()) { - self.$tooltip.addClass(animation + '-show'); - } - else { - self.$tooltip.css('display', 'none').fadeIn(self.options.speed); - } + if(self.options.speed > 0) self.$tooltip.delay(self.options.speed); - // check to see if our tooltip origin is removed while the tooltip is alive - self.setCheckInterval(); + self.$tooltip.queue(function(){ + self.status = 'shown'; + }); + } + else { + self.$tooltip.css('display', 'none').fadeIn(self.options.speed, function(){ + self.status = 'shown'; + }); + } + + // check to see if our tooltip origin is removed while the tooltip is alive + self.setCheckInterval(); + + // if this is a touch device, hide the tooltip on body touch + if (self.options.touchDevices && hasTouchCapability) { - // if this is a touch device, hide the tooltip on body touch - if (self.options.touchDevices && hasTouchCapability) { - - // if interactive, we'll stop the events that were emitted from inside the tooltip - if (self.options.interactive) { - self.$tooltip.on('touchstart', function(event){ - event.stopPropagation(); - }); - } - - $('body').one('touchstart.tooltipster', function(event) { - self.hideTooltip(); + // if interactive, we'll stop the events that were emitted from inside the tooltip + if (self.options.interactive) { + self.$tooltip.on('touchstart', function(event){ + event.stopPropagation(); }); } - } - - // if we have a timer set, let the countdown begin - if (self.options.timer > 0) { - self.timer = setTimeout(function() { - // clean delete - self.timer = null; + $('body').one('touchstart.tooltipster', function(event) { self.hideTooltip(); - }, self.options.timer + extraTime); + }); } - }); + } - self.$elProxy.dequeue(); + // if we have a timer set, let the countdown begin + if (self.options.timer > 0) { + + self.timerHide = setTimeout(function() { + self.timerHide = null; + self.hideTooltip(); + }, self.options.timer + extraTime); + } }); } }, @@ -368,7 +411,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } // if this tooltip's origin is removed, remove the tooltip if it's still here - if ($('body').find(self.$el).length === 0 && self.$tooltip) { + if ($('body').find(self.$el).length === 0 && (self.status == 'shown' || self.status == 'appearing')) { self.hideTooltip(); } @@ -379,8 +422,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // if the elProxy has been removed || ($('body').find(self.$elProxy).length === 0) // if the tooltip has been closed - || !self.$tooltip - // if the tooltip has been somehow removed + || self.status == 'hidden' + // if the tooltip has somehow been removed || ($('body').find(self.$tooltip).length === 0) ) { self.cancelCheckInterval(); @@ -398,58 +441,51 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI var self = this; - //TODO : remove this unless there is a good reason behind that - // if the origin has been removed, find all tooltips assigned to death - // if (!tooltipster) { - // tooltipster = $('.tooltipster-dying'); - // } - - // clear any possible queues handling delays and such - self.$elProxy.clearQueue(); + // get rid of any appearance timeout + clearTimeout(self.timerShow); + self.timerShow = null; + clearTimeout(self.timerHide); + self.timerHide = null; - if (self.$tooltip) { + // hide + if (self.status == 'shown' || self.status == 'appearing') { - // just in case we needed to clear a timer - clearTimeout(self.timer); - self.timer = null; - - var animation = 'tooltipster-'+ self.options.animation; + self.status = 'disappearing'; + + var finish = function() { + + self.status = 'hidden'; + + self.$tooltip.remove(); + self.$tooltip = null; + + $('body').css('overflow-x', self.bodyOverflowX); + + // finally, call our custom callback function + self.options.functionAfter(self.$elProxy); + }; if (supportsTransitions()) { self.$tooltip .clearQueue() - .removeClass(animation +'-show') + .removeClass('tooltipster-' + self.options.animation + '-show') + // for transitions only .addClass('tooltipster-dying'); if(self.options.speed > 0) self.$tooltip.delay(self.options.speed); - self.$tooltip.queue(function() { - self.$tooltip.remove(); - self.$tooltip = null; - $('body').css('overflow-x', self.bodyOverflowX); - - // finally, call our custom callback function - self.options.functionAfter(self.$elProxy); - }); + self.$tooltip.queue(finish); } else { self.$tooltip - .clearQueue() - .addClass('tooltipster-dying') - .fadeOut(self.options.speed, function() { - self.$tooltip.remove(); - self.$tooltip = null; - $('body').css('overflow-x', self.bodyOverflowX); - - // finally, call our custom callback function - self.options.functionAfter(self.$elProxy); - }); + .stop() + .fadeOut(self.options.speed, finish); } } }, - updateContent: function(content){ + setContent: function(content){ // clone if asked. Cloning the object makes sure that each instance has its own version of the content (in case a same object were provided for several instances) // reminder : typeof null === object if(typeof content === 'object' && content !== null && this.options.contentCloning){ @@ -465,7 +501,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if(self.content !== null){ // update the tooltip if it is open - if(self.$tooltip){ + if(self.status !== 'hidden'){ // set the new content in the tooltip self.$tooltip.find('.tooltipster-content') @@ -474,7 +510,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // if we want to play a little animation showing the content changed if (self.options.updateAnimation) { + if (supportsTransitions()) { + self.$tooltip.css({ 'width': '', '-webkit-transition': 'all ' + self.options.speed + 'ms, width 0ms, height 0ms, left 0ms, top 0ms', @@ -486,11 +524,15 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // reset the CSS transitions and finish the change animation setTimeout(function() { - if(self.$tooltip){ + + if(self.status !== 'hidden'){ + self.$tooltip.removeClass('tooltipster-content-changing'); + // after the changing animation has completed, reset the CSS transitions setTimeout(function() { - if(self.$tooltip){ + + if(self.status !== 'hidden'){ self.$tooltip.css({ '-webkit-transition': self.options.speed + 'ms', '-moz-transition': self.options.speed + 'ms', @@ -939,7 +981,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } // setter method else { - self.updateContent(args[1]); + self.setContent(args[1]); self.updateTooltip(); break; } @@ -960,9 +1002,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI break; case 'disable': - // hide first, in case the tooltip would not disappear on its own (interactiveAutoClose false) + // hide first, in case the tooltip would not disappear on its own (autoClose false) self.hideTooltip(); - self.$elProxy.addClass('tooltipster-disable'); + self.enabled = false; break; case 'elementIcon': @@ -976,21 +1018,26 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI return false; case 'enable': - self.$elProxy.removeClass('tooltipster-disable'); + self.enabled = true; break; case 'hide': self.hideTooltip(); break; - + case 'reposition': self.positionTooltip(); break; case 'show': - self.showTooltip(); + self.showTooltipNow(); break; + // for internal use use only, not part of the public API + case 'status': + v = self.status; + return false; + default: throw new Error('Unknown method .tooltipster("' + args[0] + '")'); break; From afceb53b7e5909d3ffbbbf7e20d697d74a9fc589 Mon Sep 17 00:00:00 2001 From: louisameline Date: Sun, 22 Dec 2013 13:18:55 +0100 Subject: [PATCH 03/15] Removed the dot from the theme and iconTheme options --- js/jquery.tooltipster.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 91671d9..68f489d 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -32,7 +32,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI iconCloning: true, iconDesktop: false, iconTouch: false, - iconTheme: '.tooltipster-icon', + iconTheme: 'tooltipster-icon', interactive: false, interactiveTolerance: 350, offsetX: 0, @@ -42,7 +42,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI positionTracker: false, speed: 350, timer: 0, - theme: '.tooltipster-default', + theme: 'tooltipster-default', touchDevices: true, trigger: 'hover', updateAnimation: true @@ -73,6 +73,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI this.$tooltip; this.tooltipArrowReposition; + // for backward compatibility + this.options.iconTheme = this.options.iconTheme.replace('.', ''); + this.options.theme = this.options.theme.replace('.', ''); + // launch this.init(); @@ -120,7 +124,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // if the icon provided is in the form of a string if(typeof self.options.icon === 'string'){ // wrap it in a span with the icon class - self.$elProxy = $(''); + self.$elProxy = $(''); self.$elProxy.append(self.options.icon); } // if it is an object (sensible choice) @@ -307,16 +311,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI $('body').css('overflow-x', 'hidden'); // get some other settings related to building the tooltip - var theme = self.options.theme, - themeClass = theme.replace('.', ''), - animation = 'tooltipster-' + self.options.animation, + var animation = 'tooltipster-' + self.options.animation, animationSpeed = '-webkit-transition-duration: '+ self.options.speed +'ms; -webkit-animation-duration: '+ self.options.speed +'ms; -moz-transition-duration: '+ self.options.speed +'ms; -moz-animation-duration: '+ self.options.speed +'ms; -o-transition-duration: '+ self.options.speed +'ms; -o-animation-duration: '+ self.options.speed +'ms; -ms-transition-duration: '+ self.options.speed +'ms; -ms-animation-duration: '+ self.options.speed +'ms; transition-duration: '+ self.options.speed +'ms; animation-duration: '+ self.options.speed +'ms;', fixedWidth = self.options.fixedWidth > 0 ? 'width:'+ Math.round(self.options.fixedWidth) +'px;' : '', maxWidth = self.options.maxWidth > 0 ? 'max-width:'+ Math.round(self.options.maxWidth) +'px;' : '', pointerEvents = self.options.interactive ? 'pointer-events: auto;' : ''; // build the base of our tooltip - self.$tooltip = $('
'); + self.$tooltip = $('
'); var $cont = $('
'); if(typeof self.content === 'string') $cont.text(self.content); From 0a297beccc4016197027817b4f2449fdfa9d54c0 Mon Sep 17 00:00:00 2001 From: louisameline Date: Sun, 22 Dec 2013 15:47:14 +0100 Subject: [PATCH 04/15] Changed the 'click' trigger behavior : when a tooltip is open, any click on the body will close it (except for the interactive and autoClose options). --- js/jquery.tooltipster.js | 110 +++++++++++++++++++++++++-------------- 1 file changed, 72 insertions(+), 38 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 68f489d..941386e 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -64,7 +64,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI this.$elProxy; this.enabled = true; this.options = $.extend({}, defaults, options); - this.randomId = Math.round(Math.random()*100000); + // a unique namespace per instance, for easy selective unbinding + this.namespace = 'tooltipster-'+ Math.round(Math.random()*100000); // status can be either : appearing, shown, disappearing, hidden this.status = 'hidden'; this.timerHide = null; @@ -209,12 +210,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // if click events are set to show and hide the tooltip, attach those events respectively else if (self.options.trigger == 'click') { self.$elProxy.on('click.tooltipster', function() { - if (self.status != 'shown' && self.status != 'appearing') { - self.showTooltip(); - } - else { - self.hideTooltip(); - } + self.showTooltip(); }); } } @@ -247,8 +243,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI clearTimeout(self.timerHide); self.timerHide = null; - // continue only if : is enabled, has any content, is not already open - if (self.enabled && self.content !== null && self.status != 'shown' && self.status != 'appearing') { + // continue only if the tooltip is enabled and has any content + if (self.enabled && self.content !== null) { // if we only want one tooltip open at a time, close all tooltips currently open and not already disappearing if (self.options.onlyOne) { @@ -264,14 +260,32 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // call our custom function before continuing self.options.functionBefore(self.$elProxy, function() { + // we'll listen for a click on the body to hide the tooltip if the trigger is 'click' + var clickListener = function(){ + if (self.options.autoClose && self.options.trigger == 'click') { + + // in case a listener is already bound for the same thing, unbind it first + $('body').off('click.'+ self.namespace); + + // use a timeout to prevent immediate closing if the method was called on a click event and if options.delay == 0 + setTimeout(function() { + $('body').one('click.'+ self.namespace, function() { + if (self.status == 'shown') { + self.hideTooltip(); + } + }); + }, 0); + } + }; + // if this origin already has its tooltip open if (self.status !== 'hidden') { - // the timer (if any) will start right now + // the timer (if any) will start (or restart) right now var extraTime = 0; // if it was disappearing, cancel that - if(self.status === 'disappearing'){ + if (self.status === 'disappearing') { self.status = 'appearing'; @@ -296,6 +310,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.status = 'shown'; }); } + + clickListener(); } } // if the tooltip isn't already open, open that sucker up! @@ -318,15 +334,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI pointerEvents = self.options.interactive ? 'pointer-events: auto;' : ''; // build the base of our tooltip - self.$tooltip = $('
'); - var $cont = $('
'); + self.$tooltip = $('
'); - if(typeof self.content === 'string') $cont.text(self.content); - else $cont.append(self.content); + // insert the content + self.insertContent(); - self.$tooltip - .append($cont) - .appendTo('body'); + // attach + self.$tooltip.appendTo('body'); // do all the crazy calculations and positioning self.positionTooltip(); @@ -351,7 +365,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }); } - // check to see if our tooltip origin is removed while the tooltip is alive + // will check to see if our tooltip origin is removed while the tooltip is alive self.setCheckInterval(); // if this is a touch device, hide the tooltip on body touch @@ -359,7 +373,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // if interactive, we'll stop the events that were emitted from inside the tooltip if (self.options.interactive) { - self.$tooltip.on('touchstart', function(event){ + self.$tooltip.on('touchstart', function(event) { event.stopPropagation(); }); } @@ -368,6 +382,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.hideTooltip(); }); } + + clickListener(); } // if we have a timer set, let the countdown begin @@ -454,6 +470,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.status = 'disappearing'; + // in case there is still a click listener for auto-closing + $('body').off('click.'+ self.namespace); + var finish = function() { self.status = 'hidden'; @@ -487,28 +506,47 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } }, - setContent: function(content){ + setContent: function(content) { // clone if asked. Cloning the object makes sure that each instance has its own version of the content (in case a same object were provided for several instances) // reminder : typeof null === object - if(typeof content === 'object' && content !== null && this.options.contentCloning){ + if (typeof content === 'object' && content !== null && this.options.contentCloning) { content = content.clone(true); } this.content = content; }, - updateTooltip: function(){ + insertContent: function() { + + var self = this, + $d = this.$tooltip.find('.tooltipster-content'); + + if (typeof self.content === 'string') { + $d.text(self.content); + } + else { + $d + .empty() + .append(self.content); + } + }, + + updateTooltip: function(content) { var self = this; - if(self.content !== null){ + // change the content + self.setContent(content); + + if (self.content !== null) { // update the tooltip if it is open - if(self.status !== 'hidden'){ - - // set the new content in the tooltip - self.$tooltip.find('.tooltipster-content') - .empty() - .append(self.content); + if (self.status !== 'hidden') { + + // reset the content in the tooltip + self.insertContent(); + + // reposition and resize the tooltip + self.positionTooltip(); // if we want to play a little animation showing the content changed if (self.options.updateAnimation) { @@ -527,7 +565,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // reset the CSS transitions and finish the change animation setTimeout(function() { - if(self.status !== 'hidden'){ + if(self.status != 'hidden'){ self.$tooltip.removeClass('tooltipster-content-changing'); @@ -549,15 +587,12 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } else { self.$tooltip.fadeTo(self.options.speed, 0.5, function() { - if(self.$tooltip){ + if(self.status != 'hidden'){ self.$tooltip.fadeTo(self.options.speed, 1); } }); } } - - // reposition and resize the tooltip - self.positionTooltip(); } } else { @@ -983,8 +1018,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } // setter method else { - self.setContent(args[1]); - self.updateTooltip(); + self.updateTooltip(args[1]); break; } @@ -1066,7 +1100,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }; // quick & dirty compare function (not bijective nor multidimensional) - function areEqual(a,b){ + function areEqual(a,b) { var same = true; $.each(a, function(i, el){ if(typeof b[i] === 'undefined' || a[i] !== b[i]){ From 80fe787220e6b90a9ec6d6b0fe416bba860a248a Mon Sep 17 00:00:00 2001 From: louisameline Date: Sun, 22 Dec 2013 18:03:33 +0100 Subject: [PATCH 05/15] Used the instance namespace for all bindings. Made autoClose consistent between click and hover triggers. AutoClose set to false will now apply for hover triggers as soon as the tooltip is shown. Now respecting the interactive tolerance when the mouse leaves an auto-closing interactive tooltip. --- js/jquery.tooltipster.js | 172 +++++++++++++++++---------------------- 1 file changed, 76 insertions(+), 96 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 941386e..c1cd8c9 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -64,6 +64,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI this.$elProxy; this.enabled = true; this.options = $.extend({}, defaults, options); + this.mouseIsOverProxy = false; // a unique namespace per instance, for easy selective unbinding this.namespace = 'tooltipster-'+ Math.round(Math.random()*100000); // status can be either : appearing, shown, disappearing, hidden @@ -144,72 +145,25 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // just in case the device ever triggers touch events, add a touch handler that will launch the tooltip. Right after we'll bind the mouse events, they'll just never be used if there is no mouse on the system. // informative note about device which have touch capacity : if self.options.touchDevices is false, tooltips will not be shown because of touch events. However the plugin itself has been initialized, thus preventing the native "title" tooltips to show. It is assumed that you would not want that anyway. if (self.options.touchDevices && hasTouchCapability && (self.options.trigger == 'click' || self.options.trigger == 'hover')) { - self.$elProxy.on('touchstart.tooltipster', function() { + self.$elProxy.on('touchstart.'+ self.namespace, function() { self.showTooltip(); }); } - // if hover events are set to show and hide the tooltip, attach those events respectively + // for 'click' and 'hover' triggers : bind on events to open the tooltip. Note : closing is now handled in showTooltipNow() because of its bindings if (self.options.trigger == 'hover') { - self.$elProxy.on('mouseenter.tooltipster', function() { - self.showTooltip(); - }); - // if this is an interactive tooltip, delay getting rid of the tooltip right away so you have a chance to hover on the tooltip - if (self.options.interactive) { - self.$elProxy.on('mouseleave.tooltipster', function() { - - var keepAlive = false; - - if (self.status == 'shown' || self.status == 'appearing') { - - self.$tooltip.mouseenter(function() { - keepAlive = true; - }); - self.$tooltip.mouseleave(function() { - keepAlive = false; - }); - - var tolerance = setTimeout(function() { - - if (keepAlive) { - if (self.options.autoClose) { - - self.$tooltip.mouseleave(function(e) { - var $target = $(e.target); - - if ($target.parents('.tooltipster-base').length === 0 || $target.hasClass('tooltipster-base')) { - self.hideTooltip(); - } - - else { - $target.on('mouseleave', function(e) { - self.hideTooltip(); - }); - } - }); - } - } - else { - self.hideTooltip(); - } - }, self.options.interactiveTolerance); - } - else { - self.hideTooltip(); - } + self.$elProxy + .on('mouseenter.'+ self.namespace, function() { + self.mouseIsOverProxy = true; + self.showTooltip(); + }) + .on('mouseleave.'+ self.namespace, function() { + self.mouseIsOverProxy = false; }); - } - // if this is a dumb tooltip, just get rid of it on mouseleave - else { - self.$elProxy.on('mouseleave.tooltipster', function() { - self.hideTooltip(); - }); - } } - // if click events are set to show and hide the tooltip, attach those events respectively else if (self.options.trigger == 'click') { - self.$elProxy.on('click.tooltipster', function() { + self.$elProxy.on('click.'+ self.namespace, function() { self.showTooltip(); }); } @@ -225,7 +179,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if (self.options.delay) { self.timerShow = setTimeout(function(){ - self.showTooltipNow(); + + // for hover trigger, we check if the mouse is still over the proxy, otherwise we do not show anything + if (self.options.trigger == 'click' || (self.options.trigger == 'hover' && self.mouseIsOverProxy)) { + self.showTooltipNow(); + } }, self.options.delay); } else self.showTooltipNow(); @@ -260,24 +218,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // call our custom function before continuing self.options.functionBefore(self.$elProxy, function() { - // we'll listen for a click on the body to hide the tooltip if the trigger is 'click' - var clickListener = function(){ - if (self.options.autoClose && self.options.trigger == 'click') { - - // in case a listener is already bound for the same thing, unbind it first - $('body').off('click.'+ self.namespace); - - // use a timeout to prevent immediate closing if the method was called on a click event and if options.delay == 0 - setTimeout(function() { - $('body').one('click.'+ self.namespace, function() { - if (self.status == 'shown') { - self.hideTooltip(); - } - }); - }, 0); - } - }; - // if this origin already has its tooltip open if (self.status !== 'hidden') { @@ -310,8 +250,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.status = 'shown'; }); } - - clickListener(); } } // if the tooltip isn't already open, open that sucker up! @@ -365,25 +303,63 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }); } - // will check to see if our tooltip origin is removed while the tooltip is alive + // will check if our tooltip origin is removed while the tooltip is shown self.setCheckInterval(); - // if this is a touch device, hide the tooltip on body touch - if (self.options.touchDevices && hasTouchCapability) { + // auto-close bindings + if (self.options.autoClose){ - // if interactive, we'll stop the events that were emitted from inside the tooltip - if (self.options.interactive) { - self.$tooltip.on('touchstart', function(event) { - event.stopPropagation(); - }); + // here we'll auto-close when the mouse leaves the proxy... + if(self.options.trigger == 'hover') { + + // if this is an interactive tooltip, delay getting rid of the tooltip right away so you have a chance to hover on the tooltip + if (self.options.interactive) { + + var tolerance = null; + + self.$elProxy.add(self.$tooltip) + // hide after some time out of the proxy and the tooltip + .on('mouseleave.'+ self.namespace + '-autoClose', function() { + clearTimeout(tolerance); + tolerance = setTimeout(function(){ + self.hideTooltip(); + }, self.options.interactiveTolerance); + }) + // suspend timeout when the mouse is over the proxy or the tooltip + .on('mouseenter.'+ self.namespace + '-autoClose', function() { + clearTimeout(tolerance); + }); + } + // if this is a dumb tooltip, just get rid of it on mouseleave + else { + self.$elProxy.on('mouseleave.'+ self.namespace + '-autoClose', function() { + self.hideTooltip(); + }); + } + } + // here we'll listen for a click on the body to hide the tooltip + else if(self.options.trigger == 'click'){ + + // in case a listener is already bound for the same thing, unbind it first + $('body').off('click.'+ self.namespace +' touchstart.'+ self.namespace); + + // use a timeout to prevent immediate closing if the method was called on a click event and if options.delay == 0 + setTimeout(function() { + $('body').on('click.'+ self.namespace +' touchstart.'+ self.namespace, function() { + self.hideTooltip(); + }); + }, 0); + + // if interactive, we'll stop the events that were emitted from inside the tooltip to stop autoClosing + if (self.options.interactive) { + + // note : the touch events will just not be used if the plugin is not enabled on touch devices + self.$tooltip.on('click.'+ self.namespace +' touchstart.'+ self.namespace, function(event) { + event.stopPropagation(); + }); + } } - - $('body').one('touchstart.tooltipster', function(event) { - self.hideTooltip(); - }); } - - clickListener(); } // if we have a timer set, let the countdown begin @@ -470,8 +446,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.status = 'disappearing'; - // in case there is still a click listener for auto-closing - $('body').off('click.'+ self.namespace); var finish = function() { @@ -480,7 +454,13 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.$tooltip.remove(); self.$tooltip = null; - $('body').css('overflow-x', self.bodyOverflowX); + $('body') + // unbind any auto-closing click/touch listeners + .off('.'+ self.namespace) + .css('overflow-x', self.bodyOverflowX); + + // unbind any auto-closing hover listeners + self.$elProxy.off('.'+ self.namespace + '-autoClose'); // finally, call our custom callback function self.options.functionAfter(self.$elProxy); @@ -1034,7 +1014,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI .removeClass('tooltipstered') .attr('title', stringifiedContent) .removeData('tooltipster') - .off('.tooltipster'); + .off('.'+ self.namespace); break; case 'disable': From 8b3eaf65bfa7e5036c11bc59d455bece1ef59af6 Mon Sep 17 00:00:00 2001 From: louisameline Date: Mon, 23 Dec 2013 01:44:56 +0100 Subject: [PATCH 06/15] Prevent onlyOne from closing non-autoclosing tooltips. Moved demo file in seperate folder and updated secondary files. --- .DS_Store | Bin 12292 -> 0 bytes bower.json | 4 ++-- demo/index.html | 35 ++++++++++++++++++++++++++++++ {images => demo}/map.png | Bin {css => demo}/reset.css | 0 {css => demo}/style.css | 0 index.html | 40 ----------------------------------- js/jquery.tooltipster.js | 20 ++++++++++++------ js/jquery.tooltipster.min.js | 2 +- tooltipster.jquery.json | 8 +++---- 10 files changed, 56 insertions(+), 53 deletions(-) delete mode 100644 .DS_Store create mode 100644 demo/index.html rename {images => demo}/map.png (100%) rename {css => demo}/reset.css (100%) rename {css => demo}/style.css (100%) delete mode 100644 index.html diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 331146ce7a64d20c4b2dff1c38ec799d183cce9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12292 zcmeI0OKjXk7{|YF^QhORiIawQ(-ykWCX_U!c@>gE+s!6@Kw28HNjERp?ylX&#j#gw z?`|MOEFdV90u^vTLghd!feM0C1ri6u2@Xg+REdX>xF8|mgv5yx-;5`HY?=cXKw(Cj z`8?muH}?GJXOG4JfboLS1rPxMg)+0cM#Xg!YiD^$3JFgQS)_RIav9srQ0<3IZb@(H zkP1izqyka_sen}Azn}o^*(@o`?E68hETsZcf&Zlf?E4U<%xp~9a$xzVg9?5GAX`mt zp6FU<7i6Qt#)K^gmRcxb5K1-(MRCNyAe{VB(Jv-!Ij})Epg4S>xHF0q3i7+t_)*>+ zFcw%@N(H0>OBG;e_bSMO2VSOh_4(blJioK^TMSiI*VL|3!m1ip>+0196Ekip;ivtA z7fSZyTj&t$~)sO#F7uhW?$mRU;aO@prEr!B|K^I*#`smpZIatyZ=cMFc;O(z0p z(lY!RKB#ag;jj`;>5=*Q?w&i_qupJ73+>VQ{@(8PXkStTf-&vu8NtKKAT$ zr=CCk!rK>uNuu~rKtsi(-?=hl+bfO)e=I_7Cbwk9+6_aE>b{iTSfptj&iR(>ct^~< zM>eI`do=ZXv#v9eH(7g1Z^)+YY{5?Z=74P{tVc~RnRV^LtmBRQ=A6$wlb)OR2e~t) z>jlqzz@+|G(Hx>EZ``8cST`NQ%7xWyH*DH+dq+>-u1j_GdPCzHRh=Z29N#)-nfb92 zlWHREWlhJhoa4!& zDh);90nuADb<|_ekQNoM_nugt7SRS5r&2jZMVVkx1BPK5 zn`2vpWesnRb&3U6pcy)7qZ);2Fd+v|!D)CAUV=05I-H01;UattpTg(x1$+r#!T0bp z`~ttiZ}0~KB8E^y9UE~CHsMWpD{jFSY{l)k1Mk85n?A;A6)YUkix_=scnHGBgW__z)74U$d2I*T6h9IEMN)e@DY3xpT=kKB%UGUUcp!KEWS|z z+kpz$-ns%?F_Cv{*EvoehGqy(fM=1.4" + "jquery": ">=1.7" } } \ No newline at end of file diff --git a/demo/index.html b/demo/index.html new file mode 100644 index 0000000..5c4da3a --- /dev/null +++ b/demo/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + +
+ Google +
+ +
+ +
+ + + + +
+ + diff --git a/images/map.png b/demo/map.png similarity index 100% rename from images/map.png rename to demo/map.png diff --git a/css/reset.css b/demo/reset.css similarity index 100% rename from css/reset.css rename to demo/reset.css diff --git a/css/style.css b/demo/style.css similarity index 100% rename from css/style.css rename to demo/style.css diff --git a/index.html b/index.html deleted file mode 100644 index 37f9e87..0000000 --- a/index.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - -
- Google -
- -
-
- Hover here -
- Google -
- -
- - - - -
- - diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index c1cd8c9..0d465b1 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -204,13 +204,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // continue only if the tooltip is enabled and has any content if (self.enabled && self.content !== null) { - // if we only want one tooltip open at a time, close all tooltips currently open and not already disappearing + // if we only want one tooltip open at a time, close all auto-closing tooltips currently open and not already disappearing if (self.options.onlyOne) { $('.tooltipstered').not(self.$el).each(function(i,el) { - // we use the public methods here - var s = el[pluginName]('status'); - if (s !== 'hidden' && s !== 'disappearing') { - el[pluginName]('hide'); + + // we have to use the public methods here + var $el = $(el), + s = $el[pluginName]('status'), + ac = $el[pluginName]('option', 'autoClose'); + + if (s !== 'hidden' && s !== 'disappearing' && ac) { + $el[pluginName]('hide'); } }); } @@ -446,7 +450,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.status = 'disappearing'; - var finish = function() { self.status = 'hidden'; @@ -1041,6 +1044,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.hideTooltip(); break; + // for internal use only + case 'option': + v = self.options[args[1]]; + break; + case 'reposition': self.positionTooltip(); break; diff --git a/js/jquery.tooltipster.min.js b/js/jquery.tooltipster.min.js index a27423a..5d5e802 100644 --- a/js/jquery.tooltipster.min.js +++ b/js/jquery.tooltipster.min.js @@ -1 +1 @@ -/* Tooltipster v2.3.0rc3 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.options=e.extend({},s,n);this.timer=null;this.$tooltip;this.tooltipArrowReposition;this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.append(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.touchDevices&&a&&(t.options.trigger=="click"||t.options.trigger=="hover")){t.$elProxy.on("touchstart.tooltipster",function(){t.showTooltip()})}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter.tooltipster",function(){t.showTooltip()});if(t.options.interactive){t.$elProxy.on("mouseleave.tooltipster",function(){var n=false;if(t.$tooltip){t.$tooltip.mouseenter(function(){n=true});t.$tooltip.mouseleave(function(){n=false});var r=setTimeout(function(){if(n){if(t.options.interactiveAutoClose){t.$tooltip.mouseleave(function(n){var r=e(n.target);if(r.parents(".tooltipster-base").length===0||r.hasClass("tooltipster-base")){t.hideTooltip()}else{r.on("mouseleave",function(e){t.hideTooltip()})}})}}else{t.hideTooltip()}},t.options.interactiveTolerance)}else{t.hideTooltip()}})}else{t.$elProxy.on("mouseleave.tooltipster",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){t.$elProxy.on("click.tooltipster",function(){if(!t.$tooltip){t.showTooltip()}else{t.hideTooltip()}})}}},showTooltip:function(t){var n=this;if(!n.$elProxy.hasClass("tooltipster-disable")&&n.content!==null){if(n.options.onlyOne){e(".tooltipstered").not(n.$el).not(".tooltipster-dying").addClass("tooltipster-kill")[r]("hide")}n.$elProxy.clearQueue();clearTimeout(n.timer);n.timer=null;if(n.options.delay>0)n.$elProxy.delay(n.options.delay);n.$elProxy.queue(function(){n.options.functionBefore(n.$elProxy,function(){if(n.$tooltip){var t=0;if(!n.$tooltip.hasClass("tooltipster-kill")){n.$tooltip.removeClass("tooltipster-dying");if(f()){n.$tooltip.clearQueue().addClass("tooltipster-"+n.options.animation+"-show")}else{n.$tooltip.stop().fadeIn()}}}else{var t=n.options.speed;n.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r=n.options.theme,i=r.replace(".",""),s="tooltipster-"+n.options.animation,o="-webkit-transition-duration: "+n.options.speed+"ms; -webkit-animation-duration: "+n.options.speed+"ms; -moz-transition-duration: "+n.options.speed+"ms; -moz-animation-duration: "+n.options.speed+"ms; -o-transition-duration: "+n.options.speed+"ms; -o-animation-duration: "+n.options.speed+"ms; -ms-transition-duration: "+n.options.speed+"ms; -ms-animation-duration: "+n.options.speed+"ms; transition-duration: "+n.options.speed+"ms; animation-duration: "+n.options.speed+"ms;",u=n.options.fixedWidth>0?"width:"+Math.round(n.options.fixedWidth)+"px;":"",l=n.options.maxWidth>0?"max-width:"+Math.round(n.options.maxWidth)+"px;":"",c=n.options.interactive?"pointer-events: auto;":"";n.$tooltip=e('
');n.$tooltip.children().append(n.content).end().appendTo("body");n.positionTooltip();n.options.functionReady(n.$el,n.$tooltip);if(f()){n.$tooltip.addClass(s+"-show")}else{n.$tooltip.css("display","none").fadeIn(n.options.speed)}n.setCheckInterval();if(n.options.touchDevices&&a){if(n.options.interactive){n.$tooltip.on("touchstart",function(e){e.stopPropagation()})}e("body").one("touchstart.tooltipster",function(e){n.hideTooltip()})}}if(n.options.timer>0){n.timer=setTimeout(function(){n.timer=null;n.hideTooltip()},n.options.timer+t)}});n.$elProxy.dequeue()})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&t.$tooltip){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||!t.$tooltip||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;t.$elProxy.clearQueue();if(t.$tooltip){clearTimeout(t.timer);t.timer=null;var n="tooltipster-"+t.options.animation;if(f()){t.$tooltip.clearQueue().removeClass(n+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.$tooltip.remove();t.$tooltip=null;e("body").css("overflow-x",t.bodyOverflowX);t.options.functionAfter(t.$elProxy)})}else{t.$tooltip.clearQueue().addClass("tooltipster-dying").fadeOut(t.options.speed,function(){t.$tooltip.remove();t.$tooltip=null;e("body").css("overflow-x",t.bodyOverflowX);t.options.functionAfter(t.$elProxy)})}}},updateContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},updateTooltip:function(){var e=this;if(e.content!==null){if(e.$tooltip){e.$tooltip.find(".tooltipster-content").empty().append(e.content);if(e.options.updateAnimation){if(f()){e.$tooltip.css({width:"","-webkit-transition":"all "+e.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+e.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+e.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+e.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+e.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(e.$tooltip){e.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(e.$tooltip){e.$tooltip.css({"-webkit-transition":e.options.speed+"ms","-moz-transition":e.options.speed+"ms","-o-transition":e.options.speed+"ms","-ms-transition":e.options.speed+"ms",transition:e.options.speed+"ms"})}},e.options.speed)}},e.options.speed)}else{e.$tooltip.fadeTo(e.options.speed,.5,function(){if(e.$tooltip){e.$tooltip.fadeTo(e.options.speed,1)}})}}e.positionTooltip()}}else{e.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateContent(t[1]);n.updateTooltip();break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off(".tooltipster");break;case"disable":n.hideTooltip();n.$elProxy.addClass("tooltipster-disable");break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.$elProxy.removeClass("tooltipster-disable");break;case"hide":n.hideTooltip();break;case"reposition":n.positionTooltip();break;case"show":n.showTooltip();break;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file +/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.append(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.touchDevices&&a&&(t.options.trigger=="click"||t.options.trigger=="hover")){t.$elProxy.on("touchstart."+t.namespace,function(){t.showTooltip()})}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){t.mouseIsOverProxy=true;t.showTooltip()}).on("mouseleave."+t.namespace,function(){t.mouseIsOverProxy=false})}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){t.showTooltip()})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(f()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(f()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file diff --git a/tooltipster.jquery.json b/tooltipster.jquery.json index 324050d..212df9e 100644 --- a/tooltipster.jquery.json +++ b/tooltipster.jquery.json @@ -5,7 +5,7 @@ "keywords": [ "tooltip" ], - "version": "2.3.0", + "version": "3.0.0", "author": { "name": "Caleb Jacob", "url": "http://calebjacob.com/" @@ -23,9 +23,9 @@ "url": "http://opensource.org/licenses/MIT" } ], - "homepage": "http://calebjacob.com/tooltipster/", - "docs": "http://calebjacob.com/tooltipster/#getting-started", + "homepage": "https://github.com/iamceege/tooltipster", + "docs": "http://iamceege.github.io/tooltipster", "dependencies": { - "jquery": ">=1.4" + "jquery": ">=1.7" } } \ No newline at end of file From 99c1c17b519ca579c6bc5115281f11dc8fb8decb Mon Sep 17 00:00:00 2001 From: louisameline Date: Mon, 23 Dec 2013 03:18:40 +0100 Subject: [PATCH 07/15] Improved behavior of click/hover triggers on touch devices. Removed the toucheDevice option which cannot be handled correctly without a proper library for touch events... --- js/jquery.tooltipster.js | 16 ++++++---------- js/jquery.tooltipster.min.js | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 0d465b1..cb56b47 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -43,7 +43,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI speed: 350, timer: 0, theme: 'tooltipster-default', - touchDevices: true, trigger: 'hover', updateAnimation: true }; @@ -127,7 +126,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if(typeof self.options.icon === 'string'){ // wrap it in a span with the icon class self.$elProxy = $(''); - self.$elProxy.append(self.options.icon); + self.$elProxy.text(self.options.icon); } // if it is an object (sensible choice) else { @@ -142,14 +141,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.$elProxy = self.$el; } - // just in case the device ever triggers touch events, add a touch handler that will launch the tooltip. Right after we'll bind the mouse events, they'll just never be used if there is no mouse on the system. - // informative note about device which have touch capacity : if self.options.touchDevices is false, tooltips will not be shown because of touch events. However the plugin itself has been initialized, thus preventing the native "title" tooltips to show. It is assumed that you would not want that anyway. - if (self.options.touchDevices && hasTouchCapability && (self.options.trigger == 'click' || self.options.trigger == 'hover')) { - self.$elProxy.on('touchstart.'+ self.namespace, function() { - self.showTooltip(); - }); - } - // for 'click' and 'hover' triggers : bind on events to open the tooltip. Note : closing is now handled in showTooltipNow() because of its bindings if (self.options.trigger == 'hover') { @@ -160,9 +151,14 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }) .on('mouseleave.'+ self.namespace, function() { self.mouseIsOverProxy = false; + }) + // for touch devices, we immediately display the tooltip because we cannot rely on mouseleave to handle the delay + .on('touchstart.'+ self.namespace, function() { + self.showTooltipNow(); }); } else if (self.options.trigger == 'click') { + // note : for touch devices, we do not bind on touchstart, we only rely on the emulated click self.$elProxy.on('click.'+ self.namespace, function() { self.showTooltip(); }); diff --git a/js/jquery.tooltipster.min.js b/js/jquery.tooltipster.min.js index 5d5e802..dfddb5d 100644 --- a/js/jquery.tooltipster.min.js +++ b/js/jquery.tooltipster.min.js @@ -1 +1 @@ -/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.append(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.touchDevices&&a&&(t.options.trigger=="click"||t.options.trigger=="hover")){t.$elProxy.on("touchstart."+t.namespace,function(){t.showTooltip()})}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){t.mouseIsOverProxy=true;t.showTooltip()}).on("mouseleave."+t.namespace,function(){t.mouseIsOverProxy=false})}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){t.showTooltip()})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(f()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(f()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file +/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){t.mouseIsOverProxy=true;t.showTooltip()}).on("mouseleave."+t.namespace,function(){t.mouseIsOverProxy=false}).on("touchstart."+t.namespace,function(){t.showTooltipNow()})}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){t.showTooltip()})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(f()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(f()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file From 0b0fe53be124166f4afea2756da8417d43cd49ef Mon Sep 17 00:00:00 2001 From: louisameline Date: Mon, 23 Dec 2013 03:50:41 +0100 Subject: [PATCH 08/15] added the contentAsHTML option --- js/jquery.tooltipster.js | 3 ++- js/jquery.tooltipster.min.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index cb56b47..2481220 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -18,6 +18,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI arrowColor: '', autoClose: true, content: null, + contentAsHTML: false, contentCloning: true, delay: 200, fixedWidth: 0, @@ -499,7 +500,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI var self = this, $d = this.$tooltip.find('.tooltipster-content'); - if (typeof self.content === 'string') { + if (typeof self.content === 'string' && !self.options.contentAsHTML) { $d.text(self.content); } else { diff --git a/js/jquery.tooltipster.min.js b/js/jquery.tooltipster.min.js index dfddb5d..37afd66 100644 --- a/js/jquery.tooltipster.min.js +++ b/js/jquery.tooltipster.min.js @@ -1 +1 @@ -/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){t.mouseIsOverProxy=true;t.showTooltip()}).on("mouseleave."+t.namespace,function(){t.mouseIsOverProxy=false}).on("touchstart."+t.namespace,function(){t.showTooltipNow()})}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){t.showTooltip()})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(f()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(f()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file +/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){t.mouseIsOverProxy=true;t.showTooltip()}).on("mouseleave."+t.namespace,function(){t.mouseIsOverProxy=false}).on("touchstart."+t.namespace,function(){t.showTooltipNow()})}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){t.showTooltip()})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(f()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"&&!e.options.contentAsHTML){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(f()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file From c5c6df64d7aaf17b369361ef9e042a9f235d9d30 Mon Sep 17 00:00:00 2001 From: louisameline Date: Mon, 23 Dec 2013 05:36:41 +0100 Subject: [PATCH 09/15] Brought back the touchDevices option, but only for pure-touch device (not hybrid ones), otherwise it's too complex --- js/jquery.tooltipster.js | 46 ++++++++++++++++++++++++++++-------- js/jquery.tooltipster.min.js | 2 +- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 2481220..a40ddaa 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -44,6 +44,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI speed: 350, timer: 0, theme: 'tooltipster-default', + touchDevices: true, trigger: 'hover', updateAnimation: true }; @@ -118,7 +119,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // detect if we're changing the tooltip origin to an icon // note about this condition : if the device has touch capability and self.options.iconTouch is false, you'll have no icons event though you may consider your device as a desktop if it also has a mouse. Not sure why someone would have this use case though. - if ((!hasTouchCapability && self.options.iconDesktop) || (hasTouchCapability && self.options.iconTouch)) { + if ((!deviceHasTouchCapability && self.options.iconDesktop) || (deviceHasTouchCapability && self.options.iconTouch)) { // TODO : the tooltip should be automatically be given an absolute position to be near the origin. Otherwise, when the origin is floating or what, it's going to be nowhere near it and disturb the position flow of the page elements. It will imply that the icon also detects when its origin moves, to follow it : not trivial. // Until it's done, the icon feature does not really make sense since the user still has most of the work to do by himself @@ -142,26 +143,41 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.$elProxy = self.$el; } - // for 'click' and 'hover' triggers : bind on events to open the tooltip. Note : closing is now handled in showTooltipNow() because of its bindings + // for 'click' and 'hover' triggers : bind on events to open the tooltip. Closing is now handled in showTooltipNow() because of its bindings. + // Notes about touch events : + // - mouseenter, mouseleave and clicks happen even on pure touch devices because they are emulated. deviceIsPureTouch() is a simple attempt to detect them. + // - on hybrid devices, we do not prevent touch gesture from opening tooltips. It would be too complex to differentiate real mouse events from emulated ones. + // - we check deviceIsPureTouch() at each event rather than prior to binding because the situation may change during browsing if (self.options.trigger == 'hover') { self.$elProxy .on('mouseenter.'+ self.namespace, function() { - self.mouseIsOverProxy = true; - self.showTooltip(); + if (!deviceIsPureTouch() || self.options.touchDevices) { + self.mouseIsOverProxy = true; + self.showTooltip(); + } }) .on('mouseleave.'+ self.namespace, function() { - self.mouseIsOverProxy = false; - }) + if (!deviceIsPureTouch() || self.options.touchDevices) { + self.mouseIsOverProxy = false; + } + }); + + if (deviceHasTouchCapability && self.options.touchDevices) { + // for touch devices, we immediately display the tooltip because we cannot rely on mouseleave to handle the delay - .on('touchstart.'+ self.namespace, function() { + self.$elProxy.on('touchstart.'+ self.namespace, function() { self.showTooltipNow(); }); + } } else if (self.options.trigger == 'click') { - // note : for touch devices, we do not bind on touchstart, we only rely on the emulated click + + // note : for touch devices, we do not bind on touchstart, we only rely on the emulated click (triggered by a tap) self.$elProxy.on('click.'+ self.namespace, function() { - self.showTooltip(); + if (!deviceIsPureTouch() || self.options.touchDevices) { + self.showTooltip(); + } }); } } @@ -1097,7 +1113,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } // detect if this device can trigger touch events - var hasTouchCapability = !!('ontouchstart' in window); + var deviceHasTouchCapability = !!('ontouchstart' in window); + + // we'll assume the device has no mouse until we detect any mouse movement + var deviceHasMouse = false; + $('body').one('mousemove', function() { + deviceHasMouse = true; + }); + + function deviceIsPureTouch() { + return (!deviceHasMouse && deviceHasTouchCapability); + } // detecting support for CSS transitions function supportsTransitions() { diff --git a/js/jquery.tooltipster.min.js b/js/jquery.tooltipster.min.js index 37afd66..29d2391 100644 --- a/js/jquery.tooltipster.min.js +++ b/js/jquery.tooltipster.min.js @@ -1 +1 @@ -/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function f(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){t.mouseIsOverProxy=true;t.showTooltip()}).on("mouseleave."+t.namespace,function(){t.mouseIsOverProxy=false}).on("touchstart."+t.namespace,function(){t.showTooltipNow()})}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){t.showTooltip()})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(f()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(f()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"&&!e.options.contentAsHTML){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(f()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file +/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function l(){return!f&&a}function c(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=true;t.showTooltip()}}).on("mouseleave."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=false}});if(a&&t.options.touchDevices){t.$elProxy.on("touchstart."+t.namespace,function(){t.showTooltipNow()})}}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){if(!l()||t.options.touchDevices){t.showTooltip()}})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(c()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"&&!e.options.contentAsHTML){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(c()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);var f=false;e("body").one("mousemove",function(){f=true});e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file From c285a7dd9dc5cca69f26142b74cb1abc8ae446bd Mon Sep 17 00:00:00 2001 From: louisameline Date: Mon, 23 Dec 2013 07:18:09 +0100 Subject: [PATCH 10/15] fix for touch devices --- js/jquery.tooltipster.js | 45 ++++++++++++++++++++++++++---------- js/jquery.tooltipster.min.js | 2 +- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index a40ddaa..04fabca 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -150,6 +150,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI // - we check deviceIsPureTouch() at each event rather than prior to binding because the situation may change during browsing if (self.options.trigger == 'hover') { + // these binding are for mouse interaction only self.$elProxy .on('mouseenter.'+ self.namespace, function() { if (!deviceIsPureTouch() || self.options.touchDevices) { @@ -163,6 +164,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } }); + // for touch interaction only if (deviceHasTouchCapability && self.options.touchDevices) { // for touch devices, we immediately display the tooltip because we cannot rely on mouseleave to handle the delay @@ -173,7 +175,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI } else if (self.options.trigger == 'click') { - // note : for touch devices, we do not bind on touchstart, we only rely on the emulated click (triggered by a tap) + // note : for touch devices, we do not bind on touchstart, we only rely on the emulated clicks (triggered by taps) self.$elProxy.on('click.'+ self.namespace, function() { if (!deviceIsPureTouch() || self.options.touchDevices) { self.showTooltip(); @@ -315,7 +317,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI }); } else { - self.$tooltip.css('display', 'none').fadeIn(self.options.speed, function(){ + self.$tooltip.css('display', 'none').fadeIn(self.options.speed, function() { self.status = 'shown'; }); } @@ -324,14 +326,36 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI self.setCheckInterval(); // auto-close bindings - if (self.options.autoClose){ + if (self.options.autoClose) { - // here we'll auto-close when the mouse leaves the proxy... - if(self.options.trigger == 'hover') { + // in case a listener is already bound for autoclosing (mouse or touch, hover or click), unbind it first + $('body').off('.'+ self.namespace); + + // here we'll have to set different sets of bindings for both touch and mouse + if (self.options.trigger == 'hover') { + + // if the user touches the body, hide + if (deviceHasTouchCapability) { + // timeout 0 : explanation below in click section + setTimeout(function() { + // we don't want to bind on click here because the initial touchstart event has not yet triggered its click event, which is thus about to happen + $('body').on('touchstart.'+ self.namespace, function() { + self.hideTooltip(); + }); + }, 0); + } - // if this is an interactive tooltip, delay getting rid of the tooltip right away so you have a chance to hover on the tooltip + // if we have to allow interaction if (self.options.interactive) { + // touch events inside the tooltip must not close it + if (deviceHasTouchCapability) { + self.$tooltip.on('touchstart.'+ self.namespace, function(event) { + event.stopPropagation(); + }); + } + + // as for mouse interaction, we get rid of the tooltip only after the mouse has spent some time out of it var tolerance = null; self.$elProxy.add(self.$tooltip) @@ -347,20 +371,17 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI clearTimeout(tolerance); }); } - // if this is a dumb tooltip, just get rid of it on mouseleave + // if this is a non-interactive tooltip, get rid of it if the mouse leaves else { self.$elProxy.on('mouseleave.'+ self.namespace + '-autoClose', function() { self.hideTooltip(); }); } } - // here we'll listen for a click on the body to hide the tooltip + // here we'll set the same bindings for both clicks and touch on the body to hide the tooltip else if(self.options.trigger == 'click'){ - // in case a listener is already bound for the same thing, unbind it first - $('body').off('click.'+ self.namespace +' touchstart.'+ self.namespace); - - // use a timeout to prevent immediate closing if the method was called on a click event and if options.delay == 0 + // use a timeout to prevent immediate closing if the method was called on a click event and if options.delay == 0 (because of bubbling) setTimeout(function() { $('body').on('click.'+ self.namespace +' touchstart.'+ self.namespace, function() { self.hideTooltip(); diff --git a/js/jquery.tooltipster.min.js b/js/jquery.tooltipster.min.js index 29d2391..3263503 100644 --- a/js/jquery.tooltipster.min.js +++ b/js/jquery.tooltipster.min.js @@ -1 +1 @@ -/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function l(){return!f&&a}function c(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=true;t.showTooltip()}}).on("mouseleave."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=false}});if(a&&t.options.touchDevices){t.$elProxy.on("touchstart."+t.namespace,function(){t.showTooltipNow()})}}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){if(!l()||t.options.touchDevices){t.showTooltip()}})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(c()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){if(t.options.trigger=="hover"){if(t.options.interactive){var a=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(a);a=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(a)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){e("body").off("click."+t.namespace+" touchstart."+t.namespace);setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"&&!e.options.contentAsHTML){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(c()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);var f=false;e("body").one("mousemove",function(){f=true});e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file +/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function l(){return!f&&a}function c(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=true;t.showTooltip()}}).on("mouseleave."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=false}});if(a&&t.options.touchDevices){t.$elProxy.on("touchstart."+t.namespace,function(){t.showTooltipNow()})}}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){if(!l()||t.options.touchDevices){t.showTooltip()}})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(c()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){e("body").off("."+t.namespace);if(t.options.trigger=="hover"){if(a){setTimeout(function(){e("body").on("touchstart."+t.namespace,function(){t.hideTooltip()})},0)}if(t.options.interactive){if(a){t.$tooltip.on("touchstart."+t.namespace,function(e){e.stopPropagation()})}var f=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(f);f=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(f)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"&&!e.options.contentAsHTML){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(c()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);var f=false;e("body").one("mousemove",function(){f=true});e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file From 11ba1ed6d138d1836bf982b2f71671937d9919d0 Mon Sep 17 00:00:00 2001 From: louisameline Date: Fri, 27 Dec 2013 08:16:43 +0100 Subject: [PATCH 11/15] Not interpreting HTML in strings at destroy call --- js/jquery.tooltipster.js | 2 +- js/jquery.tooltipster.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/jquery.tooltipster.js b/js/jquery.tooltipster.js index 04fabca..b6e6a15 100644 --- a/js/jquery.tooltipster.js +++ b/js/jquery.tooltipster.js @@ -1045,7 +1045,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI if(self.$el[0] !== self.$elProxy[0]) self.$elProxy.remove(); // old school technique when outerHTML is not supported - var stringifiedContent = $('
').append(self.content).html(); + var stringifiedContent = (typeof self.content === 'string') ? self.content : $('
').append(self.content).html(); self.$el .removeClass('tooltipstered') diff --git a/js/jquery.tooltipster.min.js b/js/jquery.tooltipster.min.js index 3263503..4ccdd91 100644 --- a/js/jquery.tooltipster.min.js +++ b/js/jquery.tooltipster.min.js @@ -1 +1 @@ -/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function l(){return!f&&a}function c(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=true;t.showTooltip()}}).on("mouseleave."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=false}});if(a&&t.options.touchDevices){t.$elProxy.on("touchstart."+t.namespace,function(){t.showTooltipNow()})}}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){if(!l()||t.options.touchDevices){t.showTooltip()}})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(c()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){e("body").off("."+t.namespace);if(t.options.trigger=="hover"){if(a){setTimeout(function(){e("body").on("touchstart."+t.namespace,function(){t.hideTooltip()})},0)}if(t.options.interactive){if(a){t.$tooltip.on("touchstart."+t.namespace,function(e){e.stopPropagation()})}var f=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(f);f=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(f)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"&&!e.options.contentAsHTML){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(c()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);var f=false;e("body").one("mousemove",function(){f=true});e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file +/* Tooltipster v3.0.0rc1 */;(function(e,t,n){function o(t,n){this.bodyOverflowX;this.checkInterval=null;this.content;this.$el=e(t);this.elProxyPosition;this.$elProxy;this.enabled=true;this.options=e.extend({},s,n);this.mouseIsOverProxy=false;this.namespace="tooltipster-"+Math.round(Math.random()*1e5);this.status="hidden";this.timerHide=null;this.timerShow=null;this.$tooltip;this.tooltipArrowReposition;this.options.iconTheme=this.options.iconTheme.replace(".","");this.options.theme=this.options.theme.replace(".","");this.init()}function u(t,n){var r=true;e.each(t,function(e,i){if(typeof n[e]==="undefined"||t[e]!==n[e]){r=false;return false}});return r}function l(){return!f&&a}function c(){var e=n.body||n.documentElement,t=e.style,r="transition";if(typeof t[r]=="string"){return true}v=["Moz","Webkit","Khtml","O","ms"],r=r.charAt(0).toUpperCase()+r.substr(1);for(var i=0;i');t.$elProxy.text(t.options.icon)}else{if(t.options.iconCloning)t.$elProxy=t.options.icon.clone(true);else t.$elProxy=t.options.icon}t.$elProxy.insertAfter(t.$el)}else{t.$elProxy=t.$el}if(t.options.trigger=="hover"){t.$elProxy.on("mouseenter."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=true;t.showTooltip()}}).on("mouseleave."+t.namespace,function(){if(!l()||t.options.touchDevices){t.mouseIsOverProxy=false}});if(a&&t.options.touchDevices){t.$elProxy.on("touchstart."+t.namespace,function(){t.showTooltipNow()})}}else if(t.options.trigger=="click"){t.$elProxy.on("click."+t.namespace,function(){if(!l()||t.options.touchDevices){t.showTooltip()}})}}},showTooltip:function(){var e=this;if(e.status!="shown"&&e.status!="appearing"){if(e.options.delay){e.timerShow=setTimeout(function(){if(e.options.trigger=="click"||e.options.trigger=="hover"&&e.mouseIsOverProxy){e.showTooltipNow()}},e.options.delay)}else e.showTooltipNow()}},showTooltipNow:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.enabled&&t.content!==null){if(t.options.onlyOne){e(".tooltipstered").not(t.$el).each(function(t,n){var i=e(n),s=i[r]("status"),o=i[r]("option","autoClose");if(s!=="hidden"&&s!=="disappearing"&&o){i[r]("hide")}})}t.options.functionBefore(t.$elProxy,function(){if(t.status!=="hidden"){var n=0;if(t.status==="disappearing"){t.status="appearing";if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-"+t.options.animation+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.stop().fadeIn(function(){t.status="shown"})}}}else{t.status="appearing";var n=t.options.speed;t.bodyOverflowX=e("body").css("overflow-x");e("body").css("overflow-x","hidden");var r="tooltipster-"+t.options.animation,i="-webkit-transition-duration: "+t.options.speed+"ms; -webkit-animation-duration: "+t.options.speed+"ms; -moz-transition-duration: "+t.options.speed+"ms; -moz-animation-duration: "+t.options.speed+"ms; -o-transition-duration: "+t.options.speed+"ms; -o-animation-duration: "+t.options.speed+"ms; -ms-transition-duration: "+t.options.speed+"ms; -ms-animation-duration: "+t.options.speed+"ms; transition-duration: "+t.options.speed+"ms; animation-duration: "+t.options.speed+"ms;",s=t.options.fixedWidth>0?"width:"+Math.round(t.options.fixedWidth)+"px;":"",o=t.options.maxWidth>0?"max-width:"+Math.round(t.options.maxWidth)+"px;":"",u=t.options.interactive?"pointer-events: auto;":"";t.$tooltip=e('
');t.insertContent();t.$tooltip.appendTo("body");t.positionTooltip();t.options.functionReady(t.$el,t.$tooltip);if(c()){t.$tooltip.addClass(r+"-show");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(function(){t.status="shown"})}else{t.$tooltip.css("display","none").fadeIn(t.options.speed,function(){t.status="shown"})}t.setCheckInterval();if(t.options.autoClose){e("body").off("."+t.namespace);if(t.options.trigger=="hover"){if(a){setTimeout(function(){e("body").on("touchstart."+t.namespace,function(){t.hideTooltip()})},0)}if(t.options.interactive){if(a){t.$tooltip.on("touchstart."+t.namespace,function(e){e.stopPropagation()})}var f=null;t.$elProxy.add(t.$tooltip).on("mouseleave."+t.namespace+"-autoClose",function(){clearTimeout(f);f=setTimeout(function(){t.hideTooltip()},t.options.interactiveTolerance)}).on("mouseenter."+t.namespace+"-autoClose",function(){clearTimeout(f)})}else{t.$elProxy.on("mouseleave."+t.namespace+"-autoClose",function(){t.hideTooltip()})}}else if(t.options.trigger=="click"){setTimeout(function(){e("body").on("click."+t.namespace+" touchstart."+t.namespace,function(){t.hideTooltip()})},0);if(t.options.interactive){t.$tooltip.on("click."+t.namespace+" touchstart."+t.namespace,function(e){e.stopPropagation()})}}}}if(t.options.timer>0){t.timerHide=setTimeout(function(){t.timerHide=null;t.hideTooltip()},t.options.timer+n)}})}},setCheckInterval:function(){var t=this;t.checkInterval=setInterval(function(){if(t.options.positionTracker){var n=t.positionInfo(t.$elProxy),r=false;if(u(n.dimension,t.elProxyPosition.dimension)){if(t.$elProxy.css("position")==="fixed"){if(u(n.position,t.elProxyPosition.position))r=true}else{if(u(n.offset,t.elProxyPosition.offset))r=true}}if(!r){t.positionTooltip()}}if(e("body").find(t.$el).length===0&&(t.status=="shown"||t.status=="appearing")){t.hideTooltip()}if(e("body").find(t.$el).length===0||e("body").find(t.$elProxy).length===0||t.status=="hidden"||e("body").find(t.$tooltip).length===0){t.cancelCheckInterval()}},200)},cancelCheckInterval:function(){clearInterval(this.checkInterval);this.checkInterval=null},hideTooltip:function(){var t=this;clearTimeout(t.timerShow);t.timerShow=null;clearTimeout(t.timerHide);t.timerHide=null;if(t.status=="shown"||t.status=="appearing"){t.status="disappearing";var n=function(){t.status="hidden";t.$tooltip.remove();t.$tooltip=null;e("body").off("."+t.namespace).css("overflow-x",t.bodyOverflowX);t.$elProxy.off("."+t.namespace+"-autoClose");t.options.functionAfter(t.$elProxy)};if(c()){t.$tooltip.clearQueue().removeClass("tooltipster-"+t.options.animation+"-show").addClass("tooltipster-dying");if(t.options.speed>0)t.$tooltip.delay(t.options.speed);t.$tooltip.queue(n)}else{t.$tooltip.stop().fadeOut(t.options.speed,n)}}},setContent:function(e){if(typeof e==="object"&&e!==null&&this.options.contentCloning){e=e.clone(true)}this.content=e},insertContent:function(){var e=this,t=this.$tooltip.find(".tooltipster-content");if(typeof e.content==="string"&&!e.options.contentAsHTML){t.text(e.content)}else{t.empty().append(e.content)}},updateTooltip:function(e){var t=this;t.setContent(e);if(t.content!==null){if(t.status!=="hidden"){t.insertContent();t.positionTooltip();if(t.options.updateAnimation){if(c()){t.$tooltip.css({width:"","-webkit-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-moz-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-o-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms","-ms-transition":"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms",transition:"all "+t.options.speed+"ms, width 0ms, height 0ms, left 0ms, top 0ms"}).addClass("tooltipster-content-changing");setTimeout(function(){if(t.status!="hidden"){t.$tooltip.removeClass("tooltipster-content-changing");setTimeout(function(){if(t.status!=="hidden"){t.$tooltip.css({"-webkit-transition":t.options.speed+"ms","-moz-transition":t.options.speed+"ms","-o-transition":t.options.speed+"ms","-ms-transition":t.options.speed+"ms",transition:t.options.speed+"ms"})}},t.options.speed)}},t.options.speed)}else{t.$tooltip.fadeTo(t.options.speed,.5,function(){if(t.status!="hidden"){t.$tooltip.fadeTo(t.options.speed,1)}})}}}}else{t.hideTooltip()}},positionInfo:function(e){return{dimension:{height:e.outerHeight(false),width:e.outerWidth(false)},offset:e.offset(),position:{left:parseInt(e.css("left")),top:parseInt(e.css("top"))}}},positionTooltip:function(){var n=this;if(n.$tooltip){n.$tooltip.css("width","");n.elProxyPosition=n.positionInfo(n.$elProxy);var r=e(t).width(),s=n.elProxyPosition,o=n.$tooltip.outerWidth(false),u=n.$tooltip.innerWidth()+1,a=n.$tooltip.outerHeight(false),f=null;if(n.$elProxy.is("area")){var l=n.$elProxy.attr("shape"),c=n.$elProxy.parent().attr("name"),h=e('img[usemap="#'+c+'"]'),p=h.offset().left,d=h.offset().top,v=n.$elProxy.attr("coords")!==undefined?n.$elProxy.attr("coords").split(","):undefined;if(l=="circle"){var m=parseInt(v[0]),g=parseInt(v[1]),y=parseInt(v[2]);s.dimension.height=y*2;s.dimension.width=y*2;s.offset.top=d+g-y;s.offset.left=p+m-y}else if(l=="rect"){var m=parseInt(v[0]),g=parseInt(v[1]),b=parseInt(v[2]),w=parseInt(v[3]);s.dimension.height=w-g;s.dimension.width=b-m;s.offset.top=d+g;s.offset.left=p+m}else if(l=="poly"){var E=[],S=[],x=0,T=0,N=0,C=0,k="even";for(i=0;iN){N=L;if(i===0){x=N}}if(LC){C=L;if(i==1){T=C}}if(Lr){var s=A-(r+i-o);A=r+i-o;n.tooltipArrowReposition=s}}function B(n,r){if(s.offset.top-e(t).scrollTop()-a-_-12<0&&r.indexOf("top")>-1){P=n}if(s.offset.top+s.dimension.height+a+12+_>e(t).scrollTop()+e(t).height()&&r.indexOf("bottom")>-1){P=n;M=s.offset.top-a-_-12}}if(P=="top"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left+D-j/2;M=s.offset.top-a-_-12;H();B("bottom","top")}if(P=="top-left"){A=s.offset.left+D;M=s.offset.top-a-_-12;H();B("bottom-left","top-left")}if(P=="top-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top-a-_-12;H();B("bottom-right","top-right")}if(P=="bottom"){var j=s.offset.left+o-(s.offset.left+s.dimension.width);A=s.offset.left-j/2+D;M=s.offset.top+s.dimension.height+_+12;H();B("top","bottom")}if(P=="bottom-left"){A=s.offset.left+D;M=s.offset.top+s.dimension.height+_+12;H();B("top-left","bottom-left")}if(P=="bottom-right"){A=s.offset.left+s.dimension.width+D-o;M=s.offset.top+s.dimension.height+_+12;H();B("top-right","bottom-right")}if(P=="left"){A=s.offset.left-D-o-12;O=s.offset.left+D+s.dimension.width+12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A<0&&O+o>r){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=o+A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);A=s.offset.left-D-q-12-I;F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A<0){A=s.offset.left+D+s.dimension.width+12;n.tooltipArrowReposition="left"}}if(P=="right"){A=s.offset.left+D+s.dimension.width+12;O=s.offset.left-D-o-12;var F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_;if(A+o>r&&O<0){var I=parseFloat(n.$tooltip.css("border-width"))*2,q=r-A-I;n.$tooltip.css("width",q+"px");a=n.$tooltip.outerHeight(false);F=s.offset.top+a-(s.offset.top+n.$elProxy.outerHeight(false));M=s.offset.top-F/2-_}else if(A+o>r){A=s.offset.left-D-o-12;n.tooltipArrowReposition="right"}}if(n.options.arrow){var R="tooltipster-arrow-"+P;if(n.options.arrowColor.length<1){var U=n.$tooltip.css("background-color")}else{var U=n.options.arrowColor}var z=n.tooltipArrowReposition;if(!z){z=""}else if(z=="left"){R="tooltipster-arrow-right";z=""}else if(z=="right"){R="tooltipster-arrow-left";z=""}else{z="left:"+Math.round(z)+"px;"}if(P=="top"||P=="top-left"||P=="top-right"){var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}else if(P=="bottom"||P=="bottom-left"||P=="bottom-right"){var W=parseFloat(n.$tooltip.css("border-top-width")),X=n.$tooltip.css("border-top-color")}else if(P=="left"){var W=parseFloat(n.$tooltip.css("border-right-width")),X=n.$tooltip.css("border-right-color")}else if(P=="right"){var W=parseFloat(n.$tooltip.css("border-left-width")),X=n.$tooltip.css("border-left-color")}else{var W=parseFloat(n.$tooltip.css("border-bottom-width")),X=n.$tooltip.css("border-bottom-color")}if(W>1){W++}var V="";if(W!==0){var J="",K="border-color: "+X+";";if(R.indexOf("bottom")!==-1){J="margin-top: -"+Math.round(W)+"px;"}else if(R.indexOf("top")!==-1){J="margin-bottom: -"+Math.round(W)+"px;"}else if(R.indexOf("left")!==-1){J="margin-right: -"+Math.round(W)+"px;"}else if(R.indexOf("right")!==-1){J="margin-left: -"+Math.round(W)+"px;"}V=''}n.$tooltip.find(".tooltipster-arrow").remove();var Q='
'+V+'
';n.$tooltip.append(Q)}n.$tooltip.css({top:Math.round(M)+"px",left:Math.round(A)+"px"})}}};e.fn[r]=function(){var t=arguments;if(this.length===0){if(typeof t[0]==="string"){var n=true;switch(t[0]){case"setDefaults":e.extend(s,t[1]);break;default:n=false;break}if(n)return true;else return this}else{return this}}else{if(typeof t[0]==="string"){var r=null;this.each(function(){var n=e(this).data("tooltipster");if(n){switch(t[0]){case"content":case"update":if(typeof t[1]==="undefined"){r=n.content;return false}else{n.updateTooltip(t[1]);break};case"destroy":n.hideTooltip();if(n.$el[0]!==n.$elProxy[0])n.$elProxy.remove();var i=typeof n.content==="string"?n.content:e("
").append(n.content).html();n.$el.removeClass("tooltipstered").attr("title",i).removeData("tooltipster").off("."+n.namespace);break;case"disable":n.hideTooltip();n.enabled=false;break;case"elementIcon":r=n.$el[0]!==n.$elProxy[0]?n.$elProxy[0]:undefined;return false;case"elementTooltip":r=n.$tooltip?n.$tooltip[0]:undefined;return false;case"enable":n.enabled=true;break;case"hide":n.hideTooltip();break;case"option":r=n.options[t[1]];break;case"reposition":n.positionTooltip();break;case"show":n.showTooltipNow();break;case"status":r=n.status;return false;default:throw new Error('Unknown method .tooltipster("'+t[0]+'")');break}}else{throw new Error("You called Tooltipster's \""+t[0]+'" method on an unitialized element')}});return r!==null?r:this}else{return this.each(function(){if(!e(this).data("tooltipster")){e(this).data("tooltipster",new o(this,t[0]))}})}}};var a=!!("ontouchstart"in t);var f=false;e("body").one("mousemove",function(){f=true});e(t).on("orientationchange",function(){e(".tooltipstered").each(function(){e(this)[r]("hide")})});e(t).on("scroll resize",function(){e(".tooltipstered").each(function(){e(this)[r]("reposition")})})})(jQuery,window,document); \ No newline at end of file From d9c58791b479070530e7395db3826afade36b5ce Mon Sep 17 00:00:00 2001 From: louisameline Date: Mon, 30 Dec 2013 12:09:36 +0100 Subject: [PATCH 12/15] Put doc on master branch, update Readme --- README.md | 56 ++- doc/css/prettify.css | 49 ++ doc/css/reset.css | 45 ++ doc/css/style.css | 741 +++++++++++++++++++++++++++++++ doc/images/browser-chrome.png | Bin 0 -> 8439 bytes doc/images/browser-firefox.png | Bin 0 -> 9351 bytes doc/images/browser-ie.png | Bin 0 -> 5305 bytes doc/images/browser-opera.png | Bin 0 -> 4585 bytes doc/images/browser-safari.png | Bin 0 -> 12435 bytes doc/images/favicon.png | Bin 0 -> 378 bytes doc/images/icons/icomoon.eot | Bin 0 -> 1632 bytes doc/images/icons/icomoon.svg | 16 + doc/images/icons/icomoon.ttf | Bin 0 -> 1468 bytes doc/images/icons/icomoon.woff | Bin 0 -> 1096 bytes doc/images/icons/icomoond41d.eot | Bin 0 -> 1632 bytes doc/images/large-background.jpg | Bin 0 -> 159444 bytes doc/images/pattern-navy.png | Bin 0 -> 119069 bytes doc/images/social.jpg | Bin 0 -> 14777 bytes doc/images/spiderman.png | Bin 0 -> 24528 bytes doc/images/tooltipster.svg | 211 +++++++++ doc/js/jquery.jgfeed.js | 34 ++ doc/js/lang-css.js | 78 ++++ doc/js/prettify.js | 28 ++ doc/js/scripts.js | 92 ++++ index.html | 586 ++++++++++++++++++++++++ 25 files changed, 1934 insertions(+), 2 deletions(-) create mode 100644 doc/css/prettify.css create mode 100644 doc/css/reset.css create mode 100644 doc/css/style.css create mode 100644 doc/images/browser-chrome.png create mode 100644 doc/images/browser-firefox.png create mode 100644 doc/images/browser-ie.png create mode 100644 doc/images/browser-opera.png create mode 100644 doc/images/browser-safari.png create mode 100644 doc/images/favicon.png create mode 100644 doc/images/icons/icomoon.eot create mode 100644 doc/images/icons/icomoon.svg create mode 100644 doc/images/icons/icomoon.ttf create mode 100644 doc/images/icons/icomoon.woff create mode 100644 doc/images/icons/icomoond41d.eot create mode 100644 doc/images/large-background.jpg create mode 100644 doc/images/pattern-navy.png create mode 100644 doc/images/social.jpg create mode 100644 doc/images/spiderman.png create mode 100644 doc/images/tooltipster.svg create mode 100644 doc/js/jquery.jgfeed.js create mode 100644 doc/js/lang-css.js create mode 100644 doc/js/prettify.js create mode 100644 doc/js/scripts.js create mode 100644 index.html diff --git a/README.md b/README.md index bc00669..7bcafff 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,57 @@ Tooltipster =========== -A jQuery tooltip plugin by Caleb Jacob. For documentation and all that jazz, -visit: http://calebjacob.com/tooltipster +A jQuery tooltip plugin by Caleb Jacob under MIT license. + +For detailed documentation, visit https://github.com/iamceege/tooltipster + +Options +------------------------- + +animation +arrow +arrowColor +autoClose +content +contentAsHTML +contentCloning +delay +fixedWidth +maxWidth +functionInit +functionBefore +functionReady +functionAfter +icon +iconCloning +iconDesktop +iconTheme +iconTouch +interactive +interactiveTolerance +offsetX +offsetY +onlyOne +position +positionTracker +speed +timer +theme +touchDevices +trigger +updateAnimation + +Methods +------------------------- + +$.fn.tooltipster('setDefaults', {}) +$(...).tooltipster('show') +$(...).tooltipster('hide') +$(...).tooltipster('disable') +$(...).tooltipster('enable') +$(...).tooltipster('destroy') +$(...).tooltipster('content') +$(...).tooltipster('content', myNewContent) +$(...).tooltipster('reposition') +$(...).tooltipster('elementTooltip') +$(...).tooltipster('elementIcon') \ No newline at end of file diff --git a/doc/css/prettify.css b/doc/css/prettify.css new file mode 100644 index 0000000..90cfb39 --- /dev/null +++ b/doc/css/prettify.css @@ -0,0 +1,49 @@ +/* Pretty printing styles. Used with prettify.js. */ + +/* SPAN elements with the classes below are added by prettyprint. */ +.pln { color: #000 } /* plain text */ + +@media screen { + .str { color: #080 } /* string content */ + .kwd { color: #008 } /* a keyword */ + .com { color: #800 } /* a comment */ + .typ { color: #606 } /* a type name */ + .lit { color: #066 } /* a literal value */ + /* punctuation, lisp open bracket, lisp close bracket */ + .pun, .opn, .clo { color: #660 } + .tag { color: #008 } /* a markup tag name */ + .atn { color: #606 } /* a markup attribute name */ + .atv { color: #080 } /* a markup attribute value */ + .dec, .var { color: #606 } /* a declaration; a variable name */ + .fun { color: red } /* a function name */ +} + +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { color: #060 } + .kwd { color: #006; font-weight: bold } + .com { color: #600; font-style: italic } + .typ { color: #404; font-weight: bold } + .lit { color: #044 } + .pun, .opn, .clo { color: #440 } + .tag { color: #006; font-weight: bold } + .atn { color: #404 } + .atv { color: #060 } +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L5, +li.L6, +li.L7, +li.L8 { list-style-type: none } +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { background: #eee } diff --git a/doc/css/reset.css b/doc/css/reset.css new file mode 100644 index 0000000..39a6a66 --- /dev/null +++ b/doc/css/reset.css @@ -0,0 +1,45 @@ +@charset "UTF-8"; + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size:100%; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} + diff --git a/doc/css/style.css b/doc/css/style.css new file mode 100644 index 0000000..42eac54 --- /dev/null +++ b/doc/css/style.css @@ -0,0 +1,741 @@ +/*blue #0078c9 +orange #ff5e3c */ + +@import url(http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700); + +@font-face { + font-family: 'icomoon'; + src:url('../images/icons/icomoon.eot'); + src:url('../images/icons/icomoond41d.eot?#iefix') format('embedded-opentype'), + url('../images/icons/icomoon.svg#icomoon') format('svg'), + url('../images/icons/icomoon.woff') format('woff'), + url('../images/icons/icomoon.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +::selection { + background: #0078c9; + color: #fff; +} +::-moz-selection { + background: #0078c9; + color: #fff; +} + +body, html { + height: 100%; +} + +body { + color: #5d6365; + font-size: 1em; + line-height: 1.6em; + font-family: 'Open Sans', sans-serif; + font-weight: 300; + background: #5d6365; +} + +#background { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} +#background img { + min-height: 100%; + min-width: 100%; +} +#background:before { + content: ''; + display: block; + width: 100%; + height: 20%; + position: absolute; + bottom: 0; + background: -moz-linear-gradient(top, rgba(93,99,101,0) 0%, rgba(93,99,101,1) 100%); /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(93,99,101,0)), color-stop(100%,rgba(93,99,101,1))); /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, rgba(93,99,101,0) 0%,rgba(93,99,101,1) 100%); /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, rgba(93,99,101,0) 0%,rgba(93,99,101,1) 100%); /* Opera 11.10+ */ + background: -ms-linear-gradient(top, rgba(93,99,101,0) 0%,rgba(93,99,101,1) 100%); /* IE10+ */ + background: linear-gradient(to bottom, rgba(93,99,101,0) 0%,rgba(93,99,101,1) 100%); /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#005d6365', endColorstr='#5d6365',GradientType=0 ); /* IE6-9 */ +} + +#wrapper { + width: 100%; + max-width: 1300px; + margin: 0 auto; + position: relative; + box-shadow: 0.6em 0px 15px rgba(0,0,0,0.1), -0.6em 0px 15px rgba(0,0,0,0.1); +} + +* { + -webkit-transition: all 300ms; + -moz-transition: all 300ms; + -o-transition: all 300ms; + -ms-transition: all 300ms; + transition: all 300ms; +} + +h1 { + font-weight: 300; + font-size: 1.4em; + line-height: 1.4em; + margin-bottom: 1.8em; +} +h2 { + color: #a9b1b3; + font-weight: 300; + font-size: 4em; + line-height: 1.4em; + margin-bottom: 0.5em; +} +h3 { + font-size: 2em; + line-height: 1.4em; + margin-bottom: 0.7em; + padding-top: 1em; +} +h4 { + font-size: 1.4em; + line-height: 1.4em; + font-weight: 400; + margin-bottom: 1em; +} +p { + margin-bottom: 1.5em; +} + +strong { + font-weight: 600; +} + +a { + text-decoration: none; + color: #0078c9; + font-weight: 600; +} +a:hover { + color: #a9b1b3; +} +a.alt { + color: rgba(255,255,255,0.75); +} +a.alt:hover { + color: rgba(255,255,255,1); +} + +a:before { + font-family: 'icomoon'; + font-style: normal; + speak: none; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; +} + +a.button { + display: inline-block; + padding: 0.8em 1em; + border: 3px solid #ff5e3c; + border-radius: 6px; + color: #ff5e3c; + background: #fff; + font-weight: 600; +} +a.button:hover { + background: #ff5e3c; + color: #fff; +} +a.button.alt { + color: #ff5e3c; + border: none; +} +a.button.alt:hover { + background: #ff5e3c; + color: #fff; + border: none; +} +a.button:active { + -webkit-transform: scale3d(0.95,0.95,1); + -moz-transform: scale3d(0.95,0.95,1); + -o-transform: scale3d(0.95,0.95,1); + -ms-transform: scale3d(0.95,0.95,1); + transform: scale3d(0.95,0.95,1); +} + +a.white { + color: #fff; + padding-bottom: 3px; + border-bottom: 1px solid rgba(255,255,255,0); +} +a.white:hover { + border-bottom: 1px solid rgba(255,255,255,1); +} + +.row { + overflow: hidden; +} + +header { + background: #fff; + position: fixed; + top: 0; + right: 0; + left: 0; + width: 100%; + max-width: 1300px; + padding: 0 1.25em 0 2em; + margin: 0 auto; + box-shadow: 0px 3px 0px rgba(0,0,0,0.05); + box-sizing: border-box; + -moz-box-sizing: border-box; +} +header select { + display: none; +} + +section { + width: 100%; + margin: 0 auto; + overflow: hidden; + border-bottom: 2px dashed #e5eaeb; + padding: 6em; + background: #fff; + box-sizing: border-box; + -moz-box-sizing: border-box; +} +#talk { + border-bottom: none !important; +} + +footer { + width: 100%; + margin: 0 auto; + padding: 6em; + background: #0078c9; + color: #fff; + box-sizing: border-box; + -moz-box-sizing: border-box; + text-align: center; +} + +nav { + width: 100%; + max-width: 1300px; + box-sizing: border-box; + -moz-box-sizing: border-box; + background: #fff; + float: right; + z-index: 2; + text-align: right; +} +nav ul { + display: block; + width: auto; + float: right; +} +nav li { + display: inline-block; + margin: 0; + float: left; +} +nav a { + display: inline-block; + font-weight: 400; + color: #a9b1b3; + padding: 1.5em 0.75em; +} +nav a:hover { + background: #0078c9; + color: #fff; +} + +#mobile-nav { + display: none; +} + +#social { + width: auto; + position: absolute; + left: 0; + top: 0; + z-index: 3; +} +#social div { + float: left; + width: 90px; + padding: 1.5em 2em; +} +#tweet { + margin-top: 2px; +} +div#github { + position: relative; + bottom: 4px; + margin-left: 0px; + width: 90px; +} +#github a { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + -ms-transition: none; + transition: none; +} + +pre { + box-sizing: border-box; + -moz-box-sizing: border-box; + padding: 3em; + background: #e6eff1; + box-shadow: 0px 0px 20px rgba(0,0,0,0.0); + margin-bottom: 4em; + white-space: pre-wrap; +} +pre:hover { + background: #fff; + box-shadow: 0px 0px 20px rgba(0,0,0,0.3); +} +pre:last-child { + margin-bottom: 0; +} + + +/* +------------------------------------- +Welcome +------------------------------------- +*/ + +#welcome { + text-align: center; + padding: 12em 0 9em; + color: #fff; + width: 100%; + border-bottom: none; + background: rgba(0,0,0,0.3); +} + +#welcome h1 { + display: block; + max-width: 635px; + margin-left: auto; + margin-right: auto; +} + +#tooltipster { + width: 100%; + max-width: 258px; + margin-bottom: 2em; +} + +#browser-support { + margin-bottom: 2.8em; +} +#browser-support li { + display: inline-block; + margin: 0.25em; + font-size: 0; + line-height: 0; +} +#browser-support li img { + height: 42px; + opacity: 0.5; +} +#browser-support li img:hover { + opacity: 1; +} + +#download { + font-size: 1.2em; + line-height: 1.4em; + width: 100%; +} +#download a.button { + margin-right: 0.6em; +} +#download a.button:before { + content: "\64"; + padding-right: 1em; + font-size: 0.9em; +} + + +/* +------------------------------------- +Demos +------------------------------------- +*/ + +#demos ul { + display: block; + width: 100%; + font-size: 1.4em; + line-height: 1.4em; +} +#demos li { + display: block; + width: 50%; + font-weight: 400; + margin-bottom: 1em; + overflow: hidden; + padding-top: 1.4em; + padding-right: 2em; + box-sizing: border-box; + -moz-box-sizing: border-box; + float: left; +} +#demos span { + display: block; + border: 3px solid #ff5e3c; + border-radius: 100%; + box-sizing: border-box; + -moz-box-sizing: border-box; + width: 5em; + height: 5em; + background: #ff5e3c; + color: #fff; + font-size: 0.6em; + line-height: 1em; + font-weight: 700; + padding: 1.8em 0 0 0; + text-align: center; + margin: -1.4em 1em 0 0; + text-transform: uppercase; + float: left; +} +#demos span:hover { + background: #fff !important; + color: #5d6365; + border: 3px solid #5d6365 !important; + cursor: pointer; +} + + +/* +------------------------------------- +Tooltips +------------------------------------- +*/ + +#demos span.tooltipster-icon { + cursor: help; + margin-left: 4px; + background: #0078c9; + border: 3px solid #0078c9; + width: 2.3em; + height: 2.3em; + padding: 0.4em 0 0; + margin: 2em 0 0 -3em; +} + +.tooltipster-default .tooltipster-content { + font-family: 'Open Sans', sans-serif; +} +.tooltipster-default .tooltipster-content img { + float: left; + margin-right: 10px; + border: 2px solid #000; +} +.tooltipster-default .tooltipster-content p { + margin: 0; +} +.tooltipster-default .tooltipster-content a { + color: #fff; + border-bottom: 1px solid rgba(255,255,255,0.4); +} +.tooltipster-default .tooltipster-content a:hover { + color: #fff; + border-bottom: 1px solid rgba(255,255,255,1); +} + +.tooltipster-blue { + background: #0078c9; + color: #fff; + border-radius: 5px; +} +.tooltipster-blue .tooltipster-content { + font-family: 'Open Sans', sans-serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; +} + +.tooltipster-white { + background: #fff; + color: #0078c9; + border-radius: 5px; +} +.tooltipster-white .tooltipster-content { + font-family: 'Open Sans', sans-serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; +} + +.tooltipster-pink { + background: url(../images/pattern-navy.png); + background-color: #ff3c70; + color: #fff; + border-radius: 5px; + box-shadow: inset -3px -3px 0 #ff3c70; +} +.tooltipster-pink .tooltipster-content { + font-family: 'Courier', monospace; + font-weight: 400; + font-size: 16px; + line-height: 16px; + padding: 15px 18px; +} + + +/* +------------------------------------- +Options +------------------------------------- +*/ + +table { + width: 100%; +} +table h4 { + margin-bottom: 0; +} +tr:nth-child(odd) { + background: #f4f5f7; +} +td { + padding: 2em; +} +td h4 { + font-family: 'Courier', monospace; + color: #0078c9; +} + + +/* +------------------------------------- +Themes +------------------------------------- +*/ + +#themes .themes a { + display: inline-block; + padding: 1em; + margin-right: 1em; + margin-bottom: 1em; + opacity: 0.8; +} +#themes a:hover { + opacity: 1; +} + +a.tooltipster-default-preview { + border-radius: 5px; + border: 2px solid #000; + background: #4c4c4c; + color: #fff; + font-family: Arial, sans-serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; + font-weight: 400; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +a.tooltipster-light-preview { + border-radius: 5px; + border: 1px solid #cccccc; + background: #ededed; + color: #666666; + font-family: Arial, sans-serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; + font-weight: 400; +} +.tooltipster-light { + border-radius: 5px; + border: 1px solid #cccccc; + background: #ededed; + color: #666666; +} +.tooltipster-light .tooltipster-content { + font-family: Arial, sans-serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; +} + +a.tooltipster-punk-preview { + border-radius: 5px; + border-bottom: 3px solid #f71169; + background: #2a2a2a; + color: #fff; + font-family: 'Courier', monospace; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; + font-weight: 400; +} +.tooltipster-punk { + border-radius: 5px; + border-bottom: 3px solid #f71169; + background: #2a2a2a; + color: #fff; +} +.tooltipster-punk .tooltipster-content { + font-family: 'Courier', monospace; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; +} + +a.tooltipster-noir-preview { + border-radius: 0px; + border: 3px solid #2c2c2c; + background: #fff; + color: #2c2c2c; + font-family: 'Georgia', serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; + font-weight: 400; +} +.tooltipster-noir { + border-radius: 0px; + border: 3px solid #2c2c2c; + background: #fff; + color: #2c2c2c; +} +.tooltipster-noir .tooltipster-content { + font-family: 'Georgia', serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; +} + +a.tooltipster-shadow-preview { + border-radius: 5px; + background: #fff; + box-shadow: 0px 0px 14px rgba(0,0,0,0.3); + color: #2c2c2c; + font-family: 'Arial', sans-serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; + font-weight: 400; +} +.tooltipster-shadow { + border-radius: 5px; + background: #fff; + box-shadow: 0px 0px 14px rgba(0,0,0,0.3); + color: #2c2c2c; +} +.tooltipster-shadow .tooltipster-content { + font-family: 'Arial', sans-serif; + font-size: 14px; + line-height: 16px; + padding: 8px 10px; +} + + +/* +------------------------------------- +Talk +------------------------------------- +*/ + +#talk h3 { + margin-bottom: 1em; +} + + +/* +------------------------------------- +Breakpoints +------------------------------------- +*/ + +@media all and (max-width : 1100px) { + #tweet, #gplus { + display: none; + } + #demos li { + width: 100%; + } + table, tr, td { + display: block; + } + td { + padding: 2em 2em 0 2em; + } + td:last-child { + padding-bottom: 2em; + } +} + +@media all and (max-width : 920px) { + #demos ul { + width: 100%; + padding: 0; + } +} + +@media all and (max-width : 820px) { + nav ul { + display: none; + } + #social div { + padding: 0.5em 0.7em; + } + header { + padding: 0; + } + header select { + display: block; + float: right; + margin: 1em 1em; + } + section { + padding: 3em; + } + #welcome { + padding: 7.4em 3em 6em; + } + #download span { + display: block; + margin-top: 0.5em; + } +} + +@media all and (max-width : 450px) { + table h4 { + font-size: 1em; + line-height: 1em; + } + section { + padding: 2em; + } + h2 { + font-size: 3em; + line-height: 1.2em; + margin-bottom: 0.23em; + } + h3 { + font-size: 1.4em; + line-height: 1.4em; + margin-bottom: 1.3em; + } + h4 { + font-size: 1.2em; + } + pre { + padding: 1em; + } +} \ No newline at end of file diff --git a/doc/images/browser-chrome.png b/doc/images/browser-chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..7e76da634cccb56475a8247fc1dbf83305620118 GIT binary patch literal 8439 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 Q{?h{}$*IZKNSlWK2c}UN`~Uy| literal 0 HcmV?d00001 diff --git a/doc/images/browser-ie.png b/doc/images/browser-ie.png new file mode 100644 index 0000000000000000000000000000000000000000..8c63137d7ec523ba2bc23c854d5253bfd2cb7b16 GIT binary patch literal 5305 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 LNkvXXu0mjfffofC literal 0 HcmV?d00001 diff --git a/doc/images/browser-opera.png b/doc/images/browser-opera.png new file mode 100644 index 0000000000000000000000000000000000000000..f6997a3a4d22e42ee8d1b82b0e6a019389629bd5 GIT binary patch literal 4585 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 T(T4wU00000NkvXXu0mjfnm%t< literal 0 HcmV?d00001 diff --git a/doc/images/browser-safari.png b/doc/images/browser-safari.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab4cc33b11d6cd6834c98de54a8d868dbd1e782 GIT binary patch literal 12435 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 PMj#ZPAZ3cBjNbnbnbDxO literal 0 HcmV?d00001 diff --git a/doc/images/favicon.png b/doc/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..80d6911fb67ac174c8732c9d9878eaafcc9784ed GIT binary patch literal 378 zcmV-=0fqjFP)fu;KtAWU$G;@8dWkC~5(3g75oDlHjjt zny%}P<6w4KmLQ)csmum6O``^^ZQEXEe@P;!1braPFpMw^bzKjF;Fe(9HZmXv1WGT8 zf<61bM}L-31p%8p&*2OlHbe>b9EJh*a0hP>ayum9TA4>nGFV8x8_>G0vNynSoF5)! zZLC+Dm;X{A{ Y0F~&w3*-}p-~a#s07*qoM6N<$f*IzY&Hw-a literal 0 HcmV?d00001 diff --git a/doc/images/icons/icomoon.eot b/doc/images/icons/icomoon.eot new file mode 100644 index 0000000000000000000000000000000000000000..520f55864e8c1b8764cb39329813bcd174b7f67f GIT binary patch literal 1632 zcmcIkO=uHA6#izDO{>*ff1*_iZqS1V8`DHZMWtBX9#o8fMMTt)rfDIY4M__1)`NIy z51x7wD$-LC@!-LO(5p&|coXR%1x3Y+AcCMYes6Xf+d@y`!0h|pH}Ac9J8$OQjsP!g zK*53x3wB5YGWV6Bb7?JrwtyE~j0&EbiS{gUe`PC%kcAJA(?^jDt+<37@)$+|8I;Lv zM<1CoDzp_F2VICGp>0=tlavHDa?cRbu6yPD!07%~z{05@h06z$ z>D}`Vovu;u%X*p8hw6^o)L(L5&u1#7dYzGAk8r&?U$`?c6@C&2LI2|+o>$*<>sa{q3wAC^cmd!jQ_w>BOBftH{SbFtHtTtOh~HOo>9RGUqi zw2xY-*AN%`MOc=OBrZ!MqL~Ob$=`B_q0(Hps2qw;_hF-1ol^tUdyV{oow&RFE{JWT z{8Z8dXZq2N{%=q<$$_~!qdF%pHd4g2#@wYbBomn(Cfh625$W*c9<#7$Xy2_ZvowQRe9)Zc&p1cxYL!v7rWKL*&vyLgK6Sz2>zB7A_@ znmUwvV~*LED4FQ&>P#lO zXtXjG8o8~}F8gxj%8*}ly5j7eYxypFkZasKz962fg + + + +This is a custom SVG font generated by IcoMoon. + + + + + + + + + + + \ No newline at end of file diff --git a/doc/images/icons/icomoon.ttf b/doc/images/icons/icomoon.ttf new file mode 100644 index 0000000000000000000000000000000000000000..16ba996fe5404dd23e0ccc3cea67f165235d27f6 GIT binary patch literal 1468 zcmcIkJ7`l;82--9O@6_PA% zIWe9rpJ@f$Jg8yPhbhKIaNZd|{0HWWFzY5?L6`DDzB=DrrY9+JPK+)YIbxmt~p z;4abLoXR{(F6uA+fa@Ij%v2&8-;BNgOT0=Mn4&`OtbM2NQS#m?t61_Zffb2Y_Tzj*Z3diAEtdkMv`*H`*!g` z+l39ZXjA|zzLACPu~yMEu}0pEy4mp&YqbjeQc;DbIgzAGqj?;S2W@h-Y;vM-bi{W{-N8=bqd>x`9YhZ0g*{MlRXq1R02Q$l7 zlkueVsA?z3CMMY$6t`z*zv**x zrYTQ`K0H&RCbR$@KCiDKn!II7M8&FpvBV|I*?Q%}eeV!HIYm^eYK4a|uMS5rV!Of` z@o9x!IE9kJI`uCUb~FF7!XD~>$eW@cpoXhaSR?LM*aZ^-g>~wmD(uEFyjEE5#Al=t zgAI#fBMYQswq@G{H<3UJ)5su-JZT~|orw~d&b*>C<~bt)10ndC&A{ z6p4cTp<0R~18jR~CH+!PoX7&(Ag9Ej~0Kh8CCa|`ihU|<4@ zGe`lkOj?5upSz2z8&J#!$d?6T1qMR~7XM&dHx2FUjU zniut`NF+QXH8BM!_5&!U2gGK-lTQB5017fNFlzw$3P7yFBKZGlMs7(3P|O3!7XV>4 zpaHpw6+rWtBY=D$7l>H`81fQxQ-NX$K>i(|lD2?TpI;W_7ncD23vwS15Gyb+GcZ)l zvF%m#Kb#=Y_C9)dY2++Eu2csuu4c*kEG+9ZgjiTyS$kNf9n7+lkt!^T=SZ57^po`u z150CyZ-Ir7ipCN3S$nteSQLK0Gx<(+lh5Q9fvaWOR^5yAI)ylIU8wWam#Dgyay#L6 z%$kdL`naFfZ_s`BLi?`v?~=IhooY3^W_&sMv9;u+hS92!qGrzIuKIdI_AfrBp& z&p3AAzyrRe`;9z|wip-~7;Z2!KESY;ftiVA$s&3PnA$gy`3Z-m+rB56K^2KNw%7kV6aQeIG3#N?9S<*7DAk$H`*i5!jw$~#Z65dK zKi>Hz-m?2s*r~%7rXO7XeNVd0$5fl?|D2D{IukbarsMW=x970FSBdJ& ziMaTB=B>wRsu^zg6ZceG3iWxcH979|wf??q_p30Ls}7CkYftWWp8VTvXGHb(f@#`a w`?x~CI4;YskJj3nzW$%8a?ekl;QjBnC|~*a>W%#G0?Xsz_&oqDG-?@G0MQeVzW@LL literal 0 HcmV?d00001 diff --git a/doc/images/icons/icomoond41d.eot b/doc/images/icons/icomoond41d.eot new file mode 100644 index 0000000000000000000000000000000000000000..520f55864e8c1b8764cb39329813bcd174b7f67f GIT binary patch literal 1632 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 E*}mMgz5oCK literal 0 HcmV?d00001 diff --git a/doc/images/pattern-navy.png b/doc/images/pattern-navy.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6bb5687c207567c3a61aa9e21eddf2e0ccbdf8 GIT binary patch literal 119069 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 z z;-?tVCcw6UjpsZ5!Kj~gx#P9q(90|2u`s=ytKANlH!L(9b}ppJgi*>Y#v9?{<`l<% zC%}&b{(aNgSVUj`VaI$=BPD3~W&rwZ=3|8{%y^}ddc)BQ5kCyzI~jJ|2*{K4*983Q z7auZ@WWf4whQEFT(I3EM!u<8ncMY`tjf$Ut27awia>c%v)AjAn*Nm{ACkpZq=!IPf zi181(MXFx~EBOlx{bz{RWybc;(xeR0Z-z;d{wmP)cI<%Maa-8e!=O9?Dw(Fw2G=-c zm6_5A`L%+~bi7tXyxxdxB<(u^zLp1M1^Knh%$x5*drc5>v!De2bZ-Sboklwd;-u*| zrHq?VO1NuTU-I_TWLckmmO2Fqr+Mesl}_ONddrBj(_2Wj%GxVOl)0|CdaC%ksun7CAC3d&N<$ zoNRA+NV(2-A*?N)vn{hF4>e`sD0#b=E->ZBdFyhUGRe=~#4Ihj6D1S8+eA;f_BjRB z%g53MUu|KOrbWpja>sC1oM=gyTxeHYi1>iE@(uiit z0*+)@Bg|Sk<8b!b>Ek+XYaFyf3+vtr?QR4fnenIGd%>+aNL>z&^D=0VQMe$D!w1JhJE1o*$VZ+>^`|i&f?IiaT5<Z;-#ujpo+XJx*Ly{4`_9J2+&&T-~hA!VwuEuFVpTNKeW`W=Z*f}G*-ew#N zFuek&6zq_>yp4jN_5l5u!J%b1#~sAE0xhocLl%tV38*bEwStW^4HpUYlT1D73=~{9 zFy}TjDPSmBO*4HcX-x`jgJF3RJTwfD4Ch&Hkck+l$Nql3C2$U=L&L)4ZQ%Jwt1lNi ztPvJU+$ME8gjk^*6msT-De-8g-UTFUl2#cH!c= zBa%BhUeL!EWc6#0q3t4|6>s!HqFs?}<>^AT=xnIY5$x1Lqh1uYGRbp7GAe|FCTzvw zNLL?L;!!T_Z)lCh=IRi)g!mC?G*CmGT2>qtbRiOLj@tVyy<1Uh07nAo~Dq1yBGR9FF)RD-WD9k$D&l|(+l#P44K_hE*7Ll zh1NjmLZM$HL)Hn%^rTczNO?u8qfAR-x~mH({a8Ir7uFuYmBX#)QJdSPIbfZr5FQya zn|-7!HT*-qs_u~JH)LvrhAkT$ZW?2S_&!H%@c>)&f@YOzk^F-lE&X-67A@p5@`v`0 z7ZLdSHL%gc20#Fqtb81hC%|@F zKyTWIalRr#XQaRWZ-n(5fqq5!_df^pe*%;T7RLop{~tWsFNyEJVf^_^QZ94!UzC0Q zh1u(ZrCtcggMD9to}18~?C(hbc?14>n_>JSAZcdu7pVWltl-x_FME||v^U@{g7GyY z(5EF@+P-qZ>mpq*ulOb`zHS4)S;n6gL@OZM3iEFV?e%8hi->qlAX-I0A9J*bu-6;- zqZr({!hlvFl+@IOFG;l2gjc@<*C<2^(S0m*NV&UKY|ucBwqwOft^Uw2?aFOi7Lsve&+2sc6@r14`;t zMsm0v#>Y$Re*YenvM{!J%yXpPM?_T za|8NzSg#^vCMX4@<^?ogM9cDM!vV2`32&GXG@;Ym2+NIoJj-0ygy|NC7pPw5;%Olf z2*nDMy`eWoBMjmRG-ib0O|&e7@G29Qhny3;MlB}@!4r^oBDK;>>2AU+w)0e$5n4fv z{p*m6Qe_Zq7$hMEn5>I97!l$y$ln#v8H9$L^{2p5L9}w(c*CYxz@*Bk1fZl@I}_d) zQTm3VT{LeOiC!5dR@j5OSo!9BNUp8DEn!AqNCT{=-3*K3TunOmifSePMkzk`$ z$uU7WE>O+~7@Wop3O)A}Q=zjg2LI5!1`&OvRaX+g1kSS@$H6d=fSv^Os80{FpUaHr zWvgvq;tZ&i$039r!UX&QtW9&3Nu1|0l&&og0yzU?ToFTVXFDG+)tNyQ<7^2GFtQ1; z!|+Yg(S4e?Gl5eWw2|T4#WV_pWFREKp$=GQc=*RnKs}u})L{+fPGuy-&Dhf-dLgcp zyA?{DHwv;qoCR1*R2SkylRW4FWuPC)&`|*(i7uCU^9up1fXepy99TnEH0;3bIo0UU1jOjj<;TTosql^qzmKNwv21Hm zQzv!$#YXOCf=jk?$)1op(!G70qe=477&_h))={5s>O%uFiC*DuWEFU)ir(e5ylkF2%q=W#-AH~y3n@{l;L2nG2W8Ul!acJai%P5rQF;` zOGz9{(&B36Sn?NIQatOt5RmeMEYqu%p>!p@t=(SP6No3C$Y&WX3$ZSQ2T-A0)S+5xEi#_Fz!ZE>Y)7lhzPq~aGOrR&7 znmnL4kU}73QB%tTvdr>iV9BIH!vpH6TdAs!v)Z&MVJS46c@maqgq4tg?rle6U(4b% zt}LM61a<^|tf(zO7+2po%_*|G78(osY|bJy7+#V{E+LWbqki9o-ysAs`D-6&2+&&^1QY9kFA z370)~-BEIug&s5Fz&os+Y3OkS4FF`A`|kV^X?g}qkQR*%CNeDBn zpC}5FrslR4NxE%?54>F-p?o$sn7R$cYqy5G)J1$Z7%0b({n}i zGb1FYLC*iOT`dvN+d#dSXQPGpV4|&rwUL050T~k%cZAT1UMnC)hE@i2yopY3qZ8Xm z|9GZsvqa(QNXSv1;z84x&Ne{|Tr340-NZcSF8k7;(E zcR;OBuDfN*%5w&B7VPtt1_Gcv26t1O$LSX39-z|vIBCF17zT|S^W7K4u&b;*>X;`i7@mE8?thl{>)p&%jL%OmegpfpY;)lB2>$Eiw5e378SX2V|TXkvxj8>j;BbojVXkkr6P6m`PTrkah3G+hH|mxjwc zikfy=%K>QN?H{^HzbJJi`vr$wKuQ^Lq&tOUpV{EbrH8kacG0IxE^6H}vg*&ZyYd+BYJk ztWw@*L8=j2b)hBFBwJA)+|X-h3TNouol=%Ag^HHS)bii|>>?ve61NGD<&AC>o*uIA z4OnO#tG1qqy-awdYXWQmM<;=kX3)~Av0Knl&}bL5#_|!LjFL$P?T<-;_5B9yi@*jK zeZR~7^@hdw?dk0@*z0ZBMa9?t=`$b?j6ZjvUXy@ak$hEPwh8C!2Jy4@Wq&|^Ny;Xk zfcP#VUu)yE=$bV23yjyBz<0UDxXer5AivWJ@&N0Lfa%+UN5TE)rlBPm{q4w~XM2HS z^H9E*yR~xQ>#{JJAig{RT_9in;l<^P;rU&(t=T;;4}5L#XH6by1|bu#`vYfoy@`5V zZX0m(Q*?em0NSrbydHSyuYp=L-`SL3M95z_Uwm?9a;g8?S zi2Q`Uq1ivOpMfppoMzr{XSQ-(QlU18m|7f5uNWy42ecSdGJDFxm~GW4Ni&`^STZq8 zi+sjHy`?zbQWk8}(>2l7C}XyXvyNqWl>2`h)hDrpw0qFcOX^? zR&vFevf!6a!>xr5srp}sRt(efQCeY33SfIXOw&-ULThZ(9SE7+J%SWMYn!;pUSn1_ znK)AEJ^Mtb6yXv?3PV$4$K7>FAxepc7W=xsPgy{A)|o>7ad`8|IIuj%ox#m-=f}IZ zafR)y-DQbZAjICVRt2=8ncM)C7o*K9tc^m5FNX#S`u>P3Ljw`=0DjaRpG|oJ*jw?s z5Q>aYtE5ySbQ0*yfSl=66xdMk=4KQYOiqA0Dk0|ZP6XOO;22jxcq8N_LwW)2Fzy|% zxOqripbRtgQ4SfNF6Xa#%UNhufnEsjUVv5vI?d1w@IEFXY|4(`rHfqcOjHSsMGv-UvTA>pEprd_|7segdKMo`c;6Y6Ox74 zPN__@=69G>VJDdO&$(dG|L~EU^drLpLL=IVUA+job`RHV=Rzx;a#^5_D{!2}-9~5! zEaXg-IKeSsCSjn&a<=nN5j>e_M>?n(>2?|WSsoZOtbq|kM)F9KtqfEKTAv1<8G(}l zo>ksk8cr)jXaTLyaI;0wSJ*gezh9%B%h6Dz+ANGwa6f+${amDt3P1EBx~#x)UbMEW z`ZUuw90!+pzn4dIoUT#o& zm`>1<21JJQadmN`t)_P5%bervu|{fpL>< ztN=E~ZNc05299xu#krUvD@j>VJZo2pH)UIOZkr;S7C;oJeE}QFgXL^iaP@+z7h&TK zw{yaGVi!s1D1LA%g9u8Z#<|SRmO-6#Yh>w}o36v~3S=wzA%W;40(#KBTOlnN6DMgV ze+I+-s4+vS8xiD#BqT{3HTHHDdbi7Emss1KS|>58F$NJf${yEhZtdyI^+HA~wQS`< zshpwfe5@7AdJRIdJEWp0Q*THe8Kao!YZRr_DD%A0c1yC}(QDi;*@1)IKaj$uWy-Bt zWj1P*UL#FtV0YcO<0jcI6F(fvv7p}Q63A%L&9r)<#}O$shQ3cis72verZo(b_J&e7 z&Bf&%9=aGf-bX;noWfXj6bzDWK^{#=wH11?pfk+c9hSOoM0=tj>zr(FtdvEDEKACS zL*ES>hks0P-&Y;goTGX|X6zt~>8)j-LstXZL{V1I+vQ>MJLq~DT$fEKJ44w$+Jwbm z2ZXI$ILq|Ik~a*tWXppt?2g9sagD(gT2;$qg~SMGo{1ijLmfGkg~uuL#3edGU1xA(sJqSwJ5+e#(IFo5e;m zye>n0Um*0?9Y1da>Tah^0??$P(!ihc;2=PG==`p&MP-~9!7mzI2cqITwn?goEUGm!Q$Ek&sQo0<@!JvygaD0O0$VT_izN4_?-=)(Ka(Zpfi57ria5SX*#&ThivJBqNFq6j(vhLV` z$aXEDEf5>_o)c)6`vgZlZ==TakO_n0*P!DQkFYi?;y533IhY{_h{kXzE`-30eI!id zf}P`25|2I#5C^PrAzNj{Q6Ssypc+DlF@zVrx#4rqdoC;8X)p)$q~SQp6r@wI0bGez zW-%;w%h+Vy4)LNL58$#4-m_40(?WQW{Rs>4fVXK0AyK+(zTqZxFTKn|D;;vKoi2hd z8nqZMKHWaYpyE2t={pjn&Imb^AvwY0tbp#{N_&TGd)n$qKI*#v6Fdu{O84q3 zFu)*%MVtv&%dpWF(FQ@4|8Cw333l5Vda!E(zRx=gJ|e^PSnfQNfG*hX!=952VQie@ z7+Xf;Hd?`L&|~AkBs@k7a0tUjE8sjlfaWB2y))^x$#-|rv49>#xP-F}W}Fs|V`QYB zMW~T+jEcgUP6vT@CITk`YXxH~gzDTlcX%t0bCiXlyj;t8j5jd!G7P_faV}u!1six^ zUDjUM@f?qH!~%Mogva8BRpKnrM!8`Wt+y2cov_b#e=&#FhpHM;VACSBr?F|0iYM4* z*VTdJNNxcxe6p-1qo29qJ<-mJ(pK&m%;+RyoKf&ma2sI(>?aKPZMka6Sz8#5|3H92^I2YZ?l=1SdHRCdtPh3e4R3OZw%l-g%& zGLew0O|*)nmKItaa49d78c8i>jK$51w80j!zcA0dgq5Zr`H6*6VZwuK?-rDZHB&*;g4U5PH9+B+6n5|+3K~bU#UM0ou|+ErYNCZYgjUdM6@MUa1CEFP z4YO}I`yl|m6KHFP+|yd3_*&arxt|~!W4E(o+`;&H2)=&dcqIaIhuKfUAP=Ix{*sWl zG2|iG7vNuyTa1Scc@umUvD(`r+C<>^YZ2`x?3m8d8^NE)g5zC?7Y+Wik~~(VDX|qV z_^C}$F@C?{-1yMgJVvIxtuPiC$^?HVX>t=BbZ~=4E+F(>#P^L1c^ja=hR}zB*Bg7d z#5c+Kxg$&-L$rqhB@p@!hyL>knZb}>7=PY`>q9_(tNisp`|JXIEd%9WVB>0D%MtSL zbG2As6F~nZ@v~q!3l6!%U9O1ueuDfeFZ(K_z1~H(WQ11G^~z79w7&uWdI0Npz`viO zeG_Isw+GstpuT|}Pn9>qbW>@Tw^fLvJn#HU63Gaw%% zO_VUyl*Xs!<|`bRKHKx7sl`1f+9+5Z*QU0Q>gi^KIF?Kww@xEK(&c^0#5r4WtnHl17$sHquP3c^22%)5CAgHZ&?;c}Gzrfh1@yx4v>>XN^`!xt zrs3X`N|-Hi#DB*O;^~2omgpuC1|`*n2(&>!!}B$ploTaTGFdkjHT&XQmB-IxuzYf z5wONO@?co@Lgqm~Y|IKuK`*UjHhK#UhRKQ}HDi?S_A->h`V$__?%lt%R>3;v9cbyK z@Ck3cHW>v9L+H7ZIwDNZ<*sLVXa=Y&rpW*(1D_B_j|8L^(Q&y;R&XTAhO|&Cpz%U< zTcBnJJJL*78FmP2I5BDkbv+(qGD6P;TbV&%45=~-2$NZ0vm`XaDd(F|D}=b2w^1{+ z2-DL7Iv#_>DwAV@8u`H=wo!m`8nm)fRv?tKLRlZ^_CcfzlOX{@_n)Yu1QGpQ4!r_# zaFg7Lh6%_DK(Cr;RTgr?{a6c>yco&}obMZPcv>k|Kx<;_pM(fV)PAroRdkKpAeQiU z=EkW}&)PIjv=fM9LmtZ@Tn_QKQK}d%R-vB&&_X!`K07fQ8 zPZ$R2(G%8329I$82ksprHyR@jn>3(|Xhk-um^hP(@n%5Z;Rh~w>I|H%0&s?pR!FlX zbxZ;y8T~BxV=FZmL&qHpXTVyEpdmecq=k+sxP^IWdZ-tmBLYAX&@{#8`SvsZ>ey8hr!!Z7) z>A4&_7S_<^-rM7bHfiTsoK2VG#2rW}^B#AZ_GuV$AzQlu9h1?m5a(I(;a*w=#xW!M zNVn((Q>1fjs^dzGLE=0KwwB(5Q_Dj5Ks4iIZeM15P1u=rTYfa7d6g(p?7) z)=4xZk@lxi6FN0<@SHr!qS6<1jx@dW4XNR-S0!7bVlXphaZ#8Cp-&frey}5?tgJ7K zXe6UOjeb^?%Lh`pLNW_d#~aF4)Iz!}2FDuddLL!2^k$oJxvUeRYXl@Ut<~Y7)8K4FB#B%`Q>1r5L(wJ_2XM+U3KS!mH=61{k2yLNJ3LXldA=)~gI%Fd_{ z@MGc)p-;9o97-%dQqz^Eh0=GYl}93@<)F#s3+)b=OfJ_MM!iPZF_k=4M92zyyLK}D4JiY)dX+A%YBS(^?KBu6^GNi} zgm3_I!69?pu89hrppA(O%9Yp$r|bA&e0m%}t18n#vC)e?vP@>H-MQ_vB|lrmaQxx- zU&mf>>Fvc=I_j%P`?*o^b90*fF5pEtehSDf{dxj8E=$T2Tb0b81c=*#S6bk8F+MH6 zwP*Q6`!%>`7=NAs+S{G7fOzc*-oRJU@p|@P82El-+jc%In&}C>=cn!QwE}F*fVK?y zCe2=NF!dq*^)|Dwu)skizAqR@nfq5V_RdEl;XfB05|Q5S2=qI`^aFKTO!`Hk7{MXb;T#lV(ze`mTsLo`APs0)3;_W7_!jz|U`3=mQIV zlJ@Y0RH;MKShMx`e z+W=6*i?BZfo!(tGN8O83z!IW|OpDUQnKD7hD)8t}b$~@Q^ z>Uud+Rzzwb-x9QvLM%yW_5hb|d;^AyvsL5Hc_><-<@TT!kgeF35*lr*L;WZvtQv{h z{;16}jFXaq)n`-+flEjvxZ*xYl&%;h6$Y)e)GION4o$t#^Y{&gE?CMNk-Hgvg;U-{ z$z?6&NvvyqY+j|8J0xkr==T?Xc@@HAR5`A(>ygYN(oXD16r`V6Mt5^ z&}Yhko1FEL2eqt#oRbt!P|paHMQ~(>3Fs!wfUF8gvaFp!3KybPhVABQ8X%PjSu-dn z5HgpAo>%TGPdN=}CxHFU&w}-w!9Cy_9V6k;S_Zw$(N3rLQ5J1@Vq9eGLg)xmZYRZR zcOfZUVLHkn1BpgD6hV`@h{0=rUl**x!4){hh5v}#PC&7?OTan|-V@ID514x)$J85upU;U_=}Rw4kA%<*;@GDh2Ae95@%)Plnl3E>E6XhCXNNWm!)6%wPOg*hY@-U$nFlqts*LM3D|_c>4*%Ot$^3SBO9N{tH} z?!a@qfOkz*)3EVvjRQEYVbB`MzUw%2NMb<>ur@(z#qGz{Zfnzuau4%<^^3Z+Oy0)> zS!ddqBVGT-g#6_ded?ra-v<~v;W(-#dPSucGTPM(GMVV}1Z1^@mKvnm-hfknv*=0bQeF!!-AP?;w=jAX6ts zHSiC%VfD5TNL=1P=x+e+7qqXNpuEFE-VT1f-AsPns5GGChYuZI@$Fz_|W_<79mQ>d*Bdi^?5ejTBAxPQ$+w*MjQ=P}@`683YE)*k}j z&kC1ipf1o}k2$|K?hh79CpQ-P9)3K!96z^g3m z^)FCgG{ozPO$o#IJrO?-JmrbB*V}{N7cAP_jDrsUdTMKNU2YWQ*8@L~JLK08uYXL_ z{|o2W#s+=>LOo%;rRMrkott&uG`wdcVi$58S7}Y0F>Vk383$Gdw2C6Z%bW$NREQRPx$W}rgXhfva z`mN-k(2uD!gG{&7v<9I^DtG(ss3T#N0w{@5jdV)c7ATe8)Y5rrNs&vgLXFyUc)Y_wQP`qFU4{sf%I-Gh!EIIb3kZ4Xxh zH74|u|C(Y;NKGk=l!TYm>~;|UFa8-QP4ko)TAetm6*Xl!saK3>)AvBX#$(81qM6>& zmrP`}2WROdvfl=@3uDPl4}Axg6ptkrhRa2!7Wf{8!{qjH>*J_hy{N>c1zURic*`V1 zlM%gO(Tlv5u@5Ut6Guwg2qlm0o|1%y6buq(*^0+H2)JIC5q)j9 zPuVD8{K-VGY1V6U>ghmV1!%5d=M0MfA|#_IBeO;o_B&Wvh|UCMEQX#1*8yS-gy|qc zm^9@Dw$l)@FFy!u=pmAjB1$e8cUI7+nVba*6E;xx0T+%0Bq!KLMM=E@_5bX#v zISQq#!gXYzoyCyD5He8E^D;^%wlJ`z8}tCG=MDA%ViXbWbVjE~d}efqDHA4VfXd}| z4v#pPoXWD;+EM0(<~xu>cJ8pzeg*Kj+X$LQaMmP_`qesD8JpnxzLpCov0g1^v2Hfa!^PPop6;h zsus|soTuL~-Fv$%@GO9%49zRtTM}`S=y4&>kwn7>gyUlbJ5|IJuX?XyYb30&bEX z96`1=;noYpS(~ZFqZa_DKv=)RC1Jg-Kz9Nul@_Rgo`2fZG~p3`6yA_TS(_c%@&Ly? zBD8El%2!DtAv}nK1X|&CWh?K~l8s}!E??0WK&5AF2h=<+v^6dldU;EjDG#SmKeb3H z^^mf{n3>Qz;Jv~jrB~_HDj^nIS)t#NXgtb=DC=>Uwdj$;aYu`8rF2k2BX=~1n@W__ zGPCBfqjVuW%B6g|QtvuSX-BA`?+$M-=(Qs<%Q~6XHz^$nP0%|pGkH*KH&*C0hU8I{ ziVAsjVFTdbR&0d}I!{n*leRnB{{Bsqm?DvOIt)^_LT;^8YC)D}2(_p+RtdF2t0Io_w39Sw z_=Q$|q3wLIS7;)<@mQ42n(PUwfQ>v?>TDB#@M3^3ZbcF)v$pky@__!eJpAW(kM_iI zyP3R!{H{;21bQXxbvffj3zOTuz8*t-yjvV7@OZsp_}Q>` zqJE0S7eTykr!^Y!Pmlm=>e_c+rH;wYJ@bj=-E;IkRVEB3*(f&6A zKX1VGfz{7%RDAt2xI7I0)J~rukH28N{)I#SqVTiK`T7gsxXn!dIbHsT`#6H{JCHyB z;QPoUmznFdu-7jF8!q|JBVRKd`ycAp13OPM>1b~QUjGpGA~xq8UpHYd67z=yUJo2! zWQ4rIdIiFN;=clf-Uz%_Aii#+H-b0{5pB9d-`rrb?J|@*9C`zP08K;nD>@{3UVE=F zcR5*2$_z5C-&)|*X(yCCOXwp9&7MYt9c0IUyH`z}0ZKZ(r#stiBlLE)J<+m&b_Z}2 zSbYJZ3CxzjYRg%&66}+>+vL_YWoH6XI8tb=78BNMZ-0$S>TImKCD^6}EQH?I5sqpB z%Oh}>1kONC2?ycQv{*+OS0k)6fJY`Q zd%)*l_G*=px;=eBcA73Bj~d0cq@X2bWBzw3@CP-Ufox~MdSY)KD7hP8faD^Y6V?Y2 zazCJqCm@67eO#7DrH2e-G!~(2!u4G!sTB~etprV-MYQ!;$XUsqrzw`VN|;!Xde(&G zf{RVK%nB&;12Eqhg_HOo=OzKEKxzj3;M+|`1scmt3l{%fBVfzhk1AMW1~k&F`$Xu( zL}$2bT;&o8>MTHbksF~8kLa8gy;is|H~7i)aSxecrgZr5H0ya;$wP;px4Be>iC+OJ zLkJV>ZwqU4mG`&NWranv0%b0S%(p?j=sTIZ3Xu7ZXm5nKD`@=&tE0jNH`vTTseq}! zEu?BIf=n(N+PuThU8G3(F<>U1bg6{vNW?fN(9Q*nxE(T#=&=AjB1#B{Tm=eY)H?tf z*cHLgbxoFqLfpJu_VQnnr&M-zNVko2HBmhiu43?vjgcL9^i4d9% z(&>^w(=xhF@>IfXBr#eQMoS<&30T689p;}vG=e1;>^Kukk7eLVaKtoME5vAYs1cK+ zVBN|bji5;wO~Rp=fDR%smaz}gTkJ!~{sPZI`f&yfXE98}3MVmbkUR%1R2Z=lrC@Gn z)6vKPJ}m?uwhITwVGQ(s0e&(taKU)cB90wEGL)7@%7ySz>1svxF%d%_z>aBzTw%aO zZd1HXg!UV;l?ZWffg^l(?jB3SG92v+c$*$Wie{q>;s4B9D|)x`7~>7#$lx)Gp0=-y zBgRQk`;5?&=_)J^4L71ZZ7>jnKse!j6#O{r^B-*thHZk6($Ggb)Cy3cMYBJ$@xnV^ zoi25T$gv+QU*J=R4o=;3`?a?4qAnl0ursb*@hA2 z8W!kz7&MHg0sB;vB0#y0#a37wE#GS-G&^F)5IP{m3sUZ>yGz@FmQHBd zjb6mmc_enuyo@eW0m%a{_qjsL3++8-9k++IcL!w-pxt!zrLf~)Tc$J0TDA06%}XvX zYK_a~KFKyuc&`DrazneiTbrYxh1;|`D5c9s^@m$0m{E|lm90E?MN~GZ#~*AbWLR@Es`90{NN*UN^$Fx#Tv(i`!uq_Vp}8F97mejIXyl ze#$Pq9w1&!L#qVF+dRH5GNkBu(H$BA$aMJk6CU5IBJ_^1wnt9V^a5N0@Xj*GqC+DM zKM4<=35-C51h$zpUJR?R^1$mtK*_Do#m@z!B#2f>*9(T9$HIQDfWK%KUl)QuH@NdO zum8`%*Iy>uI|{OsFa@-KJAFcvx5a#wf${{Z-2s=s0OYa6SP_taY4-gfc)HNe>VXa+qgvre4JagW zK9Xol%f=Ydd^X>$U?qiiOF7XdqNLcXKg7}sTx~&3ZXk4-rQD9qHCOsJQ{9a< zAkzX8rBK4AB#_(Vk!&W6QNoC≫vJTef8|j%>sqhl|ro<0kY(LQlXt(kSMJHi98o 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 literal 0 HcmV?d00001 diff --git a/doc/images/spiderman.png b/doc/images/spiderman.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd88fdb6eceec8bddfff34f28ef988cf10c62c3 GIT binary patch literal 24528 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 + + + + + + + + + + + + diff --git a/doc/js/jquery.jgfeed.js b/doc/js/jquery.jgfeed.js new file mode 100644 index 0000000..36059ee --- /dev/null +++ b/doc/js/jquery.jgfeed.js @@ -0,0 +1,34 @@ +/* + * jGFeed 1.0 - Google Feed API abstraction plugin for jQuery + * + * Copyright (c) 2009 jQuery HowTo + * + * Licensed under the GPL license: + * http://www.gnu.org/licenses/gpl.html + * + * URL: + * http://jquery-howto.blogspot.com + * + * Author URL: + * http://me.boo.uz + * + */ +(function($){ + $.extend({ + jGFeed : function(url, fnk, num, key){ + // Make sure url to get is defined + if(url == null) return false; + // Build Google Feed API URL + var gurl = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q="+url+"?"; + if(num != null) gurl += "&num="+num; + if(key != null) gurl += "&key="+key; + // AJAX request the API + $.getJSON(gurl, function(data){ + if(typeof fnk == 'function') + fnk.call(this, data.responseData.feed); + else + return false; + }); + } + }); +})(jQuery); \ No newline at end of file diff --git a/doc/js/lang-css.js b/doc/js/lang-css.js new file mode 100644 index 0000000..034bd59 --- /dev/null +++ b/doc/js/lang-css.js @@ -0,0 +1,78 @@ +// Copyright (C) 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + + +/** + * @fileoverview + * Registers a language handler for CSS. + * + * + * To use, include prettify.js and this file in your HTML page. + * Then put your code in an HTML tag like + *


+ *
+ *
+ * http://www.w3.org/TR/CSS21/grammar.html Section G2 defines the lexical
+ * grammar.  This scheme does not recognize keywords containing escapes.
+ *
+ * @author mikesamuel@gmail.com
+ */
+
+PR['registerLangHandler'](
+    PR['createSimpleLexer'](
+        [
+         // The space production 
+         [PR['PR_PLAIN'],       /^[ \t\r\n\f]+/, null, ' \t\r\n\f']
+        ],
+        [
+         // Quoted strings.   and 
+         [PR['PR_STRING'],
+          /^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/, null],
+         [PR['PR_STRING'],
+          /^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/, null],
+         ['lang-css-str', /^url\(([^\)\"\']*)\)/i],
+         [PR['PR_KEYWORD'],
+          /^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,
+          null],
+         // A property name -- an identifier followed by a colon.
+         ['lang-css-kw', /^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],
+         // A C style block comment.  The  production.
+         [PR['PR_COMMENT'], /^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
+         // Escaping text spans
+         [PR['PR_COMMENT'], /^(?:)/],
+         // A number possibly containing a suffix.
+         [PR['PR_LITERAL'], /^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],
+         // A hex color
+         [PR['PR_LITERAL'], /^#(?:[0-9a-f]{3}){1,2}/i],
+         // An identifier
+         [PR['PR_PLAIN'],
+          /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],
+         // A run of punctuation
+         [PR['PR_PUNCTUATION'], /^[^\s\w\'\"]+/]
+        ]),
+    ['css']);
+PR['registerLangHandler'](
+    PR['createSimpleLexer']([],
+        [
+         [PR['PR_KEYWORD'],
+          /^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]
+        ]),
+    ['css-kw']);
+PR['registerLangHandler'](
+    PR['createSimpleLexer']([],
+        [
+         [PR['PR_STRING'], /^[^\)\"\']+/]
+        ]),
+    ['css-str']);
diff --git a/doc/js/prettify.js b/doc/js/prettify.js
new file mode 100644
index 0000000..f66f6f2
--- /dev/null
+++ b/doc/js/prettify.js
@@ -0,0 +1,28 @@
+var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
+(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
+[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
+l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
+q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
+q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
+"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
+a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
+for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
+"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
+H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
+J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
+I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
+["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
+/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
+["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
+hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b=
+!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p

Soufflé chocolate cake powder. Applicake lollipop oat cake gingerbread.

'), + fixedWidth: 300, + position: 'right' + }); + $('#demo-theme').tooltipster({ + animation: 'grow', + theme: '.tooltipster-pink' + }); + $('#demo-callback').tooltipster({ + content: 'Loading...', + updateAnimation: false, + functionBefore: function(origin, continueTooltip) { + continueTooltip(); + + if (origin.data('ajax') !== 'cached') { + + $.jGFeed('http://ws.audioscrobbler.com/2.0/user/ce3ge/recenttracks.rss?', + function(feeds){ + var content = ''; + if(!feeds){ + content = 'Woops - there was an error retrieving my last.fm RSS feed'; + origin.tooltipster('content', content); + } + else { + content = $('I last listened to: ' + feeds.entries[0].title + ''); + origin + .tooltipster('content', content) + .data('ajax', 'cached'); + } + }, 10); + + origin.data('ajax', 'cached'); + } + }, + functionAfter: function(origin) { + alert('The tooltip has closed!'); + } + }); + $('#demo-events').tooltipster({ + trigger: 'click' + }); + $(window).keypress(function() { + $('#demo-events').tooltipster('hide'); + }); + $('#demo-interact').tooltipster({ + contentAsHTML: true, + interactive: true + }); + $('#demo-touch').tooltipster({ + touchDevices: false + }); + $('#demo-icon').tooltipster({ + iconDesktop: true, + iconTouch: true + }); + $('.tooltipster-light-preview').tooltipster({ + theme: '.tooltipster-light' + }); + $('.tooltipster-punk-preview').tooltipster({ + theme: '.tooltipster-punk' + }); + $('.tooltipster-noir-preview').tooltipster({ + theme: '.tooltipster-noir' + }); + $('.tooltipster-shadow-preview').tooltipster({ + theme: '.tooltipster-shadow' + }); + + $('header select').change(function() { + var goTo = $(this).val(); + var section = $('#'+goTo); + var offset = section.offset().top; + $('html, body').scrollTop(offset); + }); + + prettyPrint(); + + +}); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..f1df8ce --- /dev/null +++ b/index.html @@ -0,0 +1,586 @@ + + + + Tooltipster - The jQuery Tooltip Plugin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ Tooltipster +

A powerful, flexible jQuery plugin enabling you to easily create semantic, modern tooltips enhanced with the power of CSS.

+
    +
  • + Chrome +
  • +
  • + Safari +
  • +
  • + Opera +
  • +
  • + FireFox +
  • +
  • + Internet Explorer +
  • +
+ +
+ +
+

Demos

+
    +
  • + Hover Default settings +
  • +
  • + Hover Fixed width, position, & HTML +
  • +
  • + Click Custom show / hide triggers +
  • +
  • + Hover Disable touch devices +
  • +
  • + Hover Custom themes & animations +
  • +
  • + Hover Custom callbacks (AJAX <3) +
  • +
  • + Hover Interaction with tooltips +
  • +
  • + Attach tooltips to icons +
  • +
  • ...& more!
  • +
+
+ +
+

Getting Started

+

1. Load jQuery and include Tooltipster's plugin files

+

After you download Tooltipster, move tooltipster.css and jquery.tooltipster.min.js to your root's CSS and JavaScript directories. Next, load jQuery and include Tooltipster's CSS and JavaScript files inside of your tags:

+
+<head>
+...
+
+    <link rel="stylesheet" type="text/css" href="css/tooltipster.css" />
+
+    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.0.min.js"></script>
+    <script type="text/javascript" src="js/jquery.tooltipster.min.js"></script>
+
+...
+</head>
+
+

2. Set up your HTML

+

In order for Tooltipster to work, we first need to add the .tooltip class (or whatever class / means of selection you'd like to use) to whatever element we wish to have a tooltip. Next, we'll set the title attribute to whatever we'd like our tooltip to say. Here are a few examples:

+

Adding a tooltip to an image:

+
+<img src="my-image.png" class="tooltip" title="This is my image's tooltip message!" />
+

Adding a tooltip to a link that already has a class:

+
+<a href="http://calebjacob.com" class="ketchup tooltip" title="This is my link's tooltip message!">Link</a>
+

Adding a tooltip to a div:

+
+<div class="tooltip" title="This is my div's tooltip message!"> 
+    This div has a tooltip when you hover over it!
+</div>
+ +

3. Activate Tooltipster

+

The last thing we have to do is activate the plugin. To do this, add the following script right before your closing </head> tag (using whatever selector you'd like - in this case we're using the .tooltip class):

+
+<head>
+
+    ...
+
+    <script>
+        $(document).ready(function() {
+            $('.tooltip').tooltipster();
+        });
+    </script>
+</head>
+ +

4. Taking It a Step Further

+

Using HTML tags inside your tooltips

+

Tooltipster allows you to use any HTML markup you can think of inside your tooltips. This means you can insert things like images and text formatting tags. To achieve this, the recommended method is a little different : provide your content as a jQuery object in the script rather than in the title attribute :

+
+<head>
+
+    ...
+
+    <script>
+        $(document).ready(function() {
+            $('#my-tooltip').tooltipster({
+                content: $('<span><img src="my-image.png" /> <strong>This text is in bold case !</strong></span>')
+            });
+        });
+    </script>
+</head>
+<body>
+    
+    <div id="my-tooltip"> 
+        This div has a tooltip with HTML when you hover over it!
+    </div>
+	
+</body>
+ +

Another (less recommended) way of achieving this is to put encoded HTML markup directly in your title attribute and set the 'contentAsHTML' option to 'true'. In all cases, make sure you have tight control over the content you wish to display in the tooltip, as unwanted <script> or <iframe> tags for example would be a serious security issue for your website.

+ +
+<head>
+
+    ...
+
+    <script>
+        $(document).ready(function() {
+            $('.tooltip').tooltipster({
+                contentAsHTML: true
+            });
+        });
+    </script>
+</head>
+<body>
+    
+    <div class="tooltip" title="&lt;img src=&quot;my-image.png&quot; /&gt; &lt;strong&gt; This text is in bold case !&lt;/strong&gt;"> 
+        This div has a tooltip with HTML when you hover over it!
+    </div>
+	
+</body>
+ +

Customizing Your Tooltipster's Style

+

The style of your Tooltipsters can be easily changed by modifying or overriding the default Tooltipster theme in the tooltipster.css file. You also have the option to create and attach a brand new theme (comes in handy if you want to use more than one theme at once). To do this, start with this example and add your flair:

+
+.my-custom-theme {
+	border-radius: 5px; 
+	border: 2px solid #000;
+	background: #4c4c4c;
+	color: #fff;
+}
+
+/* Use this next selector to style things like font-size and line-height: */
+.my-custom-theme .tooltipster-content {
+	font-family: Arial, sans-serif;
+	font-size: 14px;
+	line-height: 16px;
+	padding: 8px 10px;
+}
+

After you have created your new theme, don't forget to specify it in your Tooltipster settings:

+
+$('.tooltip').tooltipster({
+    theme: 'my-custom-theme'
+});
+ +

Customizing Tooltipster's Functionality

+

Tooltipster's options gives you a wide range of variables to tweak your tooltip to your heart's content. To learn more about all of the options, read the documentation section. Here's just a few of the things you can play with:

+
+$('.tooltip').tooltipster({
+   animation: 'fade',
+   delay: 200,
+   theme: 'tooltipster-default',
+   touchDevices: false,
+   trigger: 'hover'
+});
+
+ +
+

Options

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

animation

fade, grow, swing, slide, fallDetermines how the tooltip will animate in and out. Feel free to modify or create custom transitions in the tooltipster.css file. In IE9 and 8, all animations default to a JavaScript generated, fade animation. Default: 'fade'

arrow

booleanAdds the "speech bubble arrow" to the tooltip. Default: true

arrowColor

hex code / rgbSelect a specific color for the "speech bubble arrow". Default: will inherit the tooltip's background color

autoClose

booleanIf autoClose is set to false, the tooltip will never close unless you call the 'close' method yourself. Default: true

content

string, jQuery objectIf set, this will override the content of the tooltip. Default: null

contentAsHTML

booleanIf the content of the tooltip is provided as a string, it is displayed as plain text by default. If this content should actually be interpreted as HTML, set this option to true. Default: false

contentCloning

booleanIf you provide a jQuery object to the 'content' option, this sets if it is a clone of this object that should actually be used. Default: true

delay

integerDelay how long it takes (in milliseconds) for the tooltip to start animating in. Default: 200

fixedWidth

integerSet a fixed width for the tooltip. The tooltip will always be a consistent width - no matter your content size. Default: 0 (auto width)

maxWidth

integerSet a max width for the tooltip. If the tooltip ends up being smaller than the set max width, the tooltip's width will be set automatically. Default: 0 (no max width)

functionInit

functionCreate a custom function to be fired only once at instantiation. If the function returns a value, this value will become the content of the tooltip. See the advanced section to learn more. Default: function(origin, content) {}

functionBefore

functionCreate a custom function to be fired before the tooltip opens. This function may prevent or hold off the opening. See the advanced section to learn more. Default: function(origin, continueTooltip) { continueTooltip(); }

functionReady

functionCreate a custom function to be fired when the tooltip and its contents have been added to the DOM. Default: function(origin, tooltip) {}

functionAfter

functionCreate a custom function to be fired once the tooltip has been closed and removed from the DOM. Default: function(origin) {}

icon

string, jQuery objectIf using the iconDesktop or iconTouch options, this sets the content for your icon. Default: '(?)'

iconCloning

booleanIf you provide a jQuery object to the 'icon' option, this sets if it is a clone of this object that should actually be used. Default: true

iconDesktop

booleanGenerate an icon next to your content that is responsible for activating the tooltip on non-touch devices. Default: false

iconTheme

CSS classIf using the iconDesktop or iconTouch options, this sets the class on the icon (used to style the icon). Default: 'tooltipster-icon'

iconTouch

booleanGenerate an icon next to your content that is responsible for activating the tooltip on touch devices (tablets, phones, etc). Default: false

interactive

booleanGive users the possibility to interact with the tooltip. Unless autoClose is set to false, the tooltip will still close if the user moves away from or clicks out of the tooltip. Default: false

interactiveTolerance

integerIf the tooltip is interactive and activated by a hover event, set the amount of time (milliseconds) allowed for a user to hover off of the tooltip activator (origin) on to the tooltip itself - keeping the tooltip from closing. Default: 350

offsetX

integerOffsets the tooltip (in pixels) farther left/right from the origin. Default: 0

offsetY

integerOffsets the tooltip (in pixels) farther up/down from the origin. Default: 0

onlyOne

booleanIf true, only one tooltip will be allowed to be active at a time. Non-autoclosing tooltips will not be closed though. Default: false

position

right, left, top, top-right, top-left, bottom, bottom-right, bottom-leftSet the position of the tooltip. Default: 'top'

positionTracker

booleanWill reposition the tooltip if the origin moves. As this option may have an impact on performance, we suggest you enable it only if you need to. Default: false

speed

integerSet the speed of the animation. Default: 350

timer

integerHow long the tooltip should be allowed to live before closing. Default: 0 (disabled)

theme

CSS classSet the theme used for your tooltip. Default: 'tooltipster-default'

touchDevices

booleanIf set to false, tooltips will not show on pure-touch devices, unless you open them yourself with the 'show' method. Touch gestures on devices which also have a mouse will still open the tooltips though. Default: true

trigger

hover, click, customSet how tooltips should be activated and closed. See the advanced section to learn how to build custom triggers. Default: 'hover'

updateAnimation

booleanIf a tooltip is open while its content is updated, play a subtle animation when the content changes. Default: true
+
+ +
+

Advanced

+ +

The awesomesauce Tooltipster API

+

The Tooltipster API was created to be as flexible and easy to use as possible (thanks to glebtv for the inspiration). The API allows you to create custom triggers, update tooltip content on the fly (whether the tooltip is currently open or not), destroy Tooltipster functionality if needed, and reposition tooltips for unique use cases.

+

Here is a quick look at all of the API methods:

+
+// set default options for all future tooltip instantiations
+$.fn.tooltipster('setDefaults', {
+  position: 'bottom'
+});
+
+// show a tooltip
+$(...).tooltipster('show');
+
+// hide a tooltip
+$(...).tooltipster('hide');
+
+// temporarily disable a tooltip from being able to open
+$(...).tooltipster('disable');
+
+// if a tooltip was disabled from opening, reenable its previous functionality
+$(...).tooltipster('enable');
+
+// hide and destroy tooltip functionality
+$(...).tooltipster('destroy');
+
+// return a tooltip's current content (if selector contains multiple origins, only the value of the first will be returned)
+$(...).tooltipster('content');
+
+// update tooltip content
+$(...).tooltipster('content', myNewContent);
+
+// reposition and resize the tooltip
+$(...).tooltipster('reposition');
+
+// return the HTML root element of the tooltip
+$(...).tooltipster('elementTooltip');
+
+// return the HTML root element of the icon if there is one, 'undefined' otherwise
+$(...).tooltipster('elementIcon');
+ +

Using AJAX to generate your tooltip content

+

Tooltipster gives you the ability to fire a custom synchronous or asynchronous function everytime before the tooltip launches (functionBefore) or just once upon instantiation (functionInit). One great use for this is to grab dynamic content for your tooltips via AJAX.

+

Here is an example of using functionBefore() asynchronously to replace a loading notification with our AJAX call. Once the content has been retrieved and updated, we'll take advantage of setting $.data() to keep our content cached for the next time the tooltip is opened:

+
+$('.tooltip').tooltipster({
+    content: 'Loading...',
+    functionBefore: function(origin, continueTooltip) {
+
+        // we'll make this function asynchronous and allow the tooltip to go ahead and show the loading notification while fetching our data
+        continueTooltip();
+        
+        // next, we want to check if our data has already been cached
+        if (origin.data('ajax') !== 'cached') {
+            $.ajax({
+                type: 'POST',
+                url: 'example.php',
+                success: function(data) {
+                    // update our tooltip content with our returned data and cache it
+                    origin.tooltipster('content', data).data('ajax', 'cached');
+                }
+            });
+        }
+    }
+});
+

However, maybe you just need to make one call and only need it to fire once instead of everytime the tooltip opens. This is where you could use functionInit(). This function will fire only once - right at the beginning of the instantiation process. You'll have the ability to do things like check the current content and set new content. Since the fancy API methods for returning and setting the value aren't instantiated yet, the way we go about this is a little different than functionBefore(): +

+$('.tooltip').tooltipster({
+    functionInit: function(origin, content) {
+		
+        if (content === 'This is bad content') {
+            
+            // when the request has finished loading, we will change the tooltip's content
+            $.ajax({
+                type: 'POST',
+                url: 'example.php',
+                success: function(data) {
+                    origin.tooltipster('content', 'New content has been loaded : ' + data);
+                }
+            });
+			
+            // this returned string will overwrite the content of the tooltip for the time being
+            return 'Wait while we load new content...';
+        }
+        else {
+            // return nothing : the initialization continues normally with its content unchanged.
+        }
+    }
+});
+ +

Manually launch and hide a tooltip

+

Tooltipster gives you complete freedom with how you'd like to open and close tooltips. You do not need to set your trigger option to 'custom' for this to work. If you have your trigger set to 'hover', the tooltip can be triggered by custom events as well as have the default hover functionality.

+

Here's an example of how you could launch a specific tooltip on page load and close it when any key on your keyboard is pressed. This will still preserve the default hover trigger.

+
+<span class="tooltip" id="example" title="My tooltip content">Example</span>
+
+
+// first, launch the Tooltipster plugin
+$(document).ready(function() {
+   $('.tooltip').tooltipster();
+});
+   
+// on window load, show the tooltip
+$(window).load(function() {
+   $('#example').tooltipster('show');
+      
+   // once a key is pressed on your keyboard, hide the tooltip
+   $(window).keypress(function() {
+      $('#example').tooltipster('hide');
+   });
+});
+
+ +

Updating a tooltip's content

+

It's easy as pie to update a tooltip's content - whether it's open or closed. Depending on your selector, you can update multiple tooltips at once or just one:

+
+$('#my-special-tooltip').tooltipster('content', 'My new content');
+

By default, Tooltipster will play a subtle animation when the content changes. To tweak the animation, check out the '.tooltipster-content-changing' class in your tooltipster.css file. It's important to note that only CSS transforms will be animated. To disable this animation, set updateAnimation to false.

+ +

Community submitted use cases

+

Using Tooltipster alongside jQuery Validate by sparky672

+

Did you do something awesome with Tooltipster? Tell me and I'll post it up here!

+
+ +
+

Themes

+

Tired of the same old? Download some rocking themes for your Tooltipsters (or create and share your own)! Click to download.

+
+ Default + Light + Punk + Noir + Shadow +
+
+ +
+

Talk

+

Share thoughts, questions, & bugs!

+

Head on over to Tooltipster's issue tracker on GitHub: https://github.com/iamceege/tooltipster/issues

+

Before opening a new issue, please be sure to search through the backlog to see if your question or bug has been / is being resolved. Thank you! :)

+
+ + + +
+
+
+ Fork +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ + + + + From 3a66444e2ec27216c05dbc135fcffc40b3f545d7 Mon Sep 17 00:00:00 2001 From: louisameline Date: Mon, 30 Dec 2013 12:29:15 +0100 Subject: [PATCH 13/15] Corrected URL and added brs --- README.md | 88 +++++++++++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 7bcafff..d66ea36 100644 --- a/README.md +++ b/README.md @@ -3,55 +3,55 @@ Tooltipster A jQuery tooltip plugin by Caleb Jacob under MIT license. -For detailed documentation, visit https://github.com/iamceege/tooltipster +A reminder of options/methods lies below. For detailed documentation, visit http://iamceege.github.io/tooltipster/ Options ------------------------- -animation -arrow -arrowColor -autoClose -content -contentAsHTML -contentCloning -delay -fixedWidth -maxWidth -functionInit -functionBefore -functionReady -functionAfter -icon -iconCloning -iconDesktop -iconTheme -iconTouch -interactive -interactiveTolerance -offsetX -offsetY -onlyOne -position -positionTracker -speed -timer -theme -touchDevices -trigger -updateAnimation +animation +arrow +arrowColor +autoClose +content +contentAsHTML +contentCloning +delay +fixedWidth +maxWidth +functionInit +functionBefore +functionReady +functionAfter +icon +iconCloning +iconDesktop +iconTheme +iconTouch +interactive +interactiveTolerance +offsetX +offsetY +onlyOne +position +positionTracker +speed +timer +theme +touchDevices +trigger +updateAnimation Methods ------------------------- -$.fn.tooltipster('setDefaults', {}) -$(...).tooltipster('show') -$(...).tooltipster('hide') -$(...).tooltipster('disable') -$(...).tooltipster('enable') -$(...).tooltipster('destroy') -$(...).tooltipster('content') -$(...).tooltipster('content', myNewContent) -$(...).tooltipster('reposition') -$(...).tooltipster('elementTooltip') -$(...).tooltipster('elementIcon') \ No newline at end of file +$.fn.tooltipster('setDefaults', {}) +$(...).tooltipster('show') +$(...).tooltipster('hide') +$(...).tooltipster('disable') +$(...).tooltipster('enable') +$(...).tooltipster('destroy') +$(...).tooltipster('content') +$(...).tooltipster('content', myNewContent) +$(...).tooltipster('reposition') +$(...).tooltipster('elementTooltip') +$(...).tooltipster('elementIcon') \ No newline at end of file From 984baf01b92f380e551a5391d235ab7d32c8b200 Mon Sep 17 00:00:00 2001 From: Caleb Jacob Date: Mon, 30 Dec 2013 14:09:08 -0700 Subject: [PATCH 14/15] Added in Louis to footer and updated logo to 3.0 --- doc/images/tooltipster.svg | 423 +++++++++++++++++++------------------ index.html | 2 +- 2 files changed, 213 insertions(+), 212 deletions(-) diff --git a/doc/images/tooltipster.svg b/doc/images/tooltipster.svg index 91e03a1..cd43a09 100644 --- a/doc/images/tooltipster.svg +++ b/doc/images/tooltipster.svg @@ -1,211 +1,212 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + + diff --git a/index.html b/index.html index f1df8ce..6136b40 100644 --- a/index.html +++ b/index.html @@ -533,7 +533,7 @@

Share thoughts, questions, & bugs!

From bf1808f825aa60e706de28a9d51c57018b536e5b Mon Sep 17 00:00:00 2001 From: Caleb Jacob Date: Mon, 30 Dec 2013 14:10:26 -0700 Subject: [PATCH 15/15] Fixed footer link --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 6136b40..cb3fdd1 100644 --- a/index.html +++ b/index.html @@ -533,7 +533,7 @@

Share thoughts, questions, & bugs!