User:Cheese/monobook.js

From Pandora Wiki
< User:Cheese
Revision as of 18:01, 18 July 2010 by Cheese (talk | contribs) (New page: Any JavaScript here will be loaded for all users on every page load.: /* Test if an element has a certain class ************************************** * Note: this is straight out ...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/* Any JavaScript here will be loaded for all users on every page load. */


/* Test if an element has a certain class **************************************
 * Note: this is straight out of Wikipedia's Common.js (http://en.wikipedia.org/wiki/MediaWiki:Common.js)
 */

var hasClass = (function () {
    var reCache = {};
    return function (element, className) {
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
    };
})();


/** Hideable notes  *********************************************************
 * This is based off of code from Wikipedia's Common.js (http://en.wikipedia.org/wiki/MediaWiki:Common.js)
 */

function showNotes( spanIndex )
{
    var Button = document.getElementById( "showNoteLink" + spanIndex );
    var Span = document.getElementById( "showNotes" + spanIndex );

    if (!Span || !Button) 
    {
        return false;
    }

    if (Button.firstChild.data == "[show]")
    {
        Span.style.display = "inline";
        Button.firstChild.data = " [hide]";
    }
    else
    {
        Span.style.display = "none";
        Button.firstChild.data = "[show]";
    }
}

function createShowNotesLinks()
{
    var spanIndex = 0;
    var Spans = document.getElementsByTagName( "span" );
    var CurrentSpan = new Object();

    for ( var i = 0; i < Spans.length; i++ ) 
    {
        if ( hasClass( Spans[i], "hiddenNotes" ) ) 
        {
            CurrentSpan = Spans[i];
            CurrentSpan.setAttribute( "id", "showNotes" + spanIndex );

            var Button     = document.createElement( "span" );
            var ButtonLink = document.createElement( "a" );
            var ButtonText = document.createTextNode( "[show]" );

            ButtonLink.setAttribute( "id", "showNoteLink" + spanIndex );
            ButtonLink.setAttribute( "href", "#" );
            addHandler( ButtonLink,  "click", new Function( "evt", "showNotes(" + spanIndex + " ); return killEvt( evt );") );
            ButtonLink.appendChild( ButtonText );

            Button.appendChild(document.createTextNode( " " ));
            Button.appendChild(ButtonLink);

            CurrentSpan.parentNode.insertBefore( Button, CurrentSpan.nextSibling );
            CurrentSpan.style.display="none";

            spanIndex++;
        }
    }
}

addonloadHook( createShowNotesLinks );