Відмінності між версіями «MediaWiki:Common.js»

Матеріал з Київський університет імені Бориса Грінченки
Перейти до: навігація, пошук
(Створена сторінка: /* Reset italic styling set by user agent */ cite, dfn { font-style: inherit; } Straight quote marks for <q>: q { quotes: '"' '"' "'" "'"; } /* A...)
 
 
Рядок 1: Рядок 1:
/* Reset italic styling set by user agent */
+
/**
cite, dfn {
+
* Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
    font-style: inherit;
+
* loaded for all users on every wiki page. If possible create a gadget that is
}
+
* enabled by default instead of adding it here (since gadgets are fully
 +
* optimized ResourceLoader modules with possibility to add dependencies etc.)
 +
*
 +
* Since Common.js isn't a gadget, there is no place to declare its
 +
* dependencies, so we have to lazy load them with mw.loader.using on demand and
 +
* then execute the rest in the callback. In most cases these dependencies will
 +
* be loaded (or loading) already and the callback will not be delayed. In case a
 +
* dependency hasn't arrived yet it'll make sure those are loaded before this.
 +
*/
  
/* Straight quote marks for <q> */
+
/* global mw, $ */
q {
+
/* jshint strict:false, browser:true */
    quotes: '"' '"' "'" "'";
+
}
+
  
/* Avoid collision of blockquote with floating elements by swapping margin and padding */
+
mw.loader.using( ['mediawiki.user', 'mediawiki.util', 'mediawiki.notify', 'jquery.client'] ).done( function () {
blockquote {
+
/* Begin of mw.loader.using callback */
    overflow: hidden;
+
    margin: 1em 0;
+
    padding: 0 40px;
+
}
+
  
/* Prevent the 'double bold' bug in Firefox when using DirectWrite */
+
/**
strong.selflink {
+
* Main Page layout fixes
     font-weight: 700;
+
*
 +
* Description: Adds an additional link to the complete list of languages available.
 +
* Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
 +
*/
 +
if ( mw.config.get( 'wgPageName' ) === 'Main_Page' || mw.config.get( 'wgPageName' ) === 'Talk:Main_Page' ) {
 +
     $( function () {
 +
        mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
 +
            'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias' );
 +
    } );
 
}
 
}
  
/* Consistent size for <sub> and <sup> */
+
/**
.mw-body sub,
+
* Redirect User:Name/skin.js and skin.css to the current skin's pages
.mw-body sup,
+
* (unless the 'skin' page really exists)
span.reference /* for Parsoid */ {
+
* @source: http://www.mediawiki.org/wiki/Snippets/Redirect_skin.js
     font-size: 80%;
+
* @rev: 2
 +
*/
 +
if ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
 +
    var titleParts = mw.config.get( 'wgPageName' ).split( '/' );
 +
    /* Make sure there was a part before and after the slash
 +
      and that the latter is 'skin.js' or 'skin.css' */
 +
     if ( titleParts.length == 2 ) {
 +
        var userSkinPage = titleParts.shift() + '/' + mw.config.get( 'skin' );
 +
        if ( titleParts.slice( -1 ) == 'skin.js' ) {
 +
            window.location.href = mw.util.getUrl( userSkinPage + '.js' );
 +
        } else if ( titleParts.slice( -1 ) == 'skin.css' ) {
 +
            window.location.href = mw.util.getUrl( userSkinPage + '.css' );
 +
        }
 +
    }
 
}
 
}
  
/* Main page fixes */
+
/**
#interwiki-completelist {
+
* Map addPortletLink to mw.util
    font-weight: bold;
+
* @deprecated: Use mw.util.addPortletLink instead.
}
+
*/
body.page-Main_Page #ca-delete {
+
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );
    display: none !important;
+
}
+
body.page-Main_Page #mp-topbanner {
+
    clear: both;
+
}
+
  
/* Reduce page jumps by hiding collapsed/dismissed content */
+
/**
.client-js .mw-special-Watchlist #watchlist-message,
+
* Extract a URL parameter from the current URL
.client-js .collapsible.collapsed > tbody > tr:not(:first-child) {
+
* @deprecated: Use mw.util.getParamValue with proper escaping
    display: none;
+
*/
}
+
mw.log.deprecate( window, 'getURLParamValue', mw.util.getParamValue, 'Use mw.util.getParamValue instead' );
  
/* Tone down 'Changed since last visit' colors */
+
/**
span.updatedmarker {
+
* Test if an element has a certain class
     background-color: transparent;
+
* @deprecated:  Use $(element).hasClass() instead.
    color: #006400;
+
*/
}
+
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
 +
     return $( element ).hasClass( className );
 +
}, 'Use jQuery.hasClass() instead' );
  
/* Edit window toolbar */
+
/**
#toolbar {
+
* @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
    height: 22px;
+
* @rev 6
     margin-bottom: 6px;
+
*/
}
+
var extraCSS = mw.util.getParamValue( 'withCSS' ),
 +
     extraJS = mw.util.getParamValue( 'withJS' );
  
/* Hide charinsert base for those not using the gadget */
+
if ( extraCSS ) {
#editpage-specialchars {
+
    if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
     display: none;
+
        mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
 +
     } else {
 +
        mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
 +
    }
 
}
 
}
  
/* Highlight linked elements (such as clicked references) in blue */
+
if ( extraJS ) {
body.action-info :target,
+
     if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
.citation:target {
+
        mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
     background-color: #DEF;  /* Fallback */
+
     } else {
    background-color: rgba(0, 127, 255, 0.133);
+
        mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
}
+
 
+
/* Styling for citations. Breaks long urls, etc., rather than overflowing box */
+
.citation {
+
     word-wrap: break-word;
+
}
+
 
+
/* For linked citation numbers and document IDs, where the number need not be shown
+
  on a screen or a handheld, but should be included in the printed version */
+
@media screen, handheld {
+
    .citation .printonly {
+
        display: none;
+
 
     }
 
     }
 
}
 
}
  
/* Make the list of references smaller */
+
/**
ol.references,
+
* Import more specific scripts if necessary
div.reflist,
+
*/
div.refbegin {
+
if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' || mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
     font-size: 90%;            /* Default font-size */
+
     /* scripts specific to editing pages */
     margin-bottom: 0.5em;
+
     mw.loader.load( '/w/index.php?title=MediaWiki:Common.js/edit.js&action=raw&ctype=text/javascript' );
}
+
} else if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ) {
div.refbegin-100 {
+
     /* watchlist scripts */
     font-size: 100%;          /* Option for normal fontsize in {{refbegin}} */
+
    mw.loader.load( '/w/index.php?title=MediaWiki:Common.js/watchlist.js&action=raw&ctype=text/javascript' );
}
+
div.reflist ol.references {
+
    font-size: 100%;          /* Reset font-size when nested in div.reflist */
+
    list-style-type: inherit; /* Enable custom list style types */
+
 
}
 
}
  
/* Ensure refs in table headers and the like aren't bold or italic */
+
/**
sup.reference {
+
* WikiMiniAtlas
     font-weight: normal;
+
*
     font-style: normal;
+
* Description: WikiMiniAtlas is a popup click and drag world map.
}
+
*              This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
 +
*             The script itself is located on meta because it is used by many projects.
 +
*              See [[Meta:WikiMiniAtlas]] for more information.
 +
* Maintainers: [[User:Dschwen]]
 +
*/
 +
( function () {
 +
     var require_wikiminiatlas = false;
 +
     var coord_filter = /geohack/;
 +
    $( function () {
 +
        $( 'a.external.text' ).each( function( key, link ) {
 +
            if ( link.href && coord_filter.exec( link.href ) ) {
 +
                require_wikiminiatlas = true;
 +
                // break from loop
 +
                return false;
 +
            }
 +
        } );
 +
        if ( $( 'div.kmldata' ).length ) {
 +
            require_wikiminiatlas = true;
 +
        }
 +
        if ( require_wikiminiatlas ) {
 +
            mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
 +
        }
 +
    } );
 +
} )();
  
/* Allow hidden ref errors to be shown by user CSS */
+
/**
span.brokenref {
+
* Collapsible tables
    display: none;
+
*
}
+
* Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
 
+
*
/* Reset top margin for lists embedded in columns */
+
* @version 2.0.3 (2014-03-14)
div.columns {
+
* @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
    margin-top: 0.3em;
+
* @author [[User:R. Koot]]
}
+
* @author [[User:Krinkle]]
div.columns dl,
+
* @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
div.columns ol,
+
* is supported in MediaWiki core.
div.columns ul {
+
    margin-top: 0;
+
}
+
 
+
/* Avoid elements from breaking between columns */
+
.nocolbreak,
+
div.columns li,
+
div.columns dd dd {
+
    -webkit-column-break-inside: avoid;
+
    page-break-inside: avoid;
+
    break-inside: avoid-column;
+
}
+
 
+
/* Style for [[Template:Flowlist]] that Lets lists flow around floating objecs */
+
.flowlist ul {
+
    overflow-x: hidden;
+
    margin-left: 0;
+
    padding-left: 1.6em;
+
}
+
.flowlist ol {
+
    overflow-x: hidden;
+
    margin-left: 0;
+
    padding-left: 3.2em;
+
}
+
.flowlist dl {
+
    overflow-x: hidden;
+
}
+
 
+
/* Style for horizontal lists (separator following item).
+
  @source mediawiki.org/wiki/Snippets/Horizontal_lists
+
  @revision 8 (2016-05-21)
+
  @author [[User:Edokter]]
+
 
  */
 
  */
.hlist dl,
 
.hlist ol,
 
.hlist ul {
 
    margin: 0;
 
    padding: 0;
 
}
 
/* Display list items inline */
 
.hlist dd,
 
.hlist dt,
 
.hlist li {
 
    margin: 0;
 
    display: inline;
 
}
 
/* Display nested lists inline */
 
.hlist.inline,
 
.hlist.inline dl,
 
.hlist.inline ol,
 
.hlist.inline ul,
 
.hlist dl dl, .hlist dl ol, .hlist dl ul,
 
.hlist ol dl, .hlist ol ol, .hlist ol ul,
 
.hlist ul dl, .hlist ul ol, .hlist ul ul {
 
    display: inline;
 
}
 
/* Hide empty list items */
 
.hlist .mw-empty-li {
 
    display: none;
 
}
 
/* Generate interpuncts */
 
.hlist dt:after {
 
    content: ": ";
 
}
 
.hlist dd:after,
 
.hlist li:after {
 
    content: " · ";
 
    font-weight: bold;
 
}
 
.hlist dd:last-child:after,
 
.hlist dt:last-child:after,
 
.hlist li:last-child:after {
 
    content: none;
 
}
 
/* Add parentheses around nested lists */
 
.hlist dd dd:first-child:before, .hlist dd dt:first-child:before, .hlist dd li:first-child:before,
 
.hlist dt dd:first-child:before, .hlist dt dt:first-child:before, .hlist dt li:first-child:before,
 
.hlist li dd:first-child:before, .hlist li dt:first-child:before, .hlist li li:first-child:before {
 
    content: " (";
 
    font-weight: normal;
 
}
 
.hlist dd dd:last-child:after, .hlist dd dt:last-child:after, .hlist dd li:last-child:after,
 
.hlist dt dd:last-child:after, .hlist dt dt:last-child:after, .hlist dt li:last-child:after,
 
.hlist li dd:last-child:after, .hlist li dt:last-child:after, .hlist li li:last-child:after {
 
    content: ")";
 
    font-weight: normal;
 
}
 
/* Put ordinals in front of ordered list items */
 
.hlist ol {
 
    counter-reset: listitem;
 
}
 
.hlist ol > li {
 
    counter-increment: listitem;
 
}
 
.hlist ol > li:before {
 
    content: " " counter(listitem) "\a0";
 
}
 
.hlist dd ol > li:first-child:before,
 
.hlist dt ol > li:first-child:before,
 
.hlist li ol > li:first-child:before {
 
    content: " (" counter(listitem) "\a0";
 
}
 
  
/* Unbulleted lists */
+
var autoCollapse = 2;
.plainlist ol,
+
var collapseCaption = 'hide';
.plainlist ul {
+
var expandCaption = 'show';
    line-height: inherit;
+
var tableIndex = 0;
    list-style: none none;
+
    margin: 0;
+
}
+
.plainlist ol li,
+
.plainlist ul li {
+
    margin-bottom: 0;
+
}
+
  
/* Default style for navigation boxes */
+
function collapseTable( tableIndex ) {
.navbox {                     /* Navbox container style */
+
     var Button = document.getElementById( 'collapseButton' + tableIndex );
     border: 1px solid #aaa;
+
     var Table = document.getElementById( 'collapsibleTable' + tableIndex );
    width: 100%;
+
    margin: auto;
+
    clear: both;
+
    font-size: 88%;
+
    text-align: center;
+
    padding: 1px;
+
}
+
.navbox-inner,
+
.navbox-subgroup {
+
    width: 100%;
+
}
+
.navbox-group,
+
.navbox-title,
+
.navbox-abovebelow {
+
     padding: 0.25em 1em;      /* Title, group and above/below styles */
+
    line-height: 1.5em;
+
    text-align: center;
+
}
+
th.navbox-group {            /* Group style */
+
    white-space: nowrap;
+
    /* @noflip */
+
    text-align: right;
+
}
+
.navbox,
+
.navbox-subgroup {
+
    background: #fdfdfd;      /* Background color */
+
}
+
.navbox-list {
+
    line-height: 1.5em;
+
    border-color: #fdfdfd;    /* Must match background color */
+
}
+
.navbox th,
+
.navbox-title {
+
    background: #ccccff;      /* Level 1 color */
+
}
+
.navbox-abovebelow,
+
th.navbox-group,
+
.navbox-subgroup .navbox-title {
+
    background: #ddddff;      /* Level 2 color */
+
}
+
.navbox-subgroup .navbox-group,
+
.navbox-subgroup .navbox-abovebelow {
+
    background: #e6e6ff;      /* Level 3 color */
+
}
+
.navbox-even {
+
    background: #f7f7f7;      /* Even row striping */
+
}
+
.navbox-odd {
+
    background: transparent;  /* Odd row striping */
+
}
+
table.navbox {
+
    margin-top: 1em;          /* Prevent preceding content from clinging to navboxes */
+
}
+
table.navbox table.navbox {
+
    margin-top: 0;            /* No top margin for nested navboxes */
+
}
+
table.navbox + table.navbox {
+
    margin-top: -1px;         /* Single pixel border between adjacent navboxes */
+
}
+
.navbox .hlist td dl,
+
.navbox .hlist td ol,
+
.navbox .hlist td ul,
+
.navbox td.hlist dl,
+
.navbox td.hlist ol,
+
.navbox td.hlist ul {
+
    padding: 0.125em 0;      /* Adjust hlist padding in navboxes */
+
}
+
  
/* Default styling for Navbar template */
+
     if ( !Table || !Button ) {
.navbar {
+
        return false;
     display: inline;
+
     }
    font-size: 88%;
+
    font-weight: normal;
+
}
+
.navbar ul {
+
    display: inline;
+
     white-space: nowrap;
+
}
+
.mw-body-content .navbar ul {
+
    line-height: inherit;
+
}
+
.navbar li {
+
    word-spacing: -0.125em;
+
}
+
.navbar.mini li abbr[title] {
+
  font-variant: small-caps;
+
  border-bottom: none;
+
  text-decoration: none;
+
  cursor: inherit;
+
}
+
/* Navbar styling when nested in infobox and navbox */
+
.infobox .navbar {
+
    font-size: 100%;
+
}
+
.navbox .navbar {
+
    display: block;
+
    font-size: 100%;
+
}
+
.navbox-title .navbar {
+
    /* @noflip */
+
    float: left;
+
    /* @noflip */
+
    text-align: left;
+
    /* @noflip */
+
    margin-right: 0.5em;
+
    width: 6em;
+
}
+
  
/* 'show'/'hide' buttons created dynamically by the CollapsibleTables javascript
+
     var Rows = Table.rows;
  in [[MediaWiki:Common.js]] are styled here so they can be customised. */
+
     var i;
.collapseButton {
+
     var $row0 = $(Rows[0]);
     /* @noflip */
+
    float: right;
+
    font-weight: normal;
+
    /* @noflip */
+
    margin-left: 0.5em;
+
     /* @noflip */
+
    text-align: right;
+
     width: auto;
+
}
+
/* In navboxes, the show/hide button balances the v·d·e links
+
  from [[Template:Navbar]], so they need to be the same width. */
+
.navbox .collapseButton {
+
    width: 6em;
+
}
+
  
/* Styling for JQuery makeCollapsible, matching that of collapseButton */
+
    if ( Button.firstChild.data === collapseCaption ) {
.mw-collapsible-toggle {
+
        for ( i = 1; i < Rows.length; i++ ) {
    font-weight: normal;
+
            Rows[i].style.display = 'none';
    /* @noflip */
+
        }
     text-align: right;
+
        Button.firstChild.data = expandCaption;
}
+
     } else {
.navbox .mw-collapsible-toggle {
+
        for ( i = 1; i < Rows.length; i++ ) {
     width: 6em;
+
            Rows[i].style.display = $row0.css( 'display' );
 +
        }
 +
        Button.firstChild.data = collapseCaption;
 +
     }
 
}
 
}
  
/* Infobox template style */
+
function createClickHandler( tableIndex ) {
.infobox {
+
     return function ( e ) {
     border: 1px solid #aaa;
+
        e.preventDefault();
    border-spacing: 3px;
+
        collapseTable( tableIndex );
    background-color: #f9f9f9;
+
     };
    color: black;
+
    /* @noflip */
+
    margin: 0.5em 0 0.5em 1em;
+
    padding: 0.2em;
+
    /* @noflip */
+
    float: right;
+
    /* @noflip */
+
    clear: right;
+
    font-size: 88%;
+
    line-height: 1.5em;
+
}
+
.infobox caption {
+
    font-size: 125%;
+
    font-weight: bold;
+
    padding: 0.2em;
+
}
+
.infobox td,
+
.infobox th {
+
    vertical-align: top;
+
     /* @noflip */
+
    text-align: left;
+
}
+
.infobox.bordered {
+
    border-collapse: collapse;
+
}
+
.infobox.bordered td,
+
.infobox.bordered th {
+
    border: 1px solid #aaa;
+
}
+
.infobox.bordered .borderless td,
+
.infobox.bordered .borderless th {
+
    border: 0;
+
 
}
 
}
  
.infobox.sisterproject {
+
function createCollapseButtons( $content ) {
     width: 20em;
+
     var NavigationBoxes = {};
     font-size: 90%;
+
     var $Tables = $content.find( 'table' );
}
+
    var i;
  
.infobox.standard-talk {
+
     $Tables.each( function( i, table ) {
     border: 1px solid #c0c090;
+
        if ( $(table).hasClass( 'collapsible' ) ) {
    background-color: #f8eaba;
+
}
+
.infobox.standard-talk.bordered td,
+
.infobox.standard-talk.bordered th {
+
    border: 1px solid #c0c090;
+
}
+
  
/* styles for bordered infobox with merged rows */
+
            /* only add button and increment count if there is a header row to work with */
.infobox.bordered .mergedtoprow td,
+
            var HeaderRow = table.getElementsByTagName( 'tr' )[0];
.infobox.bordered .mergedtoprow th {
+
            if ( !HeaderRow ) {
    border: 0;
+
                return;
    border-top: 1px solid #aaa;
+
            }
    /* @noflip */
+
            var Header = table.getElementsByTagName( 'th' )[0];
    border-right: 1px solid #aaa;
+
            if ( !Header ) {
}
+
                return;
 +
            }
  
.infobox.bordered .mergedrow td,
+
            NavigationBoxes[ tableIndex ] = table;
.infobox.bordered .mergedrow th {
+
            table.setAttribute( 'id', 'collapsibleTable' + tableIndex );
    border: 0;
+
    /* @noflip */
+
    border-right: 1px solid #aaa;
+
}
+
  
/* Styles for geography infoboxes, eg countries,
+
            var Button    = document.createElement( 'span' );
  country subdivisions, cities, etc.           */
+
            var ButtonLink = document.createElement( 'a' );
.infobox.geography {
+
            var ButtonText = document.createTextNode( collapseCaption );
    border-collapse: collapse;
+
            // Styles are declared in [[MediaWiki:Common.css]]
    line-height: 1.2em;
+
            Button.className = 'collapseButton';
    font-size: 90%;
+
}
+
  
.infobox.geography  td,
+
            ButtonLink.style.color = Header.style.color;
.infobox.geography  th {
+
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
    border-top: 1px solid #aaa;
+
            ButtonLink.setAttribute( 'href', '#' );
    padding: 0.4em 0.6em 0.4em 0.6em;
+
            $( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
}
+
            ButtonLink.appendChild( ButtonText );
.infobox.geography .mergedtoprow td,
+
.infobox.geography .mergedtoprow th {
+
    border-top: 1px solid #aaa;
+
    padding: 0.4em 0.6em 0.2em 0.6em;
+
}
+
  
.infobox.geography .mergedrow td,
+
            Button.appendChild( document.createTextNode( '[' ) );
.infobox.geography .mergedrow th {
+
            Button.appendChild( ButtonLink );
    border: 0;
+
            Button.appendChild( document.createTextNode( ']' ) );
    padding: 0 0.6em 0.2em 0.6em;
+
}
+
  
.infobox.geography .mergedbottomrow td,
+
            Header.insertBefore( Button, Header.firstChild );
.infobox.geography .mergedbottomrow th {
+
            tableIndex++;
    border-top: 0;
+
        }
    border-bottom: 1px solid #aaa;
+
     } );
     padding: 0 0.6em 0.4em 0.6em;
+
}
+
  
.infobox.geography .maptable td,
+
    for ( i = 0;  i < tableIndex; i++ ) {
.infobox.geography .maptable th {
+
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
    border: 0;
+
            ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
    padding: 0;
+
        ) {
 +
            collapseTable( i );
 +
        }
 +
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
 +
            var element = NavigationBoxes[i];
 +
            while ((element = element.parentNode)) {
 +
                if ( $( element ).hasClass( 'outercollapse' ) ) {
 +
                    collapseTable ( i );
 +
                    break;
 +
                }
 +
            }
 +
        }
 +
    }
 
}
 
}
  
/* Normal font styling for table row headers with scope="row" tag */
+
mw.hook( 'wikipage.content' ).add( createCollapseButtons );
.wikitable.plainrowheaders th[scope=row] {
+
    font-weight: normal;
+
    /* @noflip */
+
    text-align: left;
+
}
+
  
/* Lists in data cells are always left-aligned */
+
/**
.wikitable td ul,
+
* Dynamic Navigation Bars (experimental)
.wikitable td ol,
+
*
.wikitable td dl {
+
* Description: See [[Wikipedia:NavFrame]].
    /* @noflip */
+
* Maintainers: UNMAINTAINED
    text-align: left;
+
*/
}
+
/* ...unless they also use the hlist class */
+
.toc.hlist ul,
+
#toc.hlist ul,
+
.wikitable.hlist td ul,
+
.wikitable.hlist td ol,
+
.wikitable.hlist td dl {
+
    text-align: inherit;
+
}
+
  
/* Icons for medialist templates [[Template:Listen]],
+
/* set up the words in your language */
  [[Template:Multi-listen_start]], [[Template:Video]],
+
var NavigationBarHide = '[' + collapseCaption + ']';
  [[Template:Multi-video_start]] */
+
var NavigationBarShow = '[' + expandCaption + ']';
div.listenlist {
+
var indexNavigationBar = 0;
    background: url("//upload.wikimedia.org/wikipedia/commons/4/47/Sound-icon.svg") no-repeat scroll 0 0 transparent;
+
    background-size: 30px;
+
    padding-left: 40px;
+
}
+
  
/* Fix for hieroglyphs specificality issue in infoboxes ([[Phabricator:43869]]) */
+
/**
table.mw-hiero-table td {
+
* Shows and hides content and picture (if available) of navigation bars
     vertical-align: middle;
+
* Parameters:
}
+
*    indexNavigationBar: the index of navigation bar to be toggled
 +
**/
 +
window.toggleNavigationBar = function ( indexNavigationBar, event ) {
 +
     var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
 +
    var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
 +
    var NavChild;
  
/* Style rules for media list templates */
+
     if ( !NavFrame || !NavToggle ) {
div.medialist {
+
        return false;
     min-height: 50px;
+
     }
    margin: 1em;
+
    /* @noflip */
+
    background-position: top left;
+
    background-repeat: no-repeat;
+
}
+
div.medialist ul {
+
    list-style-type: none;
+
     list-style-image: none;
+
    margin: 0;
+
}
+
div.medialist ul li {
+
    padding-bottom: 0.5em;
+
}
+
div.medialist ul li li {
+
    font-size: 91%;
+
    padding-bottom: 0;
+
}
+
  
/* Change the external link icon to an Adobe icon for all PDF files
+
    /* if shown now */
  in browsers that support these CSS selectors, like Mozilla and Opera */
+
    if ( NavToggle.firstChild.data === NavigationBarHide ) {
div#content a[href$=".pdf"].external,
+
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
div#content a[href*=".pdf?"].external,
+
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
div#content a[href*=".pdf#"].external,
+
                NavChild.style.display = 'none';
div#content a[href$=".PDF"].external,
+
            }
div#content a[href*=".PDF?"].external,
+
        }
div#content a[href*=".PDF#"].external,
+
     NavToggle.firstChild.data = NavigationBarShow;
div#mw_content a[href$=".pdf"].external,
+
div#mw_content a[href*=".pdf?"].external,
+
div#mw_content a[href*=".pdf#"].external,
+
div#mw_content a[href$=".PDF"].external,
+
div#mw_content a[href*=".PDF?"].external,
+
div#mw_content a[href*=".PDF#"].external {
+
     background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right;
+
    /* @noflip */
+
    padding-right: 18px;
+
}
+
  
/* Change the external link icon to an Adobe icon anywhere the PDFlink class
+
    /* if hidden now */
  is used (notably Template:PDFlink). This works in IE, unlike the above. */
+
    } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
div#content span.PDFlink a,
+
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
div#mw_content span.PDFlink a {
+
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
    background: url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") no-repeat right;
+
                NavChild.style.display = 'block';
    /* @noflip */
+
            }
    padding-right: 18px;
+
        }
}
+
        NavToggle.firstChild.data = NavigationBarHide;
 +
    }
  
/* Content in columns with CSS instead of tables ([[Template:Columns]]) */
+
    event.preventDefault();
div.columns-2 div.column {
+
};
    /* @noflip */
+
    float: left;
+
    width: 50%;
+
    min-width: 300px;
+
}
+
div.columns-3 div.column {
+
    /* @noflip */
+
    float: left;
+
    width: 33.3%;
+
    min-width: 200px;
+
}
+
div.columns-4 div.column {
+
    /* @noflip */
+
    float: left;
+
    width: 25%;
+
    min-width: 150px;
+
}
+
div.columns-5 div.column {
+
    /* @noflip */
+
    float: left;
+
    width: 20%;
+
    min-width: 120px;
+
}
+
  
/* Messagebox templates */
+
/* adds show/hide-button to navigation bars */
.messagebox {
+
function createNavigationBarToggleButton( $content ) {
    border: 1px solid #aaa;
+
     var NavChild;
    background-color: #f9f9f9;
+
     /* iterate over all < div >-elements */
    width: 80%;
+
     var $divs = $content.find( 'div' );
    margin: 0 auto 1em auto;
+
     $divs.each( function ( i, NavFrame ) {
    padding: .2em;
+
        /* if found a navigation bar */
}
+
        if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
.messagebox.merge {
+
    border: 1px solid #c0b8cc;
+
    background-color: #f0e5ff;
+
    text-align: center;
+
}
+
.messagebox.cleanup {
+
    border: 1px solid #9f9fff;
+
    background-color: #efefff;
+
    text-align: center;
+
}
+
.messagebox.standard-talk {
+
    border: 1px solid #c0c090;
+
    background-color: #f8eaba;
+
    margin: 4px auto;
+
}
+
/* For old WikiProject banners inside banner shells. */
+
.mbox-inside .standard-talk,
+
.messagebox.nested-talk {
+
     border: 1px solid #c0c090;
+
    background-color: #f8eaba;
+
    width: 100%;
+
    margin: 2px 0;
+
    padding: 2px;
+
}
+
.messagebox.small {
+
    width: 238px;
+
    font-size: 85%;
+
     /* @noflip */
+
     float: right;
+
     clear: both;
+
    /* @noflip */
+
    margin: 0 0 1em 1em;
+
    line-height: 1.25em;
+
}
+
.messagebox.small-talk {
+
    width: 238px;
+
    font-size: 85%;
+
    /* @noflip */
+
    float: right;
+
    clear: both;
+
    /* @noflip */
+
    margin: 0 0 1em 1em;
+
    line-height: 1.25em;
+
    background: #F8EABA;
+
}
+
  
/* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
+
            indexNavigationBar++;
th.mbox-text, td.mbox-text {  /* The message body cell(s) */
+
            var NavToggle = document.createElement( 'a' );
    border: none;
+
            NavToggle.className = 'NavToggle';
    /* @noflip */
+
            NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
    padding: 0.25em 0.9em;     /* 0.9em left/right */
+
            NavToggle.setAttribute( 'href', '#' );
    width: 100%;              /* Make all mboxes the same width regardless of text length */
+
            $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
}
+
td.mbox-image {                /* The left image cell */
+
    border: none;
+
    /* @noflip */
+
    padding: 2px 0 2px 0.9em;  /* 0.9em left, 0px right */
+
    text-align: center;
+
}
+
td.mbox-imageright {          /* The right image cell */
+
    border: none;
+
    /* @noflip */
+
    padding: 2px 0.9em 2px 0;  /* 0px left, 0.9em right */
+
    text-align: center;
+
}
+
td.mbox-empty-cell {          /* An empty narrow cell */
+
    border: none;
+
    padding: 0;
+
    width: 1px;
+
}
+
  
/* Article message box styles */
+
            var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
table.ambox {
+
            /**
    margin: 0 10%;                  /* 10% = Will not overlap with other elements */
+
            * Check if any children are already hidden. This loop is here for backwards compatibility:
    border: 1px solid #aaa;
+
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
    /* @noflip */
+
            * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
    border-left: 10px solid #1e90ff; /* Default "notice" blue */
+
            * the content visible without JavaScript support), the new recommended way is to add the class
    background: #fbfbfb;
+
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
}
+
            */
table.ambox + table.ambox {     /* Single border between stacked boxes. */
+
            for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
    margin-top: -1px;
+
                if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
}
+
                    if ( NavChild.style.display === 'none' ) {
.ambox th.mbox-text,
+
                        isCollapsed = true;
.ambox td.mbox-text {            /* The message body cell(s) */
+
                    }
    padding: 0.25em 0.5em;       /* 0.5em left/right */
+
                }
}
+
            }
.ambox td.mbox-image {           /* The left image cell */
+
            if ( isCollapsed ) {
    /* @noflip */
+
                for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
    padding: 2px 0 2px 0.5em;    /* 0.5em left, 0px right */
+
                    if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
}
+
                        NavChild.style.display = 'none';
.ambox td.mbox-imageright {      /* The right image cell */
+
                    }
    /* @noflip */
+
                }
    padding: 2px 0.5em 2px 0;   /* 0px left, 0.5em right */
+
            }
}
+
            var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
 +
            NavToggle.appendChild( NavToggleText );
  
table.ambox-notice {
+
            /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
    /* @noflip */
+
            for( var j = 0; j < NavFrame.childNodes.length; j++ ) {
    border-left: 10px solid #1e90ff;   /* Blue */
+
                if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
}
+
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
table.ambox-speedy {
+
                    NavFrame.childNodes[j].appendChild( NavToggle );
    /* @noflip */
+
                }
    border-left: 10px solid #b22222;    /* Red */
+
            }
    background: #fee;                  /* Pink */
+
            NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
}
+
        }
table.ambox-delete {
+
     } );
    /* @noflip */
+
    border-left: 10px solid #b22222;   /* Red */
+
}
+
table.ambox-content {
+
    /* @noflip */
+
    border-left: 10px solid #f28500;   /* Orange */
+
}
+
table.ambox-style {
+
    /* @noflip */
+
    border-left: 10px solid #f4c430;    /* Yellow */
+
}
+
table.ambox-move {
+
    /* @noflip */
+
    border-left: 10px solid #9932cc;   /* Purple */
+
}
+
table.ambox-protection {
+
     /* @noflip */
+
    border-left: 10px solid #bba;       /* Gray-gold */
+
 
}
 
}
  
/* Image message box styles */
+
mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );
table.imbox {
+
    margin: 4px 10%;
+
    border-collapse: collapse;
+
    border: 3px solid #1e90ff;    /* Default "notice" blue */
+
    background: #fbfbfb;
+
}
+
.imbox .mbox-text .imbox {  /* For imboxes inside imbox-text cells. */
+
    margin: 0 -0.5em;      /* 0.9 - 0.5 = 0.4em left/right.        */
+
    display: block;        /* Fix for webkit to force 100% width.  */
+
}
+
.mbox-inside .imbox {      /* For imboxes inside other templates.  */
+
    margin: 4px;
+
}
+
 
+
table.imbox-notice {
+
    border: 3px solid #1e90ff;    /* Blue */
+
}
+
table.imbox-speedy {
+
    border: 3px solid #b22222;    /* Red */
+
    background: #fee;            /* Pink */
+
}
+
table.imbox-delete {
+
    border: 3px solid #b22222;    /* Red */
+
}
+
table.imbox-content {
+
    border: 3px solid #f28500;    /* Orange */
+
}
+
table.imbox-style {
+
    border: 3px solid #f4c430;    /* Yellow */
+
}
+
table.imbox-move {
+
    border: 3px solid #9932cc;    /* Purple */
+
}
+
table.imbox-protection {
+
    border: 3px solid #bba;      /* Gray-gold */
+
}
+
table.imbox-license {
+
    border: 3px solid #88a;      /* Dark gray */
+
    background: #f7f8ff;          /* Light gray */
+
}
+
table.imbox-featured {
+
    border: 3px solid #cba135;    /* Brown-gold */
+
}
+
 
+
/* Category message box styles */
+
table.cmbox {
+
    margin: 3px 10%;
+
    border-collapse: collapse;
+
    border: 1px solid #aaa;
+
    background: #DFE8FF;    /* Default "notice" blue */
+
}
+
 
+
table.cmbox-notice {
+
    background: #D8E8FF;    /* Blue */
+
}
+
table.cmbox-speedy {
+
    margin-top: 4px;
+
    margin-bottom: 4px;
+
    border: 4px solid #b22222;    /* Red */
+
    background: #FFDBDB;          /* Pink */
+
}
+
table.cmbox-delete {
+
    background: #FFDBDB;    /* Red */
+
}
+
table.cmbox-content {
+
    background: #FFE7CE;    /* Orange */
+
}
+
table.cmbox-style {
+
    background: #FFF9DB;    /* Yellow */
+
}
+
table.cmbox-move {
+
    background: #E4D8FF;    /* Purple */
+
}
+
table.cmbox-protection {
+
    background: #EFEFE1;    /* Gray-gold */
+
}
+
 
+
/* Other pages message box styles */
+
table.ombox {
+
    margin: 4px 10%;
+
    border-collapse: collapse;
+
    border: 1px solid #aaa;      /* Default "notice" gray */
+
    background: #f9f9f9;
+
}
+
 
+
table.ombox-notice {
+
    border: 1px solid #aaa;      /* Gray */
+
}
+
table.ombox-speedy {
+
    border: 2px solid #b22222;    /* Red */
+
    background: #fee;            /* Pink */
+
}
+
table.ombox-delete {
+
    border: 2px solid #b22222;    /* Red */
+
}
+
table.ombox-content {
+
    border: 1px solid #f28500;    /* Orange */
+
}
+
table.ombox-style {
+
    border: 1px solid #f4c430;    /* Yellow */
+
}
+
table.ombox-move {
+
    border: 1px solid #9932cc;    /* Purple */
+
}
+
table.ombox-protection {
+
    border: 2px solid #bba;      /* Gray-gold */
+
}
+
 
+
/* Talk page message box styles */
+
table.tmbox {
+
    margin: 4px 10%;
+
    border-collapse: collapse;
+
    border: 1px solid #c0c090;    /* Default "notice" gray-brown */
+
    background: #f8eaba;
+
}
+
.mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" class ensures that */
+
    margin: 2px 0;              /* this declaration overrides other styles (including mbox-small above)  */
+
    width: 100%;                /* For Safari and Opera */
+
}
+
.mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when  */
+
    line-height: 1.5em;          /* also "nested", so reset styles that are  */
+
    font-size: 100%;            /* set in "mbox-small" above.                */
+
}
+
 
+
table.tmbox-speedy {
+
    border: 2px solid #b22222;    /* Red */
+
    background: #fee;            /* Pink */
+
}
+
table.tmbox-delete {
+
    border: 2px solid #b22222;    /* Red */
+
}
+
table.tmbox-content {
+
    border: 2px solid #f28500;    /* Orange */
+
}
+
table.tmbox-style {
+
    border: 2px solid #f4c430;    /* Yellow */
+
}
+
table.tmbox-move {
+
    border: 2px solid #9932cc;    /* Purple */
+
}
+
table.tmbox-protection,
+
table.tmbox-notice {
+
    border: 1px solid #c0c090;    /* Gray-brown */
+
}
+
 
+
/* Disambig and set index box styles */
+
table.dmbox {
+
    clear: both;
+
    margin: 0.9em 1em;
+
    border-top: 1px solid #ccc;
+
    border-bottom: 1px solid #ccc;
+
    background: transparent;
+
}
+
 
+
/* Footer and header message box styles */
+
table.fmbox {
+
    clear: both;
+
    margin: 0.2em 0;
+
    width: 100%;
+
    border: 1px solid #aaa;
+
    background: #f9f9f9;    /* Default "system" gray */
+
}
+
table.fmbox-system {
+
    background: #f9f9f9;
+
}
+
table.fmbox-warning {
+
    border: 1px solid #bb7070;  /* Dark pink */
+
    background: #ffdbdb;        /* Pink */
+
}
+
table.fmbox-editnotice {
+
    background: transparent;
+
}
+
/* Div based "warning" style fmbox messages. */
+
div.mw-warning-with-logexcerpt,
+
div.mw-lag-warn-high,
+
div.mw-cascadeprotectedwarning,
+
div#mw-protect-cascadeon,
+
div.titleblacklist-warning,
+
div.locked-warning {
+
    clear: both;
+
    margin: 0.2em 0;
+
    border: 1px solid #bb7070;
+
    background: #ffdbdb;
+
    padding: 0.25em 0.9em;
+
}
+
/* Div based "system" style fmbox messages.
+
  Used in [[MediaWiki:Readonly lag]]. */
+
div.mw-lag-warn-normal,
+
div.fmbox-system {
+
    clear: both;
+
    margin: 0.2em 0;
+
    border: 1px solid #aaa;
+
    background: #f9f9f9;
+
    padding: 0.25em 0.9em;
+
}
+
 
+
/* These mbox-small classes must be placed after all other
+
  ambox/tmbox/ombox etc classes. "body.mediawiki" is so
+
  they override "table.ambox + table.ambox" above. */
+
body.mediawiki table.mbox-small {  /* For the "small=yes" option. */
+
    /* @noflip */
+
    clear: right;
+
    /* @noflip */
+
    float: right;
+
    /* @noflip */
+
    margin: 4px 0 4px 1em;
+
    width: 238px;
+
    font-size: 88%;
+
    line-height: 1.25em;
+
}
+
body.mediawiki table.mbox-small-left {  /* For the "small=left" option. */
+
    /* @noflip */
+
    margin: 4px 1em 4px 0;
+
    width: 238px;
+
    border-collapse: collapse;
+
    font-size: 88%;
+
    line-height: 1.25em;
+
}
+
 
+
/* Style for compact ambox */
+
/* Hide the images */
+
.compact-ambox table .mbox-image,
+
.compact-ambox table .mbox-imageright,
+
.compact-ambox table .mbox-empty-cell {
+
    display: none;
+
}
+
/* Remove borders, backgrounds, padding, etc. */
+
.compact-ambox table.ambox {
+
    border: none;
+
    border-collapse: collapse;
+
    background: transparent;
+
    margin: 0 0 0 1.6em !important;
+
    padding: 0 !important;
+
    width: auto;
+
    display: block;
+
}
+
body.mediawiki .compact-ambox table.mbox-small-left {
+
    font-size: 100%;
+
    width: auto;
+
    margin: 0;
+
}
+
/* Style the text cell as a list item and remove its padding */
+
.compact-ambox table .mbox-text {
+
    padding: 0 !important;
+
    margin: 0 !important;
+
}
+
.compact-ambox table .mbox-text-span {
+
    display: list-item;
+
    line-height: 1.5em;
+
    list-style-type: square;
+
    list-style-image: url(/w/skins/MonoBook/bullet.gif);
+
}
+
.skin-vector .compact-ambox table .mbox-text-span {
+
    list-style-type: disc;
+
    list-style-image: url(/w/skins/Vector/images/bullet-icon.svg);
+
    list-style-image: url(/w/skins/Vector/images/bullet-icon.png)\9;
+
}
+
/* Allow for hiding text in compact form */
+
.compact-ambox .hide-when-compact {
+
    display: none;
+
}
+
 
+
/* Remove default styles for [[MediaWiki:Noarticletext]]. */
+
div.noarticletext {
+
    border: none;
+
    background: transparent;
+
    padding: 0;
+
}
+
 
+
/* Hide (formatting) elements from screen, but not from screenreaders */
+
.visualhide {
+
    position: absolute;
+
    left: -10000px;
+
    top: auto;
+
    width: 1px;
+
    height: 1px;
+
    overflow: hidden;
+
}
+
 
+
/* Bold save button */
+
#wpSave {
+
    font-weight: bold;
+
}
+
 
+
/* class hiddenStructure is defunct. See [[Wikipedia:hiddenStructure]] */
+
.hiddenStructure {
+
    display: inline !important;
+
    color: #f00;
+
    background-color: #0f0;
+
}
+
 
+
/* suppress missing interwiki image links where #ifexist cannot
+
  be used due to high number of requests see .hidden-redlink on
+
  [[m:MediaWiki:Common.css]] */
+
.check-icon a.new {
+
    display: none;
+
    speak: none;
+
}
+
 
+
/* Removes underlines from certain links */
+
.nounderlines a,
+
.IPA a:link, .IPA a:visited {
+
    text-decoration: none !important;
+
}
+
 
+
/* Standard Navigationsleisten, aka box hiding thingy
+
  from .de.  Documentation at [[Wikipedia:NavFrame]]. */
+
div.NavFrame {
+
    margin: 0;
+
    padding: 4px;
+
    border: 1px solid #aaa;
+
    text-align: center;
+
    border-collapse: collapse;
+
    font-size: 95%;
+
}
+
div.NavFrame + div.NavFrame {
+
    border-top-style: none;
+
    border-top-style: hidden;
+
}
+
div.NavPic {
+
    background-color: #fff;
+
    margin: 0;
+
    padding: 2px;
+
    /* @noflip */
+
    float: left;
+
}
+
div.NavFrame div.NavHead {
+
    line-height: 1.6em;
+
    font-weight: bold;
+
    background-color: #ccf;
+
    position: relative;
+
}
+
div.NavFrame p,
+
div.NavFrame div.NavContent,
+
div.NavFrame div.NavContent p {
+
    font-size: 100%;
+
}
+
div.NavEnd {
+
    margin: 0;
+
    padding: 0;
+
    line-height: 1px;
+
    clear: both;
+
}
+
a.NavToggle {
+
    position: absolute;
+
    top: 0;
+
    /* @noflip */
+
    right: 3px;
+
    font-weight: normal;
+
    font-size: 90%;
+
}
+
 
+
/* Hatnotes and disambiguation notices */
+
.hatnote {
+
    font-style: italic;
+
}
+
.hatnote i {
+
    font-style: normal;
+
}
+
div.hatnote {
+
    /* @noflip */
+
    padding-left: 1.6em;
+
    margin-bottom: 0.5em;
+
}
+
div.hatnote + div.hatnote {
+
    margin-top: -0.5em;
+
}
+
 
+
/* Allow transcluded pages to display in lists rather than a table. */
+
.listify td    { display: list-item; }
+
.listify tr    { display: block; }
+
.listify table { display: block; }
+
 
+
/* Geographical coordinates defaults. See [[Template:Coord/link]]
+
  for how these are used. The classes "geo", "longitude", and
+
  "latitude" are used by the [[Geo microformat]]. */
+
.geo-default, .geo-dms, .geo-dec  { display: inline; }
+
.geo-nondefault, .geo-multi-punct { display: none; }
+
.longitude, .latitude            { white-space: nowrap; }
+
 
+
/* Temporary(!) fix for horizontal TOC in Blink (Chrone/Opera) */
+
.hlist .tocnumber,
+
.hlist .toctext {
+
    display: inline;
+
}
+
/* When <div class="nonumtoc"> is used on the table of contents,
+
  the ToC will display without numbers */
+
.nonumtoc .tocnumber {
+
    display: none;
+
}
+
.nonumtoc #toc ul,
+
.nonumtoc .toc ul {
+
    line-height: 1.5em;
+
    list-style: none none;
+
    margin: .3em 0 0;
+
    padding: 0;
+
}
+
.hlist.nonumtoc #toc ul ul,
+
.hlist.nonumtoc .toc ul ul {
+
    /* @noflip */
+
    margin: 0;
+
}
+
 
+
/* Allow limiting of which header levels are shown in a TOC;
+
  <div class="toclimit-3">, for instance, will limit to
+
  showing ==headings== and ===headings=== but no further
+
  (as long as there are no =headings= on the page, which
+
  there shouldn't be according to the MoS). */
+
.toclimit-2 .toclevel-1 ul,
+
.toclimit-3 .toclevel-2 ul,
+
.toclimit-4 .toclevel-3 ul,
+
.toclimit-5 .toclevel-4 ul,
+
.toclimit-6 .toclevel-5 ul,
+
.toclimit-7 .toclevel-6 ul {
+
    display: none;
+
}
+
 
+
/* Styling for Template:Quote */
+
blockquote.templatequote div.templatequotecite {
+
    line-height: 1.5em;
+
    /* @noflip */
+
    text-align: left;
+
    /* @noflip */
+
    padding-left: 1.6em;
+
    margin-top: 0;
+
}
+
 
+
/* User block messages */
+
div.user-block {
+
    padding: 5px;
+
    margin-bottom: 0.5em;
+
    border: 1px solid #A9A9A9;
+
    background-color: #FFEFD5;
+
}
+
 
+
/* Prevent line breaks in silly places:
+
  1) Where desired
+
  2) Links when we don't want them to
+
  3) Bold "links" to the page itself
+
  4) Ref tags with group names <ref group="Note"> --> "[Note 1]" */
+
.nowrap,
+
.nowraplinks a,
+
.nowraplinks .selflink,
+
sup.reference a {
+
    white-space: nowrap;
+
}
+
.nowrap pre {
+
    white-space: pre;
+
}
+
/* But allow wrapping where desired: */
+
.wrap,
+
.wraplinks a {
+
    white-space: normal;
+
}
+
 
+
/* For template documentation */
+
.template-documentation {
+
    clear: both;
+
    margin: 1em 0 0 0;
+
    border: 1px solid #aaa;
+
    background-color: #ecfcf4;
+
    padding: 1em;
+
}
+
 
+
/* Increase the height of the image upload box */
+
#wpUploadDescription {
+
    height: 13em;
+
}
+
 
+
/* Minimum thumb width */
+
.thumbinner {
+
    min-width: 100px;
+
}
+
 
+
/* Makes the background of a framed image white instead of gray.
+
  Only visible with transparent images. */
+
div.thumb .thumbimage {
+
    background-color: #fff;
+
}
+
 
+
/* The backgrounds for galleries. */
+
div#content .gallerybox div.thumb {
+
    /* Light gray padding */
+
    background-color: #F9F9F9;
+
}
+
/* Put a chequered background behind images, only visible if they have transparency.
+
  '.filehistory a img' and '#file img:hover' are handled by MediaWiki core (as of 1.19) */
+
.gallerybox .thumb img {
+
    background: #fff url(//upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png) repeat;
+
}
+
/* But not on articles, user pages, portals or with opt-out. */
+
.ns-0 .gallerybox .thumb img,
+
.ns-2 .gallerybox .thumb img,
+
.ns-100 .gallerybox .thumb img,
+
.nochecker .gallerybox .thumb img {
+
    background: #fff;
+
}
+
 
+
/* Prevent floating boxes from overlapping any category listings,
+
  file histories, edit previews, and edit [Show changes] views. */
+
#mw-subcategories, #mw-pages, #mw-category-media,
+
#filehistory, #wikiPreview, #wikiDiff {
+
    clear: both;
+
}
+
 
+
body.rtl #mw-articlefeedbackv5, body.rtl #mw-articlefeedback {
+
    display: block;  /* Override inline block mode */
+
    margin-bottom: 1em;
+
    /* @noflip */
+
    clear: right;    /* Clear any info boxes that stick out */
+
    /* @noflip */
+
    float: right;    /* Prevents margin collapsing */
+
}
+
 
+
/* Selectively hide headers in WikiProject banners */
+
.wpb .wpb-header            { display: none; }
+
.wpbs-inner .wpb .wpb-header { display: block; }    /* for IE */
+
.wpbs-inner .wpb .wpb-header { display: table-row; } /* for real browsers */
+
.wpbs-inner .wpb-outside    { display: none; }      /* hide things that should only display outside shells */
+
 
+
/* Styling for Abuse Filter tags */
+
.mw-tag-markers {
+
    font-style:italic;
+
    font-size:90%;
+
}
+
 
+
/* Hide stuff meant for accounts with special permissions. Made visible again in
+
  [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-accountcreator.css]],
+
  [[MediaWiki:Group-templateeditor.css]], [[MediaWiki:Group-extendedmover.css]] and [[Mediawiki:Group-autoconfirmed.css]]. */
+
.sysop-show,
+
.accountcreator-show,
+
.templateeditor-show,
+
.extendedmover-show,
+
.autoconfirmed-show {
+
    display: none;
+
}
+
  
 
/**
 
/**
  * Hide the redlink generated by {{Editnotice}},
+
  * Uploadwizard_newusers
  * this overrides the ".sysop-show { display: none; }" above that applies
+
  * Switches in a message for non-autoconfirmed users at [[Wikipedia:Upload]]
* to the same link as well.
+
 
  *
 
  *
  * See [[Phabricator:45013]].
+
  * Maintainers: [[User:Krimpet]]
 
  */
 
  */
.ve-ui-mwNoticesPopupTool-item .editnotice-redlink, .mw-ve-editNotice .editnotice-redlink {
+
function uploadwizard_newusers() {
     display: none !important;
+
     if ( mw.config.get( 'wgNamespaceNumber' ) === 4 && mw.config.get( 'wgTitle' ) === 'Upload' && mw.config.get( 'wgAction' ) === 'view' ) {
}
+
        var oldDiv = document.getElementById( 'autoconfirmedusers' ),
 
+
            newDiv = document.getElementById( 'newusers' );
/* Remove bullets when there are multiple edit page warnings */
+
        if ( oldDiv && newDiv ) {
ul.permissions-errors > li {
+
            var userGroups = mw.config.get( 'wgUserGroups' );
    list-style: none none;
+
            if ( userGroups ) {
}
+
                for ( var i = 0; i < userGroups.length; i++ ) {
ul.permissions-errors {
+
                    if ( userGroups[i] === 'autoconfirmed' ) {
    margin: 0;
+
                        oldDiv.style.display = 'block';
}
+
                        newDiv.style.display = 'none';
 
+
                        return;
/* No linewrap on the labels of the login/signup page */
+
                    }
body.page-Special_UserLogin .mw-label label,
+
                }
body.page-Special_UserLogin_signup .mw-label label {
+
            }
    white-space: nowrap;
+
            oldDiv.style.display = 'none';
}
+
            newDiv.style.display = 'block';
 
+
            return;
/* Pie chart: transparent borders */
+
        }
.transborder {
+
    border: solid transparent;
+
}
+
 
+
/* Generic class for Times-based serif, texhtml class for inline math */
+
.times-serif,
+
span.texhtml {
+
    font-family: "Nimbus Roman No9 L", "Times New Roman", Times, serif;
+
    font-size: 118%;
+
    line-height: 1;
+
}
+
span.texhtml {
+
    white-space: nowrap;
+
}
+
span.texhtml span.texhtml {
+
    font-size: 100%;
+
}
+
span.mwe-math-mathml-inline {
+
    font-size: 118%;
+
}
+
 
+
/* Force tabular and lining display for digits and texhtml */
+
.digits,
+
.texhtml {
+
    -moz-font-feature-settings: "lnum", "tnum", "kern" 0;
+
    -webkit-font-feature-settings: "lnum", "tnum", "kern" 0;
+
    font-feature-settings: "lnum", "tnum", "kern" 0;
+
    font-variant-numeric: lining-nums tabular-nums;
+
    font-kerning: none;
+
}
+
 
+
/* Make <math display="block"> be left aligned with one space indent for compatibility with style conventions */
+
.mwe-math-fallback-image-display,
+
.mwe-math-mathml-display {
+
    margin-left: 1.6em !important;
+
    margin-top: 0.6em;
+
    margin-bottom: 0.6em;
+
}
+
.mwe-math-mathml-display math {
+
    display: inline;
+
}
+
 
+
/* Fix styling of transcluded prefindex tables */
+
table#mw-prefixindex-list-table,
+
table#mw-prefixindex-nav-table {
+
    width: 98%;
+
}
+
 
+
/* For portals, added 2011-12-07 -bv
+
  On wide screens, show these as two columns
+
  On narrow and mobile screens, let them collapse into a single column */
+
.portal-column-left {
+
    float: left;
+
    width: 50%;
+
}
+
.portal-column-right {
+
    float: right;
+
    width: 49%;
+
}
+
.portal-column-left-wide {
+
    float: left;
+
    width: 60%;
+
}
+
.portal-column-right-narrow {
+
    float: right;
+
    width: 39%;
+
}
+
.portal-column-left-extra-wide {
+
    float: left;
+
    width: 70%;
+
}
+
.portal-column-right-extra-narrow {
+
    float: right;
+
    width: 29%;
+
}
+
@media only screen and (max-width: 800px) {
+
    /* Decouple the columns on narrow screens */
+
    .portal-column-left,
+
    .portal-column-right,
+
    .portal-column-left-wide,
+
    .portal-column-right-narrow,
+
    .portal-column-left-extra-wide,
+
    .portal-column-right-extra-narrow {
+
        float: inherit;
+
        width: inherit;
+
 
     }
 
     }
 
}
 
}
  
/* Formerly for announcements, now used intermittently */
+
$(uploadwizard_newusers);
#bodyContent .letterhead {
+
    background-image:url('//upload.wikimedia.org/wikipedia/commons/e/e0/Tan-page-corner.png');
+
    background-repeat:no-repeat;
+
    padding: 2em;
+
    background-color: #faf9f2;
+
}
+
  
/* Tree style lists */
+
/**
.treeview ul {
+
* Magic editintros ****************************************************
    padding: 0;
+
*
    margin: 0;
+
* Description: Adds editintros on disambiguation pages and BLP pages.
}
+
* Maintainers: [[User:RockMFR]]
.treeview li {
+
*/
    padding: 0;
+
function addEditIntro( name ) {
    margin: 0;
+
     $( '.mw-editsection, #ca-edit' ).find( 'a' ).each( function ( i, el ) {
    list-style-type: none;
+
        el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
    list-style-image: none;
+
     } );
}
+
.treeview li li {
+
     background: url("//upload.wikimedia.org/wikipedia/commons/f/f2/Treeview-grey-line.png") no-repeat 0 -2981px;
+
    /* @noflip */
+
    padding-left: 20px;
+
    text-indent: 0.3em;
+
}
+
.treeview li li.lastline {
+
     background-position: 0 -5971px
+
}
+
.treeview li.emptyline > ul {
+
    /* @noflip */
+
    margin-left: -1px;
+
}
+
.treeview li.emptyline > ul > li:first-child {
+
    background-position: 0 9px
+
 
}
 
}
  
/* hidden sortkey for tablesorter */
+
if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
td .sortkey,
+
     $( function () {
th .sortkey {
+
        if ( document.getElementById( 'disambigbox' ) ) {
     display: none;
+
            addEditIntro( 'Template:Disambig_editintro' );
    speak: none;
+
        }
}
+
    } );
  
/* Make it possible to hide checkboxes in <inputbox> */
+
    $( function () {
.inputbox-hidecheckboxes form .inputbox-element {
+
        var cats = mw.config.get('wgCategories');
    display: none !important;
+
        if ( !cats ) {
 +
            return;
 +
        }
 +
        if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
 +
            addEditIntro( 'Template:BLP_editintro' );
 +
        }
 +
    } );
 
}
 
}
  
/* Work-around for [[Phabricator:25965]] (Kaltura advertisement) */
+
/* End of mw.loader.using callback */
.k-player .k-attribution {
+
} );
    visibility: hidden;
+
/* DO NOT ADD CODE BELOW THIS LINE */
}
+
 
+
/* Move 'play' button of video player to bottom left corner */
+
.PopUpMediaTransform a .play-btn-large {
+
    margin: 0;
+
    top: auto;
+
    right: auto;
+
    bottom: 0;
+
    left: 0;
+
}
+
 
+
/* Workaround to keep editnotices readable in VE view.
+
  Long term, editnotices should become a core feature so that they can be designed responsive. */
+
.mw-ve-editNotice .mbox-image {
+
    display: none;
+
}
+

Поточна версія на 14:57, 30 травня 2016

/**
 * Keep code in MediaWiki:Common.js to a minimum as it is unconditionally
 * loaded for all users on every wiki page. If possible create a gadget that is
 * enabled by default instead of adding it here (since gadgets are fully
 * optimized ResourceLoader modules with possibility to add dependencies etc.)
 *
 * Since Common.js isn't a gadget, there is no place to declare its
 * dependencies, so we have to lazy load them with mw.loader.using on demand and
 * then execute the rest in the callback. In most cases these dependencies will
 * be loaded (or loading) already and the callback will not be delayed. In case a
 * dependency hasn't arrived yet it'll make sure those are loaded before this.
 */

/* global mw, $ */
/* jshint strict:false, browser:true */

mw.loader.using( ['mediawiki.user', 'mediawiki.util', 'mediawiki.notify', 'jquery.client'] ).done( function () {
/* Begin of mw.loader.using callback */

/**
 * Main Page layout fixes
 *
 * Description: Adds an additional link to the complete list of languages available.
 * Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]]
 */
if ( mw.config.get( 'wgPageName' ) === 'Main_Page' || mw.config.get( 'wgPageName' ) === 'Talk:Main_Page' ) {
    $( function () {
        mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/List_of_Wikipedias',
            'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias' );
    } );
}

/**
 * Redirect User:Name/skin.js and skin.css to the current skin's pages
 * (unless the 'skin' page really exists)
 * @source: http://www.mediawiki.org/wiki/Snippets/Redirect_skin.js
 * @rev: 2
 */
if ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
    var titleParts = mw.config.get( 'wgPageName' ).split( '/' );
    /* Make sure there was a part before and after the slash
       and that the latter is 'skin.js' or 'skin.css' */
    if ( titleParts.length == 2 ) {
        var userSkinPage = titleParts.shift() + '/' + mw.config.get( 'skin' );
        if ( titleParts.slice( -1 ) == 'skin.js' ) {
            window.location.href = mw.util.getUrl( userSkinPage + '.js' );
        } else if ( titleParts.slice( -1 ) == 'skin.css' ) {
            window.location.href = mw.util.getUrl( userSkinPage + '.css' );
        }
    }
}

/**
 * Map addPortletLink to mw.util
 * @deprecated: Use mw.util.addPortletLink instead.
 */
mw.log.deprecate( window, 'addPortletLink', mw.util.addPortletLink, 'Use mw.util.addPortletLink instead' );

/**
 * Extract a URL parameter from the current URL
 * @deprecated: Use mw.util.getParamValue with proper escaping
 */
mw.log.deprecate( window, 'getURLParamValue', mw.util.getParamValue, 'Use mw.util.getParamValue instead' );

/**
 * Test if an element has a certain class
 * @deprecated:  Use $(element).hasClass() instead.
 */
mw.log.deprecate( window, 'hasClass', function ( element, className ) {
    return $( element ).hasClass( className );
}, 'Use jQuery.hasClass() instead' );

/**
 * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
 * @rev 6
 */
var extraCSS = mw.util.getParamValue( 'withCSS' ),
    extraJS = mw.util.getParamValue( 'withJS' );

if ( extraCSS ) {
    if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
        mw.loader.load( '/w/index.php?title=' + extraCSS + '&action=raw&ctype=text/css', 'text/css' );
    } else {
        mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' } );
    }
}

if ( extraJS ) {
    if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
        mw.loader.load( '/w/index.php?title=' + extraJS + '&action=raw&ctype=text/javascript' );
    } else {
        mw.notify( 'Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' } );
    }
}

/**
 * Import more specific scripts if necessary
 */
if ( mw.config.get( 'wgAction' ) === 'edit' || mw.config.get( 'wgAction' ) === 'submit' || mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
    /* scripts specific to editing pages */
    mw.loader.load( '/w/index.php?title=MediaWiki:Common.js/edit.js&action=raw&ctype=text/javascript' );
} else if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ) {
    /* watchlist scripts */
    mw.loader.load( '/w/index.php?title=MediaWiki:Common.js/watchlist.js&action=raw&ctype=text/javascript' );
}

/**
 * WikiMiniAtlas
 *
 * Description: WikiMiniAtlas is a popup click and drag world map.
 *              This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
 *              The script itself is located on meta because it is used by many projects.
 *              See [[Meta:WikiMiniAtlas]] for more information.
 * Maintainers: [[User:Dschwen]]
 */
( function () {
    var require_wikiminiatlas = false;
    var coord_filter = /geohack/;
    $( function () {
        $( 'a.external.text' ).each( function( key, link ) {
            if ( link.href && coord_filter.exec( link.href ) ) {
                require_wikiminiatlas = true;
                // break from loop
                return false;
            }
        } );
        if ( $( 'div.kmldata' ).length ) {
            require_wikiminiatlas = true;
        }
        if ( require_wikiminiatlas ) {
            mw.loader.load( '//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript' );
        }
    } );
} )();

/**
 * Collapsible tables
 *
 * Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
 *
 * @version 2.0.3 (2014-03-14)
 * @source https://www.mediawiki.org/wiki/MediaWiki:Gadget-collapsibleTables.js
 * @author [[User:R. Koot]]
 * @author [[User:Krinkle]]
 * @deprecated Since MediaWiki 1.20: Use class="mw-collapsible" instead which
 * is supported in MediaWiki core.
 */

var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';
var tableIndex = 0;

function collapseTable( tableIndex ) {
    var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );

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

    var Rows = Table.rows;
    var i;
    var $row0 = $(Rows[0]);

    if ( Button.firstChild.data === collapseCaption ) {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = 'none';
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = $row0.css( 'display' );
        }
        Button.firstChild.data = collapseCaption;
    }
}

function createClickHandler( tableIndex ) {
    return function ( e ) {
        e.preventDefault();
        collapseTable( tableIndex );
    };
}

function createCollapseButtons( $content ) {
    var NavigationBoxes = {};
    var $Tables = $content.find( 'table' );
    var i;

    $Tables.each( function( i, table ) {
        if ( $(table).hasClass( 'collapsible' ) ) {

            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = table.getElementsByTagName( 'tr' )[0];
            if ( !HeaderRow ) {
                return;
            }
            var Header = table.getElementsByTagName( 'th' )[0];
            if ( !Header ) {
                return;
            }

            NavigationBoxes[ tableIndex ] = table;
            table.setAttribute( 'id', 'collapsibleTable' + tableIndex );

            var Button     = document.createElement( 'span' );
            var ButtonLink = document.createElement( 'a' );
            var ButtonText = document.createTextNode( collapseCaption );
            // Styles are declared in [[MediaWiki:Common.css]]
            Button.className = 'collapseButton';

            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', createClickHandler( tableIndex ) );
            ButtonLink.appendChild( ButtonText );

            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( ']' ) );

            Header.insertBefore( Button, Header.firstChild );
            tableIndex++;
        }
    } );

    for ( i = 0;  i < tableIndex; i++ ) {
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) ||
            ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) )
        ) {
            collapseTable( i );
        }
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    collapseTable ( i );
                    break;
                }
            }
        }
    }
}

mw.hook( 'wikipage.content' ).add( createCollapseButtons );

/**
 * Dynamic Navigation Bars (experimental)
 *
 * Description: See [[Wikipedia:NavFrame]].
 * Maintainers: UNMAINTAINED
 */

/* set up the words in your language */
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';
var indexNavigationBar = 0;

/**
 * Shows and hides content and picture (if available) of navigation bars
 * Parameters:
 *     indexNavigationBar: the index of navigation bar to be toggled
 **/
window.toggleNavigationBar = function ( indexNavigationBar, event ) {
    var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
    var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
    var NavChild;

    if ( !NavFrame || !NavToggle ) {
        return false;
    }

    /* if shown now */
    if ( NavToggle.firstChild.data === NavigationBarHide ) {
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
                NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;

    /* if hidden now */
    } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
                NavChild.style.display = 'block';
            }
        }
        NavToggle.firstChild.data = NavigationBarHide;
    }

    event.preventDefault();
};

/* adds show/hide-button to navigation bars */
function createNavigationBarToggleButton( $content ) {
    var NavChild;
    /* iterate over all < div >-elements */
    var $divs = $content.find( 'div' );
    $divs.each( function ( i, NavFrame ) {
        /* if found a navigation bar */
        if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {

            indexNavigationBar++;
            var NavToggle = document.createElement( 'a' );
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
            NavToggle.setAttribute( 'href', '#' );
            $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );

            var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
            /**
             * Check if any children are already hidden.  This loop is here for backwards compatibility:
             * the old way of making NavFrames start out collapsed was to manually add style="display:none"
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
             * the content visible without JavaScript support), the new recommended way is to add the class
             * "collapsed" to the NavFrame itself, just like with collapsible tables.
             */
            for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
                if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
                    if ( NavChild.style.display === 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if ( isCollapsed ) {
                for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
                    if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
            NavToggle.appendChild( NavToggleText );

            /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */
            for( var j = 0; j < NavFrame.childNodes.length; j++ ) {
                if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    NavFrame.childNodes[j].appendChild( NavToggle );
                }
            }
            NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
        }
    } );
}

mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );

/**
 * Uploadwizard_newusers
 * Switches in a message for non-autoconfirmed users at [[Wikipedia:Upload]]
 *
 * Maintainers: [[User:Krimpet]]
 */
function uploadwizard_newusers() {
    if ( mw.config.get( 'wgNamespaceNumber' ) === 4 && mw.config.get( 'wgTitle' ) === 'Upload' && mw.config.get( 'wgAction' ) === 'view' ) {
        var oldDiv = document.getElementById( 'autoconfirmedusers' ),
            newDiv = document.getElementById( 'newusers' );
        if ( oldDiv && newDiv ) {
            var userGroups = mw.config.get( 'wgUserGroups' );
            if ( userGroups ) {
                for ( var i = 0; i < userGroups.length; i++ ) {
                    if ( userGroups[i] === 'autoconfirmed' ) {
                        oldDiv.style.display = 'block';
                        newDiv.style.display = 'none';
                        return;
                    }
                }
            }
            oldDiv.style.display = 'none';
            newDiv.style.display = 'block';
            return;
        }
    }
}

$(uploadwizard_newusers);

/**
 * Magic editintros ****************************************************
 *
 * Description: Adds editintros on disambiguation pages and BLP pages.
 * Maintainers: [[User:RockMFR]]
 */
function addEditIntro( name ) {
    $( '.mw-editsection, #ca-edit' ).find( 'a' ).each( function ( i, el ) {
        el.href = $( this ).attr( 'href' ) + '&editintro=' + name;
    } );
}

if ( mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
    $( function () {
        if ( document.getElementById( 'disambigbox' ) ) {
            addEditIntro( 'Template:Disambig_editintro' );
        }
    } );

    $( function () {
        var cats = mw.config.get('wgCategories');
        if ( !cats ) {
            return;
        }
        if ( $.inArray( 'Living people', cats ) !== -1 || $.inArray( 'Possibly living people', cats ) !== -1 ) {
            addEditIntro( 'Template:BLP_editintro' );
        }
    } );
}

/* End of mw.loader.using callback */
} );
/* DO NOT ADD CODE BELOW THIS LINE */