Jump to content

User:9cds/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.
//<pre><nowiki>
// ------Popups------------------

 // Script from [[User:Lupin/popupsdev.js]]
document.write('<script type="text/javascript" src="' 
             + 'http://en.wikipedia.org/w/index.php?title=User:Lupin/popupsdev.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
popupEditCounterTool="custom";
popupEditCounterUrl="https://secure.wikimedia.org/wikipedia/en/wiki/User:Interiot/Tool2/code.js?username=$1";


//-------Interiot's javascript edit counter-------
if (document.title.indexOf('User:Interiot/Tool2/code.js') != -1) {
  document.write('<script type="text/javascript" src="' 
    + 'https://secure.wikimedia.org/wikipedia/en/w/index.php?title=User:Interiot/Tool2/code.js' 
    + '&action=raw&ctype=text/javascript&dontcountme=s"></script>'); }


// -----------------------------------------------------------------------------
 // God-like Monobook skin
 // (c) 2005 Sam Hocevar <sam@zoy.org>
 // $Id: godmode-light.js 1029 2006-01-09 11:05:19Z sam $
 // -----------------------------------------------------------------------------
 
 // -----------------------------------------------------------------------------
 // Language support, taken from phase3/languages/ *
 // -----------------------------------------------------------------------------
 var rollbacklink = 'rollback';
 var cantrollback = 'Cannot revert edit; last contributor is only author of this page.';
 var alreadyrolled = 'Cannot rollback last edit of [[$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the page already. Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ';
 var revertpage = 'Reverted edits by [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) to last version by $1.';
 
 // -----------------------------------------------------------------------------
 // XMLHttpRequest support
 // -----------------------------------------------------------------------------
 if (document.implementation.createDocument) {
   var gml_xmlparser = new DOMParser();
 }
 
 function gml_XMLParse(string) {
   if (document.implementation.createDocument) {
     return gml_xmlparser.parseFromString(string, "text/xml");
   } else if (window.ActiveXObject) {
     var gml_xmldoc = new ActiveXObject("Microsoft.XMLDOM");
     gml_xmldoc.async = "false";
     ret = gml_xmldoc.loadXML(string);      
     if (!ret)
       return null;
     return gml_xmldoc.documentElement;
   }
   return null;
 }
 
 var gml_xmlhttp;
 
 function HTTPClient() {
   var gml_http;
   if(window.XMLHttpRequest) {
     gml_http = new XMLHttpRequest();
   } else if (window.ActiveXObject) {
     try {
       gml_http = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
       try {
         gml_http = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (E) {
         gml_http = false;
       }
     }
   }
   return gml_http;
 }
 
 // -----------------------------------------------------------------------------
 // MD5 hash calculator
 // -----------------------------------------------------------------------------
 // Version 2.1 Copyright (C) Paul Johnston 1999 - 2002.
 // Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
 // Distributed under the BSD License
 // See http://pajhome.org.uk/crypt/md5 for more info.
 // -----------------------------------------------------------------------------
 var hexcase = 0;
 var b64pad  = "";
 var chrsz   = 8;
 
 function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}
 
 function core_md5(x, len)
 {
   x[len >> 5] |= 0x80 << ((len) % 32);
   x[(((len + 64) >>> 9) << 4) + 14] = len;
 
   var a =  1732584193;
   var b = -271733879;
   var c = -1732584194;
   var d =  271733878;
 
   for(var i = 0; i < x.length; i += 16)
   {
     var olda = a;
     var oldb = b;
     var oldc = c;
     var oldd = d;
 
     a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819); b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426); c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416); d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); c = md5_ff(c, d, a, b, x[i+10], 17, -42063); b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682); d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);
 
     a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); c = md5_gg(c, d, a, b, x[i+11], 14,  643717713); b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083); c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438); d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501); a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473); b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);
 
     a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562); b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353); c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174); d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189); a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); c = md5_hh(c, d, a, b, x[i+15], 16,  530742520); b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);
 
     a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415); c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571); d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359); d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649); a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259); b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551);
 
     a = safe_add(a, olda);
     b = safe_add(b, oldb);
     c = safe_add(c, oldc);
     d = safe_add(d, oldd);
   }
   return Array(a, b, c, d);
 
 }
 
 function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); }
 function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); }
 function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); }
 function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); }
 function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); }
 
 function safe_add(x, y)
 {
   var lsw = (x & 0xFFFF) + (y & 0xFFFF);
   var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
   return (msw << 16) | (lsw & 0xFFFF);
 }
 
 function bit_rol(num, cnt)
 {
   return (num << cnt) | (num >>> (32 - cnt));
 }
 
 function str2binl(str)
 {
   var bin = Array();
   var mask = (1 << chrsz) - 1;
   for(var i = 0; i < str.length * chrsz; i += chrsz)
     bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32);
   return bin;
 }
 
 function binl2hex(binarray)
 {
   var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
   var str = "";
   for(var i = 0; i < binarray.length * 4; i++)
   {
     str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) +
            hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF);
   }
   return str;
 }
 
 // -----------------------------------------------------------------------------
 // Our nice Revert functions
 // -----------------------------------------------------------------------------
 var gml_vandal, gml_editor, gml_url;
 
 function PerformRevert() {
   var l, token = '', revert = false;
   // Look for '&fakeaction=rollback' in URL
   gml_url = location.pathname;
   l = location.search.substring(1).split('&');
   for (i = 0; i < l.length; i++) {
     var n = l[i].indexOf('=');
     var name = l[i].substring(0, n);
     if (name == 'fakeaction') {
       if (l[i].substring(n + 1) == 'rollback')
         revert = true;
     } else if (name == 'vandal') {
       gml_vandal = unescape(l[i].substring(n + 1));
     } else if (name == 'token') {
       token = unescape(l[i].substring(n + 1));
     } else if (name == 'title') {
       gml_url += '?' + l[i];
     }
   }
   if (!revert)
     return;
   document.getElementById('bodyContent').innerHTML = 'Please wait, reverting edits by ' + gml_vandal + '...';
   // Avoid XSS kiddies by using a special token
   if (token == '' || token != hex_md5(gml_url + gml_vandal + document.cookie)) {
     document.getElementById('bodyContent').innerHTML += '<br />Bad authentication token!';
     return;
   }
 
   gml_xmlhttp = HTTPClient();
   if (!gml_xmlhttp)
     return;
   history_url = gml_url + '&action=history&limit=50';
   document.getElementById('bodyContent').innerHTML += '<br />Getting article history (' + history_url + ')...';
   gml_xmlhttp.open("GET", history_url, true);
   gml_xmlhttp.onreadystatechange = RevertStepTwo;
   gml_xmlhttp.send(null);
 }
 
 function RevertStepTwo() {
   if (gml_xmlhttp.readyState != 4)
     return;
   var l;
   var oldid;
   // Get the vandal and new editor names
   gml_vandal = gml_vandal.replace(/_/g, ' ');
   gml_editor = '';
   // Hack for a MediaWiki bug
   xml = gml_xmlhttp.responseText.replace(/<body.*"ns-4">/, '<body class="ns-4">');
   doc = gml_XMLParse(xml);
   if (!doc || !doc.getElementById('pagehistory')) {
     document.getElementById('bodyContent').innerHTML += '<br />Failed to parse XML data returned by the server.';
     document.getElementById('bodyContent').innerHTML += '<br /><b>Hint: try to disable both "Enable section editing by right-clicking on section titles (JavaScript)" and "Edit pages on double click (JavaScript)" in your editing preferences until a proper fix is found</b>.';
     document.getElementById('bodyContent').innerHTML += '<br />Dump of the unparseable page : <br />' + xml.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
     return;
   }
   l = doc.getElementById('pagehistory').getElementsByTagName('li');
   //l = doc.selectSingleNode('//*[@id="pagehistory"]').getElementsByTagName('li');
   for (i = 0; i < l.length; i++) {
     var name = l[i].getElementsByTagName('span')[0].getElementsByTagName('a')[0].innerHTML.replace(/_/g, ' ');
     if (i == 0 && name != gml_vandal) {
       document.getElementById('bodyContent').innerHTML += '<br />Error: Last editor is ' + name + ', not ' + gml_vandal + '!';
       return;
     } else if (i > 0 && name != gml_vandal) {
       oldid = l[i].getElementsByTagName('input')[0].value;
       gml_editor = name;
       break;
     }
   }
   if (gml_editor == '') {
     document.getElementById('bodyContent').innerHTML += '<br />Error: ' + gml_vandal + ' is the only editor!';
     return;
   }
 
   gml_xmlhttp = HTTPClient();
   if (!gml_xmlhttp)
     return;
   document.getElementById('bodyContent').innerHTML += '<br />Getting article edit form (GET' + gml_url + '&action=edit&oldid=' + oldid + ')...';
   gml_xmlhttp.open('GET', gml_url + '&action=edit&oldid=' + oldid, true);
   gml_xmlhttp.onreadystatechange = RevertStepThree;
   gml_xmlhttp.send(null);
 }
 
 function RevertStepThree() {
   if (gml_xmlhttp.readyState != 4)
     return
   var form, newform, l;
   // Insert the downloaded form in our current page, using
   // only hidden form inputs.
   doc = gml_XMLParse(gml_xmlhttp.responseText);
   form = doc.getElementById('editform');
   newform = document.createElement('form');
   l = form.getElementsByTagName('textarea');
   for (i = l.length; i--; ) {
     var t = document.createElement('input');
     t.type = 'hidden';
     t.name = l[i].name;
     t.value = l[i].value;
     newform.appendChild(t);
   }
   l = form.getElementsByTagName('input');
   for (i = l.length; i--; ) {
     if (l[i].name == 'wpSummary') {
       l[i].value = revertpage.replace(/\$1/g, gml_editor).replace(/\$2/g, gml_vandal);
     } else if (l[i].name == 'wpMinoredit') {
       l[i].value = '1';
     } else if (l[i].name == 'wpWatchthis') {
       if (!l[i].checked)
         continue; // Don�t touch the "watch" status
       l[i].value = "on";
     } else if (l[i].name == 'wpPreview') {
       continue;
     } else if (l[i].name == 'wpDiff') {
       continue;
     }
     l[i].type = 'hidden';
     newform.appendChild(l[i]);
   }
   newform.name = form.name;
   newform.method = form.method;
   newform.id = form.id;
   newform.action = form.action;
   document.getElementById('bodyContent').innerHTML += '<br />Submitting form...';
   document.getElementById('bodyContent').appendChild(newform);
   // Submit the form
   newform.submit();
 }
 
 // -----------------------------------------------------------------------------
 // Add revert buttons to the page
 // -----------------------------------------------------------------------------
 function AddRevertButtons() {
   var l, article = '', vandal;
   // Add 'revert' links to a diff page
   l = document.getElementById('bodyContent').getElementsByTagName('td');
   for (i = 0; i < l.length; i++) {
     if (l[i].className == 'diff-otitle') {
       article = l[i].getElementsByTagName('a')[0].href.split('&')[0].replace(/[^\/]*\/\/[^\/]*/, '');
     } else if (l[i].className == 'diff-ntitle') {
       var toplink = l[i].getElementsByTagName('a')[0].href;
       vandal = l[i].getElementsByTagName('a')[2].innerHTML;
       var t = l[i].innerHTML
       n = t.indexOf('</a>) <br') + t.indexOf('</A>) <BR') + 1; // XXX: WOW HACK!!!!
       if (n >= 0 && article != '' && toplink.indexOf('oldid=') == -1) {
         l[i].innerHTML = t.substring(0, n + 5) + ' &nbsp;&nbsp;&nbsp;<strong>[<a href="' + article + '&fakeaction=rollback&vandal=' + vandal + '&token=' + hex_md5(article + vandal + document.cookie) + '">' + rollbacklink + '</a>]</strong> ' + t.substring(n + 5, t.length);
       }
     }
   }
   // Add 'revert' links to a contributions page
   if (location.href.indexOf(':Contributions') != -1) {
     var c = document.getElementById('contentSub');
     var a = c.getElementsByTagName('a');
     //if (a.length == 2) {
     //  vandal = a[0].innerHTML;
     //} else {
     //  vandal = c.innerHTML.replace(/ \(.*/, '').replace(/.* /, '');
     //}
     vandal = a[a.length-3].href.split(':')[2].split('&')[0];
     l = document.getElementById('bodyContent').getElementsByTagName('li');
     for (i = 0; i < l.length; i++) {
       var t = l[i].innerHTML
       // If we are already a sysop on this wiki, abort
       if (t.indexOf('>' + rollbacklink + '</a>]') != -1)
           break;
       //if (t.indexOf('&amp;diff=0') != -1) {
       if (t.indexOf('<strong> (') != -1) {
         article = l[i].getElementsByTagName('a')[0].href.split('&')[0].replace(/[^\/]*\/\/[^\/]*/, '');
         l[i].innerHTML += ' [<a href="' + article + '&fakeaction=rollback&vandal=' + vandal + '&token=' + hex_md5(article + vandal + document.cookie) + '">' + rollbacklink + '</a>]';
       }
     }
   }
   // Add 'revert' links to a history page
   if (location.href.indexOf('action=history') != -1) {
     var hist = document.getElementById('pagehistory');
     var li = hist.getElementsByTagName('li')[0];
     article = li.getElementsByTagName('a')[0].href.split('&')[0].replace(/[^\/]*\/\/[^\/]*/, '');
     vandal = li.getElementsByTagName('span')[0].getElementsByTagName('a')[0].innerHTML;
     li.innerHTML += ' [<a href="' + article + '&fakeaction=rollback&vandal=' + vandal + '&token=' + hex_md5(article + vandal + document.cookie) + '">' + rollbacklink + '</a>]';
   }
 }
 
 // -----------------------------------------------------------------------------
 // Modify the page once it is loaded
 // -----------------------------------------------------------------------------
 if (window.addEventListener) {
   window.addEventListener("load", PerformRevert, false);
   window.addEventListener("load", AddRevertButtons, false);
 } else if (window.attachEvent) {
   window.attachEvent("onload", PerformRevert);
   window.attachEvent("onload", AddRevertButtons);
 }

// ------------WATCHLIST SORTER------------------------
//addOnloadHook(function (){
//  if (location.href.indexOf('Special:Watchlist') == -1) return; //Are we on a watchlist?
//  //days = document.getElementById('bodyContent').getElementsByTagName('ul');
//  days = document.evaluate( //Hell knows how it works - found in "Dive into Greasemonkey"
//    "//ul[@class='special']",
//    document,
//    null,
//    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
//    null);
//  for (d = 0; d < days.snapshotLength; d++) { //For each day
//    day = days.snapshotItem(d);
//    newday = document.createElement('ul'); //This will replace the old listing
//    while ((diffs = day.getElementsByTagName('li')).length > 0) { //Are there any diffs left?
//      //Try to extract the namespace
//      As = diffs[0].getElementsByTagName('a');
//      if (As[0].innerHTML == 'diff')
//        pagename = As[2].innerHTML;
//      else
//        pagename = As[1].innerHTML;
//      if (pagename.indexOf(':') == -1)
//        namespace = 'Main';
//      else
//        namespace = pagename.split(':')[0]; //This will fail for articles which contain ":" in name
//      hdrs = newday.getElementsByTagName('h5'); //Get the list of namespace headers
//      hdr = null;
//      for (j=0; j<hdrs.length; j++) //Find the header
//        if (hdrs[j].innerHTML==namespace) {
//          hdr = hdrs[j]; break;
//        }
//      if (hdr==null) { //Not found? Make a new one!
//        hdr = document.createElement('h5');
//        hdr.innerHTML = namespace;
//        newday.appendChild(hdr);
//        namespacesub = document.createElement('ul');
//        newday.appendChild(namespacesub);
//      }
//      hdr.nextSibling.appendChild(diffs[0]); //Move the diff
//    }
//    newday.appendChild(document.createElement('hr')); //For readablility
//    day.parentNode.replaceChild(newday,day);
//  }
//});


//-------ONE-CLICK TEMPLATE ADDING SHORTCUTS------
function addLink(where, url, name, id, title, key, after){
  var na = document.createElement('a');
  na.href = url;
  na.appendChild(document.createTextNode(name));
  var li = document.createElement('li');
  if(id) li.id = id;
  li.appendChild(na);
  var tabs = document.getElementById(where).getElementsByTagName('ul')[0];
  if (after) {
    tabs.insertBefore(li,document.getElementById(after));
  } else {
    tabs.appendChild(li);
  }
  if(id) {
    if(key && title) { ta[id] = [key, title]; }
    else if(key) { ta[id] = [key, '']; }
    else if(title) { ta[id] = ['', title];} 
  }
  // re-render the title and accesskeys from existing code in wikibits.js
  akeytt();
  return li;
}

function easytag (content,summary,sig,atbottom) {
  for (i=1; i<10; i++) {
    if (content.indexOf("@@"+i)==-1 && summary.indexOf("@@"+i)==-1) break;
    filler = prompt("Parameter #"+i);
    content=content.replace("@@"+i,filler);
    summary=summary.replace("@@"+i,filler);
  }
  if (summary=="") summary = content;
  if (sig==1) { content += " ~~" + "~~"; }
  if (atbottom) {
    autoedit = "s/$/\\n"+content+"\\n/";
  } else {
    autoedit = "s/^/"+content+"\\n/";
  }
  if (document.URL.indexOf('action=edit')!=-1) {
    document.location = document.URL + "&autoedit=" + autoedit + "&autosummary=" + summary + "&autoclick=wpSave";
  } else if (document.URL.indexOf('title=')!=-1) {
    document.location = document.URL + "&action=edit&autoedit=" + autoedit + "&autosummary=" + summary + "&autoclick=wpSave";
  } else {
    document.location = document.URL + "?action=edit&autoedit=" + autoedit + "&autosummary=" + summary + "&autoclick=wpSave";
  }
}


function addlilink(tabs, url, name, id, title, key){
  var na = document.createElement('a');
  na.href = url;
  na.appendChild(document.createTextNode(name));
  var li = document.createElement('li');
  if(id) li.id = id;
  li.appendChild(na);
  tabs.appendChild(li);
  if(id) {
    if(key && title) {
      ta[id] = [key, title];
    } else if(key) {
      ta[id] = [key, ''];
    } else if(title) {
      ta[id] = ['', title];
    }
  }
  // re-render the title and accesskeys from existing code in wikibits.js
  akeytt();
  return li;
}


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


function addlimenu(tabs, name, id) {
  var na = document.createElement('a');
  na.href = '#';
  var mn = document.createElement('ul');
  na.appendChild(document.createTextNode(name));
  var li = document.createElement('li');
  li.style.width = "80px";
  li.id = id;
  li.className = 'tabmenu';
  li.appendChild(na);
  li.appendChild(mn);
  tabs.appendChild(li);
  return li;
}
$( function() {
  var c1 = document.getElementById('column-one');
  var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];

  if (document.title.indexOf("User talk:") != -1) {
    var UTPmenu1 = addlimenu(tabs, 'User talk:', 'UTPmenu1').getElementsByTagName('ul')[0];
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:welcome}}","Welcome to Wikipedia!",1,1)', "welcome");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:welcomeip}}","Welcome to Wikipedia!",1,1)', "welcomeIP");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:spam}}","Spam",1,1)', "spam");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:test1}}","test1",1,1)', "test1");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:test1a}}","test1a",1,1)', "test1a (remove)");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:test2}}","test2",1,1)', "test2");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:test2a}}","test2a",1,1)', "test2a (remove)");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:test3}}","test3",1,1)', "test3");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:test4}}","test4",1,1)', "test4");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:test6}}","test5: blocked",1,1)', "test5 (block)");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:blank}}","blank",1,1)', "blank1");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:blank2}}","blank2",1,1)', "blank2");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:blank3}}","blank3",1,1)', "blank3");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:blank4}}","blank4",1,1)', "blank4");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:bv}}","Blantant vandalism",1,1)', "blantent");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:wr0}}","Removing warnings",1,1)', "rem warn");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:3RR}}","3RR",1,1)', "3RR");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:3RR4}}","3RR4",1,1)', "3RR$");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:Notice|@@1}}","Notice",1,1)', "Notice");
    addlilink(UTPmenu1,'javascript:easytag("{{"+"subst:Warning|@@1}}","Warning",1,1)', "Warning");
    var UTPmenu2 = addlimenu(tabs, 'User talk(-n):', 'UTPmenu2').getElementsByTagName('ul')[0];
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:test1-n|@@1}}","test1 on page [[@@1]]",1,1)', "test1");
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:test1a-n|@@1}}","test1a on page [[@@1]]",1,1)', "test1a");
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:test2-n|@@1}}","test2 on page [[@@1]]",1,1)', "test2");
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:test2a-n|@@1}}","test2a on page [[@@1]]",1,1)', "test2a");
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:blank2-n|@@1}}","blank2 on page [[@@1]]",1,1)', "blank2");
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:test3-n|@@1}}","test3 on page [[@@1]]",1,1)', "test3");
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:test4-n|@@1}}","test4 on page [[@@1]]",1,1)', "test4");
    addlilink(UTPmenu2,'javascript:easytag("{{"+"subst:bv-n|@@1}}","Blantant vandalism on page [[@@1]]",1,1)', "bv");
  } else if (document.title.indexOf("Wikipedia:Administrator intervention against vandalism") != -1) {
    addlilink(tabs,'javascript:easytag("{{"+"vandal|@@1}} @@2","+[[User talk:@@1|"+"]]",1,1,"* ")', "vandal");
  } else if (document.title.indexOf(":")==-1 && document.title.indexOf("My watchlist")==-1 && document.title.indexOf("Logs")==-1 && document.title.indexOf("User contributions")==-1 ) {
    var Amenu = addlimenu(tabs, 'Article:', 'Amenu').getElementsByTagName('ul')[0];
    addlilink(Amenu,'javascript:easytag("{{"+"wikify}}","Tagging for wikification",0,0)', "wikify");
    addlilink(Amenu,'javascript:easytag("{{"+"cleanup-date|{{"+"subst:CURRENTMONTHNAME}} {{"+"subst:CURRENTYEAR}}"+"}}","Tagging for cleanup",0,0)', "cleanup");
    addlilink(Amenu,'javascript:easytag("{{"+"Expandarticle}}","Tagging for expansion",0,0)', "expand");
    addlilink(Amenu,'javascript:easytag("{{"+"subst:AfD}}","AfD",0,0)', "AfD");
    addlilink(Amenu,'javascript:easytag("{{"+"subst:prod|@@1}}","prod",0,0)', "prod");
    addlilink(Amenu,'javascript:easytag("{{"+"delete}}","{{"+"d}}",0,0)', "delete");
    addlilink(Amenu,'javascript:easytag("{{"+"db|@@1}}","",0,0)', "db");
    addlilink(Amenu,'javascript:easytag("{{"+"db-test}}","",0,0)', "db-test");
    addlilink(Amenu,'javascript:easytag("{{"+"db-vand}}","",0,0)', "db-vand");
    addlilink(Amenu,'javascript:easytag("{{"+"db-empty}}","",0,0)', "db-empty");
    addlilink(Amenu,'javascript:easytag("{{"+"db-blanked}}","",0,0)', "db-blanked");
    addlilink(Amenu,'javascript:easytag("{{"+"db-nocontent}}","",0,0)', "db-nocontent");
    addlilink(Amenu,'javascript:easytag("{{"+"db-nonsense}}","",0,0)', "db-nonsense");
    addlilink(Amenu,'javascript:easytag("{{"+"db-repost}}","",0,0)', "db-repost");
    addlilink(Amenu,'javascript:easytag("{{"+"db-bio}}","",0,0)', "db-bio");
    addlilink(Amenu,'javascript:easytag("{{"+"db-band}}","",0,0)', "db-band");
    addlilink(Amenu,'javascript:easytag("{{"+"db-club}}","",0,0)', "db-club");
    addlilink(Amenu,'javascript:easytag("{{"+"db-group}}","",0,0)', "db-group");
    addlilink(Amenu,'javascript:easytag("{{"+"db-attack}}","",0,0)', "db-attack");
    addlilink(Amenu,'javascript:easytag("{{"+"db-copyvio|url=@@1}}","Copyvio from @@1",0,0)', "db-copyvio");
  }else if (document.title.indexOf("Wikipedia:") != -1) {
    var Wmenu = addlimenu(tabs, 'Wikipedia:', 'Wmenu').getElementsByTagName('ul')[0];
    addlilink(Wmenu,'javascript:easytag("{{"+"subst:afd2|pg=@@1|text=@@2}}","AfD2",1,1)', "AfD2");
    addlilink(Wmenu,'javascript:easytag("{{"+"subst:afd3|pg=@@1}}","AfD3",0,1)', "AfD3");
  }else if (document.title.indexOf("Talk:") != -1) {
    var ATmenu = addlimenu(tabs, 'Talk:', 'ATmenu').getElementsByTagName('ul')[0];
    addlilink(ATmenu,'javascript:easytag("{{subst:"+"oldafdfull|date=@@1|result=\'\'\'@@2\'\'\'|votepage={{BASEPAGENAME}}}}","Close AfD: @@2",0,0)', "oldafdfull");
    addlilink(ATmenu,'javascript:easytag("{{"+"subst:Notice|@@1}}","Notice",1,1)', "Notice");
    addlilink(ATmenu,'javascript:easytag("{{"+"subst:Warning|@@1}}","Warning",1,1)', "Warning");
    addlilink(ATmenu,'javascript:easytag("{{"+"Big Brother project}}","Big Brother",0,0)', "Big Brother");
    addlilink(ATmenu,'javascript:easytag("{{"+"British TV shows project}}","British TV shows",0,0)', "TV shows");
    addlilink(ATmenu,'javascript:easytag("{{"+"British TV shows collaboration}}","British TV shows collaboration",0,0)', "collaboration");
  }
});

// -------STATUS CHANGER--------
$(function (){
  var user = document.getElementById( 'pt-userpage' ).firstChild.firstChild.data;
  var subpage = "/status";
  var scheme = "/StatusTemplate";
  var linkprefix = "https://secure.wikimedia.org/wikipedia/en/w/index.php?title=User:";
  var contribs = document.getElementById( 'pt-mycontris' );
  //Add the links
  addlilink(contribs, linkprefix+user+subpage+"&action=edit&newstatus=in", "In", "pt-status-in", "I'm in!", "");
  addlilink(contribs, linkprefix+user+subpage+"&action=edit&newstatus=busy", "Busy", "pt-status-busy", "I'm busy!", "");
  addlilink(contribs, linkprefix+user+subpage+"&action=edit&newstatus=out", "Out", "pt-status-out", "I'm out!", "");
  if (location.href.indexOf("User:"+user+subpage+"&action=edit&newstatus=") == -1) return; //Are we here to auto-edit the status?
  //Get new status
  status = location.href.split("=");
  status = status[status.length-1];
  //Modify the form
  document.getElementById('wpTextbox1').value = "{{User:"+user+scheme+"|"+status+"}}";
  document.getElementById('wpSummary').value = "Status: "+status;
  document.getElementById('wpMinoredit').checked = 'checked';
  //Submit it!
  document.getElementById('editform').submit();
});

// -------WIKISTRESS CHANGER--------
$(function (){
  var user = document.getElementById( 'pt-userpage' ).firstChild.firstChild.data;
  var subpage = "/wikistress";
  var linkprefix = "https://secure.wikimedia.org/wikipedia/en/w/index.php?title=User:";
  var logout = document.getElementById( 'pt-logout' );
  //Add the links
  logout.parentNode.appendChild(document.createElement('br'));
  addlilink(logout.parentNode, linkprefix+user+subpage+"&action=edit&newstress=1", "Stress: 1", "pt-stress-1", "Stress level 1", "");
  addlilink(logout.parentNode, linkprefix+user+subpage+"&action=edit&newstress=2", "2", "pt-stress-2", "Stress level 2", "");
  addlilink(logout.parentNode, linkprefix+user+subpage+"&action=edit&newstress=3", "3", "pt-stress-3", "Stress level 3", "");
  addlilink(logout.parentNode, linkprefix+user+subpage+"&action=edit&newstress=4", "4", "pt-stress-4", "Stress level 4", "");
  addlilink(logout.parentNode, linkprefix+user+subpage+"&action=edit&newstress=5", "5", "pt-stress-5", "Stress level 5", "");
  if (location.href.indexOf("User:"+user+subpage+"&action=edit&newstress=") == -1) return; //Are we here to auto-edit the status?
  //Get new status
  stress = location.href.split("=");
  stress = stress[stress.length-1];
  //Modify the form
  document.getElementById('wpTextbox1').value = "[[Image:Wikistress3D "+stress+" v3.jpg|200px]]";
  document.getElementById('wpSummary').value = "Stress: "+stress;
  document.getElementById('wpMinoredit').checked = 'checked';
  //Submit it!
  document.getElementById('editform').submit();
});
 // </nowiki></pre>