« MediaWiki:Common.js » : différence entre les versions

De Baripedia
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 : Ligne 1 :
/**
/* Any JavaScript here will be loaded for all users on every page load. */
* IMPORTANT: There is a re-writing/jquerization of this page in [[Projet:JavaScript/Refonte Common.js avec jQuery]], but has not been tested.
* Il y a une ré-écriture de cette page en utilisant jQuery sur [[Projet:JavaScript/Refonte Common.js avec jQuery]], mais n'a pas été testé.
*/


/**
/**
  * N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
  * Add the signature button to namespace 0 (main/default namespace)
*
  * @author Roan (Catrope)
  * 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
*
* <nowiki> /!\ Ne pas retirer cette balise
  */
  */
$( function () {
if ( !$.fn.wikiEditor ) {
return;
}


 
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
 
section: 'main',
/*************************************************************/
group: 'insert',
/* Fonctions JavaScript : pallient les limites de JavaScript */
tools: {
/* Surveiller : http://www.ecmascript.org/                  */
'signature-ns0': {
/*************************************************************/
labelMsg: 'wikieditor-toolbar-tool-signature',
 
filters: [ 'body.ns-0' ], // ONLY ns 0
/**
type: 'button',
* insertAfter : insérer un élément dans une page
offset: [2, -1872],
*/
icon: 'insert-signature.png',
function insertAfter(parent, node, referenceNode) {
action: {
  parent.insertBefore(node, referenceNode.nextSibling);
type: 'encapsulate',
}
options: {
 
pre: '--~~' + '~~'
/**
}
* getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
}
*/
function getElementsByClass(searchClass, node, tag) {
  if (node == null) node = document;
  if (tag == null) tag = '*';
  return $.makeArray( $(node).find(tag+'.'+searchClass) );
}
 
/**
* Diverses fonctions manipulant les classes
* 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, 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
*/
function isClass(element, classe) {
    return hasClass(element, classe);
}
 
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) {
    var haystack = node.className;
    if(!haystack) return false;
    if (className === haystack) {
        return true;
    }
    return (" " + haystack + " ").indexOf(" " + className + " ") > -1;
}
 
function addClass(node, className) {
    if (hasClass(node, className)) {
        return false;
    }
    var cache = node.className;
    if (cache) {
        node.className = cache + ' ' + className;
    } else {
        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) {
    return subject.replace(new RegExp(search,'g'), replace);
}
 
 
/**
* Récupère la valeur du cookie
*/
function getCookieVal(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
function getTextContent(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;
      break;
    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;
      break;
  }
  var _textContent = "";
  oNode = oNode.firstChild;
  while (oNode) {
    _textContent += getTextContent(oNode);
    oNode = oNode.nextSibling;
  }
  return _textContent;
}
 
// Array.indexOf : recherche un élément dans un tableau
 
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(obj) {
for (var i=0; i<this.length; i++) {
if (this[i] == obj){
return i;
}
}
}
}
return -1;
});
}
} );
}
 
if(!String.prototype.HTMLize){
  String.prototype.HTMLize = function() {
    var chars = new Array('&','<','>','"');
    var entities = new Array('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://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/skins/common/wikibits.js?view=log  */
/**********************************************************************************************************/
 
/*
* Fonction générales de lancement de fonctions ou de script
* DÉPRÉCIÉ : utiliser addOnloadHook simplement
*/
function addLoadEvent(func) {
  addOnloadHook(func);
}
 
/**
* Insérer un JavaScript d'une page particulière, idée de Mickachu
* DÉPRÉCIÉ : utiliser importScript qui fait partie du logiciel
*/
function loadJs(page) {
  importScript(page);
}


/**
/**
  * Projet JavaScript
  * Collapsible tables
*/
function obtenir(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(  (wgPageName.search('Wikipédia:Le_Bistro') != -1)
    || (wgPageName.search('Wikipédia:Bulletin_des_administrateurs') != -1)
    || document.getElementById('transformeEnPageDeDiscussion')) {
    removeClass(document.body, 'ns-subject');
    addClass(document.body, 'ns-talk');
  }
}
addOnloadHook(TransformeEnDiscussion);
 
/**
* Transformer certaines pages en pseudo-article
* c'est raisonnable ? --Tavernier
*/
function TransformeEnArticle() {
  var transformeEnA = document.getElementById("transformeEnArticle");
  if(transformeEnA) document.body.className = "ns-0";
}
addOnloadHook(TransformeEnArticle);
 
/**
* Ajouter un bouton à la fin de la barre d'outils
*/
 
if(typeof(mwCustomEditButtons)=="undefined") mwCustomEditButtons = new Array();
 
if(typeof(addCustomButton)=="undefined"){
  function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
    mwCustomEditButtons[mwCustomEditButtons.length] =
      {"imageId": imageId,
      "imageFile": imageFile,
      "speedTip": speedTip,
      "tagOpen": tagOpen,
      "tagClose": tagClose,
      "sampleText": sampleText};
  }
}
 
 
/****************************************/
/* Applications pour l'ensemble du site */
/****************************************/
 
/**
* Tout ce qui concerne la page d'édition
* Voir MediaWiki:Common.js/edit.js pour ces fonctions
*/
if( mw.config.get('wgAction') == 'edit' || mw.config.get('wgAction') == 'submit' ) {
  importScript( 'MediaWiki:Common.js/edit.js' );
}
 
/**
* Réécriture des titres
  *
  *
  * Fonction utilisée par [[Modèle:Titre incorrect]]
  * Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
  *
  * @maintainer [[User:R. Koot]] (on Wikipedia)
* 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() {
  var realTitleBanner = document.getElementById('RealTitleBanner');
  if (realTitleBanner) {
    if (!document.getElementById('DisableRealTitle')) {
      var realTitle = document.getElementById('RealTitle');
      var h1 = document.getElementById('firstHeading');
      if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
      var realH1 = getTextContent(h1);
      if (realTitle && h1) {
        var titleText = realTitle.innerHTML;
        if (titleText == '') h1.style.display = 'none';
        else h1.innerHTML = titleText;
        realTitleBanner.style.display = 'none';
        var avert = document.createElement('p')
        avert.style.fontSize = '80%';
        avert.innerHTML = 'Titre à utiliser pour créer un lien interne : <b>'+realH1.HTMLize()+'</b>';
        insertAfter(h1.parentNode,avert,h1);
      }
    }
  }
}
addOnloadHook(rewritePageH1);


/**
var autoCollapse = 2;
* Icônes de titre
var collapseCaption = 'hide';
*
var expandCaption = 'show';
* Cherche les icônes de titre (class="icone_de_titre") et les
* déplace à droite du titre de la page.
* Doit être exécuté après une éventuelle correction de titre.
*/
function IconesDeTitre() {
  var h1 = document.getElementById('firstHeading');
  if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
  if(!h1) return;
  var icones = getElementsByClass( "icone_de_titre", document, "div" );
  for( var j = icones.length; j > 0; --j ){
    icones[j-1].style.display = "block"; /* annule display:none par défaut */
    if(( skin == "modern" )||( skin == "vector" )){
      icones[j-1].style.marginTop = "0em";
    }
    h1.parentNode.insertBefore(icones[j-1], h1); /* déplacement de l'élément */
  }
}
addOnloadHook(IconesDeTitre);


/**
function hasClass( element, className ) {
* Déplacement de coordonnées qui apparaissent en haut de la page
var Classes = element.className.split( " " );
*/
for ( var i = 0; i < Classes.length; i++ ) {
function moveCoord() {
if ( Classes[i] == className ) {
  var h1 = document.getElementById('firstHeading');
return true;
  if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
}
  var coord = document.getElementById('coordinates');
}
  if ( !coord || !h1 ) return;
return false;
  coord.id = "coordinates-title";
  h1.parentNode.insertBefore(coord, h1); /* déplacement de l'élément */
}
}
addOnloadHook(moveCoord);


// Verwendung von OpenStreetMap in Wikipedia.
function collapseTable( tableIndex ) {
// (c) 2008 by Magnus Manske
var i;
// Released under GPL
var Button = document.getElementById( 'collapseButton' + tableIndex );
// Modifié pour marcher après moveCoord() ci-dessus
var Table = document.getElementById( 'collapsibleTable' + tableIndex );


if(typeof(MoveResizeAbsolute_AddMoveArea)!="function") obtenir('MoveResizeAbsolute');
if ( !Table || !Button ) {
return false;
}


function openStreetMap_Init () {
var Rows = Table.getElementsByTagName( 'tr' );
  var c = document.getElementById ( 'coordinates-title' ) ;
  if ( !c ) return ;


  var a = c.getElementsByTagName ( 'a' ) ;
if ( Button.firstChild.data == collapseCaption ) {
  var geohack = false;
for ( i = 1; i < Rows.length; i++ ) {
  for ( var i = 0 ; i < a.length ; i++ ) {
Rows[i].style.display = 'none';
    var h = a[i].href ;
}
    if ( !h.match(/geohack/) ) continue ;
Button.firstChild.data = expandCaption;
    if (h.match(/skyhack/)) continue;
} else {
    if (h.match(/_globe:(?!earth)/)) continue; // no OSM for moon, mars, etc
for ( i = 1; i < Rows.length; i++ ) {
    geohack = true ;
Rows[i].style.display = Rows[0].style.display;
    break ;
}
  }
Button.firstChild.data = collapseCaption;
  if ( !geohack ) return ;
}
 
  var na = document.createElement ( 'a' ) ;
  na.id = "coordinates_osm";
  na.href = 'javascript:openStreetMap_Toggle();' ;
  na.title = 'Afficher/Masquer la carte' ;
  var im = document.createElement('img');
  im.src = '//upload.wikimedia.org/wikipedia/commons/thumb/c/c9/OpenStreetMapLogo.png/17px-OpenStreetMapLogo.png';
  im.width = 17;
  im.alt = "osm";
  na.appendChild ( im ) ;
  na.appendChild ( document.createTextNode ( ' carte' ) ) ;
  c.appendChild ( na ) ;
}
}


function openStreetMap_Toggle () {
function createCollapseButtons() {
  var c = document.getElementById ( 'coordinates-title' ) ;
var i;
  if ( !c) return ;
var tableIndex = 0;
  var osm = document.getElementById ( 'OpenStreetMap' ) ;
var NavigationBoxes = {};
var Tables = document.getElementsByTagName( 'table' );


  if (osm) {
for ( i = 0; i < Tables.length; i++ ) {
    if ( osm.style.display == 'none' ) {
if ( hasClass( Tables[i], 'collapsible' ) ) {
      osm.style.display = 'block' ;
NavigationBoxes[ tableIndex ] = Tables[i];
    } else {
Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );
      osm.style.display = 'none' ;
    }
    return;
  }


  var found_link = false ;
var Button = document.createElement( 'span' );
  var a = c.getElementsByTagName ( 'a' ) ;
var ButtonLink = document.createElement( 'a' );
  var h;
var ButtonText = document.createTextNode( collapseCaption );
  for ( var i = 0 ; i < a.length ; i++ ) {
    h = a[i].href ;
    if ( !h.match(/geohack/) ) continue ;
    if (h.match(/skyhack/)) continue;
    if (h.match(/_globe:(?!earth)/)) continue; // no OSM for moon, mars, etc
    found_link = true ;
    break ;
  }
  if ( !found_link ) return ; // No geohack link found


  h = h.split('params=')[1] ;
Button.style.styleFloat = 'right';
Button.style.cssFloat = 'right';
Button.style.fontWeight = 'normal';
Button.style.textAlign = 'right';
Button.style.width = '6em';


  var LargeurEcran = MoveResizeAbsolute_GetScreenWidth();
ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
  var HauteurEcran = MoveResizeAbsolute_GetScreenHeight();
ButtonLink.setAttribute( 'href', 'javascript:collapseTable(' + tableIndex + ');' );
ButtonLink.appendChild( ButtonText );


  var OSMDiv = document.createElement('div');
Button.appendChild( document.createTextNode( '[' ) );
  OSMDiv.id = 'OpenStreetMap' ;
Button.appendChild( ButtonLink );
  OSMDiv.style.position = "absolute";
Button.appendChild( document.createTextNode( ']' ) );
  OSMDiv.style.zIndex = 5000;
  OSMDiv.style.top = (HauteurEcran*10/100) + "px";
  OSMDiv.style.left = (LargeurEcran*15/100) + "px";
  OSMDiv.style.width = "70%";
  OSMDiv.style.height = (HauteurEcran*80/100) + "px";
  OSMDiv.style.border = "2px solid black";
  OSMDiv.style.backgroundColor = "white";
  OSMDiv.style.overflow = "hidden";


  var MoveArea = document.createElement('div');
var Header = Tables[i].getElementsByTagName( 'tr' )[0].getElementsByTagName( 'th' )[0];
  MoveArea.style.position = "relative";
/* only add button and increment count if there is a header row to work with */
  MoveArea.style.top = "0";
if (Header) {
  MoveArea.style.width = "100%";
Header.insertBefore( Button, Header.childNodes[0] );
  MoveArea.style.height = "50px";
tableIndex++;
  MoveArea.title = "Cliquer et glisser pour déplacer la carte";
}
}
}


  var CloseLink = document.createElement('a');
for ( i = 0; i < tableIndex; i++ ) {
  CloseLink.setAttribute("style", "float:right;margin:10px;");
if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
  CloseLink.innerHTML = "Masquer";
collapseTable( i );
  CloseLink.title = "Cliquer pour masquer la carte";
}
  CloseLink.href = "javascript:openStreetMap_Toggle();";
}
  MoveArea.appendChild(CloseLink);
 
  var iFrame = document.createElement ( 'iframe' ) ;
  var url = '//tools.wmflabs.org/wiwosm/osm-on-ol/kml-on-ol.php?'
          + 'lang=' + mw.config.get('wgUserLanguage')
          + '&params=' + h
          + '&title=' + mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) )
          + ( window.location.protocol == 'https:' ? '&secure=1' : '' ) ;
  iFrame.style.width = '100%' ;
  iFrame.style.height = ((HauteurEcran*80/100)-100) + 'px' ;
  iFrame.style.clear = 'both' ;
  iFrame.src = url ;
 
  var ResizeArea = document.createElement('div');
  ResizeArea.style.position = "relative";
  ResizeArea.style.top = "0";
  ResizeArea.style.width = "100%";
  ResizeArea.style.height = "50px";
  ResizeArea.title = "Cliquer et glisser pour redimensionner la carte";
 
  OSMDiv.appendChild(MoveArea);
  OSMDiv.appendChild(iFrame);
  OSMDiv.appendChild(ResizeArea);
 
  document.body.appendChild ( OSMDiv ) ;
 
  var ElementsToMove = new Array(OSMDiv);
  var ElementsToResize = new Array(OSMDiv, iFrame);
  var ElementsMinWidth = new Array(150, 150);
  var ElementsMinHeights = new Array(200, 100);
 
  MoveResizeAbsolute_AddMoveArea(MoveArea, ElementsToMove);
  MoveResizeAbsolute_AddResizeArea(ResizeArea, ElementsToResize, ElementsMinWidth, ElementsMinHeights);
}
}


addOnloadHook(openStreetMap_Init);
$( createCollapseButtons );
 
/**
* 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>
*
* Doit être exécutée après les fonctions d'icônes de titre
*/
 
function sousTitreH1() {
  var span= document.getElementById('sous_titre_h1');
  var title=document.getElementById('firstHeading');
  if(!title) title = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
  if (span && title) {
      var subtitle=span.cloneNode(true);
      title.appendChild(document.createTextNode(' '));
      title.appendChild(subtitle);
      span.parentNode.removeChild(span);
  }
}
addOnloadHook(sousTitreH1);




/**
/**
  * Boîtes déroulantes
  * Dynamic Navigation Bars (experimental)
  *
  *
  * Pour [[Modèle:Méta palette de navigation]]
  * See [[Wikipedia:NavFrame]].
  */
  */


var Palette_Enrouler = '[masquer]';
// set up the words in your language
var Palette_Derouler  = '[afficher]';
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';


var Palette_max = 1;
// shows and hides content and picture (if available) of navigation bars
var Palette_index = -1;
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar) {
var NavChild;
var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar);
var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar);


function Palette_toggle(indexPalette){
if (!NavFrame || !NavToggle) {
  var Button = document.getElementById( "collapseButton" + indexPalette);
return false;
  var Table = document.getElementById( "collapsibleTable" + indexPalette);
}
  if (!Table || !Button) return false;


  var Rows = Table.rows;
// if shown now
  var RowDisplay = "none";
if (NavToggle.firstChild.data == NavigationBarHide) {
  if (Button.firstChild.data == Palette_Derouler) {
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
    Button.firstChild.data = Palette_Enrouler;
if ( hasClass( NavChild, 'NavPic' ) ) {
    RowDisplay = Rows[0].style.display;
NavChild.style.display = 'none';
  } else {
}
    Button.firstChild.data = Palette_Derouler;
if ( hasClass( NavChild, 'NavContent') ) {
  }
NavChild.style.display = 'none';
  for (var i = 1; i < Rows.length; i++) {
}
    Rows[i].style.display = RowDisplay
}
  }
NavToggle.firstChild.data = NavigationBarShow;
}


function Palette(Element){
// if hidden now
  if(!Element) Element = document;
} else if (NavToggle.firstChild.data == NavigationBarShow) {
  var TableIndex = 0;
for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
  var TableIndexes = new Array();
if (hasClass(NavChild, 'NavPic')) {
  var Tables = Element.getElementsByTagName( "table" );
NavChild.style.display = 'block';
  for ( var i = 0; i < Tables.length; i++ ) {
}
    if ( hasClass( Tables[i], "collapsible" ) ) {
if (hasClass(NavChild, 'NavContent')) {
      var Table = Tables[i];
NavChild.style.display = 'block';
      var Header = Table.getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
}
      /* only add button and increment count if there is a header row to work with */
}
      if (Header) {
NavToggle.firstChild.data = NavigationBarHide;
        TableIndex++
}
        Palette_index++;
        TableIndexes[Palette_index] = Table;
        Table.setAttribute( "id", "collapsibleTable" + Palette_index );
        var Button    = document.createElement( "span" );
        var ButtonLink = document.createElement( "a" );
        var ButtonText = document.createTextNode( Palette_Enrouler );
        Button.className = "navboxToggle";
        ButtonLink.setAttribute( "id", "collapseButton" + Palette_index );
        ButtonLink.setAttribute( "href", "javascript:;" );
        $(ButtonLink).click(new Function( "evt", "Palette_toggle(" + Palette_index + " ); evt.preventDefault();") );
        ButtonLink.appendChild( ButtonText );
        Button.appendChild( document.createTextNode("\u00a0"));  //ajout d'un espace insécable pour décoller ce bouton du texte de la celulle
        Button.appendChild( ButtonLink );
        Header.insertBefore( Button, Header.childNodes[0] );
      }
    }
  }
  for(var index in TableIndexes){
    var Table = TableIndexes[index];
    if(hasClass(Table,"collapsed")||(TableIndex>Palette_max && hasClass(Table,"autocollapse")))
    Palette_toggle(index);
  }
}
}
addOnloadHook(Palette);


// adds show/hide-button to navigation bars
function createNavigationBarToggleButton(){
var indexNavigationBar = 0;
// iterate over all < div >-elements
var divs = document.getElementsByTagName( 'div' );
for (var i = 0; NavFrame = divs[i]; i++) {
// if found a navigation bar
if ( hasClass(NavFrame, 'NavFrame' )) {


/**
indexNavigationBar++;
* Pour [[Modèle:Boîte déroulante]]
var NavToggle = document.createElement('a');
*/
NavToggle.className = 'NavToggle';
 
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
var BoiteDeroulante_Enrouler = '[masquer]';
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
var BoiteDeroulante_Derouler  = '[afficher]';
var BoiteDeroulante_max = 0;
var BoiteDeroulante_index = -1;


function BoiteDeroulante_toggle(indexBoiteDeroulante){
var NavToggleText = document.createTextNode(NavigationBarHide);
      var NavFrame = document.getElementById("NavFrame" + indexBoiteDeroulante);
for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
      var NavToggle = document.getElementById("NavToggle" + indexBoiteDeroulante);
if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
      var CaptionContainer = document.getElementById("NavCaption" + indexBoiteDeroulante);
if (NavChild.style.display == 'none') {
      if (!NavFrame || !NavToggle || !CaptionContainer) return;
NavToggleText = document.createTextNode(NavigationBarShow);
      var caption = new Array();
break;
      var CaptionSpans = CaptionContainer.getElementsByTagName('span');
}
      caption[0] = CaptionSpans[0].innerHTML;
}
      caption[1] = CaptionSpans[1].innerHTML;
}


      var Contents = NavFrame.getElementsByTagName('div');
NavToggle.appendChild(NavToggleText);
      if (NavToggle.innerHTML == caption[1]) {
// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            NavToggle.innerHTML = caption[0];
for(var j=0; j < NavFrame.childNodes.length; j++) {
            for(var a=0,m=Contents.length;a<m;a++){
if (hasClass(NavFrame.childNodes[j], 'NavHead')) {
                  if(hasClass(Contents[a], "NavContent")){
NavFrame.childNodes[j].appendChild(NavToggle);
                        Contents[a].style.display = 'none';
}
                        return;
}
                  }
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
            }
}
      }else{
}
            NavToggle.innerHTML = caption[1];
            for(var a=0,m=Contents.length;a<m;a++){
                  if(hasClass(Contents[a], "NavContent")){
                        Contents[a].style.display = 'block';
                        return;
                  }
            }
      }
}
}


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


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


                  var NavToggle = document.createElement("a");
// Shuffle for election candidates
                  NavToggle.className = 'NavToggle';
function dshuf() {
                  NavToggle.id = 'NavToggle' + BoiteDeroulante_index;
var shufsets = {};
                  NavToggle.href = 'javascript:BoiteDeroulante_toggle(' + BoiteDeroulante_index + ');';
var rx = new RegExp('dshuf' + '\\s+(dshufset\\d+)', 'i');
                  var NavToggleText = document.createTextNode(Enrouler);
var divs = document.getElementsByTagName('div');
                  NavToggle.appendChild(NavToggleText);
var i = divs.length;
 
while (i--) {
                  NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
if (rx.test(divs[i].className)) {
                  NavFrame.id = 'NavFrame' + BoiteDeroulante_index;
if (typeof shufsets[RegExp.$1] === 'undefined') {
                  if (BoiteDeroulante_max <= NavFrameCount) {
shufsets[RegExp.$1] = {};
                        BoiteDeroulante_toggle(BoiteDeroulante_index);
shufsets[RegExp.$1].inner = [];
                  }
shufsets[RegExp.$1].member = [];
            }
}
      }
shufsets[RegExp.$1].inner.push({
 
key: Math.random(),
}
html: divs[i].innerHTML
addOnloadHook(BoiteDeroulante);
});
 
shufsets[RegExp.$1].member.push(divs[i]);
/**
}
* Utilisation du modèle Modèle:Animation
*/
 
var Diaporama = new Object();
Diaporama.Params = new Object();
Diaporama.Fonctions = new Object();
 
Diaporama.Params.DiaporamaIndex = 0;
Diaporama.Params.ImageDelay = 1;
Diaporama.Params.Paused = new Array();
Diaporama.Params.Visible = new Array();
Diaporama.Params.Length = new Array();
Diaporama.Params.Delay = new Array();
Diaporama.Params.Timeout = new Array();
 
Diaporama.Fonctions.Init = function(node){
    if(!node) node = document;
    var Diaporamas = getElementsByClass("diaporama", node, "div");
    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 = getElementsByClass("diaporamaFiles", DiaporamaDiv, "div")[0];
    var DiaporamaControl = getElementsByClass("diaporamaControl", DiaporamaDiv, "div")[0];
    if(!DiaporamaFileContainer || !DiaporamaControl) return;
    var DiaporamaFiles = getElementsByClass("ImageFile", DiaporamaFileContainer, "div");
    var width;
    var firstTumbinner = getElementsByClass("thumbinner", DiaporamaFileContainer, "div")[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";
    if(hasClass("Autoplay", DiaporamaDiv)){
        Diaporama.Fonctions.Play(index);
    }else{
        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 = getElementsByClass("ImageFile", DiaporamaFileContainer, "div");
    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 || !hasClass("AutoLoop", DiaporamaDiv)){
            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 = getElementsByClass("ImageFile", DiaporamaFileContainer, "div");
    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 Total = Diaporama.Params.Length[index];
    var Select = document.createElement('select');
    Select.id = "DiaporamaSelect"+index;
    Select.title = Title;
    for(var s=0;s<Total;s++){
        var 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 = getElementsByClass("ScrollBar", DiaporamaControl, "div")[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 SpanClass = Span.className;
    var Image = Link.getElementsByTagName('img')[0];
    var DiapoState = Diaporama.Params.Paused[index];
    if( (hasClass("Play", Span) && DiapoState == false) || ( (hasClass("Pause", Span)||hasClass("Stop", Span))&&DiapoState==true) ){
        Image.style.backgroundColor = "silver";
    }else{
        Image.style.backgroundColor = "white";
    }
}
 
Diaporama.Fonctions.getIndex = function(Element){
    return parseInt(Element.id.replace(/[^0-9]/g, ""));
}
 
$(document).ready(function ($) {
    Diaporama.Fonctions.Init();
});
 
/**
* Ajout d'un style particulier aux liens interlangues vers un bon article ou
* un article de qualité
*/
function Liens_Intewikis_Eval(){
    if(document.getElementById("p-lang")){
        var InterwikiLinks = document.getElementById( "p-lang").getElementsByTagName("li");
        for(var i=0; i < InterwikiLinks.length; i++ ) {
            var InterwikiLink = InterwikiLinks[i];
            var ClassNames = InterwikiLink.className;
            if(!ClassNames) continue;
            ClassNames = ClassNames.split(" ");
            for(var a=0,l=ClassNames.length;a<l;a++){
                var ThisClassName = ClassNames[a];
                if(document.getElementById( ThisClassName + "-adq" ) ) {
                    addClass( InterwikiLink, "AdQ");
                    InterwikiLink.title = "Lien vers un article de qualité.";
                }else if(document.getElementById( ThisClassName + "-ba" ) ) {
                    addClass( InterwikiLink, "BA");
                    InterwikiLink.title = "Lien vers un bon article.";
                }else if(document.getElementById( ThisClassName + "-pdq" ) ) {
                    addClass( InterwikiLink, "PdQ");
                    InterwikiLink.title = "Lien vers un portail de qualité.";
                }else if(document.getElementById( ThisClassName + "-ldq" ) ) {
                    addClass( InterwikiLink, "LdQ");
                    InterwikiLink.title = "Lien vers une liste de qualité.";
                }
            }
        }
    }
}
addOnloadHook(Liens_Intewikis_Eval);
 
/**
* 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;
if( !(hc = document.getElementById('mw-hidden-catlinks')) ) return;
if( hasClass(hc, 'mw-hidden-cats-user-shown') ) return;
if( hasClass(hc, 'mw-hidden-cats-ns-shown') ) addClass(hc, '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(' | '));
for (shufset in shufsets) {
var lnk = document.createElement('a');
shufsets[shufset].inner.sort(function(a, b) {
lnk.id = 'mw-hidden-cats-link';
return a.key - b.key;
lnk.title = 'Cet article contient des catégories cachées';
});
lnk.style.cursor = 'pointer';
i = shufsets[shufset].member.length;
lnk.style.color = 'black';
while (i--) {
lnk.onclick = toggleHiddenCats;
shufsets[shufset].member[i].innerHTML = shufsets[shufset].inner[i].html;
lnk.appendChild(document.createTextNode('[+]'));
shufsets[shufset].member[i].style.display = 'block';
hclink = nc.appendChild(lnk);
}
}
 
function toggleHiddenCats() {
if( hasClass(hc, 'mw-hidden-cats-hidden') ) {
removeClass(hc, 'mw-hidden-cats-hidden');
addClass(hc, 'mw-hidden-cat-user-shown');
$(hclink).text('[]');
} else {
removeClass(hc, 'mw-hidden-cat-user-shown');
addClass(hc, 'mw-hidden-cats-hidden');
$(hclink).text('[+]');
}
}
}
}
 
$(dshuf);
addOnloadHook(hiddencat);


/**
/**
  * Script pour alterner entre plusieurs cartes de géolocalisation
  * Ajax transclusion table adds dynamic content loading to tables with class="attable".
* @see https://meta.wikimedia.org/wiki/Ajax_transclusion_table
* @update-token [[File:pathoschild/ajaxtransclusiontable.js]]
  */
  */
 
mw.loader.load('//tools-static.wmflabs.org/meta/scripts/pathoschild.ajaxtransclusiontable.js');
if(( mw.config.get('wgAction')=="view" || mw.config.get('wgAction')=="purge" || mw.config.get('wgAction')=="submit")) addOnloadHook(GeoBox_Init);
 
function GeoBox_Init(Element){
    if(!Element) Element = document.body;
    var cont = getElementsByClass('img_toogle', Element, 'div');
    if(cont.length==0) return;
    for (var i = 0,m=cont.length; i < m ; i++) {
          cont[i].id = 'img_toogle_' + i;
          var Boxes = getElementsByClass('geobox',cont[i]);
          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 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 = getElementsByClass('geobox',ImageToggle);
    for(var a=0,l=AllGeoboxes.length;a<l;a++){
          if(AllGeoboxes[a] == Geobox){
              AllGeoboxes[a].style.display = "";
          }else{
              AllGeoboxes[a].style.display = "none";
          }
    }
    var AllToggleLinks = Links.getElementsByTagName('a');
    for(var a=0,l=AllToggleLinks.length;a<l;a++){
          if(AllToggleLinks[a] == Link){
              AllToggleLinks[a].parentNode.style.display = "none";
          }else{
              AllToggleLinks[a].parentNode.style.display = "";
          }
    }
}


/**
/**
  * permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
  * JSconfig
  * known bug : conflit avec le changement de titre classique.
*
  * Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
  * Global configuration options to enable/disable and configure
  */
  * specific script features from [[MediaWiki:Common.js]] and
function rewritePageH1bis() {
  * [[MediaWiki:Monobook.js]]
  try {
* This framework adds config options (saved as cookies) to [[Special:Preferences]]
    var helpPage = document.getElementById("helpPage");
  * For a more permanent change you can override the default settings in your
    if (helpPage) {
  * [[Special:Mypage/monobook.js]]
      var helpPageURL = document.getElementById("helpPageURL");
  * for Example: JSconfig.keys[loadAutoInformationTemplate] = false;
      var h1 = document.getElementById('firstHeading');
      if (helpPageURL && h1) {
        h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
        helpPage.style.display = "none";
      }
    }
  } catch (e) {
    /* Something went wrong. */
  }
}
addOnloadHook(rewritePageH1bis);
 
/**
* application de [[Wikipédia:Prise de décision/Système de cache]]
  * un <span class="noarchive"> autour du lien l'empêche d'être pris en compte
  * pour celui-ci uniquement
* un no_external_cache=true dans un monobook personnel désactive le script
  */
 
function addcache(element) {
 
    if (typeof no_external_cache !== "undefined" && no_external_cache) {
        return;
    }
 
    var liens = element ? $(element).find('ol.references').find('a.external') : $('ol.references').find('a.external');
    for (var i = 0, l = liens.length; i < l; i++) {
        var lien_en_cours = liens[i];
        var chemin = lien_en_cours.href;
        if (chemin.indexOf("http://archive.wikiwix.com/cache/") > -1 || chemin.indexOf("http://web.archive.org/web/") > -1 || chemin.indexOf("wikipedia.org") > -1 || chemin.indexOf("wikimedia.org") > -1) {
            continue;
        }
        var element_parent = lien_en_cours.parentNode;
        if (hasClass(element_parent, "noarchive")) {
            continue;
        }
        var titre = getTextContent(lien_en_cours);
        var last = document.createElement("small");
        last.className = "cachelinks";
        last.appendChild(document.createTextNode("\u00a0["));
 
        var link = document.createElement("a");
        link.setAttribute("href", "http://archive.wikiwix.com/cache/?url=" + chemin.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(titre));
        link.setAttribute("title", "archive de " + titre);
        link.appendChild(document.createTextNode("archive"));
 
        last.appendChild(link);
        last.appendChild(document.createTextNode("]"));
 
        element_parent.insertBefore(last, lien_en_cours.nextSibling);
    }
}
 
if ( mw.config.get('wgNamespaceNumber') === 0) {
    addOnloadHook(addcache);
}
 
$(document).ready(function ($) {
 
  /**
  * Rétablit l'accès clavier à la fonction de tri des tableaux
  */
 
  $('.sortable th').attr('tabindex',0).keypress(function(event){
    if ( event.which == 13 ) {
      $(this).click()
    }
  });
 
});
 
 
/**
* Direct imagelinks to Commons
  *
  *
  * @source: http://www.mediawiki.org/wiki/Snippets/Direct_imagelinks_to_Commons
  * Maintainer: [[User:Dschwen]]
* @author: [[commons:User:Krinkle]]
* @rev: 5
  */
  */
if ( mw.config.get( 'wgNamespaceNumber', 0 ) >= 0 ) {
        $(document).ready( function() {
                var    commonsBase = '//commons.wikimedia.org/wiki/File:',
                        localBase = mw.util.getUrl( mw.config.get( 'wgFormattedNamespaces' )['6'] + ':' ),
                        uploadBaseRe = new RegExp( '^' + $.escapeRE( '//upload.wikimedia.org/wikipedia/commons/' ) );
                $( 'a.image' ).attr( 'href', function( i, currVal ) {
                        if ( uploadBaseRe.test( $(this).find( 'img' ).attr( 'src' ) ) ) {
                                return currVal.replace( localBase, commonsBase );
                        }
                });
        });
}


/**
var JSconfig =
* Ajout d'un lien ajouter une section pour la dernière section
{
* https://de.wikipedia.org/wiki/MediaWiki:Common.js
prefix : 'jsconfig_',
*/
keys : {},
$( function() {
meta : {},
var newSectionLink = $( '#ca-addsection a' );
if( newSectionLink.length ) {
  var link = newSectionLink.clone(); //create a copy
  //avoid duplicate accesskey
  link.removeAttr( 'accesskey' ).attr( 'title', function ( index, oldTitle ) {
  return oldTitle.replace( /\s*\[.*\]\s*$/, '' );
  } );
  //add it within the brackets
  var lastEditsectionLink = $( 'span.mw-editsection:last a:last' );
  lastEditsectionLink.after( link );
  lastEditsectionLink.after( ' | ' ); //see [[MediaWiki:Pipe-separator]]
}
});


/************************************************************/
//
/* Function Strictement spécifiques à un espace de nom ou à une page */
// Register a new configuration item
/************************************************************/
/* name          : String, internal name
 
// * default_value : String or Boolean (type determines configuration widget)
// PAGE D'ACCUEIL
// * description  : String, text appearing next to the widget in the preferences
if( mw.config.get('wgFormattedNamespaces')[ mw.config.get('wgNamespaceNumber') ]+":"+mw.config.get('wgTitle') == mw.config.get('wgMainPageTitle') ) {
// * prefpage      : Integer (optional), section in the preferences to insert the widget:
 
//                     0 : User profile
/**
//                     1 : Skin
  * changement de l'onglet et lien vers la liste complète des Wikipédias depuis l'accueil
//                    2 : Math
  */
//                    3 : Files
function mainPageTransform(){
//                    4 : Date and time
  addPortletLink('p-lang', '//www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias');
//                     5 : Editing
}
//                    6 : Recent changes
addOnloadHook(mainPageTransform);
//                     7 : Watchlist
 
//                    8 : Search
} // FIN DU IF page d'accueil
//                    9 : Misc
 
//
 
// Access keys through JSconfig.keys[name]
 
//
 
registerKey : function( name, default_value, description, prefpage )
 
{
 
   if( typeof(JSconfig.keys[name]) === 'undefined' )
// ESPACE DE NOM 'SPECIAL'
  JSconfig.keys[name] = default_value;
if( mw.config.get('wgNamespaceNumber') == -1 ) {
   else {
 
 
/**
* Modifie Special:Search pour pouvoir utiliser différents moteurs de recherche,
* disponibles dans une boîte déroulante.
* Auteurs : Jakob Voss, Guillaume, importé depuis la Wiki allemande
* <pre><nowiki>
*/
 
function externalSearchEngines() {
   if (typeof SpecialSearchEnhanced2Disabled != 'undefined') return;
  if ( mw.config.get('wgCanonicalSpecialPageName') != "Search") return;
 
  var mainNode = document.getElementById("powersearch");
  if (!mainNode) mainNode = document.getElementById("search");
  if (!mainNode) return;
 
  var beforeNode = document.getElementById("mw-search-top-table");
  if (!beforeNode) return;
  beforeNode = beforeNode.nextSibling;
   if (!beforeNode) return;
 
  var firstEngine = "mediawiki";
 
  var choices = document.createElement("div");
  choices.setAttribute("id","searchengineChoices");
  choices.style.textAlign = "center";
 
  var lsearchbox = document.getElementById("searchText");
  if (!lsearchbox) return;
  var initValue = lsearchbox.value;
 
  var space = "";


  for (var id in searchEngines) {
  // all cookies are read as strings,
    var engine = searchEngines[id];
  // convert to the type of the default value
if(engine.ShortName)
  switch( typeof(default_value) )
   {
   {
     if (space) choices.appendChild(space);
     case 'boolean' : JSconfig.keys[name] = ( JSconfig.keys[name] == 'true' ); break;
    space = document.createTextNode(" ");
     case 'number' : JSconfig.keys[name] = JSconfig.keys[name]/1; break;
 
  }
    var attr = {
      type: "radio",
      name: "searchengineselect",
      value: id,
      onFocus: "changeSearchEngine(this.value)",
      id: "searchengineRadio-"+id
    };
 
    var html = "<input";
    for (var a in attr) html += " " + a + "='" + attr[a] + "'";
    html += " />";
    var span = document.createElement("span");
    span.innerHTML = html;
 
    choices.appendChild( span );
    var label = document.createElement("label");
    label.htmlFor = "searchengineRadio-"+id;
     if (engine.Template.indexOf('http') == 0) {
      var lienMoteur = document.createElement("a");
      lienMoteur.href = engine.Template.replace("{searchTerms}", initValue).replace("{language}", "fr");
      lienMoteur.appendChild( document.createTextNode( engine.ShortName ) );
      label.appendChild(lienMoteur);
    } else {
      label.appendChild( document.createTextNode( engine.ShortName ) );
    }


    choices.appendChild( label );
   }
   }
}
  mainNode.insertBefore(choices, beforeNode);


   var input = document.createElement("input");
   JSconfig.meta[name] = { 'description' : description, 'page' : prefpage || 0, 'default_value' : default_value };
  input.id = "searchengineextraparam";
},
  input.type = "hidden";


   mainNode.insertBefore(input, beforeNode);
readCookies : function()
{
   var cookies = document.cookie.split("; ");
  var p =JSconfig.prefix.length;
  var i;


   changeSearchEngine(firstEngine, initValue);
   for( var key in cookies )
}
  {
 
  if( cookies[key].substring(0,p) == JSconfig.prefix )
function changeSearchEngine(selectedId, searchTerms) {
  {
 
    i = cookies[key].indexOf('=');
  var currentId = document.getElementById("searchengineChoices").currentChoice;
    //alert( cookies[key] + ',' + key + ',' + cookies[key].substring(p,i) );
  if (selectedId == currentId) return;
    JSconfig.keys[cookies[key].substring(p,i)] = cookies[key].substring(i+1);
 
  }
  document.getElementById("searchengineChoices").currentChoice = selectedId;
  var radio = document.getElementById('searchengineRadio-'  + selectedId);
  radio.checked = "checked";
 
  var engine = searchEngines[selectedId];
  var p = engine.Template.indexOf('?');
  var params = engine.Template.substr(p+1);
 
  var form;
  if (document.forms["search"]) {
    form = document.forms["search"];
  } else {
    form = document.getElementById("powersearch");
   }
   }
  form.setAttribute("action", engine.Template.substr(0,p));
},


  var l = ("" + params).split("&");
writeCookies : function()
   for (var idx = 0;idx < l.length;idx++) {
{
    var p = l[idx].split("=");
   for( var key in JSconfig.keys )
    var pValue = p[1];
  document.cookie = JSconfig.prefix + key + '=' + JSconfig.keys[key] + '; path=/; expires=Thu, 2 Aug 2009 10:10:10 UTC';
},


    if (pValue == "{language}") {
evaluateForm : function()
    } else if (pValue == "{searchTerms}") {
{
      var input;
  var w_ctrl,wt;
      input = document.getElementById("searchText");
  //alert('about to save JSconfig');
 
  for( var key in JSconfig.meta ) {
      input.name = p[0];
  w_ctrl = document.getElementById( JSconfig.prefix + key );
     } else {
  if( w_ctrl )
      var input = document.getElementById("searchengineextraparam");
  {
 
    wt = typeof( JSconfig.meta[key].default_value );
      input.name = p[0];
     switch( wt ) {
      input.value = pValue;
    case 'boolean' : JSconfig.keys[key] = w_ctrl.checked; break;
    case 'string' : JSconfig.keys[key] = w_ctrl.value; break;
     }
     }
  }
   }
   }
}


  JSconfig.writeCookies();
  return true;
},


setUpForm : function()
{
  var key;
  var prefChild = document.getElementById('preferences');
  if( !prefChild ) return;
  prefChild = prefChild.childNodes;


if ( mw.config.get('wgCanonicalSpecialPageName') == "Search") {
   //
var searchEngines = {
   // make a list of all preferences sections
  mediawiki: {
   //
    ShortName: "Recherche interne",
   var tabs = [];
    Template: mw.config.get('wgScript') + "?search={searchTerms}"
   var len = prefChild.length;
   },
   for( key = 0; key < len; key++ ) {
  exalead: {
  if( prefChild[key].tagName &&
    ShortName: "Exalead",
      prefChild[key].tagName.toLowerCase() == 'fieldset' )
    Template: "http://www.exalead.com/search/wikipedia/results/?q={searchTerms}&language=fr"
     tabs.push(prefChild[key]);
   },
  google: {
    ShortName: "Google",
    Template: "http://www.google.fr/search?as_sitesearch=fr.wikipedia.org&hl={language}&q={searchTerms}"
   },
  wikiwix: {
    ShortName: "Wikiwix",
    Template: "http://fr.wikiwix.com/index.php?action={searchTerms}&lang={language}"
   },
 
   wlive: {
    ShortName: "Bing",
    Template: "http://www.bing.com/search?q={searchTerms}&q1=site:http://fr.wikipedia.org"
   },
  yahoo: {
    ShortName: "Yahoo!",
    Template: "http://fr.search.yahoo.com/search?p={searchTerms}&vs=fr.wikipedia.org"
  },
globalwpsearch: {
     ShortName: "Global WP",
    Template: "http://vs.aka-online.de/cgi-bin/globalwpsearch.pl?timeout=120&search={searchTerms}"
   }
   }
};
addOnloadHook(externalSearchEngines);
}
/**
* 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");
}
} // Fin du code concernant l'espace de nom 'Special'


// ESPACE DE NOM 'UTILISATEUR'
  //
if( mw.config.get('wgNamespaceNumber') == 2 ) {
  // Create Widgets for all registered config keys
  //
  var w_div, w_label, w_ctrl, wt;
  for( key in JSconfig.meta ) {
  w_div = document.createElement( 'div' );


/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
  w_label = document.createElement( 'LABEL' );
    Fonctionnement du [[Modèle:Cadre à onglets]]
  w_label.appendChild( document.createTextNode( JSconfig.meta[key].description ) );
    Modèle implanté par User:Peleguer de http://ca.wikipedia.org
  w_label.htmlFor = JSconfig.prefix + key;
    Actualisé par User:Joanjoc de http://ca.wikipedia.org
    Traduction et adaptation User:Antaya de http://fr.wikipedia.org
    Indépendance de classes CSS et nettoyage par User:Nemoi de http://fr.wikipedia.org
*/


function CadreOngletInitN(){
  wt = typeof( JSconfig.meta[key].default_value );


  var Classeurs = $('div.classeur')
  w_ctrl = document.createElement( 'input' );
  for ( var i = 0; i < Classeurs.length; i++ ) {
  w_ctrl.id = JSconfig.prefix + key;
      var Classeur = Classeurs[i];


      Classeur.setAttribute( "id", "classeur" + i );
  // before insertion into the DOM tree
  switch( wt ) {
    case 'boolean' : w_ctrl.type = 'checkbox'; break;
    case 'string'  : w_ctrl.type = 'text'; break;
  }


      var vOgIni = -1 // pour connaître l’onglet renseigné
  w_div.appendChild( w_label );
  w_div.appendChild( w_ctrl );
  tabs[JSconfig.meta[key].page].appendChild( w_div );


      var Onglets = $(Classeur).children("div").eq(0).children("div");
  // after insertion into the DOM tree
      var Feuillets = $(Classeur).children("div").eq(1).children("div");
  switch( wt ) {
    case 'boolean' : w_ctrl.defaultChecked = w_ctrl.checked = JSconfig.keys[key]; break;
    case 'string' : w_ctrl.defaultValue = w_ctrl.value = JSconfig.keys[key]; break;
  }


      for ( var j = 0; j < Onglets.length; j++) {
        var Onglet = Onglets[j];
        var Feuillet = Feuillets[j];
        Onglet.setAttribute( "id", "classeur" + i + "onglet" + j );
        Feuillet.setAttribute( "id", "classeur" + i + "feuillet" + j );
        Onglet.onclick = CadreOngletVoirOngletN;
        if ( hasClass( Onglet, "ongletBoutonSel") ) vOgIni=j;
      }
      // inutile sauf dans le cas où l’onglet de départ est *mal* renseigné
      if (vOgIni == -1) {
        var 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);
        removeClass(Onglet, "ongletBoutonNonSel");
        addClass(Onglet, "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";
      }
   }
   }
  $('#preferences').parent().on( 'submit', JSconfig.evaluateForm );
}
}
};


function CadreOngletVoirOngletN(){
JSconfig.readCookies();
  var vOngletNom = this.id.substr(0,this.id.indexOf("onglet",1));
$(JSconfig.setUpForm);
  var vOngletIndex = this.id.substr(this.id.indexOf("onglet",0)+6,this.id.length);


  var rule1=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.backgroundColor.toString();
if(location.href.indexOf('rtl=1') !== -1) {
  var rule2=$('#' + vOngletNom + ' .ongletBoutonNonSel')[0].style.borderColor.toString();      //rule2=$('.ongletBoutonNonSel').css("border-color"); ne fonctionne pas sous Firefox
mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Gadget-rtl.css&action=raw&ctype=text/css', 'text/css');
 
  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";
      removeClass(Onglet, "ongletBoutonNonSel");
      addClass(Onglet, "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";
      removeClass(Onglet, "ongletBoutonSel");
      addClass(Onglet, "ongletBoutonNonSel");
      Onglet.style.cursor="pointer";
      Onglet.style.backgroundColor=rule1;
      Onglet.style.borderColor=rule2;
    }
  }
  return false;
}
}


addOnloadHook(CadreOngletInitN);
// Import local or interwiki page as script
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
// @deprecated since MediaWiki 1.17: Use mw.loader.load(url) or $.getScript(url, callback) instead.
 
function importScript(page, lang) {
} // Fin du code concernant l'espace de nom 'Utilisateur'
var query = '?title=' + encodeURIComponent(page.replace(' ','_')) + '&action=raw&ctype=text/javascript';
 
if (lang) {
 
mw.loader.load('//' + lang + '.wikipedia.org/w/index.php' + query);
// ESPACE DE NOM 'RÉFÉRENCE'
} else {
if( mw.config.get('wgNamespaceNumber') == 104 ) {
mw.loader.load('//meta.wikimedia.org' + mw.config.get( 'wgScript' ) + query);
 
}
/*
* 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 !
*/
 
function addBibSubsetMenu() {
  var specialBib = document.getElementById('specialBib');
  if (!specialBib) return;
 
  specialBib.style.display = 'block';
  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);
}
}


// select subsection of special characters
( function () {
function chooseBibSubset(s) {
var conf = mw.config.get( [
  var l = document.getElementsByTagName('div');
'wgCanonicalSpecialPageName',
  for (var i = 0; i < l.length ; i++) {
'wgUserGroups',
    if(l[i].className == 'BibList')  l[i].style.display = s == 0 ? 'block' : 'none';
'wgPageName',
    else if(l[i].className == 'WikiNorme') l[i].style.display = s == 1 ? 'block' : 'none';
'wgUserName'
    else if(l[i].className == 'BibTeX')    l[i].style.display = s == 2 ? 'block' : 'none';
] );
    else if(l[i].className == 'ISBD')      l[i].style.display = s == 3 ? 'block' : 'none';
    else if(l[i].className == 'ISO690')    l[i].style.display = s == 4 ? 'block' : 'none';
  }
}
addOnloadHook(addBibSubsetMenu);
} // Fin du code concernant l'espace de nom 'Référence'


$(function () {
// Set a default of anon-only global blocks
// We don't want to override the user's request when they're specifying [?&]wpAnonOnly=[01] in the URL or
// if we're loading up the block settings for an already-blocked IP (then you can't see whether the block was AO or not)
if ( conf.wgCanonicalSpecialPageName === 'GlobalBlock' && conf.wgUserGroups && conf.wgUserGroups.join(' ').indexOf('steward') !== -1 ) {
if ( document.getElementById('mw-globalblock-expiry-other') !== null ) {
var expiry = document.getElementById('mw-globalblock-expiry-other').value;
if ( expiry === '' && location.href.indexOf('wpAnonOnly=') === -1){
document.getElementById('mw-globalblock-anon-only').checked = true;
}
}
}
});


/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
// Multilingual description.js from commons
/* Plyd - 3 février 2009 */
mw.loader.load('//commons.wikimedia.org/w/index.php?title=MediaWiki:Gadget-LanguageSelect.js&action=raw&ctype=text/javascript');
function Rebours() {
  if( mw.config.get('wgNamespaceNumber') ==0) return;
  try {
  if (document.getElementById("rebours")) {
      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("Rebours()", 1000)
    }
  } catch (e) {}
}
addOnloadHook(Rebours);


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


/* Ajoute la date de dernière modification sur le bandeau événement récent */
// Handle template:InterProject
/* Plyd - 12 juin 2009 */
mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:InterProject.js&action=raw&ctype=text/javascript');
function LastModCopy() {
  var LastModSpan = document.getElementById('lastmod');                          // Monobook et affiliés, Modern
  if(!LastModSpan) LastModSpan = document.getElementById('footer-info-lastmod'); // Vector
  var LastModBandeau = document.getElementById("lastmodcopy");
  if((!LastModSpan)||(!LastModBandeau)) return;
  LastModBandeau.innerHTML = LastModSpan.innerHTML;


}
// Help:Diff
addOnloadHook(LastModCopy);
if ( conf.wgPageName === 'Help:Diff' ) {
    mw.loader.load( 'mediawiki.action.history.diff' );
}


/**
/**
* Import des scripts liés à la liste de suivi
* Remove "Wikimedia Fellowships/Project Ideas/" prefix on few fellowship pages
*/
*
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Watchlist' ) {
* Maintainer: [[en:User:Jarry1250]]
    importScript( 'MediaWiki:Common.js/watchlist.js' );
*/
}
if ($.inArray(conf.wgPageName, ['Wikimedia_Fellowships/Process', 'Wikimedia_Fellowships/Project_Ideas', 'Wikimedia_Fellowships/Project_Ideas/test']) > -1) {
$( 'a.CategoryTreeLabel' ).text( function( i, current ) {
    return current.replace( 'Wikimedia Fellowships/Project Ideas/', '' );
} );
}


/*********************************/
/**
/* Autres fonctions non classées */
* Remove "Grants:IEG/" prefix on a few IEG pages
/*********************************/
*
* Maintainer: [[en:User:Jarry1250]]
*/
if ($.inArray(conf.wgPageName, ['Grants:IEG', 'Grants:IEG/Committee/Workroom/Review', 'Grants:IEG/Committee_Members/Working_groups']) > -1) {
$( 'a.CategoryTreeLabel' ).text( function( i, current ) {
    return current.replace( 'IEG/', '' );
} );
}


/*
/**
* Fonction
* IE fixes as required
*
* (includes hlist fixup for IE)
* Récupère la valeur d'une variable globale en gérant le cas lorsque cette variable n'existe pas
*/
* @param nom_variable Nom de la variable dont on veut connaître la valeur
if ( $.client.profile().name === 'msie' ) {
* @param val_defaut Valeur par défaut si la variable n'existe pas
    importScript( 'MediaWiki:Common.js/IEFixes.js' );
* @return La valeur de la variable, ou val_defaut si la variable n'existe pas
}
*
* Auteur : Sanao
* Dernière révision : 22 novembre 2007
*/
function getVarValue(nom_variable, val_defaut)
{
var result = null;


try {
// Voting script for Steward Elections 2015:
result = eval(nom_variable.toString());
if ( conf.wgPageName.indexOf( 'Stewards/Elections_' ) === 0 && conf.wgPageName.indexOf( '/Votes/' ) !== -1 && conf.wgUserName !== null ) {
} catch (e) {
mw.loader.load( '//meta.wikimedia.org/w/index.php?title=User:Hoo_man/stewardVote.js&action=raw&ctype=text/javascript' );
result = val_defaut;
}
}
 
}() );
return(result);
}
 
/*
* 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 = new Array();
  with (str_mois)
  {
    push("janvier");
    push("février");
    push("mars");
    push("avril");
    push("mai");
    push("juin");
    push("juillet");
    push("août");
    push("septembre");
    push("octobre");
    push("novembre");
    push("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);
}
 
/* petites fonctions pratiques  - Darkoneko, 09/01/2008 */
 
//créé un lien et le retourne.
//le parametre onclick est facultatif.
function createAdressNode(href, texte, onclick) {
  var a = document.createElement('a')
  a.href = href
  a.appendChild(document.createTextNode( texte ) )
  if(arguments.length == 3) {  a.setAttribute("onclick", onclick )  }
 
  return a
}
 
//Créé un cookie. il n'existais qu'une version dédiée à l'accueil. Celle ci est plus générique
//le parametre duree est en jours
function setCookie(nom, valeur, duree ) {
  var expDate = new Date()
  expDate.setTime(expDate.getTime() + ( duree * 24 * 60 * 60 * 1000))
  document.cookie = nom + "=" + escape(valeur) + ";expires=" + expDate.toGMTString() + ";path=/"
}

Version du 11 septembre 2015 à 16:52

/* Any JavaScript here will be loaded for all users on every page load. */

/**
 * Add the signature button to namespace 0 (main/default namespace)
 * @author Roan (Catrope)
 */
$( function () {
	if ( !$.fn.wikiEditor ) {
		return;
	}

	$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
		section: 'main',
		group: 'insert',
		tools: {
			'signature-ns0': {
				labelMsg: 'wikieditor-toolbar-tool-signature',
				filters: [ 'body.ns-0' ], // ONLY ns 0
				type: 'button',
				offset: [2, -1872],
				icon: 'insert-signature.png',
				action: {
					type: 'encapsulate',
					options: {
						pre: '--~~' + '~~'
					}
				}
			}
		}
	});
} );

/**
 * Collapsible tables
 *
 * Allows tables to be collapsed, showing only the header. See [[Wikipedia:NavFrame]].
 * @maintainer [[User:R. Koot]] (on Wikipedia)
 */

var autoCollapse = 2;
var collapseCaption = 'hide';
var expandCaption = 'show';

function hasClass( element, className ) {
	var Classes = element.className.split( " " );
	for ( var i = 0; i < Classes.length; i++ ) {
		if ( Classes[i] == className ) {
			return true;
		}
	}
	return false;
}

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

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

	var Rows = Table.getElementsByTagName( 'tr' );

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

function createCollapseButtons() {
	var i;
	var tableIndex = 0;
	var NavigationBoxes = {};
	var Tables = document.getElementsByTagName( 'table' );

	for ( i = 0; i < Tables.length; i++ ) {
		if ( hasClass( Tables[i], 'collapsible' ) ) {
			NavigationBoxes[ tableIndex ] = Tables[i];
			Tables[i].setAttribute( 'id', 'collapsibleTable' + tableIndex );

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

			Button.style.styleFloat = 'right';
			Button.style.cssFloat = 'right';
			Button.style.fontWeight = 'normal';
			Button.style.textAlign = 'right';
			Button.style.width = '6em';

			ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
			ButtonLink.setAttribute( 'href', 'javascript:collapseTable(' + tableIndex + ');' );
			ButtonLink.appendChild( ButtonText );

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

			var Header = Tables[i].getElementsByTagName( 'tr' )[0].getElementsByTagName( 'th' )[0];
			/* only add button and increment count if there is a header row to work with */
			if (Header) {
				Header.insertBefore( Button, Header.childNodes[0] );
				tableIndex++;
			}
		}
	}

	for ( i = 0; i < tableIndex; i++ ) {
		if ( hasClass( NavigationBoxes[i], 'collapsed' ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], 'autocollapse' ) ) ) {
			collapseTable( i );
		}
	}
}

$( createCollapseButtons );


/**
 * Dynamic Navigation Bars (experimental)
 *
 *  See [[Wikipedia:NavFrame]].
 */

// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';

// shows and hides content and picture (if available) of navigation bars
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
function toggleNavigationBar(indexNavigationBar) {
	var NavChild;
	var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar);
	var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar);

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

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

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

// adds show/hide-button to navigation bars
function createNavigationBarToggleButton(){
	var indexNavigationBar = 0;
	// iterate over all < div >-elements
	var divs = document.getElementsByTagName( 'div' );
	for (var i = 0; NavFrame = divs[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 + ');');

			var NavToggleText = document.createTextNode(NavigationBarHide);
			for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
				if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
					if (NavChild.style.display == 'none') {
						NavToggleText = document.createTextNode(NavigationBarShow);
						break;
					}
				}
			}

			NavToggle.appendChild(NavToggleText);
			// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
			for(var j=0; j < NavFrame.childNodes.length; j++) {
				if (hasClass(NavFrame.childNodes[j], 'NavHead')) {
					NavFrame.childNodes[j].appendChild(NavToggle);
				}
			}
			NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
		}
	}
}

$( createNavigationBarToggleButton );


// Shuffle for election candidates
function dshuf() {
	var shufsets = {};
	var rx = new RegExp('dshuf' + '\\s+(dshufset\\d+)', 'i');
	var divs = document.getElementsByTagName('div');
	var i = divs.length;
	while (i--) {
		if (rx.test(divs[i].className)) {
			if (typeof shufsets[RegExp.$1] === 'undefined') {
				shufsets[RegExp.$1] = {};
				shufsets[RegExp.$1].inner = [];
				shufsets[RegExp.$1].member = [];
			}
			shufsets[RegExp.$1].inner.push({
				key: Math.random(),
				html: divs[i].innerHTML
			});
			shufsets[RegExp.$1].member.push(divs[i]);
		}
	}
	for (shufset in shufsets) {
		shufsets[shufset].inner.sort(function(a, b) {
			return a.key - b.key;
		});
		i = shufsets[shufset].member.length;
		while (i--) {
			shufsets[shufset].member[i].innerHTML = shufsets[shufset].inner[i].html;
			shufsets[shufset].member[i].style.display = 'block';
		}
	}
}
$(dshuf);

/**
 * Ajax transclusion table adds dynamic content loading to tables with class="attable".
 * @see https://meta.wikimedia.org/wiki/Ajax_transclusion_table
 * @update-token [[File:pathoschild/ajaxtransclusiontable.js]]
 */
mw.loader.load('//tools-static.wmflabs.org/meta/scripts/pathoschild.ajaxtransclusiontable.js');

/**
 * JSconfig
 *
 * Global configuration options to enable/disable and configure
 * specific script features from [[MediaWiki:Common.js]] and
 * [[MediaWiki:Monobook.js]]
 * This framework adds config options (saved as cookies) to [[Special:Preferences]]
 * For a more permanent change you can override the default settings in your
 * [[Special:Mypage/monobook.js]]
 * for Example: JSconfig.keys[loadAutoInformationTemplate] = false;
 *
 * Maintainer: [[User:Dschwen]]
 */

var JSconfig =
{
prefix : 'jsconfig_',
keys : {},
meta : {},

//
// Register a new configuration item
//  * name          : String, internal name
//  * default_value : String or Boolean (type determines configuration widget)
//  * description   : String, text appearing next to the widget in the preferences
//  * prefpage      : Integer (optional), section in the preferences to insert the widget:
//                     0 : User profile
//                     1 : Skin
//                     2 : Math
//                     3 : Files
//                     4 : Date and time
//                     5 : Editing
//                     6 : Recent changes
//                     7 : Watchlist
//                     8 : Search
//                     9 : Misc
//
// Access keys through JSconfig.keys[name]
//
registerKey : function( name, default_value, description, prefpage )
{
  if( typeof(JSconfig.keys[name]) === 'undefined' )
   JSconfig.keys[name] = default_value;
  else {

   // all cookies are read as strings,
   // convert to the type of the default value
   switch( typeof(default_value) )
   {
    case 'boolean' : JSconfig.keys[name] = ( JSconfig.keys[name] == 'true' ); break;
    case 'number'  : JSconfig.keys[name] = JSconfig.keys[name]/1; break;
   }

  }

  JSconfig.meta[name] = { 'description' : description, 'page' : prefpage || 0, 'default_value' : default_value };
},

readCookies : function()
{
  var cookies = document.cookie.split("; ");
  var p =JSconfig.prefix.length;
  var i;

  for( var key in cookies )
  {
   if( cookies[key].substring(0,p) == JSconfig.prefix )
   {
    i = cookies[key].indexOf('=');
    //alert( cookies[key] + ',' + key + ',' + cookies[key].substring(p,i) );
    JSconfig.keys[cookies[key].substring(p,i)] = cookies[key].substring(i+1);
   }
  }
},

writeCookies : function()
{
  for( var key in JSconfig.keys )
   document.cookie = JSconfig.prefix + key + '=' + JSconfig.keys[key] + '; path=/; expires=Thu, 2 Aug 2009 10:10:10 UTC';
},

evaluateForm : function()
{
  var w_ctrl,wt;
  //alert('about to save JSconfig');
  for( var key in JSconfig.meta ) {
   w_ctrl = document.getElementById( JSconfig.prefix + key );
   if( w_ctrl )
   {
    wt = typeof( JSconfig.meta[key].default_value );
    switch( wt ) {
     case 'boolean' : JSconfig.keys[key] = w_ctrl.checked; break;
     case 'string' : JSconfig.keys[key] = w_ctrl.value; break;
    }
   }
  }

  JSconfig.writeCookies();
  return true;
},

setUpForm : function()
{
  var key;
  var prefChild = document.getElementById('preferences');
  if( !prefChild ) return;
  prefChild = prefChild.childNodes;

  //
  // make a list of all preferences sections
  //
  var tabs = [];
  var len = prefChild.length;
  for( key = 0; key < len; key++ ) {
   if( prefChild[key].tagName &&
       prefChild[key].tagName.toLowerCase() == 'fieldset' )
    tabs.push(prefChild[key]);
  }

  //
  // Create Widgets for all registered config keys
  //
  var w_div, w_label, w_ctrl, wt;
  for( key in JSconfig.meta ) {
   w_div = document.createElement( 'div' );

   w_label = document.createElement( 'LABEL' );
   w_label.appendChild( document.createTextNode( JSconfig.meta[key].description ) );
   w_label.htmlFor = JSconfig.prefix + key;

   wt = typeof( JSconfig.meta[key].default_value );

   w_ctrl = document.createElement( 'input' );
   w_ctrl.id = JSconfig.prefix + key;

   // before insertion into the DOM tree
   switch( wt ) {
    case 'boolean' : w_ctrl.type = 'checkbox'; break;
    case 'string'  : w_ctrl.type = 'text'; break;
   }

   w_div.appendChild( w_label );
   w_div.appendChild( w_ctrl );
   tabs[JSconfig.meta[key].page].appendChild( w_div );

   // after insertion into the DOM tree
   switch( wt ) {
    case 'boolean' : w_ctrl.defaultChecked = w_ctrl.checked = JSconfig.keys[key]; break;
    case 'string' : w_ctrl.defaultValue = w_ctrl.value = JSconfig.keys[key]; break;
   }

  }
  $('#preferences').parent().on( 'submit', JSconfig.evaluateForm );
}
};

JSconfig.readCookies();
$(JSconfig.setUpForm);

if(location.href.indexOf('rtl=1') !== -1) {
	mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Gadget-rtl.css&action=raw&ctype=text/css', 'text/css');
}

// Import local or interwiki page as script
// @deprecated since MediaWiki 1.17: Use mw.loader.load(url) or $.getScript(url, callback) instead.
function importScript(page, lang) {
	var query = '?title=' + encodeURIComponent(page.replace(' ','_')) + '&action=raw&ctype=text/javascript';
	if (lang) {
		mw.loader.load('//' + lang + '.wikipedia.org/w/index.php' + query);
	} else {
		mw.loader.load('//meta.wikimedia.org' + mw.config.get( 'wgScript' ) + query);
	}
}

( function () {
	var conf = mw.config.get( [
		'wgCanonicalSpecialPageName',
		'wgUserGroups',
		'wgPageName',
		'wgUserName'
	] );

	$(function () {
		// Set a default of anon-only global blocks
		// We don't want to override the user's request when they're specifying [?&]wpAnonOnly=[01] in the URL or
		// if we're loading up the block settings for an already-blocked IP (then you can't see whether the block was AO or not)
		if ( conf.wgCanonicalSpecialPageName === 'GlobalBlock' && conf.wgUserGroups && conf.wgUserGroups.join(' ').indexOf('steward') !== -1 ) {
			if ( document.getElementById('mw-globalblock-expiry-other') !== null ) {
				var expiry = document.getElementById('mw-globalblock-expiry-other').value;
				if ( expiry === '' && location.href.indexOf('wpAnonOnly=') === -1){
					document.getElementById('mw-globalblock-anon-only').checked = true;
				}
			}
		}
	});

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

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

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

	// Help:Diff
	if ( conf.wgPageName === 'Help:Diff' ) {
	    mw.loader.load( 'mediawiki.action.history.diff' );
	}

	/**
	 * Remove "Wikimedia Fellowships/Project Ideas/" prefix on few fellowship pages
	 *
	 * Maintainer: [[en:User:Jarry1250]]
	 */
	if ($.inArray(conf.wgPageName, ['Wikimedia_Fellowships/Process', 'Wikimedia_Fellowships/Project_Ideas', 'Wikimedia_Fellowships/Project_Ideas/test']) > -1) {
		$( 'a.CategoryTreeLabel' ).text( function( i, current ) {
		    return current.replace( 'Wikimedia Fellowships/Project Ideas/', '' );
		} );
	}

	/**
	 * Remove "Grants:IEG/" prefix on a few IEG pages
	 *
	 * Maintainer: [[en:User:Jarry1250]]
	 */
	if ($.inArray(conf.wgPageName, ['Grants:IEG', 'Grants:IEG/Committee/Workroom/Review', 'Grants:IEG/Committee_Members/Working_groups']) > -1) {
		$( 'a.CategoryTreeLabel' ).text( function( i, current ) {
		    return current.replace( 'IEG/', '' );
		} );
	}

	/**
	 * IE fixes as required
	 * (includes hlist fixup for IE)
	 */
	if ( $.client.profile().name === 'msie' ) {
	    importScript( 'MediaWiki:Common.js/IEFixes.js' );
	}

	// Voting script for Steward Elections 2015:
	if ( conf.wgPageName.indexOf( 'Stewards/Elections_' ) === 0 && conf.wgPageName.indexOf( '/Votes/' ) !== -1 && conf.wgUserName !== null ) {
		mw.loader.load( '//meta.wikimedia.org/w/index.php?title=User:Hoo_man/stewardVote.js&action=raw&ctype=text/javascript' );
	}
}() );