MediaWiki:Common.js : Différence entre versions

De NVCwiki
Aller à : navigation, rechercher
(Annulation des modifications 15467 de Dieudo (discussion))
 
Ligne 1 : Ligne 1 :
/**
+
/*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.
 
  * 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
 
  * ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre
  * monobook.js. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des
+
  * 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 !
 
  * visiteurs), même plusieurs heures après la modification !
  *  
+
  *
 
  * Prière de ranger les nouvelles fonctions dans les sections adaptées :
 
  * Prière de ranger les nouvelles fonctions dans les sections adaptées :
 
  * - Fonctions JavaScript
 
  * - Fonctions JavaScript
Ligne 12 : Ligne 14 :
 
  * - Applications qui peuvent être utilisées sur toute page
 
  * - Applications qui peuvent être utilisées sur toute page
 
  * - Applications spécifiques à un espace de nom ou une 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
 
  * <nowiki> /!\ Ne pas retirer cette balise
 
  */
 
  */
 
 
  
 
/*************************************************************/
 
/*************************************************************/
Ligne 26 : Ligne 28 :
 
  * insertAfter : insérer un élément dans une page
 
  * insertAfter : insérer un élément dans une page
 
  */
 
  */
function insertAfter(parent, node, referenceNode) {
+
mw.log.deprecate( window, 'insertAfter', function ( parent, node, referenceNode ) {
  parent.insertBefore(node, referenceNode.nextSibling);  
+
parent.insertBefore( node, referenceNode.nextSibling );
}
+
}, 'Use jQuery\'s .after() or .insertAfter() instead.' );
  
 
/**
 
/**
 
  * getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
 
  * getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
 
  */
 
  */
function getElementsByClass(searchClass, node, tag) {
+
mw.log.deprecate( window, 'getElementsByClass', function ( searchClass, node, tag ) {
  if (node == null) node = document;
+
if ( !node ) {
  if (tag == null) tag = '*';
+
node = document;
  return getElementsByClassName(node, tag, searchClass);
+
}
}
+
if ( !tag ) {
 +
tag = '*';
 +
}
 +
return $.makeArray( $( node ).find( tag + '.' + searchClass ) );
 +
}, 'Use $( \'.someClass\' ) or $( element ).find( \'.someClass\' ) instead.' );
  
 
/**
 
/**
 
  * Diverses fonctions manipulant les classes
 
  * Diverses fonctions manipulant les classes
 
  * Utilise des expressions régulières et un cache pour de meilleures perfs
 
  * Utilise des expressions régulières et un cache pour de meilleures perfs
* isClass et whichClass depuis http://fr.wikibooks.org/w/index.php?title=MediaWiki:Common.js&oldid=140211
+
  * hasClass, addClass et removeClass depuis http://drupal.org.in/doc/misc/drupal.js.source.html
  * hasClass, addClass, removeClass et eregReplace depuis http://drupal.org.in/doc/misc/drupal.js.source.html
 
 
  * surveiller l'implémentation de .classList http://www.w3.org/TR/2008/WD-html5-diff-20080122/#htmlelement-extensions
 
  * surveiller l'implémentation de .classList http://www.w3.org/TR/2008/WD-html5-diff-20080122/#htmlelement-extensions
 
  */
 
  */
function isClass(element, classe) {
 
    return hasClass(element, classe);
 
}
 
  
function whichClass(element, classes) {
+
mw.log.deprecate( window, 'hasClass', function ( node, className ) {
    var s=" "+element.className+" ";
+
return $( node ).hasClass( className );
    for(var i=0;i<classes.length;i++)
+
}, 'Use $( element ).hasClass( \'class\' ) instead.' );
        if (s.indexOf(" "+classes[i]+" ")>=0) return i;
+
 
    return -1;
+
 
}
+
mw.log.deprecate( window, 'addClass', function ( node, className ) {
+
if ( $( node ).hasClass( className ) ) {
function hasClass(node, className) {
+
return false;
  if (node.className == className) {
+
}
    return true;
+
var cache = node.className;
  }
+
if ( cache ) {
  var reg = new RegExp('(^| )'+ className +'($| )')
+
node.className = cache + ' ' + className;
  if (reg.test(node.className)) {
+
} else {
    return true;
+
node.className = className;
  }
+
}
  return false;
+
return true;
}
+
}, 'Use $( element ).addClass( \'className\' ) instead.' );
+
 
function addClass(node, className) {
+
mw.log.deprecate( window, 'removeClass', function ( node, className ) {
    if (hasClass(node, className)) {
+
if ( ! $( node ).hasClass( className ) ) {
        return false;
+
return false;
    }
+
}
    node.className += ' '+ className;
+
node.className = eregReplace( '(^|\\s+)'+ className +'($|\\s+)', ' ', node.className );
    return true;
+
return true;
}
+
}, 'Use $( element ).removeClass( \'className\' ) instead.' );
+
 
function removeClass(node, className) {
+
/* petites fonctions pratiques - Darkoneko, 09/01/2008 */
  if (!hasClass(node, className)) {
+
 
    return false;
+
//créé un lien et le retourne.
  }
+
//le parametre onclick est facultatif.
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
+
window.createAdressNode = function ( href, texte, onclick ) {
  return true;
+
var a = document.createElement('a');
}
+
a.href = href;
 +
a.appendChild(document.createTextNode( texte ) );
 +
if (arguments.length === 3) {
 +
a.setAttribute("onclick", onclick );
 +
}
  
function eregReplace(search, replace, subject) {
+
return a;
    return subject.replace(new RegExp(search,'g'), replace);
+
};
}
 
  
 +
//Créé un cookie. il n'existais qu'une version dédiée à l'accueil. Celle ci est plus générique
 +
//le parametre duree est en jours
 +
window.setCookie = function ( nom, valeur, duree ) {
 +
var expDate = new Date();
 +
expDate.setTime(expDate.getTime() + ( duree * 24 * 60 * 60 * 1000));
 +
document.cookie = nom + "=" + escape(valeur) + ";expires=" + expDate.toGMTString() + ";path=/";
 +
};
  
 
/**
 
/**
 
  * Récupère la valeur du cookie
 
  * Récupère la valeur du cookie
 
  */
 
  */
function getCookieVal(name) {
+
window.getCookieVal = function ( name ) {
  var cookiePos = document.cookie.indexOf(name + "=");
+
var cookiePos = document.cookie.indexOf(name + "=");
  var cookieValue = false;
+
var cookieValue = false;
  if (cookiePos > -1) {
+
if (cookiePos > -1) {
    cookiePos += name.length + 1;
+
cookiePos += name.length + 1;
    var endPos = document.cookie.indexOf(";", cookiePos);
+
var endPos = document.cookie.indexOf(";", cookiePos);
    if (endPos > -1)
+
if (endPos > -1) {
      cookieValue = document.cookie.substring(cookiePos, endPos);
+
cookieValue = document.cookie.substring(cookiePos, endPos);
    else
+
} else {
      cookieValue = document.cookie.substring(cookiePos);
+
cookieValue = document.cookie.substring(cookiePos);
  }
+
}
  return cookieValue;
+
}
}
+
return cookieValue;
 +
};
  
 
// Récupère proprement le contenu textuel d'un noeud et de ses noeuds descendants
 
// Récupère proprement le contenu textuel d'un noeud et de ses noeuds descendants
 
// Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC
 
// Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC
function getTextContent(oNode) {
+
window.getTextContent = function ( oNode ) {
  if (typeof(oNode.textContent)!="undefined") {return oNode.textContent;}
+
if ( !oNode ) {
  switch (oNode.nodeType) {
+
return null;
    case 3: // TEXT_NODE
+
}
    case 4: // CDATA_SECTION_NODE
+
if ( typeof oNode.textContent !== "undefined" ) {
      return oNode.nodeValue;
+
return oNode.textContent;
      break;
+
}
    case 7: // PROCESSING_INSTRUCTION_NODE
+
switch ( oNode.nodeType ) {
    case 8: // COMMENT_NODE
+
case 3: // TEXT_NODE
      if (getTextContent.caller!=getTextContent) {
+
case 4: // CDATA_SECTION_NODE
        return oNode.nodeValue;
+
return oNode.nodeValue;
      }
+
case 7: // PROCESSING_INSTRUCTION_NODE
      break;
+
case 8: // COMMENT_NODE
    case 9: // DOCUMENT_NODE
+
if ( getTextContent.caller !== getTextContent ) {
    case 10: // DOCUMENT_TYPE_NODE
+
return oNode.nodeValue;
    case 12: // NOTATION_NODE
+
}
      return null;
+
break;
      break;
+
case 9: // DOCUMENT_NODE
  }
+
case 10: // DOCUMENT_TYPE_NODE
  var _textContent = "";
+
case 12: // NOTATION_NODE
  oNode = oNode.firstChild;
+
return null;
  while (oNode) {
+
}
    _textContent += getTextContent(oNode);
+
var _textContent = "";
    oNode = oNode.nextSibling;
+
oNode = oNode.firstChild;
  }
+
while ( oNode ) {
  return _textContent;
+
_textContent += getTextContent( oNode );
 +
oNode = oNode.nextSibling;
 +
}
 +
return _textContent;
 +
};
 +
 
 +
if ( !String.prototype.HTMLize ) {
 +
String.prototype.HTMLize = function() {
 +
var chars = [ '&', '<', '>', '"' ];
 +
var entities = [ 'amp', 'lt', 'gt', 'quot' ];
 +
var string = this;
 +
for ( var i = 0; i < chars.length; i++ ) {
 +
var regex = new RegExp( chars[ i ], 'g' );
 +
string = string.replace( regex, '&' + entities[ i ] + ';' );
 +
}
 +
return string;
 +
};
 
}
 
}
  
// Array.indexOf : recherche un élément dans un tableau
 
 
if(!Array.indexOf){
 
    Array.prototype.indexOf = function(obj){
 
        for(var i=0; i<this.length; i++){
 
            if(this[i]==obj){
 
                return i;
 
            }
 
        }
 
        return -1;
 
    }
 
}
 
  
 
/**********************************************************************************************************/
 
/**********************************************************************************************************/
 
/* Fonctions générales MediaWiki (pallient les limitations du logiciel)                                  */
 
/* Fonctions générales MediaWiki (pallient les limitations du logiciel)                                  */
/* Surveiller : http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/skins/common/wikibits.js?view=log */
+
/* Surveiller : https://git.wikimedia.org/history/mediawiki%2Fcore.git/HEAD/skins%2Fcommon%2Fwikibits.js  */
 
/**********************************************************************************************************/
 
/**********************************************************************************************************/
  
 
/*
 
/*
 
  * Fonction générales de lancement de fonctions ou de script
 
  * Fonction générales de lancement de fonctions ou de script
  * DÉPRÉCIÉ : utiliser addOnloadHook simplement
+
  * DÉPRÉCIÉ : utiliser $( func ) qui fait partie de jQuery
 
  */
 
  */
function addLoadEvent(func) {
+
mw.log.deprecate( window, 'addLoadEvent', function ( hookFunct ) {
  addOnloadHook(func);
+
$( function() {
}
+
hookFunct();
 +
} );
 +
}, 'Use jQuery instead.' );
  
 
/**
 
/**
  * Insérer un JavaScript d'une page particulière, idée de Mickachu
+
  * Insérer un JavaScript d'une page particulière
  * DÉPRÉCIÉ : utiliser importScript qui fait partie du logiciel
+
  * DÉPRÉCIÉ : utiliser importScript( page ) qui fait partie de MediaWiki
 
  */
 
  */
function loadJs(page) {
+
mw.log.deprecate( window, 'loadJs', importScript, 'Use importScript instead.' );
  importScript(page);
 
}
 
  
 
/**
 
/**
 
  * Projet JavaScript
 
  * Projet JavaScript
 
  */
 
  */
function obtenir(name) {
+
window.obtenir = function ( name ) {
  importScript('MediaWiki:Gadget-' + name + '.js');
+
importScript( 'MediaWiki:Gadget-' + name + '.js' );
}
+
};
  
 
/**
 
/**
 
  * Transformer les pages du Bistro, du BA et les pages spécifiées en page de discussion
 
  * Transformer les pages du Bistro, du BA et les pages spécifiées en page de discussion
 
  */
 
  */
function TransformeEnDiscussion() {
+
function TransformeEnDiscussion( $ ) {
  if( (wgPageName.search('Wikipédia:Le_Bistro') != -1)
+
if (
    || (wgPageName.search('Wikipédia:Bulletin_des_administrateurs') != -1)
+
/^Wikipédia:(Le_Bistro|Bulletin_des_administrateurs|Questions_techniques)/.test( mw.config.get( 'wgPageName' ) ) ||
    || document.getElementById('transformeEnPageDeDiscussion')) {
+
$( '#transformeEnPageDeDiscussion' ).length
    removeClass(document.body, 'ns-subject');
+
) {
    addClass(document.body, 'ns-talk');
+
$( 'body' ).removeClass( 'ns-subject' ).addClass( 'ns-talk' );
  }
+
}
}
 
addOnloadHook(TransformeEnDiscussion);
 
 
 
/**
 
* Transformer certaines pages en pseudo-article
 
* c'est raisonnable ? --Tavernier
 
*/
 
function TransformeEnArticle() {
 
  var transformeEnA = document.getElementById("transformeEnArticle");
 
  if(transformeEnA) document.body.className = "ns-0";
 
 
}
 
}
addOnloadHook(TransformeEnArticle);
+
$( TransformeEnDiscussion );
  
 
/**
 
/**
 
  * Ajouter un bouton à la fin de la barre d'outils
 
  * Ajouter un bouton à la fin de la barre d'outils
 
  */
 
  */
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
+
if ( typeof addCustomButton === 'undefined' ) {
  mwCustomEditButtons[mwCustomEditButtons.length] =
+
mw.log.deprecate( window, 'addCustomButton', function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
    {"imageId": imageId,
+
if ( mw.toolbar ) {
    "imageFile": imageFile,
+
mw.toolbar.addButton( {
    "speedTip": speedTip,
+
imageFile: imageFile.replace( /^http:(\/\/upload\.wikimedia\.org\/)/, '$1' ),
    "tagOpen": tagOpen,
+
speedTip: speedTip,
    "tagClose": tagClose,
+
tagOpen: tagOpen,
    "sampleText": sampleText};
+
tagClose: tagClose,
 +
sampleText: sampleText,
 +
imageId: imageId
 +
} );
 +
}
 +
}, 'Use mw.toolbar.addButton instead.' );
 
}
 
}
 
  
  
Ligne 223 : Ligne 234 :
 
  * Voir MediaWiki:Common.js/edit.js pour ces fonctions
 
  * Voir MediaWiki:Common.js/edit.js pour ces fonctions
 
  */
 
  */
if( wgAction == 'edit' || wgAction == 'submit' ) {
+
if ( ['edit','submit'].indexOf(mw.config.get('wgAction')) !== -1 ) {
  importScript( 'MediaWiki:Common.js/edit.js' );
+
importScript( 'MediaWiki:Common.js/edit.js' );
}
 
 
 
/**
 
* Liens d'accès directs pour la navigation au clavier
 
*/
 
function showSkipLinks() {
 
  var jump_to_nav = document.getElementById('jump-to-nav');
 
  if( !jump_to_nav ) return;
 
  var skip_links = jump_to_nav.getElementsByTagName('A')[0];
 
  jump_to_nav.className='hidden';
 
  skip_links.onfocus=function() {
 
    jump_to_nav.className='';
 
  }
 
 
}
 
}
addOnloadHook(showSkipLinks);
 
  
 
/**
 
/**
Ligne 245 : Ligne 242 :
 
  *
 
  *
 
  * Fonction utilisée par [[Modèle:Titre incorrect]]
 
  * Fonction utilisée par [[Modèle:Titre incorrect]]
  *  
+
  *
 
  * La fonction cherche un bandeau de la forme
 
  * La fonction cherche un bandeau de la forme
 
  * <div id="RealTitleBanner">
 
  * <div id="RealTitleBanner">
Ligne 253 : Ligne 250 :
 
  * Un élément comportant id="DisableRealTitle" désactive la fonction
 
  * Un élément comportant id="DisableRealTitle" désactive la fonction
 
  */
 
  */
function rewritePageH1() {
+
function rewritePageTitle( $ ) {
  var realTitleBanner = document.getElementById('RealTitleBanner');
+
var $realTitle, titleText, $h1,
  if (realTitleBanner) {
+
$realTitleBanner = $( '#RealTitleBanner' );
    if (!document.getElementById('DisableRealTitle')) {
+
if ( $realTitleBanner.length && !$( '#DisableRealTitle' ).length ) {
      var realTitle = document.getElementById('RealTitle');
+
$realTitle = $( '#RealTitle' );
      var h1 = document.getElementById('firstHeading');
+
$h1 = $( 'h1:first' );
      if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
+
if ( $realTitle.length && $h1.length ) {
      var realH1 = getTextContent(h1);    
+
titleText = $realTitle.html();
      if (realTitle && h1) {
+
if ( titleText === '' ) {
        var titleText = realTitle.innerHTML;
+
$h1.hide();
        if (titleText == '') h1.style.display = 'none';
+
} else {
        else h1.innerHTML = titleText;
+
$h1.html( titleText );
        realTitleBanner.style.display = 'none';
+
if ( mw.config.get('wgAction') === 'view' && $realTitle.children().length === 0 ) {
        if(wgNamespaceNumber==0 || wgNamespaceNumber==10) {
+
document.title = $realTitle.text() + " — Wikipédia";
          var avert = document.createElement('p')
+
}
          avert.style.fontSize = '90%';
+
}
          avert.innerHTML = 'Titre à utiliser pour créer un lien interne : <b>'+realH1+'</b>';
+
$realTitleBanner.hide();
          insertAfter(document.getElementById('content'),avert,h1);
+
$( '<p>' ).css( 'font-size', '80%' )
        }
+
.html( 'Titre à utiliser pour créer un lien interne : <b>' + mw.config.get('wgPageName').replace( /_/g, ' ' ) + '</b>' )
 
+
.insertAfter( $h1 );
      }
+
}
    }
+
}
  }
 
}
 
addOnloadHook(rewritePageH1);
 
 
 
/**
 
* Icônes de titre
 
*
 
* Cherche les icônes de titre (class="icone_de_titre") et les
 
* déplace à droite du titre de la page.
 
* Doit être exécuté après une éventuelle correction de titre.
 
*/
 
function IconesDeTitre() {
 
  var h1 = document.getElementById('firstHeading');
 
  if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
 
  if(!h1) return;
 
  var icones = getElementsByClass( "icone_de_titre", document, "div" );
 
  for( var j = icones.length; j > 0; --j ){
 
    icones[j-1].style.display = "block"; /* annule display:none par défaut */
 
    icones[j-1].style.borderWidth = "1px";
 
    icones[j-1].style.borderStyle = "solid";
 
    icones[j-1].style.borderColor = "white";
 
    if(( skin == "modern" )||( skin == "vector" )){
 
      icones[j-1].style.marginTop = "0em";
 
    }
 
    h1.parentNode.insertBefore(icones[j-1], h1); /* déplacement de l'élément */
 
  }
 
 
}
 
}
addOnloadHook(IconesDeTitre);
+
$( rewritePageTitle );
  
/**
 
* Déplacement de coordonnées qui apparaissent en haut de la page
 
*/
 
function moveCoord() {
 
  var h1 = document.getElementById('firstHeading');
 
  if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
 
  var coord = document.getElementById('coordinates');
 
  if ( !coord || !h1 ) return;
 
  coord.id = "coordinates-title";
 
  h1.parentNode.insertBefore(coord, h1); /* déplacement de l'élément */
 
}
 
addOnloadHook(moveCoord);
 
  
 
/**
 
/**
Ligne 321 : Ligne 280 :
 
  *
 
  *
 
  * Fonction utilisée par [[Modèle:Sous-titre]]
 
  * Fonction utilisée par [[Modèle:Sous-titre]]
  *  
+
  *
 
  * La fonction cherche un élément de la forme
 
  * La fonction cherche un élément de la forme
 
  * <span id="sous_titre_h1">Sous-titre</span>
 
  * <span id="sous_titre_h1">Sous-titre</span>
*
 
* Doit être exécutée après les fonctions d'icônes de titre
 
 
  */
 
  */
  
function sousTitreH1() {
+
function sousTitreH1( $content ) {
  var span= document.getElementById('sous_titre_h1');
+
$( '#firstHeading > #sous_titre_h1' ).remove();
  var title=document.getElementById('firstHeading');
+
var $span = $content.find( '#sous_titre_h1' );
  if(!title) title = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
+
if ( $span.length ) {
  if (span && title) {
+
$span.prepend( ' ' );
      var subtitle=span.cloneNode(true);
+
$( '#firstHeading' ).append( $span );
      title.appendChild(document.createTextNode(' '));
+
}
      title.appendChild(subtitle);
 
      span.parentNode.removeChild(span);
 
  }
 
 
}
 
}
addOnloadHook(sousTitreH1);
+
mw.hook( 'wikipage.content' ).add( sousTitreH1 );
 +
 
  
 
/**
 
/**
* Déplacement des [modifier]
 
*
 
* Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki.
 
* Ce script devrait pouvoir être supprimé lorsque le [[bugzilla:11555]] sera résolu (comportement équivalent)
 
*
 
* Copyright 2006, Marc Mongenet. Licence GPL et GFDL.
 
*
 
* The function looks for <span class="editsection">, and move them
 
* at the end of their parent and display them inline in small font.
 
* var oldEditsectionLinks=true disables the function.
 
*/
 
function setModifySectionStyle()
 
{
 
 
        var process = function(list)
 
        {
 
                for(var i=0;i!=list.length;i++)
 
                {
 
                        var span=list[i].firstChild
 
 
                        if (span.className == "editsection")
 
                        {
 
                                span.style.fontSize = "x-small";
 
                                span.style.fontWeight = "normal";
 
                                span.style.cssFloat = span.style.styleFloat = "none";
 
                                span.parentNode.appendChild(document.createTextNode(" "));
 
                                span.parentNode.appendChild(span);
 
                        }
 
                }
 
        }
 
 
        try
 
        {
 
                if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
 
                process(document.getElementsByTagName("h2"));
 
                process(document.getElementsByTagName("h3"));
 
                process(document.getElementsByTagName("h4"));
 
                process(document.getElementsByTagName("h5"));
 
                process(document.getElementsByTagName("h6"));
 
 
        }
 
        catch (e) { }
 
}
 
addOnloadHook(setModifySectionStyle);
 
 
/**
 
 
  * 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 expandCaption = '[Dérouler]';
 
  
function collapseTable( tableIndex ) {
+
var Palette_Enrouler = '[masquer]';
  var Button = document.getElementById( "collapseButton" + tableIndex );
+
var Palette_Derouler = '[afficher]';
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
 
  if ( !Table || !Button ) return false;
 
  
  var Rows = Table.getElementsByTagName( "tr" );  
+
var Palette_max = 1;
  
  if ( Button.firstChild.data == collapseCaption ) {
+
function Palette_toggle( $table ) {
    for ( var i = 1; i < Rows.length; i++ ) {
+
$table.find( 'tr:not(:first)' ).toggleClass( 'navboxHidden' );
      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" );
+
}
 +
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 );
  
  for ( var i = 0; i < Tables.length; i++ ) {
+
var group = table.getAttribute('data-autocollapse-group') || '__default__';
    if ( hasClass( Tables[i], "collapsible" ) ) {
+
var autoCollapse = groups[group] > Palette_max;
      NavigationBoxes[ tableIndex ] = Tables[i];
+
var collapsed = $table.hasClass( 'collapsed' ) || ( autoCollapse && $table.hasClass( 'autocollapse' ) );
      Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
  
      var Button    = document.createElement( "span" );
+
$table.find( 'tr:first th:first' ).prepend(
      var ButtonLink = document.createElement( "a" );
+
$( '<span class="navboxToggle">\u00a0</span>' ).append(
      var ButtonText = document.createTextNode( collapseCaption );
+
$( '<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 );
 +
}
 +
} );
 +
}
 +
$( function() {
 +
Palette();
 +
} );
  
      Button.style.styleFloat = "right";
 
      Button.style.cssFloat = "right";
 
      Button.style.fontWeight = "normal";
 
      Button.style.textAlign = "right";
 
      Button.style.width = "6em";
 
  
      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
+
/**
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
+
* Pour [[Modèle:Boîte déroulante]]
      ButtonLink.appendChild( ButtonText );
+
*/
  
      Button.appendChild( ButtonLink );
+
var BoiteDeroulante_Enrouler = '[masquer]';
 +
var BoiteDeroulante_Derouler = '[afficher]';
 +
var BoiteDeroulante_max = 0;
 +
var BoiteDeroulante_index = -1;
  
      var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
+
function BoiteDeroulante_toggle(indexBoiteDeroulante){
      /* only add button and increment count if there is a header row to work with */
+
var a, m;
      if (Header) {
+
var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
        Header.insertBefore( Button, Header.childNodes[0] );
+
var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
        tableIndex++;
+
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;
  
  for (var i = 0; i < tableIndex; i++) {
+
var Contents = NavFrame.getElementsByTagName('div');
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
+
if ( NavToggle.innerHTML === caption[1] ) {
  }
+
NavToggle.innerHTML = caption[0];
 +
for ( a=0, m=Contents.length; a<m; a++ ) {
 +
if ( $( Contents[a] ).hasClass( 'NavContent' ) ) {
 +
Contents[a].style.display = 'none';
 +
return;
 +
}
 +
}
 +
} else {
 +
NavToggle.innerHTML = caption[1];
 +
for ( a=0, m=Contents.length; a<m; a++ ) {
 +
if ( $(Contents[a]).hasClass("NavContent") ) {
 +
Contents[a].style.display = 'block';
 +
return;
 +
}
 +
}
 +
}
 
}
 
}
addOnloadHook(createCollapseButtons);
 
  
/**
+
function BoiteDeroulante(Element){
* Pour [[Modèle:Boîte déroulante]]
+
if (!Element) {
*/
+
Element = document;
var NavigationBarShowDefault = 0;
+
}
+
var i, l, Enrouler, Derouler, CaptionContainer, NavToggle, NavToggleText, NavFrame;
function toggleNavigationBar(indexNavigationBar) {
+
var NavFrameCount = -1;
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
+
var NavFrames = Element.getElementsByTagName("div");
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
+
for ( i=0, l=NavFrames.length; i<l; i++ ){
+
if ( $( NavFrames[i] ).hasClass( 'NavFrame' ) ){
  if (!NavFrame || !NavToggle) return;
+
NavFrame = NavFrames[i];
+
NavFrameCount++;
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
+
BoiteDeroulante_index++;
  // exemple : title="[déroulade]/[enroulade]"
+
 
  var caption = [expandCaption, collapseCaption];
+
if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) {
  if (NavFrame.title && NavFrame.title.length > 0) {
+
Enrouler = NavFrame.title.HTMLize().split("/")[1];
    caption = NavFrame.title.split("/");
+
Derouler = NavFrame.title.HTMLize().split("/")[0];
    if (caption.length < 2) caption.push(collapseCaption);
+
} else {
  }
+
Enrouler = BoiteDeroulante_Enrouler;
+
Derouler = BoiteDeroulante_Derouler;
  // if shown now
+
}
  if (NavToggle.firstChild.data == caption[1]) {
+
NavFrame.title='';
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
+
CaptionContainer = document.createElement('span');
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
+
CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
+
CaptionContainer.style.display = "none";
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
+
CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
    }
+
NavFrame.appendChild(CaptionContainer);
+
 
  // if hidden now
+
NavToggle = document.createElement("a");
  } else if (NavToggle.firstChild.data == caption[0]) {
+
NavToggle.className = 'NavToggle';
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
+
NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
+
NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
+
NavToggleText = document.createTextNode(Enrouler);
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
+
NavToggle.appendChild(NavToggleText);
    }
+
 
  }
+
NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
 +
NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
 +
if (BoiteDeroulante_max <= NavFrameCount) {
 +
BoiteDeroulante_toggle(BoiteDeroulante_index);
 +
}
 +
}
 +
}
 +
 
 
}
 
}
 
// adds show/hide-button to navigation bars
 
function createNavigationBarToggleButton() {
 
  var indexNavigationBar = 0;
 
  var NavFrame;
 
  // iterate over all < div >-elements
 
  for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) {
 
    // if found a navigation bar
 
    if (hasClass(NavFrame, "NavFrame")) {
 
      indexNavigationBar++;
 
      var NavToggle = document.createElement("a");
 
      NavToggle.className = 'NavToggle';
 
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
 
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
 
      // surcharge des libellés dérouler/enrouler grâce a l'attribut title
 
      var caption = collapseCaption;
 
      if (NavFrame.title && NavFrame.title.indexOf("/") > 0) {
 
        caption = NavFrame.title.split("/")[1];
 
      }
 
  
      var NavToggleText = document.createTextNode(caption);
+
mw.hook( 'wikipage.content' ).add( function() {
      NavToggle.appendChild(NavToggleText);
+
BoiteDeroulante();
+
} );
      // add NavToggle-Button as first div-element
 
      // in <div class="NavFrame">
 
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
 
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
 
    }
 
  }
 
  // if more Navigation Bars found than Default: hide all
 
  if (NavigationBarShowDefault < indexNavigationBar) {
 
    for( var i=1; i<=indexNavigationBar; i++ ) {
 
      toggleNavigationBar(i);
 
    }
 
  }
 
}
 
addOnloadHook(createNavigationBarToggleButton);
 
  
 
/**
 
/**
  * WikiMiniAtlas
+
  * Utilisation du modèle Modèle:Animation
*
 
* voir WP:WMA
 
 
  */
 
  */
if (wgServer == "https://secure.wikimedia.org") {
 
  var metaBase = "https://secure.wikimedia.org/wikipedia/meta";
 
} else {
 
  var metaBase = "http://meta.wikimedia.org";
 
}
 
importScriptURI(metaBase+"/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400")
 
  
var wma_settings = {  
+
var Diaporama = {};
  buttonImage: 'http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Geographylogo.svg/18px-Geographylogo.svg.png'
+
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;
 +
}
 +
var Diaporamas = $( node ).find( 'div.diaporama' ).get();
 +
for (var a=0, l=Diaporamas.length; a<l; a++) {
 +
Diaporama.Fonctions.InitDiaporama(Diaporamas[a]);
 +
}
 +
};
 +
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.split("px").join("");
 +
} 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 = DiaporamaDiv.className.HTMLize();
 +
var ParamDelay = DiaporamaDivClass.match(/Delay[0-9]+(\.|,)?[0-9]*/);
 +
if (ParamDelay !== null) {
 +
ParamDelay = parseFloat(ParamDelay[0].split("Delay").join("").split(",").join("."));
 +
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){
* Utilisation du modèle Modèle:Images
+
Diaporama.Params.Paused[index] = true;
*/
+
clearTimeout(Diaporama.Params.Timeout[index]);
function toggleImage(group, remindex, shwindex) {
+
Diaporama.Fonctions.ShowThisDiapo(index, 0);
  document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
+
var ButtonPlay = document.getElementById("DiaporamaPlay"+index);
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
+
ButtonPlay.style.backgroundColor = "white";
}
+
var ButtonPause = document.getElementById("DiaporamaPause"+index);
 +
ButtonPause.style.backgroundColor = "white";
 +
var ButtonStop = document.getElementById("DiaporamaStop"+index);
 +
ButtonStop.style.backgroundColor = "silver";
 +
};
  
function imageGroup(){
+
Diaporama.Fonctions.ToggleDiapo = function(index, diff){
  if (document.URL.match(/printable/g)) return;
+
clearTimeout(Diaporama.Params.Timeout[index]);
  var bc=document.getElementById("bodyContent");
+
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
  if( !bc ) bc = document.getElementById("mw_contentholder");
+
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
  if( !bc ) bc = document.getElementById("article");
+
var VisibleIndex = Diaporama.Params.Visible[index];
  if( !bc ) return;
+
var NextDiaporamaIndex = (VisibleIndex+diff);
  var divs=bc.getElementsByTagName("div");
+
if (NextDiaporamaIndex === DiaporamaFiles.length || NextDiaporamaIndex < 0) {
  var i = 0, j = 0;
+
var DiaporamaDiv = document.getElementById("Diaporama_"+index);
  var units, search;
+
if ( diff < 0 || ! $( DiaporamaDiv ).hasClass( 'AutoLoop' ) ) {
  var currentimage;
+
return;
  var UnitNode;
+
}
  for (i = 0; i < divs.length ; i++) {
+
NextDiaporamaIndex = 0;
    if (divs[i].className != "ImageGroup") continue;
+
}
    UnitNode=undefined;
+
Diaporama.Fonctions.ShowThisDiapo(index, NextDiaporamaIndex);
    search=divs[i].getElementsByTagName("div");
+
};
    for (j = 0; j < search.length ; j++) {
 
      if (search[j].className != "ImageGroupUnits") continue;
 
      UnitNode=search[j];
 
      break;
 
    }
 
    if (UnitNode==undefined) continue;
 
    units=Array();
 
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
 
      var temp = UnitNode.childNodes[j];
 
      if (temp.className=="center") units.push(temp);
 
    }
 
    for (j = 0 ; j < units.length ; j++) {
 
      currentimage=units[j];
 
      currentimage.id="ImageGroupsGr"+i+"Im"+j;
 
      var imghead = document.createElement("div");
 
      var leftlink;
 
      var rightlink;
 
      if (j != 0) {
 
        leftlink = document.createElement("a");
 
        leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
 
        leftlink.innerHTML="◀";
 
      } else {
 
        leftlink = document.createElement("span");
 
        leftlink.innerHTML="&nbsp;";
 
      }
 
      if (j != units.length - 1) {
 
        rightlink = document.createElement("a");
 
        rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
 
        rightlink.innerHTML="▶";
 
      } else {
 
        rightlink = document.createElement("span");
 
        rightlink.innerHTML="&nbsp;";
 
      }
 
      var comment = document.createElement("tt");
 
      comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
 
      with(imghead) {
 
        style.fontSize="110%";
 
        style.fontweight="bold";
 
        appendChild(leftlink);
 
        appendChild(comment);
 
        appendChild(rightlink);
 
      }
 
      currentimage.insertBefore(imghead,currentimage.childNodes[0]);
 
      if (j != 0) currentimage.style.display="none";
 
    }
 
  }
 
}
 
addOnloadHook(imageGroup);
 
  
/**
+
Diaporama.Fonctions.ShowThisDiapo = function(index, Value){
* Ajout d'un style particulier aux liens interlangues vers un bon article ou
+
clearTimeout(Diaporama.Params.Timeout[index]);
* un article de qualité
+
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
*/
+
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
function lienAdQouBAouPdQ() {
+
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);
 +
}
 +
};
  
    if ( document.getElementById( "p-lang" ) ) {
+
Diaporama.Fonctions.CreateSelect = function(index, Title) {
        var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
+
var s, Opt;
+
var Total = Diaporama.Params.Length[index];
        for ( var i = 0; i < InterwikiLinks.length; i++ ) {
+
var Select = document.createElement('select');
            if ( document.getElementById( InterwikiLinks[i].className + "-adq" ) ) {
+
Select.id = "DiaporamaSelect"+index;
                InterwikiLinks[i].className += " AdQ"
+
Select.title = Title;
                InterwikiLinks[i].title = "Lien vers un article de qualité.";
+
for ( s=0; s<Total; s++ ) {
            }
+
Opt = document.createElement('option');
            else if ( document.getElementById( InterwikiLinks[i].className + "-ba" ) ) {
+
if (s === 0) {
                InterwikiLinks[i].className += " BA"
+
Opt.selected = "selected";
                InterwikiLinks[i].title = "Lien vers un bon article.";
+
}
            }
+
Opt.text = (s+1)+"/"+Total;
            else if ( document.getElementById( InterwikiLinks[i].className + "-pdq" ) ) {
+
Opt.innerHTML = (s+1)+"/"+Total;
                InterwikiLinks[i].className += " PdQ"
+
Opt.value = s;
                InterwikiLinks[i].title = "Lien vers un portail de qualité.";
+
Select.appendChild(Opt);
            }
+
}
        }
+
Select.onchange = function(){ Diaporama.Fonctions.SelectDiapo(Diaporama.Fonctions.getIndex(this)); };
    }
+
Select.onmouseover = function(){ this.focus(); };
}
+
return Select;
addOnloadHook(lienAdQouBAouPdQ);
+
};
  
/**
+
Diaporama.Fonctions.SelectDiapo = function(index){
* Redirect vers wikibooks etc.
+
var Select = document.getElementById("DiaporamaSelect"+index);
*
+
if (!Select) {
*/
+
return;
var redirectedFromArticleDatas = new Array(
+
}
  new Array('Wikipédia:Redirect_vers_Wikibooks', 'wikibooks'),
+
var Opts = Select.getElementsByTagName('option');
  new Array('Wikipédia:Redirect_vers_Wikisource', 'wikisource'),
+
for (var o=0, p=Opts.length; o<p; o++) {
  new Array('Wikipédia:Redirect_vers_Wikiversité', 'wikiversity'),
+
if (Opts[o].selected) {
  new Array('Wikipédia:Redirect_vers_Wikiquote', 'wikiquote'),
+
var Value = parseInt(Opts[o].value);
  new Array('Wikipédia:Redirect_vers_Wikinews', 'wikinews'),
+
return Diaporama.Fonctions.ShowThisDiapo(index, Value);
  new Array('Wikipédia:Redirect_vers_Wiktionnaire', 'wiktionary')
+
}
);
+
}
 +
};
  
function redirectedFromArticle() {
+
Diaporama.Fonctions.UpdateSelect = function(index){
  if (wgIsArticle == false)
+
var Select = document.getElementById("DiaporamaSelect"+index);
      return;
+
if (!Select) {
  for (var i = 0; i < redirectedFromArticleDatas.length; ++i) {
+
return;
    var page_match = redirectedFromArticleDatas[i];
+
}
    var index = wgPageName.indexOf(page_match[0]);
+
var Opts = Select.getElementsByTagName('option');
    if (index == 0) {
+
for (var o=0, p=Opts.length; o<p; o++){
        var div = document.getElementById('contentSub');
+
if (o === Diaporama.Params.Visible[index]) {
        var span = document.getElementById('redirected_from');
+
Opts[o].selected = "selected";
        // real target is always encoded in the anchor.
+
} else {
        target = window.location.hash;
+
Opts[o].selected = false;
        if (!div || !span || target == '')
+
}
            break;
+
}
 +
};
  
        target = target.slice(1);
+
Diaporama.Fonctions.UpdateBar = function(index){
        // Konqueror 3.5 work around
+
var Percent = (100/(Diaporama.Params.Length[index]-1)) * Diaporama.Params.Visible[index];
        if (target.indexOf('#') == 0)
+
if (Percent>100) {
            target = target.slice(1);
+
Percent = 100;
        target = target.split('.23');
+
}
        target[0] = target[0].replace(/\.([0-9A-Z][0-9A-Z])/g, '%$1');
+
var DiaporamaControl = document.getElementById("DiaporamaControl_"+index);
        var quoted = target[0]
+
var DiaporamaScrollBar = $( DiaporamaControl ).find( 'div.ScrollBar' )[0];
        if (target[1].length)
+
DiaporamaScrollBar.style.width = Percent + "%";
            quoted += '#' + target[1]
+
};
        quoted = quoted.replace(/%2F/g, '/');
 
        var display = target[2]
 
        display = display.replace(/\.([0-9A-Z][0-9A-Z])/g, '%$1');
 
        display = decodeURI(display);
 
        display = display.replace(/_/g, ' ');
 
  
        var e = document.createElement('A');
+
Diaporama.Fonctions.Onclick = function(Link){
        e.href = 'http://fr.' + page_match[1] + '.org/wiki/' + quoted;
+
var Image = Link.getElementsByTagName('img')[0];
        e.innerHTML = display;
+
Image.style.backgroundColor = "gray";
        span.replaceChild(e, span.firstChild);
+
};
        break;
 
    }
 
  }
 
}
 
addOnloadHook(redirectedFromArticle);
 
  
/**
+
Diaporama.Fonctions.Offclick = function(Link, index){
* Déplace les liens portails vers la boite de catégorie
+
var Span = Link.parentNode;
*
+
var Image = Link.getElementsByTagName('img')[0];
* Copyright 2007, fr:user:Aoineko. Licence GFDL et GPL.
+
var DiapoState = Diaporama.Params.Paused[index];
*/
+
if ( ( $( Span ).hasClass( 'Play' ) && DiapoState === false ) || ( ( $( Span ).hasClass( 'Pause' ) || $( Span ).hasClass( 'Stop' ) ) && DiapoState === true ) ){
var gUseMovePortalToCategoryBox = 1;
+
Image.style.backgroundColor = "silver";
 +
} else {
 +
Image.style.backgroundColor = "white";
 +
}
 +
};
  
function movePortalToCategoryBox() {
+
Diaporama.Fonctions.getIndex = function(Element){
  if(!gUseMovePortalToCategoryBox)
+
return parseInt(Element.id.replace(/[^0-9]/g, ""));
      return;
+
};
  
  // search for portails
+
$( function () {
  var div_portal = document.getElementById('portallinks');
+
Diaporama.Fonctions.Init();
  if(div_portal && (div_portal.className == 'movable')) {
+
} );
      div_portal.style.display = 'none'; // hide the portail div
 
      var div_cat = document.getElementById('catlinks'); // get cat div
 
      if(!div_cat) { // no category box ? then create it
 
        var div_foot;
 
        var divs = document.getElementsByTagName('div');
 
        for(var i = 0; i < divs.length ; i++)
 
            if(divs[i].className == 'printfooter')
 
              div_foot = divs[i];
 
        div_cat = document.createElement("div");
 
        div_cat.setAttribute('id', 'catlinks');
 
        div_foot.parentNode.insertBefore(div_cat, div_foot);
 
      }
 
      div_cat.innerHTML = div_portal.innerHTML + '<hr/>' + div_cat.innerHTML;
 
  }
 
}
 
addOnloadHook(movePortalToCategoryBox);
 
  
 
/**
 
/**
 
  * Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) à la manière des boîtes déroulantes
 
  * 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(){
+
function hiddencat( $ ) {
if(document.URL.indexOf("printable=yes")!=-1) return;
+
if (typeof DesactiveHiddenCat !== "undefined" && DesactiveHiddenCat) {
var cl = document.getElementById('catlinks'); if(!cl) return;
+
return;
if( !(hc = document.getElementById('mw-hidden-catlinks')) ) return;
+
}
if( hasClass(hc, 'mw-hidden-cats-user-shown') ) return;
+
if (document.URL.indexOf("printable=yes") !== -1) {
if( hasClass(hc, 'mw-hidden-cats-ns-shown') )   addClass(hc, 'mw-hidden-cats-hidden');
+
return;
var nc = document.getElementById('mw-normal-catlinks');
+
}
if( !nc ) {
+
var cl = document.getElementById('catlinks');
  var catline = document.createElement('div');
+
if (!cl) {
  catline.id = 'mw-normal-catlinks';
+
return;
  var a = document.createElement('a');
+
}
  a.href = '/wiki/Catégorie:Accueil';
+
var $hc = $('#mw-hidden-catlinks');
  a.title = 'Catégorie:Accueil';
+
if ( !$hc.length ) {
  a.appendChild(document.createTextNode('Catégories'));
+
return;
  catline.appendChild(a);
+
}
  catline.appendChild(document.createTextNode(' : '));
+
if ( $hc.hasClass('mw-hidden-cats-user-shown') ) {
  nc = cl.insertBefore(catline, cl.firstChild);
+
return;
}
+
}
else nc.appendChild(document.createTextNode(' | '));
+
if ( $hc.hasClass('mw-hidden-cats-ns-shown') ) {
var lnk = document.createElement('a');
+
$hc.addClass('mw-hidden-cats-hidden');
lnk.id = 'mw-hidden-cats-link';
+
}
lnk.title = 'Cet article contient des catégories cachées';
+
var nc = document.getElementById('mw-normal-catlinks');
lnk.style.cursor = 'pointer';
+
if ( !nc ) {
lnk.style.color = 'black';
+
var catline = document.createElement('div');
lnk.onclick = toggleHiddenCats;
+
catline.id = 'mw-normal-catlinks';
lnk.appendChild(document.createTextNode('[+]'));
+
var a = document.createElement('a');
hclink = nc.appendChild(lnk);
+
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);
 +
} else {
 +
nc.appendChild(document.createTextNode(' | '));
 +
}
 +
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).click(toggleHiddenCats);
 +
lnk.appendChild(document.createTextNode('[+]'));
 +
nc.appendChild(lnk);
 
}
 
}
function toggleHiddenCats(){
+
 
if( hasClass(hc, 'mw-hidden-cats-hidden') ) {
+
function toggleHiddenCats(e) {
  removeClass(hc, 'mw-hidden-cats-hidden');
+
var $hc = $('#mw-hidden-catlinks');
  addClass(hc, 'mw-hidden-cat-user-shown');
+
if ( $hc.hasClass('mw-hidden-cats-hidden') ) {
  changeText(hclink, '[–]');
+
$hc.removeClass('mw-hidden-cats-hidden');
} else {
+
$hc.addClass('mw-hidden-cat-user-shown');
  removeClass(hc, 'mw-hidden-cat-user-shown');
+
$(e.target).text('[–]');
  addClass(hc, 'mw-hidden-cats-hidden');
+
} else {
  changeText(hclink, '[+]');
+
$hc.removeClass('mw-hidden-cat-user-shown');
}
+
$hc.addClass('mw-hidden-cats-hidden');
 +
$(e.target).text('[+]');
 +
}
 
}
 
}
addOnloadHook(hiddencat);
+
 
 +
$( hiddencat );
  
 
/**
 
/**
  * Script pour alterner entre deux cartes de géolocalisation
+
  * Script pour alterner entre plusieurs cartes de géolocalisation
 
  */
 
  */
addOnloadHook(function(){
 
  var cont;
 
  if(!(wgAction=="view" || wgAction=="purge")) return
 
  
  cont=getElementsByClass('img_toogle', document.getElementById('bodyContent'), 'div');
+
function GeoBox_Init(Element){
  if(cont.length==0) return
+
if (!Element) {
 +
Element = document.body;
 +
}
 +
var cont = $( Element ).find( 'div.img_toogle' ).get();
 +
for (var i = 0,m=cont.length; i < m; i++) {
 +
cont[i].id = 'img_toogle_' + i;
 +
var Boxes = $( cont[i] ).find( '.geobox' ).get();
 +
var ToggleLinksDiv = document.createElement('ul');
 +
ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
 +
for (var a=0, l=Boxes.length; a<l; a++){
 +
var ThisBox = Boxes[a];
 +
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 === (l-1)) {
 +
Li.style.display = "none";
 +
} else {
 +
ThisBox.style.display = "none";
 +
}
 +
}
 +
cont[i].appendChild(ToggleLinksDiv);
 +
}
 +
}
  
  for (var i = 0; i < cont.length ; i++) {
+
function GeoBox_Toggle(link){
    cont.box = getElementsByClass('geobox',cont[i]);
+
var a, l;
    cont.box[0].style.display='none';
+
var ImgToggleIndex = link.id.split('geoboxToggle_').join('').replace(/_.*/g, "");
    cont.box[1].style.borderTop='0';
+
var GeoBoxIndex = link.id.replace(/.*_/g, "");
    var toogle = document.createElement('a');
+
var ImageToggle = document.getElementById('img_toogle_' + ImgToggleIndex);
    toogle.appendChild(document.createTextNode(cont.box[0].getElementsByTagName('img')[0].alt));
+
var Links = document.getElementById('geoboxToggleLinks_' + ImgToggleIndex);
    toogle.href='#';
+
var Geobox = document.getElementById('geobox_' + ImgToggleIndex + "_" + GeoBoxIndex);
    toogle.className='a_toogle';
+
var Link = document.getElementById('geoboxToggle_' + ImgToggleIndex + "_" + GeoBoxIndex);
    toogle.status = 1;
+
if ( (!ImageToggle) || (!Links) || (!Geobox) || (!Link) ) {
    toogle.onclick = function() {
+
return;
      this.removeChild(this.firstChild);
+
}
      div0 = getElementsByClass('geobox',this.parentNode)[0];
+
var AllGeoboxes = $( ImageToggle ).find( '.geobox' ).get();
      div1 = getElementsByClass('geobox',this.parentNode)[1];
+
for ( a=0, l=AllGeoboxes.length; a<l; a++ ) {
      alt0 = div0.getElementsByTagName('img')[0].alt;
+
var ThisgeoBox = AllGeoboxes[a];
      alt1 = div1.getElementsByTagName('img')[0].alt;
+
if (ThisgeoBox.id === Geobox.id) {
      if(this.status==0) {
+
ThisgeoBox.style.display = "";
        div0.style.display='none';
+
} else {
        div1.style.display='';
+
ThisgeoBox.style.display = "none";
        this.status=1;
+
}
        this.appendChild(document.createTextNode(alt0));
+
}
      } else {
+
var AllToggleLinks = Links.getElementsByTagName('a');
        div0.style.display='';
+
for (a=0, l=AllToggleLinks.length; a<l; a++) {
        div1.style.display='none';
+
var thisToggleLink = AllToggleLinks[a];
        this.status=0;
+
if (thisToggleLink.id === Link.id){
        this.appendChild(document.createTextNode(alt1));
+
thisToggleLink.parentNode.style.display = "none";
      }
+
}else{
      return false;
+
thisToggleLink.parentNode.style.display = "";
    }
+
}
  cont[i].insertBefore(toogle, cont.box[1].nextSibling);
+
}
  }
+
}
});
+
 
 +
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.
 
  * 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.
 
  * known bug : conflit avec le changement de titre classique.
 
  * Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
 
  * Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
 
  */
 
  */
 
function rewritePageH1bis() {
 
function rewritePageH1bis() {
  try {
+
var helpPage = document.getElementById("helpPage");
    var helpPage = document.getElementById("helpPage");
+
if (helpPage) {
    if (helpPage) {
+
var helpPageURL = document.getElementById("helpPageURL");
      var helpPageURL = document.getElementById("helpPageURL");
+
var h1 = document.getElementById('firstHeading');
      var h1 = document.getElementById('firstHeading');
+
if (helpPageURL && h1) {
      if (helpPageURL && h1) {
+
h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
        h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
+
helpPage.style.display = "none";
        helpPage.style.display = "none";
+
}
      }
+
}
    }
 
  } catch (e) {
 
    /* Something went wrong. */
 
  }
 
 
}
 
}
addOnloadHook(rewritePageH1bis);
+
$( rewritePageH1bis );
  
 
/**
 
/**
  * application de [[Wikipédia:Prise de décision/Système de cache]]
+
  * Configuration du tri des diacritique dans les tables de class "sortable"
* 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
 
 
  */
 
  */
 +
mw.config.set( 'tableSorterCollation', {'à':'a', 'â':'a', 'æ':'ae', 'é':'e', 'è':'e', 'ê':'e', 'î':'i', 'ï':'i', 'ô':'o', 'œ':'oe', 'û':'u', 'ç':'c',  } );
  
addOnloadHook(function () {
+
/**
 +
* 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();
 +
}
 +
} );
 +
} );
  
  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++)
+
/**
    {
+
* Direct imagelinks to Commons
      var chemin = external_links[i].href;
+
*
 
+
* Required modules: mediawiki.RegExp, mediawiki.util
      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)
+
*
      {
+
* @source www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
      var li = external_links[i].parentNode;
+
* @author Krinkle
      if (li.className == "noarchive") continue;
+
* @version 2015-06-23
      var depth = 0;
+
* Ajouté le 'uselang' ce 18 janvier 2015 — Ltrlg
      while ((depth < 3) && (li.tagName != "OL") && (li.parentNode != null)) {
+
*/
        li = li.parentNode;
+
if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
        depth++;
+
mw.loader.using( [ 'mediawiki.RegExp', 'mediawiki.util' ] ).done(function(){
      }
+
mw.hook( 'wikipage.content' ).add( function ( $content ) {
+
var
      if (li.tagName != "OL" || !(hasClass(li, 'references')) ) continue;
+
uploadBase = '//upload.wikimedia.org/wikipedia/commons/',
      var titre = getTextContent(external_links[i]);
+
      var last = document.createElement("small");
+
fileNamespace = mw.config.get( 'wgFormattedNamespaces' )['6'],
      last.setAttribute("class", "cachelinks");
+
localBasePath = new RegExp( '^' + mw.RegExp.escape( mw.util.getUrl( fileNamespace + ':' ) ) ),
      last.style.color = "#3366BB";
+
localBaseScript = new RegExp( '^' + mw.RegExp.escape( mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( fileNamespace + ':' ) ) ),
      last.appendChild(document.createTextNode("\u00a0["));
+
      insertAfter(external_links[i].parentNode, last, external_links[i]);
+
commonsBasePath = '//commons.wikimedia.org/wiki/File:',
+
commonsBaseScript = '//commons.wikimedia.org/w/index.php?title=File:';
      var link = document.createElement("a");
+
      link.setAttribute("href", "http://wikiwix.com/cache/?url=" + chemin.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(titre));
+
$content.find( 'a.image' ).attr( 'href', function ( i, currVal ) {
      link.setAttribute("title", "archive de "+ titre);
+
if ( $( this ).find( 'img' ).attr( 'src' ).indexOf( uploadBase ) === 0 ) {
      link.appendChild(document.createTextNode("archive"));
+
if ( localBasePath.test( currVal ) ) {
      link.style.color = "#3366BB";
+
return currVal.replace( localBasePath, commonsBasePath ) + '?uselang=fr';
      last.appendChild(link);
+
} else if ( localBaseScript.test( currVal ) ) {
      last.appendChild(document.createTextNode("]"));
+
return currVal.replace( localBaseScript, commonsBaseScript ) + '&uselang=fr';
      }
+
} else {
    }
+
return currVal;
  }
+
}
 +
}
 +
} );
 +
} );
 +
} );
 
}
 
}
);
 
  
 
/**
 
/**
  * Application de [[Wikipédia:Prise de décision/Lien interprojet]]
+
  * Ajout d'un lien « ajouter une section » en bas de page
* Copie les liens interprojets du modèle {{Autres projets}}
 
* dans le menu en colonne de gauche.
 
* remove_other_projects = true; dans le monobook personnel pour activer
 
* en plus la suppression du modèle {{Autres projets}} en bas des articles.
 
* no_other_projects = true; dans le monobook personnel pour désactiver
 
* entièrement le script et l'ajout dans la colonne de gauche.
 
 
  */
 
  */
 +
$( function( $ ) {
 +
var $newSectionLink = $( '#ca-addsection 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>'
 +
);
 +
}
 +
} );
  
function autresProjets() {
+
/**
  if ((typeof no_other_projects != "undefined") && (no_other_projects)) return;
+
* Recentrage de la page sur l'ancre avec laquelle elle a été appelée
  if(!(wgNamespaceNumber==0)) return;
+
* après le repli des boîtes déroulantes, entre autres.
  if(!(wgAction=="view")) return;
+
*/
  var div = document.getElementById('autres_projets');
+
// execute on window.load to try to get the best accuracy
  if(!div) return;
+
$(window).load(function () {
 
+
     // scroll to the url hash if any
  if((skin=="monobook")||(skin=="chick")||(skin=="myskin")||(skin=="simple")){
+
     if (window.location.hash) {
     var Portlet_ClassName = "portlet";
+
        var currentTarget = document.getElementById(window.location.hash.substring(1));
    var PBody_ClassName = "pBody";
+
        currentTarget.scrollIntoView(true);
    var Column_Id = 'column-one';
+
     }
  }else if(skin=="modern"){
+
});
    var Portlet_ClassName = "portlet";
 
    var PBody_ClassName = "pBody";
 
     var Column_Id = 'mw_portlets';
 
  }else if(skin=="vector"){
 
    var Portlet_ClassName = "portal";
 
    var PBody_ClassName = "body";
 
    var Column_Id = 'mw-panel'
 
  }else{
 
    var Portlet_ClassName = false;
 
  }
 
  if(!Portlet_ClassName) return;
 
 
 
  var list = div.getElementsByTagName('li');
 
  var newlist = document.createElement("ul");
 
  for (var i = 0; i < list.length ; i++) {
 
    list.link = list[i].getElementsByTagName('a')[0];
 
    list.text = list.link.getElementsByTagName('span')[0];
 
    var newlistitem = document.createElement("li");
 
    var newlink = document.createElement("a");
 
    var newlinktext = document.createTextNode(getTextContent(list.text));
 
    newlink.appendChild(newlinktext);
 
    newlink.title=getTextContent(list.link);
 
    newlink.href=list.link.href;
 
    newlistitem.appendChild(newlink);
 
     newlist.appendChild(newlistitem);
 
  }
 
  var interProject = document.createElement("div");
 
  interProject.className = Portlet_ClassName;
 
  interProject.id = 'p-projects';
 
  interProject.innerHTML = '<h5>Autres projets<\/h5><div class="'+PBody_ClassName+'"><ul>'+newlist.innerHTML+'</ul></div>';
 
  insertAfter(document.getElementById(Column_Id),interProject,document.getElementById('p-tb'));
 
  if ((typeof remove_other_projects != "undefined") && (remove_other_projects)) {
 
    document = div.parentNode.removeChild(div);
 
  }
 
}
 
 
addOnloadHook(autresProjets);
 
 
 
  
 
/************************************************************/
 
/************************************************************/
 
/* Function Strictement spécifiques à un espace de nom ou à une page */
 
/* Function Strictement spécifiques à un espace de nom ou à une page */
 
/************************************************************/
 
/************************************************************/
 
// PAGE D'ACCUEIL
 
if( wgFormattedNamespaces[wgNamespaceNumber]+":"+wgTitle == wgMainPageTitle ) {
 
  
 
/**
 
/**
  * Suppression du titre sur la page d'accueil,
+
  * Sur la page d'accueil uniquement
* changement de l'onglet et lien vers la liste complète des Wikipédias depuis l'accueil
 
 
  */
 
  */
function mainPageTransform(){
+
if ( mw.config.get( 'wgIsMainPage' ) ) {
  //retiré le test, car le if encadrant la fonction est déjà plus restrictif - darkoneko 05/12/09
 
  try {
 
    document.getElementById('ca-nstab-project').firstChild.innerHTML = '<span>Accueil<\/span>';
 
  } catch (e) { /* Erreur : l'apparence ne gère la pas les onglets */ }
 
  addPortletLink('p-lang', 'http://www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias');
 
}
 
addOnloadHook(mainPageTransform);
 
  
} // FIN DU IF page d'accueil
+
/**
 +
* 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') {
 +
    $(document).ready(function ($) {
  
 +
        var query = (new mw.Uri()).query;
  
 +
        var append = (query.namespace ? '&namespace=' + query.namespace : '')
 +
            + (query.invert ? '&invert=' + query.invert : '');
  
// ESPACE DE NOM 'SPECIAL'
+
        if (append) {
if( wgNamespaceNumber == -1 ) {
+
            $('#whatlinkshere-customfilters').find('a').each(function () {
 +
                this.href += append;
 +
            });
 +
        }
 +
    });
 +
}
  
 
/**
 
/**
  * Afficher une explication au nombre d'octets dans la liste de suivi
+
  * Affiche un modèle Information sur la page de téléchargement de fichiers [[Spécial:Téléchargement]]
 +
* Voir aussi [[MediaWiki:Onlyifuploading.js]]
 
  */
 
  */
function toolTipPlusMinus() {
+
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
  if(wgCanonicalSpecialPageName != "Watchlist") return
+
importScript( 'MediaWiki:Onlyifuploading.js' );
  var tt = "Nombre d'octets d'écart entre les deux dernières versions de la page";
 
  var elmts = document.getElementsByTagName("span");
 
  for(var cpt = 0; cpt < elmts.length; cpt++) {
 
    if (/mw-plusminus-(pos|neg|null)/.test(elmts[cpt].className) || /mw-plusminus-(pos|neg|null)/.test(elmts[cpt].getAttribute("class")))
 
      elmts[cpt].title = tt;
 
  }
 
 
}
 
}
addOnloadHook(toolTipPlusMinus);
 
  
 +
/**
 +
* 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');
* Modifie Special:Search pour pouvoir utiliser différents moteurs de recherche,
+
            $container.find('li.search-choice').each(function (i, choice) {
* disponibles dans une boîte déroulante.
+
                var choicetext = choice.firstChild.innerHTML;
* Auteurs : Jakob Voss, Guillaume, importé depuis la Wiki allemande
+
                if (shouldkeep(choicetext)) {
* <pre><nowiki>
+
                    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();
 +
                }
 +
            });
  
function externalSearchEngines() {
+
            var canremoveall = true;
  if (typeof SpecialSearchEnhanced2Disabled != 'undefined') return;
+
            $('input.mw-edittags-remove-checkbox').each(function (i, checkbox) {
  if (wgPageName != "Spécial:Recherche") return;
+
                if (shouldkeep(checkbox.value)) {
 +
                    checkbox.disabled = 'disabled';
 +
                    canremoveall = false;
 +
                }
 +
            });
 +
            if (!canremoveall) {
 +
                $('#mw-edittags-remove-all').prop('disabled', true);
 +
            }
  
  var mainNode = document.getElementById("powersearch");
+
        });
  if (!mainNode) mainNode = document.getElementById("search");
+
    });
  if (!mainNode) return;
+
}
  
  var beforeNode = document.getElementById("mw-search-top-table");
+
} // Fin du code concernant l'espace de nom 'Special'
  if (!beforeNode) return;
 
  beforeNode = beforeNode.nextSibling;
 
  if (!beforeNode) return;
 
 
  var firstEngine = "mediawiki";
 
 
  var choices = document.createElement("div");
 
  choices.setAttribute("id","searchengineChoices");
 
  choices.style.textAlign = "center";
 
 
  var lsearchbox = document.getElementById("searchText");
 
  var initValue = lsearchbox.value;
 
 
  var space = "";
 
  
  for (var id in searchEngines) {
 
    var engine = searchEngines[id];
 
if(engine.ShortName)
 
  {
 
    if (space) choices.appendChild(space);
 
    space = document.createTextNode(" ");
 
 
    var attr = {
 
      type: "radio",
 
      name: "searchengineselect",
 
      value: id,
 
      onFocus: "changeSearchEngine(this.value)",
 
      id: "searchengineRadio-"+id
 
    };
 
 
    var html = "<input";
 
    for (var a in attr) html += " " + a + "='" + attr[a] + "'";
 
    html += " />";
 
    var span = document.createElement("span");
 
    span.innerHTML = html;
 
 
    choices.appendChild( span );
 
    var label = document.createElement("label");
 
    label.htmlFor = "searchengineRadio-"+id;
 
    if (engine.Template.indexOf('http') == 0) {
 
      var lienMoteur = document.createElement("a");
 
      lienMoteur.href = engine.Template.replace("{searchTerms}", initValue).replace("{language}", "fr");
 
      lienMoteur.appendChild( document.createTextNode( engine.ShortName ) );
 
      label.appendChild(lienMoteur);
 
    } else {
 
      label.appendChild( document.createTextNode( engine.ShortName ) );
 
    }
 
  
    choices.appendChild( label );
+
// ESPACE DE NOM 'UTILISATEUR'
  }
+
if ( mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
}
 
  mainNode.insertBefore(choices, beforeNode);
 
 
  var input = document.createElement("input");
 
  input.id = "searchengineextraparam";
 
  input.type = "hidden";
 
 
  mainNode.insertBefore(input, beforeNode);
 
  
  changeSearchEngine(firstEngine, initValue);
+
/* 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
 +
*/
  
function changeSearchEngine(selectedId, searchTerms) {
+
var CadreOngletVoirOngletN = function () {
 +
var vOngletNom = this.id.substr(0,this.id.indexOf("onglet",1));
 +
var vOngletIndex = this.id.substr(this.id.indexOf("onglet",0)+6,this.id.length);
  
  var currentId = document.getElementById("searchengineChoices").currentChoice;
+
var rule1=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.backgroundColor.toString();
  if (selectedId == currentId) return;
+
var rule2=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.borderColor.toString(); // rule2=$('.ongletBoutonNonSel').css("border-color"); ne fonctionne pas sous Firefox
 
  document.getElementById("searchengineChoices").currentChoice = selectedId;
 
  var radio = document.getElementById('searchengineRadio-' + selectedId);
 
  radio.checked = "checked";
 
 
  var engine = searchEngines[selectedId];
 
  var p = engine.Template.indexOf('?');
 
  var params = engine.Template.substr(p+1);
 
 
  var form;
 
  if (document.forms["search"]) {
 
    form = document.forms["search"];
 
  } else {
 
    form = document.getElementById("powersearch");
 
  }
 
  form.setAttribute("action", engine.Template.substr(0,p));
 
 
  var l = ("" + params).split("&");
 
  for (var idx = 0;idx < l.length;idx++) {
 
    var p = l[idx].split("=");
 
    var pValue = p[1];
 
 
    if (pValue == "{language}") {
 
    } else if (pValue == "{searchTerms}") {
 
      var input;
 
      input = document.getElementById("searchText");
 
 
      input.name = p[0];
 
    } else {
 
      var input = document.getElementById("searchengineextraparam");
 
 
      input.name = p[0];
 
      input.value = pValue;
 
    }
 
  }
 
}
 
  
 +
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 (wgPageName == "Spécial:Recherche") {
+
if (vOngletIndex === j) {
var searchEngines = {
+
Feuillet.style.display = "block";
  mediawiki: {
+
Feuillet.style.visibility = "visible";
    ShortName: "Recherche interne",
+
$(Onglet).removeClass("ongletBoutonNonSel");
    Template: "/w/index.php?search={searchTerms}"
+
$(Onglet).addClass("ongletBoutonSel");
  },
+
Onglet.style.cursor="default";
  exalead: {
+
Onglet.style.backgroundColor="inherit";
    ShortName: "Exalead",
+
Onglet.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
    Template: "http://www.exalead.com/search/wikipedia/results/?q={searchTerms}&language=fr"
+
Onglet.style.borderRightColor="inherit";
  },
+
Onglet.style.borderBottomColor="inherit";
  google: {
+
Onglet.style.borderLeftColor="inherit";
    ShortName: "Google",
+
} else {
    Template: "http://www.google.fr/search?as_sitesearch=fr.wikipedia.org&hl={language}&q={searchTerms}"
+
Feuillet.style.display = "none";
  },
+
Feuillet.style.visibility = "hidden";
  wikiwix: {
+
$(Onglet).removeClass("ongletBoutonSel");
    ShortName: "Wikiwix",
+
$(Onglet).addClass("ongletBoutonNonSel");
    Template: "http://fr.wikiwix.com/index.php?action={searchTerms}&lang={language}"
+
Onglet.style.cursor="pointer";
  },
+
Onglet.style.backgroundColor=rule1;
+
Onglet.style.borderColor=rule2;
  wlive: {
+
}
    ShortName: "Bing",
+
}
    Template: "http://www.bing.com/search?q={searchTerms}&q1=site:http://fr.wikipedia.org"
+
return false;
  },
 
  yahoo: {
 
    ShortName: "Yahoo!",
 
    Template: "http://fr.search.yahoo.com/search?p={searchTerms}&vs=fr.wikipedia.org"
 
  },
 
globalwpsearch: {
 
    ShortName: "Global WP",
 
    Template: "http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search={searchTerms}"
 
  }
 
 
};
 
};
addOnloadHook(externalSearchEngines);
 
}
 
  
 +
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");
* Affiche un modèle Information sur la page de téléchargement de fichiers [[Spécial:Téléchargement]]
+
var Feuillets = $(Classeur).children("div").eq(1).children("div");
* Voir aussi [[MediaWiki:Onlyifuploading.js]]
 
*/
 
if( wgCanonicalSpecialPageName == "Upload" ) {
 
  importScript("MediaWiki:Onlyifuploading.js");
 
}
 
  
} // Fin du code concernant l'espace de nom 'Special'
+
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;
  
// ESPACE DE NOM 'UTILISATEUR'
+
if ( $( Onglet ).hasClass( 'ongletBoutonSel' ) ) {
if( wgNamespaceNumber == 2 ) {
+
vOgIni=j;
 +
}
 +
}
  
/* En phase de test */
+
// inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
+
if (vOgIni === -1) {
    Fonctionnement du [[Modèle:Cadre à onglets]]
+
vOgIni = Math.floor((Onglets.length)*Math.random());
    Modèle implanté par User:Peleguer de http://ca.wikipedia.org
+
document.getElementById("classeur"+i+"feuillet"+vOgIni).style.display = "block";
    Actualisé par User:Joanjoc de http://ca.wikipedia.org
+
document.getElementById("classeur"+i+"feuillet"+vOgIni).style.visibility = "visible";
    Traduction et adaptation User:Antaya de http://fr.wikipedia.org
+
var vBtElem = document.getElementById("classeur"+i+"onglet"+vOgIni);
*/
+
$(Onglet).removeClass("ongletBoutonNonSel");
function CadreOngletInit(){
+
$(Onglet).addClass("ongletBoutonSel");
// retour si ailleurs que sur l'espace utilisateur,
+
vBtElem.style.cursor="default";
// sachant que c'est une horreur au niveau de l'accessibilité
+
vBtElem.style.backgroundColor="inherit";
// et qu'il est impossible de "récupérer" ou de recycler ce script
+
vBtElem.style.borderTopColor="inherit"; // propriété par propriété sinon Chrome/Chromium se loupe
// (celui-ci fonctionnant par inclusion de sous pages)
+
vBtElem.style.borderRightColor="inherit";
if (wgCanonicalNamespace != 'User') return;
+
vBtElem.style.borderBottomColor="inherit";
  var i=0     
+
vBtElem.style.borderLeftColor="inherit";
  for (i=0;i<=9;i++){
+
}
    var vMb = document.getElementById("mb"+i);
+
}
    if (!vMb) break;
+
};
 
    var j=1   
 
    var vOgIni = 0 
 
    for (j=1;j<=9;j++){
 
        var vBt = document.getElementById("mb"+i+"bt"+j);
 
        if (!vBt) break;
 
        vBt.onclick = CadreOngletVoirOnglet;        
 
        if (vBt.className=="mbBoutonSel") vOgIni=j;
 
    }
 
  
    if (vOgIni == 0) {
+
$( CadreOngletInitN );
        vOgIni = 1+Math.floor((j-1)*Math.random()) ;
 
        document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
 
        document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
 
        document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
 
    }
 
  }
 
}
 
 
function CadreOngletVoirOnglet(){
 
  var vMbNom = this.id.substr(0,3);
 
  var vIndex = this.id.substr(5,1);
 
 
  var i=1
 
  for (i=1;i<=9;i++){       
 
        var vOgElem = document.getElementById(vMbNom+"og"+i);
 
        if (!vOgElem) break;
 
        if (vIndex==i){
 
                vOgElem.style.display = "block";
 
                vOgElem.style.visibility = "visible";
 
                document.getElementById(vMbNom+"bt"+i).className="mbBoutonSel";
 
        } else {           
 
                vOgElem.style.display = "none";
 
                vOgElem.style.visibility = "hidden";
 
                document.getElementById(vMbNom+"bt"+i).className="mbBouton";
 
        }
 
  }
 
  return false;
 
}
 
addOnloadHook(CadreOngletInit);
 
 
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
 
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
 +
 
} // Fin du code concernant l'espace de nom 'Utilisateur'
 
} // Fin du code concernant l'espace de nom 'Utilisateur'
  
  
 
// ESPACE DE NOM 'RÉFÉRENCE'
 
// ESPACE DE NOM 'RÉFÉRENCE'
if( wgNamespaceNumber == 104 ) {
+
if ( mw.config.get( 'wgNamespaceNumber' ) === 104 ) {
  
 
/*
 
/*
Ligne 1 245 : Ligne 1 158 :
 
  */
 
  */
  
function addBibSubsetMenu() {
+
// select subsection of special characters
  var specialBib = document.getElementById('specialBib');
+
var chooseBibSubset = function (s) {
  if (!specialBib) return;
+
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;
  
  specialBib.style.display = 'block';
+
/* default subset - try to use a cookie some day */
  menu = '<select style="display:inline;" onChange="chooseBibSubset(selectedIndex)">'
+
chooseBibSubset(0);
  + '<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);
 
}
 
  
// select subsection of special characters
+
$( addBibSubsetMenu );
function chooseBibSubset(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';
 
  }
 
}
 
addOnloadHook(addBibSubsetMenu);
 
 
} // Fin du code concernant l'espace de nom 'Référence'
 
} // 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]] */
 
/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
 
/* Plyd - 3 février 2009 */
 
/* Plyd - 3 février 2009 */
 
function Rebours() {
 
function Rebours() {
  if(wgNamespaceNumber==0) return;
+
try {
  try {
+
if (document.getElementById("rebours")) {
  if (document.getElementById("rebours")) {
+
var destime, Maintenant, Future, Diff, TempsRestantJ, TempsRestantH, TempsRestantM, TempsRestantS, TempsRestant;
      destime = document.getElementById("rebours").title.split(";;");
+
destime = document.getElementById("rebours").title.HTMLize().split(";;");
      Maintenant = (new Date).getTime();
+
Maintenant = (new Date ()).getTime();
      Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime();
+
Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime();
      Diff = (Future-Maintenant);
+
Diff = (Future-Maintenant);
      if (Diff < 0) {Diff = 0}
+
if (Diff < 0) {Diff = 0;}
      TempsRestantJ = Math.floor(Diff/(24*3600*1000));
+
TempsRestantJ = Math.floor(Diff/(24*3600*1000));
      TempsRestantH = Math.floor(Diff/(3600*1000)) % 24;
+
TempsRestantH = Math.floor(Diff/(3600*1000)) % 24;
      TempsRestantM = Math.floor(Diff/(60*1000)) % 60;
+
TempsRestantM = Math.floor(Diff/(60*1000)) % 60;
      TempsRestantS = Math.floor(Diff/1000) % 60;
+
TempsRestantS = Math.floor(Diff/1000) % 60;
      TempsRestant = "" + destime[6] + " ";
+
TempsRestant = "" + destime[6] + " ";
      if (TempsRestantJ == 1) {
+
if (TempsRestantJ === 1) {
        TempsRestant = TempsRestant + TempsRestantJ + " jour ";
+
TempsRestant = TempsRestant + TempsRestantJ + " jour ";
      } else if (TempsRestantJ > 1) {
+
} else if (TempsRestantJ > 1) {
        TempsRestant = TempsRestant + TempsRestantJ + " jours ";
+
TempsRestant = TempsRestant + TempsRestantJ + " jours ";
      }
+
}
      TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s";
+
TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s";
      document.getElementById("rebours").innerHTML = TempsRestant;
+
document.getElementById("rebours").innerHTML = TempsRestant;
      setTimeout("Rebours()", 1000)
+
setTimeout( function () { Rebours(); }, 1000);
    }
+
}
  } catch (e) {}
+
} catch (e) {}
 
}
 
}
addOnloadHook(Rebours);
 
  
 +
// 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 ) );
 +
}
 +
} );
 +
}
  
/* Ajoute la date de dernière modification sur le bandeau événement récent */
+
if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) {
/* Plyd - 12 juin 2009 */
+
$( Rebours );
function LastModCopy() {
+
$( ReplaceSourcePageInLinks );
  var LastModSpan = document.getElementById('lastmod');                          // Monobook et affiliés, Modern
+
}
  if(!LastModSpan) LastModSpan = document.getElementById('footer-info-lastmod'); // Vector
 
  var LastModBandeau = document.getElementById("lastmodcopy");
 
  if((!LastModSpan)||(!LastModBandeau)) return;
 
  LastModBandeau.innerHTML = LastModSpan.innerHTML;
 
  
 +
/**
 +
* Ajoute la date de dernière modification sur le bandeau événement récent
 +
*/
 +
function LastModCopy( $ ) {
 +
// L'id change entre Monobook et Modern d'une part, et Vector d'autre part
 +
$( '.lastmodcopy' ).html( $( '#lastmod, #footer-info-lastmod' ).html() );
 
}
 
}
addOnloadHook(LastModCopy);
+
$( LastModCopy );
  
 +
/**
 +
* Import des scripts liés à la liste de suivi
 +
*/
 +
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ) {
 +
importScript( 'MediaWiki:Common.js/watchlist.js' );
 +
}
  
 
/*********************************/
 
/*********************************/
 
/* Autres fonctions non classées */
 
/* Autres fonctions non classées */
 
/*********************************/
 
/*********************************/
 
/*
 
* Fonction
 
*
 
* Récupère la valeur d'une variable globale en gérant le cas lorsque cette variable n'existe pas
 
* @param nom_variable Nom de la variable dont on veut connaître la valeur
 
* @param val_defaut Valeur par défaut si la variable n'existe pas
 
* @return La valeur de la variable, ou val_defaut si la variable n'existe pas
 
*
 
* Auteur : Sanao
 
* Dernière révision : 22 novembre 2007
 
*/
 
function getVarValue(nom_variable, val_defaut)
 
{
 
    var result = null;
 
 
    try {
 
        result = eval(nom_variable.toString());
 
    } catch (e) {
 
        result = val_defaut;
 
    }
 
 
    return(result);
 
}
 
  
 
/*
 
/*
Ligne 1 357 : Ligne 1 277 :
 
* Dernière révision : 21 novembre 2007
 
* Dernière révision : 21 novembre 2007
 
*/
 
*/
function getStrDateToday(format)
+
function getStrDateToday(format) {
{
+
var str_mois = [
  var str_mois = new Array();
+
"janvier",
  with (str_mois)
+
"février",
  {
+
"mars",
    push("janvier");
+
"avril",
    push("février");
+
"mai",
    push("mars");
+
"juin",
    push("avril");
+
"juillet",
    push("mai");
+
"août",
    push("juin");
+
"septembre",
    push("juillet");
+
"octobre",
    push("août");
+
"novembre",
    push("septembre");
+
"décembre"
    push("octobre");
+
];
    push("novembre");
+
    push("décembre");
+
var today = new Date();
  }
+
var day = today.getDate();
  var today = new Date();
+
var year = today.getYear();
  var day = today.getDate();
+
if (year < 2000) {
  var year = today.getYear();
+
year = year + 1900;
  if (year < 2000)
+
}
  {
+
var str_date = format;
    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);
 
}
 
 
 
/*
 
  Outil pour permettre l'affichage immédiat d'un javascript pour tous les utilisateurs en même temps.
 
  Même s'ils ne rechargent pas Wikipédia avec CTRL+R.
 
  Utile initialement pour prévoir une bonne réactivité et un lancement général du [[Projet:Impression]].
 
  Plyd - 12 octobre 2008
 
  tag urgentsynchronejs inclus (pas encore) dans [[MediaWiki:Copyright]]
 
*/
 
function urgentSynchroneJsLoad() {
 
  if (document.getElementById('urgentsynchronejs')) {
 
    jsname = "MediaWiki:Common.js/"+document.getElementById('urgentsynchronejs').title;
 
    importScript(jsname);
 
  }
 
}
 
addOnloadHook(urgentSynchroneJsLoad);
 
 
 
 
 
/* WikiForm pour la génération facilité de modèles */
 
/* Plyd - 10/02/2008 */
 
if (document.getElementById("WikiForm")) {
 
  importScript("MediaWiki:Gadget-WikiForm.js");
 
}
 
 
 
 
 
/* petites fonctions pratiques  - Darkoneko, 09/01/2008 */
 
 
 
//créé un lien et le retourne.
 
//le parametre onclick est facultatif.
 
function createAdressNode(href, texte, onclick) {
 
  var a = document.createElement('a')
 
  a.href = href
 
  a.appendChild(document.createTextNode( texte ) )
 
  if(arguments.length == 3) {  a.setAttribute("onclick", onclick )  }
 
 
 
  return a
 
}
 
 
 
//Créé un cookie. il n'existais qu'une version dédiée à l'accueil. Celle ci est plus générique
 
//le parametre duree est en jours
 
function setCookie(nom, valeur, duree ) {
 
  var expDate = new Date()
 
  expDate.setTime(expDate.getTime() + ( duree * 24 * 60 * 60 * 1000))
 
  document.cookie = nom + "=" + escape(valeur) + ";expires=" + expDate.toGMTString() + ";path=/"
 
}
 
 
 
/* /petites fonctions pratiques */
 
 
 
/** For sysops and accountcreators *****************************************
 
* Repris depuis Common.js @ enwiki - Crée le common.js réservé aux admins.
 
*
 
*  Description: Allows for sysop-specific Javascript at [[MediaWiki:Sysop.js]],
 
*              and accountcreator-specific CSS at [[MediaWiki:Accountcreator.css]].
 
*/
 
if ( wgUserGroups ) {
 
  for ( var g = 0; g < wgUserGroups.length; ++g ) {
 
    if ( wgUserGroups[g] == "sysop" ) {
 
      importStylesheet("MediaWiki:Sysop.css");
 
      addOnloadHook( function() {
 
        if ( !window.disableSysopJS ) {
 
          importScript("MediaWiki:Sysop.js");
 
        }
 
      } );
 
    }
 
  }
 
}
 
 
 
  
/* pour activer les pop-ups */
+
//Création de la chaîne
+
var regex = /j/gi;
addOnloadHook( function() {
+
str_date = str_date.replace(regex, day.toString());
    var pops = function( elems ) {
+
regex = /a/gi;
        for (var i=0; i<elems.length; i++) {
+
str_date = str_date.replace(regex, year.toString());
            if ( !(' '+elems[i].className+' ').match( / pops / ) ) continue;
+
regex = /m/gi;
            var anchs = elems[i].getElementsByTagName('a');
+
str_date = str_date.replace(regex, str_mois[today.getMonth()]);
            for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank';
 
        }
 
    };
 
    var bc = document.getElementById('bodyContent');
 
    var tags = ['span', 'div', 'table', 'td', 'th'];
 
    for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( tags[i] ) );
 
} );
 
 
  
/* pour la palette des caractères spéciaux */
+
return (str_date);
function includePage( name )
 
{
 
document.write('<script type="text/javascript" src="' + wgScript + '?title='
 
  + name
 
  + '&action=raw&ctype=text/javascript"><\/script>'
 
);
 
 
}
 
}
/* End of includePage */
 
/* Including extra .js pages */
 
 
// switches for scripts
 
// var load_extratabs = true;
 
var load_edittools = true;
 
 
// extra drop down menu on editing for adding special characters
 
includePage( 'MediaWiki:Edittools.js' );
 

Version actuelle datée du 13 janvier 2017 à 11:23

/*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 JavaScript : pallient les limites de JavaScript */
/* Surveiller : http://www.ecmascript.org/                   */
/*************************************************************/

/**
 * insertAfter : insérer un élément dans une page
 */
mw.log.deprecate( window, 'insertAfter', function ( parent, node, referenceNode ) {
	parent.insertBefore( node, referenceNode.nextSibling );
}, 'Use jQuery\'s .after() or .insertAfter() instead.' );

/**
 * getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
 */
mw.log.deprecate( window, 'getElementsByClass', function ( searchClass, node, tag ) {
	if ( !node ) {
		node = document;
	}
	if ( !tag ) {
		tag = '*';
	}
	return $.makeArray( $( node ).find( tag + '.' + searchClass ) );
}, 'Use $( \'.someClass\' ) or $( element ).find( \'.someClass\' ) instead.' );

/**
 * Diverses fonctions manipulant les classes
 * Utilise des expressions régulières et un cache pour de meilleures perfs
 * hasClass, addClass et removeClass depuis http://drupal.org.in/doc/misc/drupal.js.source.html
 * surveiller l'implémentation de .classList http://www.w3.org/TR/2008/WD-html5-diff-20080122/#htmlelement-extensions
 */

mw.log.deprecate( window, 'hasClass', function ( node, className ) {
	return $( node ).hasClass( className );
}, 'Use $( element ).hasClass( \'class\' ) instead.' );


mw.log.deprecate( window, 'addClass', function ( node, className ) {
	if ( $( node ).hasClass( className ) ) {
		return false;
	}
	var cache = node.className;
	if ( cache ) {
		node.className = cache + ' ' + className;
	} else {
		node.className = className;
	}
	return true;
}, 'Use $( element ).addClass( \'className\' ) instead.' );

mw.log.deprecate( window, 'removeClass', function ( node, className ) {
	if ( ! $( node ).hasClass( className ) ) {
		return false;
	}
	node.className = eregReplace( '(^|\\s+)'+ className +'($|\\s+)', ' ', node.className );
	return true;
}, 'Use $( element ).removeClass( \'className\' ) instead.' );

/* petites fonctions pratiques - Darkoneko, 09/01/2008 */

//créé un lien et le retourne.
//le parametre onclick est facultatif.
window.createAdressNode = function ( href, texte, onclick ) {
	var a = document.createElement('a');
	a.href = href;
	a.appendChild(document.createTextNode( texte ) );
	if (arguments.length === 3) { 
		a.setAttribute("onclick", onclick ); 
	}

	return a;
};

//Créé un cookie. il n'existais qu'une version dédiée à l'accueil. Celle ci est plus générique
//le parametre duree est en jours
window.setCookie = function ( nom, valeur, duree ) {
	var expDate = new Date();
	expDate.setTime(expDate.getTime() + ( duree * 24 * 60 * 60 * 1000));
	document.cookie = nom + "=" + escape(valeur) + ";expires=" + expDate.toGMTString() + ";path=/";
};

/**
 * Récupère la valeur du cookie
 */
window.getCookieVal = function ( name ) {
	var cookiePos = document.cookie.indexOf(name + "=");
	var cookieValue = false;
	if (cookiePos > -1) {
		cookiePos += name.length + 1;
		var endPos = document.cookie.indexOf(";", cookiePos);
		if (endPos > -1) {
			cookieValue = document.cookie.substring(cookiePos, endPos);
		} else {
			cookieValue = document.cookie.substring(cookiePos);
		}
	}
	return cookieValue;
};

// Récupère proprement le contenu textuel d'un noeud et de ses noeuds descendants
// Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC
window.getTextContent = function ( oNode ) {
	if ( !oNode ) {
		return null;
	}
	if ( typeof oNode.textContent !== "undefined" ) {
		return oNode.textContent;
	}
	switch ( oNode.nodeType ) {
		case 3: // TEXT_NODE
		case 4: // CDATA_SECTION_NODE
			return oNode.nodeValue;
		case 7: // PROCESSING_INSTRUCTION_NODE
		case 8: // COMMENT_NODE
			if ( getTextContent.caller !== getTextContent ) {
				return oNode.nodeValue;
			}
			break;
		case 9: // DOCUMENT_NODE
		case 10: // DOCUMENT_TYPE_NODE
		case 12: // NOTATION_NODE
			return null;
	}
	var _textContent = "";
	oNode = oNode.firstChild;
	while ( oNode ) {
		_textContent += getTextContent( oNode );
		oNode = oNode.nextSibling;
	}
	return _textContent;
};

if ( !String.prototype.HTMLize ) {
	String.prototype.HTMLize = function() {
		var chars = [ '&', '<', '>', '"' ];
		var entities = [ 'amp', 'lt', 'gt', 'quot' ];
		var string = this;
		for ( var i = 0; i < chars.length; i++ ) {
			var regex = new RegExp( chars[ i ], 'g' );
			string = string.replace( regex, '&' + entities[ i ] + ';' );
		}
		return string;
	};
}


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

/*
 * Fonction générales de lancement de fonctions ou de script
 * DÉPRÉCIÉ : utiliser $( func ) qui fait partie de jQuery
 */
mw.log.deprecate( window, 'addLoadEvent', function ( hookFunct ) {
	$( function() {
		hookFunct();
	} );
}, 'Use jQuery instead.' );

/**
 * Insérer un JavaScript d'une page particulière
 * DÉPRÉCIÉ : utiliser importScript( page ) qui fait partie de MediaWiki
 */
mw.log.deprecate( window, 'loadJs', importScript, 'Use importScript instead.' );

/**
 * 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;
	}
	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' ) );

		$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 );
		}
	} );
}
$( function() {
	Palette();
} );


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

var BoiteDeroulante_Enrouler = '[masquer]';
var BoiteDeroulante_Derouler = '[afficher]';
var BoiteDeroulante_max = 0;
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;

	var Contents = NavFrame.getElementsByTagName('div');
	if ( NavToggle.innerHTML === caption[1] ) {
		NavToggle.innerHTML = caption[0];
		for ( a=0, m=Contents.length; a<m; a++ ) {
			if ( $( Contents[a] ).hasClass( 'NavContent' ) ) {
				Contents[a].style.display = 'none';
				return;
			}
		}
	} else {
		NavToggle.innerHTML = caption[1];
		for ( a=0, m=Contents.length; a<m; a++ ) {
			if ( $(Contents[a]).hasClass("NavContent") ) {
				Contents[a].style.display = 'block';
				return;
			}
		}
	}
}

function BoiteDeroulante(Element){
	if (!Element) {
		Element = document;
	}
	var i, l, Enrouler, Derouler, CaptionContainer, NavToggle, NavToggleText, NavFrame;
	var NavFrameCount = -1;
	var NavFrames = Element.getElementsByTagName("div");
	for ( i=0, l=NavFrames.length; i<l; i++ ){
		if ( $( NavFrames[i] ).hasClass( 'NavFrame' ) ){
			NavFrame = NavFrames[i];
			NavFrameCount++;
			BoiteDeroulante_index++;

			if (NavFrame.title && NavFrame.title.indexOf("/") !== -1) {
				Enrouler = NavFrame.title.HTMLize().split("/")[1];
				Derouler = NavFrame.title.HTMLize().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;
			if (BoiteDeroulante_max <= NavFrameCount) {
				BoiteDeroulante_toggle(BoiteDeroulante_index);
			}
		}
	}

}

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

/**
 * 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;
	}
	var Diaporamas = $( node ).find( 'div.diaporama' ).get();
	for (var a=0, l=Diaporamas.length; a<l; a++) {
		Diaporama.Fonctions.InitDiaporama(Diaporamas[a]);
	}
};
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.split("px").join("");
	} 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 = DiaporamaDiv.className.HTMLize();
	var ParamDelay = DiaporamaDivClass.match(/Delay[0-9]+(\.|,)?[0-9]*/);
	if (ParamDelay !== null) {
		ParamDelay = parseFloat(ParamDelay[0].split("Delay").join("").split(",").join("."));
		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 (typeof DesactiveHiddenCat !== "undefined" && DesactiveHiddenCat) {
		return;
	}
	if (document.URL.indexOf("printable=yes") !== -1) {
		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);
	} else {
		nc.appendChild(document.createTextNode(' | '));
	}
	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).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('[+]');
	}
}

$( hiddencat );

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

function GeoBox_Init(Element){
	if (!Element) {
		Element = document.body;
	}
	var cont = $( Element ).find( 'div.img_toogle' ).get();
	for (var i = 0,m=cont.length; i < m; i++) {
		cont[i].id = 'img_toogle_' + i;
		var Boxes = $( cont[i] ).find( '.geobox' ).get();
		var ToggleLinksDiv = document.createElement('ul');
		ToggleLinksDiv.id = 'geoboxToggleLinks_' + i;
		for (var a=0, l=Boxes.length; a<l; a++){
			var ThisBox = Boxes[a];
			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 === (l-1)) {
				Li.style.display = "none";
			} else {
				ThisBox.style.display = "none";
			}
		}
		cont[i].appendChild(ToggleLinksDiv);
	}
}

function GeoBox_Toggle(link){
	var a, l;
	var ImgToggleIndex = link.id.split('geoboxToggle_').join('').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;
	}
	var AllGeoboxes = $( ImageToggle ).find( '.geobox' ).get();
	for ( a=0, l=AllGeoboxes.length; a<l; a++ ) {
		var ThisgeoBox = AllGeoboxes[a];
		if (ThisgeoBox.id === Geobox.id) {
			ThisgeoBox.style.display = "";
		} else {
			ThisgeoBox.style.display = "none";
		}
	}
	var AllToggleLinks = Links.getElementsByTagName('a');
	for (a=0, l=AllToggleLinks.length; a<l; a++) {
		var thisToggleLink = AllToggleLinks[a];
		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 helpPageURL = document.getElementById("helpPageURL");
		var h1 = document.getElementById('firstHeading');
		if (helpPageURL && h1) {
			h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
			helpPage.style.display = "none";
		}
	}
}
$( 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' ] ).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:';
	
			$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=fr';
					} else if ( localBaseScript.test( currVal ) ) {
						return currVal.replace( localBaseScript, commonsBaseScript ) + '&uselang=fr';
					} else {
						return currVal;
					}
				}
			} );
		} );
	} );
}

/**
 * Ajout d'un lien « ajouter une section » en bas de page
 */
$( function( $ ) {
	var $newSectionLink = $( '#ca-addsection 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>'
		);
	}
} );

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

/************************************************************/
/* 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') {
    $(document).ready(function ($) {

        var query = (new mw.Uri()).query;

        var append = (query.namespace ? '&namespace=' + query.namespace : '')
            + (query.invert ? '&invert=' + 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 vOngletNom = this.id.substr(0,this.id.indexOf("onglet",1));
	var vOngletIndex = this.id.substr(this.id.indexOf("onglet",0)+6,this.id.length);

	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 = document.getElementById("rebours").title.HTMLize().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( $ ) {
	// L'id change entre Monobook et Modern d'une part, et Vector d'autre part
	$( '.lastmodcopy' ).html( $( '#lastmod, #footer-info-lastmod' ).html() );
}
$( LastModCopy );

/**
 * Import des scripts liés à la liste de suivi
 */
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ) {
	importScript( 'MediaWiki:Common.js/watchlist.js' );
}

/*********************************/
/* 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);
}