User:ABCD/monobook.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
/* <nowiki> */
function aol(){
    var form = document.editform;
    var txt = form.wpTextbox1;
    txt.value = "{{AOL}}\n\n" + txt.value;
    form.wpSummary.value = "{{[[Template:AOL|AOL]]}}"
    form.wpMinoredit.checked = true;
}

function closeafd(bold, notbold){
    var form = document.editform;
    var txt = form.wpTextbox1;
    txt.value = "{{subst:at}} '''" + bold + "'''" + notbold + ". ~~~~\n" + txt.value + "\n{{subst:ab}}\n";
    form.wpSummary.value = "close discussion: " + bold + notbold;
    form.wpWatchthis.checked = false;
}

function fixformat(){
    var replacements = [
        [/<\/?(b|strong)>/gi, "'''"],
        [/<\/?(i|em|var)>/gi, "''"],
        [/\{\{([Ss]u[bp])\|([^}]+)\}\}/g, "{{subst:$1|$2}}"],
        [/<\/div +>/gi, "</div>"],
        [/&iexcl;/g, "¡"],
        [/&cent;/g, "¢"],
        [/&pound;/g, "£"],
        [/&curren;/g, "¤"],
        [/&yen;/g, "¥"],
        [/&brvbar;/g, "¦"],
        [/&sect;/g, "§"],
        [/&uml;/g, "¨"],
        [/&copy;/g, "©"],
        [/&ordf;/g, "ª"],
        [/&laquo;/g, "«"],
        [/&not;/g, "¬"],
        [/&reg;/g, "®"],
        [/&macr;/g, "¯"],
        [/&deg;/g, "°"],
        [/&plusmn;/g, "±"],
        [/&sup2;/g, "²"],
        [/&sup3;/g, "³"],
        [/&acute;/g, "´"],
        [/&micro;/g, "µ"],
        [/&para;/g, "¶"],
        [/&middot;/g, "·"],
        [/&cedil;/g, "¸"],
        [/&sup1;/g, "¹"],
        [/&ordm;/g, "º"],
        [/&raquo;/g, "»"],
        [/&frac14;/g, "¼"],
        [/&frac12;/g, "½"],
        [/&frac34;/g, "¾"],
        [/&iquest;/g, "¿"],
        [/&Agrave;/g, "À"],
        [/&Aacute;/g, "Á"],
        [/&Acirc;/g, "Â"],
        [/&Atilde;/g, "Ã"],
        [/&Auml;/g, "Ä"],
        [/&Aring;/g, "Å"],
        [/&AElig;/g, "Æ"],
        [/&Ccedil;/g, "Ç"],
        [/&Egrave;/g, "È"],
        [/&Eacute;/g, "É"],
        [/&Ecirc;/g, "Ê"],
        [/&Euml;/g, "Ë"],
        [/&Igrave;/g, "Ì"],
        [/&Iacute;/g, "Í"],
        [/&Icirc;/g, "Î"],
        [/&Iuml;/g, "Ï"],
        [/&ETH;/g, "Ð"],
        [/&Ntilde;/g, "Ñ"],
        [/&Ograve;/g, "Ò"],
        [/&Oacute;/g, "Ó"],
        [/&Ocirc;/g, "Ô"],
        [/&Otilde;/g, "Õ"],
        [/&Ouml;/g, "Ö"],
        [/&times;/g, "×"],
        [/&Oslash;/g, "Ø"],
        [/&Ugrave;/g, "Ù"],
        [/&Uacute;/g, "Ú"],
        [/&Ucirc;/g, "Û"],
        [/&Uuml;/g, "Ü"],
        [/&Yacute;/g, "Ý"],
        [/&THORN;/g, "Þ"],
        [/&szlig;/g, "ß"],
        [/&agrave;/g, "à"],
        [/&aacute;/g, "á"],
        [/&acirc;/g, "â"],
        [/&atilde;/g, "ã"],
        [/&auml;/g, "ä"],
        [/&aring;/g, "å"],
        [/&aelig;/g, "æ"],
        [/&ccedil;/g, "ç"],
        [/&egrave;/g, "è"],
        [/&eacute;/g, "é"],
        [/&ecirc;/g, "ê"],
        [/&euml;/g, "ë"],
        [/&igrave;/g, "ì"],
        [/&iacute;/g, "í"],
        [/&icirc;/g, "î"],
        [/&iuml;/g, "ï"],
        [/&eth;/g, "ð"],
        [/&ntilde;/g, "ñ"],
        [/&ograve;/g, "ò"],
        [/&oacute;/g, "ó"],
        [/&ocirc;/g, "ô"],
        [/&otilde;/g, "õ"],
        [/&ouml;/g, "ö"],
        [/&divide;/g, "÷"],
        [/&oslash;/g, "ø"],
        [/&ugrave;/g, "ù"],
        [/&uacute;/g, "ú"],
        [/&ucirc;/g, "û"],
        [/&uuml;/g, "ü"],
        [/&yacute;/g, "ý"],
        [/&thorn;/g, "þ"],
        [/&yuml;/g, "ÿ"],
        [/&fnof;/g, "ƒ"],
        [/&Alpha;/g, "Α"],
        [/&Beta;/g, "Β"],
        [/&Gamma;/g, "Γ"],
        [/&Delta;/g, "Δ"],
        [/&Epsilon;/g, "Ε"],
        [/&Zeta;/g, "Ζ"],
        [/&Eta;/g, "Η"],
        [/&Theta;/g, "Θ"],
        [/&Iota;/g, "Ι"],
        [/&Kappa;/g, "Κ"],
        [/&Lambda;/g, "Λ"],
        [/&Mu;/g, "Μ"],
        [/&Nu;/g, "Ν"],
        [/&Xi;/g, "Ξ"],
        [/&Omicron;/g, "Ο"],
        [/&Pi;/g, "Π"],
        [/&Rho;/g, "Ρ"],
        [/&Sigma;/g, "Σ"],
        [/&Tau;/g, "Τ"],
        [/&Upsilon;/g, "Υ"],
        [/&Phi;/g, "Φ"],
        [/&Chi;/g, "Χ"],
        [/&Psi;/g, "Ψ"],
        [/&Omega;/g, "Ω"],
        [/&alpha;/g, "α"],
        [/&beta;/g, "β"],
        [/&gamma;/g, "γ"],
        [/&delta;/g, "δ"],
        [/&epsilon;/g, "ε"],
        [/&zeta;/g, "ζ"],
        [/&eta;/g, "η"],
        [/&theta;/g, "θ"],
        [/&iota;/g, "ι"],
        [/&kappa;/g, "κ"],
        [/&lambda;/g, "λ"],
        [/&mu;/g, "μ"],
        [/&nu;/g, "ν"],
        [/&xi;/g, "ξ"],
        [/&omicron;/g, "ο"],
        [/&pi;/g, "π"],
        [/&rho;/g, "ρ"],
        [/&sigmaf;/g, "ς"],
        [/&sigma;/g, "σ"],
        [/&tau;/g, "τ"],
        [/&upsilon;/g, "υ"],
        [/&phi;/g, "φ"],
        [/&chi;/g, "χ"],
        [/&psi;/g, "ψ"],
        [/&omega;/g, "ω"],
        [/&thetasym;/g, "ϑ"],
        [/&upsih;/g, "ϒ"],
        [/&piv;/g, "ϖ"],
        [/&bull;/g, "•"],
        [/&hellip;/g, "…"],
        [/&prime;/g, "′"],
        [/&Prime;/g, "″"],
        [/&oline;/g, "‾"],
        [/&frasl;/g, "⁄"],
        [/&weierp;/g, "℘"],
        [/&image;/g, "ℑ"],
        [/&real;/g, "ℜ"],
        [/&trade;/g, "™"],
        [/&alefsym;/g, "ℵ"],
        [/&larr;/g, "←"],
        [/&uarr;/g, "↑"],
        [/&rarr;/g, "→"],
        [/&darr;/g, "↓"],
        [/&harr;/g, "↔"],
        [/&crarr;/g, "↵"],
        [/&lArr;/g, "⇐"],
        [/&uArr;/g, "⇑"],
        [/&rArr;/g, "⇒"],
        [/&dArr;/g, "⇓"],
        [/&hArr;/g, "⇔"],
        [/&forall;/g, "∀"],
        [/&part;/g, "∂"],
        [/&exist;/g, "∃"],
        [/&empty;/g, "∅"],
        [/&nabla;/g, "∇"],
        [/&isin;/g, "∈"],
        [/&notin;/g, "∉"],
        [/&ni;/g, "∋"],
        [/&prod;/g, "∏"],
        [/&sum;/g, "∑"],
        [/&lowast;/g, "∗"],
        [/&radic;/g, "√"],
        [/&prop;/g, "∝"],
        [/&infin;/g, "∞"],
        [/&ang;/g, "∠"],
        [/&and;/g, "∧"],
        [/&or;/g, "∨"],
        [/&cap;/g, "∩"],
        [/&cup;/g, "∪"],
        [/&int;/g, "∫"],
        [/&there4;/g, "∴"],
        [/&sim;/g, "∼"],
        [/&cong;/g, "≅"],
        [/&asymp;/g, "≈"],
        [/&ne;/g, "≠"],
        [/&equiv;/g, "≡"],
        [/&le;/g, "≤"],
        [/&ge;/g, "≥"],
        [/&sub;/g, "⊂"],
        [/&sup;/g, "⊃"],
        [/&nsub;/g, "⊄"],
        [/&sube;/g, "⊆"],
        [/&supe;/g, "⊇"],
        [/&oplus;/g, "⊕"],
        [/&otimes;/g, "⊗"],
        [/&perp;/g, "⊥"],
        [/&sdot;/g, "⋅"],
        [/&lceil;/g, "⌈"],
        [/&rceil;/g, "⌉"],
        [/&lfloor;/g, "⌊"],
        [/&rfloor;/g, "⌋"],
        [/&lang;/g, "〈"],
        [/&rang;/g, "〉"],
        [/&loz;/g, "◊"],
        [/&spades;/g, "♠"],
        [/&clubs;/g, "♣"],
        [/&hearts;/g, "♥"],
        [/&diams;/g, "♦"],
        [/&OElig;/g, "Œ"],
        [/&oelig;/g, "œ"],
        [/&Scaron;/g, "Š"],
        [/&scaron;/g, "š"],
        [/&Yuml;/g, "Ÿ"],
        [/&circ;/g, "ˆ"],
        [/&tilde;/g, "˜"],
        [/&lsquo;/g, "‘"],
        [/&rsquo;/g, "’"],
        [/&sbquo;/g, "‚"],
        [/&ldquo;/g, "“"],
        [/&rdquo;/g, "”"],
        [/&bdquo;/g, "„"],
        [/&dagger;/g, "†"],
        [/&Dagger;/g, "‡"],
        [/&permil;/g, "‰"],
        [/&lsaquo;/g, "‹"],
        [/&rsaquo;/g, "›"],
        [/&euro;/g, "€"],
        [/\{\{SERVER\}\}\{\{localurl:/g, "{{fullurl:"],
        [/\{\{NAMESPACE\}\}:\{\{PAGENAME\}\}/g, "{{FULLPAGENAME}}"]
    ];
    var form = document.editform;
    var txt = form.wpTextbox1;
    var val = txt.value;
    for(var i in replacements) val = val.replace(replacements[i][0], replacements[i][1]);
    txt.value = val;
    form.wpSummary.value += "formatting";
    form.wpMinoredit.checked = true;
}

function replace(){
    var s = prompt("Search regexp?");
    if(s){
        var r = prompt("Replace regexp?");
        if(!r && r != '') return;
        var txt = document.editform.wpTextbox1;
        txt.value = txt.value.replace(new RegExp(s, "g"), r);
    }
}

function afdresult(){
    var res = prompt("Result?");
    if(!res) return;
    var form = document.editform;
    form.wpSummary.value = 'AFD result';
    var txt = form.wpTextbox1;
    txt.value += '{{oldafdfull|date=[[DAY MONTH]] [[2006]]|result=' + res + '|votepage={{subst:PAGENAME}}}}';
    txt.focus();
}

function test(x){
    var form = document.editform;
    var txt = form.wpTextbox1;
    if(txt.value.length > 0) txt.value += '\n';
    txt.value += '{{subst:test' + (x == 1 ? '' : x) + '}} ~~~~';
    var s = '';
    switch(x){
        case 1: s = 'Thanks for your test'; break;
        case 2:
        case 3:
            s = 'Please stop';
            break;
        case 4: s = 'Last warning'; break;
        case 5: s = 'You have been blocked'; break;
    }
    form.wpSummary.value = s;
}

function hideafd(){
    var divs = document.getElementsByTagName("div");
    for(var x = 0; x < divs.length; ++x)
        if(divs[x].className.indexOf("vfd") != -1 || divs[x].className.indexOf("afd") != -1)
            divs[x].style.display = "none";
    document.getElementById('footer').style.display = 'none';
}

function showafd(){
    var divs = document.getElementsByTagName("div");
    for(var x = 0; x < divs.length; ++x)
        if(divs[x].className.indexOf("vfd") != -1 || divs[x].className.indexOf("afd") != -1)
            divs[x].style.display = "";
    document.getElementById('footer').style.display = '';
}

function addlilink(tabs, url, name, id, title, key){
    var na = document.createElement('a');
    na.href = url;
    na.appendChild(document.createTextNode(name));
    na.accesskey = key;
    var pref = 'alt-';
    var clientPC = navigator.userAgent.toLowerCase();
    if(((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1)) || navigator.userAgent.toLowerCase().indexOf( 'mac' ) != -1 ) pref = 'control-';
    if(clientPC.indexOf('opera')!=-1) pref = 'shift-esc-';
    if(key && title) na.title = title + ' [' + pref + key + ']';
    else if(title) na.title = title;
    else if(key) na.title = '[' + pref + key + ']';
    var li = document.createElement('li');
    if(id) li.id = id;
    li.appendChild(na);
    tabs.appendChild(li);
    return li;
}

function addTab(url, name, id, title, key){
    var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    addlilink(tabs, url, name, id, title, key);
}

function addPurge(){
    var x = document.getElementById('ca-history');
    if(!x) return;
    if(x.children) x = x.children[0].href;
    else x = x.childNodes[0].href;
    addTab(x.replace(/=history/, "=purge"), 'purge', 'ca-purge', 'Purge the internal cache for this page', 'g');
}

function addEditSection0(){
    if(!document.getElementById) return;
    var x = document.getElementById('ca-edit');
    if(!x) return;
    var y = document.createElement('LI');
    y.id = 'ca-edit-0';
    if(x.className == 'selected'){
      if(/&action=edit&section=0$/.test(window.location.href)){
        x.className = 'istalk';
        y.className = 'selected';
      } else {
        x.className = 'selected istalk';
      }
    } else if(x.className == 'selected istalk'){
      if(/&action=edit&section=0$/.test(window.location.href)){
        x.className = 'istalk';
        y.className = 'selected istalk';
      } else {
        y.className = 'istalk';
      }
    } else {
      y.className = x.className;
      x.className = 'istalk';
    }
    var z = document.createElement('A');
    if(x.children){
        z.href = x.children[0].href + '&section=0';
        z.appendChild(document.createTextNode('0'));
        y.appendChild(z);
        document.getElementById('p-cactions').children[1].insertBefore(y,x.nextSibling);
    }else{
        z.href = x.childNodes[0].href + '&section=0';
        z.appendChild(document.createTextNode('0'));
        y.appendChild(z);
        document.getElementById('p-cactions').childNodes[3].childNodes[1].insertBefore(y,x.nextSibling);
    }
    z.title = 'Edit the zeroth section of this page';
    akeytt();
}

function changeLinks(){
    if(!document.getElementById) return;
    document.getElementById('pt-mytalk').firstChild.firstChild.nodeValue = 'Talk';
    document.getElementById('pt-preferences').firstChild.innerHTML = 'Preferences';
    document.getElementById('pt-watchlist').firstChild.innerHTML = 'Watchlist';
    document.getElementById('pt-mycontris').firstChild.innerHTML = 'Contributions';
    document.getElementById('pt-logout').firstChild.innerHTML = 'Log out';
    if(document.getElementById('ca-talk'))
        document.getElementById('ca-talk').firstChild.innerHTML = 'Talk';
    if(document.getElementById('ca-edit'))
        document.getElementById('ca-edit').firstChild.innerHTML = 'Edit';
    if(document.getElementById('ca-nstab-wp'))
        document.getElementById('ca-nstab-wp').firstChild.innerHTML = 'About';
}
function addForceSummary(){
    if(!/&action=edit/.test(window.location.href)) return;
    if(/&section=new/.test(window.location.href)) return;
    if(!document.forms.editform) return;
    document.forms.editform.wpSave.onclick = forceSummary;
}

function forceSummary(){
    var form = document.forms.editform;
    if(!form.wpSummary.value.replace(/^(\/\*.*\*\/)? *(.*) *$/,'$2')){
      var r = prompt('Are you sure you want to submit without adding a summary?\nTo add a summary, type it in the box below:',form.wpSummary.value);
      if(r == null) return false;
      form.wpSummary.value = r;
    }
    return true;
}

function afddelete(){
    document.forms.deleteconfirm.wpReason.value = '[[Wikipedia:Articles for deletion/' + unescape(window.location.href.replace(/^.*\?title=([^&]+)&action=delete.*$/, '$1').replace(/_/g, ' ')).replace(/^Talk:/, '') + ']]';
}

function morelinks(){
    if(/^Editing Wikipedia:(Articles|Votes|Pages) for deletion/.test(document.title)){
        addTab('javascript:closeafd("keep", "")', 'K');
        addTab('javascript:closeafd("merge and redirect", " to [[" + prompt("Merge and redirect to?") + "]]")', 'M&R');
        addTab('javascript:closeafd("redirect", " to [[" + prompt("Redirect to?") + "]]")', 'R');
        addTab('javascript:closeafd("transwiki", " to " + prompt("Transwiki to?"))', 'T');
        addTab('javascript:closeafd("transwiki", " to Wiktionary")', 'WIKT');
        addTab('javascript:closeafd("speedy delete", "")', 'SD');
        addTab('javascript:closeafd("delete", "")', 'D');
        addTab('javascript:closeafd(prompt("Result?"), "")', 'Oth');
    }else if(document.title.indexOf("Editing User talk:") == 0){
        addTab('javascript:replace()', 'Replace');
        addTab('javascript:fixformat()', 'Format');
        addTab('javascript:test(1)', 'Test');
        addTab('javascript:test(2)', '2');
        addTab('javascript:test(3)', '3');
        addTab('javascript:test(4)', '4');
        addTab('javascript:test(5)', '5');
        addTab('javascript:aol()', 'AOL');
    }else if(document.title.indexOf("Editing ") == 0){
        addTab('javascript:replace()', 'Replace');
        addTab('javascript:fixformat()', 'Format');
        addTab('javascript:afdresult()', 'AFD');
    }else if(document.title.indexOf("Confirm delete") == 0){
        addTab('javascript:afddelete()', 'AFD');
    }else if(/^Wikipedia:(Articles|Votes|Pages) for deletion/.test(document.title)){
        addTab('javascript:hideafd()', 'Hide', 'ca-hide');
        addTab('javascript:showafd()', 'Show', 'ca-show');
    }
}

function addToolBoxLinks(){
    var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0];
    addlilink(tb, '/wiki/Special:Newpages', 'New pages', 't-newpages');
    addlilink(tb, '/wiki/Special:Shortpages', 'Short pages', 't-shortpages');
}

function strip_namespace(target){
    var colon = target.indexOf(':');
    if(colon != -1){
        var spaces = ['User', 'Wikipedia', 'Image', 'MediaWiki', 'Template', 'Help', 'Category', 'Portal'];
        var ns = target.substring(0, colon);
        if(ns == '' || ns == 'Talk') return target.substring(colon + 1);
        else
            for(var i = 0; i < spaces.length; ++i)
                if(ns == spaces[i] || ns == spaces[i] + '_talk') return target.substring(colon + 1);
    }
    return target;
}

// Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&ip=username" is present.
function do_blockip_stuff(){
    var form = document.getElementById('blockip');
    // focus on Reason field
    form.wpBlockReason.focus();
    var target = getParam('ip');
    if(target == '') return;

    // add "blocklog" tab
    addTab('/wiki/Special:Log/block?page=User:' + target, 'blocklog', 'ca-blocklog');
}

// Adds "block" and "blocklog" tabs to User: and User talk: pages.
function add_block_tab(){
    var c1 = document.getElementById('column-one');
    var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];

    // use the "edit this page" tab to get already-tidied url
    var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
    // cut everything up to "title=" from the start and everything past "&action=edit" from the end
    editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit'));
    editlk = editlk.substring(editlk.indexOf(':') + 1);
    var slloc = editlk.indexOf('/');
    if(slloc > 0) editlk = editlk.substring(0, slloc);

    // add "block" tab
    addTab('/wiki/Special:Blockip/' + editlk, 'block', 'ca-block');

    // add "blocklog" tab
    addTab('/wiki/Special:Log/block?page=User:' + editlk, 'blocklog', 'ca-blocklog');
}

function blockip()
{
  if(document.title.indexOf('User:') == 0 || document.title.indexOf('User talk:') == 0)
      add_block_tab();
  else if(document.title.indexOf('Block user') == 0) // could stand to be more robust
      do_blockip_stuff();
}

function getParam(name){
    if(location.search){
        for(var x in location.search.substring(1).split('&')){
            var eq = x.indexOf('=');
            if(x.substring(0, eq) == name) return x.substring(eq + 1);
        }
    }
    return '';
}

function myLoadFuncs(){
    changeLinks();
    addPurge();
    addEditSection0();
    addForceSummary();
    morelinks();
    addToolBoxLinks();
    blockip();
}
//if (window.addEventListener) window.addEventListener("load",myLoadFuncs,false);
//else if (window.attachEvent) window.attachEvent("onload",myLoadFuncs);
$(myLoadFuncs);

//--------------------------------------------------------------------------------
// </nowiki>[[User:Lupin/popups.js]]<nowiki> - please include this line 

importScript('User:Lupin/popups.js');

popupAdminLinks=true;
popupActionsMenu=false;
popupStructure='menus';
popupPreviewRawTemplates=true;
/* </nowiki> */