Vai al contenuto

Utente:FRacco/Sandbox2

Da Wikiquote, aforismi e citazioni in libertà.
Versione del 19 dic 2013 alle 04:04 di FRacco (discussione | contributi) (Aggiornamento codici dicembre 2013)

Aggiornamento codici dicembre 2013

/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Monobook */

/* attualmente non c'è necessità di alcun codice specifico per questa skin */
/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */

/* attualmente non c'è necessità di alcun codice specifico per questa skin */
/* Il codice JavaScript inserito qui viene caricato da ciascuna pagina, per tutti gli utenti */

// <nowiki> Codice JavaScript: inizio...

/* Modifica il testo della linguetta "Voce" in "Pagina principale" 
 * e aggiunge il link all'elenco completo di tutte le lingue
 *
 * Ultimo controllo al codice: 12/12/2013 */

if ( mw.config.get( 'wgIsMainPage' ) || mw.config.get( 'wgPageName' ) === 'Discussione:Pagina_principale' ) {
	$( document ).ready( function() {
		if ( mw.config.get( 'wgUserLanguage' ) === 'it' )
			$( '#ca-nstab-main a' ).text( 'Pagina principale' );
		mw.util.addPortletLink( 'p-lang', '//meta.wikimedia.org/wiki/Wikiquote/it#Lista_delle_Wikiquote',
			'Elenco completo', 'interwiki-completelist', 'Elenco completo delle Wikiquote' );
	} );
};


/* Change Special:Search to use a drop-down menu
 *
 * Description: Change Special:Search to use a drop-down menu,
 *              with the default being the internal MediaWiki engine
 *
 * Created and maintained by: [[w:en:User:Gracenotes]]
 *
 * Ultimo controllo al codice: 12/12/2013 */

if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' )
	$( function() {
		var searchEngines = [];
		var createOption = function( site, action, mainQ, addQ, addV ) {
			var opt = document.createElement( 'option' );
			opt.appendChild( document.createTextNode( site ) );
			searchEngines[searchEngines.length] = [action, mainQ, addQ, addV];
			return opt;
		};

		var searchForm = document.forms['powersearch'] || document.forms['search'];
		var searchBox = searchForm.lsearchbox || searchForm.search;
		var selectBox = document.createElement( 'select' );
		selectBox.id = 'searchEngine';
		searchForm.onsubmit = function() {
			var optSelected = searchEngines[document.getElementById( 'searchEngine' ).selectedIndex];
			searchForm.action = optSelected[0];
			searchBox.name = optSelected[1];
			searchForm.title.value = optSelected[3];
			searchForm.title.name = optSelected[2];
		};

		selectBox.appendChild( createOption( 'MediaWiki', mw.config.get( 'wgScriptPath' ) + '/index.php', 'search', 'title', 'Special:Search' ) );
		selectBox.appendChild( createOption( 'Google', '//www.google.com/search', 'q', 'sitesearch', 'it.wikiquote.org') );
		selectBox.appendChild( createOption( 'Yahoo', '//search.yahoo.com/search', 'p', 'vs', 'it.wikiquote.org') );
		selectBox.appendChild( createOption( 'Windows Live', '//search.live.com/results.aspx', 'q', 'q1', 'site:it.wikiquote.org' ) );
		searchBox.style.marginLeft = '0px';

		// 'searchText' is the firt search text. 'powerSearchText' is the second, used only if the first is not existent (e.g.: not yet done any search)
		buttonSearch = document.getElementById( 'searchText' ) || document.getElementById( 'powerSearchText' );
		buttonSearch.parentNode.insertBefore( selectBox, buttonSearch.nextSibling );
	} );


/* Correzione della posizione del link [modifica] delle sezioni.
 *
 * Copyright 2006, Marc Mongenet
 *
 * 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.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 *
 * See www.gnu.org/licenses/gpl.html
 *
 * The function looks for <span class="mw-editsection">, and move them
 * at the end of their parent and display them inline in small font.
 * var oldEditsectionLinks=true disables the function.
 *
 * Ultimo controllo al codice: 12/12/2013 */

var setModifySectionStyle = $( function() {
 	try {
		if ( !( typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false ) ) return;
		var spans = document.getElementsByTagName( 'span' );
		for ( var s = 0; s < spans.length; s++ ) {
			var span = spans[s];
			if ( span.className == 'mw-editsection' ) {
				span.style.fontSize = 'x-small';
				span.style.fontWeight = 'normal';
				span.style.cssFloat = span.style.styleFloat = 'none';
				span.parentNode.appendChild( document.createTextNode( ' ' ) );
				span.parentNode.appendChild( span );
			}
		}
	} catch (e) { /* something went wrong */ }
} );

$( document ).ready( setModifySectionStyle );


/* Test if an element has a certain class
 *
 * Description: Uses regular expressions and caching for better performance.
 * Maintainers: [[wikt:en:User:Mike Dillon]], [[w:en:User:R. Koot]], [[w:en:User:SG]]
 *
 * Ultimo controllo al codice: 12/12/2013 */

// DEPRECATO; sostituito con $( element ).hasClass( className )

var hasClass = function( element, className ) {
	return $( element ).hasClass( className );
};


/* Working-code of "Metaboxes"
 *
 * Descrizione: Codice di gestione del [[Template:Metabox]]
 *
 * Vedi: [[w:ca:Plantilla:Metacaixa]]
 * Creato da: [[w:ca:User:Peleguer]]
 *
 * Traduzione delle variabili:
 *
 * MetaCaixa = MetaBox
 * MetaCaixaInit = inizializza i metabox
 * MetaCaixaMostraPestanya = mostra la scheda del metabox
 * mc/Mc = metabox
 * bt/Bt = bottone
 * ps/Ps = scheda
 * mcBoto = bottone del metabox
 * mcBotoSel = bottone selezionato del metabox
 * mcContingut = contenuto del metabox
 * mcPestanya = scheda del metabox
 *
 * Ultimo controllo al codice: 12/12/2013 */

function MetaCaixaInit() {

// Se ci sono dei metabox nella pagina, assegna gli eventi ai bottoni

	var i = 0; //inizializza il contatore dei metabox
	for ( i = 0; i <= 9; i++ ) { 
		var vMc = document.getElementById( "mc" + i );
		if ( !vMc ) break;
		var j = 1; //inizializza il contatore dei bottoni del metabox
		var vPsIni = 0; //inizializza la scheda visibile inizialmente
		for ( j = 1; j <= 9; j++ ) {
			var vBt = document.getElementById( "mc" + i + "bt" + j );
			if ( !vBt ) break;
			vBt.onclick = MetaCaixaMostraPestanya; //assegna ad ogni bottone l'evento onclick
			if ( vBt.className === "mcBotoSel" )
				vPsIni = j; //memorizza la scheda visibile inizialmente
		}
		if (vPsIni === 0) { //se non c'è una scheda visibile inizialmente, ne assegna una casuale
			vPsIni = 1 + Math.floor( ( j - 1 ) * Math.random() );
			document.getElementById( "mc" + i + "ps" + vPsIni ).style.display = "block";
			document.getElementById( "mc" + i + "ps" + vPsIni ).style.visibility = "visible";
			document.getElementById( "mc" + i + "bt" + vPsIni ).className = "mcBotoSel";
		} 
	}
};

function MetaCaixaMostraPestanya() {

// Eseguita al click sul bottone della scheda,
// rende visibile la scheda selezionata, nasconde le altre

	var vMcNom = this.id.substr( 0, 3 ); //dal nome del pulsante, si deduce il nome del metabox
	var vIndex = this.id.substr( 5, 1 ); //e l'indice della scheda
	var i = 1;
	for ( i = 1; i <= 9; i++ ) { //ricerca tutte le schede del metabox
		var vPsElem = document.getElementById( vMcNom + "ps" + i );
		if ( !vPsElem ) break;
		if ( vIndex == i ) { //se la scheda è quella selezionata, la visualizza e aggiorna il bottone
			vPsElem.style.display = "block";
			vPsElem.style.visibility = "visible";
			document.getElementById( vMcNom + "bt" + i ).className = "mcBotoSel";
		} else { //altrimenti la nasconde e aggiorna il bottone
			vPsElem.style.display = "none";
			vPsElem.style.visibility = "hidden";
			document.getElementById( vMcNom + "bt" + i ).className = "mcBoto";
		}
	}
	return false; //evita di ricaricare la pagina
};

$( document ).ready( MetaCaixaInit );


/* Simula i titoli delle sezioni senza indicizzazione e senza link di modifica
 *
 * Per garantire l'accessibilità anche agli utenti che non utilizzano JavaScript
 * nel [[Mediawiki:Common.css]] vengono definite le classi: nojs-h1... h2/h3/h4/h5/h6,
 * che qui vengono rimosse.
 *
 * Vedi: [[Template:Titolo sezione]]
 * Creato da: [[q:it:User:FRacco]]
 *
 * Ultimo controllo al codice: 12/12/2013 */

var headersClass = $( function() {
	for ( j = 1; j <= 6; j++ ) {
		$( ".h" + j ).removeClass( "nojs-h" + j ).html( function( undefined, text ) {
			return "<h" + j + ">" + text + "</h" + j + ">";
		} );
	};
} );

$( document ).ready( headersClass );


/* Collegamento diretto alla pagina di upload di Commons nel portlet Strumenti */

$( function() {
	mw.util.addPortletLink( 'p-tb', '//commons.wikimedia.org/wiki/Special:UploadWizard', 'Carica su Commons',
		't-uploadcommons', 'Carica file multimediali su Commons', 'm', '#t-specialpages');
} );


/* Attiva i pulsanti per Wikiquote della la barra di modifica (versione classica e versione avanzata) */

importScript( "MediaWiki:Toolbar.js" );


/* Attiva la visualizzazione delle note sopra la nota stessa all'interno di un riquadro (REFERENCE TOOLTIP) */

importScript( "MediaWiki:ReferenceTool.js" );
importStylesheet( "MediaWiki:ReferenceTool.css" );


/* Attiva tutti gli effetti di apertura e chiusura di oggetti e tabelle "collassabili" */

importScript( "MediaWiki:Apri-chiudi.js" );
importStylesheet( "MediaWiki:Apri-chiudi.css" );


/* Più lingue selezionabili: importazione da Commons */

mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-LanguageSelect.js&action=raw&ctype=text/javascript' );


/* Interprogetto: importazione da Commons
 *
 * Funzione di gestione dei collegamenti dell'interprogetto nella barra di sinistra */

mw.loader.load( '//commons.wikimedia.org/w/index.php?title=MediaWiki:InterProject.js&action=raw&ctype=text/javascript' );

// Codice JavaScript: ...fine </nowiki>
// <nowiki> Codice JavaScript: inizio...

/* Pulsanti predefiniti di Wikiquote per la barra degli strumenti di modifica (toolbar)
 *
 * Vedi: [[Aiuto:Barra degli strumenti di modifica]]
 * Ultimo controllo al codice: 12/12/2013 */

/* Barra degli strumenti classica (mediawiki edit toolbar) */

var classicToolbarButtons = function() {

	mw.toolbar.addButtons(

// aggiunge il pulsante per il "Redirect"

	{
		"imageFile": "//upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png",
		"speedTip": "Redirect/Rinvia",
		"tagOpen": "#RINVIA [[",
		"tagClose": "]]",
		"sampleText": "Nome della pagina di destinazione",
		"imageId": "mw-toolbar-q-redirect"
	},

// aggiunge il pulsante per una nuova riga

	{
		"imageFile": "//upload.wikimedia.org/wikipedia/commons/a/ac/Button_redir_rtl.png",
		"speedTip": "Nuova riga",
		"tagOpen": "<br /> ",
		"tagClose": "",
		"sampleText": "",
		"imageId": "mw-toolbar-q-nuovariga"
	},

// agiunge il pulsante per una nuova battuta al dialogo

	{
		"imageFile": "//upload.wikimedia.org/wikipedia/commons/1/11/Button_Nuvola_apps_edu_lang.png",
		"speedTip": "Aggiungi una battuta al dialogo",
		"tagOpen": "'''",
		"tagClose": "''': Testo della battuta. <br />",
		"sampleText": "Nome del personaggio",
		"imageId": "mw-toolbar-q-battuta"
	},

// aggiunge il pulsante per l'Ndr

	{
		"imageFile": "//upload.wikimedia.org/wikipedia/commons/c/c1/Button_city_silhouette.png",
		"speedTip": "Inserisci NDR (usato per contestualizzazioni e/o bibliografie)",
		"tagOpen": "{{NDR|",
		"tagClose": "}}",
		"sampleText": "nota di contestualizzazione o bibliografia",
		"imageId": "mw-toolbar-q-ndr"
	},

// aggiunge il pulsante per l'interprogetto

	{
		"imageFile": "//upload.wikimedia.org/wikipedia/commons/c/cb/Button_wikipedia.png",
		"speedTip": "Inserisci collegamenti ad altri progetti Wikimedia",
		"tagOpen": "\n==Altri progetti==\n{{interprogetto|w",
		"tagClose": "}}\n",
		"sampleText": "",
		"imageId": "mw-toolbar-q-interprogetto"
	},

// aggiunge il pulsante per le opere su Wikipedia

	{
		"imageFile": "//upload.wikimedia.org/wikipedia/commons/f/fb/Button_references2_new.png",
		"speedTip": "Collegamento alla voce sull'opera in Wikipedia, da aggiungere alla sezione Altri progetti",
		"tagOpen": "\n===Opere===\n{{Pedia|",
		"tagClose": "|''Titolo dell'opera se diverso dal titolo della voce''|(anno)}}\n",
		"sampleText": "Titolo della voce",
		"imageId": "mw-toolbar-q-opere"
	} );
};

/* Barra degli strumenti avanzata (wikiEditor toolbar) */

var wikiEditorButtons = function() {

// crea un nuovo gruppo "Wikiquote" nella sezione principale "main"

	$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
		'section': 'main',
		'groups': {
			'wikiquote': { 
				'label': 'Wikiquote' 
			}
		}
	} );

// aggiunge i pulsanti al gruppo "Wikiquote"

// aggiunge il pulsante per una nuova battuta al dialogo

	$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
		'section': 'main',
		'group': 'wikiquote',
		'tools': {
			'battuta': { 
				label: 'Aggiungi una battuta al dialogo', //testo visualizzato al passaggio del mouse
				type: 'button',
				icon: '//upload.wikimedia.org/wikipedia/commons/thumb/b/b9/Nuvola_apps_edu_languages.png/22px-Nuvola_apps_edu_languages.png',
				action: {
					type: 'encapsulate',
					options: {
						pre: "'''", //testo prima
						peri: "Nome del personaggio", //testo di esempio
						post: "''': Testo della battuta. <br />" //testo dopo
					}
				}
			}
		}
	} );

// aggiunge il pulsante per l'Ndr

	$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
		'section': 'main',
		'group': 'wikiquote',
		'tools': {
			'ndr': { 
				label: 'Inserisci NDR (usato per contestualizzazioni e/o bibliografie)', //testo visualizzato al passaggio del mouse
				type: 'button',
				icon: '//upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Emblem-pictures.svg/22px-Emblem-pictures.svg.png',
				action: {
					type: 'encapsulate',
					options: {
						pre: "{{NDR|", //testo prima
						peri: "nota di contestualizzazione o bibliografia", //testo di esempio
						post: "}}" //testo dopo
					}
				}
			}
		}
	} );

// aggiunge il pulsante per l'interprogetto

	$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
		'section': 'main',
		'group': 'wikiquote',
		'tools': {
			'interprogetto': { 
				label: 'Inserisci collegamenti ad altri progetti Wikimedia', //testo visualizzato al passaggio del mouse
				type: 'button',
				icon: '//upload.wikimedia.org/wikipedia/commons/thumb/8/80/Wikipedia-logo-v2.svg/22px-Wikipedia-logo-v2.svg.png',
				action: {
					type: 'encapsulate',
					options: {
						pre: "\n==Altri progetti==\n{{interprogetto|w", //testo prima
						peri: "", //testo di esempio
						post: "}}\n" //testo dopo
					}
				}
			}
		}
	} );

// aggiunge il pulsante per le opere su Wikipedia

	$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
		'section': 'main',
		'group': 'wikiquote',
		'tools': {
			'opere': { 
				label: 'Collegamento alla voce sull\'opera in Wikipedia, da aggiungere alla sezione Altri progetti', //testo visualizzato al passaggio del mouse
				type: 'button',
				icon: '//upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Books-aj.svg_aj_ashton_01.svg/22px-Books-aj.svg_aj_ashton_01.svg.png',
				action: {
					type: 'encapsulate',
					options: {
						pre: "\n===Opere===\n{{Pedia|", //testo prima
						peri: "Titolo della voce", //testo di esempio
						post: "|''Titolo dell'opera se diverso dal titolo della voce''|(anno)}}\n" //testo dopo
					}
				}
			}
		}
	} );
};


// Check if view is in edit mode and the required modules are available. Then, customize the toolbar...
// Note: usebetatoolbar can be used to check if a user is using the wikiEditor (true) or the old toolbar (false)

if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) {
	mw.loader.using( 'user.options', function() {
		if ( mw.user.options.get( 'usebetatoolbar' ) ) {
			mw.loader.using( 'ext.wikiEditor.toolbar', function() {
				$( document ).ready( wikiEditorButtons );
			} );
		} else {
			mw.loader.using( 'mediawiki.action.edit', function() {
				$( classicToolbarButtons );
			} );
		}
	} );
};

// Codice JavaScript: ...fine </nowiki>
// <nowiki> Codice JavaScript: inizio...

/* REFERENCE TOOLTIPS - Vedi [[mw:Reference Tooltips]]
 *
 * Codice originale: [[w:en:MediaWiki:Gadget-ReferenceTooltips.js]]
 *
 * Ultimo controllo al codice: 12/12/2013 */

window.pg || $(document).ready( function($) {

	// Make sure we are in article, project, or help namespace
	if ( wgCanonicalNamespace === '' || wgCanonicalNamespace === 'Project' || wgCanonicalNamespace === 'Help' ) {
		function toggleRT(o){
			mw.loader.using("jquery.cookie",function(){
					$.cookie("RTsettings",o+"|"+ settings[1] + "|" + settings[2], {path:"/",expires:90});
					location.reload();
			})
		}
		var settings = document.cookie.split("RTsettings=")[1];
		settings = settings ? settings.split(";")[0].split("%7C") : [1, 200, +("ontouchstart" in document.documentElement)];
		if( settings[0] == 0 ) {
			var footer = $("#footer-places, #f-list");
			if( footer.length === 0 ) {
					footer = $("#footer li").parent();
			}
			footer.append($("<li>").append($("<a>").text("Abilita i tooltip delle note").attr("href","javascript:(function(){})()").click(function(){toggleRT(1)})));
			return;
		}
		var isTouchscreen = +settings[2],
			timerLength = isTouchscreen ? 0 : +settings[1],
			settingsMenu;
		$(".reference").each( function() {
			var tooltipNode, hideTimer, showTimer, checkFlip = false;
			function findRef( h ){
					h = h.firstChild.getAttribute("href"); h = h && h.split("#"); h = h && h[1];
					h = h && document.getElementById( h );
					h = h && h.nodeName == "LI" && h;
					return h;
			}
			function hide( refLink ){
					if( tooltipNode && tooltipNode.parentNode == document.body ) {
							hideTimer = setTimeout( function() {
									$(tooltipNode).animate({opacity: 0}, 100, function(){ document.body.removeChild( tooltipNode ) })
							}, isTouchscreen ? 16 : 100)
					} else {
							var h = findRef( refLink );
							h && (h.style.border = "");
					}
			}
			function show(){
					if( !tooltipNode.parentNode || tooltipNode.parentNode.nodeType === 11 ){
							document.body.appendChild( tooltipNode );
							checkFlip = true;
					}
					$(tooltipNode).stop().animate({opacity: 1}, 100)
					clearTimeout( hideTimer );
			}
			function openSettingsMenu(){
					if( settingsMenu ) {
							settingsMenu.dialog( "open" );
					} else {
							settingsMenu = $("<form>").append(
									$("<button>").css("width","100%").text("Disabilita i tooltip delle note").button().click(function(){toggleRT(0)}),
									$("<br>"),
									$("<small>").text("Una volta disabilitati, i tooltip delle note possono venire riabilitati grazie ad un link posto in fondo alla pagina."),
									$("<hr>"),
									$("<label>").text("Tempo prima dell'apparizione del tooltip (in millisecondi): ").append($("<input>").attr({"type":"number","value":settings[1],step:50,min:0,max:5000})),
									$("<br>"),
									$("<span>").text("I tooltip vengono attivati tramite:"),
									$("<label>").append(
											$("<input>").attr({"type":"radio", "name":"RTActivate", "checked":settings[2]==0&&"checked", "disabled":"ontouchstart" in document.documentElement&&"disabled"}),
											"sosta del cursore sulla nota"
									),
									$("<label>").append(
											$("<input>").attr({"type":"radio", "name":"RTActivate", "checked":settings[2]==1&&"checked"}),
											"click sulla nota"
									)
							).submit(function(e){e.preventDefault()}).dialog({modal:true,width:500,title:"Preferenze",buttons:{"Salva le preferenze":function(){
									var a = this.getElementsByTagName("input"),
											b = +a[0].value;
									$.cookie("RTsettings","1|"+ (b > -1 && b < 5001 ? b : settings[1]) + (a[1].checked ? "|0" : "|1"), {path:"/",expires:90});
									location.reload();
							}}});
					}
			}
			$(this)[ isTouchscreen ? 'click' : 'hover' ](function( e ){
					var _this = this;
					if( isTouchscreen ) {
							e.preventDefault();
							(tooltipNode && tooltipNode.parentNode == document.body) || setTimeout( function(){
									$( document.body ).on("click touchstart", function( e ) {
											e = e || event;
											e = e.target || e.srcElement;
											for( ; e && !$( e ).hasClass( "referencetooltip" ) ; )
													e = e.parentNode;
											if( !e ){
													clearTimeout( showTimer );
													hide( _this );
													$(document.body).off("click touchstart", arguments.callee)
											}
									})
							}, 0);
					}
					showTimer && clearTimeout( showTimer );
					showTimer = setTimeout( function() {
							var h = findRef( _this );
							if( !h ){return};
							if( !isTouchscreen && ( window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 ) + $(window).height() > $( h ).offset().top + h.offsetHeight ) {
									h.style.border = "#080086 2px solid";
									return;
							}
							if(!tooltipNode){
									tooltipNode = document.createElement("ul");
									tooltipNode.className = "referencetooltip";
									var c = tooltipNode.appendChild( h.cloneNode( true ) );
									try {
											if( c.firstChild.nodeName != "A" ) {
													while( c.childNodes[1].nodeName == "A" && c.childNodes[1].getAttribute( "href" ).indexOf("#cite_ref-") !== -1 ) {
															do { c.removeChild( c.childNodes[1] ) } while ( c.childNodes[1].nodeValue == " " );
													}
											}
									} catch (e) { mw.log(e) }
									c.removeChild( c.firstChild );
									$( tooltipNode.firstChild.insertBefore( document.createElement( "span" ), tooltipNode.firstChild.firstChild ) ).addClass("RTsettings").attr("title", "Preferenze").click(function(){
											mw.loader.using(["jquery.cookie","jquery.ui.dialog"], openSettingsMenu);
									})
									tooltipNode.appendChild( document.createElement( "li" ) );
									isTouchscreen || $(tooltipNode).hover(show, hide);
							}
							show();
							var o = $(_this).offset(), oH = tooltipNode.offsetHeight;
							$(tooltipNode).css({top: o.top - oH, left: o.left - 7 });
							if( tooltipNode.offsetHeight > oH ) { // is it squished against the right side of the page?
									$(tooltipNode).css({left:'auto',right:0});
									tooltipNode.lastChild.style.marginLeft = (o.left - tooltipNode.offsetLeft) + "px";
							}
							if( checkFlip ) {
									if( o.top < tooltipNode.offsetHeight + ( window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 ) ) { // is part of it above the top of the screen?
											$(tooltipNode).addClass("RTflipped").css({top: o.top + 12});
									} else if( tooltipNode.className === "referencetooltip RTflipped" ) { // cancel previous
											$(tooltipNode).removeClass("RTflipped");
									}
									checkFlip = false;
							}
					}, timerLength);
			}, isTouchscreen ? undefined : function(){clearTimeout(showTimer); hide(this); } )
		} );
	}
} );

// Codice JavaScript: ...fine </nowiki>
// <nowiki> Codice JavaScript: inizio...

/* Dynamic Navigation Bars
 *
 * Vedi: [[w:en:Wikipedia:NavFrame]]
 *
 * Codice originale: [[w:en:MediaWiki:Common.js]]
 * integrato con: [[w:it:MediaWiki:Common.js]]
 * da: [[q:it:User:FRacco]]
 *
 * Ultimo controllo al codice: 12/12/2013 */

// set up the words in your language

var NavigationBarHide = "« Nascondi";
var NavigationBarShow = "» Mostra";

// set up max count of Navigation Bars on page, if there are more (or equal), all will be hidden
// NavigationBarShowDefault = 0; all bars will be hidden
// NavigationBarShowDefault = n; on pages with more than "n" bars all bars will be hidden

var NavigationBarShowDefault = 0;

// shows and hides content and picture (if available) of navigation bars
// Parameters:
// 	indexNavigationBar: the index of navigation bar to be toggled

window.toggleNavigationBar = function( indexNavigationBar, event ) {
	var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
	var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
	var NavChild;

	if ( !NavFrame || !NavToggle ) {
		return false;
	}

// if shown now

	if ( NavToggle.firstChild.data === NavigationBarHide ) {
		for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
			if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
				NavChild.style.display = 'none';
			}
		}
		NavToggle.firstChild.data = NavigationBarShow;

// if hidden now

	} else if ( NavToggle.firstChild.data === NavigationBarShow ) {
		for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
			if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
				NavChild.style.display = 'block';
			}
		}
		NavToggle.firstChild.data = NavigationBarHide;
	}

	if ( event ) event.preventDefault();
};

// adds show/hide-button to navigation bars

function createNavigationBarToggleButton() {
	var indexNavigationBar = 0;
	var NavFrame;
	var NavChild;

// iterate over all div-elements

	var divs = document.getElementsByTagName( 'div' );
	for ( var i = 0; ( NavFrame = divs[i] ); i++ ) {

// if found a navigation bar

		if ( $( NavFrame ).hasClass( 'NavFrame' ) ) {
			indexNavigationBar++;
			var NavToggle = document.createElement( 'a' );
			NavToggle.className = 'NavToggle';
			NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar );
			NavToggle.setAttribute( 'href', '#' );
			$( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );

 			var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );

			/* Check if any children are already hidden. This loop is here for backwards compatibility:
			 * the old way of making NavFrames start out collapsed was to manually add style="display:none"
			 * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
			 * the content visible without JavaScript support), the new recommended way is to add the class
			 * "collapsed" to the NavFrame itself, just like with collapsible tables. */

			for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
				if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
					if ( NavChild.style.display === 'none' ) {
						NavFrame.className += ' collapsed';
						isCollapsed = true;
					}
				}
			}

			if ( isCollapsed ) {
				for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
					if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
						NavChild.style.display = 'none';
					}
				}
			}

			var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
			NavToggle.appendChild( NavToggleText );

// add NavToggle-Button as first div-element in < div class="NavFrame" >

			/* Find the NavHead and attach the toggle link 
			 * (Must be this complicated because Moz's firstChild handling is borked) */

			for ( var j = 0; j < NavFrame.childNodes.length; j++ ) {
				if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) {
					NavToggle.style.color = NavFrame.childNodes[j].style.color;
					NavFrame.childNodes[j].appendChild( NavToggle );
				}
			}
			NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
		}
	}

// if more (or equal) Navigation Bars found than Default: hide all
// (except for ones defined with "collapsed" or "expanded" class)

	if ( indexNavigationBar >= NavigationBarShowDefault ) {
		for ( var i = 1; i <= indexNavigationBar; i++ ) {
			NavFrame = document.getElementById( 'NavFrame' + i );
			if ( !$( NavFrame ).hasClass( 'collapsed' ) && !$( NavFrame ).hasClass( 'expanded' ) )
				window.toggleNavigationBar( i );
		}
	}
};

mw.hook( 'wikipage.content' ).add( createNavigationBarToggleButton );


/* Tabelle collassabili (CollapsibleTables)
 *
 * Descrizione: Permette alle tabelle di espandersi e contrarsi, mostrando solo il titolo.
 *
 * Vedi: [[w:en:Wikipedia:Collapsible tables]]
 *
 * Codice originale: [[w:en:MediaWiki:Common.js]]
 * Mantenimento: [[w:en:User:R. Koot]]
 *
 * Ultimo controllo al codice: 12/12/2013 */

// set up the words in your language

var collapseCaption = "▲ Nascondi";
var expandCaption = "▼ Mostra";

// set up max count of collapsible tables on page,
// if there are more (or equal), all ".autocollapse"
// tables will be hidden

var autoCollapse = 2;

window.collapseTable = function( tableIndex ) {
	var Button = document.getElementById( "collapseButton" + tableIndex );
	var Table = document.getElementById( "collapsibleTable" + tableIndex );

	if ( !Table || !Button ) {
		return false;
	}

	var Rows = Table.rows;
	var i;

	if ( Button.firstChild.data === collapseCaption ) {
		for ( i = 1; i < Rows.length; i++ ) {
			Rows[i].style.display = "none";
		}
		Button.firstChild.data = expandCaption;
	} else {
		for ( i = 1; i < Rows.length; i++ ) {
			Rows[i].style.display = Rows[0].style.display;
		}
		Button.firstChild.data = collapseCaption;
	}
};

function createCollapseButtons() {
	var tableIndex = 0;
	var NavigationBoxes = {};
	var Tables = document.getElementsByTagName( "table" );
	var i;
 
	function handleButtonLink( index, e ) {
		window.collapseTable( index );
		e.preventDefault();
	}

	for ( i = 0; i < Tables.length; i++ ) {
		if ( $( Tables[i] ).hasClass( "collapsible" ) ) {

// aggiunge il pulsante e il numero di incremento soltanto se c'è una riga di intestazione per lavorarci

			var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
			if (!HeaderRow) continue;
			var Header = HeaderRow.getElementsByTagName( "th" )[0];
			if (!Header) continue;

			NavigationBoxes[ tableIndex ] = Tables[i];
			Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );

			var Button = document.createElement( "span" );
			var ButtonLink = document.createElement( "a" );
			var ButtonText = document.createTextNode( collapseCaption );

			Button.className = "collapseButton";
			/* gli stili sono dichiarati nel relativo Cascading Style Sheet (CSS) */

			ButtonLink.style.color = Header.style.color;
			ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
			ButtonLink.setAttribute( "href", "#" );
			$( ButtonLink ).on( "click", $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
			ButtonLink.appendChild( ButtonText );

			Button.appendChild( document.createTextNode( "[" ) );
			Button.appendChild( ButtonLink );
			Button.appendChild( document.createTextNode( "]" ) );

			Header.insertBefore( Button, Header.firstChild );
			tableIndex++;
		}
	}

	for ( i = 0;  i < tableIndex; i++ ) {
		if ( $( NavigationBoxes[i] ).hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( "autocollapse" ) ) ) {
			window.collapseTable( i );
		} 
		else if ( $( NavigationBoxes[i] ).hasClass( "innercollapse" ) ) {
			var element = NavigationBoxes[i];
			while ( ( element = element.parentNode ) ) {
				if ( $( element ).hasClass( "outercollapse" ) ) {
					window.collapseTable ( i );
					break;
				}
			}
		}
	}
}

mw.hook( 'wikipage.content' ).add( createCollapseButtons );


/* jQuery makeCollapsible modificato
 *
 * script iniziale: [[mw:RL/DM#jquery.makeCollapsible]]
 * autore iniziale: Krinkle <krinklemail@gmail.com>
 *
 * modifiche eseguite da: [[w:fr:User:Lgd]]
 *
 * Doppia licenza:
 * @licenza CC-BY 3.0 <creativecommons.org/licenses/by/3.0>
 * @licenza GPL2 <www.gnu.org/licenses/old-licenses/gpl-2.0.html>
 *
 * Ultimo controllo al codice: 12/12/2013 */

// set up the words in your language

var collapsetextDef = "Nascondi";
var collapsetextAll = "Nascondi tutto";
var expandtextDef = "Mostra";
var expandtextAll = "Mostra tutto";

var newCollapsible = function( $ ) {

	return $( '.it-collapsible' ).each( function() {
		var _fn = 'jquery.newCollapsible> ';

		// Define reused variables and functions
		var $that = $( this ).addClass( 'it-collapsible' ), // case: $( '#myAJAXelement' ).newCollapsible()
			that = this,
			collapsetext = $( this ).attr( 'data-collapsetext' ),
			expandtext = $( this ).attr( 'data-expandtext' ),
			toggleElement = function( $collapsible, action, $defaultToggle, instantHide ) {

				// Validate parameters
				if ( !$collapsible.jquery ) { // $collapsible must be an instance of jQuery
					return;
				}
				if ( action != 'expand' && action != 'collapse' ) {
					// action must be string with 'expand' or 'collapse'
					return;
				}
				if ( typeof $defaultToggle == 'undefined' ) {
					$defaultToggle = null;
				}
				if ( $defaultToggle !== null && !( $defaultToggle instanceof $ ) ) {
					// is optional (may be undefined), but if defined it must be an instance of jQuery.
					// If it's not, abort right away.
					// After this $defaultToggle is either null or a valid jQuery instance.
					return;
				}

				var $containers = null;

				if ( action == 'collapse' ) {

					// Collapse the element
					if ( $collapsible.is( 'table' ) &&  $collapsible.find( 'caption' ).length ) {
						// only table with caption
						// Hide all table rows of this table
						// Slide doens't work with tables, but fade does as of jQuery 1.1.3
						// http://stackoverflow.com/questions/467336#920480
						$containers = $collapsible.find( '>tbody>tr' );
						if ( $defaultToggle ) {
							$containers.stop( true, true ).fadeOut();
						} else {
							if ( instantHide ) {
								$containers.hide();
							} else {
								$containers.stop( true, true ).fadeOut();
							}
						}

					} else if ( !$collapsible.is( 'ul' ) && !$collapsible.is( 'ol' ) && !$that.is( 'table' ) ) {
						// <div>, <p> etc. but not ul ol and tables without caption
						var $collapsibleContent = $collapsible.find( '> .it-collapsible-content' );

						// If a collapsible-content is defined, collapse it
						if ( $collapsibleContent.length ) {
							if ( instantHide ) {
								$collapsibleContent.hide();
							} else {
								$collapsibleContent.slideUp();
							}

						// Otherwise assume this is a customcollapse with a remote toggle...
						// ...and there is no collapsible-content because the entire element should be toggled
						} else {
							if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
								$collapsible.fadeOut();
							} else {
								$collapsible.slideUp();
							}
						}
					}

				} else {

					// Expand the element
					if ( $collapsible.is( 'table' ) && $collapsible.find( 'caption' ).length ) {
						$containers = $collapsible.find( '>tbody>tr' );
						if ( $defaultToggle ) {
							$containers.stop( true, true ).fadeIn();
						} else {
							$containers.stop( true, true ).fadeIn();
						}

					} else if ( !$collapsible.is( 'ul' ) && !$collapsible.is( 'ol' ) && !$that.is( 'table' ) ) {
						// <div>, <p> etc.but not ul ol and not tables without caption
						var $collapsibleContent = $collapsible.find( '> .it-collapsible-content' );

						// If a collapsible-content is defined, collapse it
						if ( $collapsibleContent.length ) {
							$collapsibleContent.slideDown();

						// Otherwise assume this is a customcollapse with a remote toggle...
						// ...and there is no collapsible-content because the entire element should be toggled
						} else {
							if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
								$collapsible.fadeIn();
							} else {
								$collapsible.slideDown();
							}
						}
					}
				}
			},

			// Toggles collapsible and togglelink class and updates text label
			toggleLinkDefault = function( that, e ) {
				var	$that = $(that),
					$collapsible = $that.closest( '.it-collapsible.it-made-collapsible' ).toggleClass( 'it-collapsed' );
				e.preventDefault();
				e.stopPropagation();

				// It's expanded right now
				if ( !$that.hasClass( 'it-collapsible-toggle-collapsed' ) ) {
					// Change link to "Show"
					$that.removeClass( 'it-collapsible-toggle-expanded' ).addClass( 'it-collapsible-toggle-collapsed' );
					if ( $that.find( '> a' ).length ) {
						$that.find( '> a' ).text( expandtext );
					} else {
						$that.text( expandtext );
					}
					// Collapse element
					toggleElement( $collapsible, 'collapse', $that );

				// It's collapsed right now
				} else {
					// Change link to "Hide"
					$that.removeClass( 'it-collapsible-toggle-collapsed' ).addClass( 'it-collapsible-toggle-expanded' );
					if ( $that.find( '> a' ).length ) {
						$that.find( '> a' ).text( collapsetext );
					} else {
						$that.text( collapsetext );
					}
					// Expand element
					toggleElement( $collapsible, 'expand', $that );
				}
				return;
			},

			// Toggles collapsible and togglelink class
			toggleLinkPremade = function( $that, e ) {
				var	$collapsible = $that.eq(0).closest( '.it-collapsible.it-made-collapsible' ).toggleClass( 'it-collapsed' );
				if ( $( e.target ).is( 'a' ) ) {
					return true;
				}
				e.preventDefault();
				e.stopPropagation();

				// It's expanded right now
				if ( !$that.hasClass( 'it-collapsible-toggle-collapsed' ) ) {
					// Change toggle to collapsed
					$that.removeClass( 'it-collapsible-toggle-expanded' ).addClass( 'it-collapsible-toggle-collapsed' );
					// Collapse element
					toggleElement( $collapsible, 'collapse', $that );

				// It's collapsed right now
				} else {
					// Change toggle to expanded
					$that.removeClass( 'it-collapsible-toggle-collapsed' ).addClass( 'it-collapsible-toggle-expanded' );
					// Expand element
					toggleElement( $collapsible, 'expand', $that );
				}
				return;
			},

			// Toggles customcollapsible
			toggleLinkCustom = function( $that, e, $collapsible ) {
				// For the initial state call of customtogglers there is no event passed
				if ( e ) {
					e.preventDefault();
					e.stopPropagation();
				}
				// Get current state and toggle to the opposite
				var action = $collapsible.hasClass( 'it-collapsed' ) ? 'expand' : 'collapse';
				$collapsible.toggleClass( 'it-collapsed' );
				toggleElement( $collapsible, action, $that );
			};

		// Use custom text or default ?
		if( !collapsetext ) {
			//collapsetext = mw.message( 'collapsible-collapse' );
			collapsetext = collapsetextDef;
		}
		if ( !expandtext ) {
			//expandtext = mw.message( 'collapsible-expand' );
			expandtext = expandtextDef;
		}

		// Create toggle link with a space around the brackets ( [text] )
		var $toggleLink =
			$( '<a href="#"></a>' )
				.text( collapsetext )
				.wrap( '<span class="it-collapsible-toggle"></span>' )
				.parent()
				.bind( 'click.it-collapse', function( e ) {
					toggleLinkDefault( this, e );
				} );

		// Return if it has been enabled already.
		if ( $that.hasClass( 'it-made-collapsible' ) ) {
			return;
		} else {
			$that.addClass( 'it-made-collapsible' );
		}

		// Check if this element has a custom position for the toggle link
		// (ie. outside the container or deeper inside the tree)
		// Then: Locate the custom toggle link(s) and bind them
		if ( ( $that.attr( 'id' ) || '' ).indexOf( 'it-customcollapsible-' ) === 0 ) {

			var thatId = $that.attr( 'id' ),
				$customTogglers = $( '.' + thatId.replace( 'it-customcollapsible', 'it-customtoggle' ) );
			mw.log( _fn + 'Found custom collapsible: #' + thatId );

			// Double check that there is actually a customtoggle link
			if ( $customTogglers.length ) {
				$customTogglers.bind( 'click.it-collapse', function( e ) {
					toggleLinkCustom( $( this ), e, $that );
				} );
			} else {
				mw.log( _fn + '#' + thatId + ': Missing toggler!' );
			}

			// Initial state
			if ( $that.hasClass( 'it-collapsed' ) ) {
				$that.removeClass( 'it-collapsed' );
				toggleLinkCustom( $customTogglers, null, $that );
			}

		// If this is not a custom case, do the default:
		// Wrap the contents add the toggle link
		} else {

			// Elements are treated differently
			if ( $that.is( 'table' )  &&  $that.find( 'caption' ).length ) { // only table with caption
				// The toggle-link will be in the caption
				var	$caption = $( 'caption', that ),
					$toggle = $caption.find( '> .it-collapsible-toggle' );

				// If theres no toggle link, add it to the caption
				if ( !$toggle.length ) {
					$caption.eq( -1 ).prepend( $toggleLink );
				} else {
					$toggleLink = $toggle.unbind( 'click.it-collapse' ).bind( 'click.it-collapse', function( e ) {
						toggleLinkPremade( $toggle, e );
					} );
				}

			} else if ( !$that.is( 'ul' ) && !$that.is( 'ol' )  && !$that.is( 'table' ) ) {
				// <div>, <p> etc.but not ol ul and not tables without caption

				// The toggle-link will be the first child of the element
				var $toggle = $that.find( '> .it-collapsible-toggle' );

				// If a direct child .content-wrapper does not exists, create it
				if ( !$that.find( '> .it-collapsible-content' ).length ) {
					$that.wrapInner( '<div class="it-collapsible-content"></div>' );
				}

				// If theres no toggle link, add it
				if ( !$toggle.length ) {
					$that.prepend( $toggleLink );
				} else {
					$toggleLink = $toggle.unbind( 'click.it-collapse' ).bind( 'click.it-collapse', function( e ) {
						toggleLinkPremade( $toggle, e );
					} );
				}
			}
		}

		// Initial state (only for those that are not custom)
		if ( $that.hasClass( 'it-collapsed' ) && ( $that.attr( 'id' ) || '' ).indexOf( 'it-customcollapsible-' ) !== 0 ) {
			$that.removeClass( 'it-collapsed' );
			// The collapsible element could have multiple togglers
			// To toggle the initial state only click one of them (ie. the first one, eq(0))
			// Else it would go like: hide, show, hide, show for each toggle link.
			toggleElement( $that, 'collapse', $toggleLink.eq( 0 ), /* instantHide = */ true );
			$toggleLink.eq( 0 ).click();
		}
	} );
};

var newAutoCollapse = function( $ ) {
	// autocollaspe for "palettes"
	var $navboxnew = $( '#content .navboxnew' );
	if ( $navboxnew.length === 1 ) {
		$navboxnew.filter( '.it-collapsed' ).not( '.uncollapsed, .collapsed' ).each( function() {
			$( this ).find( 'span.it-collapsible-toggle a' ).first().click();
		} );
	}
};

var newCollapsibleKeyboard = function( $ ) {
	$( '.it-collapsible-toggle, .it-collapsible-toggle-keyboard' ).attr( 'tabindex', 0 ).keypress( function( event ) {
		if ( event.which == 13 ) {
			$( this ).click()
		}
	} );
};

var newCollapsibleGroup = function( $ ) {
	$( '.it-collapsible-group' ).each( function() {
		var $that = $( this );
		var text = expandtextAll;
		var $tooglelink = $( '<a class="it-collapsible-toggle it-collapsible-toggle-collapsed it-collapsible-group-toogle-all" href="#">' + collapsetextAll + '</a>' );
		$that.find( '.it-collapsible-group-toogle:first' ).append( $tooglelink ).click( function( event ) {
			if( text === expandtextAll ) {
				text = collapsetextAll;
				$that.find( '.it-collapsible-toggle-collapsed:not(".it-collapsible-group-toogle-all")' ).click();
			} else {
				text = expandtextAll;
				$that.find( '.it-collapsible-toggle-expanded:not(".it-collapsible-group-toogle-all")' ).click();
			}
			$tooglelink.text( text );
			// Toggles collapsible and togglelink class and updates text label and group icon
			$tooglelink.toggleClass( 'it-collapsible-toggle-collapsed' );
			return false;
		} );
	} );
};

var newBeKindToIE = function( $ ) {
	var ieVersion = $.client.profile().versionBase;
	// gestion des listes horizontalisées 
	// remove bullet from last list items in IE 8 7 6
	if ( ieVersion < 9 ) {
		$( '#content .navboxnew_inline' ).find( 'li:last-child' ).addClass( 'navboxnew_last' );
	}
	// navbox for IE < 8
	if ( ieVersion < 8 ) {
		$( '#content .navboxnew' ).removeClass( 'navboxnew' ).addClass( 'navboxnew_oldie' );
	}
};

if ( $.client.profile().name == 'msie' ) {
	$( document ).ready( newBeKindToIE );
}

$( document ).ready( newCollapsible );
$( document ).ready( newAutoCollapse );
$( document ).ready( newCollapsibleKeyboard );
$( document ).ready( newCollapsibleGroup );

// Codice JavaScript: ...fine </nowiki>