JezK
Edit File: tooltip.min.js
(p=>{function a(t,e){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",t,e)}a.VERSION="3.3.5",a.TRANSITION_DURATION=150,a.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},a.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=p(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&p(p.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var o=this.options.trigger.split(" "),n=o.length;n--;){var s,r=o[n];"click"==r?this.$element.on("click."+this.type,this.options.selector,p.proxy(this.toggle,this)):"manual"!=r&&(s="hover"==r?"mouseleave":"focusout",this.$element.on(("hover"==r?"mouseenter":"focusin")+"."+this.type,this.options.selector,p.proxy(this.enter,this)),this.$element.on(s+"."+this.type,this.options.selector,p.proxy(this.leave,this)))}this.options.selector?this._options=p.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},a.prototype.getDefaults=function(){return a.DEFAULTS},a.prototype.getOptions=function(t){return(t=p.extend({},this.getDefaults(),this.$element.data(),t)).delay&&"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t},a.prototype.getDelegateOptions=function(){var i={},o=this.getDefaults();return this._options&&p.each(this._options,function(t,e){o[t]!=e&&(i[t]=e)}),i},a.prototype.enter=function(t){var e=t instanceof this.constructor?t:p(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),p(t.currentTarget).data("bs."+this.type,e)),t instanceof p.Event&&(e.inState["focusin"==t.type?"focus":"hover"]=!0),e.tip().hasClass("in")||"in"==e.hoverState)e.hoverState="in";else{if(clearTimeout(e.timeout),e.hoverState="in",!e.options.delay||!e.options.delay.show)return e.show();e.timeout=setTimeout(function(){"in"==e.hoverState&&e.show()},e.options.delay.show)}},a.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},a.prototype.leave=function(t){var e=t instanceof this.constructor?t:p(t.currentTarget).data("bs."+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),p(t.currentTarget).data("bs."+this.type,e)),t instanceof p.Event&&(e.inState["focusout"==t.type?"focus":"hover"]=!1),!e.isInStateTrue()){if(clearTimeout(e.timeout),e.hoverState="out",!e.options.delay||!e.options.delay.hide)return e.hide();e.timeout=setTimeout(function(){"out"==e.hoverState&&e.hide()},e.options.delay.hide)}},a.prototype.show=function(){var e,t,i,o,n,s,r,l=p.Event("show.bs."+this.type);this.hasContent()&&this.enabled&&(this.$element.trigger(l),n=p.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]),!l.isDefaultPrevented())&&n&&(l=(e=this).tip(),n=this.getUID(this.type),this.setContent(),l.attr("id",n),this.$element.attr("aria-describedby",n),this.options.animation&&l.addClass("fade"),n="function"==typeof this.options.placement?this.options.placement.call(this,l[0],this.$element[0]):this.options.placement,(r=(t=/\s?auto?\s?/i).test(n))&&(n=n.replace(t,"")||"top"),l.detach().css({top:0,left:0,display:"block"}).addClass(n).data("bs."+this.type,this),this.options.container?l.appendTo(this.options.container):l.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type),t=this.getPosition(),i=l[0].offsetWidth,o=l[0].offsetHeight,r&&(r=n,s=this.getPosition(this.$viewport),n="bottom"==n&&t.bottom+o>s.bottom?"top":"top"==n&&t.top-o<s.top?"bottom":"right"==n&&t.right+i>s.width?"left":"left"==n&&t.left-i<s.left?"right":n,l.removeClass(r).addClass(n)),s=this.getCalculatedOffset(n,t,i,o),this.applyPlacement(s,n),r=function(){var t=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==t&&e.leave(e)},p.support.transition&&this.$tip.hasClass("fade")?l.one("bsTransitionEnd",r).emulateTransitionEnd(a.TRANSITION_DURATION):r())},a.prototype.applyPlacement=function(t,e){var i=this.tip(),o=i[0].offsetWidth,n=i[0].offsetHeight,s=parseInt(i.css("margin-top"),10),r=parseInt(i.css("margin-left"),10),s=(isNaN(s)&&(s=0),isNaN(r)&&(r=0),t.top+=s,t.left+=r,p.offset.setOffset(i[0],p.extend({using:function(t){i.css({top:Math.round(t.top),left:Math.round(t.left)})}},t),0),i.addClass("in"),i[0].offsetWidth),r=i[0].offsetHeight,l=("top"==e&&r!=n&&(t.top=t.top+n-r),this.getViewportAdjustedDelta(e,t,s,r)),e=(l.left?t.left+=l.left:t.top+=l.top,/top|bottom/.test(e)),o=e?2*l.left-o+s:2*l.top-n+r,s=e?"offsetWidth":"offsetHeight";i.offset(t),this.replaceArrow(o,i[0][s],e)},a.prototype.replaceArrow=function(t,e,i){this.arrow().css(i?"left":"top",50*(1-t/e)+"%").css(i?"top":"left","")},a.prototype.setContent=function(){var t=this.tip(),e=this.getTitle();t.find(".tooltip-inner")[this.options.html?"html":"text"](e),t.removeClass("fade in top bottom left right")},a.prototype.hide=function(t){var e=this,i=p(this.$tip),o=p.Event("hide.bs."+this.type);function n(){"in"!=e.hoverState&&i.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),t&&t()}if(this.$element.trigger(o),!o.isDefaultPrevented())return i.removeClass("in"),p.support.transition&&i.hasClass("fade")?i.one("bsTransitionEnd",n).emulateTransitionEnd(a.TRANSITION_DURATION):n(),this.hoverState=null,this},a.prototype.fixTitle=function(){var t=this.$element;!t.attr("title")&&"string"==typeof t.attr("data-original-title")||t.attr("data-original-title",t.attr("title")||"").attr("title","")},a.prototype.hasContent=function(){return this.getTitle()},a.prototype.getPosition=function(t){var e=(t=t||this.$element)[0],i="BODY"==e.tagName,e=e.getBoundingClientRect(),o=(null==e.width&&(e=p.extend({},e,{width:e.right-e.left,height:e.bottom-e.top})),i?{top:0,left:0}:t.offset()),t={scroll:i?document.documentElement.scrollTop||document.body.scrollTop:t.scrollTop()},i=i?{width:p(window).width(),height:p(window).height()}:null;return p.extend({},e,t,i,o)},a.prototype.getCalculatedOffset=function(t,e,i,o){return"bottom"==t?{top:e.top+e.height,left:e.left+e.width/2-i/2}:"top"==t?{top:e.top-o,left:e.left+e.width/2-i/2}:"left"==t?{top:e.top+e.height/2-o/2,left:e.left-i}:{top:e.top+e.height/2-o/2,left:e.left+e.width}},a.prototype.getViewportAdjustedDelta=function(t,e,i,o){var n,s,r={top:0,left:0};return this.$viewport&&(n=this.options.viewport&&this.options.viewport.padding||0,s=this.getPosition(this.$viewport),/right|left/.test(t)?(t=e.top-n-s.scroll,o=e.top+n-s.scroll+o,t<s.top?r.top=s.top-t:o>s.top+s.height&&(r.top=s.top+s.height-o)):(t=e.left-n,o=e.left+n+i,t<s.left?r.left=s.left-t:o>s.right&&(r.left=s.left+s.width-o))),r},a.prototype.getTitle=function(){var t=this.$element,e=this.options;return t.attr("data-original-title")||("function"==typeof e.title?e.title.call(t[0]):e.title)},a.prototype.getUID=function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},a.prototype.tip=function(){if(this.$tip||(this.$tip=p(this.options.template),1==this.$tip.length))return this.$tip;throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!")},a.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},a.prototype.enable=function(){this.enabled=!0},a.prototype.disable=function(){this.enabled=!1},a.prototype.toggleEnabled=function(){this.enabled=!this.enabled},a.prototype.toggle=function(t){var e=this;t&&!(e=p(t.currentTarget).data("bs."+this.type))&&(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),p(t.currentTarget).data("bs."+this.type,e)),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass("in")?e.leave(e):e.enter(e)},a.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off("."+t.type).removeData("bs."+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null})};var t=p.fn.tooltip;p.fn.tooltip=function(o){return this.each(function(){var t=p(this),e=t.data("bs.tooltip"),i="object"==typeof o&&o;!e&&/destroy|hide/.test(o)||(e||t.data("bs.tooltip",e=new a(this,i)),"string"==typeof o&&e[o]())})},p.fn.tooltip.Constructor=a,p.fn.tooltip.noConflict=function(){return p.fn.tooltip=t,this}})(jQuery);