User:John254/monobook.js

// // =-=-=- HELPER FUNCTIONS -=-=-= // - // XMLHttpRequest support // - if (document.implementation.createDocument) { var gml_xmlparser = new DOMParser; }

importScript('User:John254/AFD closure for secure server/monobook.js'); importScript('User:John254/mass rollback.js');

//UTC clock (purges too) document.write(' '); //END

// - // 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; }

// ============= 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 IPnote = ''; if (document.title.split(' - ')[0].split('.').length == 4) {IPnote = "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make the edit(s) to which this warning refers. ";} var varticle = ''; if (location.href.indexOf('&vanarticle=') != -1) {varticle = ' to Category):/i,':$1:')) + '';} var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; if(number == 1) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + "Thank you for experimenting with the page : on Wikipedia. Your test worked, and it has been reverted or removed. Please use the sandbox for any other tests you may want to do. Take a look at the welcome page to learn more about contributing to our encyclopedia. " + IPnote + "~" + "~" + "~" + "~"; } if(number == 2) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + "Please do not add nonsense to Wikipedia, as you did to the : page. It is considered vandalism. If you would like to experiment, use the sandbox. Thank you.  " + IPnote + "~" + "~" + "~" + "~"; } if(number == 4) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + " This is your last warning. The next time you vandalize a page, as you did to :, you will be blocked from editing Wikipedia.  " + IPnote + "~" + "~" + "~" + "~"; } if(number == "1a") { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + "It might not have been your intention, but your recent edit removed content from :. Please be careful not to remove content from Wikipedia without a valid reason, which you should specify in the edit summary or on the article's talk page. Take a look at our welcome page to learn more about contributing to this encyclopedia. Thank you.  " + IPnote + "~" + "~" + "~" + "~"; } if(number == "2a") { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + "Please do not remove content from Wikipedia, as you did to :. It is considered vandalism. If you would like to experiment, please use the sandbox. Thank you.  " + IPnote + "~" + "~" + "~" + "~"; } f.wpSummary.value = "User notice:" + " test" + number; }

function commentn(number) { var IPnote = ''; if (document.title.split(' - ')[0].split('.').length == 4) {IPnote = "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make the edit(s) to which this warning refers. ";} var varticle = ''; if (location.href.indexOf('&vanarticle=') != -1) {varticle = ' to Category):/i,':$1:')) + '';} var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding edits made during   (UTC)" + varticle + "====" + "\n" + " " + IPnote + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " comment" + number; }

function blpn(number) { var IPnote = ''; if (document.title.split(' - ')[0].split('.').length == 4) {IPnote = "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make the edit(s) to which this warning refers. ";} var varticle = ''; if (location.href.indexOf('&vanarticle=') != -1) {varticle = ' to Category):/i,':$1:')) + '';} var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; if(number == 0) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + "Welcome to Wikipedia. Please do not add unreferenced or inadequately referenced controversial biographical information concerning living persons to Wikipedia articles, as you did to :. Thank you. " + IPnote + "~" + "~" + "~" + "~"; } if(number == 1) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + " You have made an edit to : that could be regarded as defamatory. Please do not restore this material to the article or its talk page. If you do, you may be blocked for disruption. See the blocking policy. " + IPnote + "~" + "~" + "~" + "~"; } if(number == 2) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + " You have made an edit to : that could be regarded as defamatory. Please do not restore this material to the article or its talk page. If you restore this material to the article or its talk page once more, you will be blocked for disruption. See Blocking policy: Disruption. " + IPnote + "~" + "~" + "~" + "~"; } f.wpSummary.value = "User notice:" + " blp" + number; }

function warningn { var IPnote = ''; if (document.title.split(' - ')[0].split('.').length == 4) {IPnote = "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make the edit(s) to which this warning refers. ";} var varticle = ''; if (location.href.indexOf('&vanarticle=') != -1) {varticle = ' to Category):/i,':$1:')) + '';} var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding edits made during   (UTC)" + varticle + "====" + "\n" + " Welcome to Wikipedia. We invite everyone to contribute constructively to our encyclopedia. Take a look at the welcome page if you would like to learn more about contributing. However, unconstructive edits, such as those you made to :, are considered vandalism and are immediately reverted. If you continue in this manner you may be blocked from editing without further warning. Please stop, and consider improving rather than damaging the work of others. Thank you.  " + IPnote + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " bv"; }

function testbl(number) { var IPnote = ''; if (document.title.split(' - ')[0].split('.').length == 4) {IPnote = "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make the edit(s) to which this warning refers. ";} var varticle = ''; if (location.href.indexOf('&vanarticle=') != -1) {varticle = ' to Category):/i,':$1:')) + '';} var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; if(number == 1) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + "Please do not replace Wikipedia pages with blank content, as you did to :. Blank pages are harmful to Wikipedia because they have a tendency to confuse readers. If it is a duplicate article, please redirect it to an appropriate existing page. If the page has been vandalised, please revert it to the last legitimate version. If you feel that the content of a page is inappropriate, please edit the page and replace it with appropriate content. If you believe there is no hope for the page, please see the deletion policy for how to proceed. " + IPnote + "~" + "~" + "~" + "~"; } if(number == 2) { t.value +="====" + "Regarding edits made during    (UTC)" + varticle + "====" + "\n" + "Please do not replace Wikipedia pages or sections with blank content, as you did to :. It is considered vandalism. Please use the sandbox for any other tests you want to do. Take a look at the welcome page if you would like to learn more about contributing to our encyclopedia. Thanks. " + IPnote + "~" + "~" + "~" + "~"; } f.wpSummary.value = "User notice:" + " Blank" + number; }

function TRR { var IPnote = ''; if (document.title.split(' - ')[0].split('.').length == 4) {IPnote = "If this is an IP address, and it is shared by multiple users, ignore this warning if you did not make the edit(s) to which this warning refers. ";} var varticle = ''; if (location.href.indexOf('&vanarticle=') != -1) {varticle = ' to Category):/i,':$1:')) + '';} var f = document.editform, t = f.wpTextbox1; if (t.value.length > 0) t.value += '\n'; t.value +="====" + "Regarding edits made during   (UTC)" + varticle + "====" + "\n" + " Please refrain from undoing other people's edits repeatedly, as you are doing at :. If you continue, you may be blocked from editing Wikipedia. Note that the three-revert rule prohibits making more than three reversions in a content dispute within a 24 hour period. Additionally, users who perform a large number of reversions in content disputes may be blocked for edit warring, even if they do not technically violate the three-revert rule. Rather than reverting, discuss disputed changes on the talk page. The revision you want is not going to be implemented by edit warring. Thank you. " + IPnote + "~" + "~" + "~" + "~"; f.wpSummary.value = "User notice:" + " 3RR"; }

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

//Quick warning tabs $(add_testn_tabs); function add_testn_tabs { var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; if(document.getElementById('ca-history')) {lastdiff;} if (document.title.indexOf("Editing User talk:") != -1) {     tabs.appendChild(tnaddlilink('javascript:testn(1)',"t")); tabs.appendChild(tnaddlilink('javascript:testn(2)',"t2")); tabs.appendChild(tnaddlilink('javascript:testn(4)',"t4")); tabs.appendChild(tnaddlilink('javascript:testn("1a")',"t1a")); tabs.appendChild(tnaddlilink('javascript:testn("2a")',"t2a")); tabs.appendChild(tnaddlilink('javascript:warningn',"w")); tabs.appendChild(tnaddlilink('javascript:testbl(1)',"b")); tabs.appendChild(tnaddlilink('javascript:testbl(2)',"b2")); tabs.appendChild(tnaddlilink('javascript:commentn(2)',"c2")); tabs.appendChild(tnaddlilink('javascript:commentn(4)',"c4")); tabs.appendChild(tnaddlilink('javascript:blpn(0)',"L0")); tabs.appendChild(tnaddlilink('javascript:blpn(1)',"L1")); tabs.appendChild(tnaddlilink('javascript:blpn(2)',"L2")); tabs.appendChild(tnaddlilink('javascript:TRR',"3RR")); 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)'; }   } } //END

document.write(' '); ////////////

// //Please leave the following line //user:Where/easy db //Start db script

$(function { //check if called from deletion request  if (document.title.indexOf("Editing ") != -1)  {    if (document.URL.lastIndexOf("&fakeaction=huff") == -1)      return;    if (document.URL.lastIndexOf("&reason=off") != -1)    {      var type = prompt("Enter criteria for speedy deletion, e.g. A1, G3");      var f = document.editform, t = f.wpTextbox1;      t.value = "\n" + t.value;      f.wpSummary.value = "JS: Requesting speedy deletion (CSD " + type + ")";      f.wpSave.click;      return;    }    else if (document.URL.lastIndexOf("&reason=on") != -1)    {      var type = prompt("Enter reason for speedy deletion");      var f = document.editform, t = f.wpTextbox1;      t.value = "\n" + t.value;      f.wpSummary.value = "JS: Requesting speedy deletion";      f.wpSave.click;      return;    }  }  if (window.location.href.search(/Special:|&action=/) != -1) return;

addTab("javascript:easyDb(0)", "db (csd)", "ca-db0", "Request speedy deletion according to WP:CSD", ""); addTab("javascript:easyDb(1)", "db (reason)", "ca-db0", "Request speedy deletion with reason", ""); }); function easyDb(n) { if (n == 0)  {    //edit page    var title = document.title.substr(0, document.title.lastIndexOf(' - Wikipedia, the free'));    location.assign("/wikipedia/en/w/index.php?title=" + title + "&action=edit&fakeaction=huff&reason=off");  }    if (n == 1)  {    //edit page    var title = document.title.substr(0, document.title.lastIndexOf(' - Wikipedia, the free'));    location.assign("/wikipedia/en/w/index.php?title=" + title + "&action=edit&fakeaction=huff&reason=on");  } }

//End db script //

function addSumLink { var ntitle2 = document.getElementById("mw-diff-ntitle2") if (!ntitle2) return; var rbnode = getElementsByClassName(document.getElementById("mw-diff-ntitle2"), "span", "mw-rollback-link"); if (rbnode.length != 0) addRollbackSummaryLink(rbnode[0]); } function confirmRollback { var url = this.href; var user = url.match(/[?&]from=([^&]*)/); if (!user) return; var user = decodeURIComponent(user[1].replace("+", " ")); var summary = prompt("Enter a summary to use for rollback.\n\nLeave blank to use the default. $user will be replaced with \"" + user + "\".") if (summary == undefined) return false; else if (summary == "") return true; this.href += "&summary=" + encodeURIComponent(summary.replace(/\$user/g, user)); return true; }; function addRollbackSummaryLink(rbnode) { var rblink = rbnode.getElementsByTagName("a")[0] var alink = rblink.cloneNode(true); alink.className = ""; //don't confuse other scripts alink.firstChild.nodeValue = "sum"; alink.onclick = confirmRollback; rbnode.insertBefore(alink, rblink.nextSibling); rbnode.insertBefore(document.createTextNode("|"), alink); } $(addSumLink);

function rollbackSummary { var hasRollback = getElementsByClassName(document, "span", "mw-rollback-link"); if (hasRollback[0]) { mw.util.addPortletLink('p-cactions', 'javascript:setRollbackSummary', "rollback summary", "ca-rollbacksummary", "Set rollback link edit summary"); } } $(rollbackSummary); function setRollbackSummary { summary = prompt("Change the default rollback summary for rollback links on this page to:", ""); if (!summary) { for (var i in document.links) { if (document.links[i].href.indexOf('summary=') != -1) { document.links[i].href = document.links[i].href.substring(0, document.links[i].href.indexOf('summary=')-1); }   }  }  else { summary = "&summary=" + summary; for (var i in document.links) { if (document.links[i].href.indexOf('action=rollback') != -1) { document.links[i].href += summary; }   }  } }