User:False Prophet/monobook.js

// //***Loader***// window.onload = Main; function Main { addlinks; }

//***Add User Talk Links***// function addlilink(tabs, url, name, id) { var na = document.createElement('a'); na.href = url; na.id = id; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); li.appendChild(na); tabs.appendChild(li); return li; }

function addlinks { var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; if (document.title.indexOf("Editing User talk:") == 0) { addlilink(tabs, 'javascript:welcome', 'w', ''); addlilink(tabs, 'javascript:vandal("welcomenpov")', 'wnpov', ''); addlilink(tabs, 'javascript:editsummary', 'es', ''); addlilink(tabs, 'javascript:vandalask("test0-n")', 'tgf', ''); addlilink(tabs, 'javascript:vandalask("test-self-n")', 'ts', ''); addlilink(tabs, 'javascript:vandalask("test-n")', 't1', ''); addlilink(tabs, 'javascript:vandalask("spam-n")', 'spam', ''); addlilink(tabs, 'javascript:vandalask("vw")', 'bv1', ''); addlilink(tabs, 'javascript:vandalask("test2-n")', 't2', ''); addlilink(tabs, 'javascript:vandalask("spam-n")', 's2', '') addlilink(tabs, 'javascript:vandalask("test3-n")', 't3', ''); addlilink(tabs, 'javascript:vandalask("anon vandal-n")', 'ta3', ''); addlilink(tabs, 'javascript:vandalask("blatantvandal")', 'bv4', ''); } }

function welcome { var txt = document.editform.wpTextbox1; if (txt.value.length > 0) txt.value += '\n'; var type = prompt("user or anon?"); var article = prompt("article?"); var topic = prompt("topic?"); var portal = prompt("portal?"); var project = prompt("project?"); txt.value +=  + ; document.editform.wpSummary.value = 'welcome'; document.editform.wpWatchthis.checked = true; }

function inuse { var txt = document.editform.wpTextbox1; if (txt.value.length > 0) txt.value += '\n'; var time = prompt("until?"); txt.value += '' document.editform.wpSummary.value = 'in use until' + time; document.editform.wpWatchthis.checked = true; }

function editsummary { var txt = document.editform.wpTextbox1; if (txt.value.length > 0) txt.value += '\n'; txt.value += '== Edit summaries == \n\n' + ''; document.editform.wpSummary.value = 'edit summaries'; document.editform.wpWatchthis.checked = true; }

//**Hide Own Edits In Watchlist**// addOnloadHook(function {  for (var i=0; i0) {    document.links[i].href+='?hideOwn=1';     break;   }  } });

//**Popups: User:Lupin/popups.js**

mw.loader.load(            'https://en.wikipedia.org/w/index.php?title=User:Lupin/popups.js'             + '&action=raw&ctype=text/javascript&dontcountme=s'); popupRevertSummary="rvv to version %s using popups" popupRevertSummaryPrompt=true popupDelay=1.5 popupImages=false simplePopups=false popupOnEditSelection=false

//**Install User:Cacycle/diff Text Diff Tool** document.write(' ');

//**Install User:Cacycle/editor Edit Tool**// document.write(' ');

//**Add [edit top] Link** (by User:Pile0nades)**//

//add link addOnloadHook(function {  //if this is preview page or generated page, stop  if (document.getElementById("wikiPreview") || window.location.href.indexOf("/wiki/Special:") != -1) return; // get page title  var pageTitle = document.title.split(" - ")[0].replace(" ", "_");  // create div and set innerHTML to link  var divContainer = document.createElement("div");  divContainer.innerHTML = ' [edit top] ';

// insert divContainer into the DOM before the h1 if (window.location.href.indexOf("&action=edit") == -1) document.getElementById("content").insertBefore(divContainer, document.getElementsByTagName("h1")[0]);

if(window.location.href.indexOf("&action=edit&section=0") != -1) document.getElementById("wpSummary").value = "/* Intro */ "; });

// window.onload = Main; function Main { addactions; } function addactions { addwelcome; } function addwelcome { if(!document.editform) return; var txt = document.editform.wpTextbox1; var url = window.location; if(txt.value.length == 0) { if (url.search.indexOf("User_talk:") != -1) { var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; if(document.title.indexOf("Editing") == 0) addlilink(tabs, 'javascript:welcome', 'welcome', 'ca-welcome'); } } } function welcome { document.editform.wpSummary.value = 'Welcome!'; document.editform.wpMinoredit.checked = false; document.editform.wpWatchthis.checked = false; var txt = document.editform.wpTextbox1; if(txt.value.length > 0) txt.value += '\n'; txt.value += '--~'; document.editform.wpSave.focus; } function addlilink(tabs, url, name, id) { var na = document.createElement('a'); na.href = url; na.id = id; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); li.appendChild(na); tabs.appendChild(li); return li; } //

document.write(' '); // see http://paperlined.org/apps/wikipedia/Tool2/ for instructions on adding this to your monobook.js

// To run this tool on other servers: // 1. copy this script to the target server (this is required because of javascript cross-site security restrictions)

// 2. update the following URL // for example: "User:Interiot/Tool2/code.js" var tool2_url = "User:Interiot/Tool2/code.js";

// 3. update this namespace list, extracted from something like http://en.wikiquote.org/wiki/Special:Export// // These *should not* have colons after them. var namespaces = [ "Talk", "User", "User talk", "Wikiquote", "Wikiquote talk", "Image", "Image talk", "MediaWiki", "MediaWiki talk", "Template", "Template talk", "Help", "Help talk", "Category", "Category talk", // 3b. these two project project entries are not added by Special:Export, and might or might not need to be updated "Wikipedia", "Wikipedia talk" ];

namespaces[100] = "Portal"; namespaces[101] = "Portal talk";

// 4. update this date-parser to match the format and language of your specific wiki. Feel free to contact Interiot regarding this, if you can't find another // copy of this script that uses the same language. // input: a text string from Special:Contributions. output: a javascript Date object // documentation: http://www.quirksmode.org/js/introdate.html#parse, http://www.elated.com/tutorials/programming/javascript/dates/ function date_parse(text) { var matches = text.match(/^([0-9:]+), +([0-9]+) +([a-z]+) +([0-9]+)$/i); if (!matches) { //dump_text("XXX"); // for debugging return matches; }

parseme = matches[3] + ", " + matches[2] + " " + matches[4] + " " + matches[1] + ":00";

//dump_text(parseme); // for debugging

var dt = new Date; dt.setTime( Date.parse(parseme));

//dump_text(dt.toLocaleString); // for debugging

return dt; }

// Admin-like RC Patrol tools

document.write(' ');

// /**** Initialize on window load ****/

$( myLoadFuncs );

/**** Load custom functions ****/

function myLoadFuncs {   if(!document.getElementById) return; // add a clock var toplinks = document.getElementById('p-personal').getElementsByTagName('ul')[0]; addlilink(toplinks, '#', '', 'utcdate'); showtime; morelinks; }

/**** Add generic tab ****/

function addlilink(tabs, url, name, id){ var na = document.createElement('a'); na.href = url; na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); li.id = id; li.appendChild(na); tabs.appendChild(li); return li; }

////////////////////////////////////////// // Tabs by Korath // returns  name ////////////////////////////////////////// /**** Add tab as menu ****/

function addlimenu(tabs, name, id) {   var na = document.createElement('a'); na.href = '#'; var mn = document.createElement('ul'); na.appendChild(document.createTextNode(name)); var li = document.createElement('li'); li.id = id; li.className = 'tabmenu'; li.appendChild(na); li.appendChild(mn); tabs.appendChild(li); return li; }

/**** Get a clock that autoupdates! ****/

function showtime {   var timerID; var now = new Date; var timeValue = now.toUTCString.replace(/GMT/, "UTC"); document.getElementById('utcdate').firstChild.innerHTML = timeValue; timerID = setTimeout('showtime', 100); }

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

// Adds a "blocklog" tab and fills in the username field on Special:Blockip, if a "&faketarget=username" is present. function do_blockip_stuff { // focus on Reason field document.getElementsByName('wpBlockReason')[0].focus;

// Look for a &faketarget= for the username/ip var l = location.search.substring(1).split('&'); var target = ''; for (var i = 0; i < l.length; ++i) {     var n = l[i].indexOf('='); if (l[i].substring(0, n) == 'faketarget') {  target = l[i].substring(n + 1); break; }   }

if (target == '') return;

// put account name in "IP Address/username" field var addr = document.getElementsByName('wpBlockAddress')[0]; addr.value = unescape(target);

// add "blocklog" tab var c1 = document.getElementById('column-one'); var tabs = c1.getElementsByTagName('div')[0].getElementsByTagName('ul')[0]; tabs.appendChild(addlilink('/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target, 'blocklog')); }

// Opens the block log in the current window, and Special:Blockip in a popup. // Width, height, top, and left are chosen for a 1600x1200 display. //function blockpage_and_log(target) //{ // window.open('Special_Blockip.html?foo=blarg&faketarget=' + target, 'Block', 'width=1600,height=600,top=600,left=0'); // document.location.href = 'http://en.wikipedia.org/w/index.php?title=Special%3ALog&type=block&user=&page=User%3A' + target; //}

// Adds "block" and "blocklog" tabs to User: and User talk: pages. function add_block_tab{ var c1 = document.getElementById('column-one'); var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; // use the "edit this page" tab to get already-tidied url var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href; // cut everything up to "title=" from the start and everything past "&action=edit" from the end editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit')); editlk = editlk.substring(editlk.indexOf(':') + 1); var slloc = editlk.indexOf('/'); if(slloc > 0) editlk = editlk.substring(0, slloc);

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

// add "blocklog" tab addTab('/wiki/Special:Log/block?page=User:' + editlk, 'log', 'ca-blocklog'); // add "unblock" tab addTab('/w/index.php?title=Special:Ipblocklist&action=unblock&ip=' + editlk, 'un');

// add "contributions" tab addTab('/wiki/Special:Contributions/' + editlk, 'con'); // add "edit count" tab addTab('http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?user=' + editlk + '&dbname=enwiki_p', 'count'); // add "whois" tab addTab('http://tools.wikimedia.de/~essjay/nqt.php?queryType=arin&target=' + editlk, 'who'); // add "proxycheck" tab addTab('http://quyme.com/proxycheck.php?ip=' + editlk, 'proxy'); } function morelinks {   var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; if(document.title.indexOf("User") == 0) {       addlimenu(tabs, 'User', 'userf'); var userf = document.getElementById('userf').getElementsByTagName('ul')[0];

addlimenu(tabs, 'sysop', 'sysopf'); var sysopf = document.getElementById('sysopf').getElementsByTagName('ul')[0];

addlimenu(tabs, 'bcrat', 'bfunc'); var bfunc = document.getElementById('bfunc').getElementsByTagName('ul')[0];

addlimenu(tabs, 'check', 'cfunc'); var cfunc = document.getElementById('cfunc').getElementsByTagName('ul')[0];

//User functions //

var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href; editlk = editlk.substring(editlk.indexOf('title=') + 6, editlk.lastIndexOf('&action=edit')); editlk = editlk.substring(editlk.indexOf(':') + 1); var slloc = editlk.indexOf('/'); if(slloc > 0) editlk = editlk.substring(0, slloc); // format: addlilink(userf, url, name); // add "listusers" tab addlilink(userf, '/w/index.php?title=Special:Listusers&group=&username=' + editlk, 'list', '');

// add "contributions" tab addlilink(userf, '/wiki/Special:Contributions/' + editlk, 'contrib', ''); // addTab('/wiki/Special:Contributions/' + editlk, 'con'); // add "userspace" tab addlilink(userf, '/w/index.php?title=Special:Prefixindex&namespace=2&from=' + editlk, 'space', '');

// add "edit count" tab addlilink(userf, 'http://tools.wikimedia.de/~essjay/edit_count/Count.php?username=' + editlk, 'count', ''); // addTab('http://tools.wikimedia.de/~essjay/edit_count/Count.php?username=' + editlk, 'count'); // add "whois" tab addlilink(userf, 'http://tools.wikimedia.de/~essjay/nqt.php?queryType=arin&target=' + editlk, 'whois', ''); // addTab('http://tools.wikimedia.de/~essjay/nqt.php?queryType=arin&target=' + editlk, 'who'); // add "proxycheck" tab addlilink(userf, 'http://quyme.com/proxycheck.php?ip=' + editlk, 'proxy', ''); // addTab('http://quyme.com/proxycheck.php?ip=' + editlk, 'proxy');

// add "url" tab addlilink(userf, 'http://' + editlk, 'url', ''); // addTab('http://' + editlk, 'url');

// add a "Yahoo" tab addlilink(userf, 'http://search.yahoo.com/search?x=op&va_vt=any&va=' + editlk, 'Yahoo', ''); // addTab('http://search.yahoo.com/search?x=op&va_vt=any&va=' + editlk, 'Yahoo');

// Sysop functions

// add "block" tab addlilink(sysopf, '/wiki/Special:Blockip/' + editlk, 'block'); // previous: addTab('/wiki/Special:Blockip/' + editlk, 'block', 'ca-block', ''); // add "blocklog" tab addlilink(sysopf, '/wiki/Special:Log/block?page=User:' + editlk, 'log', ''); // addTab('/wiki/Special:Log/block?page=User:' + editlk, 'log', 'ca-blocklog'); // add "unblock" tab addlilink(sysopf, '/w/index.php?title=Special:Ipblocklist&action=unblock&ip=' + editlk, 'unblock', ''); // addTab('/w/index.php?title=Special:Ipblocklist&action=unblock&ip=' + editlk, 'un'); // add "view deleted edits" tab addlilink(sysopf, 'http://tools.wikimedia.de/~interiot/cgi-bin/queries/tmp/del?user=' + editlk + '&dbname=enwiki', 'deleted', '');

// Bureaucrat functions

// add "makesysop" tab addlilink(bfunc, 'http://en.wikipedia.org/w/index.php?title=Special%3AMakesysop&wpMakesysopUser=' + editlk, 'sysop', ''); // add "rename" tab addlilink(bfunc, 'http://en.wikipedia.org/w/index.php?title=Special%3ARenameuser&oldusername=' + editlk, 'rename', ''); // add "makebot" tab addlilink(bfunc, 'http://en.wikipedia.org/w/index.php?title=Special%3AMakebot&username=' + editlk, 'bot', ''); //Checkuser functions

// add "checkuser" tab addlilink(cfunc, 'http://en.wikipedia.org/w/index.php?title=Special:CheckUser&user=' + editlk, 'user', ''); // add "checkip" tab addlilink(cfunc, 'http://en.wikipedia.org/w/index.php?title=Special:CheckUser&ip=' + editlk, 'ip', ''); // add "log" tab addlilink(cfunc, 'http://en.wikipedia.org/w/index.php?title=Special:CheckUser&log=1', 'log', '');

} }

function do_onload { if (document.title.indexOf('Block user') == 0) // could stand to be more robust do_blockip_stuff; }

//From User:Func if (window.addEventListener) window.addEventListener("load", do_onload, false); else if (window.attachEvent) window.attachEvent("onload", do_onload);

if ( document.createElement && window.addEventListener ) { function SoFixItInit // pre-load, (don't want to slow down loading of article's content, though) {

}

function SoFixItLoad // post-load { UserMenu = new PortletMenu( 'p-personal'  ); PageMenu = new PortletMenu( 'p-cactions'  ); NavMenu = new PortletMenu( 'p-navigation' ); //ToolMenu = new PortletMenu( 'p-tb'        );

// This is inefficient and not particularly robust. // This comes first, I want this link to come up as // fast as possible. // function GetByClass( sElem, sClass ) { var i, a2 = [], a = document.getElementsByTagName( sElem ); for ( i = 0; i < a.length; i++ ) if ( a[ i ].className == sClass ) a2.push( a[ i ] ); return a2; } var a, td = GetByClass( 'td', 'diff-otitle' ); if ( ( td = td[ 0 ] ) && ( a = td.getElementsByTagName( 'a' )[ 0 ] ) ) a.href = a.href + '&action=edit'; // need to change text, later

var userName = UserMenu.getText( 'pt-userpage' );

// personal (top-most) menu // // // UserMenu.setText( 'pt-mytalk'    , 'Talk'  ); UserMenu.setText( 'pt-preferences', 'Prefs' ); UserMenu.setText( 'pt-watchlist', 'Watchlist' ); UserMenu.setText( 'pt-mycontris', 'Contribs' ); UserMenu.setText( 'pt-logout'   , 'Log out'   ); // UserMenu.setHref( 'pt-mycontris', 'http://en.wikipedia.org/w/index.php?title=Special:Contributions&target=' + userName + '&offset=0&limit=500' ); // // // // article-actions menu, (the "tabs") // if ( PageMenu[ 'ca-history' ] ) // theory: if it has a history tab, then it's purgable { PageMenu.insertBefore( 'ca-history', 'ca-lastdiff', 'diff', PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'diff=0' ) );

PageMenu.append( 'ca-purge', 'Purge', PageMenu.getHref( 'ca-history' ).replace( /action=history/, 'action=purge' ) ); //Shorten tab names // PageMenu.setText( 'ca-nstab-user', 'user' ); PageMenu.setText( 'ca-talk', 'talk' ); PageMenu.setText( 'ca-edit'   , 'edit'   ); PageMenu.setText( 'ca-history'   , 'history'   ); PageMenu.setText( 'ca-delete'   , 'delete'   ); PageMenu.setText( 'ca-watch'   , 'watch'   ); PageMenu.setText( 'ca-protect'   , 'protect'   );

}

var x = 1; NavMenu.append( 'n-' + x++, 'Monobook.js', '/wiki/User:' + userName + '/monobook.js' ); NavMenu.append( 'n-' + x++, 'EditCount', 'http://tools.wikimedia.de/~essjay/edit_count/Count.php?username=Essjay' );

}

function PortletMenu( id ) // constructor { this.menu = document.getElementById( id ); this.list = this.menu.getElementsByTagName( 'ul' )[ 0 ]; // bypass " Views ", etc.

// sigh...as far as I can figure, there is empty whitespace being treated // as TextNodes.... // var LIs = this.list.getElementsByTagName( 'li' );

for ( var i = 0; i < LIs.length; i++ ) { this[ LIs[ i ].id ] = LIs[ i ]; }

this.newItem = function( id, txt, url ) { var li = document.createElement( 'li' ); li.id  = id; var a = document.createElement( 'a'  );  a.href = url;

a.appendChild( document.createTextNode( txt ) ); li.appendChild( a );

this[ id ] = li; // watch this!!!

return li; }

this.append = function( id, txt, url ) { this.list.appendChild( this.newItem( id, txt, url ) ); } this.insertBefore = function( old, id, txt, url ) { this.list.insertBefore( this.newItem( id, txt, url ), this[ old ] ); }

// the ByTagName here is a bit annoying, but in Safari, I was picking // up TextNodes by using this[ id ].firstChild.firstChild // this.getText = function( id     ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data } this.setText = function( id, txt ) {       this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data = txt }

this.getHref = function( id     ) { return this[ id ].getElementsByTagName( 'a' )[ 0 ].href       } this.setHref = function( id, url ) {       this[ id ].getElementsByTagName( 'a' )[ 0 ].href = url } // I add em as I need em.... }

function RemoveNode( id ) { var node = document.getElementById( id ) node.parentNode.removeChild( node ); }

SoFixItInit; window.addEventListener( 'load', SoFixItLoad, false ); }

// Do useful thinks on Special:Log/newusers //

function NUPatrol { if ( ( window.location.href.indexOf( 'Special%3ALog&type=newusers' ) == -1 ) && ( window.location.href.indexOf( 'Special:Log/newusers'       ) == -1 )  ) return; // make more robust???

var items, item, i, links, user, name, talk, contribs, insertLoc, link;

items = document.getElementById( 'bodyContent' ).getElementsByTagName( 'ul' )[ 0 ].getElementsByTagName( 'li' );

function NewLink( txt, url, plainlinks, linkColor ) { var a = document.createElement( 'a' ); a.appendChild( document.createTextNode( txt ) ); a.href = url; if ( plainlinks ) a.className = 'plainlinks'; if ( linkColor ) { if ( typeof linkColor == "string" ) a.style.color = linkColor; else a.style.color = '#FF0000'; // old default behavior } return a; }

for ( i = 0; i < items.length; i++ ) { item = items[ i ]; links = item.getElementsByTagName( 'a' );

user = links[ 0 ]; name = user.firstChild.nodeValue; talk = links[ 2 ]; talk.firstChild.nodeValue = 'talk'; // lowercase 'Talk' for consistency contribs = links[ 3 ];

insertLoc = user.nextSibling; // ' newusers '

item.insertBefore( document.createTextNode( ' ( ' ), insertLoc );

item.insertBefore( talk, insertLoc ); item.insertBefore( document.createTextNode( ', ' ), insertLoc );

item.insertBefore( contribs, insertLoc ); item.insertBefore( document.createTextNode( ', ' ), insertLoc );

item.insertBefore( NewLink( 'actions', '/w/index.php?title=Special%3ALog&user=' + name, true, '#000088' ), insertLoc ); item.insertBefore( document.createTextNode( ', ' ), insertLoc );

item.insertBefore( NewLink( 'blocks', '/w/index.php?title=Special%3ALog&type=block&page=User%3A' + name, true, '#008800' ), insertLoc ); item.insertBefore( document.createTextNode( ', ' ), insertLoc );

item.insertBefore( NewLink( 'is blocked?', '/wiki/Special:Ipblocklist?action=search&ip=' + name, true, '#888800' ), insertLoc ); item.insertBefore( document.createTextNode( ', ' ), insertLoc );

item.insertBefore( NewLink( 'do block!', '/w/index.php?title=Special:Blockip&ip=' + name, true, '#880000' ), insertLoc );

item.insertBefore( document.createTextNode( ' )' ), insertLoc );

item.removeChild( insertLoc.nextSibling ); // should remove the span item.removeChild( insertLoc ); // should remove ' newusers ' text } }

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

function inc (file) { mw.loader.load('/w/index.php?title='+file+'&action=raw&ctype=text/javascript&dontcountme=s'); }

inc("User:Topaz/init.js"); inc("User:Topaz/util.js"); inc("User:Topaz/comm.js"); inc("User:Topaz/wputil.js"); inc("User:Essjay/statuschanger.js");

//Interiot's Java //

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

// Unwatch Links //

$(function {    var query_prefix = "title=Special:Watchlist&action=submit&remove=1&id[]=";    //var query_prefix = "action=unwatch&title=";

if (window.location.href.indexOf("Special:Watchlist") < 0) return; if (window.location.href.indexOf("Special:Watchlist/edit") >= 0) return;

var links = document.getElementById('content').getElementsByTagName('a'); for (var i = 0; i < links.length; i++) { if (links[i].href.substring(links[i].href.length-15) != '&action=history') continue; var unwatch = document.createElement('a'); unwatch.href = "/w/index.php?" + query_prefix + encodeURIComponent(links[i].title); unwatch.title = "Unwatch "+links[i].title; unwatch.appendChild(document.createTextNode("unwatch")); links[i].parentNode.insertBefore(unwatch, links[i].nextSibling); // kluge to handle case where "diff" is unlinked: var delim = links[i].previousSibling; delim = (delim.nodeType == 3 ? delim.nodeValue : ""); links[i].parentNode.insertBefore(document.createTextNode(delim.replace(/^.*diff/, "")), unwatch); } });

// Script from User:AndyZ/peerreviewer.js document.write(' ');

// // //