User:JohnS/monobook.js

/* Any JavaScript here will be loaded for users using the MonoBook skin */ /* Based off of http://www.halopedia.org/MediaWiki:Monobook.js */ /* Any JavaScript here will be loaded for users using the MonoBook skin */ /* MONOBOOK SIDEBAR v2.3 */ window.wgSidebar = ( window.wgSidebar || {} ); wgSidebar['Navigation'] = [ 'Main Page|Home', 'TechInfoDepot:Community portal|Community portal', 'TechInfoDepot:Current events|Current events', 'Special:RecentChanges|Recent Changes', 'Special:Random|Random Page' ]; wgSidebar['Start'] = [ 'Linux|Linux', 'Software|Software', 'Microsoft Windows|Windows' ]; wgSidebar['Computers'] = [ 'Computers:Hardware Specific|Hardware Specific', 'Computers:Motherboards|Motherboards', 'Computers:Gear|Personal Gear' ]; wgSidebar['Electronics'] = [ 'Electronics:Hardware Specific|Hardware Specific', 'Electronics:Home Theater|Home Theater' ]; wgSidebar['JTAG'] = [ 'JTAG:TJTAG|TJTAG', 'JTAG:pinouts|JTAG Pinouts' ]; wgSidebar['Network'] = [ 'Network:Bootloader Collection Project|Bootloader Collection Project', {'Network:WiFi|Wifi': [ 'DD-WRT:Main Page|DD-WRT', 'Tomato:Main Page|Tomato', 'Network:Other Firmware|Other Firmware', ]},       {'Network:Wired|Wired': [ 'Network:Wired Routers|Wired Routers', 'Network:Interface Cards|NICs', 'Network:Hubs|Network Hubs', 'Network:Switches|Network Switches', ]},       'Network:Hardware Specific|Hardware Specific', 'Network:Hardware DIY|Hardware DIY', 'Network:Gear|Personal Gear', ]; wgSidebar['Support'] = [ 'Help:Contents|User help', 'TechInfoDepot:FAQ|FAQ', 'Project:Support desk|Support desk', '[]|Reload Page' ]; /** * MonobookSidebar: Sets sidebar submenus for elements of MonoBook, adding special * classes to pass the pointer over to allow the effect on all browsers. * * Date: 15 October 2010 * Copyright © 2010 Jesús Martínez Novo (User:Ciencia Al Poder) * * This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *   the Free Software Foundation; either version 2 of the License, or *   (at your option) any later version */ MonobookSidebar = { re_s: / /g, re_p: /%/g, loadedMenus: [], init: function { if ( !window.wgSidebar ) { return; }		for ( var menu in wgSidebar ) { var item = document.getElementById( MonobookSidebar.getId( menu ) ); if ( !item ) { continue; }			var menuId = jQuery( item ).parents.get( 2 ).id; // Check it's a valid portlet item if ( !menuId || menuId == '' ) { continue; }			// Generate menu hierarchy MonobookSidebar.buildSubmenu( item, wgSidebar[menu] ); // Set events MonobookSidebar.setEvents( menuId ); }	},	buildSubmenu: function( el, arr ) { var ul = document.createElement( 'ul' ); ul.className = 'sub-menu'; for ( var i = 0; i < arr.length; i++ ) { var li = document.createElement( 'li' ); if ( typeof arr[i] == 'string' ) { var a = MonobookSidebar.linkFromText( arr[i] ); li.appendChild( a ); } else { for ( var menukey in arr[i] ) { a = MonobookSidebar.linkFromText( menukey ); li.appendChild( a ); MonobookSidebar.buildSubmenu( li, arr[i][menukey] ); }			}			ul.appendChild( li ); }		el.appendChild( ul ); el.className = 'with-sub-menu'; var em = document.createElement( 'em' ); em.appendChild( document.createTextNode( '\u203A' ) ); el.firstChild.appendChild( em ); },	setEvents: function( menuId ) { for ( var i = 0; i < MonobookSidebar.loadedMenus; i++ ) { if ( MonobookSidebar.loadedMenus[i] == menuId ) { return; }		}		jQuery( '#' + menuId ).children.eq( 1 ).children.eq( 0 ) .bind( 'mouseover', MonobookSidebar.mouseover ) .bind( 'mouseout', MonobookSidebar.mouseout ); MonobookSidebar.loadedMenus.push( menuId ); },	mouseover: function( e ) { var target = e.target; while ( target.tagName.toLowerCase != 'div' ) { if ( target.tagName.toLowerCase == 'a' ) { target = target.parentNode; }			if ( target.tagName.toLowerCase == 'li' ) { jQuery( target ).addClass( 'hover' ); }			target = target.parentNode; }	},	mouseout: function( e ) { var target = e.target; while ( target.tagName.toLowerCase != 'div' ) { if ( target.tagName.toLowerCase == 'a' ) { target = target.parentNode; }			if ( target.tagName.toLowerCase == 'li' ) { jQuery( target ).removeClass( 'hover' ); }			target = target.parentNode; }	},	linkFromText: function( txt ) { var article = , caption = , sepPos = txt.indexOf( '|' ); if ( sepPos > 0 ) { article = txt.substr( 0, sepPos ); caption = txt.substr( sepPos + 1 ); } else { article = caption = txt; }		article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent, it was messing things up --Jack Phoenix var a = document.createElement( 'a' ); if ( article.length > 7 && article.substr( 0, 7 ) == 'http://' ) { a.setAttribute( 'href', article ); } else { article = article.replace( MonobookSidebar.re_s, '_' ); // removed encodeURIComponent, it was messing things up --Jack Phoenix // Replace encoded colons with normal colons -- added this. --Jack Phoenix article = article.replace( '%3A', ':' ); // added code ends here a.setAttribute( 'href', wgArticlePath.replace( '$1', article ) ); }		a.appendChild( document.createTextNode( caption ) ); return a;	}, getId: function( name ) { return 'n-' + encodeURIComponent( name.replace( MonobookSidebar.re_s, '-' ) ).replace( MonobookSidebar.re_p, '.' ); } }; /* Calling this code to initialize */ jQuery( MonobookSidebar.init );