MediaWiki:Monobook.js

From Wikizilla, the kaiju encyclopedia
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.

/* Any JavaScript here will be loaded for users using the MonoBook skin */
/*<nowiki>*/
/** additional monobook scripts **/

/**** function displayTimer.js
 */

function FondoFooter() {
	$('#globalWrapper').append($('#footer'));
}
(typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(FondoFooter);
/* fin alternateBG */

// Mueve cambios recientes a toolbox
function PosicionaElementosToolbox() {
	$('#p-tb').children().eq(1).children().eq(0)
	// Opciones en páginas de usuario
	.prepend($('#t-emailuser'))
	.prepend($('#t-blockip'))
	.prepend($('#t-log'))
	.prepend($('#t-contributions'))
	// 'Enlace permanente' y 'Versión para imprimir'
	.prepend($('#t-permalink'))
	.prepend($('#t-print'))
	// Opciones principales
	.prepend($('#t-specialpages'))
	.prepend($('#t-recentchangeslinked'))
	.prepend($('#t-whatlinkshere'))
	.prepend($('#t-recentchanges'))
	.prepend($('#t-upload'))
	.prepend($('#t-randompage'));

	if ($('#t-multiupload').length === 0 && $('#t-whatlinkshere').length == 1) {
	    $('<li id="t-recentchanges"><a href="/wiki/Special:RecentChanges">Recent changes</a></li>').insertAfter('#t-whatlinkshere');
	}
	if ($('#t-multiupload').length === 0 && $('#t-upload').length == 1) {
	    $('<li id="t-recentfiles"><a href="/wiki/Special:NewFiles">Recent images</a></li>').insertAfter('#t-upload');
	}
	if ($('#t-multiupload').length === 0 && $('#t-recentfiles').length == 1) {
	    $('<li id="t-randompage"><a href="/wiki/Special:Random">Random page</a></li>').insertAfter('#t-recentfiles');
	}

	$('#t-contributions').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: darkred;" />');
	$('#t-print').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: darkred;" />');
	$('#t-upload').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: darkred;" />');
	$('#t-whatlinkshere').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: darkred;" />');

	// wikicities
	$('#p-wikicities-nav').children('div').eq(0).children('hr').eq(0).next('ul').eq(0).children('li').eq(0).attr('id','n-activityfeed');
	$('#n-activityfeed').children('a').eq(0).text('Recent activity').attr('href','/wiki/Special:RecentChanges');
	$('#p-lang').before($('#p-wikicities-nav'));

}
(typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(PosicionaElementosToolbox);

// UserWikiInfo
if ((mw.config.get('wgNamespaceNumber', 0) == -1 && mw.config.get('wgCanonicalSpecialPageName', '') == 'Contributions') || (mw.config.get('wgCanonicalNamespace', '') == 'User' || mw.config.get('wgCanonicalNamespace', '') == 'User_talk')) {
	(typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function() {
		if (!window.disableUserWikiInfo) {
			mw.loader.using(['mediawiki.api'], function() {
				importScript('MediaWiki:Common.js/Clases/UserWikiInfo.js');
			});
		}
	});
}

// Añade un aviso al salir de una página cuando se está editando
var LeaveEditingWarning = (function() {
	var _MESSAGE = 'Hay cambios sin guardar que se perderán si abandonas esta página.',
	_enabled = false,
	_originalText = null,
	_forceWarn = false,
	_triggerWarn = false,
	_submit = false,
	_timer = null,
	_init = function() {
		if (mw.config.get('wgAction') != 'submit') {
			_originalText = $('#wpTextbox1').val();
		}
	},
	_enable = function() {
		if (_enabled) return;
		_enabled = true;
		if (mw.config.get('wgAction') == 'submit') {
			_forceWarn = true;
		} else {
			$('#wpTextbox1').bind('change', _onInputChange);
			// El "change" solo se activa al salir del textbox. Comprobamos periódicamente
			window.setInterval(_onInputChange, 5000);
		}
		$('#editform').bind('submit', _onFormSubmit);
		$(window).bind('beforeunload.LeaveEditingWarning', _onBeforeUnload);
	},
	_disable = function() {
		if (!_enabled) return;
		_enabled = false;
		_forceWarn = false;
		_triggerWarn = false;
		$('#editform').unbind('submit', _onFormSubmit);
		$('#wpTextbox1').unbind('change', _onInputChange);
		if (_timer) {
			window.clearInterval(_timer);
			_timer = null;
		}
		$(window).unbind('beforeunload.LeaveEditingWarning');
	},
	_onFormSubmit = function(e) {
		_submit = true;
	},
	_onInputChange = function(e) {
		if (_originalText !== null && _originalText !== $('#wpTextbox1').val()) {
			_triggerWarn = true;
		} else {
			_triggerWarn = false;
		}
	},
	_onBeforeUnload = function() {
		if (_timer) {
			window.clearInterval(_timer);
			_timer = null;
		}
		if (!_submit && (_forceWarn || _triggerWarn)) {
			if (window.event) {
				window.event.returnValue = _MESSAGE;
			}
			return _MESSAGE;
		}
	};
	
	if (mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit') {
		(typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(_init);
		
		if (!window.LeaveEditingWarning || window.LeaveEditingWarning.enabled !== false) {
			(typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(_enable);
		}
	}
	
	return {
		enable: _enable,
		disable: _disable
	};
})();


// Wikia ha cambiado el texto del título de las imágenes. Restaurando...
if (mw.config.get('wgNamespaceNumber') == 6) {
	(typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function() {
		$('#firstHeading').text(mw.config.get('wgPageName').replace(/_/g, ' '));
	});
}

(typeof(window.safeOnLoadHook)=='function'?safeOnLoadHook:$)(function() {
	if (!mw.config.get('wgNoWarnOnLogout', false)) {
		$('#pt-logout').children().eq(0).bind('click', function() {
			return confirm('If you continue you will not be identifiable anymore and will not be able to edit pages, leave comments or replies. You can begin a new session at any point. Do you wish to continue?');
		});
	}
});

/* MONOBOOK SIDEBAR v2.3 */
window.wgSidebar = ( window.wgSidebar || {} );

wgSidebar['Help'] = [
	'Wikizilla:About|About',
	'Help|Help Pages',
	'Wikizilla:Manual of Style|Manual of Style',
        'Wikizilla:Policy|Policy',
	'Category:Stubs|Stubs',
];

wgSidebar['Monsters'] = [
	{':Category:Showa Kaiju|Showa': [
                {'Godzilla': [
                      'Godzilla (First Generation)',
                      'Godzilla (Second Generation)',
                ]},
		{'Anguirus': [
			          'Anguirus (First Generation)',
			          'Anguirus (Second Generation)',
			          ]},
		{'King Kong': [
			           'King Kong (King Kong vs. Godzilla)',
			           'King Kong (King Kong Escapes)',
			     ]},
		'Rodan (Showa)|Rodan',
		{'Mothra': [
                      'Mothra (First Generation)',
                      'Mothra (Second Generation)',
                      'Mothra (Third Generation)',
                ]},
		'King Ghidorah (Showa)|King Ghidorah',
		'Baragon',
		'Gigan',
		'Megalon',
		'Mechagodzilla (Showa)|Mechagodzilla',
		':Category:Showa Kaiju|more...',
         ]},
	{':Category:Heisei Kaiju|Heisei': [
                'Godzilla (Heisei)|Godzilla',
		'Biollante',
                {'King Ghidorah': [
                      'King Ghidorah (Godzilla vs. King Ghidorah)',
                      'Mecha-King Ghidorah',
                      'King Ghidorah (Rebirth of Mothra 3)',
                ]},
                {'Mothra': [
                      'Mothra (Godzilla vs. Mothra)',
                      'Mothra (Rebirth of Mothra)',
                      'Mothra Leo',
                ]},
		'Battra',
                'Rodan (Heisei)|Fire Rodan',
		'Godzilla Junior',
		'Mechagodzilla (Heisei)|Super Mechagodzilla',
		'SpaceGodzilla',
		'Moguera|MOGUERA',
		'Destoroyah',
		':Category:Heisei Kaiju|more...',
         ]},
	{':Category:Millennium Kaiju|Millennium': [
                {'Godzilla': [
                      'Godzilla (Godzilla 2000: Millennium)',
                      'Godzilla (Godzilla vs. Megaguirus)',
                      'Godzilla (GMK)',
                      'Godzilla (Kiryu series)',
                      'Godzilla (Godzilla Final Wars)',
                ]},
		'Orga',
                'Meganulon|Meganula',
		'Megaguirus',
                {'Mothra': [
                      'Mothra (GMK)',
                      'Mothra (Godzilla: Tokyo SOS)',
                      'Mothra (Godzilla Final Wars)',
                ]},
		'Kiryu',
		'Kamoebas',
		'Zilla',
		'Monster X',
		':Category:Millennium Kaiju|more...',
         ]},
	{':Category:Monsters|Reiwa': [
                {'Godzilla': [
                      'Godzilla (Shin Godzilla)',
                      'Godzilla Filius',
                      'Godzilla Earth',
                      'Godzilla (Godzilla Singular Point)|Godzilla Ultima',
                      'Godzilla (Godzilla Minus One)'
                ]},
		'Servum',
		'Mechagodzilla (anime trilogy)|Mechagodzilla City',
                'King Ghidorah (anime trilogy)|Ghidorah',
                'Mothra (anime trilogy)|Mothra',
                'Jet Jaguar',
                'Salunga',
                'Rodan (Godzilla Singular Point)|Rodan',
                'Anguirus (Godzilla Singular Point)|Anguirus',
                'Manda',
                'Kumonga',
                'Kamanga, Hanenga, and Zenbunga',
         ]},
	{':Category:Legendary Godzilla Kaiju|Monsterverse': [
		'Godzilla (Monsterverse)|Godzilla',
		'MUTO',
		'Mothra (Monsterverse)|Mothra',
		'King Ghidorah (Monsterverse)|King Ghidorah',
		'Rodan (Monsterverse)|Rodan',
		'Behemoth',
		'King Kong (Monsterverse)|Kong',
		'Mechagodzilla (Monsterverse)|Mechagodzilla',
		'Skullcrawler',
		'Doug',
		'Suko',
		'Skar King',
		'Shimo',
		':Category:Legendary Godzilla Kaiju|more...',
         ]},
	{':Category:Unmade Monsters|Unmade': [
	 {':Category:Unmade Monsters|Showa': [
                'Bride of Godzilla',
                'Gezira',
                'Red Moon',
                'Erabus',
                'Halfun',
                'Mogu',
                'Majin Tuol',
                'Gamoni',
		':Category:Unmade Monsters|more...',
          ]},
	 {':Category:Unmade Monsters|Heisei': [
		'Bagan',
		'Deutalios',
                'Gigamoth C Type',
                'Gigamoth',
                'MechaMothra',
                'Berserk',
                'Transforming Mechagodzilla',
                'White Rodan',
                'Emperor Ghidorah',
                'AstroGodzilla',
                'Barubaroi',
		'Ghost Godzilla',
		'Gryphon',
		':Category:Unmade Monsters|more...',
          ]},
	 {':Category:Unmade Monsters|Post-1999': [
                'Miba',
                'Liopleurodon',
                'Deathla',
                'Lightning Bug',
                'Fire Lion',
                'The Visitor',
                'Strange, dead monster|A strange, dead monster',
                'Rokmutul',
                'Pterodactyl',
		':Category:Unmade Monsters|more...',
          ]},
	 {':Category:Unmade Monsters|Other': [
                'Nezura',
                'Nessie (Unmade film)|Nessie',
                'W',
		':Category:Unmade Monsters|more...',
          ]},
		':Category:Unmade Monsters|more...',
         ]},
	{':Category:Gamera Kaiju|Gamera': [
		{'Gamera': [
                      'Gamera (Showa)',
                      'Gamera (Heisei Trilogy)',
                      'Avant Gamera',
                      'Toto',
         ]},   
		'Barugon',
		'Gyaos',
		'Viras',
		'Zigra',
		'Legion',
		'Iris',
        'Zedus',
		':Category:Gamera Kaiju|more...',
	]},
	{':Category:Non-Toho Kaiju|Other Non-Toho': [
		 {'King Kong': [
                      'King Kong (RKO)',
                      'King Kong (De Laurentiis)',
                      'King Kong (Universal)',
         ]},            
		'Clover',
		'Guilala',
		'Gappa',
		'Yonggary',
		'Daimajin',
		':Category:Non-Toho Kaiju|more...',
	]},
	{':Category:Monsters|Other': [
		':Category:Comic Kaiju|Monsters from comics',
		':Category:Game Characters|Monsters from games',
		':Category:The Godzilla Power Hour Kaiju|Monsters from Hanna-Barbera',
		':Category:Godzilla: The Series Kaiju|Monsters from Godzilla: The Series',
		':Category:Toho Kaiju|Other monsters from Toho',
		':Category:Monsters|more...',
         ]},
	':Category:Designs|Suits/Designs',
];

wgSidebar['Film and TV'] = [
	{'Showa era|Showa': [
           //sub
	 {':Category:Showa Godzilla Films|Godzilla films': [
		'Godzilla (1954 film)|Godzilla',
		'Godzilla Raids Again',
		'King Kong vs. Godzilla',
		'Mothra vs. Godzilla',
		'Ghidorah, the Three-Headed Monster',
		'Invasion of Astro-Monster',
		'Ebirah, Horror of the Deep',
		'Son of Godzilla',
		'Destroy All Monsters',
		'All Monsters Attack',
		'Godzilla vs. Hedorah',
		'Godzilla vs. Gigan',
		'Godzilla vs. Megalon',
		'Godzilla vs. Mechagodzilla',
		'Terror of Mechagodzilla',
           ]},

	 {':Category:Gamera Films|Gamera films': [
		'Gamera the Giant Monster',
		'Gamera vs. Barugon',
		'Gamera vs. Gyaos',
		'Gamera vs. Viras',
		'Gamera vs. Guiron',
		'Gamera vs. Jiger',
		'Gamera vs. Zigra',
		'Gamera Super Monster',
           ]},
	 {':Category:Showa Series|Other Showa films': [
		'Rodan (film)|Rodan',
		'The Mysterians',
		'Varan (film)|Varan',
		'Mothra (film)|Mothra',
		'Atragon',
		'Frankenstein vs. Baragon',
                'The War of the Gargantuas',
		'King Kong Escapes',
		'Space Amoeba',
		':Category:Showa Series|more...',
           ]},
          ]},

	{'Heisei era|Heisei': [
          //sub
	 {':Category:Heisei Godzilla Films|Godzilla films': [
		'The Return of Godzilla',
		'Godzilla vs. Biollante',
		'Godzilla vs. King Ghidorah',
		'Godzilla vs. Mothra',
		'Godzilla vs. Mechagodzilla II',
		'Godzilla vs. SpaceGodzilla',
		'Godzilla vs. Destoroyah',
           ]},
	 {':Category:Gamera Films|Gamera films': [
		'Gamera the Guardian of the Universe',
		'Gamera 2: Attack of Legion',
		'Gamera 3: Revenge of Iris',
		'Gamera the Brave',
           ]},
	 {':Category:Rebirth of Mothra|Rebirth of Mothra trilogy': [
		'Rebirth of Mothra',
		'Rebirth of Mothra 2',
		'Rebirth of Mothra 3',
           ]},
	 ':Category:Heisei Series|Other Heisei films',
          ]},

	{':Category:Millennium Godzilla Films|Millennium': [
		'Godzilla 2000: Millennium|Godzilla 2000',
		'Godzilla vs. Megaguirus',
		'Godzilla, Mothra and King Ghidorah: Giant Monsters All-Out Attack|Giant Monsters All-Out Attack',
		'Godzilla Against Mechagodzilla',
		'Godzilla: Tokyo SOS',
		'Godzilla Final Wars',
          ]},
	 {':Category:Reiwa Godzilla Films|Reiwa': [
		'Shin Godzilla',
                'GODZILLA: Planet of the Monsters',
                'GODZILLA: City on the Edge of Battle',
                'GODZILLA: The Planet Eater',
                'Godzilla Minus One',
           ]},
	{':Category:American Films|Hollywood': [
	 {':Category:American Godzilla Films|Godzilla films': [
		'Godzilla (1954 film)#U.S. Release|Godzilla, King of the Monsters!',
		'GODZILLA (1998 film)|GODZILLA (1998)',
		'Godzilla (2014 film)|Godzilla (2014)',
		'Godzilla: King of the Monsters',
		'Godzilla vs. Kong',
		'Godzilla x Kong: The New Empire',
           ]},
	 {':Category:King Kong Films|King Kong films': [
		'King Kong (1933 film)|King Kong (1933)',
                'Son of Kong',
                'King Kong (1976 film)|King Kong (1976)',
                'King Kong Lives',
                'King Kong (2005 film)|King Kong (2005)',
                'Kong: Skull Island',
		'Godzilla vs. Kong',
		'Godzilla x Kong: The New Empire',
           ]},
	 {':Category:American Films|Other': [
		'Cloverfield',
                '10 Cloverfield Lane',
                'The Cloverfield Paradox',
                ':Category:American Films|more...',
           ]},
                ':Category:American Films|more...',
          ]},
	{':Category:Unmade Films|Unmade films': [

	 {':Category:Unmade Films|Up to 1980': [
		'Bride of Godzilla?',
		'The Volcano Monsters',
		'Operation Robinson Crusoe: King Kong vs. Ebirah|King Kong vs. Ebirah',
		'All Monsters Attack Directive',
		'Godzilla vs. Hedorah 2',
		'Godzilla vs. Red Moon',
		'Godzilla vs. the Space Monsters: Earth Defense Directive',
		'The Return of King Ghidorah!',
                'Godzilla vs. Gigan: The Return of King Ghidorah',
		'U.S.-Japan Collaboration: Godzilla',
		'A Space Godzilla',
		'Resurrection of Godzilla',
           ]},
	 {':Category:Unmade Films|1981-1995': [
		'Godzilla: King of the Monsters in 3D',
		'Unmade Animated Godzilla Film|Animated Godzilla film',
		'Mothra vs. Bagan',
		'Godzilla vs. King Kong',
        'Micro Super Battle: Godzilla vs. Gigamoth',
        'Godzilla%27s_Counterattack_(Unmade_film)|Godzilla’s Counterattack',
		'Godzilla vs. Mechani-Kong',
		'The Return of King Ghidorah (Heisei)|The Return of King Ghidorah',
		'Godzilla vs. Gigamoth',
		'Godzilla vs. MechaMothra',
		'Godzilla vs. Berserk',
		'Godzilla vs. Mechagodzilla II (early drafts)',
		'Godzilla (1994 film)|Godzilla (1994)',
		'Godzilla vs. AstroGodzilla',
		'Godzilla vs. Godzilla',
		'Godzilla vs. Barubaroi',
           ]},
	 {':Category:Unmade Films|1996-Present': [
		'Godzilla 2 (Unmade 1998 film sequel)|GODZILLA 2',
		'Unmade King Ghidorah Film|King Ghidorah film',
                'Godzilla Reborn',
                'Godzilla X Varan, Baragon and Anguirus: Giant Monsters All-Out Attack|Godzilla X Varan, Baragon and Anguirus',
                'Godzilla vs. Gamera (unmade 2002 film)|Godzilla vs. Gamera',
                'Godzilla 3-D',
                'Godzilla (June 2012 Screenplay)|Godzilla (June 2012)',
           ]},

		':Category:Unmade Films|more...',
          ]},

	':Category:Films|All films',

	{':Category:Television Series|TV series': [
         //sub
	 {'#|Godzilla TV series': [
		'Zone Fighter (series)|Zone Fighter',
		'Godzilla (series)|Godzilla',
		'Adventure! Godzilland',
		'Godzilla Island (series)|Godzilla Island',
		'Godzilla: The Series',
		'Godzilla Singular Point',
		'Monarch: Legacy of Monsters',
           ]},
	 {':Category:Television Series|Other': [
	 	'The King Kong Show',
		'Go! Godman',
		'Go! Greenman',
		'Assault! Human',
		'Zone Fighter (series)|Zone Fighter',
		'Kong: The Animated Series',
		'Super Star Fleet Sazer-X',
		'Kawaii! JenNy',
		'Kong: King of the Apes',
		'Skull Island (series)|Skull Island',
		':Category:Television Series|more...',
           ]},
          ]},
];

/// needs to be added one day
///wgSidebar['Comics'] = [

wgSidebar['Games'] = [
	{':Category:Video Games|1980s': [
		'Godzilla vs. 3 Giant Monsters',
		'Multiplayer Adventure: New Godzilla',
		'Monster\'s Fair',
		'Godzilla-kun (video game)|Godzilla-kun',
		'The Movie Monster Game',
		'Godzilla: Monster of Monsters!',
		':Category:Video Games|more...',
          ]},
	{':Category:Video Games|1990s': [
		'Godzilla 2: War of the Monsters',
		'Godzilla (arcade game)|Godzilla (arcade)',
		'Super Godzilla',
		'Godzilla (Alfa System video game)|Godzilla (Alfa System)',
                'Godzilla: Great Monster Battle',
		'Godzilla: Archipelago Shock',
		'Godzilla Generations',
		'Godzilla: Trading Battle',
		':Category:Video Games|more...',
          ]},
	{':Category:Video Games|2000s': [
		'Godzilla: The Series - Monster Wars',
		'Godzilla: Destroy All Monsters Melee',
		'Godzilla: Save the Earth',
		'Godzilla: Unleashed',
		'CR Godzilla 3S-T Battle',
		'Godzilla: Pachislot Wars',
		':Category:Video Games|more...',
          ]},
	{':Category:Video Games|2010s': [
		'CR Godzilla: Descent of the Destruction God',
		'Godzilla On Monster Island (Video Game)|Godzilla On Monster Island',
		'Godzilla: Smash3',
		'Godzilla (2014 video game)|Godzilla (PlayStation 3 / PlayStation 4)',
		'Godzilla: Kaiju Collection',
		'City Shrouded in Shadow',
                'Godzilla Defense Force',
		':Category:Video Games|more...',
          ]},
	{':Category:Atari Games|Atari': [
		'Godzilla: Domination!',
		'Godzilla: Destroy All Monsters Melee',
		'Godzilla: Save the Earth',
		'Godzilla: Unleashed',
		'Godzilla Unleashed: Double Smash',
          ]},
	{':Category:Applications|Apps': [
		'Godzilla: Monster Mayhem (Fighting Application)|Godzilla: Monster Mayhem (fighter)',
		'Godzilla: Monster Mayhem (Sidescroller Application)|Godzilla: Monster Mayhem (sidescroller)',
		'Godzilla Encounter (Application)|Godzilla Encounter',
		'Godzilla: Smash3',
		'Godzilla: Strike Zone',
		'Godzilla: Crisis Defense',
		'Godzilla: Kaiju Collection',
                'Godzilla Defense Force',
                'Godzilla Battle Line',
          ]},
	{':Category:Toy Lines|Toys': [
		'Godzilla Island Monster Series',
		'Toho Kaiju Series',
		'Movie Monster Series',
		'Bandai America',
		'S.H. MonsterArts',
                'NECA',
                'Playmates',
		':Category:Toy Lines|more...',
          ]},
];

/**
 * 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', mw.config.get('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 */
$( MonobookSidebar.init );