{"version":3,"sources":["../../../../dev/j/v2/vendor/bootstrap-native-v4.js"],"names":["root","factory","define","amd","module","exports","bsn","Tab","Tooltip","this","globalObject","global","window","DOC","document","HTML","documentElement","BSN","supports","mouseHover","Transition","Webkit","style","active","left","top","tipPositions","supportTransitions","transitionEndEvent","transitionDuration","addClass","element","classNAME","classList","add","removeClass","remove","hasClass","getElementsByClassName","slice","call","queryElement","selector","parent","lookUp","querySelector","getClosest","firstChar","charAt","selectorSubstring","substr","id","on","event","handler","options","addEventListener","off","removeEventListener","one","handlerWrapper","e","supportPassive","result","opts","Object","defineProperty","get","passiveHandler","passive","getTransitionDurationFromElement","duration","parseFloat","isNaN","emulateTransitionEnd","called","setTimeout","bootstrapCustomEvent","eventName","componentName","related","OriginalCustomEvent","CustomEvent","relatedTarget","dispatchEvent","getScroll","y","pageYOffset","x","pageXOffset","styleTip","link","position","topPosition","leftPosition","arrowTop","arrowLeft","arrowWidth","arrowHeight","elementDimensions","w","h","windowWidth","windowHeight","rect","scroll","linkDimensions","isPopover","arrow","halfTopExceed","halfLeftExceed","halfRightExceed","halfBottomExceed","topExceed","leftExceed","bottomExceed","rightExceed","className","replace","version","heightData","next","activeTab","activeContent","nextContent","containerHeight","equalContents","nextHeight","self","tabs","tabsContentContainer","dropdown","triggerEnd","triggerShow","triggerHide","getActiveTab","activeTabs","getActiveContent","clickHandler","show","animationData","placementData","delayData","containerData","containerElement","containerDataElement","modal","navbarFixedTop","navbarFixedBottom","parseInt","timer","placementSetting","tooltip","titleString","removeToolTip","removeChild","createToolTip","tooltipArrow","tooltipInner","component","updateTooltip","showTooltip","showTrigger","hide","hideTrigger","clearTimeout","toggle","removeAttribute","initializeDataAPI","constructor","collection","i","l","initCallback"],"mappings":"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","file":"bootstrap-native-v4.js","sourcesContent":["// Native Javascript for Bootstrap 4 v2.0.27 | © dnp_theme | MIT-License\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD support:\n define([], factory);\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like:\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n var bsn = factory();\n root.Tab = bsn.Tab;\n root.Tooltip = bsn.Tooltip;\n }\n}(this, function () {\n \n /* Native Javascript for Bootstrap 4 | Internal Utility Functions\n ----------------------------------------------------------------*/\n \"use strict\";\n \n // globals\n var globalObject = typeof global !== 'undefined' ? global : this||window,\n DOC = document, HTML = DOC.documentElement, body = 'body', // allow the library to be used in
\n \n // Native Javascript for Bootstrap Global Object\n BSN = globalObject.BSN = {},\n supports = BSN.supports = [],\n \n // function toggle attributes\n dataToggle = 'data-toggle',\n dataDismiss = 'data-dismiss',\n dataSpy = 'data-spy',\n dataRide = 'data-ride',\n \n // components\n stringAlert = 'Alert',\n stringButton = 'Button',\n stringCarousel = 'Carousel',\n stringCollapse = 'Collapse',\n stringDropdown = 'Dropdown',\n stringModal = 'Modal',\n stringPopover = 'Popover',\n stringScrollSpy = 'ScrollSpy',\n stringTab = 'Tab',\n stringTooltip = 'Tooltip',\n stringToast = 'Toast',\n \n // options DATA API\n dataAutohide = 'data-autohide',\n databackdrop = 'data-backdrop',\n dataKeyboard = 'data-keyboard',\n dataTarget = 'data-target',\n dataInterval = 'data-interval',\n dataHeight = 'data-height',\n dataPause = 'data-pause',\n dataTitle = 'data-title',\n dataOriginalTitle = 'data-original-title',\n dataDismissible = 'data-dismissible',\n dataTrigger = 'data-trigger',\n dataAnimation = 'data-animation',\n dataContainer = 'data-container',\n dataPlacement = 'data-placement',\n dataDelay = 'data-delay',\n \n // option keys\n backdrop = 'backdrop', keyboard = 'keyboard', delay = 'delay',\n content = 'content', target = 'target', currentTarget = 'currentTarget',\n interval = 'interval', pause = 'pause', animation = 'animation',\n placement = 'placement', container = 'container',\n \n // box model\n offsetTop = 'offsetTop', offsetBottom = 'offsetBottom',\n offsetLeft = 'offsetLeft',\n scrollTop = 'scrollTop', scrollLeft = 'scrollLeft',\n clientWidth = 'clientWidth', clientHeight = 'clientHeight',\n offsetWidth = 'offsetWidth', offsetHeight = 'offsetHeight',\n innerWidth = 'innerWidth', innerHeight = 'innerHeight',\n scrollHeight = 'scrollHeight', scrollWidth = 'scrollWidth',\n height = 'height',\n \n // aria\n ariaExpanded = 'aria-expanded',\n ariaHidden = 'aria-hidden',\n ariaSelected = 'aria-selected',\n \n // event names\n clickEvent = 'click',\n focusEvent = 'focus',\n hoverEvent = 'hover',\n keydownEvent = 'keydown',\n keyupEvent = 'keyup',\n resizeEvent = 'resize', // passive\n scrollEvent = 'scroll', // passive\n mouseHover = ('onmouseleave' in DOC) ? [ 'mouseenter', 'mouseleave'] : [ 'mouseover', 'mouseout' ],\n // touch since 2.0.26\n touchEvents = { start: 'touchstart', end: 'touchend', move:'touchmove' }, // passive\n // originalEvents\n showEvent = 'show',\n shownEvent = 'shown',\n hideEvent = 'hide',\n hiddenEvent = 'hidden',\n closeEvent = 'close',\n closedEvent = 'closed',\n slidEvent = 'slid',\n slideEvent = 'slide',\n changeEvent = 'change',\n \n // other\n getAttribute = 'getAttribute',\n setAttribute = 'setAttribute',\n hasAttribute = 'hasAttribute',\n createElement = 'createElement',\n appendChild = 'appendChild',\n innerHTML = 'innerHTML',\n getElementsByTagName = 'getElementsByTagName',\n preventDefault = 'preventDefault',\n getBoundingClientRect = 'getBoundingClientRect',\n querySelectorAll = 'querySelectorAll',\n getElementsByCLASSNAME = 'getElementsByClassName',\n getComputedStyle = 'getComputedStyle', \n \n indexOf = 'indexOf',\n parentNode = 'parentNode',\n length = 'length',\n toLowerCase = 'toLowerCase',\n Transition = 'Transition',\n Duration = 'Duration',\n Webkit = 'Webkit',\n style = 'style',\n push = 'push',\n tabindex = 'tabindex',\n contains = 'contains',\n \n active = 'active',\n showClass = 'show',\n collapsing = 'collapsing',\n disabled = 'disabled',\n loading = 'loading',\n left = 'left',\n right = 'right',\n top = 'top',\n bottom = 'bottom',\n \n // tooltip / popover\n tipPositions = /\\b(top|bottom|left|right)+/,\n \n // modal\n modalOverlay = 0,\n fixedTop = 'fixed-top',\n fixedBottom = 'fixed-bottom',\n \n // transitionEnd since 2.0.4\n supportTransitions = Webkit+Transition in HTML[style] || Transition[toLowerCase]() in HTML[style],\n transitionEndEvent = Webkit+Transition in HTML[style] ? Webkit[toLowerCase]()+Transition+'End' : Transition[toLowerCase]()+'end',\n transitionDuration = Webkit+Duration in HTML[style] ? Webkit[toLowerCase]()+Transition+Duration : Transition[toLowerCase]()+Duration,\n \n // set new focus element since 2.0.3\n setFocus = function(element){\n element.focus ? element.focus() : element.setActive();\n },\n \n // class manipulation, since 2.0.0 requires polyfill.js\n addClass = function(element,classNAME) {\n element.classList.add(classNAME);\n },\n removeClass = function(element,classNAME) {\n element.classList.remove(classNAME);\n },\n hasClass = function(element,classNAME){ // since 2.0.0\n return element.classList[contains](classNAME);\n },\n \n // selection methods\n getElementsByClassName = function(element,classNAME) { // returns Array\n return [].slice.call(element[getElementsByCLASSNAME]( classNAME ));\n },\n queryElement = function (selector, parent) {\n var lookUp = parent ? parent : DOC;\n return typeof selector === 'object' ? selector : lookUp.querySelector(selector);\n },\n getClosest = function (element, selector) { //element is the element and selector is for the closest parent element to find\n // source http://gomakethings.com/climbing-up-and-down-the-dom-tree-with-vanilla-javascript/\n var firstChar = selector.charAt(0), selectorSubstring = selector.substr(1);\n if ( firstChar === '.' ) {// If selector is a class\n for ( ; element && element !== DOC; element = element[parentNode] ) { // Get closest match\n if ( queryElement(selector,element[parentNode]) !== null && hasClass(element,selectorSubstring) ) { return element; }\n }\n } else if ( firstChar === '#' ) { // If selector is an ID\n for ( ; element && element !== DOC; element = element[parentNode] ) { // Get closest match\n if ( element.id === selectorSubstring ) { return element; }\n }\n }\n return false;\n },\n \n // event attach jQuery style / trigger since 1.2.0\n on = function (element, event, handler, options) {\n options = options || false;\n element.addEventListener(event, handler, options);\n },\n off = function(element, event, handler, options) {\n options = options || false;\n element.removeEventListener(event, handler, options);\n },\n one = function (element, event, handler, options) { // one since 2.0.4\n on(element, event, function handlerWrapper(e){\n handler(e);\n off(element, event, handlerWrapper, options);\n }, options);\n },\n // determine support for passive events\n supportPassive = (function(){\n // Test via a getter in the options object to see if the passive property is accessed\n var result = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n result = true;\n }\n });\n one(globalObject, 'testPassive', null, opts);\n } catch (e) {}\n \n return result;\n }()),\n // event options\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n passiveHandler = supportPassive ? { passive: true } : false,\n // transitions\n getTransitionDurationFromElement = function(element) {\n var duration = supportTransitions ? globalObject[getComputedStyle](element)[transitionDuration] : 0;\n duration = parseFloat(duration);\n duration = typeof duration === 'number' && !isNaN(duration) ? duration * 1000 : 0;\n return duration; // we take a short offset to make sure we fire on the next frame after animation\n },\n emulateTransitionEnd = function(element,handler){ // emulateTransitionEnd since 2.0.4\n var called = 0, duration = getTransitionDurationFromElement(element);\n duration ? one(element, transitionEndEvent, function(e){ !called && handler(e), called = 1; })\n : setTimeout(function() { !called && handler(), called = 1; }, 17);\n },\n bootstrapCustomEvent = function (eventName, componentName, related) {\n var OriginalCustomEvent = new CustomEvent( eventName + '.bs.' + componentName);\n OriginalCustomEvent.relatedTarget = related;\n this.dispatchEvent(OriginalCustomEvent);\n },\n \n // tooltip / popover stuff\n getScroll = function() { // also Affix and ScrollSpy uses it\n return {\n y : globalObject.pageYOffset || HTML[scrollTop],\n x : globalObject.pageXOffset || HTML[scrollLeft]\n }\n },\n styleTip = function(link,element,position,parent) { // both popovers and tooltips (target,tooltip,placement,elementToAppendTo)\n var elementDimensions = { w : element[offsetWidth], h: element[offsetHeight] },\n windowWidth = (HTML[clientWidth] || DOC[body][clientWidth]),\n windowHeight = (HTML[clientHeight] || DOC[body][clientHeight]),\n rect = link[getBoundingClientRect](),\n scroll = parent === DOC[body] ? getScroll() : { x: parent[offsetLeft] + parent[scrollLeft], y: parent[offsetTop] + parent[scrollTop] },\n linkDimensions = { w: rect[right] - rect[left], h: rect[bottom] - rect[top] },\n isPopover = hasClass(element,'popover'),\n topPosition, leftPosition,\n \n arrow = queryElement('.arrow',element),\n arrowTop, arrowLeft, arrowWidth, arrowHeight,\n \n halfTopExceed = rect[top] + linkDimensions.h/2 - elementDimensions.h/2 < 0,\n halfLeftExceed = rect[left] + linkDimensions.w/2 - elementDimensions.w/2 < 0,\n halfRightExceed = rect[left] + elementDimensions.w/2 + linkDimensions.w/2 >= windowWidth,\n halfBottomExceed = rect[top] + elementDimensions.h/2 + linkDimensions.h/2 >= windowHeight,\n topExceed = rect[top] - elementDimensions.h < 0,\n leftExceed = rect[left] - elementDimensions.w < 0,\n bottomExceed = rect[top] + elementDimensions.h + linkDimensions.h >= windowHeight,\n rightExceed = rect[left] + elementDimensions.w + linkDimensions.w >= windowWidth;\n \n // recompute position\n position = (position === left || position === right) && leftExceed && rightExceed ? top : position; // first, when both left and right limits are exceeded, we fall back to top|bottom\n position = position === top && topExceed ? bottom : position;\n position = position === bottom && bottomExceed ? top : position;\n position = position === left && leftExceed ? right : position;\n position = position === right && rightExceed ? left : position;\n \n // update tooltip/popover class\n element.className[indexOf](position) === -1 && (element.className = element.className.replace(tipPositions,position));\n \n // we check the computed width & height and update here\n arrowWidth = arrow[offsetWidth]; arrowHeight = arrow[offsetHeight];\n \n // apply styling to tooltip or popover\n if ( position === left || position === right ) { // secondary|side positions\n if ( position === left ) { // LEFT\n leftPosition = rect[left] + scroll.x - elementDimensions.w - ( isPopover ? arrowWidth : 0 );\n } else { // RIGHT\n leftPosition = rect[left] + scroll.x + linkDimensions.w;\n }\n \n // adjust top and arrow\n if (halfTopExceed) {\n topPosition = rect[top] + scroll.y;\n arrowTop = linkDimensions.h/2 - arrowWidth;\n } else if (halfBottomExceed) {\n topPosition = rect[top] + scroll.y - elementDimensions.h + linkDimensions.h;\n arrowTop = elementDimensions.h - linkDimensions.h/2 - arrowWidth;\n } else {\n topPosition = rect[top] + scroll.y - elementDimensions.h/2 + linkDimensions.h/2;\n arrowTop = elementDimensions.h/2 - (isPopover ? arrowHeight*0.9 : arrowHeight/2);\n }\n } else if ( position === top || position === bottom ) { // primary|vertical positions\n if ( position === top) { // TOP\n topPosition = rect[top] + scroll.y - elementDimensions.h - ( isPopover ? arrowHeight : 0 );\n } else { // BOTTOM\n topPosition = rect[top] + scroll.y + linkDimensions.h;\n }\n // adjust left | right and also the arrow\n if (halfLeftExceed) {\n leftPosition = 0;\n arrowLeft = rect[left] + linkDimensions.w/2 - arrowWidth;\n } else if (halfRightExceed) {\n leftPosition = windowWidth - elementDimensions.w*1.01;\n arrowLeft = elementDimensions.w - ( windowWidth - rect[left] ) + linkDimensions.w/2 - arrowWidth/2;\n } else {\n leftPosition = rect[left] + scroll.x - elementDimensions.w/2 + linkDimensions.w/2;\n arrowLeft = elementDimensions.w/2 - ( isPopover ? arrowWidth : arrowWidth/2 );\n }\n }\n \n // apply style to tooltip/popover and its arrow\n element[style][top] = topPosition + 'px';\n element[style][left] = leftPosition + 'px';\n \n arrowTop && (arrow[style][top] = arrowTop + 'px');\n arrowLeft && (arrow[style][left] = arrowLeft + 'px');\n };\n \n BSN.version = '2.0.27';\n \n /* Native Javascript for Bootstrap 4 | Tab\n -----------------------------------------*/\n \n // TAB DEFINITION\n // ==============\n var Tab = function( element, options ) {\n \n // initialization element\n element = queryElement(element);\n \n // DATA API\n var heightData = element[getAttribute](dataHeight),\n \n // strings\n component = 'tab', height = 'height', float = 'float', isAnimating = 'isAnimating';\n \n // set options\n options = options || {};\n this[height] = supportTransitions ? (options[height] || heightData === 'true') : false;\n \n // bind, event targets\n var self = this, next,\n tabs = getClosest(element,'.nav'),\n tabsContentContainer = false,\n dropdown = tabs && queryElement('.dropdown-toggle',tabs),\n activeTab, activeContent, nextContent, containerHeight, equalContents, nextHeight,\n \n // trigger\n triggerEnd = function(){\n tabsContentContainer[style][height] = '';\n removeClass(tabsContentContainer,collapsing);\n tabs[isAnimating] = false;\n },\n triggerShow = function() {\n if (tabsContentContainer) { // height animation\n if ( equalContents ) {\n triggerEnd();\n } else {\n setTimeout(function(){ // enables height animation\n tabsContentContainer[style][height] = nextHeight + 'px'; // height animation\n tabsContentContainer[offsetWidth];\n emulateTransitionEnd(tabsContentContainer, triggerEnd);\n },50);\n }\n } else {\n tabs[isAnimating] = false; \n }\n bootstrapCustomEvent.call(next, shownEvent, component, activeTab);\n },\n triggerHide = function() {\n if (tabsContentContainer) {\n activeContent[style][float] = left;\n nextContent[style][float] = left; \n containerHeight = activeContent[scrollHeight];\n }\n \n addClass(nextContent,active);\n bootstrapCustomEvent.call(next, showEvent, component, activeTab);\n \n removeClass(activeContent,active);\n bootstrapCustomEvent.call(activeTab, hiddenEvent, component, next);\n \n if (tabsContentContainer) {\n nextHeight = nextContent[scrollHeight];\n equalContents = nextHeight === containerHeight;\n addClass(tabsContentContainer,collapsing);\n tabsContentContainer[style][height] = containerHeight + 'px'; // height animation\n tabsContentContainer[offsetHeight];\n activeContent[style][float] = '';\n nextContent[style][float] = '';\n }\n \n if ( hasClass(nextContent, 'fade') ) {\n setTimeout(function(){\n addClass(nextContent,showClass);\n emulateTransitionEnd(nextContent,triggerShow);\n },20);\n } else { triggerShow(); } \n };\n \n if (!tabs) return; // invalidate\n \n // set default animation state\n tabs[isAnimating] = false; \n \n // private methods\n var getActiveTab = function() {\n var activeTabs = getElementsByClassName(tabs,active), activeTab;\n if ( activeTabs[length] === 1 && !hasClass(activeTabs[0][parentNode],'dropdown') ) {\n activeTab = activeTabs[0];\n } else if ( activeTabs[length] > 1 ) {\n activeTab = activeTabs[activeTabs[length]-1];\n }\n return activeTab;\n },\n getActiveContent = function() {\n return queryElement(getActiveTab()[getAttribute]('href'));\n },\n // handler \n clickHandler = function(e) {\n e[preventDefault]();\n next = e[currentTarget];\n !tabs[isAnimating] && !hasClass(next,active) && self.show();\n };\n \n // public method\n this.show = function() { // the tab we clicked is now the next tab\n next = next || element;\n nextContent = queryElement(next[getAttribute]('href')); //this is the actual object, the next tab content to activate\n activeTab = getActiveTab(); \n activeContent = getActiveContent();\n \n tabs[isAnimating] = true;\n removeClass(activeTab,active);\n activeTab[setAttribute](ariaSelected,'false');\n addClass(next,active);\n next[setAttribute](ariaSelected,'true'); \n \n if ( dropdown ) {\n if ( !hasClass(element[parentNode],'dropdown-menu') ) {\n if (hasClass(dropdown,active)) removeClass(dropdown,active);\n } else {\n if (!hasClass(dropdown,active)) addClass(dropdown,active);\n }\n }\n \n bootstrapCustomEvent.call(activeTab, hideEvent, component, next);\n \n if (hasClass(activeContent, 'fade')) {\n removeClass(activeContent,showClass);\n emulateTransitionEnd(activeContent, triggerHide);\n } else { triggerHide(); }\n };\n \n // init\n if ( !(stringTab in element) ) { // prevent adding event handlers twice\n on(element, clickEvent, clickHandler);\n }\n if (self[height]) { tabsContentContainer = getActiveContent()[parentNode]; }\n element[stringTab] = self;\n };\n \n // TAB DATA API\n // ============\n supports[push]( [ stringTab, Tab, '['+dataToggle+'=\"tab\"]' ] );\n \n \n /* Native Javascript for Bootstrap 4 | Tooltip\n ---------------------------------------------*/\n \n // TOOLTIP DEFINITION\n // ==================\n var Tooltip = function( element,options ) {\n \n // initialization element\n element = queryElement(element);\n \n // set options\n options = options || {};\n \n // DATA API\n var animationData = element[getAttribute](dataAnimation),\n placementData = element[getAttribute](dataPlacement),\n delayData = element[getAttribute](dataDelay),\n containerData = element[getAttribute](dataContainer),\n \n // strings\n component = 'tooltip',\n classString = 'class',\n title = 'title',\n fade = 'fade',\n div = 'div',\n \n // check container\n containerElement = queryElement(options[container]),\n containerDataElement = queryElement(containerData), \n \n // maybe the element is inside a modal\n modal = getClosest(element,'.modal'),\n \n // maybe the element is inside a fixed navbar\n navbarFixedTop = getClosest(element,'.'+fixedTop),\n navbarFixedBottom = getClosest(element,'.'+fixedBottom);\n \n // set instance options\n this[animation] = options[animation] && options[animation] !== fade ? options[animation] : animationData || fade;\n this[placement] = options[placement] ? options[placement] : placementData || top;\n this[delay] = parseInt(options[delay] || delayData) || 200;\n this[container] = containerElement ? containerElement \n : containerDataElement ? containerDataElement\n : navbarFixedTop ? navbarFixedTop\n : navbarFixedBottom ? navbarFixedBottom\n : modal ? modal : DOC[body];\n \n // bind, event targets, title and constants\n var self = this, timer = 0, placementSetting = this[placement], tooltip = null,\n titleString = element[getAttribute](title) || element[getAttribute](dataTitle) || element[getAttribute](dataOriginalTitle);\n \n if ( !titleString || titleString == \"\" ) return; // invalidate\n \n // private methods\n var removeToolTip = function() {\n self[container].removeChild(tooltip);\n tooltip = null; timer = null;\n },\n createToolTip = function() {\n titleString = element[getAttribute](title) || element[getAttribute](dataTitle) || element[getAttribute](dataOriginalTitle); // read the title again\n \n if ( titleString && titleString !== \"\" ) { // invalidate, maybe markup changed\n tooltip = DOC[createElement](div);\n tooltip[setAttribute]('role',component);\n tooltip[style][left] = '0';\n tooltip[style][top] = '0'; \n \n // tooltip arrow\n var tooltipArrow = DOC[createElement](div);\n tooltipArrow[setAttribute](classString,'arrow');\n tooltip[appendChild](tooltipArrow);\n \n var tooltipInner = DOC[createElement](div);\n tooltipInner[setAttribute](classString,component+'-inner');\n tooltip[appendChild](tooltipInner);\n tooltipInner[innerHTML] = titleString;\n \n self[container][appendChild](tooltip);\n tooltip[setAttribute](classString, component + ' bs-' + component+'-'+placementSetting + ' ' + self[animation]);\n }\n },\n updateTooltip = function () {\n styleTip(element, tooltip, placementSetting, self[container]);\n },\n showTooltip = function () {\n !hasClass(tooltip,showClass) && ( addClass(tooltip,showClass) );\n },\n // triggers\n showTrigger = function() {\n on( globalObject, resizeEvent, self.hide, passiveHandler );\n bootstrapCustomEvent.call(element, shownEvent, component);\n },\n hideTrigger = function() {\n off( globalObject, resizeEvent, self.hide, passiveHandler );\n removeToolTip();\n bootstrapCustomEvent.call(element, hiddenEvent, component);\n };\n \n // public methods\n this.show = function() {\n clearTimeout(timer);\n timer = setTimeout( function() {\n if (tooltip === null) {\n placementSetting = self[placement]; // we reset placement in all cases\n // if(createToolTip() == false) return;\n if(createToolTip() !== false) {\n updateTooltip();\n showTooltip();\n bootstrapCustomEvent.call(element, showEvent, component);\n !!self[animation] ? emulateTransitionEnd(tooltip, showTrigger) : showTrigger(); \n }\n }\n }, 20 );\n };\n this.hide = function() {\n clearTimeout(timer);\n timer = setTimeout( function() {\n if (tooltip && hasClass(tooltip,showClass)) {\n bootstrapCustomEvent.call(element, hideEvent, component);\n removeClass(tooltip,showClass);\n !!self[animation] ? emulateTransitionEnd(tooltip, hideTrigger) : hideTrigger();\n }\n }, self[delay]);\n };\n this.toggle = function() {\n if (!tooltip) { self.show(); } \n else { self.hide(); }\n };\n \n // init\n if ( !(stringTooltip in element) ) { // prevent adding event handlers twice\n element[setAttribute](dataOriginalTitle,titleString);\n element.removeAttribute(title);\n on(element, mouseHover[0], self.show);\n on(element, mouseHover[1], self.hide);\n }\n element[stringTooltip] = self;\n };\n \n // TOOLTIP DATA API\n // =================\n supports[push]( [ stringTooltip, Tooltip, '['+dataToggle+'=\"tooltip\"]' ] );\n \n \n \r\n /* Native Javascript for Bootstrap | Initialize Data API\r\n --------------------------------------------------------*/\r\n var initializeDataAPI = function( constructor, collection ){\r\n for (var i=0, l=collection[length]; i