MediaWiki:Common.js : Différence entre versions

De EncyclopAtys

m
(New version from WikiPedia)
 
(5 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */
+
/*jshint maxerr:600, scripturl:true, laxbreak:true, sub:true, loopfunc:true, forin:false, unused:true*/
function hs(id,mod) {
+
/*global mw, $*/
if(document.getElementById(id).style.display == 'none') {
+
/**
document.getElementById(id).style.display=mod;
+
* N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
}
+
*
else {
+
* ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre
document.getElementById(id).style.display='none';
+
* vector.js. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des
 +
* visiteurs), même plusieurs heures après la modification !
 +
*
 +
* Prière de ranger les nouvelles fonctions dans les sections adaptées :
 +
* - Fonctions JavaScript
 +
* - Fonctions spécifiques pour MediaWiki
 +
* - Applications spécifiques à la fenêtre d'édition
 +
* - Applications qui peuvent être utilisées sur toute page
 +
* - Applications spécifiques à un espace de nom ou une page
 +
*
 +
* Note : une ré-écriture de cette page en utilisant jQuery a été commencée sur [[Projet:JavaScript/Refonte Common.js avec jQuery]].
 +
*
 +
* <nowiki> /!\ Ne pas retirer cette balise
 +
*/
 +
 
 +
 
 +
/**********************************************************************************************************/
 +
/* Fonctions générales MediaWiki (pallient les limitations du logiciel)                                  */
 +
/* Surveiller : https://git.wikimedia.org/history/mediawiki%2Fcore.git/HEAD/skins%2Fcommon%2Fwikibits.js  */
 +
/**********************************************************************************************************/
 +
 
 +
/**
 +
* Projet JavaScript
 +
*/
 +
window.obtenir = function ( name ) {
 +
importScript( 'MediaWiki:Gadget-' + name + '.js' );
 +
};
 +
 
 +
/**
 +
* Transformer les pages du Bistro, du BA et les pages spécifiées en page de discussion
 +
*/
 +
function TransformeEnDiscussion( $ ) {
 +
if (
 +
/^Wikipédia:(Le_Bistro|Bulletin_des_administrateurs|Questions_techniques)/.test( mw.config.get( 'wgPageName' ) ) ||
 +
$( '#transformeEnPageDeDiscussion' ).length
 +
) {
 +
$( 'body' ).removeClass( 'ns-subject' ).addClass( 'ns-talk' );
 +
}
 +
}
 +
$( TransformeEnDiscussion );
 +
 
 +
/**
 +
* Ajouter un bouton à la fin de la barre d'outils
 +
*/
 +
if ( typeof addCustomButton === 'undefined' ) {
 +
mw.log.deprecate( window, 'addCustomButton', function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
 +
if ( mw.toolbar ) {
 +
mw.toolbar.addButton( {
 +
imageFile: imageFile.replace( /^http:(\/\/upload\.wikimedia\.org\/)/, '$1' ),
 +
speedTip: speedTip,
 +
tagOpen: tagOpen,
 +
tagClose: tagClose,
 +
sampleText: sampleText,
 +
imageId: imageId
 +
} );
 +
}
 +
}, 'Use mw.toolbar.addButton instead.' );
 +
}
 +
 
 +
 
 +
/****************************************/
 +
/* Applications pour l'ensemble du site */
 +
/****************************************/
 +
 
 +
/**
 +
* Tout ce qui concerne la page d'édition
 +
* Voir MediaWiki:Common.js/edit.js pour ces fonctions
 +
*/
 +
if ( ['edit','submit'].indexOf(mw.config.get('wgAction')) !== -1 ) {
 +
importScript( 'MediaWiki:Common.js/edit.js' );
 +
}
 +
 
 +
/**
 +
* Réécriture des titres
 +
*
 +
* Fonction utilisée par [[Modèle:Titre incorrect]]
 +
*
 +
* La fonction cherche un bandeau de la forme
 +
* <div id="RealTitleBanner">
 +
*  <span id="RealTitle">titre</span>
 +
* </div>
 +
*
 +
* Un élément comportant id="DisableRealTitle" désactive la fonction
 +
*/
 +
function rewritePageTitle( $ ) {
 +
var $realTitle, titleText, $h1,
 +
$realTitleBanner = $( '#RealTitleBanner' );
 +
if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
 +
$realTitle = $( '#RealTitle' );
 +
$h1 = $( 'h1:first' );
 +
if ( $realTitle.length && $h1.length ) {
 +
titleText = $realTitle.html();
 +
if ( titleText === '' ) {
 +
$h1.hide();
 +
} else {
 +
$h1.html( titleText );
 +
if ( mw.config.get('wgAction') === 'view' && $realTitle.children().length === 0 ) {
 +
document.title = $realTitle.text() + " — Wikipédia";
 +
}
 
}
 
}
 +
$realTitleBanner.hide();
 +
$( '<p>' ).css( 'font-size', '80%' )
 +
.html( 'Titre à utiliser pour créer un lien interne : <b>' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '</b>' )
 +
.insertAfter( $h1 );
 
}
 
}
 +
}
 +
}
 +
$( rewritePageTitle );
  
  
/**  
+
/**
 +
* Ajout d'un sous-titre
 +
*
 +
* Fonction utilisée par [[Modèle:Sous-titre]]
 +
*
 +
* La fonction cherche un élément de la forme
 +
* <span id="sous_titre_h1">Sous-titre</span>
 +
*/
 +
 
 +
function sousTitreH1( $content ) {
 +
$( '#firstHeading > #sous_titre_h1' ).remove();
 +
var $span = $content.find( '#sous_titre_h1' );
 +
if ( $span.length ) {
 +
$span.prepend( ' ' );
 +
$( '#firstHeading' ).append( $span );
 +
}
 +
}
 +
mw.hook( 'wikipage.content' ).add( sousTitreH1 );
 +
 
 +
 
 +
/**
 
  * Boîtes déroulantes
 
  * Boîtes déroulantes
 
  *
 
  *
 
  * Pour [[Modèle:Méta palette de navigation]]
 
  * Pour [[Modèle:Méta palette de navigation]]
 
  */
 
  */
var autoCollapse = 2;
+
 
var collapseCaption = '[Enrouler]';
+
var Palette_Enrouler = '[masquer]';
var expandCaption = '[Dérouler]';
+
var Palette_Derouler = '[afficher]';
+
 
function collapseTable( tableIndex ) {
+
var Palette_max = 1;
  var Button = document.getElementById( "collapseButton" + tableIndex );
+
 
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
+
function Palette_toggle( $table ) {
  if ( !Table || !Button ) return false;
+
$table.find( 'tr:not(:first)' ).toggleClass( 'navboxHidden' );
 
  var Rows = Table.getElementsByTagName( "tr" );
 
 
  if ( Button.firstChild.data == collapseCaption ) {
 
    for ( var i = 1; i < Rows.length; i++ ) {
 
      Rows[i].style.display = "none";
 
    }
 
    Button.firstChild.data = expandCaption;
 
  } else {
 
    for ( var i = 1; i < Rows.length; i++ ) {
 
      Rows[i].style.display = Rows[0].style.display;
 
    }
 
    Button.firstChild.data = collapseCaption;
 
  }
 
 
}
 
}
+
 
function createCollapseButtons() {
+
function Palette( $element ) {
  var tableIndex = 0;
+
if ( !$element ) {
  var NavigationBoxes = new Object();
+
$element = $( document );
  var Tables = document.getElementsByTagName( "table" );
+
} else if ( !$element.jquery ) {
+
$element = $( $element );
  for ( var i = 0; i < Tables.length; i++ ) {
+
}
    if ( hasClass( Tables[i], "collapsible" ) ) {
+
 
      NavigationBoxes[ tableIndex ] = Tables[i];
+
var $tables = $element.find( 'table.collapsible' );
      Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
+
var groups = {};
+
 
      var Button    = document.createElement( "span" );
+
$tables.each( function( _, table ) {
      var ButtonLink = document.createElement( "a" );
+
var group = table.getAttribute('data-autocollapse-group') || '__default__';
      var ButtonText = document.createTextNode( collapseCaption );
+
groups[group] = ( groups[group] || 0 ) + 1;
+
} );
      Button.style.styleFloat = "right";
+
 
      Button.style.cssFloat = "right";
+
$tables.each( function( _, table ) {
      Button.style.fontWeight = "normal";
+
var $table = $( table );
      Button.style.textAlign = "right";
+
 
      Button.style.width = "6em";
+
var group = table.getAttribute('data-autocollapse-group') || '__default__';
+
var autoCollapse = groups[group] > Palette_max;
      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
+
var collapsed = $table.hasClass( 'collapsed' ) || ( autoCollapse && $table.hasClass( 'autocollapse' ) );
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
+
 
      ButtonLink.appendChild( ButtonText );
+
// le modèle dispose d'une classe "navbox-title",
+
// sauf que les palettes "inlinées" (e.g. « {| class="navbox collapsible collapsed" ») n'ont pas cette classe
      Button.appendChild( ButtonLink );
+
$table.find( 'tr:first th:first' ).prepend(
+
$( '<span class="navboxToggle">\u00a0</span>' ).append(
      var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
+
$( '<a href="#">' + (collapsed ? Palette_Derouler : Palette_Enrouler) + '</a>' ).click( function() {
      /* only add button and increment count if there is a header row to work with */
+
var $this = $( this );
      if (Header) {
+
if ( $this.text() === Palette_Enrouler ) {
        Header.insertBefore( Button, Header.childNodes[0] );
+
$this.text( Palette_Derouler );
        tableIndex++;
+
} else {
      }
+
$this.text( Palette_Enrouler );
    }
+
}
  }
+
Palette_toggle( $table );
+
return false;
  for (var i = 0; i < tableIndex; i++) {
+
} )
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
+
)
  }
+
);
 +
if ( collapsed ) {
 +
Palette_toggle( $table );
 +
}
 +
} );
 +
 
 +
// permet de dérouler/enrouler les palettes en cliquant n'importe où sur l'entête
 +
// (utilisation de la classe "navbox-title", comme ça seules les vraies palettes utilisant le modèle sont ciblées)
 +
$element.find( '.navbox-title' )
 +
.click( function ( e ) {
 +
if ( $( e.target ).closest( 'a' ).length ) {
 +
return;
 +
}
 +
$( this ).find( '.navboxToggle a' ).click();
 +
} )
 +
.css( 'cursor', 'pointer' );
 
}
 
}
addOnloadHook(createCollapseButtons);
+
mw.hook( 'wikipage.content' ).add( function ( $content ) {
+
Palette( $content );
 +
} );
 +
 
 +
 
 
/**
 
/**
  * Pour [[Modèle:Boîte déroulante]]  
+
  * Pour [[Modèle:Boîte déroulante]]
 
  */
 
  */
var NavigationBarShowDefault = 0;
+
 
+
var BoiteDeroulante_Enrouler = '[masquer]';
function toggleNavigationBar(indexNavigationBar) {
+
var BoiteDeroulante_Derouler = '[afficher]';
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
+
var BoiteDeroulante_index = -1;
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
+
 
+
function BoiteDeroulante_toggle(indexBoiteDeroulante){
  if (!NavFrame || !NavToggle) return;
+
var a, m;
+
var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
+
var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
  // exemple : title="[déroulade]/[enroulade]"
+
var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante);
  var caption = [expandCaption, collapseCaption];
+
if (!NavFrame || !NavToggle || !CaptionContainer) {
  if (NavFrame.title && NavFrame.title.length > 0) {
+
return;
    caption = NavFrame.title.split("/");
+
}
    if (caption.length < 2) caption.push(collapseCaption);
+
var caption = [];
  }
+
var CaptionSpans = CaptionContainer.getElementsByTagName('span');
+
caption[0] = CaptionSpans[0].innerHTML;
  // if shown now
+
caption[1] = CaptionSpans[1].innerHTML;
  if (NavToggle.firstChild.data == caption[1]) {
+
 
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
+
if ( NavToggle.innerHTML === caption[1] ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
+
NavToggle.innerHTML = caption[0];
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
+
$(NavFrame).find('div.NavContent').hide();
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
+
} else {
    }
+
NavToggle.innerHTML = caption[1];
+
$(NavFrame).find('div.NavContent').show();
  // if hidden now
+
}
  } else if (NavToggle.firstChild.data == caption[0]) {
 
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
 
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
 
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
 
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
 
    }
 
  }
 
 
}
 
}
+
 
// adds show/hide-button to navigation bars
+
function BoiteDeroulante( $element ) {
function createNavigationBarToggleButton() {
+
if ( !$element ) {
  var indexNavigationBar = 0;
+
$element = $( document );
  var NavFrame;
+
} else if ( !$element.jquery ) {
  // iterate over all < div >-elements
+
$element = $( $element );
  for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) {
+
}
    // if found a navigation bar
+
 
    if (hasClass(NavFrame, "NavFrame")) {
+
$element.find( '.NavFrame' ).each( function ( _, NavFrame ) {
      indexNavigationBar++;
+
var Enrouler, Derouler, CaptionContainer, NavToggle, NavToggleText;
      var NavToggle = document.createElement("a");
+
BoiteDeroulante_index++;
      NavToggle.className = 'NavToggle';
+
 
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
+
if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) {
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
+
Enrouler = mw.html.escape(NavFrame.title).split("/")[1];
+
Derouler = mw.html.escape(NavFrame.title).split("/")[0];
      // surcharge des libellés dérouler/enrouler grâce a l'attribut title
+
} else {
      var caption = collapseCaption;
+
Enrouler = BoiteDeroulante_Enrouler;
      if (NavFrame.title && NavFrame.title.indexOf("/") > 0) {
+
Derouler = BoiteDeroulante_Derouler;
        caption = NavFrame.title.split("/")[1];
+
}
      }
+
NavFrame.title='';
+
CaptionContainer = document.createElement('span');
      var NavToggleText = document.createTextNode(caption);
+
CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
      NavToggle.appendChild(NavToggleText);
+
CaptionContainer.style.display = "none";
+
CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
      // add NavToggle-Button as first div-element
+
NavFrame.appendChild(CaptionContainer);
      // in <div class="NavFrame">
+
 
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
+
NavToggle = document.createElement("a");
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
+
NavToggle.className = 'NavToggle';
    }
+
NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
  }
+
NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
  // if more Navigation Bars found than Default: hide all
+
NavToggleText = document.createTextNode(Enrouler);
  if (NavigationBarShowDefault < indexNavigationBar) {
+
NavToggle.appendChild(NavToggleText);
    for( var i=1; i<=indexNavigationBar; i++ ) {
+
 
      toggleNavigationBar(i);
+
NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
    }
+
NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
  }
+
 
 +
BoiteDeroulante_toggle(BoiteDeroulante_index);
 +
} );
 +
 
 +
// permet de dérouler/enrouler les boîtes en cliquant n'importe où sur l'entête
 +
$element.find( '.NavHead' )
 +
.click( function ( e ) {
 +
if ( $( e.target ).closest( 'a' ).length ) {
 +
return;
 +
}
 +
var toggle = $( this ).siblings( 'a.NavToggle' )[0];
 +
if ( toggle ) {
 +
toggle.click(); // pas du jquery, mais du vanilla js
 +
}
 +
} )
 +
.css( 'cursor', 'pointer' );
 
}
 
}
addOnloadHook(createNavigationBarToggleButton);
+
 
   
+
mw.hook( 'wikipage.content' ).add( function ( $content ) {
   
+
BoiteDeroulante( $content );
/** Dynamic Navigation Bars (experimental) *************************************
+
} );
 +
 
 +
/**
 +
  * Utilisation du modèle Modèle:Animation
 +
  */
 +
 
 +
var Diaporama = {};
 +
Diaporama.Params = {};
 +
Diaporama.Fonctions = {};
 +
 
 +
Diaporama.Params.DiaporamaIndex = 0;
 +
Diaporama.Params.ImageDelay = 1;
 +
Diaporama.Params.Paused = [];
 +
Diaporama.Params.Visible = [];
 +
Diaporama.Params.Length = [];
 +
Diaporama.Params.Delay = [];
 +
Diaporama.Params.Timeout = [];
 +
 
 +
Diaporama.Fonctions.Init = function(node){
 +
if (!node) {
 +
node = document;
 +
}
 +
$( node ).find( 'div.diaporama' ).each( function ( _, DiaporamaDiv ) {
 +
Diaporama.Fonctions.InitDiaporama( DiaporamaDiv );
 +
} );
 +
};
 +
Diaporama.Fonctions.InitDiaporama = function(DiaporamaDiv){
 +
var index = Diaporama.Params.DiaporamaIndex;
 +
Diaporama.Params.DiaporamaIndex++;
 +
DiaporamaDiv.id = "Diaporama_"+index;
 +
var DiaporamaFileContainer = $( DiaporamaDiv ).find( 'div.diaporamaFiles' )[0];
 +
var DiaporamaControl = $( DiaporamaDiv ).find( 'div.diaporamaControl' )[0];
 +
if (!DiaporamaFileContainer || !DiaporamaControl) {
 +
return;
 +
}
 +
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
 +
var width;
 +
var firstTumbinner = $( DiaporamaFileContainer ).find( 'div.thumbinner' )[0];
 +
if (firstTumbinner) { // force la largeur du diaporama (pour IE)
 +
width = firstTumbinner.style.width.replace("px", "");
 +
} else {
 +
if (DiaporamaFileContainer.firstChild.firstChild) {
 +
width = DiaporamaFileContainer.firstChild.firstChild.offsetWidth;
 +
}
 +
}
 +
if (width) {
 +
DiaporamaDiv.style.width = (parseInt(width)+30) + "px";
 +
}
 +
if (DiaporamaFiles.length<2) {
 +
return;
 +
}
 +
Diaporama.Params.Length[index] = DiaporamaFiles.length;
 +
DiaporamaFileContainer.id = "DiaporamaFileContainer_"+index;
 +
DiaporamaControl.id = "DiaporamaControl_"+index;
 +
Diaporama.Params.Delay[index] = Diaporama.Params.ImageDelay;
 +
var DiaporamaDivClass = mw.html.escape(DiaporamaDiv.className);
 +
var ParamDelay = DiaporamaDivClass.match(/Delay([0-9]+[.,]?[0-9]*)/);
 +
if (ParamDelay !== null) {
 +
ParamDelay = parseFloat(ParamDelay[1].replace(",", "."));
 +
if (ParamDelay && ParamDelay>0) {
 +
Diaporama.Params.Delay[index] = ParamDelay;
 +
}
 +
}
 +
Diaporama.Fonctions.ShowThisDiapo(index, 0);
 +
var ControlLinks = DiaporamaControl.getElementsByTagName("a");
 +
ControlLinks[0].firstChild.id = "DiaporamaPlay"+index;
 +
ControlLinks[0].href = "javascript:Diaporama.Fonctions.Play("+index+");";
 +
ControlLinks[1].firstChild.id = "DiaporamaPause"+index;
 +
ControlLinks[1].href = "javascript:Diaporama.Fonctions.Pause("+index+");";
 +
ControlLinks[2].firstChild.id = "DiaporamaStop"+index;
 +
ControlLinks[2].href = "javascript:Diaporama.Fonctions.Stop("+index+");";
 +
ControlLinks[3].firstChild.id = "DiaporamaLast"+index;
 +
ControlLinks[3].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+",-1);";
 +
ControlLinks[4].firstChild.id = "DiaporamaNext"+index;
 +
ControlLinks[4].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+", 1);";
 +
ControlLinks[5].parentNode.appendChild(Diaporama.Fonctions.CreateSelect(index, ControlLinks[5].title));
 +
ControlLinks[5].parentNode.removeChild(ControlLinks[5]);
 +
for (var e=0, t=ControlLinks.length; e<t; e++) {
 +
ControlLinks[e].onmousedown = function(){Diaporama.Fonctions.Onclick(this);};
 +
ControlLinks[e].onmouseup = function(){Diaporama.Fonctions.Offclick(this, index);};
 +
ControlLinks[e].firstChild.style.backgroundColor = "white";
 +
ControlLinks[e].onmouseover = function(){ this.focus(); };
 +
}
 +
DiaporamaControl.style.display = "block";
 +
Diaporama.Fonctions.Pause(index);
 +
};
 +
 
 +
Diaporama.Fonctions.Play = function(index){
 +
if (Diaporama.Params.Paused[index] === false) {
 +
return;
 +
}
 +
Diaporama.Params.Paused[index] = false;
 +
clearTimeout(Diaporama.Params.Timeout[index]);
 +
Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000);
 +
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
 +
ButtonPlay.style.backgroundColor = "silver";
 +
var ButtonPause = document.getElementById("DiaporamaPause"+index);
 +
ButtonPause.style.backgroundColor = "white";
 +
var ButtonStop = document.getElementById("DiaporamaStop"+index);
 +
ButtonStop.style.backgroundColor = "white";
 +
};
 +
 
 +
Diaporama.Fonctions.Pause = function(index){
 +
Diaporama.Params.Paused[index] = true;
 +
clearTimeout(Diaporama.Params.Timeout[index]);
 +
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
 +
ButtonPlay.style.backgroundColor = "white";
 +
var ButtonPause = document.getElementById("DiaporamaPause"+index);
 +
ButtonPause.style.backgroundColor = "silver";
 +
var ButtonStop = document.getElementById("DiaporamaStop"+index);
 +
ButtonStop.style.backgroundColor = "white";
 +
};
 +
 
 +
Diaporama.Fonctions.Stop = function(index){
 +
Diaporama.Params.Paused[index] = true;
 +
clearTimeout(Diaporama.Params.Timeout[index]);
 +
Diaporama.Fonctions.ShowThisDiapo(index, 0);
 +
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
 +
ButtonPlay.style.backgroundColor = "white";
 +
var ButtonPause = document.getElementById("DiaporamaPause"+index);
 +
ButtonPause.style.backgroundColor = "white";
 +
var ButtonStop = document.getElementById("DiaporamaStop"+index);
 +
ButtonStop.style.backgroundColor = "silver";
 +
};
 +
 
 +
Diaporama.Fonctions.ToggleDiapo = function(index, diff){
 +
clearTimeout(Diaporama.Params.Timeout[index]);
 +
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
 +
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
 +
var VisibleIndex = Diaporama.Params.Visible[index];
 +
var NextDiaporamaIndex = (VisibleIndex+diff);
 +
if (NextDiaporamaIndex === DiaporamaFiles.length || NextDiaporamaIndex < 0) {
 +
var DiaporamaDiv = document.getElementById("Diaporama_"+index);
 +
if ( diff < 0 || ! $( DiaporamaDiv ).hasClass( 'AutoLoop' ) ) {
 +
return;
 +
}
 +
NextDiaporamaIndex = 0;
 +
}
 +
Diaporama.Fonctions.ShowThisDiapo(index, NextDiaporamaIndex);
 +
};
 +
 
 +
Diaporama.Fonctions.ShowThisDiapo = function(index, Value){
 +
clearTimeout(Diaporama.Params.Timeout[index]);
 +
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
 +
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
 +
for (var x=0, z=DiaporamaFiles.length; x<z; x++) {
 +
if (x !== Value) {
 +
DiaporamaFiles[x].style.display = "none";
 +
} else {
 +
DiaporamaFiles[x].style.display = "block";
 +
}
 +
}
 +
Diaporama.Params.Visible[index] = Value;
 +
Diaporama.Fonctions.UpdateBar(index);
 +
Diaporama.Fonctions.UpdateSelect(index);
 +
if (!Diaporama.Params.Paused[index]) {
 +
var multipl = 1;
 +
if (Value === (Diaporama.Params.Length[index]-1)) {
 +
multipl = 3;
 +
}
 +
Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000*multipl);
 +
}
 +
};
 +
 
 +
Diaporama.Fonctions.CreateSelect = function(index, Title) {
 +
var s, Opt;
 +
var Total = Diaporama.Params.Length[index];
 +
var Select = document.createElement('select');
 +
Select.id = "DiaporamaSelect"+index;
 +
Select.title = Title;
 +
for ( s=0; s<Total; s++ ) {
 +
Opt = document.createElement('option');
 +
if (s === 0) {
 +
Opt.selected = "selected";
 +
}
 +
Opt.text = (s+1)+"/"+Total;
 +
Opt.innerHTML = (s+1)+"/"+Total;
 +
Opt.value = s;
 +
Select.appendChild(Opt);
 +
}
 +
Select.onchange = function(){ Diaporama.Fonctions.SelectDiapo(Diaporama.Fonctions.getIndex(this)); };
 +
Select.onmouseover = function(){ this.focus(); };
 +
return Select;
 +
};
 +
 
 +
Diaporama.Fonctions.SelectDiapo = function(index){
 +
var Select = document.getElementById("DiaporamaSelect"+index);
 +
if (!Select) {
 +
return;
 +
}
 +
var Opts = Select.getElementsByTagName('option');
 +
for (var o=0, p=Opts.length; o<p; o++) {
 +
if (Opts[o].selected) {
 +
var Value = parseInt(Opts[o].value);
 +
return Diaporama.Fonctions.ShowThisDiapo(index, Value);
 +
}
 +
}
 +
};
 +
 
 +
Diaporama.Fonctions.UpdateSelect = function(index){
 +
var Select = document.getElementById("DiaporamaSelect"+index);
 +
if (!Select) {
 +
return;
 +
}
 +
var Opts = Select.getElementsByTagName('option');
 +
for (var o=0, p=Opts.length; o<p; o++){
 +
if (o === Diaporama.Params.Visible[index]) {
 +
Opts[o].selected = "selected";
 +
} else {
 +
Opts[o].selected = false;
 +
}
 +
}
 +
};
 +
 
 +
Diaporama.Fonctions.UpdateBar = function(index){
 +
var Percent = (100/(Diaporama.Params.Length[index]-1)) * Diaporama.Params.Visible[index];
 +
if (Percent>100) {
 +
Percent = 100;
 +
}
 +
var DiaporamaControl = document.getElementById("DiaporamaControl_"+index);
 +
var DiaporamaScrollBar = $( DiaporamaControl ).find( 'div.ScrollBar' )[0];
 +
DiaporamaScrollBar.style.width = Percent + "%";
 +
};
 +
 
 +
Diaporama.Fonctions.Onclick = function(Link){
 +
var Image = Link.getElementsByTagName('img')[0];
 +
Image.style.backgroundColor = "gray";
 +
};
 +
 
 +
Diaporama.Fonctions.Offclick = function(Link, index){
 +
var Span = Link.parentNode;
 +
var Image = Link.getElementsByTagName('img')[0];
 +
var DiapoState = Diaporama.Params.Paused[index];
 +
if ( ( $( Span ).hasClass( 'Play' ) && DiapoState === false ) || ( ( $( Span ).hasClass( 'Pause' ) || $( Span ).hasClass( 'Stop' ) ) && DiapoState === true ) ){
 +
Image.style.backgroundColor = "silver";
 +
} else {
 +
Image.style.backgroundColor = "white";
 +
}
 +
};
 +
 
 +
Diaporama.Fonctions.getIndex = function(Element){
 +
return parseInt(Element.id.replace(/[^0-9]/g, ""));
 +
};
 +
 
 +
$( function () {
 +
Diaporama.Fonctions.Init();
 +
} );
 +
 
 +
/**
 +
* Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) à la manière des boîtes déroulantes
 +
*/
 +
function hiddencat( $ ) {
 +
if (mw.util.getParamValue('printable') === 'yes') {
 +
return;
 +
}
 +
var cl = document.getElementById('catlinks');
 +
if (!cl) {
 +
return;
 +
}
 +
var $hc = $('#mw-hidden-catlinks');
 +
if ( !$hc.length ) {
 +
return;
 +
}
 +
if ( $hc.hasClass('mw-hidden-cats-user-shown') ) {
 +
return;
 +
}
 +
if ( $hc.hasClass('mw-hidden-cats-ns-shown') ) {
 +
$hc.addClass('mw-hidden-cats-hidden');
 +
}
 +
var nc = document.getElementById('mw-normal-catlinks');
 +
if ( !nc ) {
 +
var catline = document.createElement('div');
 +
catline.id = 'mw-normal-catlinks';
 +
var a = document.createElement('a');
 +
a.href = '/wiki/Catégorie:Accueil';
 +
a.title = 'Catégorie:Accueil';
 +
a.appendChild(document.createTextNode('Catégories'));
 +
catline.appendChild(a);
 +
catline.appendChild(document.createTextNode(' : '));
 +
nc = cl.insertBefore(catline, cl.firstChild);
 +
}
 +
var lnk = document.createElement('a');
 +
lnk.id = 'mw-hidden-cats-link';
 +
lnk.title = 'Cet article contient des catégories cachées';
 +
lnk.style.cursor = 'pointer';
 +
lnk.style.color = 'black';
 +
lnk.style.marginLeft = '0.3em';
 +
$(lnk).click(toggleHiddenCats);
 +
lnk.appendChild(document.createTextNode('[+]'));
 +
nc.appendChild(lnk);
 +
}
 +
 
 +
function toggleHiddenCats(e) {
 +
var $hc = $('#mw-hidden-catlinks');
 +
if ( $hc.hasClass('mw-hidden-cats-hidden') ) {
 +
$hc.removeClass('mw-hidden-cats-hidden');
 +
$hc.addClass('mw-hidden-cat-user-shown');
 +
$(e.target).text('[–]');
 +
} else {
 +
$hc.removeClass('mw-hidden-cat-user-shown');
 +
$hc.addClass('mw-hidden-cats-hidden');
 +
$(e.target).text('[+]');
 +
}
 +
}
 +
 
 +
mw.loader.using('mediawiki.util', function () {
 +
$( hiddencat );
 +
});
 +
 
 +
/**
 +
* Script pour alterner entre plusieurs cartes de géolocalisation
 +
*/
 +
 
 +
function GeoBox_Init(Element){
 +
if (!Element) {
 +
Element = document.body;
 +
}
 +
$( Element ).find( 'div.img_toogle' ).each( function ( i, Container ) {
 +
Container.id = 'img_toogle_' + i;
 +
var Boxes = $( Container ).find( '.geobox' );
 +
var ToggleLinksDiv = document.createElement('ul');
 +
ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
 +
Boxes.each( function ( a, ThisBox ) {
 +
ThisBox.id = 'geobox_' + i + "_" + a;
 +
ThisBox.style.borderTop='0';
 +
var ThisAlt = ThisBox.getElementsByTagName('img')[0].alt;
 +
var toggle = document.createElement('a');
 +
toggle.id = 'geoboxToggle_' + i + "_" + a;
 +
toggle.appendChild(document.createTextNode(ThisAlt));
 +
toggle.href='javascript:;';
 +
toggle.onclick = function(){
 +
GeoBox_Toggle(this);
 +
return false;
 +
};
 +
var Li = document.createElement('li');
 +
Li.appendChild(toggle);
 +
ToggleLinksDiv.appendChild(Li);
 +
if (a === (Boxes.length - 1)) {
 +
Li.style.display = "none";
 +
} else {
 +
ThisBox.style.display = "none";
 +
}
 +
} );
 +
Container.appendChild(ToggleLinksDiv);
 +
} );
 +
}
 +
 
 +
function GeoBox_Toggle(link){
 +
var ImgToggleIndex = link.id.replace('geoboxToggle_', '').replace(/_.*/g, "");
 +
var GeoBoxIndex = link.id.replace(/.*_/g, "");
 +
var ImageToggle = document.getElementById('img_toogle_' + ImgToggleIndex);
 +
var Links = document.getElementById('geoboxToggleLinks_' + ImgToggleIndex);
 +
var Geobox = document.getElementById('geobox_' + ImgToggleIndex + "_" + GeoBoxIndex);
 +
var Link = document.getElementById('geoboxToggle_' + ImgToggleIndex + "_" + GeoBoxIndex);
 +
if ( (!ImageToggle) || (!Links) || (!Geobox) || (!Link) ) {
 +
return;
 +
}
 +
$( ImageToggle ).find( '.geobox' ).each( function ( _, ThisgeoBox ) {
 +
if (ThisgeoBox.id === Geobox.id) {
 +
ThisgeoBox.style.display = "";
 +
} else {
 +
ThisgeoBox.style.display = "none";
 +
}
 +
} );
 +
$( Links ).find( 'a' ).each( function ( _, thisToggleLink ) {
 +
if (thisToggleLink.id === Link.id){
 +
thisToggleLink.parentNode.style.display = "none";
 +
} else {
 +
thisToggleLink.parentNode.style.display = "";
 +
}
 +
} );
 +
}
 +
 
 +
if ( ['view','submit'].indexOf(mw.config.get('wgAction')) !==  -1) {
 +
$( function() {
 +
GeoBox_Init();
 +
} );
 +
}
 +
 
 +
/**
 +
* permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
 +
* utilisé par [[Modèle:Aide contextuelle]]
 +
* known bug : conflit avec le changement de titre classique.
 +
* Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
 +
*/
 +
function rewritePageH1bis() {
 +
var helpPage = document.getElementById("helpPage");
 +
if (helpPage) {
 +
var h1 = document.getElementById('firstHeading');
 +
if (h1) {
 +
h1.innerHTML += '<span id="h1-helpPage">' + helpPage.innerHTML + '</span>';
 +
}
 +
}
 +
}
 +
$( rewritePageH1bis );
 +
 
 +
/**
 +
* Configuration du tri des diacritique dans les tables de class "sortable"
 +
*/
 +
mw.config.set( 'tableSorterCollation', {'à':'a', 'â':'a', 'æ':'ae', 'é':'e', 'è':'e', 'ê':'e', 'î':'i', 'ï':'i', 'ô':'o', 'œ':'oe', 'û':'u', 'ç':'c',  } );
 +
 
 +
/**
 +
* Rétablit l'accès clavier à la fonction de tri des tableaux
 +
*/
 +
$( function ($) {
 +
$( '.sortable th' ).attr( 'tabindex', 0 ).keypress( function( event ) {
 +
if ( event.which === 13 ) {
 +
$( this ).click();
 +
}
 +
} );
 +
} );
 +
 
 +
 
 +
/**
 +
* Direct imagelinks to Commons
 
  *
 
  *
  *  Description: See [[Wikipedia:NavFrame]].
+
  * Required modules: mediawiki.RegExp, mediawiki.util
  * Maintainers: UNMAINTAINED
+
*
 +
  * @source www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
 +
* @author Krinkle
 +
* @version 2015-06-23
 +
* Ajouté le 'uselang' ce 18 janvier 2015 — Ltrlg
 +
*/
 +
if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
 +
mw.loader.using( [ 'mediawiki.RegExp', 'mediawiki.util', 'user.options' ] ).done(function(){
 +
mw.hook( 'wikipage.content' ).add( function ( $content ) {
 +
var
 +
uploadBase = '//upload.wikimedia.org/wikipedia/commons/',
 +
 
 +
fileNamespace = mw.config.get( 'wgFormattedNamespaces' )['6'],
 +
localBasePath = new RegExp( '^' + mw.RegExp.escape( mw.util.getUrl( fileNamespace + ':' ) ) ),
 +
localBaseScript = new RegExp( '^' + mw.RegExp.escape( mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( fileNamespace + ':' ) ) ),
 +
 
 +
commonsBasePath = '//commons.wikimedia.org/wiki/File:',
 +
commonsBaseScript = '//commons.wikimedia.org/w/index.php?title=File:',
 +
 
 +
lang = mw.user.options.get( 'language' );
 +
 
 +
$content.find( 'a.image' ).attr( 'href', function ( i, currVal ) {
 +
if ( $( this ).find( 'img' ).attr( 'src' ).indexOf( uploadBase ) === 0 ) {
 +
if ( localBasePath.test( currVal ) ) {
 +
return currVal.replace( localBasePath, commonsBasePath ) + '?uselang=' + lang;
 +
} else if ( localBaseScript.test( currVal ) ) {
 +
return currVal.replace( localBaseScript, commonsBaseScript ) + '&uselang=' + lang;
 +
} else {
 +
return currVal;
 +
}
 +
}
 +
} );
 +
} );
 +
} );
 +
}
 +
 
 +
/**
 +
  * Ajout d'un lien « ajouter une section » en bas de page
 
  */
 
  */
+
$( function( $ ) {
// set up the words in your language
+
var $newSectionLink = $( '#ca-addsection' ).find( 'a' );
var NavigationBarHide = '[' + collapseCaption + ']';
+
if ( $newSectionLink.length ) {
var NavigationBarShow = '[' + expandCaption + ']';
+
$( '#mw-content-text' ).append(
+
'<div style="text-align:right; font-size:0.9em; margin:1em 0 -0.5em">'
// shows and hides content and picture (if available) of navigation bars
+
+ '<a href="' + $newSectionLink.attr( 'href' ) + '" title="Commencer une nouvelle section">Ajouter un sujet</a>'
// Parameters:
+
+ '</div>'
//    indexNavigationBar: the index of navigation bar to be toggled
+
);
function toggleNavigationBar(indexNavigationBar)
+
}
{
+
} );
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
+
 
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
+
/**
   
+
* Repositionnement de la page sur l'ancre avec laquelle elle a été appelée
    if (!NavFrame || !NavToggle) {
+
* après le repli des boîtes déroulantes, entre autres.
        return false;
+
  */
    }
+
if (window.location.hash) {
+
     // execute on window.load to try to get the best accuracy
     // if shown now
+
     $(window).on('load', function () {
     if (NavToggle.firstChild.data == NavigationBarHide) {
+
         var currentTarget = document.getElementById(window.location.hash.substring(1));
         for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
+
        if (currentTarget) {
            if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
+
            currentTarget.scrollIntoView();
                NavChild.style.display = 'none';
 
            }
 
 
         }
 
         }
     NavToggle.firstChild.data = NavigationBarShow;
+
     });
+
}
    // if hidden now
+
 
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
+
/************************************************************/
         for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
+
/* Function Strictement spécifiques à un espace de nom ou à une page */
             if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
+
/************************************************************/
                NavChild.style.display = 'block';
+
 
 +
/**
 +
* Sur la page d'accueil uniquement
 +
*/
 +
if ( mw.config.get( 'wgIsMainPage' ) ) {
 +
 
 +
/**
 +
* Lien vers la liste complète des Wikipédias en bas de la liste des langues
 +
*/
 +
mw.loader.using( [ 'mediawiki.util' ], function () {
 +
$( function() {
 +
mw.util.addPortletLink( 'p-lang', '//www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias' );
 +
} );
 +
} );
 +
 
 +
}
 +
 
 +
// ESPACE DE NOM 'SPECIAL'
 +
if ( mw.config.get( 'wgNamespaceNumber' ) === -1 ) {
 +
 
 +
/**
 +
* Ajoute le namespace aux filtres personnalisés sur [[Spécial:Pages liées]]
 +
* Voir aussi [[MediaWiki:Linkshere]]
 +
*/
 +
if (mw.config.get('wgCanonicalSpecialPageName') === 'Whatlinkshere') {
 +
 
 +
    mw.loader.using('mediawiki.Uri', function () {
 +
         $(document).ready(function ($) {
 +
 
 +
            var query = (new mw.Uri(null, {overrideKeys: true})).query;
 +
 
 +
            var append = (query.namespace ? '&namespace=' + encodeURIComponent( query.namespace ) : '')
 +
                + (query.invert ? '&invert=' + encodeURIComponent( query.invert ) : '');
 +
 
 +
             if (append !== '') {
 +
                $('#whatlinkshere-customfilters').find('a').each(function () {
 +
                    this.href += append;
 +
                });
 
             }
 
             }
         }
+
         });
        NavToggle.firstChild.data = NavigationBarHide;
+
    });
    }
+
}
 +
 
 +
/**
 +
* Affiche un modèle Information sur la page de téléchargement de fichiers [[Spécial:Téléchargement]]
 +
* Voir aussi [[MediaWiki:Onlyifuploading.js]]
 +
*/
 +
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
 +
importScript( 'MediaWiki:Onlyifuploading.js' );
 
}
 
}
   
+
 
// adds show/hide-button to navigation bars
+
/**
function createNavigationBarToggleButton()
+
  * Supprime de la liste des balises disponibles et de la liste des balises supprimables
{
+
* certaines balises réservées à des outils automatiques
    var indexNavigationBar = 0;
+
*/
     // iterate over all < div >-elements
+
if (mw.config.get('wgCanonicalSpecialPageName') === 'EditTags') {
    var divs = document.getElementsByTagName("div");
+
 
    for (var i = 0; NavFrame = divs[i]; i++) {
+
     mw.loader.using('mediawiki.special.edittags', function () {
         // if found a navigation bar
+
         $(function ($) {
        if (hasClass(NavFrame, "NavFrame")) {
+
 
+
             var tagstokeep = [
            indexNavigationBar++;
+
                'AWB',
             var NavToggle = document.createElement("a");
+
                'BandeauxCategories',
            NavToggle.className = 'NavToggle';
+
                'BandeauxEbauches',
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
+
                'BandeauxPortails',
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
+
                'HotCats',
+
                'LiveRC',
             var isCollapsed = hasClass( NavFrame, "collapsed" );
+
                'PaFtec',
             /*
+
                'PaStec',
            * Check if any children are already hidden. This loop is here for backwards compatibility:
+
                'Popups',
            * the old way of making NavFrames start out collapsed was to manually add style="display:none"
+
                'RenommageCategorie',
            * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make
+
                'WPCleaner',
            * the content visible without JavaScript support), the new recommended way is to add the class
+
                'C-helper'
            * "collapsed" to the NavFrame itself, just like with collapsible tables.
+
            ];
            */
+
 
            for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
+
             function shouldkeep(tag) {
                 if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
+
                return tagstokeep.indexOf(tag) !== -1;
                     if ( NavChild.style.display == 'none' ) {
+
             }
                         isCollapsed = true;
+
 
 +
            if ($('div.permissions-errors').length) {
 +
return;
 +
}
 +
 
 +
            var $container = $('#mw_edittags_tag_list_chzn');
 +
            $container.find('li.search-choice').each(function (i, choice) {
 +
                var choicetext = choice.firstChild.innerHTML;
 +
                 if (shouldkeep(choicetext)) {
 +
                    var $deletelink = $(choice).find('a.search-choice-close');
 +
                     if ($deletelink.length) {
 +
                        $deletelink.remove();
 +
                         $(choice).css('padding-right', '-=15px');
 
                     }
 
                     }
 
                 }
 
                 }
             }
+
             });
             if (isCollapsed) {
+
             $container.find('li.active-result').each(function (i, activeresult) {
                 for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
+
                 var activeresulttext = activeresult.innerHTML;
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
+
                if (shouldkeep(activeresulttext)) {
                        NavChild.style.display = 'none';
+
                    $(activeresult).remove();
                    }
 
 
                 }
 
                 }
             }
+
             });
             var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide);
+
 
             NavToggle.appendChild(NavToggleText);
+
             var canremoveall = true;
+
             $('input.mw-edittags-remove-checkbox').each(function (i, checkbox) {
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
+
                 if (shouldkeep(checkbox.value)) {
            for(var j=0; j < NavFrame.childNodes.length; j++) {
+
                     checkbox.disabled = 'disabled';
                 if (hasClass(NavFrame.childNodes[j], "NavHead")) {
+
                    canremoveall = false;
                     NavFrame.childNodes[j].appendChild(NavToggle);
 
 
                 }
 
                 }
 +
            });
 +
            if (!canremoveall) {
 +
                $('#mw-edittags-remove-all').prop('disabled', true);
 
             }
 
             }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
+
 
         }
+
         });
     }
+
     });
 
}
 
}
 
addOnloadHook( createNavigationBarToggleButton );
 
  
 +
} // Fin du code concernant l'espace de nom 'Special'
  
<!-- /*<nowiki>*/
+
 
/** additional scripts **/
+
// ESPACE DE NOM 'UTILISATEUR'
if ( wgIsArticle || window.location.href.indexOf( 'action=submit' ) > -1 )
+
if ( mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
{
+
 
  addScript( 'MediaWiki:CollapsibleTables.js' );
+
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
  hookEvent( 'load', function()
+
* Fonctionnement du [[Modèle:Cadre à onglets]]
  {
+
* Modèle implanté par User:Peleguer de https://ca.wikipedia.org
    new CollapsibleTables();
+
* Actualisé par User:Joanjoc de https://ca.wikipedia.org
    diffwithFix();
+
* Traduction et adaptation User:Antaya de https://fr.wikipedia.org
   
+
* Indépendance de classes CSS et nettoyage par User:Nemoi de https://fr.wikipedia.org
    // Extension for the deletion drop down list
+
*/
    if ( wgAction == 'delete' && ( delReasonBtn = document.getElementById( 'wpConfirmB' ) ) )
+
 
    {
+
var CadreOngletVoirOngletN = function () {
      var delReasonList        = document.getElementById( 'wpDeleteReasonList' );
+
var match = /^(classeur\d+)onglet(\d+)$/.exec(this.id);
      var delLink              = document.createElement( 'a' );
+
var vOngletNom = match[1];
      delLink.href            = 'javascript:void(0);'
+
var vOngletIndex = parseInt(match[2]);
      delLink.title            = document.getElementById( 'wpReason' ).value;
+
 
      delLink.style.fontSize  = '0.9em';
+
var rule1=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.backgroundColor.toString();
      delLink.style.marginLeft = '1em';
+
var rule2=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.borderColor.toString(); // rule2=$('.ongletBoutonNonSel').css("border-color"); ne fonctionne pas sous Firefox
      delLink.onclick          = function()
+
 
      {
+
var Onglets = $('#' + vOngletNom).children("div").eq(0).children("div");
        document.getElementById( 'wpReason' ).value = this.title;
+
 
      }
+
for ( var j = 0; j < Onglets.length; j++) {
      delReasonList.onchange  = function ()
+
var Onglet = Onglets[j];
      {
+
var Feuillet = document.getElementById(vOngletNom + "feuillet" + j);
        document.getElementById( 'wpReason' ).value = '';
+
 
        this.onchange = null;
+
if (vOngletIndex === j) {
      }
+
Feuillet.style.display = "block";
      delLink.appendChild( document.createTextNode( 'restore default reason' ) );
+
Feuillet.style.visibility = "visible";
      delReasonBtn.parentNode.appendChild( delLink );
+
$(Onglet).removeClass("ongletBoutonNonSel");
      delete delLink, delReasonList, delReasonBtn;
+
$(Onglet).addClass("ongletBoutonSel");
    }
+
Onglet.style.cursor="default";
  } );
+
Onglet.style.backgroundColor="inherit";
 +
Onglet.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
 +
Onglet.style.borderRightColor="inherit";
 +
Onglet.style.borderBottomColor="inherit";
 +
Onglet.style.borderLeftColor="inherit";
 +
} else {
 +
Feuillet.style.display = "none";
 +
Feuillet.style.visibility = "hidden";
 +
$(Onglet).removeClass("ongletBoutonSel");
 +
$(Onglet).addClass("ongletBoutonNonSel");
 +
Onglet.style.cursor="pointer";
 +
Onglet.style.backgroundColor=rule1;
 +
Onglet.style.borderColor=rule2;
 +
}
 +
}
 +
return false;
 +
};
 +
 
 +
var CadreOngletInitN = function ( $ ) {
 +
var i, j, Onglet, Feuillet;
 +
var Classeurs = $('div.classeur');
 +
for ( i = 0; i < Classeurs.length; i++ ) {
 +
var Classeur = Classeurs[i];
 +
 
 +
Classeur.setAttribute( "id", "classeur" + i );
 +
 
 +
var vOgIni = -1; // pour connaître l’onglet renseigné
 +
 
 +
var Onglets = $(Classeur).children("div").eq(0).children("div");
 +
var Feuillets = $(Classeur).children("div").eq(1).children("div");
 +
 
 +
for ( j = 0; j < Onglets.length; j++ ) {
 +
Onglet = Onglets[j];
 +
Feuillet = Feuillets[j];
 +
 
 +
Onglet.setAttribute( "id", "classeur" + i + "onglet" + j );
 +
Feuillet.setAttribute( "id", "classeur" + i + "feuillet" + j );
 +
Onglet.onclick = CadreOngletVoirOngletN;
 +
 
 +
if ( $( Onglet ).hasClass( 'ongletBoutonSel' ) ) {
 +
vOgIni=j;
 +
}
 +
}
 +
 
 +
// inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
 +
if (vOgIni === -1) {
 +
vOgIni = Math.floor((Onglets.length)*Math.random());
 +
document.getElementById("classeur"+i+"feuillet"+vOgIni).style.display = "block";
 +
document.getElementById("classeur"+i+"feuillet"+vOgIni).style.visibility = "visible";
 +
var vBtElem = document.getElementById("classeur"+i+"onglet"+vOgIni);
 +
$(Onglet).removeClass("ongletBoutonNonSel");
 +
$(Onglet).addClass("ongletBoutonSel");
 +
vBtElem.style.cursor="default";
 +
vBtElem.style.backgroundColor="inherit";
 +
vBtElem.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
 +
vBtElem.style.borderRightColor="inherit";
 +
vBtElem.style.borderBottomColor="inherit";
 +
vBtElem.style.borderLeftColor="inherit";
 +
}
 +
}
 +
};
 +
 
 +
$( CadreOngletInitN );
 +
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
 +
 
 +
} // Fin du code concernant l'espace de nom 'Utilisateur'
 +
 
 +
 
 +
// ESPACE DE NOM 'RÉFÉRENCE'
 +
if ( mw.config.get( 'wgNamespaceNumber' ) === 104 ) {
 +
 
 +
/*
 +
* Choix du mode d'affichage des références
 +
* Devraient en principe se trouver côté serveur
 +
* @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
 +
*/
 +
 
 +
// select subsection of special characters
 +
var chooseBibSubset = function (s) {
 +
var l = document.getElementsByTagName('div');
 +
for (var i = 0; i < l.length; i++) {
 +
if (l[i].className === 'BibList') {
 +
l[i].style.display = s === 0 ? 'block' : 'none';
 +
} else if (l[i].className === 'WikiNorme') {
 +
l[i].style.display = s === 1 ? 'block' : 'none';
 +
} else if (l[i].className === 'BibTeX') {
 +
l[i].style.display = s === 2 ? 'block' : 'none';
 +
} else if (l[i].className === 'ISBD') {
 +
l[i].style.display = s === 3 ? 'block' : 'none';
 +
} else if (l[i].className === 'ISO690') {
 +
l[i].style.display = s === 4 ? 'block' : 'none';
 +
}
 +
}
 +
};
 +
 
 +
var addBibSubsetMenu = function () {
 +
var specialBib = document.getElementById('specialBib');
 +
if (!specialBib) {
 +
return;
 +
}
 +
 
 +
specialBib.style.display = 'block';
 +
var menu = '<select style="display:inline;" onChange="chooseBibSubset(selectedIndex)">'
 +
+ '<option>Liste</option>'
 +
+ '<option>WikiNorme</option>'
 +
+ '<option>BibTeX</option>'
 +
+ '<option>ISBD</option>'
 +
+ '<option>ISO690</option>'
 +
+ '</select>';
 +
specialBib.innerHTML = specialBib.innerHTML + menu;
 +
 
 +
/* default subset - try to use a cookie some day */
 +
chooseBibSubset(0);
 +
};
 +
 
 +
$( addBibSubsetMenu );
 +
} // Fin du code concernant l'espace de nom 'Référence'
 +
 
 +
// TOUS LES ESPACES DE NOMS SAUF L'ESPACE PRINCIPAL
 +
 
 +
/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
 +
/* Plyd - 3 février 2009 */
 +
function Rebours() {
 +
try {
 +
if (document.getElementById("rebours")) {
 +
var destime, Maintenant, Future, Diff, TempsRestantJ, TempsRestantH, TempsRestantM, TempsRestantS, TempsRestant;
 +
destime = mw.html.escape(document.getElementById("rebours").title).split(";;");
 +
Maintenant = (new Date ()).getTime();
 +
Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime();
 +
Diff = (Future-Maintenant);
 +
if (Diff < 0) {Diff = 0;}
 +
TempsRestantJ = Math.floor(Diff/(24*3600*1000));
 +
TempsRestantH = Math.floor(Diff/(3600*1000)) % 24;
 +
TempsRestantM = Math.floor(Diff/(60*1000)) % 60;
 +
TempsRestantS = Math.floor(Diff/1000) % 60;
 +
TempsRestant = "" + destime[6] + " ";
 +
if (TempsRestantJ === 1) {
 +
TempsRestant = TempsRestant + TempsRestantJ + " jour ";
 +
} else if (TempsRestantJ > 1) {
 +
TempsRestant = TempsRestant + TempsRestantJ + " jours ";
 +
}
 +
TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s";
 +
document.getElementById("rebours").innerHTML = TempsRestant;
 +
setTimeout( function () { Rebours(); }, 1000);
 +
}
 +
} catch (e) {}
 
}
 
}
if ( wgPageName == 'Special:Upload' && document.getElementById( 'mw-upload-form' ) !== 'undefined' )
+
 
{
+
// Personnalisation des liens dans les pages d'aide selon un paramètre de l'URL.
  addScript( 'MediaWiki:UploadForm.js' );
+
// Utilisé par Modèle:Brouillon.
  hookEvent( 'load', function()
+
function ReplaceSourcePageInLinks() {
  {
+
var match = window.location.search.match( /[?&]sourcepage=([^&]*)/ );
    new UploadForm();
+
if ( !match ) {
  } );
+
return;
 +
}
 +
var page = decodeURIComponent( match[1] );
 +
$( '.sourcepage-subst a' ).each( function() {
 +
if ( /^(https?:)?\/\/[^/]+\.wikipedia\.org\//.test( this.href ) ) {
 +
this.href = this.href.replace( 'TITRE-A-REMPLACER', encodeURIComponent( page ) );
 +
}
 +
} );
 
}
 
}
  
/**** function addScript.js
+
if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) {
* by Patrick Westerhoff [poke]
+
$( Rebours );
*/
+
$( ReplaceSourcePageInLinks );
function addScript ( pagename )
 
{
 
  var script  = document.createElement( 'script' );
 
  pagename    = encodeURI( pagename.replace( ' ', '_' ) );
 
  script.src  = '/index.php?title=' + pagename + '&action=raw&ctype=text/javascript';
 
  script.type = 'text/javascript';
 
 
 
  document.getElementsByTagName( 'head' )[0].appendChild( script );
 
 
}
 
}
  
/**** function diffwithFix.js
+
/**
  * by Patrick Westerhoff [poke]
+
  * Ajoute la date de dernière modification sur le bandeau événement récent
 
  */
 
  */
function diffwithFix ()
+
function LastModCopy( $ ) {
{
+
var lastmodcopy = $( '.lastmodcopy' );
  var diffSpan = document.getElementById( 'diffwith' );
+
if ( lastmodcopy.length ) {
  if ( diffSpan == undefined )
+
// L'id change entre Vector d'une part, Monobook et Modern d'autre part ; Cologneblue non supporté
    return;
+
lastmodcopy.html( $( '#footer-info-lastmod' ).html() || $( '#lastmod' ).html() );
 
+
}
  var diffLink  = diffSpan.getElementsByTagName( 'a' )[0];
 
  var diffTitle = diffSpan.title;
 
  var xmlHttp;
 
 
 
  try
 
  {
 
    xmlHttp = new XMLHttpRequest();
 
  }
 
  catch ( e )
 
  {
 
    try
 
    {
 
      xmlHttp = new ActiveXObject( 'Msxml2.XMLHTTP' );
 
    }
 
    catch ( e )
 
    {
 
      try
 
      {
 
        xmlHttp = new ActiveXObject( 'Microsoft.XMLHTTP' );
 
      }
 
      catch ( e )
 
      {
 
        diffSpan.style.fontSize = '90%';
 
        diffSpan.innerHTML      = '(Automated diff <b>not available</b>.)';
 
        return;
 
      }
 
    }
 
  }
 
 
 
  xmlHttp.onreadystatechange = function ()
 
  {
 
    if ( xmlHttp.readyState != 4 )
 
      return;
 
   
 
    revs = xmlHttp.responseXML.getElementsByTagName( 'rev' );
 
   
 
    if ( revs.length > 0 )
 
    {
 
      diffLink.href += '&oldid=' + revs[0].getAttribute( 'revid' );
 
      diffSpan.title = '';
 
    } 
 
  }  
 
  xmlHttp.open( 'GET', '/api.php?format=xml&action=query&prop=revisions&rvprop=ids&rvlimit=1&titles=' + diffTitle, true );
 
  xmlHttp.send( null );
 
 
}
 
}
 +
$( LastModCopy );
 +
 +
 +
/*********************************/
 +
/* Autres fonctions non classées */
 +
/*********************************/
 +
 +
/*
 +
* Fonction
 +
*
 +
* Retourne une chaîne de caractères de la date courante selon dans un certain format
 +
* @param format Format de la date "j" pour le jour, "m" pour le mois et "a" pour l'année. Ainsi si l'on est le 21 novembre 2007 et l'on passe en paramètre cette chaîne "a_m_d", la chaîne retournée sera "2007_novembre_21"
 +
* Auteur : Sanao
 +
* Dernière révision : 21 novembre 2007
 +
*/
 +
function getStrDateToday(format) {
 +
var str_mois = [
 +
"janvier",
 +
"février",
 +
"mars",
 +
"avril",
 +
"mai",
 +
"juin",
 +
"juillet",
 +
"août",
 +
"septembre",
 +
"octobre",
 +
"novembre",
 +
"décembre"
 +
];
 +
 +
var today = new Date();
 +
var day = today.getDate();
 +
var year = today.getYear();
 +
if (year < 2000) {
 +
year = year + 1900;
 +
}
 +
var str_date = format;
  
**
+
//Création de la chaîne
* Script pour alterner entre deux cartes de géolocalisation
+
var regex = /j/gi;
*/
+
str_date = str_date.replace(regex, day.toString());
addOnloadHook(function(){
+
regex = /a/gi;
  var cont;
+
str_date = str_date.replace(regex, year.toString());
  if(!(wgAction=="view")) return
+
regex = /m/gi;
+
str_date = str_date.replace(regex, str_mois[today.getMonth()]);
  cont=getElementsByClass('img_toogle', document.getElementById('bodyContent'), 'div');
 
  if(cont.length==0) return
 
 
  for (var i = 0; i < cont.length ; i++) {
 
    cont.box = getElementsByClass('geobox',cont[i]);
 
    cont.box[0].style.display='none';
 
    cont.box[1].style.borderTop='0';
 
    var toogle = document.createElement('a');
 
    toogle.appendChild(document.createTextNode(cont.box[0].getElementsByTagName('img')[0].alt));
 
    toogle.href='#';
 
    toogle.className='a_toogle';
 
    toogle.status = 1;
 
    toogle.onclick = function() {
 
      this.removeChild(this.firstChild);
 
      div0 = getElementsByClass('geobox',this.parentNode)[0];
 
      div1 = getElementsByClass('geobox',this.parentNode)[1];
 
      alt0 = div0.getElementsByTagName('img')[0].alt;
 
      alt1 = div1.getElementsByTagName('img')[0].alt;
 
      if(this.status==0) {
 
        div0.style.display='none';
 
        div1.style.display='';
 
        this.status=1;
 
        this.appendChild(document.createTextNode(alt0));
 
      } else {
 
        div0.style.display='';
 
        div1.style.display='none';
 
        this.status=0;
 
        this.appendChild(document.createTextNode(alt1));
 
      }
 
      return false;
 
    }
 
  cont[i].insertBefore(toogle, cont.box[1].nextSibling);
 
  }
 
});
 
  
/**
+
return (str_date);
* application de [[Wikipédia:Prise de décision/Système de cache]]
 
* un <span class="noarchive"> autour du lien l'empêche d'être pris en compte
 
* pour celui-ci uniquement
 
* un no_external_cache=true dans un monobouc personnel désactive le script
 
*/
 
 
addOnloadHook(function () {
 
 
  if (wgNamespaceNumber == 0) {
 
    if ((typeof no_external_cache != "undefined") && (no_external_cache)) return;
 
    addcache();
 
  }
 
 
  function addcache() {
 
    var external_links;
 
    if (document.getElementsByClassName) {
 
      external_links = document.getElementsByClassName('external');
 
    } else {
 
      external_links = getElementsByClass('external',document.getElementById("bodyContent"),'a');
 
    }
 
 
    for( i = 0;i < external_links.length;i++)
 
    {
 
      var chemin = external_links[i].href;
 
 
      if(chemin.indexOf("http://wikiwix.com/cache/")==-1 && chemin.indexOf("http://web.archive.org/web/*/")==-1 && chemin.indexOf("wikipedia.org")==-1 && chemin.indexOf("wikimedia.org")==-1 && chemin.indexOf("stable.toolserver.org")==-1)
 
      {
 
      var li = external_links[i].parentNode;
 
      if (li.className == "noarchive") continue;
 
      var depth = 0;
 
      while ((depth < 3) && (li.tagName != "OL") && (li.parentNode != null)) {
 
        li = li.parentNode;
 
        depth++;
 
      }
 
 
      if (li.tagName != "OL" || !(hasClass(li, 'references')) ) continue;
 
      var titre = getTextContent(external_links[i]);
 
      var last = document.createElement("small");
 
      last.setAttribute("class", "cachelinks");
 
      last.style.color = "#3366BB";
 
      last.appendChild(document.createTextNode("\u00a0["));
 
      insertAfter(external_links[i].parentNode, last, external_links[i]);
 
 
      var link = document.createElement("a");
 
      link.setAttribute("href", "http://wikiwix.com/cache/?url=" + chemin.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(titre));
 
      link.setAttribute("title", "archive de "+ titre);
 
      link.appendChild(document.createTextNode("archive"));
 
      link.style.color = "#3366BB";
 
      last.appendChild(link);
 
      last.appendChild(document.createTextNode("]"));
 
      }
 
    }
 
  }
 
 
}
 
}
);
 
/*</nowiki>*/ -->
 

Version actuelle datée du 10 octobre 2017 à 12:02

/*jshint maxerr:600, scripturl:true, laxbreak:true, sub:true, loopfunc:true, forin:false, unused:true*/
/*global mw, $*/
/**
 * N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
 *
 * ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre
 * vector.js. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des
 * visiteurs), même plusieurs heures après la modification !
 *
 * Prière de ranger les nouvelles fonctions dans les sections adaptées :
 * - Fonctions JavaScript
 * - Fonctions spécifiques pour MediaWiki
 * - Applications spécifiques à la fenêtre d'édition
 * - Applications qui peuvent être utilisées sur toute page
 * - Applications spécifiques à un espace de nom ou une page
 *
 * Note : une ré-écriture de cette page en utilisant jQuery a été commencée sur [[Projet:JavaScript/Refonte Common.js avec jQuery]].
 *
 * <nowiki> /!\ Ne pas retirer cette balise
 */


/**********************************************************************************************************/
/* Fonctions générales MediaWiki (pallient les limitations du logiciel)                                   */
/* Surveiller : https://git.wikimedia.org/history/mediawiki%2Fcore.git/HEAD/skins%2Fcommon%2Fwikibits.js  */
/**********************************************************************************************************/

/**
 * Projet JavaScript
 */
window.obtenir = function ( name ) {
	importScript( 'MediaWiki:Gadget-' + name + '.js' );
};

/**
 * Transformer les pages du Bistro, du BA et les pages spécifiées en page de discussion
 */
function TransformeEnDiscussion( $ ) {
	if (
		/^Wikipédia:(Le_Bistro|Bulletin_des_administrateurs|Questions_techniques)/.test( mw.config.get( 'wgPageName' ) ) ||
		$( '#transformeEnPageDeDiscussion' ).length
	) {
		$( 'body' ).removeClass( 'ns-subject' ).addClass( 'ns-talk' );
	}
}
$( TransformeEnDiscussion );

/**
 * Ajouter un bouton à la fin de la barre d'outils
 */
if ( typeof addCustomButton === 'undefined' ) {
	mw.log.deprecate( window, 'addCustomButton', function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
		if ( mw.toolbar ) {
			mw.toolbar.addButton( {
				imageFile: imageFile.replace( /^http:(\/\/upload\.wikimedia\.org\/)/, '$1' ),
				speedTip: speedTip,
				tagOpen: tagOpen,
				tagClose: tagClose,
				sampleText: sampleText,
				imageId: imageId
			} );
		}
	}, 'Use mw.toolbar.addButton instead.' );
}


/****************************************/
/* Applications pour l'ensemble du site */
/****************************************/

/**
 * Tout ce qui concerne la page d'édition
 * Voir MediaWiki:Common.js/edit.js pour ces fonctions
 */
if ( ['edit','submit'].indexOf(mw.config.get('wgAction')) !== -1 ) {
	importScript( 'MediaWiki:Common.js/edit.js' );
}

/**
 * Réécriture des titres
 *
 * Fonction utilisée par [[Modèle:Titre incorrect]]
 *
 * La fonction cherche un bandeau de la forme
 * <div id="RealTitleBanner">
 *   <span id="RealTitle">titre</span>
 * </div>
 *
 * Un élément comportant id="DisableRealTitle" désactive la fonction
 */
function rewritePageTitle( $ ) {
	var $realTitle, titleText, $h1,
		$realTitleBanner = $( '#RealTitleBanner' );
	if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
		$realTitle = $( '#RealTitle' );
		$h1 = $( 'h1:first' );
		if ( $realTitle.length && $h1.length ) {
			titleText = $realTitle.html();
			if ( titleText === '' ) {
				$h1.hide();
			} else {
				$h1.html( titleText );
				if ( mw.config.get('wgAction') === 'view' && $realTitle.children().length === 0 ) {
					document.title = $realTitle.text() + " — Wikipédia";
				}
			}
			$realTitleBanner.hide();
			$( '<p>' ).css( 'font-size', '80%' )
				.html( 'Titre à utiliser pour créer un lien interne : <b>' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '</b>' )
				.insertAfter( $h1 );
		}
	}
}
$( rewritePageTitle );


/**
 * Ajout d'un sous-titre
 *
 * Fonction utilisée par [[Modèle:Sous-titre]]
 *
 * La fonction cherche un élément de la forme
 * <span id="sous_titre_h1">Sous-titre</span>
 */

function sousTitreH1( $content ) {
	$( '#firstHeading > #sous_titre_h1' ).remove();
	var $span = $content.find( '#sous_titre_h1' );
	if ( $span.length ) {
		$span.prepend( ' ' );
		$( '#firstHeading' ).append( $span );
	}
}
mw.hook( 'wikipage.content' ).add( sousTitreH1 );


/**
 * Boîtes déroulantes
 *
 * Pour [[Modèle:Méta palette de navigation]]
 */

var Palette_Enrouler = '[masquer]';
var Palette_Derouler = '[afficher]';

var Palette_max = 1;

function Palette_toggle( $table ) {
	$table.find( 'tr:not(:first)' ).toggleClass( 'navboxHidden' );
}

function Palette( $element ) {
	if ( !$element ) {
		$element = $( document );
	} else if ( !$element.jquery ) {
		$element = $( $element );
	}

	var $tables = $element.find( 'table.collapsible' );
	var groups = {};

	$tables.each( function( _, table ) {
		var group = table.getAttribute('data-autocollapse-group') || '__default__';
		groups[group] = ( groups[group] || 0 ) + 1;
	} );

	$tables.each( function( _, table ) {
		var $table = $( table );

		var group = table.getAttribute('data-autocollapse-group') || '__default__';
		var autoCollapse = groups[group] > Palette_max;
		var collapsed = $table.hasClass( 'collapsed' ) || ( autoCollapse && $table.hasClass( 'autocollapse' ) );

		// le modèle dispose d'une classe "navbox-title",
		// sauf que les palettes "inlinées" (e.g. « {| class="navbox collapsible collapsed" ») n'ont pas cette classe
		$table.find( 'tr:first th:first' ).prepend(
			$( '<span class="navboxToggle">\u00a0</span>' ).append(
				$( '<a href="#">' + (collapsed ? Palette_Derouler : Palette_Enrouler) + '</a>' ).click( function() {
					var $this = $( this );
					if ( $this.text() === Palette_Enrouler ) {
						$this.text( Palette_Derouler );
					} else {
						$this.text( Palette_Enrouler );
					}
					Palette_toggle( $table );
					return false;
				} )
			)
		);
		if ( collapsed ) {
			Palette_toggle( $table );
		}
	} );

	// permet de dérouler/enrouler les palettes en cliquant n'importe où sur l'entête
	// (utilisation de la classe "navbox-title", comme ça seules les vraies palettes utilisant le modèle sont ciblées)
	$element.find( '.navbox-title' )
		.click( function ( e ) {
			if ( $( e.target ).closest( 'a' ).length ) {
				return;
			}
			$( this ).find( '.navboxToggle a' ).click();
		} )
		.css( 'cursor', 'pointer' );
}
mw.hook( 'wikipage.content' ).add( function ( $content ) {
	Palette( $content );
} );


/**
 * Pour [[Modèle:Boîte déroulante]]
 */

var BoiteDeroulante_Enrouler = '[masquer]';
var BoiteDeroulante_Derouler = '[afficher]';
var BoiteDeroulante_index = -1;

function BoiteDeroulante_toggle(indexBoiteDeroulante){
	var a, m;
	var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
	var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
	var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante);
	if (!NavFrame || !NavToggle || !CaptionContainer) {
		return;
	}
	var caption = [];
	var CaptionSpans = CaptionContainer.getElementsByTagName('span');
	caption[0] = CaptionSpans[0].innerHTML;
	caption[1] = CaptionSpans[1].innerHTML;

	if ( NavToggle.innerHTML === caption[1] ) {
		NavToggle.innerHTML = caption[0];
		$(NavFrame).find('div.NavContent').hide();
	} else {
		NavToggle.innerHTML = caption[1];
		$(NavFrame).find('div.NavContent').show();
	}
}

function BoiteDeroulante( $element ) {
	if ( !$element ) {
		$element = $( document );
	} else if ( !$element.jquery ) {
		$element = $( $element );
	}

	$element.find( '.NavFrame' ).each( function ( _, NavFrame ) {
		var Enrouler, Derouler, CaptionContainer, NavToggle, NavToggleText;
		BoiteDeroulante_index++;

		if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) {
			Enrouler = mw.html.escape(NavFrame.title).split("/")[1];
			Derouler = mw.html.escape(NavFrame.title).split("/")[0];
		} else {
			Enrouler = BoiteDeroulante_Enrouler;
			Derouler = BoiteDeroulante_Derouler;
		}
		NavFrame.title='';
		CaptionContainer = document.createElement('span');
		CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
		CaptionContainer.style.display = "none";
		CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
		NavFrame.appendChild(CaptionContainer);

		NavToggle = document.createElement("a");
		NavToggle.className = 'NavToggle';
		NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
		NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
		NavToggleText = document.createTextNode(Enrouler);
		NavToggle.appendChild(NavToggleText);

		NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
		NavFrame.id = 'NavFrame' + BoiteDeroulante_index;

		BoiteDeroulante_toggle(BoiteDeroulante_index);
	} );

	// permet de dérouler/enrouler les boîtes en cliquant n'importe où sur l'entête
	$element.find( '.NavHead' )
		.click( function ( e ) {
			if ( $( e.target ).closest( 'a' ).length ) {
				return;
			}
			var toggle = $( this ).siblings( 'a.NavToggle' )[0];
			if ( toggle ) {
				toggle.click(); // pas du jquery, mais du vanilla js
			}
		} )
		.css( 'cursor', 'pointer' );
}

mw.hook( 'wikipage.content' ).add( function ( $content ) {
	BoiteDeroulante( $content );
} );

/**
 * Utilisation du modèle Modèle:Animation
 */

var Diaporama = {};
Diaporama.Params = {};
Diaporama.Fonctions = {};

Diaporama.Params.DiaporamaIndex = 0;
Diaporama.Params.ImageDelay = 1;
Diaporama.Params.Paused = [];
Diaporama.Params.Visible = [];
Diaporama.Params.Length = [];
Diaporama.Params.Delay = [];
Diaporama.Params.Timeout = [];

Diaporama.Fonctions.Init = function(node){
	if (!node) {
		node = document;
	}
	$( node ).find( 'div.diaporama' ).each( function ( _, DiaporamaDiv ) {
		Diaporama.Fonctions.InitDiaporama( DiaporamaDiv );
	} );
};
Diaporama.Fonctions.InitDiaporama = function(DiaporamaDiv){
	var index = Diaporama.Params.DiaporamaIndex;
	Diaporama.Params.DiaporamaIndex++;
	DiaporamaDiv.id = "Diaporama_"+index;
	var DiaporamaFileContainer = $( DiaporamaDiv ).find( 'div.diaporamaFiles' )[0];
	var DiaporamaControl = $( DiaporamaDiv ).find( 'div.diaporamaControl' )[0];
	if (!DiaporamaFileContainer || !DiaporamaControl) {
		return;
	}
	var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
	var width;
	var firstTumbinner = $( DiaporamaFileContainer ).find( 'div.thumbinner' )[0];
	if (firstTumbinner) { // force la largeur du diaporama (pour IE)
		width = firstTumbinner.style.width.replace("px", "");
	} else {
		if (DiaporamaFileContainer.firstChild.firstChild) {
			width = DiaporamaFileContainer.firstChild.firstChild.offsetWidth;
		}
	}
	if (width) {
		DiaporamaDiv.style.width = (parseInt(width)+30) + "px";
	}
	if (DiaporamaFiles.length<2) {
		return;
	}
	Diaporama.Params.Length[index] = DiaporamaFiles.length;
	DiaporamaFileContainer.id = "DiaporamaFileContainer_"+index;
	DiaporamaControl.id = "DiaporamaControl_"+index;
	Diaporama.Params.Delay[index] = Diaporama.Params.ImageDelay;
	var DiaporamaDivClass = mw.html.escape(DiaporamaDiv.className);
	var ParamDelay = DiaporamaDivClass.match(/Delay([0-9]+[.,]?[0-9]*)/);
	if (ParamDelay !== null) {
		ParamDelay = parseFloat(ParamDelay[1].replace(",", "."));
		if (ParamDelay && ParamDelay>0) {
			Diaporama.Params.Delay[index] = ParamDelay;
		}
	}
	Diaporama.Fonctions.ShowThisDiapo(index, 0);
	var ControlLinks = DiaporamaControl.getElementsByTagName("a");
	ControlLinks[0].firstChild.id = "DiaporamaPlay"+index;
	ControlLinks[0].href = "javascript:Diaporama.Fonctions.Play("+index+");";
	ControlLinks[1].firstChild.id = "DiaporamaPause"+index;
	ControlLinks[1].href = "javascript:Diaporama.Fonctions.Pause("+index+");";
	ControlLinks[2].firstChild.id = "DiaporamaStop"+index;
	ControlLinks[2].href = "javascript:Diaporama.Fonctions.Stop("+index+");";
	ControlLinks[3].firstChild.id = "DiaporamaLast"+index;
	ControlLinks[3].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+",-1);";
	ControlLinks[4].firstChild.id = "DiaporamaNext"+index;
	ControlLinks[4].href = "javascript:Diaporama.Fonctions.ToggleDiapo("+index+", 1);";
	ControlLinks[5].parentNode.appendChild(Diaporama.Fonctions.CreateSelect(index, ControlLinks[5].title));
	ControlLinks[5].parentNode.removeChild(ControlLinks[5]);
	for (var e=0, t=ControlLinks.length; e<t; e++) {
		ControlLinks[e].onmousedown = function(){Diaporama.Fonctions.Onclick(this);};
		ControlLinks[e].onmouseup = function(){Diaporama.Fonctions.Offclick(this, index);};
		ControlLinks[e].firstChild.style.backgroundColor = "white";
		ControlLinks[e].onmouseover = function(){ this.focus(); };
	}
	DiaporamaControl.style.display = "block";
	Diaporama.Fonctions.Pause(index);
};

Diaporama.Fonctions.Play = function(index){
	if (Diaporama.Params.Paused[index] === false) {
		return;
	}
	Diaporama.Params.Paused[index] = false;
	clearTimeout(Diaporama.Params.Timeout[index]);
	Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000);
	var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
	ButtonPlay.style.backgroundColor = "silver";
	var ButtonPause = document.getElementById("DiaporamaPause"+index);
	ButtonPause.style.backgroundColor = "white";
	var ButtonStop = document.getElementById("DiaporamaStop"+index);
	ButtonStop.style.backgroundColor = "white";
};

Diaporama.Fonctions.Pause = function(index){
	Diaporama.Params.Paused[index] = true;
	clearTimeout(Diaporama.Params.Timeout[index]);
	var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
	ButtonPlay.style.backgroundColor = "white";
	var ButtonPause = document.getElementById("DiaporamaPause"+index);
	ButtonPause.style.backgroundColor = "silver";
	var ButtonStop = document.getElementById("DiaporamaStop"+index);
	ButtonStop.style.backgroundColor = "white";
};

Diaporama.Fonctions.Stop = function(index){
	Diaporama.Params.Paused[index] = true;
	clearTimeout(Diaporama.Params.Timeout[index]);
	Diaporama.Fonctions.ShowThisDiapo(index, 0);
	var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
	ButtonPlay.style.backgroundColor = "white";
	var ButtonPause = document.getElementById("DiaporamaPause"+index);
	ButtonPause.style.backgroundColor = "white";
	var ButtonStop = document.getElementById("DiaporamaStop"+index);
	ButtonStop.style.backgroundColor = "silver";
};

Diaporama.Fonctions.ToggleDiapo = function(index, diff){
	clearTimeout(Diaporama.Params.Timeout[index]);
	var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
	var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
	var VisibleIndex = Diaporama.Params.Visible[index];
	var NextDiaporamaIndex = (VisibleIndex+diff);
	if (NextDiaporamaIndex === DiaporamaFiles.length || NextDiaporamaIndex < 0) {
			var DiaporamaDiv = document.getElementById("Diaporama_"+index);
			if ( diff < 0 || ! $( DiaporamaDiv ).hasClass( 'AutoLoop' ) ) {
				return;
			}
			NextDiaporamaIndex = 0;
	}
	Diaporama.Fonctions.ShowThisDiapo(index, NextDiaporamaIndex);
};

Diaporama.Fonctions.ShowThisDiapo = function(index, Value){
	clearTimeout(Diaporama.Params.Timeout[index]);
	var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
	var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
	for (var x=0, z=DiaporamaFiles.length; x<z; x++) {
		if (x !== Value) {
			DiaporamaFiles[x].style.display = "none";
		} else {
			DiaporamaFiles[x].style.display = "block";
		}
	}
	Diaporama.Params.Visible[index] = Value;
	Diaporama.Fonctions.UpdateBar(index);
	Diaporama.Fonctions.UpdateSelect(index);
	if (!Diaporama.Params.Paused[index]) {
		var multipl = 1;
		if (Value === (Diaporama.Params.Length[index]-1)) {
			multipl = 3;
		}
		Diaporama.Params.Timeout[index] = setTimeout("Diaporama.Fonctions.ToggleDiapo("+index+",1);", Diaporama.Params.Delay[index]*1000*multipl);
	}
};

Diaporama.Fonctions.CreateSelect = function(index, Title) {
	var s, Opt;
	var Total = Diaporama.Params.Length[index];
	var Select = document.createElement('select');
	Select.id = "DiaporamaSelect"+index;
	Select.title = Title;
	for ( s=0; s<Total; s++ ) {
			Opt = document.createElement('option');
			if (s === 0) {
				Opt.selected = "selected";
			}
			Opt.text = (s+1)+"/"+Total;
			Opt.innerHTML = (s+1)+"/"+Total;
			Opt.value = s;
			Select.appendChild(Opt);
	}
	Select.onchange = function(){ Diaporama.Fonctions.SelectDiapo(Diaporama.Fonctions.getIndex(this)); };
	Select.onmouseover = function(){ this.focus(); };
	return Select;
};

Diaporama.Fonctions.SelectDiapo = function(index){
	var Select = document.getElementById("DiaporamaSelect"+index);
	if (!Select) {
		return;
	}
	var Opts = Select.getElementsByTagName('option');
	for (var o=0, p=Opts.length; o<p; o++) {
		if (Opts[o].selected) {
			var Value = parseInt(Opts[o].value);
			return Diaporama.Fonctions.ShowThisDiapo(index, Value);
		}
	}
};

Diaporama.Fonctions.UpdateSelect = function(index){
	var Select = document.getElementById("DiaporamaSelect"+index);
	if (!Select) {
		return;
	}
	var Opts = Select.getElementsByTagName('option');
	for (var o=0, p=Opts.length; o<p; o++){
		if (o === Diaporama.Params.Visible[index]) {
			Opts[o].selected = "selected";
		} else {
			Opts[o].selected = false;
		}
	}
};

Diaporama.Fonctions.UpdateBar = function(index){
	var Percent = (100/(Diaporama.Params.Length[index]-1)) * Diaporama.Params.Visible[index];
	if (Percent>100) {
		Percent = 100;
	}
	var DiaporamaControl = document.getElementById("DiaporamaControl_"+index);
	var DiaporamaScrollBar = $( DiaporamaControl ).find( 'div.ScrollBar' )[0];
	DiaporamaScrollBar.style.width = Percent + "%";
};

Diaporama.Fonctions.Onclick = function(Link){
	var Image = Link.getElementsByTagName('img')[0];
	Image.style.backgroundColor = "gray";
};

Diaporama.Fonctions.Offclick = function(Link, index){
	var Span = Link.parentNode;
	var Image = Link.getElementsByTagName('img')[0];
	var DiapoState = Diaporama.Params.Paused[index];
	if ( ( $( Span ).hasClass( 'Play' ) && DiapoState === false ) || ( ( $( Span ).hasClass( 'Pause' ) || $( Span ).hasClass( 'Stop' ) ) && DiapoState === true ) ){
		Image.style.backgroundColor = "silver";
	} else {
		Image.style.backgroundColor = "white";
	}
};

Diaporama.Fonctions.getIndex = function(Element){
	return parseInt(Element.id.replace(/[^0-9]/g, ""));
};

$( function () {
	Diaporama.Fonctions.Init();
} );

/**
 * Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) à la manière des boîtes déroulantes
 */
function hiddencat( $ ) {
	if (mw.util.getParamValue('printable') === 'yes') {
		return;
	}
	var cl = document.getElementById('catlinks');
	if (!cl) {
		return;
	}
	var $hc = $('#mw-hidden-catlinks');
	if ( !$hc.length ) {
		return;
	}
	if ( $hc.hasClass('mw-hidden-cats-user-shown') ) {
		return;
	}
	if ( $hc.hasClass('mw-hidden-cats-ns-shown') ) {
		$hc.addClass('mw-hidden-cats-hidden');
	}
	var nc = document.getElementById('mw-normal-catlinks');
	if ( !nc ) {
		var catline = document.createElement('div');
		catline.id = 'mw-normal-catlinks';
		var a = document.createElement('a');
		a.href = '/wiki/Catégorie:Accueil';
		a.title = 'Catégorie:Accueil';
		a.appendChild(document.createTextNode('Catégories'));
		catline.appendChild(a);
		catline.appendChild(document.createTextNode(' : '));
		nc = cl.insertBefore(catline, cl.firstChild);
	}
	var lnk = document.createElement('a');
	lnk.id = 'mw-hidden-cats-link';
	lnk.title = 'Cet article contient des catégories cachées';
	lnk.style.cursor = 'pointer';
	lnk.style.color = 'black';
	lnk.style.marginLeft = '0.3em';
	$(lnk).click(toggleHiddenCats);
	lnk.appendChild(document.createTextNode('[+]'));
	nc.appendChild(lnk);
}

function toggleHiddenCats(e) {
	var $hc = $('#mw-hidden-catlinks');
	if ( $hc.hasClass('mw-hidden-cats-hidden') ) {
		$hc.removeClass('mw-hidden-cats-hidden');
		$hc.addClass('mw-hidden-cat-user-shown');
		$(e.target).text('[–]');
	} else {
		$hc.removeClass('mw-hidden-cat-user-shown');
		$hc.addClass('mw-hidden-cats-hidden');
		$(e.target).text('[+]');
	}
}

mw.loader.using('mediawiki.util', function () {
	$( hiddencat );
});

/**
 * Script pour alterner entre plusieurs cartes de géolocalisation
 */

function GeoBox_Init(Element){
	if (!Element) {
		Element = document.body;
	}
	$( Element ).find( 'div.img_toogle' ).each( function ( i, Container ) {
		Container.id = 'img_toogle_' + i;
		var Boxes = $( Container ).find( '.geobox' );
		var ToggleLinksDiv = document.createElement('ul');
		ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
		Boxes.each( function ( a, ThisBox ) {
			ThisBox.id = 'geobox_' + i + "_" + a;
			ThisBox.style.borderTop='0';
			var ThisAlt = ThisBox.getElementsByTagName('img')[0].alt;
			var toggle = document.createElement('a');
			toggle.id = 'geoboxToggle_' + i + "_" + a;
			toggle.appendChild(document.createTextNode(ThisAlt));
			toggle.href='javascript:;';
			toggle.onclick = function(){
				GeoBox_Toggle(this);
				return false;
			};
			var Li = document.createElement('li');
			Li.appendChild(toggle);
			ToggleLinksDiv.appendChild(Li);
			if (a === (Boxes.length - 1)) {
				Li.style.display = "none";
			} else {
				ThisBox.style.display = "none";
			}
		} );
		Container.appendChild(ToggleLinksDiv);
	} );
}

function GeoBox_Toggle(link){
	var ImgToggleIndex = link.id.replace('geoboxToggle_', '').replace(/_.*/g, "");
	var GeoBoxIndex = link.id.replace(/.*_/g, "");
	var ImageToggle = document.getElementById('img_toogle_' + ImgToggleIndex);
	var Links = document.getElementById('geoboxToggleLinks_' + ImgToggleIndex);
	var Geobox = document.getElementById('geobox_' + ImgToggleIndex + "_" + GeoBoxIndex);
	var Link = document.getElementById('geoboxToggle_' + ImgToggleIndex + "_" + GeoBoxIndex);
	if ( (!ImageToggle) || (!Links) || (!Geobox) || (!Link) ) {
		return;
	}
	$( ImageToggle ).find( '.geobox' ).each( function ( _, ThisgeoBox ) {
		if (ThisgeoBox.id === Geobox.id) {
			ThisgeoBox.style.display = "";
		} else {
			ThisgeoBox.style.display = "none";
		}
	} );
	$( Links ).find( 'a' ).each( function ( _, thisToggleLink ) {
		if (thisToggleLink.id === Link.id){
			thisToggleLink.parentNode.style.display = "none";
		} else {
			thisToggleLink.parentNode.style.display = "";
		}
	} );
}

if ( ['view','submit'].indexOf(mw.config.get('wgAction')) !==  -1) {
	$( function() {
		GeoBox_Init();
	} );
}

/**
 * permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
 * utilisé par [[Modèle:Aide contextuelle]]
 * known bug : conflit avec le changement de titre classique.
 * Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
 */
function rewritePageH1bis() {
	var helpPage = document.getElementById("helpPage");
	if (helpPage) {
		var h1 = document.getElementById('firstHeading');
		if (h1) {
			h1.innerHTML += '<span id="h1-helpPage">' + helpPage.innerHTML + '</span>';
		}
	}
}
$( rewritePageH1bis );

/**
 * Configuration du tri des diacritique dans les tables de class "sortable"
 */
mw.config.set( 'tableSorterCollation', {'à':'a', 'â':'a', 'æ':'ae', 'é':'e', 'è':'e', 'ê':'e', 'î':'i', 'ï':'i', 'ô':'o', 'œ':'oe', 'û':'u', 'ç':'c',  } );

/**
 * Rétablit l'accès clavier à la fonction de tri des tableaux
 */
$( function ($) {
	$( '.sortable th' ).attr( 'tabindex', 0 ).keypress( function( event ) {
		if ( event.which === 13 ) {
			$( this ).click();
		}
	} );
} );


/**
 * Direct imagelinks to Commons
 *
 * Required modules: mediawiki.RegExp, mediawiki.util
 *
 * @source www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
 * @author Krinkle
 * @version 2015-06-23
 * Ajouté le 'uselang' ce 18 janvier 2015 — Ltrlg
 */
if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
	mw.loader.using( [ 'mediawiki.RegExp', 'mediawiki.util', 'user.options' ] ).done(function(){
		mw.hook( 'wikipage.content' ).add( function ( $content ) {
			var
				uploadBase = '//upload.wikimedia.org/wikipedia/commons/',

				fileNamespace = mw.config.get( 'wgFormattedNamespaces' )['6'],
				localBasePath = new RegExp( '^' + mw.RegExp.escape( mw.util.getUrl( fileNamespace + ':' ) ) ),
				localBaseScript = new RegExp( '^' + mw.RegExp.escape( mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( fileNamespace + ':' ) ) ),

				commonsBasePath = '//commons.wikimedia.org/wiki/File:',
				commonsBaseScript = '//commons.wikimedia.org/w/index.php?title=File:',

				lang = mw.user.options.get( 'language' );

			$content.find( 'a.image' ).attr( 'href', function ( i, currVal ) {
				if ( $( this ).find( 'img' ).attr( 'src' ).indexOf( uploadBase ) === 0 ) {
					if ( localBasePath.test( currVal ) ) {
						return currVal.replace( localBasePath, commonsBasePath ) + '?uselang=' + lang;
					} else if ( localBaseScript.test( currVal ) ) {
						return currVal.replace( localBaseScript, commonsBaseScript ) + '&uselang=' + lang;
					} else {
						return currVal;
					}
				}
			} );
		} );
	} );
}

/**
 * Ajout d'un lien « ajouter une section » en bas de page
 */
$( function( $ ) {
	var $newSectionLink = $( '#ca-addsection' ).find( 'a' );
	if ( $newSectionLink.length ) {
		$( '#mw-content-text' ).append(
			'<div style="text-align:right; font-size:0.9em; margin:1em 0 -0.5em">'
			+ '<a href="' + $newSectionLink.attr( 'href' ) + '" title="Commencer une nouvelle section">Ajouter un sujet</a>'
			+ '</div>'
		);
	}
} );

/**
 * Repositionnement de la page sur l'ancre avec laquelle elle a été appelée
 * après le repli des boîtes déroulantes, entre autres.
 */
if (window.location.hash) {
    // execute on window.load to try to get the best accuracy
    $(window).on('load', function () {
        var currentTarget = document.getElementById(window.location.hash.substring(1));
        if (currentTarget) {
            currentTarget.scrollIntoView();
        }
    });
}

/************************************************************/
/* Function Strictement spécifiques à un espace de nom ou à une page */
/************************************************************/

/**
 * Sur la page d'accueil uniquement
 */
if ( mw.config.get( 'wgIsMainPage' ) ) {

	/**
	 * Lien vers la liste complète des Wikipédias en bas de la liste des langues
	 */
	mw.loader.using( [ 'mediawiki.util' ], function () {
		$( function() {
			mw.util.addPortletLink( 'p-lang', '//www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias' );
		} );
	} );

}

// ESPACE DE NOM 'SPECIAL'
if ( mw.config.get( 'wgNamespaceNumber' ) === -1 ) {

/**
 * Ajoute le namespace aux filtres personnalisés sur [[Spécial:Pages liées]]
 * Voir aussi [[MediaWiki:Linkshere]]
 */
if (mw.config.get('wgCanonicalSpecialPageName') === 'Whatlinkshere') {

    mw.loader.using('mediawiki.Uri', function () {
        $(document).ready(function ($) {

            var query = (new mw.Uri(null, {overrideKeys: true})).query;

            var append = (query.namespace ? '&namespace=' + encodeURIComponent( query.namespace ) : '')
                + (query.invert ? '&invert=' + encodeURIComponent( query.invert ) : '');

            if (append !== '') {
                $('#whatlinkshere-customfilters').find('a').each(function () {
                    this.href += append;
                });
            }
        });
    });
}

/**
 * Affiche un modèle Information sur la page de téléchargement de fichiers [[Spécial:Téléchargement]]
 * Voir aussi [[MediaWiki:Onlyifuploading.js]]
 */
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
	importScript( 'MediaWiki:Onlyifuploading.js' );
}

/**
 * Supprime de la liste des balises disponibles et de la liste des balises supprimables
 * certaines balises réservées à des outils automatiques
 */
if (mw.config.get('wgCanonicalSpecialPageName') === 'EditTags') {

    mw.loader.using('mediawiki.special.edittags', function () {
        $(function ($) {

            var tagstokeep = [
                'AWB',
                'BandeauxCategories',
                'BandeauxEbauches',
                'BandeauxPortails',
                'HotCats',
                'LiveRC',
                'PaFtec',
                'PaStec',
                'Popups',
                'RenommageCategorie',
                'WPCleaner',
                'C-helper'
            ];

            function shouldkeep(tag) {
                return tagstokeep.indexOf(tag) !== -1;
            }

            if ($('div.permissions-errors').length) {
				return;
			}

            var $container = $('#mw_edittags_tag_list_chzn');
            $container.find('li.search-choice').each(function (i, choice) {
                var choicetext = choice.firstChild.innerHTML;
                if (shouldkeep(choicetext)) {
                    var $deletelink = $(choice).find('a.search-choice-close');
                    if ($deletelink.length) {
                        $deletelink.remove();
                        $(choice).css('padding-right', '-=15px');
                    }
                }
            });
            $container.find('li.active-result').each(function (i, activeresult) {
                var activeresulttext = activeresult.innerHTML;
                if (shouldkeep(activeresulttext)) {
                    $(activeresult).remove();
                }
            });

            var canremoveall = true;
            $('input.mw-edittags-remove-checkbox').each(function (i, checkbox) {
                if (shouldkeep(checkbox.value)) {
                    checkbox.disabled = 'disabled';
                    canremoveall = false;
                }
            });
            if (!canremoveall) {
                $('#mw-edittags-remove-all').prop('disabled', true);
            }

        });
    });
}

} // Fin du code concernant l'espace de nom 'Special'


// ESPACE DE NOM 'UTILISATEUR'
if ( mw.config.get( 'wgNamespaceNumber' ) === 2 ) {

/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
 * Fonctionnement du [[Modèle:Cadre à onglets]]
 * Modèle implanté par User:Peleguer de https://ca.wikipedia.org
 * Actualisé par User:Joanjoc de https://ca.wikipedia.org
 * Traduction et adaptation User:Antaya de https://fr.wikipedia.org
 * Indépendance de classes CSS et nettoyage par User:Nemoi de https://fr.wikipedia.org
*/

var CadreOngletVoirOngletN = function () {
	var match = /^(classeur\d+)onglet(\d+)$/.exec(this.id);
	var vOngletNom = match[1];
	var vOngletIndex = parseInt(match[2]);

	var rule1=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.backgroundColor.toString();
	var rule2=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.borderColor.toString(); // rule2=$('.ongletBoutonNonSel').css("border-color"); ne fonctionne pas sous Firefox

	var Onglets = $('#' + vOngletNom).children("div").eq(0).children("div");

	for ( var j = 0; j < Onglets.length; j++) {
		var Onglet = Onglets[j];
		var Feuillet = document.getElementById(vOngletNom + "feuillet" + j);

		if (vOngletIndex === j) {
			Feuillet.style.display = "block";
			Feuillet.style.visibility = "visible";
			$(Onglet).removeClass("ongletBoutonNonSel");
			$(Onglet).addClass("ongletBoutonSel");
			Onglet.style.cursor="default";
			Onglet.style.backgroundColor="inherit";
			Onglet.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
			Onglet.style.borderRightColor="inherit";
			Onglet.style.borderBottomColor="inherit";
			Onglet.style.borderLeftColor="inherit";
		} else {
			Feuillet.style.display = "none";
			Feuillet.style.visibility = "hidden";
			$(Onglet).removeClass("ongletBoutonSel");
			$(Onglet).addClass("ongletBoutonNonSel");
			Onglet.style.cursor="pointer";
			Onglet.style.backgroundColor=rule1;
			Onglet.style.borderColor=rule2;
		}
	}
	return false;
};

var CadreOngletInitN = function ( $ ) {
	var i, j, Onglet, Feuillet;
	var Classeurs = $('div.classeur');
	for ( i = 0; i < Classeurs.length; i++ ) {
		var Classeur = Classeurs[i];

		Classeur.setAttribute( "id", "classeur" + i );

		var vOgIni = -1; // pour connaître l’onglet renseigné

		var Onglets = $(Classeur).children("div").eq(0).children("div");
		var Feuillets = $(Classeur).children("div").eq(1).children("div");

		for ( j = 0; j < Onglets.length; j++ ) {
				Onglet = Onglets[j];
				Feuillet = Feuillets[j];

				Onglet.setAttribute( "id", "classeur" + i + "onglet" + j );
				Feuillet.setAttribute( "id", "classeur" + i + "feuillet" + j );
				Onglet.onclick = CadreOngletVoirOngletN;

				if ( $( Onglet ).hasClass( 'ongletBoutonSel' ) ) {
					vOgIni=j;
				}
		}

		// inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
		if (vOgIni === -1) {
				vOgIni = Math.floor((Onglets.length)*Math.random());
				document.getElementById("classeur"+i+"feuillet"+vOgIni).style.display = "block";
				document.getElementById("classeur"+i+"feuillet"+vOgIni).style.visibility = "visible";
				var vBtElem = document.getElementById("classeur"+i+"onglet"+vOgIni);
				$(Onglet).removeClass("ongletBoutonNonSel");
				$(Onglet).addClass("ongletBoutonSel");
				vBtElem.style.cursor="default";
				vBtElem.style.backgroundColor="inherit";
				vBtElem.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
				vBtElem.style.borderRightColor="inherit";
				vBtElem.style.borderBottomColor="inherit";
				vBtElem.style.borderLeftColor="inherit";
		}
	}
};

$( CadreOngletInitN );
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/

} // Fin du code concernant l'espace de nom 'Utilisateur'


// ESPACE DE NOM 'RÉFÉRENCE'
if ( mw.config.get( 'wgNamespaceNumber' ) === 104 ) {

/*
 * Choix du mode d'affichage des références
 * Devraient en principe se trouver côté serveur
 * @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
 */

// select subsection of special characters
var chooseBibSubset = function (s) {
	var l = document.getElementsByTagName('div');
	for (var i = 0; i < l.length; i++) {
		if (l[i].className === 'BibList') {
			l[i].style.display = s === 0 ? 'block' : 'none';
		} else if (l[i].className === 'WikiNorme') {
			l[i].style.display = s === 1 ? 'block' : 'none';
		} else if (l[i].className === 'BibTeX') {
			l[i].style.display = s === 2 ? 'block' : 'none';
		} else if (l[i].className === 'ISBD') {
			l[i].style.display = s === 3 ? 'block' : 'none';
		} else if (l[i].className === 'ISO690') {
			l[i].style.display = s === 4 ? 'block' : 'none';
		}
	}
};

var addBibSubsetMenu = function () {
	var specialBib = document.getElementById('specialBib');
	if (!specialBib) {
		return;
	}

	specialBib.style.display = 'block';
	var menu = '<select style="display:inline;" onChange="chooseBibSubset(selectedIndex)">'
		+ '<option>Liste</option>'
		+ '<option>WikiNorme</option>'
		+ '<option>BibTeX</option>'
		+ '<option>ISBD</option>'
		+ '<option>ISO690</option>'
		+ '</select>';
	specialBib.innerHTML = specialBib.innerHTML + menu;

	/* default subset - try to use a cookie some day */
	chooseBibSubset(0);
};

$( addBibSubsetMenu );
} // Fin du code concernant l'espace de nom 'Référence'

// TOUS LES ESPACES DE NOMS SAUF L'ESPACE PRINCIPAL

/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
/* Plyd - 3 février 2009 */
function Rebours() {
	try {
		if (document.getElementById("rebours")) {
			var destime, Maintenant, Future, Diff, TempsRestantJ, TempsRestantH, TempsRestantM, TempsRestantS, TempsRestant;
			destime = mw.html.escape(document.getElementById("rebours").title).split(";;");
			Maintenant = (new Date ()).getTime();
			Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime();
			Diff = (Future-Maintenant);
			if (Diff < 0) {Diff = 0;}
			TempsRestantJ = Math.floor(Diff/(24*3600*1000));
			TempsRestantH = Math.floor(Diff/(3600*1000)) % 24;
			TempsRestantM = Math.floor(Diff/(60*1000)) % 60;
			TempsRestantS = Math.floor(Diff/1000) % 60;
			TempsRestant = "" + destime[6] + " ";
			if (TempsRestantJ === 1) {
					TempsRestant = TempsRestant + TempsRestantJ + " jour ";
			} else if (TempsRestantJ > 1) {
					TempsRestant = TempsRestant + TempsRestantJ + " jours ";
			}
			TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s";
			document.getElementById("rebours").innerHTML = TempsRestant;
			setTimeout( function () { Rebours(); }, 1000);
		}
	} catch (e) {}
}

// Personnalisation des liens dans les pages d'aide selon un paramètre de l'URL.
// Utilisé par Modèle:Brouillon.
function ReplaceSourcePageInLinks() {
	var match = window.location.search.match( /[?&]sourcepage=([^&]*)/ );
	if ( !match ) {
		return;
	}
	var page = decodeURIComponent( match[1] );
	$( '.sourcepage-subst a' ).each( function() {
		if ( /^(https?:)?\/\/[^/]+\.wikipedia\.org\//.test( this.href ) ) {
			this.href = this.href.replace( 'TITRE-A-REMPLACER', encodeURIComponent( page ) );
		}
	} );
}

if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) {
	$( Rebours );
	$( ReplaceSourcePageInLinks );
}

/**
 * Ajoute la date de dernière modification sur le bandeau événement récent
 */
function LastModCopy( $ ) {
	var lastmodcopy = $( '.lastmodcopy' );
	if ( lastmodcopy.length ) {
		// L'id change entre Vector d'une part, Monobook et Modern d'autre part ; Cologneblue non supporté
		lastmodcopy.html( $( '#footer-info-lastmod' ).html() || $( '#lastmod' ).html() );
	}
}
$( LastModCopy );


/*********************************/
/* Autres fonctions non classées */
/*********************************/

/*
* Fonction
*
* Retourne une chaîne de caractères de la date courante selon dans un certain format
* @param format Format de la date "j" pour le jour, "m" pour le mois et "a" pour l'année. Ainsi si l'on est le 21 novembre 2007 et l'on passe en paramètre cette chaîne "a_m_d", la chaîne retournée sera "2007_novembre_21"
* Auteur : Sanao
* Dernière révision : 21 novembre 2007
*/
function getStrDateToday(format) {
	var str_mois = [
		"janvier",
		"février",
		"mars",
		"avril",
		"mai",
		"juin",
		"juillet",
		"août",
		"septembre",
		"octobre",
		"novembre",
		"décembre"
	];

	var today = new Date();
	var day = today.getDate();
	var year = today.getYear();
	if (year < 2000) {
		year = year + 1900;
	}
	var str_date = format;

	//Création de la chaîne
	var regex = /j/gi;
	str_date = str_date.replace(regex, day.toString());
	regex = /a/gi;
	str_date = str_date.replace(regex, year.toString());
	regex = /m/gi;
	str_date = str_date.replace(regex, str_mois[today.getMonth()]);

	return (str_date);
}