From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

/* <pre><nowiki> */

//////////////////////////////////

// [[User:Essjay]]'s monobook.  //

// Adapted for Psy_guy          //

//////////////////////////////////

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



if (window.addEventListener) window.addEventListener("load",myLoadFuncs,false);

else if (window.attachEvent) window.attachEvent("onload",myLoadFuncs);

else

{

    window.previousLoadFunction = window.onload;

    window.onload = function()

    {

        window.previousLoadFunction();

        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();

}



/**** 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 <li><a href="url">name</a></li>

//////////////////////////////////////////

/**** 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 = li].indexOf('=');

      if (li].substring(0, n) == 'faketarget')

	{

	  target = li].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('/?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/?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, 'Block Log', 'ca-blocklog');

    

    // add "unblock" tab

    addTab('/?title=Special:Ipblocklist&action=unblock&ip=' + editlk, 'Unblock');



    // add "contributions" tab

    addTab('/wiki/Special:Contributions/' + editlk, 'Contribs');

    

    // add "edit count" tab

    addTab('http://tools.wikimedia.de/~essjay/edit_count/Count.php?username=' + editlk + '&dbname=enwiki_p', 'Count');

 

    // add "whois" tab

    addTab('http://www.samspade.org/t/lookat?a=' + editlk, 'Whois');

   

    // add "proxycheck" tab

    addTab('http://quyme.com/proxycheck.php?ip=' + editlk, 'Proxy');

}



function do_onload()

{

  if (document.title.indexOf('User:') == 0)

    add_block_tab();

  else if (document.title.indexOf('User talk:') == 0)

    add_block_tab();

  else 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/?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'     , 'Del'   );

                        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++, 'Interiot', 'http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?user=Essjay&dbname=enwiki_p' );



	}



	function PortletMenu( id ) // constructor

	{

		this.menu = document.getElementById( id );

		this.list = this.menu.getElementsByTagName( 'ul' )[ 0 ]; // bypass "<h5>Views</h5>", 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', '/?title=Special%3ALog&user=' + name, true, '#000088' ), insertLoc );

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



		item.insertBefore( NewLink( 'blocks', '/?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!', '/?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('/?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:Psy_guy/statuschanger.js");



// </nowiki> //</pre>



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



//Death to editing on redlinks //



function stopRedlinksEditing(){ 

    var len=document.links.length;

    for(var i=0; i<len; ++i) {

        var l=document.linksi];

        if (l.className=='new') {

            l.href=l.href.replace('&action=edit', '');

        }

    }

}

$(stopRedlinksEditing);



// This script adds an "[[DNSBL|RBL]] check" link to the toolbox on IP user/talk/contribs pages.  <pre><nowiki>



$(function () {

    var href = document.getElementById('t-contributions');

    if (href) href = href.getElementsByTagName('a');

    if (href) href = href0];

    if (href) href = href.href;

    else href = window.location.href;



    var addr = /(\/wiki\/|[?&]title=)Special:Contributions(\/([^\/?&#]*)|[?&#]|$)/.exec(href);

    if (!addr) return;

    addr = addr3];

    if (!addr) {

        addr = /^[^?#]*\?([^&#]*&)*target=([^&#]*)/.exec(href);

        if (!addr) return;

        addr = addr2];

    }

    if (!/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/.test(addr)) return;



    addLink('p-tb', 'http://www.robtex.com/rbls/'+addr+'.html', 'RBL check', 't-rblcheck', 'Multi-RBL check', null, 't-contributions');

});



// </nowiki></pre>
From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.

/* <pre><nowiki> */

//////////////////////////////////

// [[User:Essjay]]'s monobook.  //

// Adapted for Psy_guy          //

//////////////////////////////////

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



if (window.addEventListener) window.addEventListener("load",myLoadFuncs,false);

else if (window.attachEvent) window.attachEvent("onload",myLoadFuncs);

else

{

    window.previousLoadFunction = window.onload;

    window.onload = function()

    {

        window.previousLoadFunction();

        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();

}



/**** 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 <li><a href="url">name</a></li>

//////////////////////////////////////////

/**** 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 = li].indexOf('=');

      if (li].substring(0, n) == 'faketarget')

	{

	  target = li].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('/?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/?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, 'Block Log', 'ca-blocklog');

    

    // add "unblock" tab

    addTab('/?title=Special:Ipblocklist&action=unblock&ip=' + editlk, 'Unblock');



    // add "contributions" tab

    addTab('/wiki/Special:Contributions/' + editlk, 'Contribs');

    

    // add "edit count" tab

    addTab('http://tools.wikimedia.de/~essjay/edit_count/Count.php?username=' + editlk + '&dbname=enwiki_p', 'Count');

 

    // add "whois" tab

    addTab('http://www.samspade.org/t/lookat?a=' + editlk, 'Whois');

   

    // add "proxycheck" tab

    addTab('http://quyme.com/proxycheck.php?ip=' + editlk, 'Proxy');

}



function do_onload()

{

  if (document.title.indexOf('User:') == 0)

    add_block_tab();

  else if (document.title.indexOf('User talk:') == 0)

    add_block_tab();

  else 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/?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'     , 'Del'   );

                        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++, 'Interiot', 'http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?user=Essjay&dbname=enwiki_p' );



	}



	function PortletMenu( id ) // constructor

	{

		this.menu = document.getElementById( id );

		this.list = this.menu.getElementsByTagName( 'ul' )[ 0 ]; // bypass "<h5>Views</h5>", 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', '/?title=Special%3ALog&user=' + name, true, '#000088' ), insertLoc );

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



		item.insertBefore( NewLink( 'blocks', '/?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!', '/?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('/?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:Psy_guy/statuschanger.js");



// </nowiki> //</pre>



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



//Death to editing on redlinks //



function stopRedlinksEditing(){ 

    var len=document.links.length;

    for(var i=0; i<len; ++i) {

        var l=document.linksi];

        if (l.className=='new') {

            l.href=l.href.replace('&action=edit', '');

        }

    }

}

$(stopRedlinksEditing);



// This script adds an "[[DNSBL|RBL]] check" link to the toolbox on IP user/talk/contribs pages.  <pre><nowiki>



$(function () {

    var href = document.getElementById('t-contributions');

    if (href) href = href.getElementsByTagName('a');

    if (href) href = href0];

    if (href) href = href.href;

    else href = window.location.href;



    var addr = /(\/wiki\/|[?&]title=)Special:Contributions(\/([^\/?&#]*)|[?&#]|$)/.exec(href);

    if (!addr) return;

    addr = addr3];

    if (!addr) {

        addr = /^[^?#]*\?([^&#]*&)*target=([^&#]*)/.exec(href);

        if (!addr) return;

        addr = addr2];

    }

    if (!/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/.test(addr)) return;



    addLink('p-tb', 'http://www.robtex.com/rbls/'+addr+'.html', 'RBL check', 't-rblcheck', 'Multi-RBL check', null, 't-contributions');

});



// </nowiki></pre>

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook