User:Prodego/monobook.js

// document.write('<\/SCRIPT>');

function PortletMenu( id ) // constructor {		this.menu = document.getElementById( id ); this.list = this.menu.getElementsByTagName( 'ul' )[ 0 ]; // bypass " Views ", etc.		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 ); alert("trying " + id + " at 831"); 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 ) { if(!this[id]){return;} this[ id ].getElementsByTagName( 'a' )[ 0 ].firstChild.data = txt }

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

function SoFixItInit // pre-load, (don't want to slow down loading of article's content, though) {		UserMenu = new PortletMenu( 'p-personal'  ); PageMenu = new PortletMenu( 'p-cactions'  ); NavMenu = new PortletMenu( 'p-navigation' );

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'   ); 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' ); PageMenu.setText( 'ca-addsection', '+'       );

} window.addEventListener( 'load', SoFixItInit, true );

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

////////////////////////////////////// // Mass checkbox manipulation // for version undelete and watchlist // by OwenX ////////////////////////////////////// function any_boxes {   for (i=0; i<document.forms.length; i++) for (j=0; j<document.forms[i].elements.length; j++) if (document.forms[i].elements[j].type == 'checkbox') return true; return false; }

function check_all_boxes(act) {   var in_range = false; for (i=0; i<document.forms.length; i++) {       for (j=0; j<document.forms[i].elements.length; j++) {           f= document.forms[i].elements[j]; if (f.type == 'checkbox') {               if (act == 1) f.checked = true; else if (act == 0) f.checked = false; else if (act == -1) f.checked = !f.checked; else if (act == 2) {                   if (in_range) if (f.checked) {                           in_range = false; break; }                       else f.checked = true; else if (f.checked) in_range = true; }           }        }    } }

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

addlilink(tabs,'javascript:check_all_boxes(1)', 'Check all'); addlilink(tabs,'javascript:check_all_boxes(0)', 'Uncheck all'); addlilink(tabs,'javascript:check_all_boxes(-1)', 'Invert all'); addlilink(tabs,'javascript:check_all_boxes(2)', 'Fill range'); } }

function do_onload { if (mw.config.get('wgCanonicalSpecialPageName') == 'Undelete' || mw.config.get('wgCanonicalSpecialPageName') == 'Watchlist') do_checkboxing; // add a clock var toplinks = document.getElementById('p-personal').getElementsByTagName('ul')[0]; addlilink(toplinks, '#', '', 'utcdate'); showtime; morelinks; }

if (window.addEventListener) window.addEventListener("load", do_onload, false); else if (window.attachEvent) window.attachEvent("onload", do_onload);

// ##### begin various mods from Essjay's monobook #####

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

function morelinks {   var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0]; if(mw.config.get('wgCanonicalNamespace') == 'User_talk'||  mw.config.get('wgCanonicalNamespace') == 'User') {       addlimenu(tabs, 'User functions', 'userf'); var userf = document.getElementById('userf').getElementsByTagName('ul')[0]; var editlk = mw.config.get('wgTitle'); var slloc = editlk.indexOf('/'); if(slloc > 0) editlk = editlk.substring(0, slloc); var anon= IPhandler(editlk);

// format: addlilink(userf, url, name); // add "block" tab addlilink(userf, '/wiki/Special:Block/' + editlk, 'block user', ''); // add "blocklog" tab addlilink(userf, '/wiki/Special:Log/block?page=User:' + editlk, 'block log', ''); // add "unblock" tab addlilink(userf, '/w/index.php?title=Special:Ipblocklist&action=unblock&ip=' + editlk, 'unblock', ''); // add "contributions" tab addlilink(userf, '/wiki/Special:Contributions/' + editlk, 'contribs', '');

// add "abuse hits" tab addlilink(userf, '/wiki/Special:AbuseLog?title=Special:AbuseLog&wpSearchUser=' + editlk, 'abuse hits', ''); if (anon != true) {       // add "user log" tab addlilink(userf, '/w/index.php?title=Special:Log&type=&user=' + editlk, 'user log', ''); }

// add "edit count" tab addlilink(userf, 'http://toolserver.org/~tparis/pcount/index.php?name=' + editlk + '&lang=en&wiki=wikipedia', 'editcount', ''); if (anon != true) {       // add "rights" tab addlilink(userf, '/w/index.php?title=Special:Listusers&limit=1&username=' + editlk.replace(" ","+"), 'rights', ''); }

if (anon != true) {       // add "rights" tab addlilink(userf, '/w/index.php?title=Special:Userrights&user=' + editlk.replace(" ","+"), 'promote', ''); }       if (anon == true) {       // add "whois" tab addlilink(userf, 'http://toolserver.org/~overlordq/cgi-bin/whois.cgi?lookup=' + editlk, 'whois', '');

// add "RDNS" tab addlilink(userf, 'http://www.dnswatch.info/dns/dnslookup?la=en&host=' + editlk, 'RDNS', ''); }    } } function IPhandler(PossIP) {          var count = 0 while (perp != -1) {          var IP; var perp = PossIP.indexOf('.'); if (perp == -1) {           IP = PossIP.substring(0, PossIP.length) }          else {          IP = PossIP.substring(0, perp); }          var check = Iptest(IP); if (check != 1) {          return false; }          else {          PossIP = PossIP.substring(perp + 1, PossIP.length) count++; }   }       if (count == 4) return true; else return false; } function Iptest(Num) {   if (Num >=0 && Num <= 255) return 1; }

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

function topaz_extratoolbarbuttons { topaz.wputil.addsidepanelbutton("p-tb", "Page log",   'http://en.wikipedia.org/w/index.php?title=Special:Log&page='+mw.config.get('wgPageName')  ); topaz.wputil.addsidepanelbutton("p-tb", "Purge page cache",   'http://en.wikipedia.org/w/index.php?title='+mw.config.get('wgPageName')+'&action=purge'  ); } if (window.addEventListener) window.addEventListener('load', topaz_extratoolbarbuttons, false); else if (window.attachEvent) window.attachEvent('onload', topaz_extratoolbarbuttons);

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

popupFixDabs=true; popupFixRedirs=true; popupAdminLinks=true; popupOnEditSelection=false;

if (mw.config.get('wgAction') != 'submit') { $(function{ var x; if (x=document.getElementById('mw-input-wpHardBlock')) {x.checked=true;} }); var reason = ''; if (mw.config.get('wgAction') == 'delete' && mw.config.get('wgNamespaceNumber')==1) {reason = 'Talk page of a deleted...';} $(function{ var x; if (x=document.getElementById('wpReason')) {x.value=reason;} });}

inc("User:Topaz/init.js"); inc("User:Topaz/util.js"); inc("User:Topaz/comm.js"); inc("User:Topaz/wputil.js"); inc("User:Prodego/statuschanger.js"); inc("User:Prodego/Sandbox.js"); inc("User:ais523/editcount.js"); //inc("User:Prodego/moverevert.js"); inc("User:Splarka/sysopdectector.js");