User:Krich/monobook.js

// 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');

mw.loader.load('https://en.wikipedia.org/w/index.php?title=User:Interiot/Tool2/code.js&action=raw&ctype=text/javascript');

// - // 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 = 'rollback'; 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 edits by $2 to last version by $1'; switch (document.getElementsByTagName('html')[0].lang) { case 'fr': rollbacklink = 'rÃ©voquer'; cantrollback = 'Impossible de rÃ©voquer: dernier auteur est le seul Ã avoir modifiÃ© cet article'; alreadyrolled = 'Impossible de rÃ©voquer la derniÃ¨re modification de $1 par $2 (Talk); quelqu\'un d\'autre Ã  dÃ©jÃ  modifer ou rÃ©voquer l\'article. La derniÃ¨re modificaion Ã©tait de $3 (Talk). '; // lol @ pathetic grammar revertpage = "RÃ©vocation des modifications de $2 et restauration d'une prÃ©cÃ©dente version de $1"; break; case 'de': rollbacklink = 'ZurÃ¼cksetzen'; cantrollback = 'Die Ã„nderung kann nicht zurÃ¼ckgenommen werden; der letzte Autor ist der einzige.'; alreadyrolled = 'Die ZurÃ¼cknahme des Artikels $1 von $2 (Diskussion) ist nicht mÃ¶glich, da eine andere Ã„nderung oder RÃ¼cknahme erfolgt ist. Die letzte Ã„nderung ist von $3 (Diskussion)'; revertpage = 'Ã„nderungen von Benutzer:$2 rÃ¼ckgÃ¤ngig gemacht und letzte Version von Benutzer:$1 wiederhergestellt'; break; case 'es': rollbacklink = 'Revertir'; cantrollback = 'No se pueden revertir las ediciones; el Ãºltimo colaborador es el Ãºnico autor de este artÃ­culo.'; alreadyrolled = 'No se puede revertir la Ãºltima ediciÃ³n de $1 por $2 (DiscusiÃ³n); alguien mÃ¡s ya ha editado o revertido esa pÃ¡gina. La Ãºltima ediciÃ³n fue hecha por $3 (DiscusiÃ³n). ';   revertpage = 'Revertida a la Ãºltima ediciÃ³n de $1'; break; case 'it': rollbacklink = 'rollback'; cantrollback = 'Impossibile tornare ad una versione precedente: l\'ultima modifica Ã¨ stata apportata dall\'unico utente che abbia lavorato a questo articolo.'; //alreadyrolled = ''; revertpage = 'Riportata alla revisione precedente da $1'; break; case 'pt': rollbacklink = 'voltar'; cantrollback = 'NÃ£o foi possÃ­vel reverter a ediÃ§Ã£o; o Ãºltimo contribuidor Ã© o Ãºnico autor deste artigo.'; alreadyrolled = 'NÃ£o foi possÃ­vel reverter as ediÃ§Ãµes de $1 por $2 (Talk); alguÃ©m o editou ou jÃ¡ o reverteu. A Ãºltima ediÃ§Ã£o foi de $3 (Conversar com ele). ';   revertpage = 'Revertidas ediÃ§Ãµes por $2, para a Ãºltima versÃ£o por $1'; break; }

// - // 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 += ' Bad authentication token!'; 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 + '!'; 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; }

// - // 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]; var t = l[i].innerHTML n = t.indexOf(') ) = 0 && article != '' && toplink.indexOf('oldid=') == -1) { l[i].innerHTML = t.substring(0, n + 5) + '   [' + rollbacklink + '] ' + 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 == 1) { vandal = a[0].innerHTML; } else { vandal = c.innerHTML.replace(/ \(.*/, ).replace(/.* /, );   }    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 + ']') != -1)          break;      //if (t.indexOf('&amp;diff=0') != -1) {      if (t.indexOf(' (') != -1) { article = l[i].getElementsByTagName('a')[0].href.split('&')[0].replace(/[^\/]*\/\/[^\/]*/, ''); l[i].innerHTML += ' [' + rollbacklink + ']'; }   }  } }

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

/*

This tool hits the RSS feed for recent changes every 30 seconds or so and checks for common vandalism. It does not make a separate server request for every edit.

Currently, the RSS feed is full of holes and so this may miss many edits. http://bugzilla.wikimedia.org/show_bug.cgi?id=3942



//

//DOWNLOADER

window.recent2_download=function(bundle) { // mandatory: bundle.url // bundle.onSuccess // bundle.onFailure // bundle.otherStuff OK too

var x = window.XMLHttpRequest ? new XMLHttpRequest : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : false;

if (x) { x.onreadystatechange=function { x.readyState==4 && recent2_downloadComplete(x,bundle); };   x.open("GET",bundle.url,true); // x.setRequestHeader('Accept','text/*'); x.send(null); } }

window.recent2_downloadComplete=function(x,bundle) { x.status==200 && ( bundle.onSuccess && bundle.onSuccess(x,bundle) || true ) || ( bundle.onFailure && bundle.onFailure(x,bundle) || alert(x.statusText)); }

window.gettingBadWords=false; window.badWords=null; window.getBadWords=function { window.gettingBadWords=true; recent2_download( { url: 'http://en.wikipedia.org/w/index.php?title=User:Lupin/badwords&action=raw&ctype=text/css',             onSuccess: processBadWords, onFailure: function  { recent2_runOnce(getBadWords, 15000); return true;}}); } window.processBadWords=function(d) { var data=d.responseText.split('\n'); var ret=[]; for (var i=0; i.*(([^-{}.\s'=wI:*#0-9A-F])\\2{2,}|\\b(" + ret.join('|') + ")[\\b\\|]).* ", 'im'); }

window.gettingWatchlist=false; window.watchlist=null; window.getWatchlist=function { window.gettingWatchlist=true; recent2_download({url: 'http://en.wikipedia.org/wiki/Special:Watchlist/edit',              onSuccess: processWatchlist, onFailure: function  { recent2_runOnce(getWatchlist, 15000); return true; }}); } window.processWatchlist=function(req, bundle) { var watchlist={}; var lines=req.responseText.split('\n'); for (var i=0; i -1) { var article=lines[i].replace(/.*title="(.*?)">.*/, '$1'); watchlist[article]=true; } }  window.watchlist=watchlist; }

window.recent2_runOnce=function(f, time) { var i=recent2_runOnce.timers.length; var ff = function { clearInterval(recent2_runOnce.timers[i]); f }; var timer=setInterval(ff, time); recent2_runOnce.timers.push(timer); } recent2_runOnce.timers=[];

var feed='http://en.wikipedia.org/w/index.php?title=Special:Recentchanges&feed=rss';

window.newOutputDiv=function(klass, position) { var h1=document.getElementsByTagName('h1')[0]; var ret=document.createElement('div'); if (klass) ret.className=klass; if (!position) position='bottom'; switch(position) { case 'top': h1.parentNode.insertBefore(ret, h1.nextSibling); break; case 'bottom': h1.parentNode.appendChild(ret); break; default: if (!newOutputDiv.alerted) { alert('Unknown position '+position+' in recent2.js, newOutputDiv'); window.newOutputDiv.alerted=true; }   return newOutputDiv(klass, 'bottom'); } ret.id=newOutputDiv.uid++; window.outputDivs.push(ret); return ret; } window.newOutputDiv.alerted=false; window.newOutputDiv.uid=0; window.outputDivs=[];

window.grabRecentChanges=function(feed) { if (! window.badWords && window.recent2_filter_badwords ) { if ( ! window.gettingBadWords ) getBadWords; return recent2_runOnce(function{grabRecentChanges(feed);}, 500); } if (! window.watchlist && window.recent2_filter_watchlist) { if (! window.gettingWatchlist ) getWatchlist; return recent2_runOnce(function{grabRecentChanges(feed);}, 500); } var pos=window.recent2_outputPosition; if (window.recent2_outputPosition=='top') { var output=newOutputDiv('recent2_lines', pos); var status=newOutputDiv('recent2_status', pos); } else { var status=newOutputDiv('recent2_status', pos); var output=newOutputDiv('recent2_lines', pos); } status.style.borderStyle='solid'; status.style.borderColor='orange'; status.innerHTML=greyFont+'(' + count + ') updating... ';

recent2_download({url: feed, onSuccess: processRecentChanges, output: output, status: status, onFailure: feedFailed}); }

var greyFont='';

window.feedFailed=function(x,bundle) { try { bundle.status.innerHTML+=greyFont+'failed: '+x.statusText + ' '; } catch (err) { bundle.status.innerHTML+=greyFont+'failed badly: '+err+' '; } return true; }

window.recent2_newWindows=true;

window.linkmaker=function(url, text) { var s='<a href="' + url + '"'; window.recent2_newWindows && (s += ' target="_blank"'); s += '>' + text + '</a>'; return s; }

window.recent2_ipUserRegex=RegExp('(User:)?((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])');

window.processRecentChanges=function(req, bundle){ var initialId=processRecentChanges.id; var doc=req.responseXML.documentElement; var items=doc.getElementsByTagName('item'); var latest=processRecentChanges.lastDate; var output=[]; // '; for (var i=0; i< items.length; ++i) { var timestamp = Date.parse(getFirstTagContent(items[i],'pubDate')); if (timestamp <= processRecentChanges.lastDate) continue; latest = (timestamp > latest) ? timestamp : latest; var diffText=getFirstTagContent(items[i],'description').split(' ').join(' \n'); var editSummary=diffText.replace(RegExp('^ (.*?) [\\s\\S]*'), '$1'); var editor=getFirstTagContent(items[i], 'creator') || getFirstTagContent(items[i], 'dc:creator'); var articleTitle;

if (window.recent2_filter_anonsOnly && !window.recent2_ipUserRegex.test(editor)) continue; if (window.recent2_filter_watchlist && (articleTitle=getFirstTagContent(items[i], 'title')) &&        ! window.watchlist[articleTitle.replace(/^Talk:/, '').replace(/[ _]talk:/, ':')]) continue; if (window.recent2_filter_badwords) { var badMatch=null; if (window.vandals[editor] > 0) badMatch=['', '[previously rolled back this editor]']; else badMatch=badWords.test(diffText); // .test is meant to be faster than a full match if (badMatch) { badMatch=diffText.match(badWords); var article=getFirstTagContent(items[i], 'link'); articleTitle=getFirstTagContent(items[i], 'title'); var id=processRecentChanges.id; // highlighting badMatch[0]=badMatch[0].split(badMatch[1]).join(' '+badMatch[1]+' '); output.push(recent2_doLine({timestamp: timestamp, article:article, articleTitle:articleTitle, editor:editor, id:id, badWord:badMatch[1], badDiffFragment:badMatch[0], diff:diffText, summary:editSummary})); processRecentChanges.id++; }   }    else { var article=getFirstTagContent(items[i], 'link'); var articleTitle=getFirstTagContent(items[i], 'title'); if (window.recent2_CustomFilter &&          ! window.recent2_CustomFilter({timestamp:timestamp, article:article, articleTitle:articleTitle, editor:editor, diff:diffText, summary:editSummary})) continue; var id=processRecentChanges.id; output.push(recent2_doLine({timestamp: timestamp, article:article, articleTitle:articleTitle, editor:editor, id:id, diff:diffText, summary:editSummary})); processRecentChanges.id++; }

} /* end for loop */ //output+='</ul>'; var outputString=''; if (window.recent2_outputPosition=='top') { outputString=output.join(''); } else { for (var i=output.length-1; i>=0; --i) { outputString+=output[i]; } }  bundle.output.innerHTML+=outputString; recent2_runOnce(function {recent2_doPopups(bundle.output)}, 300); processRecentChanges.lastDate=latest; // - 1; // overlap better than missing some out, i think; FIXME do this properly var statusTail=greyFont+'done up to ' + formatTime(latest) + ' '; if (processRecentChanges.id > initialId) { statusTail+=' <a href="javascript:showHideDetailRange(' + initialId + ',' + processRecentChanges.id + ')">toggle these details</a> |'; } statusTail += ' <a href="javascript:deleteEarlierOutputDivs(' + bundle.status.id + ')">remove earlier output</a>'; statusTail+=' '; bundle.status.innerHTML+=statusTail; } processRecentChanges.lastDate=0; processRecentChanges.id=0;

window.deleteEarlierOutputDivs=function(cur) { for(var i=0; i<outputDivs.length; ++i) { if (!outputDivs[i] || !outputDivs[i].id) continue; if (outputDivs[i].id >= 0 && outputDivs[i].id < cur) { // FIXME BUG: if we go from the bottom up, then we'll delete one too many or too few, or something :-)     outputDivs[i].parentNode.removeChild(outputDivs[i]);      outputDivs[i]=null;    }  }  // scroll to the top if we're appending output to the bottom, to keep the div we've clicked visible after the deletions  if (window.recent2_outputPosition!='top') document.location='#'; }

window.showHideDetailRange=function(start,end) { // use the first div to see if we should show or hide var div=document.getElementById('diff_div_' + start); if (!div) return; var state=false; // hide if (div.style.display=='none') state=true; // show for (var i=start; i<end; ++i) { showHideDetail(i, true, state); } }

window.toggleSysopEdits=function { var divs=document.getElementsByTagName('div'); for (var i=0; i<divs.length; ++i) { if (divs[i].className=='sysop_edit_line') divs[i].style.display= ( toggleSysopEdits.hidden ? 'none' : 'inline' ); } toggleSysopEdits.hidden = ! toggleSysopEdits.hidden; }

window.bundles={};

window.vandalColour = function(vandal) { var num=window.vandals[vandal]; if (!num) return ''; switch (num) { case 1: return '#DDFFDD'; case 2: return '#BBFFBB'; } var i= 9-(num - 3) *2; if (i < 0) i=0; return '#' + i + i + 'FF' + i + i; }

window.clickDetails=function(action, max) { if(!action) action='show'; if (!max) max = document.links.length; var count=0; for (var i=0; i<document.links.length && count < max; ++i) { if(document.links[i].innerHTML==action + ' details' && document.links[i].href.indexOf('javascript:') == 0) { ++count; eval(document.links[i].href.replace('javascript:', '')); } } }

window.recent2_pendingLines=[];

window.recent2_togglePausedOutput=function { if (!window.recent2_pausedOutput) { window.recent2_pausedOutput = true; return true; } else window.recent2_pausedOutput=false; var outputBuffer=''; while (window.recent2_pendingLines.length) { outputBuffer+=recent2_doLine(window.recent2_pendingLines.pop); } var pos=window.recent2_outputPosition; var output=newOutputDiv('recent2_lines', pos); output.innerHTML=outputBuffer; return false; }

window.recent2_togglePaused=function { if(!window.recent2_paused) { window.recent2_paused=true; return true; } window.recent2_paused=false; loopRecentChanges(loopRecentChanges.url, loopRecentChanges.iterations); return false; }

window.recent2_doLine=function(bundle) { if (window.recent2_pausedOutput) { window.recent2_pendingLines.push(bundle); return ''; } var wikiBase='http://en.wikipedia.org/wiki/'; var sysop = null; if (typeof sysops != 'undefined') sysop=sysops.test(bundle.editor); var lastDiffPage=bundle.article + '?diff=cur&oldid=prev'; bundle.url=lastDiffPage; saveBundle(bundle); var div=''; if (window.vandals[bundle.editor] > 0) { div='<div style="background-color:' + vandalColour(bundle.editor) + '">'} else if (sysop) {div='<div class="sysop_edit_line">'}; return div + '<li>' + formatTime(bundle.timestamp) + ' ' + //latest + ' ' + processRecentChanges.lastDate + ' ' + linkmaker(lastDiffPage, bundle.articleTitle) + ( bundle.badWord ? ' matched ' + bundle.badWord + ' . . ' : ' . . ') + linkmaker(wikiBase + 'User:' + bundle.editor,          bundle.editor)     + ' ('  +  linkmaker(wikiBase + 'User_talk:' + bundle.editor,             'talk')     + ' | ' +  linkmaker(wikiBase + 'User_talk:' + bundle.editor + '?action=edit' + '&autoedit=s#$#\\n' + bundle.articleTitle + '%20~#&autosummary=Your%20recent%20edits', 'warn')    + ' | ' +  linkmaker(wikiBase + 'Special:Contributions/' + bundle.editor, 'contribs') + ' | ' +  linkmaker(wikiBase + 'Special:Blockip/' + bundle.editor,       'block')    +  '). . ' + ( bundle.summary ? '('+bundle.summary+') . . ' : '') + '<a href="javascript:showHideDetail(' + bundle.id + ')" id="showdiff_link_' + bundle.id + '">show details</a>' + ' [<a href="javascript:tryRollback(' + bundle.id + ')">rollback</a>]' + ' <div id="diff_div_' + bundle.id + '" style="display: none">' + ' </li>' + ( div ? ' ' : '') ; }

window.saveBundle= function(bundle) { var z={}; for (var prop in bundle) { z[prop]=bundle[prop]; } window.bundles[bundle.id]=z; }

window.vandals={}

window.tryRollback=function(id) { var b=window.bundles[id]; var vandal=b.editor; if (window.vandals[vandal]==null) window.vandals[vandal]=1; else window.vandals[vandal]++; if (!b) { alert('No bundle! Please tell Lupin how to reproduce this error - it should not really happen.'); return; } var onSuccess=function (x, bundle) { var rollRe=RegExp('<a href="(/w/index.php[^"]*?action=rollback[^"]*?from=([^&]*)[^"]*?)".*? (<span[^>]*>)?(.*?)? ');   // match[0]: useless    // match[1]: url (escaped)    // match[2]: last editor (escaped)    // match[4]: last edit summary (wikiText - FIXME strip this to plain text)    var match=rollRe.exec(x.responseText);    if (!match) {      alert('No rollback link found.\nSadly rollback is only available to admins. Alternatively, this may be a bug.');      return;    }    var lastEditor=match[2].split('+').join(' ');    var lastSummary=match[4];    // var vandal=b.editor; // from the closure    if (lastEditor != vandal) {      var summary=lastSummary.replace(RegExp('<[^>]*?>','g'),'');      if (!summary) summary=lastSummary;      alert( 'Could not rollback - someone else has edited since the vandal.\n\nPage: '+ b.articleTitle +             '\nVandal: '+vandal+'\nLast editor: '+lastEditor+'\nEdit summary: '+summary); return; }   var rollbackUrl=match[1].split('&amp;').join('&'); // confirm('Rollback edits by '+vandal + ' to '+b.articleTitle+'?') && window.open(rollbackUrl, '_blank'); } var onFailure = function(x,bundle) { alert('HTTP failed when trying to get rollback link in url\n' + bundle.url +         '\n\nHTTP status text: ' + x.statusText); return true; } recent2_download({ url:b.url, onSuccess: onSuccess, id: b.id, onFailure:onFailure}); }

window.recent2_doPopups=function(div) { if (typeof(mouseOverWikiLink)!='undefined' &&      typeof(mouseOutWikiLink) !='undefined' &&       typeof(killPopup)        !='undefined') { var anchors=div.getElementsByTagName('A'); for (var i=0; i<anchors.length; ++i) { var a=anchors[i]; if (a.href.indexOf('javascript')==0) continue; a.onmouseover=mouseOverWikiLink; a.onmouseout= mouseOutWikiLink; a.onclick= killPopup; } } }

window.formatTime=function(timestamp) { var date=new Date(timestamp); nums=[date.getHours, date.getMinutes, date.getSeconds]; for (var i=0; i<nums.length; ++i) if (nums[i]<10) nums[i]='0'+nums[i]; return nums.join(':'); }

window.showHideDetail = function(id, force, state) { var div=document.getElementById('diff_div_' + id); var lk=document.getElementById('showdiff_link_' + id); if (!div) return; var bundle=window.bundles[id]; if (!div.innerHTML) div.innerHTML= ( bundle.badDiffFragment ? bundle.badDiffFragment:'') + bundle.diff; if ((force && state==true) || (!force && div.style.display=='none')) { div.style.display='inline'; lk.innerHTML='hide details'; } else { div.style.display='none';  lk.innerHTML='show details'; } }

window.getFirstTagContent=function(parent, tag) { var e=parent.getElementsByTagName(tag); if (e && (e=e[0]) ) { var ret = e.firstChild.nodeValue || e.nodeValue; if (typeof ret != typeof ) return ; return ret; } }

var count=0; window.loopRecentChanges=function(url, iterations) { if (!iterations) iterations=20; loopRecentChanges.iterations=iterations; loopRecentChanges.url=url; grabRecentChanges(url); recent2_runOnce(function {     if (window.recent2_paused) {++count; return; }    if (++count >= iterations && ! confirm('Continue monitoring recent changes?') ) return;    count %= iterations; loopRecentChanges(url, iterations);  }, 30000); } window.marvin=function { window.sysops=RegExp("^(\\-\\- April|23skidoo|A Man In Black|ABCD|ALoan|Academic Challenger|Acetic Acid|Adam Bishop|Ahoerstemeier|Alabamaboy|Alai|AlainV|Alex S|Alex756|AlistairMcMillan|Alkivar|Allen3|AllyUnion|Alteripse|Ambi|Ams80|Andres|Andrevan|Andrew Yong|Andrewa|Andris|Android79|Angela|Angr|Antandrus|Anthere|AntonioMartin|Aranel|Arcadian|Aris Katsaris|Arminius|Arvindn|Arwel Parry|Asbestos|AstroNomer|Ausir|AxelBoldt|BanyanTree|BaronLarf|Bcorr|Bdesham|Bearcat|Beland|Benc|Bhadani|Biekko|BillyH|Bishonen|Bkonrad|Blankfaze|Bluemoose|Bmicomp|Bovlb|Bratsche|Brian Kendig|Brian0918|BrianSmithson|Briangotts|Brighterorange|Brion VIBBER|Brockert|BrokenSegue|Brookie|Bryan Derksen|Bumm13|Burgundavia|CJCurrie|COGDEN|CSTAR|CYD|Cacycle|Caltrop|CambridgeBayWeather|Camembert|Canderson7|Capitalistroadster|Carbonite|Carnildo|Catbar|CatherineMunro|Cburnett|Cdc|Cecropia|Cedar\\-Guardian|Celestianpower|CesarB|Cgs|Chadloder|Chancemill|Changlc|Charles Matthews|Chmod007|Chris 73|Chris Roy|ChrisO|Christopher Mahan|Chuck SMITH|Chuq|Cimon avaro|Clarkk|Clifford Adams|ClockworkSoul|Commander Keane|ContiE|Cool Hand Luke|Cprompt|Craigy144|Cryptic|CryptoDerk|Curps|Cutler|Cyan|Cyberjunkie|CyborgTosser|Cyp|Cyrius|DESiegel|DF08|DJ Clayworth|Dale Arnett|Dan100|DanKeshet|Daniel Quinlan|DanielCD|Danny|Dante Alighieri|Darwinek|Dave souza|David Gerard|David Newton|David\\.Monniaux|DavidLevinson|DavidWBrooks|Davidcannon|Davodd|Dbachmann|Dbenbenn|Dbiv|Dcoetzee|Deb|Decumanus|Delirium|Denelson83|Denni|Derek Ross|Dgrant|Diberri|Dieter Simon|Dino|Dmcdevit|Dmn|Doc glasgow|Docu|Dori|Dpbsmith|DrBob|DragonflySixtyseven|Dragons flight|Drini|DropDeadGorgias|Duk|Duncharris|Durin|Dvyost|Dwheeler|Dysprosia|Earl Andrew|Ed Poor|Ed g2s|Edcolins|Edward|Efghij|Egil|El C|Elf|Ellsworth|Eloquence|Enchanter|Essjay|Eugene van der Pijll|Evercat|Everyking|Evil Monkey|Evil saltine|Evilphoenix|Exploding Boy|Ezhiki|FCYTravis|Fabiform|Fantasy|Fastfission|Fawcett5|Feco|FeloniousMonk|Fennec|Ferkelparade|Fernando Rizo|Ffirehorse|Filiocht|Finlay McWalter|Fire Star|FireFox|Flcelloguy|Flockmeal|Francs2000|Frazzydee|Fred Bauder|Fredrik|Freestylefrappe|FreplySpang|Friday|Func|Furrykef|Fuzheado|Fvw|G\\-Man|Gabbe|Gadfium|Gamaliel|Garzo|Gaz|Gdr|GeneralPatton|Geni|Gentgeen|Geogre|Gerald Farinas|Goatasaur|Golbez|Graft|GregAsche|GregRobson|Grenavitar|Grm wnr|Ground Zero|Grue|Grunt|Grutness|Gtrmp|Guettarda|Gwalla|Gyrofrog|Hadal|Hajor|Hall Monitor|HappyCamper|Hashar|Hawstom|Hcheney|Hedley|Hemanshu|Henrygb|Hephaestos|Hermione1980|Heron|Homeontherange|Humblefool|Hyacinth|Icairns|IceKarma|Ihcoyc|Ike9898|Ilyanep|Improv|Imran|Infrogmation|Ingoolemo|Inter|Isomorphic|Ixfd64|J\\.J\\.|JCarriker|JHK|JIP|JRM|JYolkowski|Jake Nelson|Jallan|JamesTeterenko|Jamesday|Jasonr|Jaxl|Jay|Jayjg|Jcw69|Jdavidb|Jdforrester|JeLuF|Jeffrey O\\. Gustafson|Jengod|JeremyA|Jeronimo|Jerzy|JesseW|Jfdwolff|Jiang|Jimbo Wales|Jimfbleak|Jimregan|Jinian|Jitse Niesen|Jmabel|Jnc|Jni|JoJan|John Kenney|JohnOwens|Johnleemk|Johntex|JonMoore|Jondel|Joolz|Josh Grosse|Jossifresco|Journalist|Joy|Joy Stovall|Jpgordon|Jrdioko|Jredmond|Jtdirl|Jtkiefer|Justinc|Jwrosenzweig|K1Bond007|KF|Kaihsu|Kaldari|Karada|Karen Johnson|Karmafist|Katefan0|Kbdank71|Kelly Martin|Khaosworks|Khendon|Khym Chanur|Kingturtle|Kirill Lokshin|Kmccoy|Knowledge Seeker|Kosebamse|Ktsquare|Kwamikagami|Kzollman|LC|Lachatdelarue|Lacrimosus|Lectonar|Lee Daniel Crocker|Lexor|Linuxbeak|LittleDan|Llywrch|Lommer|Longhair|Lord Emsworth|LordAmeth|LouI|Lowellian|Lucky 6\\.9|Ludraman|Lupin|Lupo|MC MasterChef|MacGyverMagic|Mackensen|Mackeriv|Madchester|Magnus Manske|Mailer diablo|Mairi|Malcolm Farmer|Manning Bartlett|Marianocecowski|Marine 69\\-71|Mark|Mark Christensen|Mark Dingemanse|Mark Richards|MarkSweep|Markalexander100|Marshman|Marudubshinki|Marumari|Master Thief Garrett|Matt Crypto|Maury Markowitz|Maveric149|Maximus Rex|Mbecker|Meelar|Mel Etitis|Menchi|Merovingian|Merphant|Mic|Michael Hardy|Michael Snow|Mike Halterman|Mikkalai|Mindspillage|Minesweeper|Mintguy|Mirv|Mirwin|Mkmcconn|Mkweise|Modemac|Moink|Moncrief|Montrealais|Moriori|Morven|Morwen|Mulad|Mustafaa|MyRedDice|MykReeve|Mysekurity|Mzajac|Nabla|Nandesuka|Nanobug|Necrothesp|Neutrality|Ngb|Nichalp|NicholasTurnbull|Nickptar|Nickshanks|Niteowlneils|Nohat|Noldoaran|Notheruser|Nufy8|Nunh\\-huh|Nv8200p|Oberiko|OldakQuill|Oleg Alexandrov|Oliver Pereira|Olivier|Omegatron|Optim|Ortolan88|Oven Fresh|OwenX|PFHLai|PMA|PRueda29|PZFUN|Pakaran|Pamri|Patrick|Paul A|Paul August|Pcb21|PedanticallySpeaking|Petaholmes|Peter Winnberg|Pfortuny|Pharos|Phil Bordelon|Phil Boswell|Phils|Philwelch|Phroziac|Physchim62|PierreAbbat|Piotrus|Pjacobi|Pollinator|Poor Yorick|Postdlf|Pratyeka|Premeditated Chaos|Proteus|Psy guy|Qaz|Quadell|Quercusrobur|R\\. fiend|R3m0t|RHaworth|RJFJR|RN|Radiant\\!|RadicalBender|Ragib|Ral315|Ram\\-Man|Rama|Ramallite|Ran|Raul654|Rbrwr|Rd232|Rdsmith4|RedWolf|RedWordSmith|Redux|Redwolf24|Refdoc|Reflex Reaction|Rfl|Rhobite|Rholton|Rhymeless|Rich Farmbrough|Rick Block|RickK|Rje|Rlandmann|Rlquall|Rmhermen|Roadrunner|RobLa|Robchurch|Robert Merkel|RobertG|Robin Patterson|RobyWayne|Roozbeh|RoseParks|Rossami|RoyBoy|RoySmith|Rx StrangeLove|Ryan Delaney|SD6\\-Agent|SWAdair|Salsa Shark|Sam Hocevar|Sam Korn|Sango123|Sannse|Sarge Baldy|Sasquatch|Schissel|Schneelocke|Scimitar|Scipius|Scott Burley|ScottDavis|Seabhcan|Sebastiankessel|Secretlondon|Seglea|Sesel|Seth Ilys|Sfoskett|Shanes|Shauri|Sheldon Rampton|Shimgray|SimonP|Siroxo|Sj|Sjakkalle|Sjc|Slambo|SlimVirgin|Slowking Man|Slrubenstein|Smith03|Sn0wflake|Snowspinner|Snoyes|Solipsist|Someone else|Sortior|Spangineer|Spencer195|Splash|Ssd|Stan Shebs|Starblind|Stevenj|Stevertigo|Stewartadcock|Stormie|Sugarfish|Sundar|Sverdrup|TPK|TUF\\-KAT|Ta bu shi da yu|Talrias|Tannin|Tarquin|Taw|Taxman|TenOfAllTrades|Texture|Thames|The Anome|The Cunctator|The Epopt|The Singing Badger|The wub|TheCoffee|TheoClarke|Theresa knott|Thryduulf|Thue|Thunderbrand|Tillwe|Tim Ivorson|Tim Starling|Timc|Timrollpickering|Timshell|Timwi|Titoxd|Tkinias|Toby Bartels|Tom\\-|Tomf688|Tompagenet|Tony Sidaway|Topbanana|Tregoweth|Trevor macinnis|Triddle|Trilobite|Tristanb|Ugen64|Ulayiti|Uncle G|UninvitedCompany|Urhixidur|Utcursch|UtherSRG|Vague Rant|VampWillow|Vancouverguy|Vaoverland|Viajero|Vicki Rosenzweig|Violetriga|Visorstuff|Voice of All\\(MTG\\)|Vsmith|Waltpohl|Wapcaplet|Warofdreams|Wayward|Wernher|Wesley|WhisperToMe|Who|Wiglaf|Wikiacc|Wikibofh|Wile E\\. Heresiarch|Wilfried Derksen|Willmcw|Woggly|WojPob|Woohookitty|Worldtraveller|Ww|Wwoods|XJamRastafire|Xezbeth|Y0u|Yacht|Zanimum|Zero0000|Zippy|Zocky|Zoe|Zoicon5|Zoney|Zscout370|Zzyzx11)$"); loopRecentChanges(feed, 200); }

// ************************************************** // Installation // **************************************************

window.recent2_addlilink=function(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; }

window.recent2_addToolboxLink=function(url, name, id){ var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; recent2_addlilink(tb, url, name, id); }

window.addMarvin=function { recent2_addToolboxLink('http://en.wikipedia.org/wiki/User:Lupin/Filter_recent_changes', 'Filter recent changes', 'toolbox_filter_changes'); recent2_addToolboxLink('http://en.wikipedia.org/wiki/User:Lupin/All_recent_changes', 'All recent changes', 'toolbox_all_changes'); recent2_addToolboxLink('http://en.wikipedia.org/wiki/User:Lupin/Recent_IP_edits', 'Recent IP edits', 'toolbox_IP_edits'); recent2_addToolboxLink('http://en.wikipedia.org/wiki/User:Lupin/Monitor_my_watchlist', 'Monitor my watchlist', 'toolbox_watchlist_edits'); //document.getElementById('toolbox_filter_changes').onclick=marvin; }

window.maybeStart=function { var loc=document.location.href; if (RegExp('User:Lupin/Filter[_ ]recent[_ ]changes','i').test(loc)) { window.recent2_filter_badwords=true; recent2_runOnce(marvin, 1000); } else if (RegExp('User:Lupin/All[_ ]recent[_ ]changes','i').test(loc)) { window.recent2_filter_badwords=false; recent2_runOnce(marvin, 1000); } else if (RegExp('User:Lupin/Recent[_ ]IP[_ ]edits','i').test(loc)) { window.recent2_filter_anonsOnly=true; recent2_runOnce(marvin, 1000); } else if (RegExp('User:Lupin/Monitor[_ ]my[_ ]watchlist', 'i').test(loc)) { window.recent2_filter_watchlist=true; recent2_runOnce(marvin, 1000); } }

// onload window.simpleAddOnload=function(f) { if (window.addEventListener) window.addEventListener("load", f, false); else if (window.attachEvent) window.attachEvent("onload",f); } simpleAddOnload(maybeStart); simpleAddOnload(addMarvin);

//

/// Local Variables: /// /// mode:c /// /// fill-prefix:"// " /// /// End: ///

/* Put some functions in the toolbox for the anti-vandal whack-a-mole game. */ //  // **************** //  Google Lookup // **************** function whackGoogleLookup { var q = "" + (window.getSelection ? window.getSelection                                     : document.getSelection ? document.getSelection                                                              : document.selection.createRange.text); if (!q) q = prompt("You didn't select any text. Enter a search phrase:", ""); if (q!=null) // location="http://www.google.com/search?q=" + escape(q).replace(/ /g, "+"); window.open("http://www.google.com/search?q=" + escape(q).replace(/ /g, "+") ,'new-tab') ; } // ************** // Warnings // **************

function whackEdit (message, summary) { document.editform.wpTextbox1.value += "<br clear=\"both\" />\n\n" + message + " ~ <br clear=\"both\" />\n" ; document.editform.wpSummary.value = summary ; document.editform.wpMinoredit.checked=false; document.editform.wpWatchthis.checked=false; } function whackWarn1 { whackEdit ("", "Warning level 1: Testing."); } function whackWarn2 { whackEdit ("", "Warning level 2: Nonsense"); } function whackWarn3 { whackEdit ("", "Warning level 3: Please stop."); } function whackWarn4 { whackEdit ("", "Warning level 4: Last chance."); } function whackBlank { whackEdit ("", "Warning level 2; Blanking."); } function whackBlatant{ whackEdit ("", "Warning: Blatant vandalism"); } function whackNPOV  { whackEdit ("", "NPOV"); } function whackBlocked{ whackEdit ("", "Blocked"); } function whackBlocked2{whackEdit (""     + "You have been temporarily blocked from editing because of your disruptive edits."      + " You are invited to contribute"      + " in a constructive manner as soon as the block expires.", "Blocked"); } // ************************************************** // Installation // ************************************************** window.whack_addlilink=function(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; } window.whack_addToolboxLink=function(url, name, id){ var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0]; whack_addlilink(tb, url, name, id); } window.playWhackMoles=function { if (document.title.match("Editing User talk:") ) { whack_addToolboxLink('javascript:{whackWarn1;};void(0);', 'warn Test1', 'toolbox_warn1'); whack_addToolboxLink('javascript:{whackWarn2;};void(0);', 'warn Nonsense', 'toolbox_warn2'); whack_addToolboxLink('javascript:{whackWarn3;};void(0);', 'warn Please stop', 'toolbox_warn3'); whack_addToolboxLink('javascript:{whackWarn4;};void(0);', 'warn Last chance', 'toolbox_warn4'); whack_addToolboxLink('javascript:{whackBlank;};void(0);', 'warn Blanking', 'toolbox_warn2a'); whack_addToolboxLink('javascript:{whackBlatant;};void(0);','warn Blatant', 'toolbox_blatant'); whack_addToolboxLink('javascript:{whackNPOV;};void(0);',  'warn NPOV', 'toolbox_npov'); whack_addToolboxLink('javascript:{whackBlocked2;};void(0);','warn Blocked', 'toolbox_block'); } else { whack_addToolboxLink('javascript:{whackGoogleLookup;};void(0);', 'Google', 'toolbox_googlelookup'); } } // onload window.simpleAddOnload=function(f) { if (window.addEventListener) window.addEventListener("load", f, false); else if (window.attachEvent) window.attachEvent("onload",f); }

simpleAddOnload(playWhackMoles);

//