User:Arkondi/wikia.js

/* * modified version of ShowHide */

/* * Copyright © 2009, Daniel Friesen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: *    * Redistributions of source code must retain the above copyright *      notice, this list of conditions and the following disclaimer. *    * Redistributions in binary form must reproduce the above copyright *      notice, this list of conditions and the following disclaimer in the *      documentation and/or other materials provided with the distribution. *    * Neither the name of the script nor the *      names of its contributors may be used to endorse or promote products *      derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY DANIEL FRIESEN AS IS AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL DANIEL FRIESEN BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ $(document).ready( function {	// CONFIG	var config = window.ShowHideConfig = $.extend( true, { autoCollapse: 2, userLang: true, brackets: '[]', linkBefore: false, duration: 500, // Bulgarian bg: { show: "Покажи", hide: "Скрий", showAll: "Покажи всички", hideAll: "Скрий всички" },		// German de: { show: "anzeigen", hide: "verbergen", showAll: "alle anzeigen", hideAll: "alle verbergen" },		// English en: { show: "show", hide: "hide", showAll: "show all", hideAll: "hide all" },		// Spanish es: { show: "Mostrar", hide: "Ocultar", showAll: "Mostrar todo", hideAll: "Ocultar todo" },		// French fr: { show: "afficher", hide: "masquer", showAll: "tout afficher", hideAll: "tout masquer" },		// Hungarian hu: { show: "kibontás", hide: "elrejtés", showAll: "összes kibontása", hideAll: "összes elrejtése" },		// Italian it: { show: "Mostra", hide: "Nascondi", showAll: "Mostra tutti", hideAll: "Nascondi tutti" },		// Japanese ja: { show: "表示", hide: "非表示", showAll: "すべて表示", hideAll: "すべて非表示" },		// Korean ko: { show: "보이기", hide: "숨기기", showAll: "모두 보이기", hideAll: "모두 숨기기" },		// Dutch nl: { show: "tonen", hide: "verbergen", showAll: "alles tonen", hideAll: "alles verbergen" },		// Polish pl: { show: "Pokaż", hide: "Ukryj", showAll: "Pokaż wszystko", hideAll: "Ukryj wszystko" },		// Portuguese pt: { show: "Mostrar", hide: "Esconder", showAll: "Expandir Todos", hideAll: "Esconder Todos" },		// Brazilian Portuguese 'pt-br': { show: "Mostrar", hide: "Esconder", showAll: "Expandir Todos", hideAll: "Esconder Todos" },		// Russian ru: { show: "Открыть", hide: "Скрыть", showAll: "Открыть все", hideAll: "Скрыть все" },		// Chinese zh: { show: "显示", hide: "隐藏", showAll: "全部显示", hideAll: "全部隐藏" }		// Make a post on the talkpage if you have i18n updates }, window.ShowHideConfig || {} );	// i18n function	function msg( name ) {		return config.de[name];	}	// common	$.fn.onLink = function( fn ) {		return this.bind( 'click keypress', function(e) { if ( e.type === 'click' || ( e.type === 'keypress' && ( e.keyCode === 13 || e.charCode === 32 ) ) ) { fn.call(this, e); }		} );	};	/** Collapsible tables using jQuery	 *	 * Description: Allows tables to be collapsed, showing only the header.	 */	/*function collapseTable( node, state ) {		var	$table = $( node ),			$button = $table.find( 'tr:first > th:last .collapseLink' );		if ( !$table.length || !$button.length ) {			return false;		}		if ( typeof state === 'boolean' ) {			$table.toggleClass( 'collapsed', !state );		} else {			$table.toggleClass( 'collapsed' );		}		var hidden = $table.hasClass( 'collapsed' );		$table.find( '> * > tr:not(:first):not(.nocollapse)' )[hidden?"hide":"show"];		$button.text( msg( hidden ? "show" : "hide" ) );		return true;	}*/  function collapseTable(table, doCollapse) {    var button = $(table).find('.my-collapseLink').first;    var hidden = !$(table).hasClass('my-collapsed') || doCollapse;    if (!$(table).length || !button.length) {      return false;    }    $(table).children.first.children(':not(:first):not(.my-nocollapse)')[hidden ? "hide" : "show"](config.duration); button.text(msg(hidden ? "show" : "hide")); hidden ? $(table).addClass('my-collapsed') : $(table).removeClass('my-collapsed'); }	function createCollapseButtons { var NavigationBoxes = []; $('.my-collapsible').each( function {			NavigationBoxes.push(this);			var buttonLink = $(' ')                         .text(msg('hide'))                         .css('cursor', 'pointer')                         .onLink( function { collapseTable($(this).closest('table')); });			var	button = $(' ')                    .css({'float': 'right', 'text-align': 'right', 'font-weight': 'normal', 'width': '6em', 'margin-left': '-100%'})			              .append(document.createTextNode(config.brackets.substr(0, config.brackets.length/2)), buttonLink, config.brackets.substr(config.brackets.length/2));			$(this).find('tr:first > th:last').prepend(button);		}); // if more Navigation Bars found than Default: hide all if ( $( NavigationBoxes ).filter( '.my-autocollapse' ).length >= config.autoCollapse ) { $( NavigationBoxes ).filter( '.my-autocollapse' ).each( function { collapseTable( this, true ); } ); }		$( NavigationBoxes ).filter( '.my-collapsed' ).each( function { collapseTable( this ); } ); }	$( createCollapseButtons ); /** Dynamic Navigation Bars with jQuery *	 * Base Description: See Wikipedia:Wikipedia:NavFrame. */	// shows and hides content and picture (if available) of navigation bars /*function toggleNavigationBar( node ) { var $navFrame = $( node ), $navToggle = $navFrame.find( '.NavHead:first .collapseLink' ); if ( !$navFrame.length || !$navToggle.length ) { return false; }		$navFrame.toggleClass( 'NavVisible' ); $navFrame.find( '.NavPic, .NavContent' ).not( $navFrame.find( '.NavFrame .NavPic' ) ).not( $navFrame.find( '.NavFrame .NavContent' ) ).slideToggle; $navToggle.text( msg( $navFrame.hasClass( 'NavVisible' ) ? "hide" : "show" ) ); return true; }*/	function toggleNavigationBar( navFrame, doCollapse ) { var button = $(navFrame).find('.my-collapseLink').first; var hidden = !$(navFrame).hasClass('my-collapsed') || doCollapse; if ( !$(navFrame).length || !button.length ) { return false; }		//$(navFrame).find( '.NavPic, .NavContent' ).not( $(navFrame).find( '.NavFrame .NavPic' ) ).not( $(navFrame).find( '.NavFrame .NavContent' ) ).slideToggle; $(navFrame).find( '.my-NavPic, .my-NavContent' ).slideToggle; button.text( msg( !$(navFrame).hasClass( 'my-collapsed' ) ? "hide" : "show" ) ); return true; }	// adds show/hide-button to navigation bars function createNavigationBarToggleButton { var NavFrames = $( '.my-NavFrame' ).addClass( 'my-collapsed' ).each( function {			var	$navHead = $( this ).find( '.my-NavHead:first' ),				$buttonLink = $( ' ' ).text( msg( "hide" ) ).onLink( function ( e ) { toggleNavigationBar( $( this ).closest( '.my-NavFrame' ) ); } ),				$button = $( ' ' );			$navHead.filter( 'legend' ).append( ' - ' );			if ( config.brackets ) {				$button.append( document.createTextNode(config.brackets.substr(0, config.brackets.length/2)), $buttonLink, config.brackets.substr(config.brackets.length/2) );			} else {				$button.append( $buttonLink );			}			$navHead[config.linkBefore?"prepend":"append"]($button);		} ); // if more Navigation Bars found than Default: hide all if ( NavFrames.length >= config.autoCollapse ) { NavFrames.not( '.my-noautocollapse' ).each( function { toggleNavigationBar(this); } ); } else { NavFrames.filter( '.my-collapsed' ).each( function { toggleNavigationBar(this); } ); }		return true; }	$( createNavigationBarToggleButton ); $( function {		$( '.my-NavGlobal' ).each( function  { $( ' ' ).append(				document.createTextNode( '[' ),				$( ' ' ).text( msg( "showAll" ) ).onLink( function ( e ) { $( '.my-NavFrame' ).each( function { if ( $( this ).hasClass( 'my-collapsed' ) ) toggleNavigationBar(this); } ); } ),				']'			).appendTo( this ); $( this ).append( ' ' ); $(' ').append(				document.createTextNode( '[' ),				$( ' ' ).text( msg( "hideAll" ) ).onLink( function ( e ) { $( '.my-NavFrame' ).each( function { if ( !$( this ).hasClass( 'my-collapsed' ) ) toggleNavigationBar(this); } ); } ),				']'			).appendTo( this ); } );	} ); } );