<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.dungeondefenders2.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ATooltips.js</id>
		<title>MediaWiki:Tooltips.js - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.dungeondefenders2.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ATooltips.js"/>
		<link rel="alternate" type="text/html" href="https://wiki.dungeondefenders2.com/index.php?title=MediaWiki:Tooltips.js&amp;action=history"/>
		<updated>2026-04-15T19:15:05Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>https://wiki.dungeondefenders2.com/index.php?title=MediaWiki:Tooltips.js&amp;diff=17895&amp;oldid=prev</id>
		<title>Paloverde zfogshooterz: Blanked the page</title>
		<link rel="alternate" type="text/html" href="https://wiki.dungeondefenders2.com/index.php?title=MediaWiki:Tooltips.js&amp;diff=17895&amp;oldid=prev"/>
				<updated>2023-04-13T18:20:02Z</updated>
		
		<summary type="html">&lt;p&gt;Blanked the page&lt;/p&gt;
&lt;a href=&quot;https://wiki.dungeondefenders2.com/index.php?title=MediaWiki:Tooltips.js&amp;amp;diff=17895&amp;amp;oldid=17866&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Paloverde zfogshooterz</name></author>	</entry>

	<entry>
		<id>https://wiki.dungeondefenders2.com/index.php?title=MediaWiki:Tooltips.js&amp;diff=17866&amp;oldid=prev</id>
		<title>Paloverde zfogshooterz: Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.dungeondefenders2.com/index.php?title=MediaWiki:Tooltips.js&amp;diff=17866&amp;oldid=prev"/>
				<updated>2023-04-13T14:19:36Z</updated>
		
		<summary type="html">&lt;p&gt;Test&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;var tooltips = {&lt;br /&gt;
    debug: false,&lt;br /&gt;
    &lt;br /&gt;
    api: false,&lt;br /&gt;
    types: [],&lt;br /&gt;
    classes: ['basic-tooltip', 'advanced-tooltip'],&lt;br /&gt;
    advancedCounter: 1,&lt;br /&gt;
    &lt;br /&gt;
    events: [],&lt;br /&gt;
    timeouts: [],&lt;br /&gt;
    &lt;br /&gt;
    offsetX: 20,&lt;br /&gt;
    offsetY: 20,&lt;br /&gt;
    waitForImages: false,&lt;br /&gt;
    noCSS: false,&lt;br /&gt;
    &lt;br /&gt;
    flip: false,&lt;br /&gt;
    &lt;br /&gt;
    init: function() {&lt;br /&gt;
        if($(document.body).hasClass('mw-special-InfoboxBuilder')) return;&lt;br /&gt;
        if(location.search.search(/ttdebug=(1|[Tt]rue)/) != -1 || (typeof tooltips_debug != 'undefined' &amp;amp;&amp;amp; tooltips_debug)) tooltips.debug = true;&lt;br /&gt;
        var href = (new mw.Uri($('link[rel=&amp;quot;canonical&amp;quot;]').attr('href'))).path;&lt;br /&gt;
        if(typeof href == 'undefined' || !href) {&lt;br /&gt;
            console.log('Tooltips: script couldn\'t find required  link[rel=&amp;quot;canonical&amp;quot;]  tag');&lt;br /&gt;
            tooltips.disabled = true;&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        href = href.split('/wiki/');&lt;br /&gt;
        tooltips.api = href[0]+'/api.php?format=json&amp;amp;action=parse&amp;amp;disablelimitreport=true&amp;amp;prop=text&amp;amp;title='+href[1];&lt;br /&gt;
        if(mw.util.getParamValue('uselang')) tooltips.api += '&amp;amp;uselang='+mw.util.getParamValue('uselang');&lt;br /&gt;
		// Cache tooltip contents on the CDN for 10 minutes for anonymous users&lt;br /&gt;
		tooltips.api += '&amp;amp;maxage=600&amp;amp;smaxage=600'&lt;br /&gt;
        tooltips.api += '&amp;amp;text=';&lt;br /&gt;
        &lt;br /&gt;
        tooltips.types['basic-tooltip'] = {};&lt;br /&gt;
        tooltips.types['advanced-tooltip'] = {};&lt;br /&gt;
        &lt;br /&gt;
        if(!tooltips.config()) {&lt;br /&gt;
            console.log('Tooltips: missing config');&lt;br /&gt;
            tooltips.disabled = true;&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        var content = $('#WikiaMainContent');&lt;br /&gt;
        if(!content.length) content = $('#mw-content-text');&lt;br /&gt;
        &lt;br /&gt;
        if(!tooltips.noCSS) {&lt;br /&gt;
            var cssImport = importArticle({&lt;br /&gt;
                type: 'style',&lt;br /&gt;
                article: 'u:dev:MediaWiki:Tooltips.css'&lt;br /&gt;
            });&lt;br /&gt;
            if (Array.isArray(cssImport)) {&lt;br /&gt;
                // MW 1.19&lt;br /&gt;
                $(cssImport).prependTo('head');&lt;br /&gt;
            } else {&lt;br /&gt;
                // UCP&lt;br /&gt;
                cssImport.then(function () {&lt;br /&gt;
                    var expectedSource = mw.loader.moduleRegistry['u:dev:MediaWiki:Tooltips.css'].style.css[0];&lt;br /&gt;
                    for (var node = document.querySelector('head &amp;gt; meta[name=&amp;quot;ResourceLoaderDynamicStyles&amp;quot;]').previousElementSibling; node.tagName === 'STYLE'; node = node.previousElementSibling) {&lt;br /&gt;
                        if (node.textContent === '\n' + expectedSource) {&lt;br /&gt;
                            document.head.prepend(node);&lt;br /&gt;
                            return;&lt;br /&gt;
                        }&lt;br /&gt;
                    }&lt;br /&gt;
                    throw new Error('WTF? Failed to find RL-inserted style!');&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        if($('#tooltip-wrapper').length === 0) $('&amp;lt;div id=&amp;quot;tooltip-wrapper&amp;quot; class=&amp;quot;WikiaArticle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;').appendTo(document.body);&lt;br /&gt;
        if($('#tooltip-storage').length === 0) $('&amp;lt;div id=&amp;quot;tooltip-storage&amp;quot; class=&amp;quot;WikiaArticle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;').append('&amp;lt;div class=&amp;quot;main-tooltip tt-basic-tooltip&amp;quot; id=&amp;quot;tooltip-basic-tooltip&amp;quot;&amp;gt;Lorem ipsum dolor sit amet&amp;lt;/div&amp;gt;').appendTo(content);&lt;br /&gt;
        &lt;br /&gt;
        $('#tooltip-wrapper')&lt;br /&gt;
            .css({'margin':'0px','position':'fixed','height':'auto','min-height':'0','z-index': 6000000,'font-size':'14px'})&lt;br /&gt;
            .hide();&lt;br /&gt;
        &lt;br /&gt;
        $('#tooltip-storage')&lt;br /&gt;
            .css({'height':'0px','min-height':'0','visibility':'hidden','overflow':'hidden','position':'static','font-size':'14px'});&lt;br /&gt;
            &lt;br /&gt;
        &lt;br /&gt;
        $('#tooltip-basic-tooltip').data('type', 'basic-tooltip');&lt;br /&gt;
        &lt;br /&gt;
        tooltips.applyTooltips(document);&lt;br /&gt;
        &lt;br /&gt;
        mw.hook('wikipage.content').add(function(elem) {&lt;br /&gt;
            tooltips.applyTooltips($(elem));&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        if(typeof tooltips.events == 'string') tooltips.events = [tooltips.events];&lt;br /&gt;
        for(var x=0; x&amp;lt;tooltips.events.length; x++) { $(window).on(tooltips.events[x], function(ev, elem) { tooltips.applyTooltips(elem || this) }) }&lt;br /&gt;
        &lt;br /&gt;
        if(tooltips.debug) {&lt;br /&gt;
            $('#tooltip-wrapper').css({'background-color':'rgba(255,0,0,0.2)'});&lt;br /&gt;
            $('#tooltip-storage').css({'background-color':'rgba(0,255,0,0.2)','height':'500px','overflow-y':'scroll','visibility':'visible'});&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    config: function() {&lt;br /&gt;
        if(typeof tooltips_list != 'undefined') {&lt;br /&gt;
            $(tooltips_list).each(function(i, v) { tooltips.addType(v) });&lt;br /&gt;
        }&lt;br /&gt;
        if(typeof tooltips_config == 'object') {&lt;br /&gt;
            tooltips.offsetX = tooltips_config.offsetX || tooltips.offsetX;&lt;br /&gt;
            tooltips.offsetY = tooltips_config.offsetY || tooltips.offsetY;&lt;br /&gt;
            tooltips.waitForImages = (tooltips_config.waitForImages || tooltips.waitForImages) &amp;amp;&amp;amp; true;&lt;br /&gt;
            tooltips.noCSS = tooltips_config.noCSS || tooltips.noCSS;&lt;br /&gt;
            tooltips.events = tooltips_config.events || tooltips.events;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        return true;&lt;br /&gt;
    },&lt;br /&gt;
    applyTooltips: function(elem) {&lt;br /&gt;
        $(elem).find('.'+tooltips.classes.join(', .')).each(function() {&lt;br /&gt;
            $this = $(this);&lt;br /&gt;
            if($this.hasClass('tooltips-init-complete')) return;&lt;br /&gt;
            &lt;br /&gt;
            $this.find('*').removeAttr('title');&lt;br /&gt;
            $this.mouseover(tooltips.handlers.mouseOver);&lt;br /&gt;
            $this.mouseout(tooltips.handlers.mouseOut);&lt;br /&gt;
            $this.mousemove(tooltips.handlers.mouseMove);&lt;br /&gt;
            &lt;br /&gt;
            $this.data('tooltip-contents', $(this).attr('title'));&lt;br /&gt;
            $this.removeAttr('title');&lt;br /&gt;
            &lt;br /&gt;
            tooltips.advancedTooltip($this);&lt;br /&gt;
            &lt;br /&gt;
            $(this).addClass('tooltips-init-complete');&lt;br /&gt;
        });&lt;br /&gt;
    },&lt;br /&gt;
    advancedTooltip: function(elem) {&lt;br /&gt;
        elem = $(elem);&lt;br /&gt;
        if(!elem.hasClass('advanced-tooltip')) return;&lt;br /&gt;
        var tips = elem.find('.tooltip-contents');&lt;br /&gt;
        if(!tips.length) return;&lt;br /&gt;
        var tip = $('&amp;lt;div class=&amp;quot;main-tooltip tt-advanced-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;').attr('id', 'tooltip-advanced-tooltip-'+tooltips.advancedCounter).appendTo('#tooltip-storage').data('type', 'advanced-tooltip').append($(tips[0]).contents()).each(tooltips.calcSize);&lt;br /&gt;
        tips.remove();&lt;br /&gt;
        elem.data('tooltip-id-advanced-tooltip', tooltips.advancedCounter);&lt;br /&gt;
        tooltips.advancedCounter++;&lt;br /&gt;
    },&lt;br /&gt;
    addType: function(tt) {&lt;br /&gt;
        if(typeof tooltips.types[tt.classname] == 'undefined') {&lt;br /&gt;
            var obj = {};&lt;br /&gt;
            &lt;br /&gt;
            if(typeof tt.parse == 'string' || typeof tt.parse == 'function') var parse = tt.parse; else var parse = false;&lt;br /&gt;
            if(typeof tt.text == 'string' || typeof tt.text == 'function') var text = tt.text; else var text = false;&lt;br /&gt;
            &lt;br /&gt;
            if(parse) {&lt;br /&gt;
                obj.text = parse;&lt;br /&gt;
                obj.parse = true;&lt;br /&gt;
            } else if(text) {&lt;br /&gt;
                obj.text = text;&lt;br /&gt;
                obj.parse = false;&lt;br /&gt;
            } else return;&lt;br /&gt;
            &lt;br /&gt;
            if(typeof obj.text == 'string') obj.parameters = tooltips.getParameters(obj.text); else obj.parameters = [];&lt;br /&gt;
            &lt;br /&gt;
            if(typeof tt.delay == 'string' || typeof tt.delay == 'number') obj.delay = parseInt(tt.delay); else obj.delay = false;&lt;br /&gt;
            if(typeof tt.onParsed == 'function') obj.onParsed = tt.onParsed;&lt;br /&gt;
            if(typeof tt.onShow == 'function') obj.onShow = tt.onShow;&lt;br /&gt;
            if(typeof tt.onHide == 'function') obj.onHide = tt.onHide;&lt;br /&gt;
            &lt;br /&gt;
            tooltips.types[tt.classname] = obj;&lt;br /&gt;
            if(tooltips.classes.indexOf(tt.classname) == -1) tooltips.classes.push(tt.classname);&lt;br /&gt;
        } else {&lt;br /&gt;
            if(typeof tt.delay == 'string' || typeof tt.delay == 'number') tooltips.types[tt.classname].delay = parseInt(tt.delay);&lt;br /&gt;
            if(typeof tt.onParsed == 'function') tooltips.types[tt.classname].onParsed = tt.onParsed;&lt;br /&gt;
            if(typeof tt.onShow == 'function') tooltips.types[tt.classname].onShow = tt.onShow;&lt;br /&gt;
            if(typeof tt.onHide == 'function') tooltips.types[tt.classname].onHide = tt.onHide;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    getParameters: function(text) {&lt;br /&gt;
        var list = [];&lt;br /&gt;
        var matches = text.match(/&amp;lt;#\s*[a-z0-9_\-]+?\s*#&amp;gt;/gi);&lt;br /&gt;
        if(matches) {&lt;br /&gt;
            for(var x=0; x&amp;lt;matches.length; x++) {&lt;br /&gt;
                list.push(/&amp;lt;#\s*([a-z0-9_\-]+?)\s*#&amp;gt;/i.exec(matches[x])[1]);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return list;&lt;br /&gt;
    },&lt;br /&gt;
    getAPI: function(text) {&lt;br /&gt;
        return tooltips.api+encodeURIComponent(text);&lt;br /&gt;
    },&lt;br /&gt;
    getText: function(type, elem) {&lt;br /&gt;
        if(typeof tooltips.types[type].text == 'function') {&lt;br /&gt;
            var text = tooltips.types[type].text($(elem)[0]);&lt;br /&gt;
        } else {&lt;br /&gt;
            var text = tooltips.types[type].text;&lt;br /&gt;
            for(var x=0; x&amp;lt;tooltips.types[type].parameters.length; x++) {&lt;br /&gt;
                var param = tooltips.types[type].parameters[x];&lt;br /&gt;
                var value = $(elem).data(param);&lt;br /&gt;
                if(typeof value == 'undefined') value = '';&lt;br /&gt;
                var rx = new RegExp('&amp;lt;#\\s*'+param.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, &amp;quot;\\$&amp;amp;&amp;quot;)+'\\s*#&amp;gt;', 'g');&lt;br /&gt;
                text = text.replace(rx, value);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return text;&lt;br /&gt;
    },&lt;br /&gt;
    getTooltip: function(type, elem) {&lt;br /&gt;
        elem = $(elem);&lt;br /&gt;
        if(elem.data('tooltip-id-'+type)) return $('#tooltip-'+type+'-'+elem.data('tooltip-id-'+type));&lt;br /&gt;
        &lt;br /&gt;
        var text = tooltips.getText(type, elem);&lt;br /&gt;
        var id = tooltips.hash(text);&lt;br /&gt;
        elem.data('tooltip-id-'+type, id);&lt;br /&gt;
        &lt;br /&gt;
        var tip = $('#tooltip-'+type+'-'+elem.data('tooltip-id-'+type));&lt;br /&gt;
        if(tip.length) return tip;&lt;br /&gt;
        &lt;br /&gt;
        tip = $('&amp;lt;div class=&amp;quot;main-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;').attr('id', 'tooltip-'+type+'-'+id).appendTo('#tooltip-storage').data('type', type).addClass('tt-'+type);&lt;br /&gt;
        &lt;br /&gt;
        tooltips.wrapperPosition(tooltips.lastKnownMousePos[0], tooltips.lastKnownMousePos[1]);&lt;br /&gt;
        tooltips.sameWidth();&lt;br /&gt;
        &lt;br /&gt;
        if(!tooltips.types[type].parse) {&lt;br /&gt;
            tip.html(text).each(tooltips.calcSize);&lt;br /&gt;
            tooltips.wrapperPosition(tooltips.lastKnownMousePos[0], tooltips.lastKnownMousePos[1]);&lt;br /&gt;
            tooltips.sameWidth();&lt;br /&gt;
        } else {&lt;br /&gt;
            tip.addClass('tooltip-loading');&lt;br /&gt;
            var api = tooltips.getAPI(text);&lt;br /&gt;
            if(tooltips.debug) tip.html('&amp;lt;pre style=&amp;quot;padding:2px 3px;font-size:11px;&amp;quot;&amp;gt;'+api+'&amp;lt;/pre&amp;gt;');&lt;br /&gt;
            tip.attr('title', api);&lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: api,&lt;br /&gt;
                dataType: 'json',&lt;br /&gt;
                context: tip,&lt;br /&gt;
                success: function(data, textStatus, jqXHR) {&lt;br /&gt;
                    $(this).html(data['parse']['text']['*']).each(tooltips.calcSize);&lt;br /&gt;
                    tooltips.wrapperPosition(tooltips.lastKnownMousePos[0], tooltips.lastKnownMousePos[1]);&lt;br /&gt;
                    tooltips.sameWidth();&lt;br /&gt;
                    var images = $(this).find('img');&lt;br /&gt;
                    images.fadeTo(0, 0).one('load', function() {&lt;br /&gt;
                        if(tooltips.waitForImages) {&lt;br /&gt;
                            $(this).fadeTo(0,1);&lt;br /&gt;
                            $(this).addClass('image-loaded');&lt;br /&gt;
                            tip = $(this).closest('.main-tooltip');&lt;br /&gt;
                            if(tip.find('img').length == tip.find('img.image-loaded').length) {&lt;br /&gt;
                                tip.removeClass('tooltip-loading').each(tooltips.calcSize);&lt;br /&gt;
                                tooltips.wrapperPosition(tooltips.lastKnownMousePos[0], tooltips.lastKnownMousePos[1]);&lt;br /&gt;
                                tooltips.sameWidth();&lt;br /&gt;
                            }&lt;br /&gt;
                        } else $(this).fadeTo(100,1);&lt;br /&gt;
                    });&lt;br /&gt;
                    if(tooltips.waitForImages) {&lt;br /&gt;
                        if(images.length === 0) {&lt;br /&gt;
                            $(this).removeClass('tooltip-loading').each(tooltips.calcSize);&lt;br /&gt;
                        }&lt;br /&gt;
                    } else {&lt;br /&gt;
                        $(this).removeClass('tooltip-loading').each(tooltips.calcSize);&lt;br /&gt;
                    }&lt;br /&gt;
                    var type = $(this).data('type') || false;&lt;br /&gt;
                    if(type &amp;amp;&amp;amp; typeof tooltips.types[type].onParsed == 'function') {&lt;br /&gt;
                        tooltips.types[type].onParsed.call(this);&lt;br /&gt;
                        tip.each(tooltips.calcSize);&lt;br /&gt;
                    }&lt;br /&gt;
                    if($(this).find('a.new').length &amp;gt; 0) $(this).addClass('has-redlinks');&lt;br /&gt;
                    tooltips.wrapperPosition(tooltips.lastKnownMousePos[0], tooltips.lastKnownMousePos[1]);&lt;br /&gt;
                    tooltips.sameWidth();&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
        return tip;&lt;br /&gt;
    },&lt;br /&gt;
    getBasicTooltip: function(elem) {&lt;br /&gt;
        return $(&amp;quot;#tooltip-basic-tooltip&amp;quot;).html(mw.html.escape($(elem).data('tooltip-contents')).replace(/\\n/g,'&amp;lt;br /&amp;gt;')).each(tooltips.calcSize);&lt;br /&gt;
    },&lt;br /&gt;
    getAdvancedTooltip: function(elem) {&lt;br /&gt;
        return $(&amp;quot;#tooltip-advanced-tooltip-&amp;quot;+$(elem).data('tooltip-id-advanced-tooltip'));&lt;br /&gt;
    },&lt;br /&gt;
    getTooltips: function(elem) {&lt;br /&gt;
        elem = $(elem);&lt;br /&gt;
        var classes = elem.attr('class').split(' ');&lt;br /&gt;
        var tips = [];&lt;br /&gt;
        for(var i=0;i&amp;lt;classes.length;i++) {&lt;br /&gt;
            var tip = false;&lt;br /&gt;
            if(classes[i] == 'advanced-tooltip') tip = tooltips.getAdvancedTooltip(elem);&lt;br /&gt;
            else if(classes[i] == 'basic-tooltip') tip = tooltips.getBasicTooltip(elem);&lt;br /&gt;
            else if(typeof tooltips.types[classes[i]] != 'undefined') tip = tooltips.getTooltip(classes[i], elem);&lt;br /&gt;
            if(tip) tips.push(tip[0]);&lt;br /&gt;
        }&lt;br /&gt;
        return $(tips);&lt;br /&gt;
    },&lt;br /&gt;
    setOwnWidth: function() {&lt;br /&gt;
        $this = $(this);&lt;br /&gt;
        if(typeof $this.data('width') != 'undefined') $this.css('width', $this.data('width')+'px');&lt;br /&gt;
        else $this.css('width', '');&lt;br /&gt;
    },&lt;br /&gt;
    calcSize: function() {&lt;br /&gt;
        $this = $(this);&lt;br /&gt;
        $this.css('position', 'absolute');&lt;br /&gt;
        var temp = $this.css('width');&lt;br /&gt;
        $this.css('width', '');&lt;br /&gt;
        $this.data('width', parseFloat(window.getComputedStyle($this[0]).width));&lt;br /&gt;
        $this.data('height', parseFloat(window.getComputedStyle($this[0]).height));&lt;br /&gt;
        $this.data('outerwidth', $this.outerWidth(true));&lt;br /&gt;
        $this.data('outerheight', $this.outerHeight(true));&lt;br /&gt;
        $this.css('width', $this.data('width')+'px');&lt;br /&gt;
        $this.css('position', '');&lt;br /&gt;
        $this.css('width', temp);&lt;br /&gt;
    },&lt;br /&gt;
    sameWidth: function() {&lt;br /&gt;
        if($(&amp;quot;#tooltip-wrapper&amp;quot;).find('.main-tooltip').length == 1) {&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).find('.main-tooltip').each(tooltips.setOwnWidth);&lt;br /&gt;
        } else {&lt;br /&gt;
            var width = 0;&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).find('.main-tooltip').each(function() { width = Math.max(width, $(this).data('width') || 0); });&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).find('.main-tooltip').each(function() { $(this).css('width', width+'px'); });&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    wrapperPosition: function(mouseX, mouseY) {&lt;br /&gt;
        var tipH = parseInt($(&amp;quot;#tooltip-wrapper&amp;quot;).css('padding-top')) + parseInt($(&amp;quot;#tooltip-wrapper&amp;quot;).css('padding-bottom'));&lt;br /&gt;
        var tipW = 0;&lt;br /&gt;
        var barH = $('#WikiaBarWrapper').height();&lt;br /&gt;
       &lt;br /&gt;
        $(&amp;quot;#tooltip-wrapper&amp;quot;).find('.main-tooltip').each( function(){ if(typeof $(this).data('outerheight') != 'undefined') tipH += $(this).data('outerheight'); });&lt;br /&gt;
        $(&amp;quot;#tooltip-wrapper&amp;quot;).find('.main-tooltip').each( function(){ if(typeof $(this).data('outerwidth') != 'undefined') tipW = Math.max(tipW, $(this).data('outerwidth') + parseInt($(&amp;quot;#tooltip-wrapper&amp;quot;).css('padding-left')) + parseInt($(&amp;quot;#tooltip-wrapper&amp;quot;).css('padding-right'))); });&lt;br /&gt;
        &lt;br /&gt;
        var spaceTop = mouseY - tooltips.offsetY;&lt;br /&gt;
        var spaceLeft = mouseX - tooltips.offsetX;&lt;br /&gt;
        var spaceRight = $(window).width() - mouseX - tooltips.offsetX;&lt;br /&gt;
        var spaceBottom = $(window).height() - barH - mouseY - tooltips.offsetY;&lt;br /&gt;
        &lt;br /&gt;
        var coordX = mouseX + tooltips.offsetX;&lt;br /&gt;
        var coordY = mouseY + tooltips.offsetY;&lt;br /&gt;
        &lt;br /&gt;
        if(spaceRight &amp;lt; tipW &amp;amp;&amp;amp; spaceBottom &amp;lt; tipH) {&lt;br /&gt;
            if(spaceLeft &amp;gt;= tipW &amp;amp;&amp;amp; tooltips.flip != 'h') {&lt;br /&gt;
                coordX = mouseX - tipW - tooltips.offsetX;&lt;br /&gt;
                tooltips.flip = 'v';&lt;br /&gt;
            } else if(spaceTop &amp;gt;= tipH) {&lt;br /&gt;
                coordY = mouseY - tipH - tooltips.offsetY;&lt;br /&gt;
                tooltips.flip = 'h';&lt;br /&gt;
            } else {&lt;br /&gt;
                coordX = mouseX - tipW - tooltips.offsetX;&lt;br /&gt;
                coordY = mouseY - tipH - tooltips.offsetY;&lt;br /&gt;
                tooltips.flip = 'vh';&lt;br /&gt;
            }&lt;br /&gt;
        } else {&lt;br /&gt;
            tooltips.flip = false;&lt;br /&gt;
        }&lt;br /&gt;
        if ($(&amp;quot;#tooltip-wrapper&amp;quot;).css('position') == 'fixed') {&lt;br /&gt;
            coordX = coordX-$(window).scrollLeft();&lt;br /&gt;
            coordY = coordY-$(window).scrollTop();&lt;br /&gt;
            &lt;br /&gt;
            coordX = Math.min(coordX, $(window).width() - tipW);&lt;br /&gt;
            coordY = Math.min(coordY, $(window).height() - tipH - barH);&lt;br /&gt;
        } else {&lt;br /&gt;
            coordX = Math.min(coordX, $(window).width() - tipW);&lt;br /&gt;
            coordY = Math.min(coordY, $(window).height() - tipH - barH + $(window).scrollTop());&lt;br /&gt;
        }&lt;br /&gt;
        $(&amp;quot;#tooltip-wrapper&amp;quot;).css({left: coordX + 'px', top: coordY + 'px'});&lt;br /&gt;
    },&lt;br /&gt;
    handlers: {&lt;br /&gt;
        mouseOver: function(e) {&lt;br /&gt;
            tooltips.lastKnownMousePos = [e.pageX, e.pageY];&lt;br /&gt;
            tooltips.wrapperPosition(e.pageX, e.pageY);&lt;br /&gt;
            &lt;br /&gt;
            var tips = tooltips.getTooltips(this);&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).prepend(tips).show();&lt;br /&gt;
            tooltips.sameWidth();&lt;br /&gt;
            &lt;br /&gt;
            var handle = this;&lt;br /&gt;
            tips.each(function() {&lt;br /&gt;
                var $this = $(this);&lt;br /&gt;
                var type = $(this).data('type') || false;&lt;br /&gt;
                &lt;br /&gt;
                $this.show();&lt;br /&gt;
                $(window).trigger('scroll');// trigger image lazy loader&lt;br /&gt;
                if(type &amp;amp;&amp;amp; typeof tooltips.types[type] != 'undefined' &amp;amp;&amp;amp; tooltips.types[type].delay) {&lt;br /&gt;
                    $this.hide();&lt;br /&gt;
                    tooltips.timeouts[$(this).attr('id')] = setTimeout(function(){&lt;br /&gt;
                        $this.show();&lt;br /&gt;
                        if(type &amp;amp;&amp;amp; typeof tooltips.types[type].onShow == 'function') tooltips.types[type].onShow.call($this[0], handle);&lt;br /&gt;
                    }, tooltips.types[type].delay);&lt;br /&gt;
                } else if(type &amp;amp;&amp;amp; typeof tooltips.types[type].onShow == 'function') tooltips.types[type].onShow.call(this, handle);&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        mouseOut: function(e) {&lt;br /&gt;
            tooltips.lastKnownMousePos = [e.pageX, e.pageY];&lt;br /&gt;
            tooltips.wrapperPosition(e.pageX, e.pageY);&lt;br /&gt;
            &lt;br /&gt;
            var handle = this;&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).hide();&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).find('.main-tooltip').appendTo('#tooltip-storage').each(function() {&lt;br /&gt;
                var type = $(this).data('type') || false;&lt;br /&gt;
                if(type &amp;amp;&amp;amp; typeof tooltips.types[type].onHide == 'function') tooltips.types[type].onHide.call(this, handle);&lt;br /&gt;
                $(this).show();&lt;br /&gt;
                clearTimeout(tooltips.timeouts[$(this).attr('id')]);&lt;br /&gt;
                delete tooltips.timeouts[$(this).attr('id')];&lt;br /&gt;
            });&lt;br /&gt;
        },&lt;br /&gt;
        mouseMove: function(e) {&lt;br /&gt;
            tooltips.lastKnownMousePos = [e.pageX, e.pageY];&lt;br /&gt;
            tooltips.wrapperPosition(e.pageX, e.pageY);&lt;br /&gt;
        },&lt;br /&gt;
    },&lt;br /&gt;
    hash: function(text) {&lt;br /&gt;
        /* Source: https://archive.is/nq2F9 */&lt;br /&gt;
        var hash = 0, i, char;&lt;br /&gt;
        if (text.length === 0) return hash;&lt;br /&gt;
        for (i = 0, l = text.length; i &amp;lt; l; i++) {&lt;br /&gt;
            char  = text.charCodeAt(i);&lt;br /&gt;
            hash  = ((hash&amp;lt;&amp;lt;5)-hash)+char;&lt;br /&gt;
            hash |= 0; // Convert to 32bit integer&lt;br /&gt;
        }&lt;br /&gt;
        return hash;&lt;br /&gt;
    },&lt;br /&gt;
};&lt;br /&gt;
$(tooltips.init);&lt;/div&gt;</summary>
		<author><name>Paloverde zfogshooterz</name></author>	</entry>

	</feed>