User:Myleslong/monobook.js

// window.onload = Main; function Main { changelinks; addtoolboxlinks; addpurge; morelinks; LivePreviewInstall; }

$(add_testn_tabs);

function add_link2(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); na.appendChild(document.createTextNode(name));

var li = document.createElement('li'); li.appendChild(na);

var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; tabs.appendChild(li); }

function changelinks { if(!document.getElementById) return; document.getElementById('pt-mytalk').firstChild.innerHTML = 'my Talk page'; document.getElementById('pt-preferences').firstChild.innerHTML = 'Preferences'; document.getElementById('pt-watchlist').firstChild.innerHTML = 'Check my Watchlist'; document.getElementById('pt-mycontris').firstChild.innerHTML = 'My Contributions'; document.getElementById('pt-logout').firstChild.innerHTML = 'Log out'; } function addtoolboxlinks { var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; addlilink(tb, '/wiki/Special:Newpages', 'New pages', ''); addlilink(tb, '/wiki/Category:Candidates_for_speedy_deletion', 'Speedy deletions', ''); addlilink(tb, '/wiki/Wikipedia:Vandalism_in_progress', 'Vandalism', ''); addlilink(tb, '/wiki/Wikipedia:Village_pump_%28all%29', 'Village pump', ''); addlilink(tb, '/wiki/WP:RfPP', 'Protection requests', ''); addlilink(tb, '/wiki/Wikipedia:Administrators%27_noticeboard', 'Noticeboard', ''); addlilink(tb, '/wiki/Wikipedia:Administrators%27_noticeboard/Incidents', 'Incidents', ''); addlilink(tb, '/wiki/Wikipedia:Administrators%27_noticeboard/3RR', '3RR violations', ''); } // Filter changes live // User:Lupin/recent2.js - please include this line mw.loader.load(            'https://en.wikipedia.org/w/index.php?title=User:Lupin/recent2.js'             + '&action=raw&ctype=text/javascript&dontcountme=s'); // // - // God-like Monobook skin // (c) 2005 Sam Hocevar  // $Id: godmode-light.js 1029 2006-01-09 11:05:19Z sam $ // -

// - // Language support, taken from phase3/languages/* // - var rollbacklink = ' [ revert as vandalism ] '; var vrollbacklink = 'rvv'; var cantrollback = 'Cannot revert edit; last contributor is only author of this page.'; var alreadyrolled = 'Cannot rollback last edit of $1 by $2 (Talk); someone else has edited or rolled back the page already. Last edit was by $3 (Talk). '; var revertpage = 'Reverted vandalism by $2 to last version by $1. If you continue to compromise the integrity of pages you will be blocked from editing.';

// - // 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; } // - // 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')[1].title.split(':')[1]; vandal = l[i].getElementsByTagName('a')[1].href.split(':')[2].split('&')[0]; var t = l[i].innerHTML n = t.indexOf(') ) ' + rollbacklink + '</str ' + t.substring(n + 5, t.length); }   }  } }

// - // 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 += ' Bad authentication token! Ignore this warning if you initiated the revert. (anti-XSS bypassed) '; //return; }

gml_xmlhttp = HTTPClient; if (!gml_xmlhttp) return; history_url = gml_url + '&action=history&limit=50'; document.getElementById('bodyContent').innerHTML += ' 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(//, ''); doc = gml_XMLParse(xml); if (!doc || !doc.getElementById('pagehistory')) { document.getElementById('bodyContent').innerHTML += ' Failed to parse XML data returned by the server.'; document.getElementById('bodyContent').innerHTML += ' 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.'; document.getElementById('bodyContent').innerHTML += ' Dump of the unparseable page : ' + xml.replace(/&/g, '&amp;').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 += ' Error: Last editor is ' + name + ', not ' + gml_vandal + '. The vandal may have already been reverted.'; 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 += ' Error: ' + gml_vandal + ' is the only editor!'; return; }

gml_xmlhttp = HTTPClient; if (!gml_xmlhttp) return; document.getElementById('bodyContent').innerHTML += ' 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 += ' Submitting form... '; document.getElementById('bodyContent').appendChild(newform); // Submit the form newform.submit; window.open('http://en.wikipedia.org/w/index.php?title=User talk:' + gml_vandal + '&action=edit',             'targetname',    'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); //loadcontrib } function loadcontrib { location.href = 'http://en.wikipedia.org/wiki/Special:Contributions/' + gml_vandal, 'targetname'; } // - // 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); } //Auto AFD Lister-- // This needs to change depending on skin used. function add_link(url, name) { var na = document.createElement('a'); na.setAttribute('href', url); na.appendChild(document.createTextNode(name));

var li = document.createElement('li'); li.appendChild(na);

var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; tabs.appendChild(li); }

function strip_namespace(target) { var colon = target.indexOf(':'); if (colon != -1) {     var spaces = new Array('User', 'Wikipedia', 'Image', 'MediaWiki', 'Template', 'Help', 'Category'); 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; }

function vfd { document.editform.wpTextbox1.value = '\n' + document.editform.wpTextbox1.value; document.editform.wpSummary.value = 'afd';

var target = document.editform.action; target = target.substring(target.indexOf('title=') + 6,                           target.lastIndexOf('&action=submit'));

var months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); var date = new Date; date = date.getUTCFullYear + '_' + months[date.getUTCMonth] + '_' + date.getUTCDate;

var pagename = strip_namespace(target);

window.open('/w/index.php?title=Wikipedia:Articles_for_deletion/' + pagename + '&action=edit&fakeaction=vfdsub&faketarget=' + target,             'Afd ' + unescape(target),              'status,toolbar,location,menubar,directories,resizeable,scrollbars'); window.open('/w/index.php?title=Wikipedia:Articles_for_deletion/Log/' + date + '&action=edit&fakeaction=vfdlist&faketarget=' + pagename,             'AfdLog ' + unescape(target),              'status,toolbar,location,menubar,directories,resizeable,scrollbars'); }

function autovfd { if (document.title.indexOf('Editing ') == 0) {     var action = ''; var target = ''; if (location.search) {         var l = location.search.substring(1).split('&'); for (var i = 0; i < l.length; ++i) {             var eq = l[i].indexOf('='); var name = l[i].substring(0, eq); if (name == 'fakeaction') action = l[i].substring(eq + 1); else if (name == 'faketarget') target = unescape(l[i].substring(eq + 1)).replace(/_/g, ' '); }       }

if (action == 'vfdlist') {         document.editform.wpTextbox1.value += '\n'; document.editform.wpSummary.value = 'Articles for deletion/' + target + ''; }     else if (action == 'vfdsub') {         if (document.editform.wpTextbox1.value.length > 0) {             target = document.editform.action; target = unescape(target.substring(target.indexOf('title=') + 6, target.lastIndexOf('&action=submit'))).replace(/_/g, ' '); window.alert("There's an old afd at the default location already.\n\n" +                          'Please either move it out of the way (and update existing links to it), or file the afd by hand in another location (such as ' + target + ' (2)).'); }         else document.editform.wpTextbox1.value += '===' + target + '===\n' + 'Reason for nomination. ' + '\n*\n*\n*\n'; }     else ;   } }

if (window.addEventListener) window.addEventListener('load', autovfd, false); else if (window.attachEvent) window.attachEvent('onload', autovfd);

//AFD Closer //this helps automate AfD closing by adding a 'close' tab to AfD debates //written by User:Johnleemk based on WikiProject User scripts/Scripts/test-n.js by User:Celestianpower

function afdaddlilink(url, name) { var na = document.createElement('a'); na.setAttribute('href', url);

var txt = document.createTextNode(name); na.appendChild(txt);

var li = document.createElement('li'); li.appendChild(na); return li; }

function result { var close = prompt("Result of debate?") var f = document.editform, t = f.wpTextbox1; t.value = " " + close + ". " + "~" + "~" + "~" + "~" + '\n' + '\n' + t.value; if (t.value.length > 0) t.value += '\n'; t.value += ""; f.wpSummary.value = "Closing debate; result was " + close; }

function relist { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value += "~" + "~" + "~" + "~"; f.wpSummary.value = "Relisting debate"; }

function keep { var date = prompt("Nomination was made when?") var votepage = prompt("Vote page is? (Enter 'd' for default.)") var f = document.editform, t = f.wpTextbox1;

// If default votepage... if (votepage=="d") {       var temp = document.editform.action.split("/w/index.php?title="); var temp = temp[1].split("&action=submit"); var temp = temp[0].substring(5); var votepage = temp; }

t.value = "" + '\n' + '\n' + t.value; f.wpSummary.value = "Article survived AfD"; }

function no_consensus { var date = prompt("Nomination was made when?") var votepage = prompt("Vote page is? (Enter 'd' for default.)") var f = document.editform, t = f.wpTextbox1;

// If default votepage... if (votepage=="d") {       var temp = document.editform.action.split("/w/index.php?title="); var temp = temp[1].split("&action=submit"); var temp = temp[0].substring(5); var votepage = temp; }

t.value = "" + '\n' + '\n' + t.value; f.wpSummary.value = "Article survived AfD with no consensus"; }

function redirect { var date = prompt("Nomination was made when?") var redirect = prompt("Redirect to?") var votepage = prompt("Vote page is? (Enter 'd' for default.)") var f = document.editform, t = f.wpTextbox1;

// If default votepage... if (votepage=="d") {       var temp = document.editform.action.split("/w/index.php?title="); var temp = temp[1].split("&action=submit"); var temp = temp[0].substring(5); var votepage = temp; }

t.value = "" + '\n' + '\n' + t.value; f.wpSummary.value = "Article redirected to " + redirect + " as per AfD"; }

function merge { var date = prompt("Nomination was made when?") var redirect = prompt("Merge and redirect to?") var votepage = prompt("Vote page is? (Enter 'd' for default.)") var f = document.editform, t = f.wpTextbox1;

// If default votepage... if (votepage=="d") {       var temp = document.editform.action.split("/w/index.php?title="); var temp = temp[1].split("&action=submit"); var temp = temp[0].substring(5); var votepage = temp; }

t.value = "" + '\n' + '\n' + t.value; f.wpSummary.value = "Article merged and redirected to " + redirect + " as per AfD"; }

function other { var date = prompt("Nomination was made when?") var result = prompt("Result was?") var votepage = prompt("Vote page is? (Enter 'd' for default.)") var f = document.editform, t = f.wpTextbox1;

// If default votepage... if (votepage=="d") {       var temp = document.editform.action.split("/w/index.php?title="); var temp = temp[1].split("&action=submit"); var temp = temp[0].substring(5); var votepage = temp; }

t.value = "" + '\n' + '\n' + t.value; f.wpSummary.value = "AfDed; result was " + result; }

function add_afd_tabs { var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

// Only add for pages with the right string somewhere in the title if (document.title.indexOf("Editing Wikipedia:Articles for deletion/") != -1) {     tabs.appendChild(afdaddlilink('javascript:result',"close")); tabs.appendChild(afdaddlilink('javascript:relist',"relist")); } if (document.title.indexOf("Editing Talk:") != -1) {     tabs.appendChild(afdaddlilink('javascript:keep',"K")); tabs.appendChild(afdaddlilink('javascript:no_consensus',"NC")); tabs.appendChild(afdaddlilink('javascript:redirect',"R")); tabs.appendChild(afdaddlilink('javascript:merge',"M")); } }

$(add_afd_tabs);

//end AfD closing script

// =-=-=- HELPER FUNCTIONS -=-=-=

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 addToolboxLink(url, name, id){ var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; addlilink(tb, url, name, id); }

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 addLink(where, url, name, id, title, key, after){ //* where is the id of the toolbar where the button should be added; //  i.e. one of "p-cactions", "p-personal", or "p-navigation". //* url is the URL which will be called when the button is clicked. //  javascript: urls can be used to do more complex things. //* name is what will appear as the name of the button. //* id is the id of the button; it's best to define one. //  Use a prefix to make sure its unique. Optional. //* title is the tooltip title that gives a longer description //  of the button; if you define a accesskey, mention it here. Optional. //* key is the char you want for the accesskey. Optional. //* after is the id of the button you want to follow this one. Optional. 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; } ////////////////////////////////////////////////////////////////

// ======== USER TABS ======= addOnloadHook(function {  if (document.title.search("/") != -1 || document.title.search("- History -") != -1) { //no subpages or history      return;   }   if (document.title.indexOf("User:") == 0 || document.title.indexOf("User talk:") == 0) {      username_a = document.URL.match(/:.*:(.*)/);      username=username_a[1];      addTab("http://en.wikipedia.org/w/index.php?title=Special%3ALog&type=block&user=&page=User:" + username, "block log", "ca-blog", "block log", "");      addTab("http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?dbname=enwiki_p&user=" + username, "edit count", "ca-kate", "user info", "");   } }); //=============== UTC Clock on top right corner of pages ========= // Add time to your monobook "personal menu" list at the very top of the page. By User:Mathwiz2020 // Indicate where you would like the time to appear: //   pt-userpage, pt-mytalk, pt-preferences, pt-watchlist, pt-mycontris, pt-logout // leave blank to append after "logout" gsTimeInsertBefore = '';

function makeTime { var li = document.createElement( 'li' ); li.id = 'pt-time';

var mySpan = document.createElement( 'span' ); mySpan.appendChild( document.createTextNode( '00:00:00' ) );

li.appendChild( mySpan );

if ( ! gsTimeInsertBefore ) { // append to end (right) of list document.getElementById( 'pt-logout' ).parentNode.appendChild( li ); } else { var before = document.getElementById( gsTimeInsertBefore ); before.appendChild( li, before ); } doTime = window.setTimeout("getTime", 1000); }

$( makeTime );

function getTime { var time = new Date; var hours = time.getUTCHours; if (hours < 10) { hours = "0" + hours; } var minutes = time.getUTCMinutes; if (minutes < 10) { minutes = "0" + minutes; } var seconds = time.getUTCSeconds; if (seconds < 10) { seconds = "0" + seconds; } var currentTime = hours + ":" + minutes + ":" + seconds; document.getElementById('pt-time').childNodes[0].childNodes[0].replaceData(0, 8, currentTime); doTime = window.setTimeout("getTime", 1000); }

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

// ============= test-n.js ============== function tnaddlilink(url, name) { var na = document.createElement('a'); na.setAttribute('href', url);

var txt = document.createTextNode(name); na.appendChild(txt);

var li = document.createElement('li'); li.appendChild(na); return li; }

function testn(number) { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding edits made during   (UTC)" + "====" + "  " + "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make any unconstructive edits. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " test" + number; }

function warningn { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding edits made during   (UTC)" + "====" + "  " + "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make any malicious edits. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " bv"; }

function revertsn { var article = prompt("Enter history page URL") var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding reversions" + "[" + article + "] " + "made on   (UTC)" + "====" + "  " + "If this is an IP address, and it is shared by multiple users, ignore this warning, but aviod making any reverts within 24 hours of this warning in order to avoid any confusion. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " 3rr"; }

function finalwn { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value += ": ~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " final warning"; }

function blockn { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value += ": ~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " temporary block"; }

function rrblockn { username_a = document.URL.match(/:.*:(.*)/); username=username_a[1]; var article = prompt("Enter history page URL") var time = prompt("Enter the duration of the block (in hours)") var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value += ": The duration of the block+ username + " is " + time + " hours. Here are the reverts in question[" + article + "]. ~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " temporary 3RR block"; }

function testbl { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding edits made during   (UTC)" + "====" + "  " + "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make any malicious edits. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " test2a"; }

function spam { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding edits made during   (UTC)" + "====" + "  " + "If this is an IP address, and it is shared by multiple users, ignore this warning if you were not the one who added spam links. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " spam2a"; }

function rfppp { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +=":Fully protected due to revert warring. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: page fully protected"; }

function rfpps { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +=":Semi-protected due to heavy vandalism. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: page semi-protected"; }

function rfppm { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +=":Un-protected. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: page un-protected"; }

function rfppu { var pro = prompt("A user already *protected* or *un-protected*?") var user = prompt("What user?") var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +=":Page already " + pro + "+ user + " by " + user + "" + ". " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: already " + pro + " by another user"; }

function rfppru { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +=":The issues that started the revert war have not yet been resolved and the edits also appear to be in good faith. It is also too soon to assume that the editors have just left for good, so the page is better left protected for now. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: un-protection request denied"; }

function rfppr { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +=":There is not enough recent activity to justify protection at this time. For now, be sure to use descriptive edit summaries and discuss edits on talk. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: protection request denied"; }

function rfpprv { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +=":There is not enough recent activity to justify protection at this time. Just watchlist and revert any vandalism. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: protection request denied"; }

function rrwarn { var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="*The user has now been warned per 3RR. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: user warned"; }

function rrblock { var number = prompt("User blocked for how many hours?") var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="*I have blocked the user for " + number + " hours per 3RR. " + "~" + "~" + "~" + "~"; f.wpSummary.value = "Response: user blocked"; }

function prod { document.editform.wpTextbox1.value = '\n' + document.editform.wpTextbox1.value; document.editform.wpSummary.value = 'This page has been proposed for deletion and will be deleted in 5 days if no one objects.'; }

function protect { document.editform.wpTextbox1.value = '\n' + document.editform.wpTextbox1.value; document.editform.wpSummary.value = '+'; window.open('http://en.wikipedia.org/w/index.php?title=Wikipedia:List_of_protected_pages&action=edit&section=10',             'targetname',    'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); }

function sprotect { document.editform.wpTextbox1.value = '\n' + document.editform.wpTextbox1.value; document.editform.wpSummary.value = '+'; window.open('http://en.wikipedia.org/w/index.php?title=Wikipedia:List_of_protected_pages&action=edit&section=11',             'targetname',    'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); }

function usprotect { document.editform.wpTextbox1.value = '\n' + document.editform.wpTextbox1.value; document.editform.wpSummary.value = '+'; window.open('http://en.wikipedia.org/w/index.php?title=Wikipedia:List_of_protected_pages&action=edit&section=17',             'targetname',    'location=no,toolbar=no,status=no,directories=no,scrollbars=yes'); }

function add_testn_tabs { var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0];

if (document.title.indexOf("") != -1) { if (document.title.indexOf("Editing ") != -1) { if (document.title.indexOf("Editing User talk:") != -1) {     tabs.appendChild(tnaddlilink('javascript:revertsn',"rr")); tabs.appendChild(tnaddlilink('javascript:testn(2)',"v")); tabs.appendChild(tnaddlilink('javascript:testbl',"b")); tabs.appendChild(tnaddlilink('javascript:spam',"s")); tabs.appendChild(tnaddlilink('javascript:warningn',"w")); tabs.appendChild(tnaddlilink('javascript:finalwn',"fw")); tabs.appendChild(tnaddlilink('javascript:rrblockn',"rrb")); tabs.appendChild(tnaddlilink('javascript:blockn',"vb")); tabs.appendChild(tnaddlilink('javascript:usprotect',"(sp)")); if(document.getElementById('ca-delete')) {       document.getElementById('ca-delete').firstChild.innerHTML = '[d]'; }       if(document.getElementById('ca-move')) {     document.getElementById('ca-move').firstChild.innerHTML = '[m]'; }       if(document.getElementById('ca-watch')) {     document.getElementById('ca-watch').firstChild.innerHTML = '[w]'; }       if(document.getElementById('ca-unwatch')) {     document.getElementById('ca-unwatch').firstChild.innerHTML = '[uw]'; }     if(document.getElementById('ca-edit')) {       document.getElementById('ca-edit').firstChild.innerHTML = 'Edit'; }     if(document.getElementById('ca-talk')) {       document.getElementById('ca-talk').firstChild.innerHTML = 'Talk'; }     if(document.getElementById('ca-protect')) {       document.getElementById('ca-protect').firstChild.innerHTML = 'P (off)'; }     if(document.getElementById('ca-unprotect')) {       document.getElementById('ca-unprotect').firstChild.innerHTML = 'P (on)'; }   }  else if (document.title.indexOf("Editing Wikipedia:Requests for page protection (section)") != -1) {   tabs.appendChild(tnaddlilink('javascript:rfpps',"a|s")); tabs.appendChild(tnaddlilink('javascript:rfppp',"a|p")); tabs.appendChild(tnaddlilink('javascript:rfppm',"a|u")); tabs.appendChild(tnaddlilink('javascript:rfpprv',"r|s")); tabs.appendChild(tnaddlilink('javascript:rfppr',"r|p")); tabs.appendChild(tnaddlilink('javascript:rfppru',"r|u")); tabs.appendChild(tnaddlilink('javascript:rfppu',"au")); if(document.getElementById('ca-protect')) {       document.getElementById('ca-protect').firstChild.innerHTML = 'P (off)'; }     if(document.getElementById('ca-unprotect')) {       document.getElementById('ca-unprotect').firstChild.innerHTML = 'P (on)'; }     if(document.getElementById('ca-delete')) {       document.getElementById('ca-delete').firstChild.innerHTML = '[d]'; }       if(document.getElementById('ca-move')) {     document.getElementById('ca-move').firstChild.innerHTML = '[m]'; }      if(document.getElementById('ca-watch')) {     document.getElementById('ca-watch').firstChild.innerHTML = '[w]'; }       if(document.getElementById('ca-unwatch')) {     document.getElementById('ca-unwatch').firstChild.innerHTML = '[uw]'; }     if(document.getElementById('ca-edit')) {       document.getElementById('ca-edit').firstChild.innerHTML = 'Edit'; }     if(document.getElementById('ca-talk')) {       document.getElementById('ca-talk').firstChild.innerHTML = 'Talk'; }   }  else if (document.title.indexOf("Editing Wikipedia:Administrators' noticeboard/3RR (section)") != -1) {   tabs.appendChild(tnaddlilink('javascript:rrwarn',"r|wn")); tabs.appendChild(tnaddlilink('javascript:rrblock',"r|bl")); if(document.getElementById('ca-protect')) {       document.getElementById('ca-protect').firstChild.innerHTML = 'P (off)'; }   if(document.getElementById('ca-unprotect')) {       document.getElementById('ca-unprotect').firstChild.innerHTML = 'P (on)'; }   }  else {     autocopyvio; tabs.appendChild(tnaddlilink('javascript:protect',"(fp)")); tabs.appendChild(tnaddlilink('javascript:sprotect',"(sp)")); tabs.appendChild(tnaddlilink('javascript:prod',"pfd")); add_link('javascript:vfd', 'Afd'); if(document.getElementById('ca-talk')) {       document.getElementById('ca-talk').firstChild.innerHTML = 'Talk'; }     if(document.getElementById('ca-protect')) {       document.getElementById('ca-protect').firstChild.innerHTML = 'P (off)'; }     if(document.getElementById('ca-unprotect')) {       document.getElementById('ca-unprotect').firstChild.innerHTML = 'P (on)'; }     if(document.getElementById('ca-edit')) {       document.getElementById('ca-edit').firstChild.innerHTML = 'Edit'; }  } } else if (document.title.indexOf("User:") != -1) { lastdiff if(document.getElementById('ca-talk')) {    document.getElementById('ca-talk').firstChild.innerHTML = 'Talk'; }     if(document.getElementById('ca-protect')) {       document.getElementById('ca-protect').firstChild.innerHTML = 'Protection (off)'; }     if(document.getElementById('ca-unprotect')) {       document.getElementById('ca-unprotect').firstChild.innerHTML = 'Protection (on)'; } } else if (document.title.indexOf("User talk:") != -1) { lastdiff if(document.getElementById('ca-talk')) {    document.getElementById('ca-talk').firstChild.innerHTML = 'Talk'; } if(document.getElementById('ca-protect')) {       document.getElementById('ca-protect').firstChild.innerHTML = 'Protection (off)'; } if(document.getElementById('ca-unprotect')) {       document.getElementById('ca-unprotect').firstChild.innerHTML = 'Protection (on)'; } } else { lastdiff if(document.getElementById('ca-protect')) {       document.getElementById('ca-protect').firstChild.innerHTML = 'Protection (off)'; } if(document.getElementById('ca-unprotect')) {       document.getElementById('ca-unprotect').firstChild.innerHTML = 'Protection (on)'; } } } if (document.title.indexOf("Wikipedia:") != -1) { addPurge; } if (document.title.indexOf("User:") != -1) { addPurge; } if (document.title.indexOf("Category:") != -1) { addPurge; } }

function copyvio { document.editform.wpTextbox1.value = '{' + '{' + 'copyvio|url=}}'; document.editform.wpSummary.value = 'copyvio';

var target = document.editform.action; target = target.substring(target.indexOf('title=') + 6,                           target.lastIndexOf('&action=submit'));

var months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); var date = new Date; // date = months[date.getUTCMonth] + '_' + date.getUTCDate; var datestring = date.getUTCFullYear + '_' + months[date.getUTCMonth] + '_' + date.getUTCDate;

var pagename = strip_namespace(target);

window.open('/w/index.php?title=Wikipedia:Copyright_problems/' + datestring + '&action=edit&fakeaction=copyviolist&faketarget=' + pagename,             'status,toolbar,location,menubar,directories,resizeable,scrollbars'); }

function autocopyvio { if (document.title.indexOf('Editing ') == 0) {     var action = ''; var target = ''; if (location.search) {         var l = location.search.substring(1).split('&'); for (var i = 0; i < l.length; ++i) {             var eq = l[i].indexOf('='); var name = l[i].substring(0, eq); if (name == 'fakeaction') action = l[i].substring(eq + 1); else if (name == 'faketarget') target = unescape(l[i].substring(eq + 1)).replace(/_/g, ' '); }       }

if (action == 'copyviolist') { //         var index = document.editform.wpTextbox1.value.lastIndexOf("\n==Footer=="); /*           if (index == -1) {           window.alert("Couldn't find footer\n\n"); }          else { */ //           var firsthalf = document.editform.wpTextbox1.value.substr(0,index); //           var secondhalf = document.editform.wpTextbox1.value.substr(index); document.editform.wpTextbox1.value += '*' + target + ' (history &middot; last edit) ' + ' from [' + '] ~' + '' + '~'; document.editform.wpSummary.value = 'Copyvio ' +  + target + ; } //       }      else add_link2('javascript:copyvio', '(copyvio)'); } }

//addOnloadHook(autocopyvio);

// User:Lupin/popups.js - please include this line mw.loader.load(            'https://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js'             + '&action=raw&ctype=text/javascript&dontcountme=s'); popupAdminLinks=true; popupSubpopups=false;

//========= LAST DIFF TAB ========= function lastdiff {   z=document.getElementById("content").childNodes; for (var n=0;n<z.length;n++) { if (z[n].className=="firstHeading") { var pname=z[n].textContent; }   }    var l=addTab("http://en.wikipedia.org/w/index.php?title=" + pname + "&diff=cur&oldid=prev", 'last', ''); l.lastChild.title="Show most recent diff"; }

//Interiot's javascript edit counter if (document.title.indexOf('User:Interiot/Tool2/code.js') != -1) { mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:Interiot/Tool2/code.js&action=raw&ctype=text/javascript'); }

//