MédiaWiki:Common.js

Ti Wikicutatan basa Sunda, rohangan cutatan bébas

Catet: Sanggeus nyimpen, anjeun kudu narabas singgahan panyungsi anjeun pikeun nempo parobahanana.

  • Firefox/Safari: Tahan Shift bari ngaklik Reload, atawa pencét boh Ctrl-F5 atawa Ctrl-R (⌘-R dina Mac)
  • Google Chrome: Pencét Ctrl-Shift-R (⌘-Shift-R dina Mac)
  • Internet Explorer: Tahan Ctrl bari ngaklik Refresh, atawa pencét Ctrl-F5
  • Opera: Indit ka Menu → Settings (Opera → Preferences di Mac) tuluy ka Privacy & security → Clear browsing data → Cached images and files.
/*jslint browser: true, vars: true, plusplus:true */
/*globals mw, $, importStylesheet, importScript*/
"use strict";
/**
 
 JavaScript nu aya di dieu dipaké ku sakabéh kulit.

**/
// START OF LEGACY WRAPPER
// mw.loader.using('mediawiki.legacy.ajax').done(function () {

/** MainPageTransform  ************************************************
  *
  *  Deskripsi:  Menghilangkan judul [[Halaman Utama]] dan mengganti nama tab.
  *  Pemelihara: -
  */
var mpTitle = "Tepas";
var isMainPage = (mw.config.get('wgIsMainPage') === true);
var isDiff = (document.location.search && (
    document.location.search.indexOf("diff=") !== -1 ||
    document.location.search.indexOf("oldid=") !== -1 ||
    document.location.search.indexOf("action=history") !== -1
));
function mainPageTransform() {
    var mpContentEl = document.getElementById("bodyContent"),
        mpBrowseEl = document.getElementById("EnWpMpBrowse"),
        mpContainEl = document.getElementById("EnWpMpBrowseContainer"),
        mpMarginEl = document.getElementById("EnWpMpMargin"),
        mpEl = document.getElementById("EnWpMainPage"),
        mpMinWidth = 700;
    if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl) {
        return;
    }
    if (mpContentEl.offsetWidth < mpMinWidth) {
        mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild);
        mpBrowseEl.className = "EnWpMpBrowseBottom";
        mpMarginEl.style.marginRight = 0;
    } else if (mpContentEl.offsetWidth > mpMinWidth) {
        mpEl.insertBefore(mpBrowseEl, mpEl.firstChild);
        mpBrowseEl.className = "EnWpMpBrowseRight";
        mpMarginEl.style.marginRight = "13.8em";
    }
}
if (isMainPage && !isDiff && (mw.config.get('wgCanonicalNamespace') !== 'Special')) {
    mw.util.addCSS(' #siteSub, #contentSub, h1.firstHeading { display: none!important; } #content, #content div.thumb, #p-cactions li a, #p-cactions li a:hover, #p-cactions li.selected a { background: #fff!important; }');
    $(mainPageTransform);
    if (window.addEventListener) {
        window.addEventListener("resize", mainPageTransform, false);
    } else if (window.attachEvent) {
        window.attachEvent("onresize", mainPageTransform);
    }
}

/** Sembunyikan tombol daftar  ************************************************
  *
  *  Deskripsi:  Menyembunyikan tombol "Bergabung menjadi kontributor"
  *              di Halaman Utama.
  *  Pemulasara: Pengguna:Uchup19
  */
function hide_mp_signup() {
    if (isMainPage && (mw.config.get('wgUserName') !== null)) {
        $("#mp_signup_button").hide();
    }
}
$(hide_mp_signup);

/** Lowcase Title *******************************************************
  *
  *  Deskripsi:  Membuat judul halaman dengan huruf pertama kecil
  *              Lihat [[Templat:Judul]].
  *  Pemelihara: Admin
  */
function pTitle() {
    if (document.getElementById("title-override")) {
        var pTitleText = document.getElementById("pTitle").innerHTML;
        document.getElementsByTagName("h1")[0].innerHTML = pTitleText;
    }
}
if (mw.config.get("wgaction") !== "edit" || mw.config.get("wgaction") !== "submit") {
    mw.util.addCSS('#title-override {display: none; speak: none;}');
    $(document).ready(pTitle);
}

/** LinkFA & LinkGA *******************************************************
  *
  *  Deskripsi:  Menambahkan ikon bintang untuk interwiki ke artikel yang 
  *              merupakan artikel pilihan di wiki tujuan
  *              Lihat [[Templat:LinkFA]].
  *              Menambahkan ikon artikel bagus untuk interwiki ke artikel yang 
  *              merupakan artikel bagus di wiki tujuan
  *              Lihat [[Templat:LinkGA]].
  *  Pemelihara: Admin
  */
function LinkFA() {
    var i, className;
    if (document.getElementById('p-lang')) {
        var InterwikiLinks = document.getElementById('p-lang').getElementsByTagName('li');
        for (i = 0; i < InterwikiLinks.length; i++) {
            className = InterwikiLinks[i].className.match(/interwiki-[\-\w]+/);
            if (document.getElementById(className + '-fa')
                    && InterwikiLinks[i].className.indexOf('badge-featuredarticle') === -1) {
                InterwikiLinks[i].className += ' FA';
                InterwikiLinks[i].title = 'Ini adalah artikel pilihan dalam bahasa lain.';
            } else if (document.getElementById(className + '-ga')
                    && InterwikiLinks[i].className.indexOf('badge-goodarticle') === -1) {
                InterwikiLinks[i].className += ' GA';
                InterwikiLinks[i].title = 'Ini adalah artikel bagus dalam bahasa lain.';
            }
        }
    }
}
mw.hook('wikipage.content').add(LinkFA);

/** InterProject *******************************************************
  *
  *  Deskripsi:  Membuat pranala-pranala di menu samping (seperti interwiki)
  *              ke proyek-proyek Wikimedia yang lain
  *              Lihat [[Templat:Interproyek]].
  *  Pemelihara: Admin
  */
mw.util.addCSS('#interProyek {display: none; speak: none;}');
function iProject() {
    if (document.getElementById("interProyek")) {
        var iProjectText = '<div id="p-ipj"><h3>Proyek lain<\/h3><div class="body">' + $("#interProyek").html() + '</div></div>';
        $("#mw-panel").append(iProjectText);
        $("#p-ipj").addClass("portal");
        $("#p-ipj").addClass("expanded");
        $("#p-ipj").attr("role", "navigation");
    }
}
$(iProject);

/**
 * Collapsible tables *********************************************************
 *
 * Description: Allows tables to be collapsed, showing only the header. See
 *              [[Wikipedia:NavFrame]].
 * Maintainers: [[User:R. Koot]]
 */

var autoCollapse = 2;
var collapseCaption = 'kirutkeun';
var expandCaption = 'daraykeun';
window.collapseTable = function (tableIndex) {
    var collapseButton = document.getElementById('collapseButton' + tableIndex);
    var collapseTable = document.getElementById('collapsibleTable' + tableIndex);

    if (!collapseTable || !collapseButton) {
        return false;
    }

    var collapseRows = collapseTable.rows, i;

    if (collapseButton.firstChild.data === collapseCaption) {
        for (i = 1; i < collapseRows.length; i++) {
            collapseRows[i].style.display = 'none';
        }
        collapseButton.firstChild.data = expandCaption;
    } else {
        for (i = 1; i < collapseRows.length; i++) {
            collapseRows[i].style.display = collapseRows[0].style.display;
        }
        collapseButton.firstChild.data = collapseCaption;
    }
};

function createCollapseButtons() {
    var tableIndex = 0,
        NavigationBoxes = {},
        Tables = document.getElementsByTagName('table'),
        i, HeaderRow, Header, Button, ButtonLink, ButtonText;

    function handleButtonLink(index, e) {
        window.collapseTable(index);
        e.preventDefault();
    }

    for (i = 0; i < Tables.length; i++) {
        if ($(Tables[i]).hasClass('collapsible')) {
            /* only add button and increment count if there is a header row to work with */
            HeaderRow = Tables[i].getElementsByTagName('tr')[0];
            if (!HeaderRow) { continue; }
            Header = HeaderRow.getElementsByTagName('th')[0];
            if (!Header) { continue; }

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

            Button     = document.createElement('span');
            ButtonLink = document.createElement('a');
            ButtonText = document.createTextNode(collapseCaption);

            Button.className = 'collapseButton';  /* Styles are declared in Common.css */

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

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

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

$(createCollapseButtons);

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

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

/**
 * 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() {
    var indexNavigationBar = 0, NavFrame, NavChild, i, j, NavToggle, isCollapsed, NavToggleText;
    /* iterate over all < div >-elements */
    var divs = document.getElementsByTagName('div');
    for (i = 0; (NavFrame = divs[i]); i++) {
        /* if found a navigation bar */
        if ($(NavFrame).hasClass('NavFrame')) {

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

            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';
                    }
                }
            }
            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 (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);
        }
    }
}

$(createNavigationBarToggleButton);

/** Edittools *******************************************************
  *
  *  Deskripsi:  Kotak drop-down untuk menu karakter istimewa 
  *              di [[MediaWiki:Edittools]]
  *              Adaptasi dari:
  *              de.wikipedia.org/wiki/MediaWiki:Onlyifediting.js
  *              de.wiktionary.org/wiki/MediaWiki:Onlyifediting.js
  *              en.wiktionary.org/wiki/MediaWiki:Monobook.js
  *  Pemelihara: Admin
  */
// Helper function to move DOM element
function elementMoveto(node, refNode, pos) {
    if (node && refNode) {
        var parent = refNode.parentNode;
        if (pos && pos === 'after') { refNode = refNode.nextSibling; }
        try {
            parent.insertBefore(node, refNode);
        } catch (DOMException) {
            console.error(DOMException);
        }
    }
}

// CharSubset selection
function chooseCharSubset(s) {
    var specialchars = document.getElementById('specialchars');
    if (specialchars) {
        var l = specialchars.getElementsByTagName('p'), i;
        for (i = 0; i < l.length; i++) {
            l[i].style.display = (i === s) ? 'inline' : 'none';
            // l[i].style.visibility = i == s ? 'visible' : 'hidden';
        }
    }
}
$(chooseCharSubset);

// Menu insertion
function addCharSubsetMenu() {
    var specialchars = document.getElementById('specialchars');
    if (specialchars) {
        var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
        menu += "<option>Standar+Templat</option>";
        menu += "<option>IPA</option>";
        menu += "<option>Latin</option>";
        menu += "<option>Jawa+Jawa Kuna</option>";
        menu += "<option>Pinyin+Romaji</option>";
        menu += "<option>Arab</option>";
        menu += "<option>Ibrani</option>";
        menu += "<option>Sirilik</option>";
        menu += "<option>Yunani</option>";
        menu += "<option>Devanāgarī</option>";
        menu += "<option>Yiddish</option>";
        menu += "</select>";
        specialchars.innerHTML = menu + specialchars.innerHTML;

        // Standard-CharSubset
        chooseCharSubset(0);
    }
}
$(addCharSubsetMenu);
// Move the toolbar to the top
function fixToolbar() {
    var wpEditToolbar = document.getElementById("toolbar");
    var editTools = document.getElementById("specialchars");
    elementMoveto(editTools, wpEditToolbar, 'after');
    if (editTools) { editTools.style.display = "block"; }
    // var editspecialchars = document.getElementById("editpage-specialchars");
    elementMoveto(editTools, wpEditToolbar, 'after');
}
$(fixToolbar);


/** Stripe *******************************************************
  *  
  *  Deskripsi:  Membuat tabel berwarna latar berselang-seling
  *              Lihat [[Bantuan:Tabel]]
  *  Pemelihara: Admin
  */

function stripe() {
    // This function will add stripes to all tables that have the "wikitable-striped" class attribute.
    var tables = document.getElementsByTagName("table"), a, table, tbodies, b, even, trs, c;
    for (a = 0; a !== tables.length; a++) {
        table = tables[a];
        if (!table) { return; } // If there are no tables, abort.
        if (table.getAttribute("class") === "tabelcantik") {
            tbodies = table.getElementsByTagName("tbody");
            for (b = 0; b < tbodies.length; b++) {
                even = true; // We start with an even stripe.
                trs = tbodies[b].getElementsByTagName("tr");
                for (c = 0; c < trs.length; c++) {
                    if (even) {
                        trs[c].className += "even";
                    } else {
                        trs[c].className += "odd";
                    }
                    even = !even;
                }
            }
        } else if (table.getAttribute("class") === "tabelcantikcyan") {
            tbodies = table.getElementsByTagName("tbody");
            for (b = 0; b < tbodies.length; b++) {
                even = true; // We start with an even stripe.
                trs = tbodies[b].getElementsByTagName("tr");
                for (c = 0; c < trs.length; c++) {
                    if (even) {
                        trs[c].className += "evencyan";
                    } else {
                        trs[c].className += "oddcyan";
                    }
                    even = !even;
                }
            }
        } else if (table.getAttribute("class") === "tabelcantikmerah") {
            tbodies = table.getElementsByTagName("tbody");
            for (b = 0; b < tbodies.length; b++) {
                even = true; // We start with an even stripe.
                trs = tbodies[b].getElementsByTagName("tr");
                for (c = 0; c < trs.length; c++) {
                    if (even) {
                        trs[c].className += "evenmerah";
                    } else {
                        trs[c].className += "oddmerah";
                    }
                    even = !even;
                }
            }
        }
    }
}
// Perform the striping.
$(stripe);

/** Portlet tambahan *******************************************************
  * 
  *  Deskripsi:  Menambah tombol/portlet tambahan di halaman-halaman wiki
  *              
  *  Pemelihara: [[Pengguna:Kenrick95]]
  */
function addPL(PLplace, PLlink, PLtext, PLid, PLtitle) {
    var PLtempplace = PLplace;
    var PLinside = '<li id="' + PLid + '" title="' + PLtitle + '">'
        + '<a href="' + PLlink + '"> ' + PLtext + '</a>'
        + '</li>';
    $(PLtempplace).append(PLinside);
}

/** Portlet tambahan/Jumlah suntingan *******************************************************
  * 
  *  Deskripsi:  Menambah tombol/portlet tambahan berupa jumlah suntingan pengguna
  *              Letak: di bawah menu Konribusi di halaman pengguna
  *              
  *  Pemelihara: [[Pengguna:Kenrick95]]
  */
function addEditcountPortlet() {
    if (document.getElementById("t-contributions")) {
        var sText = 'Statistik pengguna';
        var sLink = '//tools.wmflabs.org/xtools-ec/?'
            + 'project=' + mw.config.get('wgServerName')
            + '&user=' + mw.config.get('wgRelevantUserName');
        addPL('#p-tb .body ul', sLink, sText, 't-editcount',  'Jumlah suntingan pengguna');
    }
}
$(addEditcountPortlet);
/** Portlet tambahan/Sunting bagian 0 *******************************************************
  * 
  *  Deskripsi:  Menambah tombol/portlet tambahan berupa tombol menyunting bagian 0 halaman
  *              Letak: di dalam drop-down menu di antara kotak pencarian dan 
  *                     tombol pantau halaman
  *              
  *  Pemelihara: [[Pengguna:Kenrick95]]
  */
function addEdittopPortletLink() {
    if (mw.config.get('wgCanonicalNamespace') === 'Special'
            || document.getElementById("wikiPreview")
            || document.getElementById("histlegend")
            || document.getElementById("difference")
            || document.getElementById("watchdetails")) { return; }
    if (document.getElementById("ca-edit")) {
        // var sElm = document.getElementById("ca-addsection") ? 'ca-addsection' : 'ca-edit';
        var sText = '↑';
        var sLink = mw.config.get('wgScriptPath') + "/index.php?title=" + mw.config.get('wgPageName')
            + "&action=edit&section=0";
        addPL('#p-cactions .menu ul', sLink, sText, 'ca-edittop', 'Suntingan bagian atas halaman ini');
    }
}
$(addEdittopPortletLink);

/** Notice di [[Wikipedia:Bak pasir]] dan [[Pembicaraan Wikipedia:Bak pasir]]  *******
  * 
  *  Deskripsi:  Menambah notice-box di [[Wikipedia:Bak pasir]] dan 
  *              [[Pembicaraan Wikipedia:Bak pasir]]
  *              
  *  Pemelihara: [[Pengguna:Bennylin]]
  */
function sandboxNotice() {
    var notice = document.createElement('div');
    document.getElementById('bodyContent').insertBefore(notice, document.getElementById('mw-content-text').nextSibling);
    $.get(
        '//id.wikipedia.org/w/index.php?title=Templat:Bakpasir&action=render',
        function (data) {
            notice.innerHTML = data;
        }
    );
}
if (mw.config.get('wgAction').match(/view|edit|submit/)) {
    $(function () {
        if (document.getElementsByTagName('body')[0].className.match(/page-(Pembicaraan_)?Wikipedia_Bak_pasir/)) {
            return sandboxNotice();
        }
    });
}
/** Notice di halaman-halaman pembicaraan  *******
  * 
  *  Deskripsi:  Menambah notice-box di ruang nama 1
  *              
  *  Pemelihara: [[Pengguna:Bennylin]]
  */
function talkpageNotice() {
    var notice = document.createElement('div');
    document.getElementById('bodyContent').insertBefore(notice, document.getElementById('mw-content-text').nextSibling);
    $.get(
        '//id.wikipedia.org/w/index.php?title=Templat:Talkheader/core&action=render',
        function (data) {
            notice.innerHTML = data;
        }
    );
}
if (mw.config.get('wgAction').match(/edit|submit/)) {
    $(function () {
        if (document.getElementsByTagName('body')[0].className.match(/ns-1 /)) {
            return talkpageNotice();
        }
    });
}

/** Magic editintros ****************************************************
 *
 *  Deskripsi:  Menambahkan editintro di halaman disambiguasi dan halaman BLP.
 *  Pemelihara: [[User:RockMFR]] (en.wikipedia.org/wiki/MediaWiki:Common.js)
 */

function addEditIntro(name) {
    var el = document.getElementById('ca-edit');
    if (!el) { return; }
    el = el.getElementsByTagName('a')[0];
    if (el) {
        el.href += '&editintro=' + name;
    }
}

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

    $(function () {
        var cats = document.getElementById('mw-normal-catlinks'), i;
        if (!cats) {
            return;
        }
        cats = cats.getElementsByTagName('a');
        for (i = 0; i < cats.length; i++) {
            if (cats[i].title === 'Kategori:Orang hidup') {
                addEditIntro('Template:BLP_editintro');
                break;
            }
        }
    });
}

/** WikiMiniAtlas *******************************************************
  *  (dari en.wikipedia.org/wiki/MediaWiki:Common.js)
  *  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]] (en.wikipedia.org/wiki/MediaWiki:Common.js)
  */

mw.loader.load("//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400");

/** Skrip tambahan  *******************************************************
 * Deskripsi: Skrip tambahan untuk kelas .hlist di common.css
 * Pemelihara: [[User:Edokter]]
 */

if ($.client.profile().name === 'msie') {
    /* remove interpunct from last list items in IE 8 */
    if ($.client.profile().versionBase === '8') {
        $('.hlist').find('dd:last-child, dt:last-child, li:last-child')
            .addClass('nopunct');
    }
    /* Generate interpuncts and parens for IE < 8 */
    if ($.client.profile().versionBase < '8') {
        $('.hlist').find('dt + dd, dt + dt').prev()
            .append('<b>:</b> ');
        $('.hlist').find('dd + dd, dd + dt, li + li').prev()
            .append('<b>·</b> ');
        $('.hlist').find('dl dl, ol ol, ul ul')
            .prepend('(').append(') ');
    }
}

/**
 * Réécriture des titres
 *
 * Fonction utilisée par [[Modèle:Titre incorrect]]
 *
 * La fonction cherche un bandeau de la forme
 * <div id="RealTitleBanner">
 *   <span id="RealTitle">titre</span>
 * </div>
 *
 * Un élément comportant id="DisableRealTitle" désactive la fonction
 */
function rewritePageH1() {
    var realTitleBanner = document.getElementById('RealTitleBanner');
    if (realTitleBanner) {
        if (!document.getElementById('DisableRealTitle')) {
            var realTitle = document.getElementById('RealTitle');
            var h1 = document.getElementById('firstHeading');
            if (!h1) {
                h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
            }
            var realH1 = getTextContent(h1); // ERROR: undefined getTextContent()
            if (realTitle && h1) {
                var titleText = realTitle.innerHTML;
                if (titleText === '') {
                    h1.style.display = 'none';
                } else {
                    h1.innerHTML = titleText;
                }

                realTitleBanner.style.display = 'none';
                var avert = document.createElement('p');
                avert.style.fontSize = '80%';
                avert.innerHTML = 'Judul yang akan digunakan untuk membuat sebuah pranala internal: <b>' + realH1.HTMLize() + '</b>';
                insertAfter(h1.parentNode, avert, h1); // ERROR: undefined insertAfter()
            }
        }
    }
}
// Results from Wikidata
// [[File:Wdsearch_script_screenshot.png]]
if (mw.config.get('wgCanonicalSpecialPageName') === 'Search' ||  (mw.config.get('wgArticleId') === 0 && mw.config.get('wgCanonicalSpecialPageName') === false)) {
    mw.loader.load("//en.wikipedia.org/w/index.php?title=MediaWiki:Wdsearch.js&action=raw&ctype=text/javascript");
}

/**
 * Description: Lazy-load mediawiki.ui.button module when .mw-ui-button is present; extended for mediawiki.ui.input too
 * Maintainers: [[User:Edokter]]. Imported from en.wikipedia.org
 */
mw.hook('wikipage.content').add(function () {
    if ((mw.loader.getState('mediawiki.ui.button') === 'registered') && ($('.mw-ui-button').length)) {
        mw.loader.load('mediawiki.ui.button');
    }
    if ((mw.loader.getState('mediawiki.ui.input') === 'registered') && ($('.mw-ui-input').length)) {
        mw.loader.load('mediawiki.ui.input');
    }
});

/**
 * @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$/)) {
        importStylesheet(extraCSS);
    } else {
        mw.notify('Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withCSS value' });
    }
}

if (extraJS) {
    if (extraJS.match(/^MediaWiki:[^&<>=%#]*\.js$/)) {
        importScript(extraJS);
    } else {
        mw.notify('Only pages from the MediaWiki namespace are allowed.', { title: 'Invalid withJS value' });
    }
}

// END OF LEGACY WRAPPER
// });
/* DO NOT ADD CODE BELOW THIS LINE */