Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.

  • Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
  • Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
/**
 * Überarbeitung [[Benutzer:Yukii|Yukii]]
 *
 * @author [[User:Meitar]]
 *
 * PLEASE NOTE: This software requires jQuery and assumes it is present.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that this
 * permission notice appear in all copies.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * TODO: There's probably plenty of refactoring work that can be done here &
 *       might be fun for someone to do. I'm hoping that porting this script
 *       from [[User:Anthoron/tooltip.js]], which used Prototype, to Wikia's
 *       new jQuery underpinnings will provide the community with a headstart
 *       using the new framework. Cheers!
 */
 
// Create a safe namespace in which to work.
var sehTooltip = {};
 
// Default CSS, originally called "options".
sehTooltip.popupCSS = {
    position: 'absolute',
    margin: '0',
    padding: '5px',
    'background-color': '#d6d6fc',
    zindex: 1000
};
 
sehTooltip.showTooltip = function () {
    // The IDs of these elements are broken; they begin with '.' (an invalid char)
    // so we have to resort to some strangeness here by accessing them natively.
    var el = $(document.getElementById(this.id + '-tooltip'));
    el.css(sehTooltip.popupCSS);
    el.show();
};
 
sehTooltip.hideTooltip = function () {
    $(document.getElementById(this.id + '-tooltip')).hide();
};
 
sehTooltip.moveTooltip = function (e) {
    sehTooltip.positionTooltip(e.pageX, e.pageY, $(document.getElementById(this.id + '-tooltip')));
};
 
sehTooltip.positionTooltip = function (mouse_x, mouse_y, el) {
 
    var delta_x = 5;
    var delta_y = 5;
 
    // Initialize offset calculations.
    var x_offset = mouse_x;
    var y_offset = mouse_y;
 
    var skin_x_offset = -210;
    var skin_y_offset = -55;
 
    // For deciding if we need to switch sides for the tooltip
    var element_width = el.outerWidth(); // outerWidth() gives us more room.
    var element_height = el.outerHeight();
 
    // position it in the standard place (below the cursor)
    y_offset = mouse_y + delta_y;
 
    // adjust it so it doesn't over-hang the window
    if ((y_offset + element_height) > ($(window).height() + $(window).scrollTop())) {
        y_offset = mouse_y - (element_height - ($(window).height() - mouse_y)) + $(window).scrollTop();
        // give ourselves a bit of the margin at the bottom
        y_offset -= delta_y * 3;
    }
 
    x_offset = mouse_x + delta_x;
    if ((x_offset + element_width) > ($(window).width() + $(window).scrollLeft())) {
        x_offset = mouse_x - (element_width - ($(window).width() - mouse_x)) + $(window).scrollLeft();
        x_offset -= delta_x * 3;
    }
 
    if (x_offset < mouse_x && (x_offset + element_width) > mouse_x &&
        y_offset < mouse_y && (y_offset + element_height) > mouse_y) {
        x_offset = mouse_x - element_width - (delta_x * 3) + $(window).scrollLeft();
    }
 
    el.css({
        left: x_offset + skin_x_offset + "px",
        top: y_offset + skin_y_offset + "px"
    });
 
};
 
sehTooltip.toggleSticky = function (e) {
    // Not all tooltips have the same DOM structure, so the second case
    // is used to detect both situations.
    if (!$(e.target).hasClass('tooltip') && !$(e.target.parentNode.parentNode.parentNode.parentNode).hasClass('.tooltip')) {
        // We didn't click a tooltip, so close all tooltips.
        $('.tooltip').mouseout(sehTooltip.hideTooltip);
        $('.tooltip').trigger('mouseout');
    } else {
        var el = e.target;
        // Check for odd structure.
        if (!$(el).hasClass('tooltip')) {
            el = $(el).closest('.tooltip')[0];
        }
        // We clicked a tooltip. Was it already open?
        if ($(el).hasClass('seh-tooltip-sticky')) {
            sehTooltip.makeUnsticky(el);
        } else {
            sehTooltip.makeSticky(e, el);
        }
    }
};
 
sehTooltip.makeSticky = function (e, el) {
    e.preventDefault();
    // Leave tooltip in place.
    $(el).unbind('mousemove');
    $(el).unbind('mouseout');
 
    // Remember that this is sticky now.
    $(el).addClass('seh-tooltip-sticky');
};
 
sehTooltip.makeUnsticky = function (el) {
    $('.tooltip').mouseout(sehTooltip.hideTooltip);
    $('.tooltip').trigger('mouseout');
    $(el).removeClass('seh-tooltip-sticky');
};
 
$(document).ready(function () {
    $('.tooltip').each(function () {
        // attach events
        $(this).mouseover(sehTooltip.showTooltip);
        $(this).mouseout(sehTooltip.hideTooltip);
        $(this).mousemove(sehTooltip.moveTooltip);
        $(document).click(sehTooltip.toggleSticky);
    });
});