MediaWiki:Monobook.js: Difference between revisions

From Wikizilla, the kaiju encyclopedia
Jump to navigationJump to search
No edit summary
No edit summary
Line 266: Line 266:
                 {'Godzilla': [
                 {'Godzilla': [
                       'Godzilla/2016|Shin Godzilla',
                       'Godzilla/2016|Shin Godzilla',
                      'Godzilla Filius',
                       'Godzilla Earth',
                       'Godzilla Earth',
                      'Godzilla Filius',
                 ]},
                 ]},
'Servum',
'Servum',
Line 475: Line 475:
'All Monsters Attack Directive',
'All Monsters Attack Directive',
'Godzilla vs. Hedorah 2',
'Godzilla vs. Hedorah 2',
'Jet Jaguar vs. Megalon',
'Godzilla vs. Redmoon',
'Godzilla vs. Redmoon',
'Godzilla vs. the Space Monsters: Earth Defense Directive',
'Godzilla vs. the Space Monsters: Earth Defense Directive',

Revision as of 17:11, 19 March 2018

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

/**** function displayTimer.js
 */
addOnloadHook(function ()
{
  if ( typeof( timerDisplay ) !== 'undefined' && timerDisplay === false )
    return;
  
  var date;
  var timerParent = document.getElementById( 'p-personal' ).getElementsByTagName( 'ul' )[0];
  var timerLink   = document.createElement( 'a' );
  var timerObj    = document.createElement( 'li' );
  timerLink.href               = '/wiki/' + wgPageName + '?action=purge';
  timerLink.title              = 'Purge the server cache and update the contents of this page.'
  timerObj.id                  = 'pt-timer';
  timerObj.style.textTransform = 'none';
  timerObj.style.fontWeight    = 'bold';
  timerObj.style.fontSize      = '100%';
  timerObj.appendChild( timerLink );
  timerParent.insertBefore( timerObj, timerParent.firstChild );
  
  function actualizeUTC ()
  {
    timerDate           = new Date();
    timerLink.innerHTML = ( timerDate.getUTCHours()   < 10 ? '0' : '' ) + timerDate.getUTCHours()   + ':'
                        + ( timerDate.getUTCMinutes() < 10 ? '0' : '' ) + timerDate.getUTCMinutes() + ':'
                        + ( timerDate.getUTCSeconds() < 10 ? '0' : '' ) + timerDate.getUTCSeconds() + ' (UTC)';
  }
  
  function actualizeCustom ()
  {
    timerDate           = new Date();
    timerDate.setMinutes( timerDate.getMinutes() + timerDate.getTimezoneOffset() + timerTimezone * 60 );
    timerLink.innerHTML = ( timerDate.getHours()   < 10 ? '0' : '' ) + timerDate.getHours()   + ':'
                        + ( timerDate.getMinutes() < 10 ? '0' : '' ) + timerDate.getMinutes() + ':'
                        + ( timerDate.getSeconds() < 10 ? '0' : '' ) + timerDate.getSeconds()
                        + ' (UTC' + ( timerTimezone < 0 ? '' : '+' ) + timerTimezone + ')';
  }
  
  // start
  if ( typeof( timerTimezone ) !== 'number' )
  {
    actualizeUTC();
    setInterval( actualizeUTC, 1000 );
  }
  else
  {
    actualizeCustom();
    setInterval( actualizeCustom, 1000 );
  }
});
/*</nowiki>*/

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: #E2A600;" />');
	$('#t-print').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: #E2A600;" />');
	$('#t-upload').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: #E2A600;" />');
	$('#t-whatlinkshere').before('<hr style="margin: 5px; margin-bottom: -1px; background-color: #E2A600;" />');

	// 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/1954|Godzilla 1954',
                      'Godzilla/Showa|Second Godzilla',
                ]},
		'Anguirus',
		'Rodan',
		'Mothra',
		'King Ghidorah',
		'Baragon',
		'Gigan',
		'Kamoebas',
		'Mechagodzilla/Showa|Mechagodzilla',
		':Category:Showa Kaiju|more...',
         ]},
	{':Category:Heisei Kaiju|Heisei': [
                'Godzilla/Heisei|Godzilla',
		'Biollante',
		'Mecha-King Ghidorah',
		'Battra',
		'Godzilla Junior',
		'Mechagodzilla/Heisei|Super Mechagodzilla',
		'SpaceGodzilla',
		'Destoroyah',
		'Mothra Leo',
		':Category:Heisei Kaiju|more...',
         ]},
	{':Category:Monsters|Millennium': [
                {'Godzilla': [
                      'Godzilla/Godzilla 2000|Godzilla 1999',
                      'Godzilla/Godzilla vs. Megaguirus|Godzilla 2000',
                      'Godzilla/GMK|Godzilla 2001',
                      'Godzilla/Kiryu Saga|Kiryu Saga Godzilla',
                      'Godzilla/Final Wars|Godzilla 2004',
                ]},
		'Orga',
                'Meganulon|Meganula',
		'Megaguirus',
		'Kiryu',
		'Kamoebas',
		'Zilla',
		'Monster X',
		':Category:Millennium Kaiju|more...',
         ]},
	{':Category:Monsters|Post-Millennium': [
                {'Godzilla': [
                      'Godzilla/2016|Shin Godzilla',
                      'Godzilla Filius',
                      'Godzilla Earth',
                ]},
		'Servum',
         ]},
	{':Category:Legendary Godzilla Kaiju|Legendary': [
		'Godzilla/Legendary|Godzilla',
		'M.U.T.O.',
		'Rodan',
		'Mothra',
		'King Ghidorah',
		'King Kong',
		':Category:Legendary Godzilla Kaiju|more...',
         ]},
	{':Category:Unmade Monsters|Unmade': [
	 {':Category:Unmade Monsters|Showa': [
                'Robot Daughter',
                'Mutant Starfish',
                'Redmoon',
                'Erabus',
                'Hafun',
                'Mogu',
                'Majin Tuol',
                'Gamoni',
		':Category:Unmade Monsters|more...',
          ]},
	 {':Category:Unmade Monsters|Heisei': [
		'Bagan',
		'Deutalios',
                'Archaeopteryx',
                'Gigamoth',
                'MechaMothra',
                'Berserk',
                'Transforming Mechagodzilla',
                'AstroGodzilla',
                'Barubaroi',
		'Ghost Godzilla',
		'Gryphon',
		':Category:Unmade Monsters|more...',
          ]},
	 {':Category:Unmade Monsters|Post-1999': [
                'Miba',
                'Giant Mosasaur',
                'Deathla',
                'Lightning Bug',
                'Fire Lion',
                'The Visitor',
                'Unnamed Multi-Legged Monster|Vishnu',
                'Rokmutul',
                'Pterodactyl',
		':Category:Unmade Monsters|more...',
          ]},
	 {':Category:Unmade Monsters|Other': [
                'Nezura',
                'Nessie (Unmade film)|Nessie',
                'Wyvern',
                'Garasharp',
                'Marukobukarappa',
		':Category:Unmade Monsters|more...',
          ]},
		':Category:Unmade Monsters|more...',
         ]},
	{':Category:Gamera Kaiju|Gamera': [
		'Gamera',
		'Barugon',
		'Gyaos',
		'Viras',
		'Zigra',
		'Legion',
		'Iris',
                'Toto',
                'Zedus',
		':Category:Gamera Kaiju|more...',
	]},
	{':Category:Non-Toho Kaiju|Other Non-Toho': [
		'King Kong',
		'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 the Godzilla Power Hour',
		':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 & 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 (1965 film)|Gamera',
		'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 (film)|Atragon',
		'Frankenstein vs. Baragon',
		'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: Guardian of the Universe',
		'Gamera 2: Attack of Legion',
		'Gamera 3: Revenge of Iris',
		'Gamera the Brave',
           ]},
	 {':Category:Rebirth of Mothra|Rebirth of Mothra': [
		'Rebirth of Mothra',
		'Rebirth of Mothra II',
		'Rebirth of Mothra III',
           ]},
	 ':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 S.O.S.',
		'Godzilla: Final Wars',
          ]},
	 {':Category:Godzilla Films|Post-Millennium': [
		'Shin Godzilla',
                'Godzilla: Planet of the Monsters|GODZILLA: Planet of the Monsters',
                'Godzilla: City on the Edge of Battle|GODZILLA: City on the Edge of Battle',
           ]},
	{':Category:American Films|American': [
	 {':Category:American Godzilla Films|Godzilla': [
		'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',
           ]},
	 {':Category:King Kong Films|King Kong': [
		'King Kong (1933 film)|King Kong (1933)',
                'Son of Kong',
                'King Kong (1976 film)|King Kong (1976)',
                'King Kong Lives',
                'King Kong (2005)|King Kong (2005)',
                'Kong: Skull Island',
		'Godzilla vs. Kong',
           ]},
	 {':Category:American Films|Other': [
		'Cloverfield',
                'Pacific Rim',
                '10 Cloverfield Lane',
                ':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. Redmoon',
		'Godzilla vs. the Space Monsters: Earth Defense Directive',
		'The Return of King Ghidorah (Showa)',
		'U.S.-Japan Collaboration: Godzilla',
		'A Space Godzilla',
		'Resurrection of Godzilla',
           ]},
	 {':Category:Unmade Films|1981-1995': [
		'Godzilla: King of the Monsters 3-D',
		'Unmade Animated Godzilla Film',
		'Mothra vs. Bagan',
		'Godzilla vs. King Kong',
		'Godzilla vs. Mechani-Kong',
		'The Return of King Ghidorah (Heisei)',
		'Godzilla vs. Gigamoth',
		'Godzilla vs. MechaMothra',
		'Godzilla vs. Berserk',
		'Godzilla vs. Mechagodzilla II (Early Draft)',
		'Godzilla (1994 film)|Godzilla (1994)',
		'Godzilla vs. AstroGodzilla',
		'Godzilla vs. Ghost Godzilla',
		'Godzilla vs. Barubaroi',
           ]},
	 {':Category:Unmade Films|1996-Present': [
		'Godzilla 2 (Unmade 1998 film sequel)|GODZILLA 2',
		'Unmade 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 3D to the MAX',
                'Godzilla (June 2012 Screenplay)|Godzilla (June 2012)',
           ]},

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

	':Category:Films|All Films',

	{':Category:Television Series|TV Series': [
         //sub
	 {'#|Godzilla TV Shows': [
		'Zone Fighter (Series)|Zone Fighter',
		'Godzilla (Hanna-Barbera series)|Godzilla (Hanna-Barbera)',
		'Adventure! Godzilland',
		'Get Going! Godzilland',
		'Godzilla Island (Series)|Godzilla Island',
		'Godzilla: The Series',
           ]},
	 {':Category:Television Series|Other': [
		'Go! Godman',
		'Go! Greenman',
		'Assault! Human',
		'Zone Fighter (Series)|Zone Fighter',
		'Super Star Fleet Sazer-X',
		'Kawaii! JenNy',
		'Kong: King of the Apes',
		':Category:Television Series|more...',
           ]},
          ]},
];

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

wgSidebar['Games'] = [
	{':Category:Video Games|1980s': [
		'Godzilla vs. 3 Giant Monsters',
		'NEW Godzilla',
		'Monster\'s Fair',
		'Gojira-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)',
		'Super Godzilla',
		'Godzilla: Battle Legends',
                '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',
		':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',
          ]},
	{':Category:Toy Lines|Toys': [
		'Godzilla Island (Bandai Action Figure Series)|Godzilla Island',
		'Toho Kaiju (Bandai Japan Toy Line)|Toho Kaiju',
		'Movie Monster (Bandai Japan Toy Line)|Movie Monster',
		'Godzilla (Bandai Creation Toy Line)|Bandai Creation',
		'Godzilla 50th Anniversary Memorial Box|50th Anniversary Memorial Box',
		'S.H. MonsterArts',
		':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 );