MediaWiki:Common.js : Différence entre versions

De NVCwiki
Aller à : navigation, rechercher
(Remise en forme)
 
(5 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
/* pour activer les pop-ups */
+
/*jshint maxerr:600, scripturl:true, laxbreak:true, sub:true, loopfunc:true, forin:false, unused:true*/
 
+
/*global mw, $*/
addOnloadHook( function() {
+
/**
    var pops = function( elems ) {
+
  * N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
        for (var i=0; i<elems.length; i++) {
+
*
            if ( !(' '+elems[i].className+' ').match( / pops / ) ) continue;
+
* ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre
            var anchs = elems[i].getElementsByTagName('a');
+
* vector.js. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des
            for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank';
+
* visiteurs), même plusieurs heures après la modification !
        }
+
*
    };
+
* Prière de ranger les nouvelles fonctions dans les sections adaptées :
    var bc = document.getElementById('bodyContent');
+
* - Fonctions JavaScript
    var tags = ['span', 'div', 'table', 'td', 'th'];
+
* - Fonctions spécifiques pour MediaWiki
    for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( tags[i] ) );
+
* - 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
/* N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
+
*
 
+
* Note : une ré-écriture de cette page en utilisant jQuery a été commencée sur [[Projet:JavaScript/Refonte Common.js avec jQuery]].
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
+
* <nowiki> /!\ Ne pas retirer cette balise
visiteurs), même plusieurs heures après la modification !
+
*/
 
 
NE PAS RETIRER CECI SINON : remplacement des signature, substitution des modèles, ... : <nowiki>
 
  
 
/*************************************************************/
 
/*************************************************************/
/* Fonctions javascript : pallient les limites de javascript */
+
/* Fonctions JavaScript : pallient les limites de JavaScript */
 
/* Surveiller : http://www.ecmascript.org/                  */
 
/* Surveiller : http://www.ecmascript.org/                  */
 
/*************************************************************/
 
/*************************************************************/
Ligne 30 : 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) {
 
    var s=" "+element.className+" ";
 
    return s.indexOf(" "+classe+" ")>=0;
 
}
 
 
function whichClass(element, classes) {
 
    var s=" "+element.className+" ";
 
    for(var i=0;i<classes.length;i++)
 
        if (s.indexOf(" "+classes[i]+" ")>=0) return i;
 
    return -1;
 
}
 
 
function hasClass(node, className) {
 
  if (node.className == className) {
 
    return true;
 
  }
 
  var reg = new RegExp('(^| )'+ className +'($| )')
 
  if (reg.test(node.className)) {
 
    return true;
 
  }
 
  return false;
 
}
 
 
function addClass(node, className) {
 
    if (hasClass(node, className)) {
 
        return false;
 
    }
 
    node.className += ' '+ className;
 
    return true;
 
}
 
 
function removeClass(node, className) {
 
  if (!hasClass(node, className)) {
 
    return false;
 
  }
 
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
 
  return true;
 
}
 
  
function eregReplace(search, replace, subject) {
+
mw.log.deprecate( window, 'hasClass', function ( node, className ) {
    return subject.replace(new RegExp(search,'g'), replace);
+
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
 
  * 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
 +
// 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 : http://fr.wikipedia.org/skins-1.5/common/wikibits.js   */
+
/* 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
 
  * 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( page ) qui fait partie de MediaWiki
 
  */
 
  */
function loadJs(page) {
+
mw.log.deprecate( window, 'loadJs', importScript, 'Use importScript instead.' );
  document.write('<script type="text/javascript" src="' +
 
                'http://fr.wikipedia.org/w/index.php?title=' + page +
 
                '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
}
 
  
 
/**
 
/**
 
  * Projet JavaScript
 
  * Projet JavaScript
 
  */
 
  */
function obtenir(name) {
+
window.obtenir = function ( name ) {
  if(name.indexOf('caractères/') != -1) loadJs('MediaWiki:JSScripts/' + name);
+
importScript( 'MediaWiki:Gadget-' + name + '.js' );
  else loadJs('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
/* Applications pour les lecteurs    */
 
/**************************************/
 
 
 
/* Devraient en principe se trouver côté serveur */
 
 
 
/*
 
  * Choix du mode d'affichage des références
 
* @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
 
 
  */
 
  */
 
+
if ( typeof addCustomButton === 'undefined' ) {
function addBibSubsetMenu() {
+
mw.log.deprecate( window, 'addCustomButton', function ( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
  var specialBib = document.getElementById('specialBib');
+
if ( mw.toolbar ) {
  if (!specialBib) return;
+
mw.toolbar.addButton( {
 
+
imageFile: imageFile.replace( /^http:(\/\/upload\.wikimedia\.org\/)/, '$1' ),
  specialBib.style.display = 'block';
+
speedTip: speedTip,
  menu = '<select style="display:inline;" onChange="chooseBibSubset(selectedIndex)">'
+
tagOpen: tagOpen,
  + '<option>Liste</option>'
+
tagClose: tagClose,
  + '<option>WikiNorme</option>'
+
sampleText: sampleText,
  + '<option>BibTeX</option>'
+
imageId: imageId
  + '<option>ISBD</option>'
+
} );
  + '<option>ISO690</option>'
+
}
  + '</select>';
+
}, 'Use mw.toolbar.addButton instead.' );
  specialBib.innerHTML = specialBib.innerHTML + menu;
 
 
 
  /* default subset - try to use a cookie some day */
 
  chooseBibSubset(0);
 
 
}
 
}
  
// select subsection of special characters
 
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);
+
/****************************************/
 +
/* Applications pour l'ensemble du site */
 +
/****************************************/
  
 
/**
 
/**
  * Modifie Special:Search pour pouvoir utiliser différents moteurs de recherche,
+
  * Tout ce qui concerne la page d'édition
  * disponibles dans une boîte déroulante.
+
  * Voir MediaWiki:Common.js/edit.js pour ces fonctions
* Auteurs : [[:en:User:Gracenotes]], importé de Wikipédia en anglais.
 
* [[User:Zelda]] pour le stockage du moteur par cookie.
 
 
  */
 
  */
+
if ( ['edit','submit'].indexOf(mw.config.get('wgAction')) !== -1 ) {
if (wgPageName == "Special:Recherche") {
+
importScript( 'MediaWiki:Common.js/edit.js' );
  var searchEngines = [];
 
  addOnloadHook(SpecialSearchEnhanced);
 
}
 
 
function SpecialSearchEnhanced() {
 
  var createOption = function(site, action, mainQ, addQ, addV) {
 
    var opt = document.createElement('option');
 
    opt.appendChild(document.createTextNode(site));
 
    searchEngines[searchEngines.length] = [action, mainQ, addQ, addV];
 
    return opt;
 
  }
 
  var searchForm = document.forms['search'];
 
  var selectBox = document.createElement('select');
 
  selectBox.id = 'searchEngine';
 
  searchForm.onsubmit = function() {
 
    var optId = document.getElementById('searchEngine').selectedIndex;
 
    var optSelected = searchEngines[optId];
 
    searchForm.action = optSelected[0];
 
    searchForm.lsearchbox.name = optSelected[1];
 
    searchForm.title.value = optSelected[3];
 
    searchForm.title.name = optSelected[2];
 
    // stockage du moteur dans un cookie
 
    document.cookie = "searchEngineId=" + optId;
 
  }
 
  selectBox.appendChild(createOption('Recherche interne', wgScriptPath + '/index.php', 'search', 'title', 'Special:Recherche'));
 
  selectBox.appendChild(createOption('Exalead', 'http://www.exalead.com/wikipedia/results', 'q', 'language', 'fr'));
 
  selectBox.appendChild(createOption('Google', 'http://www.google.fr/search', 'q', 'sitesearch', 'fr.wikipedia.org'));
 
  selectBox.appendChild(createOption('Wikiwix', 'http://fr.wikiwix.com/', 'action', 'lang', 'fr'));
 
  selectBox.appendChild(createOption('Windows Live', 'http://search.live.com/results.aspx', 'q', 'q1', 'site:http://fr.wikipedia.org'));
 
  selectBox.appendChild(createOption('Yahoo', 'http://fr.search.yahoo.com/search', 'p', 'vs', 'fr.wikipedia.org'));
 
  selectBox.appendChild(createOption('Global WP Search', 'http://vs.aka-online.de/cgi-bin/globalwpsearch.pl', 'search', 'timeout', '15'));
 
  // récupération du dernier moteur utilisé stocké dans un cookie
 
  var defaultId = getCookieVal("searchEngineId");
 
  if (defaultId) {
 
    selectBox.selectedIndex = defaultId;
 
  }
 
  searchForm.lsearchbox.style.marginLeft = '0px';
 
  var lStat = document.getElementById('loadStatus');
 
  lStat.parentNode.insertBefore(selectBox, lStat);
 
 
}
 
}
  
 
/**
 
/**
  * Transformer les pages du Bistro en page de discussion
+
  * 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 DiscussionBistro() {
+
function rewritePageTitle( $ ) {
  if( (wgPageName.search('Wikipédia:Le_Bistro') != -1)
+
var $realTitle, titleText, $h1,
    || (wgPageName.search('Wikipédia:Bulletin_des_administrateurs') != -1))
+
$realTitleBanner = $( '#RealTitleBanner' );
    document.body.className = 'ns-1';
+
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 );
  
addOnloadHook(DiscussionBistro);
 
  
 
/**
 
/**
  * Transformer certaines pages en page de discussion avec le modèle {{page de discussion}}
+
  * 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 TransformeEnDiscussion() {
+
 
  var transformeEnPDD = document.getElementById("transformeEnPageDeDiscussion");
+
function sousTitreH1( $content ) {
  if(transformeEnPDD) document.body.className = "ns-1";
+
$( '#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 );
  
addOnloadHook(TransformeEnDiscussion);
 
  
 
/**
 
/**
  * Transformer certaines pages en pseudo-article
+
  * Boîtes déroulantes
  * c'est raisonnable ? --Tavernier
+
  *
 +
* Pour [[Modèle:Méta palette de navigation]]
 
  */
 
  */
function TransformeEnArticle() {
+
 
  var transformeEnA = document.getElementById("transformeEnArticle");
+
var Palette_Enrouler = '[masquer]';
  if(transformeEnA) document.body.className = "ns-0";
+
var Palette_Derouler = '[afficher]';
 +
 
 +
var Palette_max = 1;
 +
 
 +
function Palette_toggle( $table ) {
 +
$table.find( 'tr:not(:first)' ).toggleClass( 'navboxHidden' );
 
}
 
}
  
addOnloadHook(TransformeEnArticle);
+
function Palette( element ) {
 +
if ( !element ) {
 +
element = document;
 +
}
 +
var $tables = $( element ).find( 'table.collapsible' );
 +
var groups = {};
  
/**
+
$tables.each( function( _, table ) {
* Afficher une explication au nombre de caractères dans la liste de suivi
+
var group = table.getAttribute('data-autocollapse-group') || '__default__';
*/
+
groups[group] = ( groups[group] || 0 ) + 1;
function toolTipPlusMinus() {
+
} );
  var tt = "Nombre de caractères 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);
+
$tables.each( function( _, table ) {
 +
var $table = $( table );
  
/**
+
var group = table.getAttribute('data-autocollapse-group') || '__default__';
* Utilisation du modèle Modèle:Images
+
var autoCollapse = groups[group] > Palette_max;
*/
+
var collapsed = $table.hasClass( 'collapsed' ) || ( autoCollapse && $table.hasClass( 'autocollapse' ) );
function toggleImage(group, remindex, shwindex) {
 
  document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
 
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
 
}
 
  
function imageGroup(){
+
$table.find( 'tr:first th:first' ).prepend(
  if (document.URL.match(/printable/g)) return;
+
$( '<span class="navboxToggle">\u00a0</span>' ).append(
  var bc=document.getElementById("bodyContent");
+
$( '<a href="#">' + (collapsed ? Palette_Derouler : Palette_Enrouler) + '</a>' ).click( function() {
  if( !bc ) bc = document.getElementById("mw_contentholder");
+
var $this = $( this );
  if( !bc ) return;
+
if ( $this.text() === Palette_Enrouler ) {
  var divs=bc.getElementsByTagName("div");
+
$this.text( Palette_Derouler );
  var i = 0, j = 0;
+
} else {
  var units, search;
+
$this.text( Palette_Enrouler );
  var currentimage;
+
}
  var UnitNode;
+
Palette_toggle( $table );
  for (i = 0; i < divs.length ; i++) {
+
return false;
    if (divs[i].className != "ImageGroup") continue;
+
} )
    UnitNode=undefined;
+
)
    search=divs[i].getElementsByTagName("div");
+
);
    for (j = 0; j < search.length ; j++) {
+
if ( collapsed ) {
      if (search[j].className != "ImageGroupUnits") continue;
+
Palette_toggle( $table );
      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";
 
    }
 
  }
 
 
}
 
}
 +
$( function() {
 +
Palette();
 +
} );
  
addOnloadHook(imageGroup);
 
  
 
/**
 
/**
  * Ajout d'un style particulier aux liens interlangues vers un bon article ou
+
  * Pour [[Modèle:Boîte déroulante]]
* un article de qualité
 
 
  */
 
  */
function lienAdQouBAouPdQ() {
 
  // links are only replaced in p-lang
 
  var pLang = document.getElementById("p-lang");
 
  if (!pLang) return;
 
  var lis = pLang.getElementsByTagName("li");
 
  for (var i=0; i<lis.length; i++) {
 
    var li = lis[i];
 
    // ADQ- est intentionnel pour correspondre au modèle Lien AdQ, on
 
    // ne doit pas le corriger.
 
    if (document.getElementById("ADQ-" + li.className)) {
 
      li.className += " AdQ";
 
      li.title = "Lien vers un article de qualité";
 
    } else if (document.getElementById("BA-" + li.className)) {
 
      li.className += " BA";
 
      li.title = "Lien vers un bon article";
 
    } else if (document.getElementById("PdQ-" + li.className)) {
 
      li.className += " AdQ";
 
      li.title = "Lien vers un portail de qualité";
 
    }
 
  }
 
}
 
addOnloadHook(lienAdQouBAouPdQ);
 
  
/**
+
var BoiteDeroulante_Enrouler = '[masquer]';
* Suppression du titre sur la page d'accueil,
+
var BoiteDeroulante_Derouler = '[afficher]';
* changement de l'onglet et lien vers la liste complète des Wikipédias depuis l'accueil
+
var BoiteDeroulante_max = 0;
*/
+
var BoiteDeroulante_index = -1;
function mainPageTransform(){
 
  if(wgPageName != 'Accueil' && wgPageName != 'Discuter:Accueil') return;
 
  try {
 
    document.getElementById('ca-nstab-main').firstChild.innerHTML = 'Accueil';
 
  } catch (e) { /* Erreur : l'apparence ne gère la pas les onglets */ }
 
  if(wgPageName == 'Accueil' && wgIsArticle) addPortletLink('p-lang', 'http://meta.wikimedia.org/wiki/Liste_des_Wikipédias', '+');
 
}
 
  
addOnloadHook(mainPageTransform);
+
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');
* Liens d'aide des pages spéciales
+
if ( NavToggle.innerHTML === caption[1] ) {
*
+
NavToggle.innerHTML = caption[0];
* permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
+
for ( a=0, m=Contents.length; a<m; a++ ) {
* known bug : conflit avec le changement de titre classique.
+
if ( $( Contents[a] ).hasClass( 'NavContent' ) ) {
* Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
+
Contents[a].style.display = 'none';
*/
+
return;
function rewritePageH1bis() {
+
}
  try {
+
}
    var helpPage = document.getElementById("helpPage");
+
} else {
    if (helpPage) {
+
NavToggle.innerHTML = caption[1];
      var helpPageURL = document.getElementById("helpPageURL");
+
for ( a=0, m=Contents.length; a<m; a++ ) {
      var h1 = document.getElementsByTagName("h1")[0];
+
if ( $(Contents[a]).hasClass("NavContent") ) {
      if (helpPageURL && h1) {
+
Contents[a].style.display = 'block';
        h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
+
return;
        helpPage.style.display = "none";
+
}
      }
+
}
    }
+
}
  } catch (e) {
 
    /* Something went wrong. */
 
  }
 
 
}
 
}
  
addOnloadHook(rewritePageH1bis);
+
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) {
* Redirect vers wikibooks etc.
+
Enrouler = NavFrame.title.HTMLize().split("/")[1];
*
+
Derouler = NavFrame.title.HTMLize().split("/")[0];
*/
+
} else {
var redirectedFromArticleDatas = new Array(
+
Enrouler = BoiteDeroulante_Enrouler;
  new Array('Wikipédia:Redirect_vers_Wikibooks', 'wikibooks'),
+
Derouler = BoiteDeroulante_Derouler;
  new Array('Wikipédia:Redirect_vers_Wikisource', 'wikisource'),
+
}
  new Array('Wikipédia:Redirect_vers_Wikiversité', 'wikiversity'),
+
NavFrame.title='';
  new Array('Wikipédia:Redirect_vers_Wikiquote', 'wikiquote'),
+
CaptionContainer = document.createElement('span');
  new Array('Wikipédia:Redirect_vers_Wikinews', 'wikinews'),
+
CaptionContainer.id = 'NavCaption' + BoiteDeroulante_index;
  new Array('Wikipédia:Redirect_vers_Wiktionnaire', 'wiktionary')
+
CaptionContainer.style.display = "none";
);
+
CaptionContainer.innerHTML = '<span>' + Derouler + '</span><span>' + Enrouler + '</span>';
 +
NavFrame.appendChild(CaptionContainer);
  
function redirectedFromArticle() {
+
NavToggle = document.createElement("a");
  if (wgIsArticle == false)
+
NavToggle.className = 'NavToggle';
      return;
+
NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
  for (var i = 0; i < redirectedFromArticleDatas.length; ++i) {
+
NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
    var page_match = redirectedFromArticleDatas[i];
+
NavToggleText = document.createTextNode(Enrouler);
    var index = wgPageName.indexOf(page_match[0]);
+
NavToggle.appendChild(NavToggleText);
    if (index == 0) {
 
        var div = document.getElementById('contentSub');
 
        var span = document.getElementById('redirected_from');
 
        // real target is always encoded in the anchor.
 
        target = window.location.hash;
 
        if (!div || !span || target == '')
 
            break;
 
  
        target = target.slice(1);
+
NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
        // Konqueror 3.5 work around
+
NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
        if (target.indexOf('#') == 0)
+
if (BoiteDeroulante_max <= NavFrameCount) {
            target = target.slice(1);
+
BoiteDeroulante_toggle(BoiteDeroulante_index);
        target = target.split('.23');
+
}
        target[0] = target[0].replace(/\.([0-9A-Z][0-9A-Z])/g, '%$1');
+
}
        var quoted = target[0]
+
}
        if (target[1].length)
 
            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');
 
        e.href = 'http://fr.' + page_match[1] + '.org/wiki/' + quoted;
 
        e.innerHTML = display;
 
        span.replaceChild(e, span.firstChild);
 
        break;
 
    }
 
  }
 
 
}
 
}
  
addOnloadHook(redirectedFromArticle);
+
mw.hook( 'wikipage.content' ).add( function() {
 +
BoiteDeroulante();
 +
} );
 +
 
 +
/**
 +
* Utilisation du modèle Modèle:Animation
 +
*/
  
/* En phase de test */
+
var Diaporama = {};
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
+
Diaporama.Params = {};
    Fonctionnement du [[Modèle:Cadre à onglets]]
+
Diaporama.Fonctions = {};
    Modèle implanté par User:Peleguer de http://ca.wikipedia.org
 
    Actualisé par User:Joanjoc de http://ca.wikipedia.org
 
    Traduction et adaptation User:Antaya de http://fr.wikipedia.org
 
*/
 
function CadreOngletInit(){
 
// retour si ailleurs que sur l'espace utilisateur,
 
// sachant que c'est une horreur au niveau de l'accessibilité
 
// et qu'il est impossible de "récupérer" ou de recycler ce script
 
// (celui-ci fonctionnant par inclusion de sous pages)
 
if (wgCanonicalNamespace != 'User') return; 
 
  var i=0     
 
  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) {
+
Diaporama.Params.DiaporamaIndex = 0;
        vOgIni = 1+Math.floor((j-1)*Math.random()) ;
+
Diaporama.Params.ImageDelay = 1;
        document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
+
Diaporama.Params.Paused = [];
        document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
+
Diaporama.Params.Visible = [];
        document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
+
Diaporama.Params.Length = [];
    }
+
Diaporama.Params.Delay = [];
  }
+
Diaporama.Params.Timeout = [];
}
 
 
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"*/
 
  
/**
+
Diaporama.Fonctions.Init = function(node){
* Boîtes déroulantes
+
if (!node) {
*
+
node = document;
* Pour [[Modèle:Méta palette de navigation]]
+
}
*/
+
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);
 +
};
  
var autoCollapse = 2;
+
Diaporama.Fonctions.Play = function(index){
var collapseCaption = '[ Enrouler ]';
+
if (Diaporama.Params.Paused[index] === false) {
var expandCaption = '[ Dérouler ]';
+
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";
 +
};
  
function collapseTable( tableIndex ) {
+
Diaporama.Fonctions.Pause = function(index){
  var Button = document.getElementById( "collapseButton" + tableIndex );
+
Diaporama.Params.Paused[index] = true;
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
+
clearTimeout(Diaporama.Params.Timeout[index]);
  if ( !Table || !Button ) return false;
+
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";
 +
};
  
  var Rows = Table.getElementsByTagName( "tr" );  
+
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";
 +
};
  
  if ( Button.firstChild.data == collapseCaption ) {
+
Diaporama.Fonctions.ToggleDiapo = function(index, diff){
    for ( var i = 1; i < Rows.length; i++ ) {
+
clearTimeout(Diaporama.Params.Timeout[index]);
      Rows[i].style.display = "none";
+
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
    }
+
var DiaporamaFiles = $( DiaporamaFileContainer ).find( 'div.ImageFile' ).get();
    Button.firstChild.data = expandCaption;
+
var VisibleIndex = Diaporama.Params.Visible[index];
  } else {
+
var NextDiaporamaIndex = (VisibleIndex+diff);
    for ( var i = 1; i < Rows.length; i++ ) {
+
if (NextDiaporamaIndex === DiaporamaFiles.length || NextDiaporamaIndex < 0) {
      Rows[i].style.display = Rows[0].style.display;
+
var DiaporamaDiv = document.getElementById("Diaporama_"+index);
    }
+
if ( diff < 0 || ! $( DiaporamaDiv ).hasClass( 'AutoLoop' ) ) {
    Button.firstChild.data = collapseCaption;
+
return;
  }
+
}
}
+
NextDiaporamaIndex = 0;
 +
}
 +
Diaporama.Fonctions.ShowThisDiapo(index, NextDiaporamaIndex);
 +
};
  
function createCollapseButtons() {
+
Diaporama.Fonctions.ShowThisDiapo = function(index, Value){
  var tableIndex = 0;
+
clearTimeout(Diaporama.Params.Timeout[index]);
  var NavigationBoxes = new Object();
+
var DiaporamaFileContainer = document.getElementById("DiaporamaFileContainer_"+index);
  var Tables = document.getElementsByTagName( "table" );
+
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);
 +
}
 +
};
  
  for ( var i = 0; i < Tables.length; i++ ) {
+
Diaporama.Fonctions.CreateSelect = function(index, Title) {
    if ( hasClass( Tables[i], "collapsible" ) ) {
+
var s, Opt;
      NavigationBoxes[ tableIndex ] = Tables[i];
+
var Total = Diaporama.Params.Length[index];
      Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
+
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;
 +
};
  
      var Button    = document.createElement( "span" );
+
Diaporama.Fonctions.SelectDiapo = function(index){
      var ButtonLink = document.createElement( "a" );
+
var Select = document.getElementById("DiaporamaSelect"+index);
      var ButtonText = document.createTextNode( collapseCaption );
+
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);
 +
}
 +
}
 +
};
  
      Button.style.styleFloat = "right";
+
Diaporama.Fonctions.UpdateSelect = function(index){
      Button.style.cssFloat = "right";
+
var Select = document.getElementById("DiaporamaSelect"+index);
      Button.style.fontWeight = "normal";
+
if (!Select) {
      Button.style.textAlign = "right";
+
return;
      Button.style.width = "6em";
+
}
 +
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;
 +
}
 +
}
 +
};
  
      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
+
Diaporama.Fonctions.UpdateBar = function(index){
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
+
var Percent = (100/(Diaporama.Params.Length[index]-1)) * Diaporama.Params.Visible[index];
      ButtonLink.appendChild( ButtonText );
+
if (Percent>100) {
 +
Percent = 100;
 +
}
 +
var DiaporamaControl = document.getElementById("DiaporamaControl_"+index);
 +
var DiaporamaScrollBar = $( DiaporamaControl ).find( 'div.ScrollBar' )[0];
 +
DiaporamaScrollBar.style.width = Percent + "%";
 +
};
  
      Button.appendChild( ButtonLink );
+
Diaporama.Fonctions.Onclick = function(Link){
 +
var Image = Link.getElementsByTagName('img')[0];
 +
Image.style.backgroundColor = "gray";
 +
};
  
      var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
+
Diaporama.Fonctions.Offclick = function(Link, index){
      /* only add button and increment count if there is a header row to work with */
+
var Span = Link.parentNode;
      if (Header) {
+
var Image = Link.getElementsByTagName('img')[0];
        Header.insertBefore( Button, Header.childNodes[0] );
+
var DiapoState = Diaporama.Params.Paused[index];
        tableIndex++;
+
if ( ( $( Span ).hasClass( 'Play' ) && DiapoState === false ) || ( ( $( Span ).hasClass( 'Pause' ) || $( Span ).hasClass( 'Stop' ) ) && DiapoState === true ) ){
      }
+
Image.style.backgroundColor = "silver";
    }
+
} else {
  }
+
Image.style.backgroundColor = "white";
 +
}
 +
};
  
  for (var i = 0; i < tableIndex; i++) {
+
Diaporama.Fonctions.getIndex = function(Element){
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
+
return parseInt(Element.id.replace(/[^0-9]/g, ""));
  }
+
};
}
 
  
addOnloadHook(createCollapseButtons);
+
$( function () {
 +
Diaporama.Fonctions.Init();
 +
} );
  
 
/**
 
/**
  * Pour [[Modèle:Boîte déroulante]]
+
  * Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) à la manière des boîtes déroulantes
 
  */
 
  */
var NavigationBarShowDefault = 0;
+
function hiddencat( $ ) {
+
if (typeof DesactiveHiddenCat !== "undefined" && DesactiveHiddenCat) {
function toggleNavigationBar(indexNavigationBar) {
+
return;
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
+
}
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
+
if (document.URL.indexOf("printable=yes") !== -1) {
+
return;
  if (!NavFrame || !NavToggle) return;
+
}
+
var cl = document.getElementById('catlinks');
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
+
if (!cl) {
  // exemple : title="[déroulade]/[enroulade]"
+
return;
  var caption = [expandCaption, collapseCaption];
+
}
  if (NavFrame.title && NavFrame.title.length > 0) {
+
var $hc = $('#mw-hidden-catlinks');
    caption = NavFrame.title.split("/");
+
if ( !$hc.length ) {
    if (caption.length < 2) caption.push(collapseCaption);
+
return;
  }
+
}
+
if ( $hc.hasClass('mw-hidden-cats-user-shown') ) {
  // if shown now
+
return;
  if (NavToggle.firstChild.data == caption[1]) {
+
}
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
+
if ( $hc.hasClass('mw-hidden-cats-ns-shown') ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
+
$hc.addClass('mw-hidden-cats-hidden');
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
+
}
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
+
var nc = document.getElementById('mw-normal-catlinks');
    }
+
if ( !nc ) {
+
var catline = document.createElement('div');
  // if hidden now
+
catline.id = 'mw-normal-catlinks';
  } else if (NavToggle.firstChild.data == caption[0]) {
+
var a = document.createElement('a');
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
+
a.href = '/wiki/Catégorie:Accueil';
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
+
a.title = 'Catégorie:Accueil';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
+
a.appendChild(document.createTextNode('Catégories'));
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
+
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);
 
}
 
}
 
// 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);
+
function toggleHiddenCats(e) {
      NavToggle.appendChild(NavToggleText);
+
var $hc = $('#mw-hidden-catlinks');
+
if ( $hc.hasClass('mw-hidden-cats-hidden') ) {
      // add NavToggle-Button as first div-element
+
$hc.removeClass('mw-hidden-cats-hidden');
      // in <div class="NavFrame">
+
$hc.addClass('mw-hidden-cat-user-shown');
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
+
$(e.target).text('[–]');
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
+
} else {
    }
+
$hc.removeClass('mw-hidden-cat-user-shown');
  }
+
$hc.addClass('mw-hidden-cats-hidden');
  // if more Navigation Bars found than Default: hide all
+
$(e.target).text('[+]');
  if (NavigationBarShowDefault < indexNavigationBar) {
+
}
    for( var i=1; i<=indexNavigationBar; i++ ) {
 
      toggleNavigationBar(i);
 
    }
 
  }
 
 
}
 
}
+
 
addOnloadHook(createNavigationBarToggleButton);
+
$( hiddencat );
  
 
/**
 
/**
  * Compteur de consultation d'articles
+
  * Script pour alterner entre plusieurs cartes de géolocalisation
*
 
* Please talk to User:LeonWeber before changing anything or
 
* if there are any issues with that.
 
* this should be adjusted to a good value.
 
* BE CAREFULL, you will break zedler if it's too low!
 
* And then DaB. will kill Leon :-(
 
 
  */
 
  */
  
var disable_counter = 0;
+
function GeoBox_Init(Element){
var counter_factor = 900;  
+
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 pgcounterSetup() {
+
function GeoBox_Toggle(link){
  if(disable_counter == 0) {
+
var a, l;
    var url = window.location.href;
+
var ImgToggleIndex = link.id.split('geoboxToggle_').join('').replace(/_.*/g, "");
    if(Math.floor(Math.random()*counter_factor)==42) { // the probability thing
+
var GeoBoxIndex = link.id.replace(/.*_/g, "");
      if(wgIsArticle==true) { // do not count history pages etc.
+
var ImageToggle = document.getElementById('img_toogle_' + ImgToggleIndex);
        var pgcountNs = wgCanonicalNamespace;
+
var Links = document.getElementById('geoboxToggleLinks_' + ImgToggleIndex);
        if(wgCanonicalNamespace=="") pgcountNs = "0";
+
var Geobox = document.getElementById('geobox_' + ImgToggleIndex + "_" + GeoBoxIndex);
        var cnt_url = "http://pgcount.wikimedia.de/index.png?ns=" + pgcountNs + "&title=" + encodeURI(wgTitle) + "&factor=" + counter_factor + "&wiki=frwiki";
+
var Link = document.getElementById('geoboxToggle_' + ImgToggleIndex + "_" + GeoBoxIndex);
        var img = new Image();
+
if ( (!ImageToggle) || (!Links) || (!Geobox) || (!Link) ) {
        img.src = cnt_url;
+
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 = "";
 +
}
 +
}
 
}
 
}
  
addOnloadHook(pgcounterSetup);
+
if ( ['view','submit'].indexOf(mw.config.get('wgAction')) !==  -1) {
 +
$( function() {
 +
GeoBox_Init();
 +
} );
 +
}
  
 
/**
 
/**
  * Réécriture des titres
+
  * permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
*
+
  * utilisé par [[Modèle:Aide contextuelle]]
  * Fonction utilisée par [[Modèle:Titre incorrect]]
+
  * known bug : conflit avec le changement de titre classique.
  *  
+
  * Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
* 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 rewritePageH1() {
+
function rewritePageH1bis() {
  var realTitleBanner = document.getElementById('RealTitleBanner');
+
var helpPage = document.getElementById("helpPage");
  if (realTitleBanner) {
+
if (helpPage) {
    if (!document.getElementById('DisableRealTitle')) {
+
var helpPageURL = document.getElementById("helpPageURL");
      var realTitle = document.getElementById('RealTitle');
+
var h1 = document.getElementById('firstHeading');
      var h1 = document.getElementsByTagName('h1')[0];
+
if (helpPageURL && h1) {
      if (realTitle && h1) {
+
h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
        var titleText = realTitle.innerHTML;
+
helpPage.style.display = "none";
        if (titleText == '') h1.style.display = 'none';
+
}
        else h1.innerHTML = titleText;
+
}
        realTitleBanner.style.display = 'none';
 
      }
 
    }
 
  }
 
 
}
 
}
 +
$( rewritePageH1bis );
  
addOnloadHook(rewritePageH1);
+
/**
 +
* 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',  } );
  
 
/**
 
/**
  * WikiMiniAtlas
+
  * Rétablit l'accès clavier à la fonction de tri des tableaux
*
 
* voir WP:WMA
 
 
  */
 
  */
document.write('<script type="text/javascript" src="'
+
$( function ($) {
    + 'http://meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js'
+
$( '.sortable th' ).attr( 'tabindex', 0 ).keypress( function( event ) {
    + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
+
if ( event.which === 13 ) {
 +
$( this ).click();
 +
}
 +
} );
 +
} );
  
var wma_settings = {
 
  buttonImage: 'http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Geographylogo.svg/18px-Geographylogo.svg.png'
 
}
 
  
 
/**
 
/**
  * Icônes de titre
+
  * Direct imagelinks to Commons
  *  
+
  *
  * Cherche les icônes de titre (class="icone de titre") et les
+
  * Required modules: mediawiki.RegExp, mediawiki.util
  * déplace à droite du titre de la page.
+
  *
  * Doit être exécuté après une éventuelle correction de titre.
+
* @source www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
 +
  * @author Krinkle
 +
* @version 2015-06-23
 +
* Ajouté le 'uselang' ce 18 janvier 2015 — Ltrlg
 
  */
 
  */
function IconesDeTitre() {
+
if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
  var h1 = document.getElementsByTagName("h1")[0];
+
mw.loader.using( [ 'mediawiki.RegExp', 'mediawiki.util' ] ).done(function(){
  var icones = document.getElementsByTagName("div");
+
mw.hook( 'wikipage.content' ).add( function ( $content ) {
  var icones2 = new Array();
+
var
  var j = 0;
+
uploadBase = '//upload.wikimedia.org/wikipedia/commons/',
  for (var i = 0; i < icones.length; ++i) {
+
    if (icones[i].className == "icone de titre") {
+
fileNamespace = mw.config.get( 'wgFormattedNamespaces' )['6'],
      icones2[j++] = icones[i];
+
localBasePath = new RegExp( '^' + mw.RegExp.escape( mw.util.getUrl( fileNamespace + ':' ) ) ),
    }
+
localBaseScript = new RegExp( '^' + mw.RegExp.escape( mw.util.wikiScript() + '?title=' + mw.util.wikiUrlencode( fileNamespace + ':' ) ) ),
  }
+
  for (; j > 0; --j) {
+
commonsBasePath = '//commons.wikimedia.org/wiki/File:',
    icones2[j-1].style.display = "block"; /* annule display:none par défaut */
+
commonsBaseScript = '//commons.wikimedia.org/w/index.php?title=File:';
    icones2[j-1].style.borderWidth = "1px";
+
    icones2[j-1].style.borderStyle = "solid";
+
$content.find( 'a.image' ).attr( 'href', function ( i, currVal ) {
    icones2[j-1].style.borderColor = "white";
+
if ( $( this ).find( 'img' ).attr( 'src' ).indexOf( uploadBase ) === 0 ) {
    h1.insertBefore(icones2[j-1], h1.firstChild); /* déplacement de l'élément */
+
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;
 +
}
 +
}
 +
} );
 +
} );
 +
} );
 
}
 
}
 
addOnloadHook(IconesDeTitre);
 
  
 
/**
 
/**
  * Déplacement de coordonnées qui apparaissent en haut de la page  
+
  * Ajout d'un lien « ajouter une section » en bas de page
 
  */
 
  */
function moveCoord() {
+
$( function( $ ) {
  var h1 = document.getElementsByTagName("h1")[0];
+
var $newSectionLink = $( '#ca-addsection a' );
  var coord = document.getElementById('coordinates');
+
if ( $newSectionLink.length ) {
  if ( !coord || !h1 ) return;
+
$( '#mw-content-text' ).append(
  coord.id = "coordinates-title";
+
'<div style="text-align:right; font-size:0.9em; margin:1em 0 -0.5em">'
  h1.insertBefore(coord, h1.firstChild);
+
+ '<a href="' + $newSectionLink.attr( 'href' ) + '" title="Commencer une nouvelle section">Ajouter un sujet</a>'
}
+
+ '</div>'
 
+
);
addOnloadHook(moveCoord);
+
}
 +
} );
  
 
/**
 
/**
  * Déplacement des [modifier]
+
  * 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.
* Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki.
 
*
 
* 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() {
+
// execute on window.load to try to get the best accuracy
  try {
+
$(window).load(function () {
    if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
+
    // scroll to the url hash if any
    var spans = document.getElementsByTagName("span");
+
    if (window.location.hash) {
    for (var s = 0; s < spans.length; ++s) {
+
         var currentTarget = document.getElementById(window.location.hash.substring(1));
      var span = spans[s];
+
         currentTarget.scrollIntoView(true);
      if (span.className == "editsection") {
 
         span.style.fontSize = "xx-small";
 
        span.style.fontWeight = "normal";
 
        span.style.cssFloat = span.style.styleFloat = "none";
 
        span.parentNode.appendChild(document.createTextNode(" "));
 
         span.parentNode.appendChild(span);
 
      }
 
 
     }
 
     }
  } catch (e) { /* something went wrong */ }
+
});
}
 
  
addOnloadHook(setModifySectionStyle);
+
/************************************************************/
 +
/* Function Strictement spécifiques à un espace de nom ou à une page */
 +
/************************************************************/
  
 
/**
 
/**
  * Cache cadres de l'accueil
+
  * Sur la page d'accueil uniquement
*
 
* Ajoute un lien sur la page d'accueil pour cacher facilement les cadres
 
* Mémorisé par cookie.
 
* Copyright 2007, fr:user:Plyd et fr:User:IAlex. Licence GFDL et GPL.
 
 
  */
 
  */
var cookieCacheCadresName = "cacheCadresAccueil";
+
if ( mw.config.get( 'wgIsMainPage' ) ) {
var CacheCadresVal = {};
 
var totalCadresAccueil = 0;
 
  
function affCadreAccueil(id) {
+
/**
  visible = CacheCadresVal[id] = (!CacheCadresVal[id]);
+
* Lien vers la liste complète des Wikipédias en bas de la liste des langues
  getElementsByClass('accueil_contenu',null,'div')[id].style.display = visible ? 'block' : 'none';
+
*/
  document.getElementById('CacheCadreAccueil' + id).innerHTML = visible ? 'masquer' : 'afficher';
+
mw.loader.using( [ 'mediawiki.util' ], function () {
  sauverCookieAccueil();
+
$( function() {
}
+
mw.util.addPortletLink( 'p-lang', '//www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias' );
 +
} );
 +
} );
  
function sauverCookieAccueil() {
 
  var date = new Date();
 
  date.setTime(date.getTime() + 30*86400*1000);
 
  var val = 0;
 
  for ( var i=0; i< totalCadresAccueil ; i++ ) {
 
    if (!CacheCadresVal[i]) val = val | Math.pow(2,i);
 
  }
 
  document.cookie = cookieCacheCadresName + "=" + val + "; expires="+date.toGMTString() + "; path=/";
 
 
}
 
}
  
function LiensCadresAccueil() {
+
// ESPACE DE NOM 'SPECIAL'
  if (wgPageName != "Accueil") return;
+
if ( mw.config.get( 'wgNamespaceNumber' ) === -1 ) {
  cookieCadresAccueil = getCookieVal(cookieCacheCadresName);
 
  for ( var i=0; i<5; i++) {
 
    var titre = getElementsByClass('headergris',document,'h2')[i];
 
    if (!titre) break;
 
    titre.innerHTML += " <span style='font-size: xx-small; font-weight: normal; float: none; margin-right:100px' class='editsection'>[<a id='CacheCadreAccueil" + i + "' href='javascript:affCadreAccueil(" + i + ");'>masquer</a>]</span>";
 
    CacheCadresVal[i] = true;
 
    totalCadresAccueil++;
 
  }
 
  cookieCadresAccueil = getCookieVal(cookieCacheCadresName);
 
  for ( var i=0; i< totalCadresAccueil ; i++ ) {
 
    n =Math.pow(2,i);
 
    aff = !(cookieCadresAccueil & n);
 
    if (!aff) affCadreAccueil(i);
 
  }
 
}
 
addOnloadHook(LiensCadresAccueil);
 
  
 
/**
 
/**
  * Déplace les liens portails vers la boite de catégorie
+
  * Ajoute le namespace aux filtres personnalisés sur [[Spécial:Pages liées]]
  *  
+
  * Voir aussi [[MediaWiki:Linkshere]]
* Copyright 2007, fr:user:Aoineko. Licence GFDL et GPL.
 
 
  */
 
  */
var gUseMovePortalToCategoryBox = 1;
+
if (mw.config.get('wgCanonicalSpecialPageName') === 'Whatlinkshere') {
 +
    $(document).ready(function ($) {
  
function movePortalToCategoryBox() {
+
        var query = (new mw.Uri()).query;
  if(!gUseMovePortalToCategoryBox)
 
      return;
 
  
  // search for portails
+
        var append = (query.namespace ? '&namespace=' + query.namespace : '')
  var div_portal = document.getElementById('portallinks');
+
            + (query.invert ? '&invert=' + query.invert : '');
  if(div_portal && (div_portal.className == 'movable')) {
+
 
      div_portal.style.display = 'none'; // hide the portail div
+
        if (append) {
      var div_cat = document.getElementById('catlinks'); // get cat div
+
            $('#whatlinkshere-customfilters').find('a').each(function () {
      if(!div_cat) { // no category box ? then create it
+
                this.href += append;
        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);
 
 
 
/*************************************/
 
/* Applications pour les rédacteurs  */
 
/*************************************/
 
 
/* todo : migrer celles qui ne sont pas vitales dans les gadgets */
 
  
 
/**
 
/**
  * Fonctions de remplissage automatique
+
  * 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 InitPaS(page_name) {
+
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Upload' ) {
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
importScript( 'MediaWiki:Onlyifuploading.js' );
        "{{subst:Initialiser PàS|" + page_name + "|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}\n" +
 
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des Pages à supprimer -->";
 
 
}
 
}
  
function InitLANN(page_name) {
+
/**
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
* Supprime de la liste des balises disponibles et de la liste des balises supprimables
        "{{subst:Initialiser LANN|" + page_name + "|~~~~}}\n" +
+
* certaines balises réservées à des outils automatiques
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des articles non neutres -->";
+
*/
}
+
if (mw.config.get('wgCanonicalSpecialPageName') === 'EditTags') {
  
function InitIaS(page_name) {
+
    mw.loader.using('mediawiki.special.edittags', function () {
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
        $(function ($) {
        "{{subst:Préchargement Image à Supprimer|" + page_name + "|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}\n" +
 
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des Images à supprimer -->";
 
}
 
  
function InitPAdQ(page_name) {
+
            var tagstokeep = [
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n\n" +
+
                'AWB',
        "{{subst:Initialiser PAdQ|" + page_name + "|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}";
+
                'BandeauxCategories',
}
+
                'BandeauxEbauches',
 +
                'BandeauxPortails',
 +
                'HotCats',
 +
                'LiveRC',
 +
                'PaFtec',
 +
                'PaStec',
 +
                'Popups',
 +
                'RenommageCategorie',
 +
                'WPCleaner',
 +
                'C-helper'
 +
            ];
  
function InitIaA(page_name) {
+
            function shouldkeep(tag) {
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
                return tagstokeep.indexOf(tag) !== -1;
        "{{subst:Amélioration image}}";
+
            }
}
 
  
function InitPCP(page_name) {
+
            if ($('div.permissions-errors').length) {
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
return;
        "{{subst:Initialiser PCP|" + page_name + "|~~~~}}\n" +
+
}
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des\n" +
 
        "    articles soupçonnées de violation de copyright -->";
 
}
 
  
function InitArbReq(page_name) {
+
            var $container = $('#mw_edittags_tag_list_chzn');
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
            $container.find('li.search-choice').each(function (i, choice) {
        "{{subst:Wikipédia:Comité d'arbitrage/Arbitrage/Modèle}}\n" +
+
                var choicetext = choice.firstChild.innerHTML;
        "<!-- N'oubliez pas d'ajouter un lien vers cette page sur [[Wikipédia:Comité d'arbitrage/Arbitrage]] -->";
+
                if (shouldkeep(choicetext)) {
}
+
                    var $deletelink = $(choice).find('a.search-choice-close');
 
+
                    if ($deletelink.length) {
function InitDiscArbReq(page_name) {
+
                        $deletelink.remove();
  return "<!-- Sauvegarder la page pour l'initialiser -->\n" +
+
                        $(choice).css('padding-right', '-=15px');
        "{{subst:Discussion Wikipédia:Comité d'arbitrage/Arbitrage/Modèle}}";
+
                    }
}
+
                }
 +
            });
 +
            $container.find('li.active-result').each(function (i, activeresult) {
 +
                var activeresulttext = activeresult.innerHTML;
 +
                if (shouldkeep(activeresulttext)) {
 +
                    $(activeresult).remove();
 +
                }
 +
            });
  
function InitCdl(page_name) {
+
            var canremoveall = true;
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
            $('input.mw-edittags-remove-checkbox').each(function (i, checkbox) {
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale du comité de lecture -->\n\n" +
+
                if (shouldkeep(checkbox.value)) {
        "<noinclude>{{subst:Initialiser Comité de lecture2}}</noinclude>\n" +
+
                    checkbox.disabled = 'disabled';
        "{{subst:Initialiser Comité de lecture|" + page_name + "|~~~~}}";
+
                    canremoveall = false;
}
+
                }
 +
            });
 +
            if (!canremoveall) {
 +
                $('#mw-edittags-remove-all').prop('disabled', true);
 +
            }
  
function InitProjetTraduction(page_name) {
+
        });
  var mustSkip=wgPageName.indexOf('Projet:Traduction/*/');
+
     });
  if (mustSkip == -1) {
 
     return "{{subst:Initialiser la page de traduction|{{subst:SUBPAGENAME}}|~~~~|\n" +
 
          "<!--  À la création de la page, suivez les consignes ci-dessous pour proposer l'article.    \n" +
 
          "      ATTENTION : Veuillez ne rien effacer !                                            -->\n" +
 
          "1. Indiquez ci-dessous la langue de l'article à traduire (ex: en de es it pt...)\n" +
 
          "|en|\n" +
 
          "2. Indiquez ci-dessous le nom de l'article original (ex: Frankreich)\n" +
 
          "|Nom original ici| \n" +
 
          "3. Indiquez ci-dessous en une phrase l'intérêt de la traduction\n" +
 
          "|article très bien|\n" +
 
          "4. Ajoutez éventuellement un court commentaire \n" +
 
          "|commentaire très intéressant ici|\n" +
 
          "| 5. C'est fini, vous pouvez désormais sauvegarder cette page.\n" +
 
          "}}";  
 
  } else {
 
    return "";
 
  }
 
 
}
 
}
  
function InitPBA(page_name) {
+
} // Fin du code concernant l'espace de nom 'Special'
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n\n" +
 
        "{{subst:Initialiser PBA|" + page_name + "|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}";
 
}
 
  
function InitPL(page_name) {
 
  return "<!-- Remplir les paramètres mois et année à la sous page correspondante, et créer les liens rouges -->\n" +
 
        "{{Portail:Littérature/Invitation à la lecture/Sélection/Modèle \n" +
 
        "| mois = \n" +
 
        "| année = \n" +
 
        "}} \n" +
 
        "<noinclude>{{Portail:Littérature/Invitation à la lecture/Sélection/Modèle inclusion \n" +
 
        "| mois = \n" +
 
        "| année = \n" +
 
        "}} \n" +
 
        "</noinclude>";
 
}
 
  
 +
// ESPACE DE NOM 'UTILISATEUR'
 +
if ( mw.config.get( 'wgNamespaceNumber' ) === 2 ) {
  
var init_if_empty = new Array(
+
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
  new Array('Wikipédia:Pages_à_supprimer/', InitPaS),
+
* Fonctionnement du [[Modèle:Cadre à onglets]]
  new Array('Wikipédia:Liste_des_articles_non_neutres/', InitLANN),
+
* Modèle implanté par User:Peleguer de https://ca.wikipedia.org
  new Array('Wikipédia:Images_à_supprimer/', InitIaS),
+
* Actualisé par User:Joanjoc de https://ca.wikipedia.org
  new Array('Wikipédia:Proposition_articles_de_qualité/', InitPAdQ),
+
* Traduction et adaptation User:Antaya de https://fr.wikipedia.org
  new Array('Wikipédia:Pages_soupçonnées_de_violation_de_copyright/', InitPCP),
+
* Indépendance de classes CSS et nettoyage par User:Nemoi de https://fr.wikipedia.org
  new Array('Discussion_Wikipédia:Comité_d\'arbitrage/Arbitrage/', InitDiscArbReq),
+
*/
  new Array('Wikipédia:Comité_d\'arbitrage/Arbitrage/', InitArbReq),
 
  new Array('Wikipédia:Comité_de_lecture/', InitCdl),
 
  new Array('Projet:Traduction/', InitProjetTraduction),
 
  new Array('Wikipédia:Proposition_bons_articles/', InitPBA),
 
  new Array('Portail:Littérature/Invitation_à_la_lecture/Sélection/', InitPL)
 
);
 
  
/**
+
var CadreOngletVoirOngletN = function () {
* Remplit la zone d'édition si elle est vide avec le texte retourné par
+
var vOngletNom = this.id.substr(0,this.id.indexOf("onglet",1));
* un pointeur de fonction sélectionné par le nom de la page.
+
var vOngletIndex = this.id.substr(this.id.indexOf("onglet",0)+6,this.id.length);
*/
 
function InitPage() {
 
  // Tester si editform et wpTextbox1 existe sinon il y a une erreur lorsqu'on
 
  // ouvre l'historique d'une page qui match un des noms de init_if_empty[],
 
  // tester seulement le nom de la page n'est pas suffisant.
 
  if (document.editform == undefined || document.editform.wpTextbox1 == undefined) return;
 
  var text_area = document.editform.wpTextbox1;
 
  if (text_area.value.length != 0) return;
 
  for (var i = 0; i < init_if_empty.length; ++i) {
 
    var page_match = init_if_empty[i][0];
 
    var index = wgPageName.indexOf(page_match);
 
    if (index != -1) {
 
      page_name = wgPageName.slice(page_match.length);
 
      page_name = page_name.replace(/_/g, ' ');
 
      text_area.value = init_if_empty[i][1](page_name);
 
      break;
 
    }
 
  }
 
}
 
  
addOnloadHook(InitPage);
+
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");
* Caractères spéciaux
 
*
 
* Ajouter un menu pour choisir des sous-ensembles de caractères spéciaux.
 
* Ecrit par Zelda, voir sur [[Utilisateur:Zelda/Edittools.js]].
 
* Remplace l'ancienne fonction par une variante plus rapide.
 
*/
 
  
/**
+
for ( var j = 0; j < Onglets.length; j++) {
* Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
+
var Onglet = Onglets[j];
* Les caractères spéciaux sont définis dans Mediawiki:Edittools
+
var Feuillet = document.getElementById(vOngletNom + "feuillet" + j);
*/
 
function addCharSubsetMenu() {
 
  var specialchars = document.getElementById('specialcharsets');
 
  if (!specialchars) return;
 
  
  // Construction du menu de selection
+
if (vOngletIndex === j) {
  var charSubsetSelect = document.createElement("select");
+
Feuillet.style.display = "block";
  charSubsetSelect.setAttribute("style", "display:inline");
+
Feuillet.style.visibility = "visible";
  charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
+
$(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;
 +
};
  
  // Ajout des options au menu
+
var CadreOngletInitN = function ( $ ) {
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
+
var i, j, Onglet, Feuillet;
  for (var i = 0; i < p.length ; i++) {
+
var Classeurs = $('div.classeur');
    var opt = document.createElement("option");
+
for ( i = 0; i < Classeurs.length; i++ ) {
    var txt = document.createTextNode(p[i].title);
+
var Classeur = Classeurs[i];
    opt.appendChild(txt);
 
    charSubsetSelect.appendChild(opt);
 
  }
 
  
  specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
+
Classeur.setAttribute( "id", "classeur" + i );
  
  /* default subset - try to use a cookie some day */
+
var vOgIni = -1; // pour connaître l’onglet renseigné
  chooseCharSubset(0);
 
}
 
  
/**
+
var Onglets = $(Classeur).children("div").eq(0).children("div");
* Affichage du jeu de caractères sélectionné
+
var Feuillets = $(Classeur).children("div").eq(1).children("div");
*/
 
function chooseCharSubset(index) {
 
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
 
  for (var i = 0; i < p.length ; i++) {
 
    // Initialisation du jeu de caractères sélectionné
 
    if (i == index) {
 
    initializeCharSubset(p[i]);
 
    }
 
    // Affichage du jeu sélectionné, masquage des autres
 
    p[i].style.display = i == index ? 'inline' : 'none';
 
    p[i].style.visibility = i == index ? 'visible' : 'hidden';
 
  }
 
}
 
  
/**
+
for ( j = 0; j < Onglets.length; j++ ) {
* Initialisation du jeu de caractères sélectionné
+
Onglet = Onglets[j];
* Paramètre : paragraphe contenant le jeu à initialiser. Initialise tous les
+
Feuillet = Feuillets[j];
* caractères contenus dans les sous-spans du paragraphe
 
*/
 
function initializeCharSubset(p) {
 
  // recherche des sous-elements de type span à traiter
 
  var spans = p.getElementsByTagName("span");
 
  if (!spans) return;
 
  
  // regexp pour echapper les caractères JS spéciaux : \ et '
+
Onglet.setAttribute( "id", "classeur" + i + "onglet" + j );
  var re = new RegExp("(\\\\|')", "g");
+
Feuillet.setAttribute( "id", "classeur" + i + "feuillet" + j );
  // gestion du caractère d'échappement '\'
+
Onglet.onclick = CadreOngletVoirOngletN;
  var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
 
  var unescapeRe = new RegExp("\\\\\\\\", "g");
 
  
  // traitement des spans du paragraphe
+
if ( $( Onglet ).hasClass( 'ongletBoutonSel' ) ) {
  for (var j = 0; j < spans.length; j++) {
+
vOgIni=j;
    // span deja traité
+
}
    if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;
+
}
  
    // On parse le contenu du span
+
// inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
    var chars = spans[j].childNodes[0].nodeValue.split(" ");
+
if (vOgIni === -1) {
    for (var k = 0; k < chars.length; k++) {
+
vOgIni = Math.floor((Onglets.length)*Math.random());
      var a = document.createElement("a");
+
document.getElementById("classeur"+i+"feuillet"+vOgIni).style.display = "block";
      var tags = chars[k];
+
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";
 +
}
 +
}
 +
};
  
      // regroupement des mots se terminant par un espace protégé par un \
+
$( CadreOngletInitN );
      while (k < chars.length && chars[k].match(escapeRe)) {
+
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
      k++;
 
tags = tags.substr(0, tags.length - 1) + " " + chars[k];
 
      }
 
  
      // création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et '
+
} // Fin du code concernant l'espace de nom 'Utilisateur'
      tags = (tags.replace(unescapeRe, "\\")).split("+");
 
      var tagBegin = tags[0].replace(re, "\\$1");
 
      var tagEnd = tags.length > 1 ? tags[1].replace(re, "\\$1") : "";
 
      var defaultValue = tags.length > 2 ? tags[2].replace(re, "\\$1") : "";
 
      a.href = "javascript:insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "')";
 
      //a.href="#";
 
      //eval("a.onclick = function() { insertTags('" + tagBegin + "','" + tagEnd + "', '" + defaultValue + "'); return false; }");
 
  
      a.appendChild(document.createTextNode((tagBegin + tagEnd).replace(unescapeRe, "\\")));
 
      spans[j].appendChild(a);
 
      spans[j].appendChild(document.createTextNode(" "));
 
    }
 
    // suppression de l'ancien contenu
 
    spans[j].removeChild(spans[j].firstChild);
 
  }
 
}
 
  
addOnloadHook(addCharSubsetMenu);
+
// ESPACE DE NOM 'RÉFÉRENCE'
 +
if ( mw.config.get( 'wgNamespaceNumber' ) === 104 ) {
  
/**
+
/*
  * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
+
  * Choix du mode d'affichage des références
  * paramètres :
+
  * Devraient en principe se trouver côté serveur
  * - nom du jeu de caractères
+
  * @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
* - contenu HTML. Les caractères spéciaux doivent être dans des spans
 
*  exemple : "caractères : <span>â ê î ô û</span>"
 
 
  */
 
  */
function addSpecialCharsetHTML(title, charsHTML) {
 
  var specialchars = document.getElementById('specialcharsets');
 
  if (!specialchars) return;
 
  
  // Ajout des caractères spéciaux. Les liens seront initialisé par initializeCharSubset()
+
// select subsection of special characters
  // lors de la sélection
+
var chooseBibSubset = function (s) {
  var specialcharsets = document.getElementById('specialcharsets');
+
var l = document.getElementsByTagName('div');
  var p = document.createElement("p");
+
for (var i = 0; i < l.length; i++) {
  p.style.display = "none";
+
if (l[i].className === 'BibList') {
  p.title = title;
+
l[i].style.display = s === 0 ? 'block' : 'none';
  p.innerHTML = charsHTML;
+
} else if (l[i].className === 'WikiNorme') {
  specialcharsets.appendChild(p);
+
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';
* Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
+
var menu = '<select style="display:inline;" onChange="chooseBibSubset(selectedIndex)">'
* paramètres :
+
+ '<option>Liste</option>'
* - nom du jeu de caractères
+
+ '<option>WikiNorme</option>'
* - caractères spéciaux
+
+ '<option>BibTeX</option>'
* exemple d'utilisation : addSpecialCharset("Français", "â ê î ô û");
+
+ '<option>ISBD</option>'
*/
+
+ '<option>ISO690</option>'
function addSpecialCharset(title, chars) {
+
+ '</select>';
  addSpecialCharsetHTML(title, "<span>" + chars + "</span>");
+
specialBib.innerHTML = specialBib.innerHTML + menu;
}
 
  
/**
+
/* default subset - try to use a cookie some day */
* Générateur de tableaux
+
chooseBibSubset(0);
* English: Generate an array using Mediawiki syntax
+
};
*
 
* @author: fr:user:dake
 
* @version: 0.2
 
*/
 
  
function generateTableau(nbCol, nbRow, styleHeader, styleLine) {
+
$( addBibSubsetMenu );
  var code = "\n{| " +
+
} // Fin du code concernant l'espace de nom 'Référence'
    ((styleHeader==1) ? 'class="wikitable"' : '')+
 
    '\n|+ Titre du tableau\n';
 
   
 
  for (var i=0; i<nbCol; i++) code += '! en-tête ' + i + '\n';
 
   
 
  for (var j=0; j<nbRow; j++) {
 
    if ((j+1)%2==0 && styleLine==1) {
 
      code += '|-{'+'{ligne grise}'+'}\n';
 
    } else {           
 
      code += '|-----\n';
 
    }
 
         
 
    for (var i=0; i<nbCol; i++) code += '| élément\n';
 
  }
 
   
 
  code += '|}';
 
  insertTags('','', code);
 
}
 
  
/**
+
// TOUS LES ESPACES DE NOMS SAUF L'ESPACE PRINCIPAL
* English: Open a popup with parameters to generate an array.
 
* The number of rows/columns can be modified. Some additional
 
* parameters are related to templates available on :fr
 
*
 
* @author: fr:user:dake
 
* @version: 0.1
 
*/
 
  
function popupTableau() {
+
/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
  var popup = window.open('','name','height=400,width=500');
+
/* Plyd - 3 février 2009 */
 
+
function Rebours() {
  javaCode =  '<script type="text\/javascript">function insertCode(){';
+
try {
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
+
if (document.getElementById("rebours")) {
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
+
var destime, Maintenant, Future, Diff, TempsRestantJ, TempsRestantH, TempsRestantM, TempsRestantS, TempsRestant;
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
+
destime = document.getElementById("rebours").title.HTMLize().split(";;");
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
+
Maintenant = (new Date ()).getTime();
  javaCode += 'window.opener.generateTableau(col,row,styleHeader,styleLine); ';
+
Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime();
  javaCode += '}<\/script>';
+
Diff = (Future-Maintenant);
 
+
if (Diff < 0) {Diff = 0;}
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
+
TempsRestantJ = Math.floor(Diff/(24*3600*1000));
  popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
+
TempsRestantH = Math.floor(Diff/(3600*1000)) % 24;
  popup.document.write('<style type="text\/css" media="screen">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>');
+
TempsRestantM = Math.floor(Diff/(60*1000)) % 60;
  popup.document.write(javaCode);  
+
TempsRestantS = Math.floor(Diff/1000) % 60;
  popup.document.write('</head><body>');
+
TempsRestant = "" + destime[6] + " ";
  popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>');
+
if (TempsRestantJ === 1) {
  popup.document.write('<form name="paramForm">');
+
TempsRestant = TempsRestant + TempsRestantJ + " jour ";
  popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>');
+
} else if (TempsRestantJ > 1) {
  popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>');
+
TempsRestant = TempsRestant + TempsRestantJ + " jours ";
  popup.document.write('Mise en forme (wikitable) : <input type="checkbox" name="inputHeader" checked="1" ><p>');
+
}
  popup.document.write('Lignes grises alternées : <input type="checkbox" name="inputLine" checked="0" ><p>');
+
TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s";
  popup.document.write('</form">');
+
document.getElementById("rebours").innerHTML = TempsRestant;
  popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>');
+
setTimeout( function () { Rebours(); }, 1000);
  popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
+
}
  popup.document.write('</body></html>');
+
} catch (e) {}
  popup.document.close();
 
 
}
 
}
  
/**
+
// Personnalisation des liens dans les pages d'aide selon un paramètre de l'URL.
* Insertion de nouveaux boutons dans la barre d'outil
+
// 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 ) );
 +
}
 +
} );
 +
}
  
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
+
if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) {
  mwCustomEditButtons[mwCustomEditButtons.length] =
+
$( Rebours );
    {"imageId": imageId,
+
$( ReplaceSourcePageInLinks );
    "imageFile": imageFile,
 
    "speedTip": speedTip,
 
    "tagOpen": tagOpen,
 
    "tagClose": tagClose,
 
    "sampleText": sampleText};
 
 
}
 
}
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png',
 
                'Tableau',
 
                '{|\n|-\n|\n|\n|}',
 
                '',
 
                '',
 
                'mw-editbutton-array');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
 
                'Rayer',
 
                '<s>',
 
                '</s>',
 
                '',
 
                'mw-editbutton-strike');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png',
 
                'Énumération',
 
                '\n# élément 1\n# élément 2\n# élément 3',
 
                '',
 
                '',
 
                'mw-editbutton-enum');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png',
 
                'Liste',
 
                '\n* élément A\n* élément B\n* élément C',
 
                '',
 
                '',
 
                'mw-editbutton-liste');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png',
 
                'Galerie d\'images',
 
                '\n<gallery>\nImage:Exemple.jpg|[[Tournesol]]\nImage:Exemple1.jpg|[[La Joconde]]\nImage:Exemple2.jpg|Un [[hamster]]\n</gallery>\n{{message galerie}}',
 
                '',
 
                '',
 
                'mw-editbutton-gallery');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png',
 
                'Commentaire',
 
                '<!--',
 
                '-->',
 
                '',
 
                'mw-editbutton-comment');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/47/Button_redir.png',
 
                'Redirection',
 
                '#REDIRECT [[',
 
                ']]',
 
                'nom de la destination',
 
                'mw-editbutton-redir');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png',
 
                'Catégorie',
 
                '[[Catégorie:',
 
                ']]',
 
                'nom de la catégorie',
 
                'mw-editbutton-category');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png',
 
                'Modèle',
 
                '{{',
 
                '}}',
 
                'modèle ou page à inclure',
 
                'mw-editbutton-template');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png',
 
                'Référence',
 
                '<ref>',
 
                '</ref>',
 
                'référence, citation ou lien',
 
                'mw-editbutton-ref');
 
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/64/Buttonrefvs8.png',
 
                'Index des références',
 
                '== Notes et références ==\n<references />',
 
                '',
 
                '',
 
                'mw-editbutton-references');
 
 
var voirAussi = '<!-- Suggestion de présentation des annexes. Aide : http://fr.wikipedia.org/wiki/Aide:Note -->\n'
 
+ '== Notes et références de l\'article ==\n'
 
+ '<references/>\n'
 
+ '== Voir aussi ==\n'
 
+ '=== Articles connexes ===\n'
 
+ '* [[À remplacer]]\n'
 
+ '*\n'
 
+ '=== Liens et documents externes ===\n'
 
+ '*\n';
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png',
 
                'Section Voir aussi',
 
                voirAussi,
 
                '',
 
                '',
 
                'mw-editbutton-voiraussi');
 
  
 
/**
 
/**
  * Changer le lien du bouton de création de tableau et supprime le bouton signature sur les articles
+
  * Ajoute la date de dernière modification sur le bandeau événement récent
 
  */
 
  */
function changButtons() {
+
function LastModCopy( $ ) {
  toolbarArray = document.getElementById('mw-editbutton-array');
+
// L'id change entre Monobook et Modern d'une part, et Vector d'autre part
  if (toolbarArray) {
+
$( '.lastmodcopy' ).html( $( '#lastmod, #footer-info-lastmod' ).html() );
    toolbarArray.onclick = function() {
 
      popupTableau();
 
      return false;
 
    }
 
  }
 
 
 
  var btnSigImg = document.getElementById('mw-editbutton-signature');
 
  if (btnSigImg && wgNamespaceNumber == 0) btnSigImg.style.display = "none";
 
 
}
 
}
addOnloadHook(changButtons);
+
$( LastModCopy );
 
 
  
 
/**
 
/**
  * Désactiver le bouton Sauvegarder à la première édition
+
  * Import des scripts liés à la liste de suivi
* English : Force IP to preview before saving changes.
 
* Copyright Marc Mongenet, 2006
 
* Plyd 05/2007: add "after preview" in the button to prevent misunderstanding from beginners
 
 
  */
 
  */
function forcePreview() {
+
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ) {
  if (wgUserName != null || wgAction != "edit") return;
+
importScript( 'MediaWiki:Common.js/watchlist.js' );
  saveButton = document.getElementById("wpSave");
 
  if (!saveButton) return;
 
  saveButton.disabled = true;
 
  saveButton.value = "Sauvegarder (après prévisualisation)";
 
  saveButton.style.fontWeight = "normal";
 
  document.getElementById("wpPreview").style.fontWeight = "bold";
 
 
}
 
}
  
addOnloadHook(forcePreview);
+
/*********************************/
 +
/* 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;
  
//</nowiki>
+
//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()]);
  
function includePage( name )
+
return (str_date);
{
 
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 à 10: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);
}