<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://morloch.shadowbaneemulator.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="http://morloch.shadowbaneemulator.com/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3ATooltips.js"/>
	<link rel="alternate" type="text/html" href="http://morloch.shadowbaneemulator.com/index.php?title=MediaWiki:Tooltips.js&amp;action=history"/>
	<updated>2026-06-16T06:59:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>http://morloch.shadowbaneemulator.com/index.php?title=MediaWiki:Tooltips.js&amp;diff=32788&amp;oldid=prev</id>
		<title>Rewen: Created page with &quot;var tooltips = {     debug: false,       api: false,     types: [],     classes: [&#039;basic-tooltip&#039;, &#039;advanced-tooltip&#039;],     advancedCounter: 1,       events: [],     timeouts:...&quot;</title>
		<link rel="alternate" type="text/html" href="http://morloch.shadowbaneemulator.com/index.php?title=MediaWiki:Tooltips.js&amp;diff=32788&amp;oldid=prev"/>
		<updated>2017-10-02T13:17:26Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;var tooltips = {     debug: false,       api: false,     types: [],     classes: [&amp;#039;basic-tooltip&amp;#039;, &amp;#039;advanced-tooltip&amp;#039;],     advancedCounter: 1,       events: [],     timeouts:...&amp;quot;&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: [&amp;#039;basic-tooltip&amp;#039;, &amp;#039;advanced-tooltip&amp;#039;],&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;
 &lt;br /&gt;
    init: function() {&lt;br /&gt;
        if($(document.body).hasClass(&amp;#039;mw-special-InfoboxBuilder&amp;#039;)) return;&lt;br /&gt;
        if(location.search.search(&amp;#039;ttdebug=true&amp;#039;) != -1 || (typeof tooltips_debug != &amp;#039;undefined&amp;#039; &amp;amp;&amp;amp; tooltips_debug)) tooltips.debug = true;&lt;br /&gt;
        var href = $(&amp;#039;link[rel=&amp;quot;canonical&amp;quot;]&amp;#039;).attr(&amp;#039;href&amp;#039;)&lt;br /&gt;
        if(typeof href == &amp;#039;undefined&amp;#039; || !href) {&lt;br /&gt;
            console.log(&amp;#039;Tooltips: script couldn\&amp;#039;t find required  link[rel=&amp;quot;canonical&amp;quot;]  tag&amp;#039;);&lt;br /&gt;
            tooltips.disabled = true;&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        href = href.split(&amp;#039;/wiki/&amp;#039;);&lt;br /&gt;
        tooltips.api = href[0]+&amp;#039;/api.php?format=json&amp;amp;action=parse&amp;amp;disablepp=true&amp;amp;prop=text&amp;amp;title=&amp;#039;+href[1];&lt;br /&gt;
        if(mw.util.getParamValue(&amp;#039;uselang&amp;#039;)) tooltips.api += &amp;#039;&amp;amp;uselang=&amp;#039;+mw.util.getParamValue(&amp;#039;uselang&amp;#039;);&lt;br /&gt;
        tooltips.api += &amp;#039;&amp;amp;text=&amp;#039;;&lt;br /&gt;
 &lt;br /&gt;
        tooltips.types[&amp;#039;basic-tooltip&amp;#039;] = {};&lt;br /&gt;
        tooltips.types[&amp;#039;advanced-tooltip&amp;#039;] = {};&lt;br /&gt;
 &lt;br /&gt;
        if(!tooltips.config()) {&lt;br /&gt;
            console.log(&amp;#039;Tooltips: missing config&amp;#039;);&lt;br /&gt;
            tooltips.disabled = true;&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
 &lt;br /&gt;
        var content = $(&amp;#039;#WikiaMainContent&amp;#039;)&lt;br /&gt;
        if(!content.length) content = $(&amp;#039;#mw-content-text&amp;#039;)&lt;br /&gt;
 &lt;br /&gt;
        if($(&amp;#039;#tooltip-wrapper&amp;#039;).length == 0) $(&amp;#039;&amp;lt;div id=&amp;quot;tooltip-wrapper&amp;quot; class=&amp;quot;WikiaArticle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;).appendTo(document.body);&lt;br /&gt;
        if($(&amp;#039;#tooltip-storage&amp;#039;).length == 0) $(&amp;#039;&amp;lt;div id=&amp;quot;tooltip-storage&amp;quot; class=&amp;quot;WikiaArticle&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;).append(&amp;#039;&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;&amp;#039;).appendTo(content);&lt;br /&gt;
 &lt;br /&gt;
        $(&amp;#039;#tooltip-wrapper&amp;#039;)&lt;br /&gt;
            .css({&amp;#039;margin&amp;#039;:&amp;#039;0px&amp;#039;,&amp;#039;position&amp;#039;:&amp;#039;fixed&amp;#039;,&amp;#039;height&amp;#039;:&amp;#039;auto&amp;#039;,&amp;#039;min-height&amp;#039;:&amp;#039;0&amp;#039;,&amp;#039;z-index&amp;#039;: 6000000,&amp;#039;font-size&amp;#039;:&amp;#039;14px&amp;#039;})&lt;br /&gt;
            .hide();&lt;br /&gt;
 &lt;br /&gt;
        $(&amp;#039;#tooltip-storage&amp;#039;)&lt;br /&gt;
            .css({&amp;#039;height&amp;#039;:&amp;#039;0px&amp;#039;,&amp;#039;min-height&amp;#039;:&amp;#039;0&amp;#039;,&amp;#039;visibility&amp;#039;:&amp;#039;hidden&amp;#039;,&amp;#039;overflow&amp;#039;:&amp;#039;hidden&amp;#039;,&amp;#039;position&amp;#039;:&amp;#039;static&amp;#039;,&amp;#039;font-size&amp;#039;:&amp;#039;14px&amp;#039;});&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
        $(&amp;#039;#tooltip-basic-tooltip&amp;#039;).data(&amp;#039;type&amp;#039;, &amp;#039;basic-tooltip&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
        tooltips.applyTooltips(document)&lt;br /&gt;
 &lt;br /&gt;
        mw.hook(&amp;#039;wikipage.content&amp;#039;).add(function(elem) {&lt;br /&gt;
            tooltips.applyTooltips($(elem));&lt;br /&gt;
        });&lt;br /&gt;
 &lt;br /&gt;
        if(typeof tooltips.events == &amp;#039;string&amp;#039;) 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;
            $(&amp;#039;#tooltip-wrapper&amp;#039;).css({&amp;#039;background-color&amp;#039;:&amp;#039;rgba(255,0,0,0.2)&amp;#039;})&lt;br /&gt;
            $(&amp;#039;#tooltip-storage&amp;#039;).css({&amp;#039;background-color&amp;#039;:&amp;#039;rgba(0,255,0,0.2)&amp;#039;,&amp;#039;height&amp;#039;:&amp;#039;500px&amp;#039;,&amp;#039;overflow-y&amp;#039;:&amp;#039;scroll&amp;#039;,&amp;#039;visibility&amp;#039;:&amp;#039;visible&amp;#039;})&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    config: function() {&lt;br /&gt;
        if(typeof tooltips_list != &amp;#039;undefined&amp;#039;) {&lt;br /&gt;
            $(tooltips_list).each(function(i, v) { tooltips.addType(v) });&lt;br /&gt;
        }&lt;br /&gt;
        if(typeof tooltips_config == &amp;#039;object&amp;#039;) {&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.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(&amp;#039;.&amp;#039;+tooltips.classes.join(&amp;#039;, .&amp;#039;)).each(function() {&lt;br /&gt;
            $this = $(this)&lt;br /&gt;
            if($this.hasClass(&amp;#039;tooltips-init-complete&amp;#039;)) return;&lt;br /&gt;
 &lt;br /&gt;
            $this.find(&amp;#039;*&amp;#039;).removeAttr(&amp;#039;title&amp;#039;);&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(&amp;#039;tooltip-contents&amp;#039;, $(this).attr(&amp;#039;title&amp;#039;));&lt;br /&gt;
            $this.removeAttr(&amp;#039;title&amp;#039;);&lt;br /&gt;
 &lt;br /&gt;
            tooltips.advancedTooltip($this);&lt;br /&gt;
 &lt;br /&gt;
            $(this).addClass(&amp;#039;tooltips-init-complete&amp;#039;);&lt;br /&gt;
        });&lt;br /&gt;
    },&lt;br /&gt;
    advancedTooltip: function(elem) {&lt;br /&gt;
        elem = $(elem)&lt;br /&gt;
        if(!elem.hasClass(&amp;#039;advanced-tooltip&amp;#039;)) return;&lt;br /&gt;
        var tips = elem.find(&amp;#039;.tooltip-contents&amp;#039;)&lt;br /&gt;
        if(!tips.length) return;&lt;br /&gt;
        var tip = $(&amp;#039;&amp;lt;div class=&amp;quot;main-tooltip tt-advanced-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;).attr(&amp;#039;id&amp;#039;, &amp;#039;tooltip-advanced-tooltip-&amp;#039;+tooltips.advancedCounter).appendTo(&amp;#039;#tooltip-storage&amp;#039;).data(&amp;#039;type&amp;#039;, &amp;#039;advanced-tooltip&amp;#039;).append($(tips[0]).contents()).each(tooltips.calcSize);&lt;br /&gt;
        tips.remove();&lt;br /&gt;
        elem.data(&amp;#039;tooltip-id-advanced-tooltip&amp;#039;, 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] == &amp;#039;undefined&amp;#039;) {&lt;br /&gt;
            var obj = {}&lt;br /&gt;
 &lt;br /&gt;
            if(typeof tt.parse == &amp;#039;string&amp;#039; || typeof tt.parse == &amp;#039;function&amp;#039;) var parse = tt.parse; else var parse = false;&lt;br /&gt;
            if(typeof tt.text == &amp;#039;string&amp;#039; || typeof tt.text == &amp;#039;function&amp;#039;) 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 == &amp;#039;string&amp;#039;) obj.parameters = tooltips.getParameters(obj.text); else obj.parameters = [];&lt;br /&gt;
 &lt;br /&gt;
            if(typeof tt.delay == &amp;#039;string&amp;#039; || typeof tt.delay == &amp;#039;number&amp;#039;) obj.delay = parseInt(tt.delay); else obj.delay = false;&lt;br /&gt;
            if(typeof tt.onParsed == &amp;#039;function&amp;#039;) obj.onParsed = tt.onParsed;&lt;br /&gt;
            if(typeof tt.onShow == &amp;#039;function&amp;#039;) obj.onShow = tt.onShow;&lt;br /&gt;
            if(typeof tt.onHide == &amp;#039;function&amp;#039;) 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 == &amp;#039;string&amp;#039; || typeof tt.delay == &amp;#039;number&amp;#039;) tooltips.types[tt.classname].delay = parseInt(tt.delay);&lt;br /&gt;
            if(typeof tt.onParsed == &amp;#039;function&amp;#039;) tooltips.types[tt.classname].onParsed = tt.onParsed;&lt;br /&gt;
            if(typeof tt.onShow == &amp;#039;function&amp;#039;) tooltips.types[tt.classname].onShow = tt.onShow;&lt;br /&gt;
            if(typeof tt.onHide == &amp;#039;function&amp;#039;) 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 == &amp;#039;function&amp;#039;) {&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 == &amp;#039;undefined&amp;#039;) value = &amp;#039;&amp;#039;&lt;br /&gt;
                var rx = new RegExp(&amp;#039;&amp;lt;#\\s*&amp;#039;+param.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, &amp;quot;\\$&amp;amp;&amp;quot;)+&amp;#039;\\s*#&amp;gt;&amp;#039;, &amp;#039;g&amp;#039;)&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(&amp;#039;tooltip-id-&amp;#039;+type)) return $(&amp;#039;#tooltip-&amp;#039;+type+&amp;#039;-&amp;#039;+elem.data(&amp;#039;tooltip-id-&amp;#039;+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(&amp;#039;tooltip-id-&amp;#039;+type, id)&lt;br /&gt;
 &lt;br /&gt;
        var tip = $(&amp;#039;#tooltip-&amp;#039;+type+&amp;#039;-&amp;#039;+elem.data(&amp;#039;tooltip-id-&amp;#039;+type))&lt;br /&gt;
        if(tip.length) return tip;&lt;br /&gt;
 &lt;br /&gt;
        tip = $(&amp;#039;&amp;lt;div class=&amp;quot;main-tooltip&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;#039;).attr(&amp;#039;id&amp;#039;, &amp;#039;tooltip-&amp;#039;+type+&amp;#039;-&amp;#039;+id).appendTo(&amp;#039;#tooltip-storage&amp;#039;).data(&amp;#039;type&amp;#039;, type).addClass(&amp;#039;tt-&amp;#039;+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(&amp;#039;tooltip-loading&amp;#039;)&lt;br /&gt;
            var api = tooltips.getAPI(text)&lt;br /&gt;
            if(tooltips.debug) tip.html(&amp;#039;&amp;lt;pre style=&amp;quot;padding:2px 3px;font-size:11px;&amp;quot;&amp;gt;&amp;#039;+api+&amp;#039;&amp;lt;/pre&amp;gt;&amp;#039;)&lt;br /&gt;
            tip.attr(&amp;#039;title&amp;#039;, api)&lt;br /&gt;
            $.ajax({&lt;br /&gt;
                url: api,&lt;br /&gt;
                dataType: &amp;#039;json&amp;#039;,&lt;br /&gt;
                context: tip,&lt;br /&gt;
                success: function(data, textStatus, jqXHR) {&lt;br /&gt;
                    $(this).html(data[&amp;#039;parse&amp;#039;][&amp;#039;text&amp;#039;][&amp;#039;*&amp;#039;]).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(&amp;#039;img&amp;#039;)&lt;br /&gt;
                    images.fadeTo(0, 0).one(&amp;#039;load&amp;#039;, function() {&lt;br /&gt;
                        if(tooltips.waitForImages) {&lt;br /&gt;
                            $(this).fadeTo(0,1);&lt;br /&gt;
                            $(this).addClass(&amp;#039;image-loaded&amp;#039;)&lt;br /&gt;
                            tip = $(this).closest(&amp;#039;.main-tooltip&amp;#039;)&lt;br /&gt;
                            if(tip.find(&amp;#039;img&amp;#039;).length == tip.find(&amp;#039;img.image-loaded&amp;#039;).length) {&lt;br /&gt;
                                tip.removeClass(&amp;#039;tooltip-loading&amp;#039;).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(&amp;#039;tooltip-loading&amp;#039;).each(tooltips.calcSize)&lt;br /&gt;
                        }&lt;br /&gt;
                    } else {&lt;br /&gt;
                        $(this).removeClass(&amp;#039;tooltip-loading&amp;#039;).each(tooltips.calcSize)&lt;br /&gt;
                    }&lt;br /&gt;
                    var type = $(this).data(&amp;#039;type&amp;#039;) || false&lt;br /&gt;
                    if(type &amp;amp;&amp;amp; typeof tooltips.types[type].onParsed == &amp;#039;function&amp;#039;) {&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(&amp;#039;a.new&amp;#039;).length &amp;gt; 0) $(this).addClass(&amp;#039;has-redlinks&amp;#039;)&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($(elem).data(&amp;#039;tooltip-contents&amp;#039;).replace(/\\n/g,&amp;#039;&amp;lt;br /&amp;gt;&amp;#039;)).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(&amp;#039;tooltip-id-advanced-tooltip&amp;#039;));&lt;br /&gt;
    },&lt;br /&gt;
    getTooltips: function(elem) {&lt;br /&gt;
        elem = $(elem)&lt;br /&gt;
        var classes = elem.attr(&amp;#039;class&amp;#039;).split(&amp;#039; &amp;#039;)&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] == &amp;#039;advanced-tooltip&amp;#039;) tip = tooltips.getAdvancedTooltip(elem);&lt;br /&gt;
            else if(classes[i] == &amp;#039;basic-tooltip&amp;#039;) tip = tooltips.getBasicTooltip(elem);&lt;br /&gt;
            else if(typeof tooltips.types[classes[i]] != &amp;#039;undefined&amp;#039;) 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(&amp;#039;width&amp;#039;) != &amp;#039;undefined&amp;#039;) $this.css(&amp;#039;width&amp;#039;, $this.data(&amp;#039;width&amp;#039;)+&amp;#039;px&amp;#039;)&lt;br /&gt;
        else $this.css(&amp;#039;width&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
    },&lt;br /&gt;
    calcSize: function() {&lt;br /&gt;
        $this = $(this)&lt;br /&gt;
        $this.css(&amp;#039;position&amp;#039;, &amp;#039;absolute&amp;#039;)&lt;br /&gt;
        var temp = $this.css(&amp;#039;width&amp;#039;)&lt;br /&gt;
        $this.css(&amp;#039;width&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
        $this.data(&amp;#039;width&amp;#039;, parseFloat(window.getComputedStyle($this[0]).width));&lt;br /&gt;
        $this.data(&amp;#039;height&amp;#039;, parseFloat(window.getComputedStyle($this[0]).height));&lt;br /&gt;
        $this.data(&amp;#039;outerwidth&amp;#039;, $this.outerWidth(true));&lt;br /&gt;
        $this.data(&amp;#039;outerheight&amp;#039;, $this.outerHeight(true));&lt;br /&gt;
        $this.css(&amp;#039;width&amp;#039;, $this.data(&amp;#039;width&amp;#039;)+&amp;#039;px&amp;#039;)&lt;br /&gt;
        $this.css(&amp;#039;position&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
        $this.css(&amp;#039;width&amp;#039;, temp)&lt;br /&gt;
    },&lt;br /&gt;
    sameWidth: function() {&lt;br /&gt;
        if($(&amp;quot;#tooltip-wrapper&amp;quot;).find(&amp;#039;.main-tooltip&amp;#039;).length == 1) {&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).find(&amp;#039;.main-tooltip&amp;#039;).each(tooltips.setOwnWidth)&lt;br /&gt;
        } else {&lt;br /&gt;
            var width = 0;&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).find(&amp;#039;.main-tooltip&amp;#039;).each(function() { width = Math.max(width, $(this).data(&amp;#039;width&amp;#039;) || 0); });&lt;br /&gt;
            $(&amp;quot;#tooltip-wrapper&amp;quot;).find(&amp;#039;.main-tooltip&amp;#039;).each(function() { $(this).css(&amp;#039;width&amp;#039;, width+&amp;#039;px&amp;#039;); });&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(&amp;#039;padding-top&amp;#039;)) + parseInt($(&amp;quot;#tooltip-wrapper&amp;quot;).css(&amp;#039;padding-bottom&amp;#039;));&lt;br /&gt;
        var tipW = 0;&lt;br /&gt;
 &lt;br /&gt;
        $(&amp;quot;#tooltip-wrapper&amp;quot;).find(&amp;#039;.main-tooltip&amp;#039;).each( function(){ if(typeof $(this).data(&amp;#039;outerheight&amp;#039;) != &amp;#039;undefined&amp;#039;) tipH += $(this).data(&amp;#039;outerheight&amp;#039;); });&lt;br /&gt;
        $(&amp;quot;#tooltip-wrapper&amp;quot;).find(&amp;#039;.main-tooltip&amp;#039;).each( function(){ if(typeof $(this).data(&amp;#039;outerwidth&amp;#039;) != &amp;#039;undefined&amp;#039;) tipW = Math.max(tipW, $(this).data(&amp;#039;outerwidth&amp;#039;) + parseInt($(&amp;quot;#tooltip-wrapper&amp;quot;).css(&amp;#039;padding-left&amp;#039;)) + parseInt($(&amp;quot;#tooltip-wrapper&amp;quot;).css(&amp;#039;padding-right&amp;#039;))); });&lt;br /&gt;
 &lt;br /&gt;
        var coordX = tooltips.offsetX+mouseX;&lt;br /&gt;
        var coordY = tooltips.offsetY+mouseY;&lt;br /&gt;
 &lt;br /&gt;
        var toRight = $(window).width()-coordX;&lt;br /&gt;
 &lt;br /&gt;
        if ($(&amp;quot;#tooltip-wrapper&amp;quot;).css(&amp;#039;position&amp;#039;) == &amp;#039;fixed&amp;#039;) {&lt;br /&gt;
            coordX = coordX-$(window).scrollLeft();&lt;br /&gt;
            coordY = coordY-$(window).scrollTop();&lt;br /&gt;
            coordY = Math.min(coordY, $(window).height()-tipH-$(&amp;#039;#WikiaBarWrapper&amp;#039;).height());&lt;br /&gt;
        } else {&lt;br /&gt;
            coordY = Math.min(coordY, $(window).height()-tipH-$(&amp;#039;#WikiaBarWrapper&amp;#039;).height()+$(window).scrollTop());&lt;br /&gt;
        }&lt;br /&gt;
        if(toRight &amp;gt;= tipW) $(&amp;quot;#tooltip-wrapper&amp;quot;).css({left: coordX + &amp;#039;px&amp;#039;, top: coordY + &amp;#039;px&amp;#039;});&lt;br /&gt;
        else $(&amp;quot;#tooltip-wrapper&amp;quot;).css({left: coordX-tipW-tooltips.offsetX*2 + &amp;#039;px&amp;#039;, top: coordY + &amp;#039;px&amp;#039;});&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(&amp;#039;type&amp;#039;) || false;&lt;br /&gt;
 &lt;br /&gt;
                $this.show();&lt;br /&gt;
                if(type &amp;amp;&amp;amp; typeof tooltips.types[type] != &amp;#039;undefined&amp;#039; &amp;amp;&amp;amp; tooltips.types[type].delay) {&lt;br /&gt;
                    $this.hide()&lt;br /&gt;
                    tooltips.timeouts[$(this).attr(&amp;#039;id&amp;#039;)] = setTimeout(function(){&lt;br /&gt;
                        $this.show();&lt;br /&gt;
                        if(type &amp;amp;&amp;amp; typeof tooltips.types[type].onShow == &amp;#039;function&amp;#039;) 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 == &amp;#039;function&amp;#039;) 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(&amp;#039;.main-tooltip&amp;#039;).appendTo(&amp;#039;#tooltip-storage&amp;#039;).each(function() {&lt;br /&gt;
                var type = $(this).data(&amp;#039;type&amp;#039;) || false;&lt;br /&gt;
                if(type &amp;amp;&amp;amp; typeof tooltips.types[type].onHide == &amp;#039;function&amp;#039;) tooltips.types[type].onHide.call(this, handle);&lt;br /&gt;
                $(this).show()&lt;br /&gt;
                clearTimeout(tooltips.timeouts[$(this).attr(&amp;#039;id&amp;#039;)])&lt;br /&gt;
                delete tooltips.timeouts[$(this).attr(&amp;#039;id&amp;#039;)]&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: http://werxltd.com/wp/2010/05/13/javascript-implementation-of-javas-string-hashcode-method/ */&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>Rewen</name></author>
	</entry>
</feed>