MediaWiki:Common.js : Différence entre versions

De NVCwiki
Aller à : navigation, rechercher
(Remise en forme)
(Source : http://fr.wikipedia.org/wiki/MediaWiki:Common.js)
Ligne 14 : Ligne 14 :
 
  } );
 
  } );
  
/* N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
+
/**
 +
* N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
 +
*
 +
* ATTENTION : Avant de modifier cette page, veuillez tester vos changements avec votre propre
 +
* monobook.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
 +
*/
  
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
 
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 51 : Ligne 62 :
 
  */
 
  */
 
function isClass(element, classe) {
 
function isClass(element, classe) {
    var s=" "+element.className+" ";
+
     return hasClass(element, classe);
     return s.indexOf(" "+classe+" ")>=0;
 
 
}
 
}
+
 
 
function whichClass(element, classes) {
 
function whichClass(element, classes) {
 
     var s=" "+element.className+" ";
 
     var s=" "+element.className+" ";
Ligne 111 : Ligne 121 :
 
}
 
}
  
/************************************************************************/
+
// Récupère proprement le contenu textuel d'un noeud et de ses noeuds descendants
/* Fonctions générales mediawiki (pallient les limitations du logiciel) */
+
// Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC
/* Surveiller : http://fr.wikipedia.org/skins-1.5/common/wikibits.js   */
+
function getTextContent(oNode) {
/************************************************************************/
+
  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.indexOf){
 +
    Array.prototype.indexOf = function(obj){
 +
        for(var i=0; i<this.length; i++){
 +
            if(this[i]==obj){
 +
                return i;
 +
            }
 +
        }
 +
        return -1;
 +
    }
 +
}
 +
 
 +
/**********************************************************************************************************/
 +
/* Fonctions générales MediaWiki (pallient les limitations du logiciel)                                   */
 +
/* Surveiller : http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/skins/common/wikibits.js?view=log  */
 +
/**********************************************************************************************************/
  
 
/*
 
/*
Ligne 126 : Ligne 179 :
 
/**
 
/**
 
  * Insérer un JavaScript d'une page particulière, idée de Mickachu
 
  * 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) {
 
function loadJs(page) {
   document.write('<script type="text/javascript" src="' +
+
   importScript(page);
                'http://fr.wikipedia.org/w/index.php?title=' + page +
 
                '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
 
}
 
}
  
Ligne 137 : Ligne 189 :
 
  */
 
  */
 
function obtenir(name) {
 
function obtenir(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
/* 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 !
 
 
  */
 
  */
 
+
function TransformeEnDiscussion() {
function addBibSubsetMenu() {
+
   if(  (wgPageName.search('Wikipédia:Le_Bistro') != -1)
   var specialBib = document.getElementById('specialBib');
+
    || (wgPageName.search('Wikipédia:Bulletin_des_administrateurs') != -1)
  if (!specialBib) return;
+
     || document.getElementById('transformeEnPageDeDiscussion')) {
 
+
     removeClass(document.body, 'ns-subject');
  specialBib.style.display = 'block';
+
     addClass(document.body, 'ns-talk');
  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 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(TransformeEnDiscussion);
addOnloadHook(addBibSubsetMenu);
 
  
 
/**
 
/**
  * Modifie Special:Search pour pouvoir utiliser différents moteurs de recherche,
+
  * Transformer certaines pages en pseudo-article
* disponibles dans une boîte déroulante.
+
  * c'est raisonnable ? --Tavernier
* Auteurs : [[:en:User:Gracenotes]], importé de Wikipédia en anglais.
 
  * [[User:Zelda]] pour le stockage du moteur par cookie.
 
 
  */
 
  */
+
function TransformeEnArticle() {
if (wgPageName == "Special:Recherche") {
+
  var transformeEnA = document.getElementById("transformeEnArticle");
  var searchEngines = [];
+
  if(transformeEnA) document.body.className = "ns-0";
  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);
 
 
}
 
}
 +
addOnloadHook(TransformeEnArticle);
  
 
/**
 
/**
  * Transformer les pages du Bistro en page de discussion
+
  * Ajouter un bouton à la fin de la barre d'outils
 
  */
 
  */
function DiscussionBistro() {
+
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
   if(  (wgPageName.search('Wikipédia:Le_Bistro') != -1)
+
   mwCustomEditButtons[mwCustomEditButtons.length] =
     || (wgPageName.search('Wikipédia:Bulletin_des_administrateurs') != -1))
+
     {"imageId": imageId,
    document.body.className = 'ns-1';
+
    "imageFile": imageFile,
 +
    "speedTip": speedTip,
 +
    "tagOpen": tagOpen,
 +
    "tagClose": tagClose,
 +
    "sampleText": sampleText};
 
}
 
}
  
addOnloadHook(DiscussionBistro);
 
  
/**
 
* Transformer certaines pages en page de discussion avec le modèle {{page de discussion}}
 
*/
 
function TransformeEnDiscussion() {
 
  var transformeEnPDD = document.getElementById("transformeEnPageDeDiscussion");
 
  if(transformeEnPDD) document.body.className = "ns-1";
 
}
 
  
addOnloadHook(TransformeEnDiscussion);
+
/****************************************/
 +
/* Applications pour l'ensemble du site */
 +
/****************************************/
  
 
/**
 
/**
  * Transformer certaines pages en pseudo-article
+
  * Tout ce qui concerne la page d'édition
  * c'est raisonnable ? --Tavernier
+
  * Voir MediaWiki:Common.js/edit.js pour ces fonctions
 
  */
 
  */
function TransformeEnArticle() {
+
if( wgAction == 'edit' || wgAction == 'submit' ) {
  var transformeEnA = document.getElementById("transformeEnArticle");
+
  importScript( 'MediaWiki:Common.js/edit.js' );
  if(transformeEnA) document.body.className = "ns-0";
 
 
}
 
}
 
addOnloadHook(TransformeEnArticle);
 
  
 
/**
 
/**
  * Afficher une explication au nombre de caractères dans la liste de suivi
+
  * Liens d'accès directs pour la navigation au clavier
 
  */
 
  */
function toolTipPlusMinus() {
+
function showSkipLinks() {
   var tt = "Nombre de caractères d'écart entre les deux dernières versions de la page";
+
   var jump_to_nav = document.getElementById('jump-to-nav');
   var elmts = document.getElementsByTagName("span");
+
   if( !jump_to_nav ) return;
   for(var cpt = 0; cpt < elmts.length; cpt++) {
+
   var skip_links = jump_to_nav.getElementsByTagName('A')[0];
    if (/mw-plusminus-(pos|neg|null)/.test(elmts[cpt].className) || /mw-plusminus-(pos|neg|null)/.test(elmts[cpt].getAttribute("class")))
+
  jump_to_nav.className='hidden';
      elmts[cpt].title = tt;
+
  skip_links.onfocus=function() {
 +
    jump_to_nav.className='';
 
   }
 
   }
 
}
 
}
 
+
addOnloadHook(showSkipLinks);
addOnloadHook(toolTipPlusMinus);
 
  
 
/**
 
/**
  * Utilisation du modèle Modèle:Images
+
  * 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 toggleImage(group, remindex, shwindex) {
+
function rewritePageH1() {
   document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
+
   var realTitleBanner = document.getElementById('RealTitleBanner');
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
+
  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';
 +
        if(wgNamespaceNumber==0 || wgNamespaceNumber==10) {
 +
          var avert = document.createElement('p')
 +
          avert.style.fontSize = '90%';
 +
          avert.innerHTML = 'Titre à utiliser pour créer un lien interne : <b>'+realH1+'</b>';
 +
          insertAfter(document.getElementById('content'),avert,h1);
 +
        }
  
function imageGroup(){
 
  if (document.URL.match(/printable/g)) return;
 
  var bc=document.getElementById("bodyContent");
 
  if( !bc ) bc = document.getElementById("mw_contentholder");
 
  if( !bc ) return;
 
  var divs=bc.getElementsByTagName("div");
 
  var i = 0, j = 0;
 
  var units, search;
 
  var currentimage;
 
  var UnitNode;
 
  for (i = 0; i < divs.length ; i++) {
 
    if (divs[i].className != "ImageGroup") continue;
 
    UnitNode=undefined;
 
    search=divs[i].getElementsByTagName("div");
 
    for (j = 0; j < search.length ; j++) {
 
      if (search[j].className != "ImageGroupUnits") continue;
 
      UnitNode=search[j];
 
      break;
 
    }
 
    if (UnitNode==undefined) continue;
 
    units=Array();
 
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
 
      var temp = UnitNode.childNodes[j];
 
      if (temp.className=="center") units.push(temp);
 
    }
 
    for (j = 0 ; j < units.length ; j++) {
 
      currentimage=units[j];
 
      currentimage.id="ImageGroupsGr"+i+"Im"+j;
 
      var imghead = document.createElement("div");
 
      var leftlink;
 
      var rightlink;
 
      if (j != 0) {
 
        leftlink = document.createElement("a");
 
        leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
 
        leftlink.innerHTML="◀";
 
      } else {
 
        leftlink = document.createElement("span");
 
        leftlink.innerHTML="&nbsp;";
 
      }
 
      if (j != units.length - 1) {
 
        rightlink = document.createElement("a");
 
        rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
 
        rightlink.innerHTML="▶";
 
      } else {
 
        rightlink = document.createElement("span");
 
        rightlink.innerHTML="&nbsp;";
 
      }
 
      var comment = document.createElement("tt");
 
      comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
 
      with(imghead) {
 
        style.fontSize="110%";
 
        style.fontweight="bold";
 
        appendChild(leftlink);
 
        appendChild(comment);
 
        appendChild(rightlink);
 
 
       }
 
       }
      currentimage.insertBefore(imghead,currentimage.childNodes[0]);
 
      if (j != 0) currentimage.style.display="none";
 
 
     }
 
     }
 
   }
 
   }
 
}
 
}
 
+
addOnloadHook(rewritePageH1);
addOnloadHook(imageGroup);
 
  
 
/**
 
/**
  * Ajout d'un style particulier aux liens interlangues vers un bon article ou
+
  * Icônes de titre
  * un article de qualité
+
*
 +
* 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 lienAdQouBAouPdQ() {
+
function IconesDeTitre() {
   // links are only replaced in p-lang
+
   var h1 = document.getElementById('firstHeading');
   var pLang = document.getElementById("p-lang");
+
   if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
   if (!pLang) return;
+
   if(!h1) return;
   var lis = pLang.getElementsByTagName("li");
+
   var icones = getElementsByClass( "icone_de_titre", document, "div" );
   for (var i=0; i<lis.length; i++) {
+
   for( var j = icones.length; j > 0; --j ){
     var li = lis[i];
+
     icones[j-1].style.display = "block"; /* annule display:none par défaut */
    // ADQ- est intentionnel pour correspondre au modèle Lien AdQ, on
+
     icones[j-1].style.borderWidth = "1px";
     // ne doit pas le corriger.
+
    icones[j-1].style.borderStyle = "solid";
    if (document.getElementById("ADQ-" + li.className)) {
+
     icones[j-1].style.borderColor = "white";
      li.className += " AdQ";
+
    if(( skin == "modern" )||( skin == "vector" )){
      li.title = "Lien vers un article de qualité";
+
       icones[j-1].style.marginTop = "0em";
     } 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é";
 
 
     }
 
     }
 +
    h1.parentNode.insertBefore(icones[j-1], h1); /* déplacement de l'élément */
 
   }
 
   }
 
}
 
}
addOnloadHook(lienAdQouBAouPdQ);
+
addOnloadHook(IconesDeTitre);
  
 
/**
 
/**
  * Suppression du titre sur la page d'accueil,
+
  * Déplacement de coordonnées qui apparaissent en haut de la page  
* changement de l'onglet et lien vers la liste complète des Wikipédias depuis l'accueil
 
 
  */
 
  */
function mainPageTransform(){
+
function moveCoord() {
   if(wgPageName != 'Accueil' && wgPageName != 'Discuter:Accueil') return;
+
   var h1 = document.getElementById('firstHeading');
   try {
+
  if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
    document.getElementById('ca-nstab-main').firstChild.innerHTML = 'Accueil';
+
   var coord = document.getElementById('coordinates');
   } catch (e) { /* Erreur : l'apparence ne gère la pas les onglets */ }
+
   if ( !coord || !h1 ) return;
   if(wgPageName == 'Accueil' && wgIsArticle) addPortletLink('p-lang', 'http://meta.wikimedia.org/wiki/Liste_des_Wikipédias', '+');
+
   coord.id = "coordinates-title";
 +
  h1.parentNode.insertBefore(coord, h1); /* déplacement de l'élément */
 
}
 
}
 
+
addOnloadHook(moveCoord);
addOnloadHook(mainPageTransform);
 
  
 
/**
 
/**
  * Liens d'aide des pages spéciales
+
  * 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>
 
  *
 
  *
  * permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
+
  * Doit être exécutée après les fonctions d'icônes de titre
* known bug : conflit avec le changement de titre classique.
 
* Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
 
 
  */
 
  */
function rewritePageH1bis() {
+
 
   try {
+
function sousTitreH1() {
    var helpPage = document.getElementById("helpPage");
+
   var span= document.getElementById('sous_titre_h1');
    if (helpPage) {
+
  var title=document.getElementById('firstHeading');
      var helpPageURL = document.getElementById("helpPageURL");
+
  if(!title) title = document.getElementsByTagName('h1')[0]; // Nostalgia, Standard
      var h1 = document.getElementsByTagName("h1")[0];
+
  if (span && title) {
      if (helpPageURL && h1) {
+
      var subtitle=span.cloneNode(true);
        h1.innerHTML = h1.innerHTML + '<span id="h1-helpPage">' + helpPageURL.innerHTML + '</span>';
+
      title.appendChild(document.createTextNode(' '));
        helpPage.style.display = "none";
+
       title.appendChild(subtitle);
       }
+
      span.parentNode.removeChild(span);
    }
 
  } catch (e) {
 
    /* Something went wrong. */
 
 
   }
 
   }
 
}
 
}
 
+
addOnloadHook(sousTitreH1);
addOnloadHook(rewritePageH1bis);
 
  
 
/**
 
/**
  * Redirect vers wikibooks etc.
+
  * Déplacement des [modifier]
 +
*
 +
* Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki.
 +
* Ce script devrait pouvoir être supprimé lorsque le [[bugzilla:11555]] sera résolu (comportement équivalent)
 +
*
 +
* Copyright 2006, Marc Mongenet. Licence GPL et GFDL.
 
  *
 
  *
 +
* The function looks for <span class="editsection">, and move them
 +
* at the end of their parent and display them inline in small font.
 +
* var oldEditsectionLinks=true disables the function.
 
  */
 
  */
var redirectedFromArticleDatas = new Array(
+
function setModifySectionStyle()  
  new Array('Wikipédia:Redirect_vers_Wikibooks', 'wikibooks'),
+
{
  new Array('Wikipédia:Redirect_vers_Wikisource', 'wikisource'),
 
  new Array('Wikipédia:Redirect_vers_Wikiversité', 'wikiversity'),
 
  new Array('Wikipédia:Redirect_vers_Wikiquote', 'wikiquote'),
 
  new Array('Wikipédia:Redirect_vers_Wikinews', 'wikinews'),
 
  new Array('Wikipédia:Redirect_vers_Wiktionnaire', 'wiktionary')
 
);
 
 
 
function redirectedFromArticle() {
 
  if (wgIsArticle == false)
 
      return;
 
  for (var i = 0; i < redirectedFromArticleDatas.length; ++i) {
 
    var page_match = redirectedFromArticleDatas[i];
 
    var index = wgPageName.indexOf(page_match[0]);
 
    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);
 
        // Konqueror 3.5 work around
 
        if (target.indexOf('#') == 0)
 
            target = target.slice(1);
 
        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);
 
 
 
/* En phase de test */
 
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
 
    Fonctionnement du [[Modèle:Cadre à onglets]]
 
    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 process = function(list)
    var vOgIni = 0 
+
         {
    for (j=1;j<=9;j++){
+
                for(var i=0;i!=list.length;i++)
         var vBt = document.getElementById("mb"+i+"bt"+j);
+
                {
         if (!vBt) break;
+
                        var span=list[i].firstChild
        vBt.onclick = CadreOngletVoirOnglet;         
 
        if (vBt.className=="mbBoutonSel") vOgIni=j; 
 
    }
 
 
 
    if (vOgIni == 0) {
 
        vOgIni = 1+Math.floor((j-1)*Math.random()) ;
 
        document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
 
        document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
 
        document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
 
    }
 
  }
 
}
 
 
function CadreOngletVoirOnglet(){
 
  var vMbNom = this.id.substr(0,3);
 
  var vIndex = this.id.substr(5,1);
 
 
   
 
   
  var i=1
+
                        if (span.className == "editsection")  
  for (i=1;i<=9;i++){       
+
                        {
        var vOgElem = document.getElementById(vMbNom+"og"+i);
+
                                span.style.fontSize = "x-small";
        if (!vOgElem) break;
+
                                span.style.fontWeight = "normal";
        if (vIndex==i){  
+
                                span.style.cssFloat = span.style.styleFloat = "none";
                vOgElem.style.display = "block";
+
                                span.parentNode.appendChild(document.createTextNode(" "));
                vOgElem.style.visibility = "visible";
+
                                span.parentNode.appendChild(span);
                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);
+
        try
 +
        {
 +
                if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
 +
                process(document.getElementsByTagName("h2"));
 +
                process(document.getElementsByTagName("h3"));
 +
                process(document.getElementsByTagName("h4"));
 +
                process(document.getElementsByTagName("h5"));
 +
                process(document.getElementsByTagName("h6"));
 
   
 
   
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
+
        }
 +
        catch (e) { }
 +
}
 +
addOnloadHook(setModifySectionStyle);
  
 
/**  
 
/**  
Ligne 537 : Ligne 407 :
 
  * Pour [[Modèle:Méta palette de navigation]]
 
  * Pour [[Modèle:Méta palette de navigation]]
 
  */
 
  */
 
 
var autoCollapse = 2;
 
var autoCollapse = 2;
var collapseCaption = '[ Enrouler ]';
+
var collapseCaption = '[Enrouler]';
var expandCaption = '[ Dérouler ]';
+
var expandCaption = '[Dérouler]';
  
 
function collapseTable( tableIndex ) {
 
function collapseTable( tableIndex ) {
Ligne 601 : Ligne 470 :
 
   }
 
   }
 
}
 
}
 
 
addOnloadHook(createCollapseButtons);
 
addOnloadHook(createCollapseButtons);
  
Ligne 677 : Ligne 545 :
 
   }
 
   }
 
}
 
}
 
 
addOnloadHook(createNavigationBarToggleButton);
 
addOnloadHook(createNavigationBarToggleButton);
 
/**
 
* Compteur de consultation d'articles
 
*
 
* 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;
 
var counter_factor = 900;
 
 
function pgcounterSetup() {
 
  if(disable_counter == 0) {
 
    var url = window.location.href;
 
    if(Math.floor(Math.random()*counter_factor)==42) { // the probability thing
 
      if(wgIsArticle==true) { // do not count history pages etc.
 
        var pgcountNs = wgCanonicalNamespace;
 
        if(wgCanonicalNamespace=="") pgcountNs = "0";
 
        var cnt_url = "http://pgcount.wikimedia.de/index.png?ns=" + pgcountNs + "&title=" + encodeURI(wgTitle) + "&factor=" + counter_factor + "&wiki=frwiki";
 
        var img = new Image();
 
        img.src = cnt_url;
 
      }
 
    }
 
  }
 
}
 
 
addOnloadHook(pgcounterSetup);
 
 
/**
 
* 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 rewritePageH1() {
 
  var realTitleBanner = document.getElementById('RealTitleBanner');
 
  if (realTitleBanner) {
 
    if (!document.getElementById('DisableRealTitle')) {
 
      var realTitle = document.getElementById('RealTitle');
 
      var h1 = document.getElementsByTagName('h1')[0];
 
      if (realTitle && h1) {
 
        var titleText = realTitle.innerHTML;
 
        if (titleText == '') h1.style.display = 'none';
 
        else h1.innerHTML = titleText;
 
        realTitleBanner.style.display = 'none';
 
      }
 
    }
 
  }
 
}
 
 
addOnloadHook(rewritePageH1);
 
  
 
/**
 
/**
Ligne 745 : Ligne 552 :
 
  * voir WP:WMA  
 
  * voir WP:WMA  
 
  */
 
  */
document.write('<script type="text/javascript" src="'
+
if (wgServer == "https://secure.wikimedia.org") {
    + 'http://meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js'
+
  var metaBase = "https://secure.wikimedia.org/wikipedia/meta";
    + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
+
} else {
 +
  var metaBase = "http://meta.wikimedia.org";
 +
}
 +
importScriptURI(metaBase+"/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400")
  
 
var wma_settings = {  
 
var wma_settings = {  
Ligne 754 : Ligne 564 :
  
 
/**
 
/**
  * Icônes de titre
+
  * Utilisation du modèle Modèle:Images
*
 
* 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() {
+
function toggleImage(group, remindex, shwindex) {
   var h1 = document.getElementsByTagName("h1")[0];
+
  document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
   var icones = document.getElementsByTagName("div");
+
  document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
   var icones2 = new Array();
+
}
   var j = 0;
+
 
   for (var i = 0; i < icones.length; ++i) {
+
function imageGroup(){
     if (icones[i].className == "icone de titre") {
+
  if (document.URL.match(/printable/g)) return;
       icones2[j++] = icones[i];
+
   var bc=document.getElementById("bodyContent");
 +
  if( !bc ) bc = document.getElementById("mw_contentholder");
 +
   if( !bc ) bc = document.getElementById("article");
 +
  if( !bc ) return;
 +
   var divs=bc.getElementsByTagName("div");
 +
   var i = 0, j = 0;
 +
  var units, search;
 +
  var currentimage;
 +
  var UnitNode;
 +
   for (i = 0; i < divs.length ; i++) {
 +
     if (divs[i].className != "ImageGroup") continue;
 +
    UnitNode=undefined;
 +
    search=divs[i].getElementsByTagName("div");
 +
    for (j = 0; j < search.length ; j++) {
 +
       if (search[j].className != "ImageGroupUnits") continue;
 +
      UnitNode=search[j];
 +
      break;
 +
    }
 +
    if (UnitNode==undefined) continue;
 +
    units=Array();
 +
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
 +
      var temp = UnitNode.childNodes[j];
 +
      if (temp.className=="center") units.push(temp);
 +
    }
 +
    for (j = 0 ; j < units.length ; j++) {
 +
      currentimage=units[j];
 +
      currentimage.id="ImageGroupsGr"+i+"Im"+j;
 +
      var imghead = document.createElement("div");
 +
      var leftlink;
 +
      var rightlink;
 +
      if (j != 0) {
 +
        leftlink = document.createElement("a");
 +
        leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
 +
        leftlink.innerHTML="◀";
 +
      } else {
 +
        leftlink = document.createElement("span");
 +
        leftlink.innerHTML="&nbsp;";
 +
      }
 +
      if (j != units.length - 1) {
 +
        rightlink = document.createElement("a");
 +
        rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
 +
        rightlink.innerHTML="▶";
 +
      } else {
 +
        rightlink = document.createElement("span");
 +
        rightlink.innerHTML="&nbsp;";
 +
      }
 +
      var comment = document.createElement("tt");
 +
      comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
 +
      with(imghead) {
 +
        style.fontSize="110%";
 +
        style.fontweight="bold";
 +
        appendChild(leftlink);
 +
        appendChild(comment);
 +
        appendChild(rightlink);
 +
      }
 +
      currentimage.insertBefore(imghead,currentimage.childNodes[0]);
 +
      if (j != 0) currentimage.style.display="none";
 
     }
 
     }
  }
 
  for (; j > 0; --j) {
 
    icones2[j-1].style.display = "block"; /* annule display:none par défaut */
 
    icones2[j-1].style.borderWidth = "1px";
 
    icones2[j-1].style.borderStyle = "solid";
 
    icones2[j-1].style.borderColor = "white";
 
    h1.insertBefore(icones2[j-1], h1.firstChild); /* déplacement de l'élément */
 
 
   }
 
   }
 
}
 
}
 
+
addOnloadHook(imageGroup);
addOnloadHook(IconesDeTitre);
 
  
 
/**
 
/**
  * Déplacement de coordonnées qui apparaissent en haut de la page
+
  * Ajout d'un style particulier aux liens interlangues vers un bon article ou
 +
* un article de qualité
 
  */
 
  */
function moveCoord() {
+
function lienAdQouBAouPdQ() {
  var h1 = document.getElementsByTagName("h1")[0];
 
  var coord = document.getElementById('coordinates');
 
  if ( !coord || !h1 ) return;
 
  coord.id = "coordinates-title";
 
  h1.insertBefore(coord, h1.firstChild);
 
}
 
  
addOnloadHook(moveCoord);
+
    if ( document.getElementById( "p-lang" ) ) {
 
+
        var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
/**
+
* Déplacement des [modifier]
+
        for ( var i = 0; i < InterwikiLinks.length; i++ ) {
*
+
            if ( document.getElementById( InterwikiLinks[i].className + "-adq" ) ) {
* Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki.
+
                InterwikiLinks[i].className += " AdQ"
*
+
                InterwikiLinks[i].title = "Lien vers un article de qualité.";
* Copyright 2006, Marc Mongenet. Licence GPL et GFDL.
+
            }
*
+
            else if ( document.getElementById( InterwikiLinks[i].className + "-ba" ) ) {
* The function looks for <span class="editsection">, and move them
+
                InterwikiLinks[i].className += " BA"
* at the end of their parent and display them inline in small font.
+
                InterwikiLinks[i].title = "Lien vers un bon article.";
* var oldEditsectionLinks=true disables the function.
+
            }
*/
+
            else if ( document.getElementById( InterwikiLinks[i].className + "-pdq" ) ) {
function setModifySectionStyle() {
+
                InterwikiLinks[i].className += " PdQ"
  try {
+
                InterwikiLinks[i].title = "Lien vers un portail de qualité.";
    if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
+
            }
    var spans = document.getElementsByTagName("span");
+
        }
    for (var s = 0; s < spans.length; ++s) {
 
      var span = spans[s];
 
      if (span.className == "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(lienAdQouBAouPdQ);
addOnloadHook(setModifySectionStyle);
 
  
 
/**
 
/**
  * Cache cadres de l'accueil
+
  * Redirect vers wikibooks etc.
 
  *
 
  *
* 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";
+
var redirectedFromArticleDatas = new Array(
var CacheCadresVal = {};
+
  new Array('Wikipédia:Redirect_vers_Wikibooks', 'wikibooks'),
var totalCadresAccueil = 0;
+
  new Array('Wikipédia:Redirect_vers_Wikisource', 'wikisource'),
 +
  new Array('Wikipédia:Redirect_vers_Wikiversité', 'wikiversity'),
 +
  new Array('Wikipédia:Redirect_vers_Wikiquote', 'wikiquote'),
 +
  new Array('Wikipédia:Redirect_vers_Wikinews', 'wikinews'),
 +
  new Array('Wikipédia:Redirect_vers_Wiktionnaire', 'wiktionary')
 +
);
  
function affCadreAccueil(id) {
+
function redirectedFromArticle() {
  visible = CacheCadresVal[id] = (!CacheCadresVal[id]);
+
  if (wgIsArticle == false)
  getElementsByClass('accueil_contenu',null,'div')[id].style.display = visible ? 'block' : 'none';
+
      return;
  document.getElementById('CacheCadreAccueil' + id).innerHTML = visible ? 'masquer' : 'afficher';
+
  for (var i = 0; i < redirectedFromArticleDatas.length; ++i) {
  sauverCookieAccueil();
+
    var page_match = redirectedFromArticleDatas[i];
}
+
    var index = wgPageName.indexOf(page_match[0]);
 +
    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;
  
function sauverCookieAccueil() {
+
        target = target.slice(1);
  var date = new Date();
+
        // Konqueror 3.5 work around
  date.setTime(date.getTime() + 30*86400*1000);
+
        if (target.indexOf('#') == 0)
  var val = 0;
+
            target = target.slice(1);
  for ( var i=0; i< totalCadresAccueil ; i++ ) {
+
        target = target.split('.23');
    if (!CacheCadresVal[i]) val = val | Math.pow(2,i);
+
        target[0] = target[0].replace(/\.([0-9A-Z][0-9A-Z])/g, '%$1');
  }
+
        var quoted = target[0]
  document.cookie = cookieCacheCadresName + "=" + val + "; expires="+date.toGMTString() + "; path=/";
+
        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, ' ');
  
function LiensCadresAccueil() {
+
        var e = document.createElement('A');
  if (wgPageName != "Accueil") return;
+
        e.href = 'http://fr.' + page_match[1] + '.org/wiki/' + quoted;
  cookieCadresAccueil = getCookieVal(cookieCacheCadresName);
+
        e.innerHTML = display;
  for ( var i=0; i<5; i++) {
+
        span.replaceChild(e, span.firstChild);
    var titre = getElementsByClass('headergris',document,'h2')[i];
+
        break;
    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);
+
addOnloadHook(redirectedFromArticle);
  
 
/**
 
/**
Ligne 900 : Ligne 743 :
 
   }
 
   }
 
}
 
}
 +
addOnloadHook(movePortalToCategoryBox);
  
addOnloadHook(movePortalToCategoryBox);
+
/**
 +
* Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) à la manière des boîtes déroulantes
 +
*/
 +
function hiddencat(){
 +
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(' | '));
 +
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.onclick = toggleHiddenCats;
 +
lnk.appendChild(document.createTextNode('[+]'));
 +
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');
 +
  changeText(hclink, '[–]');
 +
} else {
 +
  removeClass(hc, 'mw-hidden-cat-user-shown');
 +
  addClass(hc, 'mw-hidden-cats-hidden');
 +
  changeText(hclink, '[+]');
 +
}
 +
}
 +
addOnloadHook(hiddencat);
  
 +
/**
 +
* Script pour alterner entre deux cartes de géolocalisation
 +
*/
 +
addOnloadHook(function(){
 +
  var cont;
 +
  if(!(wgAction=="view" || wgAction=="purge")) return
  
/*************************************/
+
  cont=getElementsByClass('img_toogle', document.getElementById('bodyContent'), 'div');
/* Applications pour les rédacteurs  */
+
  if(cont.length==0) return
/*************************************/
 
  
/* todo : migrer celles qui ne sont pas vitales dans les gadgets */
+
  for (var i = 0; i < cont.length ; i++) {
 +
    cont.box = getElementsByClass('geobox',cont[i]);
 +
    cont.box[0].style.display='none';
 +
    cont.box[1].style.borderTop='0';
 +
    var toogle = document.createElement('a');
 +
    toogle.appendChild(document.createTextNode(cont.box[0].getElementsByTagName('img')[0].alt));
 +
    toogle.href='#';
 +
    toogle.className='a_toogle';
 +
    toogle.status = 1;
 +
    toogle.onclick = function() {
 +
      this.removeChild(this.firstChild);
 +
      div0 = getElementsByClass('geobox',this.parentNode)[0];
 +
      div1 = getElementsByClass('geobox',this.parentNode)[1];
 +
      alt0 = div0.getElementsByTagName('img')[0].alt;
 +
      alt1 = div1.getElementsByTagName('img')[0].alt;
 +
      if(this.status==0) {
 +
        div0.style.display='none';
 +
        div1.style.display='';
 +
        this.status=1;
 +
        this.appendChild(document.createTextNode(alt0));
 +
      } else {
 +
        div0.style.display='';
 +
        div1.style.display='none';
 +
        this.status=0;
 +
        this.appendChild(document.createTextNode(alt1));
 +
      }
 +
      return false;
 +
    }
 +
  cont[i].insertBefore(toogle, cont.box[1].nextSibling);
 +
  }
 +
});
  
 
/**
 
/**
  * Fonctions de remplissage automatique
+
  * permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
 +
* known bug : conflit avec le changement de titre classique.
 +
* Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
 
  */
 
  */
function InitPaS(page_name) {
+
function rewritePageH1bis() {
   return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
   try {
        "{{subst:Initialiser PàS|" + page_name + "|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}\n" +
+
    var helpPage = document.getElementById("helpPage");
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des Pages à supprimer -->";
+
    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";
 +
      }
 +
    }
 +
  } catch (e) {
 +
    /* Something went wrong. */
 +
  }
 
}
 
}
 +
addOnloadHook(rewritePageH1bis);
  
function InitLANN(page_name) {
+
/**
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
* application de [[Wikipédia:Prise de décision/Système de cache]]
        "{{subst:Initialiser LANN|" + page_name + "|~~~~}}\n" +
+
* un <span class="noarchive"> autour du lien l'empêche d'être pris en compte
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des articles non neutres -->";
+
* pour celui-ci uniquement
}
+
* un no_external_cache=true dans un monobouc personnel désactive le script
 +
*/
  
function InitIaS(page_name) {
+
addOnloadHook(function () {
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
 
        "{{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) {
+
  if (wgNamespaceNumber == 0) {
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n\n" +
+
    if ((typeof no_external_cache != "undefined") && (no_external_cache)) return;
        "{{subst:Initialiser PAdQ|" + page_name + "|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}";
+
    addcache();
}
+
  }
 +
 +
  function addcache() {
 +
    var external_links;
 +
    if (document.getElementsByClassName) {
 +
      external_links = document.getElementsByClassName('external');
 +
    } else {
 +
      external_links = getElementsByClass('external',document.getElementById("bodyContent"),'a');
 +
    }
  
function InitIaA(page_name) {
+
    for( i = 0;i < external_links.length;i++)
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
    {
        "{{subst:Amélioration image}}";
+
      var chemin = external_links[i].href;
}
 
  
function InitPCP(page_name) {
+
      if(chemin.indexOf("http://wikiwix.com/cache/")==-1 && chemin.indexOf("http://web.archive.org/web/*/")==-1 && chemin.indexOf("wikipedia.org")==-1 && chemin.indexOf("wikimedia.org")==-1 && chemin.indexOf("stable.toolserver.org")==-1)
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
      {
        "{{subst:Initialiser PCP|" + page_name + "|~~~~}}\n" +
+
      var li = external_links[i].parentNode;
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des\n" +
+
      if (li.className == "noarchive") continue;
        "     articles soupçonnées de violation de copyright -->";
+
      var depth = 0;
 +
      while ((depth < 3) && (li.tagName != "OL") && (li.parentNode != null)) {
 +
        li = li.parentNode;
 +
        depth++;
 +
      }
 +
 +
      if (li.tagName != "OL" || !(hasClass(li, 'references')) ) continue;
 +
      var titre = getTextContent(external_links[i]);
 +
      var last = document.createElement("small");
 +
      last.setAttribute("class", "cachelinks");
 +
      last.style.color = "#3366BB";
 +
      last.appendChild(document.createTextNode("\u00a0["));
 +
      insertAfter(external_links[i].parentNode, last, external_links[i]);
 +
 +
      var link = document.createElement("a");
 +
      link.setAttribute("href", "http://wikiwix.com/cache/?url=" + chemin.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(titre));
 +
      link.setAttribute("title", "archive de "+ titre);
 +
      link.appendChild(document.createTextNode("archive"));
 +
      link.style.color = "#3366BB";
 +
      last.appendChild(link);
 +
      last.appendChild(document.createTextNode("]"));
 +
      }
 +
    }
 +
  }
 
}
 
}
 +
);
  
function InitArbReq(page_name) {
+
/**
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
* Application de [[Wikipédia:Prise de décision/Lien interprojet]]
        "{{subst:Wikipédia:Comité d'arbitrage/Arbitrage/Modèle}}\n" +
+
* Copie les liens interprojets du modèle {{Autres projets}}
        "<!-- N'oubliez pas d'ajouter un lien vers cette page sur [[Wikipédia:Comité d'arbitrage/Arbitrage]] -->";
+
* dans le menu en colonne de gauche.
}
+
* remove_other_projects = true; dans le monobook personnel pour activer
 +
* en plus la suppression du modèle {{Autres projets}} en bas des articles.
 +
* no_other_projects = true; dans le monobook personnel pour désactiver
 +
* entièrement le script et l'ajout dans la colonne de gauche.
 +
*/
  
function InitDiscArbReq(page_name) {
+
function autresProjets() {
   return "<!-- Sauvegarder la page pour l'initialiser -->\n" +
+
   if ((typeof no_other_projects != "undefined") && (no_other_projects)) return;
        "{{subst:Discussion Wikipédia:Comité d'arbitrage/Arbitrage/Modèle}}";
+
  if(!(wgNamespaceNumber==0)) return;
}
+
  if(!(wgAction=="view")) return;
 +
  var div = document.getElementById('autres_projets');
 +
  if(!div) return;
  
function InitCdl(page_name) {
+
  if((skin=="monobook")||(skin=="chick")||(skin=="myskin")||(skin=="simple")){
  return "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->\n" +
+
    var Portlet_ClassName = "portlet";
        "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale du comité de lecture -->\n\n" +
+
    var PBody_ClassName = "pBody";
        "<noinclude>{{subst:Initialiser Comité de lecture2}}</noinclude>\n" +
+
    var Column_Id = 'column-one';
        "{{subst:Initialiser Comité de lecture|" + page_name + "|~~~~}}";
+
  }else if(skin=="modern"){
}
+
    var Portlet_ClassName = "portlet";
 +
    var PBody_ClassName = "pBody";
 +
    var Column_Id = 'mw_portlets';
 +
  }else if(skin=="vector"){
 +
    var Portlet_ClassName = "portal";
 +
    var PBody_ClassName = "body";
 +
    var Column_Id = 'mw-panel'
 +
  }else{
 +
    var Portlet_ClassName = false;
 +
  }
 +
  if(!Portlet_ClassName) return;
  
function InitProjetTraduction(page_name) {
+
  var list = div.getElementsByTagName('li');
   var mustSkip=wgPageName.indexOf('Projet:Traduction/*/');
+
   var newlist = document.createElement("ul");
   if (mustSkip == -1) {
+
   for (var i = 0; i < list.length ; i++) {
     return "{{subst:Initialiser la page de traduction|{{subst:SUBPAGENAME}}|~~~~|\n" +
+
     list.link = list[i].getElementsByTagName('a')[0];
          "<!--  À la création de la page, suivez les consignes ci-dessous pour proposer l'article.   \n" +
+
    list.text = list.link.getElementsByTagName('span')[0];
          "     ATTENTION : Veuillez ne rien effacer !                                            -->\n" +
+
    var newlistitem = document.createElement("li");
          "1. Indiquez ci-dessous la langue de l'article à traduire (ex: en de es it pt...)\n" +
+
    var newlink = document.createElement("a");
          "|en|\n" +
+
    var newlinktext = document.createTextNode(getTextContent(list.text));
          "2. Indiquez ci-dessous le nom de l'article original (ex: Frankreich)\n" +
+
    newlink.appendChild(newlinktext);
          "|Nom original ici| \n" +
+
    newlink.title=getTextContent(list.link);
          "3. Indiquez ci-dessous en une phrase l'intérêt de la traduction\n" +
+
    newlink.href=list.link.href;
          "|article très bien|\n" +
+
    newlistitem.appendChild(newlink);
          "4. Ajoutez éventuellement un court commentaire \n" +
+
    newlist.appendChild(newlistitem);
          "|commentaire très intéressant ici|\n" +
+
  }
          "| 5. C'est fini, vous pouvez désormais sauvegarder cette page.\n" +
+
  var interProject = document.createElement("div");
          "}}";
+
  interProject.className = Portlet_ClassName;
  } else {
+
  interProject.id = 'p-projects';
     return "";
+
  interProject.innerHTML = '<h5>Autres projets<\/h5><div class="'+PBody_ClassName+'"><ul>'+newlist.innerHTML+'</ul></div>';
 +
  insertAfter(document.getElementById(Column_Id),interProject,document.getElementById('p-tb'));
 +
  if ((typeof remove_other_projects != "undefined") && (remove_other_projects)) {
 +
     document = div.parentNode.removeChild(div);
 
   }
 
   }
 
}
 
}
 +
 +
addOnloadHook(autresProjets);
  
function InitPBA(page_name) {
 
  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>";
 
}
 
  
 +
/************************************************************/
 +
/* Function Strictement spécifiques à un espace de nom ou à une page */
 +
/************************************************************/
  
var init_if_empty = new Array(
+
// PAGE D'ACCUEIL
  new Array('Wikipédia:Pages_à_supprimer/', InitPaS),
+
if( wgFormattedNamespaces[wgNamespaceNumber]+":"+wgTitle == wgMainPageTitle ) {
  new Array('Wikipédia:Liste_des_articles_non_neutres/', InitLANN),
 
  new Array('Wikipédia:Images_à_supprimer/', InitIaS),
 
  new Array('Wikipédia:Proposition_articles_de_qualité/', InitPAdQ),
 
  new Array('Wikipédia:Pages_soupçonnées_de_violation_de_copyright/', InitPCP),
 
  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)
 
);
 
  
 
/**
 
/**
  * Remplit la zone d'édition si elle est vide avec le texte retourné par
+
  * Suppression du titre sur la page d'accueil,
  * un pointeur de fonction sélectionné par le nom de la page.
+
  * changement de l'onglet et lien vers la liste complète des Wikipédias depuis l'accueil
 
  */
 
  */
function InitPage() {
+
function mainPageTransform(){
   // Tester si editform et wpTextbox1 existe sinon il y a une erreur lorsqu'on
+
   //retiré le test, car le if encadrant la fonction est déjà plus restrictif - darkoneko 05/12/09
  // ouvre l'historique d'une page qui match un des noms de init_if_empty[],
+
   try {
  // tester seulement le nom de la page n'est pas suffisant.
+
    document.getElementById('ca-nstab-project').firstChild.innerHTML = '<span>Accueil<\/span>';
   if (document.editform == undefined || document.editform.wpTextbox1 == undefined) return;
+
   } catch (e) { /* Erreur : l'apparence ne gère la pas les onglets */ }
  var text_area = document.editform.wpTextbox1;
+
  addPortletLink('p-lang', 'http://www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias');
  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(mainPageTransform);
  
addOnloadHook(InitPage);
+
} // FIN DU IF page d'accueil
  
/**
 
* 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.
 
*/
 
  
/**
 
* Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
 
* Les caractères spéciaux sont définis dans Mediawiki:Edittools
 
*/
 
function addCharSubsetMenu() {
 
  var specialchars = document.getElementById('specialcharsets');
 
  if (!specialchars) return;
 
  
  // Construction du menu de selection
 
  var charSubsetSelect = document.createElement("select");
 
  charSubsetSelect.setAttribute("style", "display:inline");
 
  charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
 
  
  // Ajout des options au menu
 
  var p = document.getElementById('specialcharsets').getElementsByTagName('p');
 
  for (var i = 0; i < p.length ; i++) {
 
    var opt = document.createElement("option");
 
    var txt = document.createTextNode(p[i].title);
 
    opt.appendChild(txt);
 
    charSubsetSelect.appendChild(opt);
 
  }
 
  
  specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
 
  
  /* default subset - try to use a cookie some day */
+
// ESPACE DE NOM 'SPECIAL'
  chooseCharSubset(0);
+
if( wgNamespaceNumber == -1 ) {
}
 
  
 
/**
 
/**
  * Affichage du jeu de caractères sélectionné
+
  * Afficher une explication au nombre d'octets dans la liste de suivi
 
  */
 
  */
function chooseCharSubset(index) {
+
function toolTipPlusMinus() {
   var p = document.getElementById('specialcharsets').getElementsByTagName('p');
+
  if(wgCanonicalSpecialPageName != "Watchlist") return
   for (var i = 0; i < p.length ; i++) {
+
   var tt = "Nombre d'octets d'écart entre les deux dernières versions de la page";
     // Initialisation du jeu de caractères sélectionné
+
  var elmts = document.getElementsByTagName("span");
    if (i == index) {
+
   for(var cpt = 0; cpt < elmts.length; cpt++) {
    initializeCharSubset(p[i]);
+
     if (/mw-plusminus-(pos|neg|null)/.test(elmts[cpt].className) || /mw-plusminus-(pos|neg|null)/.test(elmts[cpt].getAttribute("class")))
    }
+
      elmts[cpt].title = tt;
    // Affichage du jeu sélectionné, masquage des autres
 
    p[i].style.display = i == index ? 'inline' : 'none';
 
    p[i].style.visibility = i == index ? 'visible' : 'hidden';
 
 
   }
 
   }
 
}
 
}
 +
addOnloadHook(toolTipPlusMinus);
 +
 +
 +
  
 
/**
 
/**
  * Initialisation du jeu de caractères sélectionné
+
  * Modifie Special:Search pour pouvoir utiliser différents moteurs de recherche,
  * Paramètre : paragraphe contenant le jeu à initialiser. Initialise tous les
+
* disponibles dans une boîte déroulante.
  * caractères contenus dans les sous-spans du paragraphe
+
  * Auteurs : Jakob Voss, Guillaume, importé depuis la Wiki allemande
 +
  * <pre><nowiki>
 
  */
 
  */
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 '
+
function externalSearchEngines() {
  var re = new RegExp("(\\\\|')", "g");
+
   if (typeof SpecialSearchEnhanced2Disabled != 'undefined') return;
   // gestion du caractère d'échappement '\'
+
   if (wgPageName != "Spécial:Recherche") return;
  var escapeRe = new RegExp("[^\\\\](\\\\\\\\)*\\\\$", "g");
 
   var unescapeRe = new RegExp("\\\\\\\\", "g");
 
  
   // traitement des spans du paragraphe
+
   var mainNode = document.getElementById("powersearch");
   for (var j = 0; j < spans.length; j++) {
+
   if (!mainNode) mainNode = document.getElementById("search");
    // span deja traité
+
  if (!mainNode) return;
    if (spans[j].childNodes.length == 0 || spans[j].childNodes[0].nodeType != 3) continue;
 
  
    // On parse le contenu du span
+
  var beforeNode = document.getElementById("mw-search-top-table");
    var chars = spans[j].childNodes[0].nodeValue.split(" ");
+
  if (!beforeNode) return;
    for (var k = 0; k < chars.length; k++) {
+
  beforeNode = beforeNode.nextSibling;
      var a = document.createElement("a");
+
  if (!beforeNode) return;
      var tags = chars[k];
+
 +
  var firstEngine = "mediawiki";
 +
 +
  var choices = document.createElement("div");
 +
  choices.setAttribute("id","searchengineChoices");
 +
  choices.style.textAlign = "center";
 +
 +
  var lsearchbox = document.getElementById("searchText");
 +
  var initValue = lsearchbox.value;
 +
 +
  var space = "";
  
       // regroupement des mots se terminant par un espace protégé par un \
+
  for (var id in searchEngines) {
       while (k < chars.length && chars[k].match(escapeRe)) {
+
    var engine = searchEngines[id];
      k++;
+
if(engine.ShortName)
tags = tags.substr(0, tags.length - 1) + " " + chars[k];
+
  {
      }
+
    if (space) choices.appendChild(space);
 +
    space = document.createTextNode(" ");
 +
 +
    var attr = {
 +
       type: "radio",
 +
      name: "searchengineselect",
 +
      value: id,
 +
       onFocus: "changeSearchEngine(this.value)",
 +
      id: "searchengineRadio-"+id
 +
    };
 +
 +
    var html = "<input";
 +
    for (var a in attr) html += " " + a + "='" + attr[a] + "'";
 +
    html += " />";
 +
    var span = document.createElement("span");
 +
    span.innerHTML = html;
 +
 +
    choices.appendChild( span );
 +
    var label = document.createElement("label");
 +
    label.htmlFor = "searchengineRadio-"+id;
 +
    if (engine.Template.indexOf('http') == 0) {
 +
      var lienMoteur = document.createElement("a");
 +
      lienMoteur.href = engine.Template.replace("{searchTerms}", initValue).replace("{language}", "fr");
 +
      lienMoteur.appendChild( document.createTextNode( engine.ShortName ) );
 +
      label.appendChild(lienMoteur);
 +
    } else {
 +
      label.appendChild( document.createTextNode( engine.ShortName ) );
 +
    }
 +
 
 +
    choices.appendChild( label );
 +
  }
 +
}
 +
  mainNode.insertBefore(choices, beforeNode);
 +
 +
  var input = document.createElement("input");
 +
  input.id = "searchengineextraparam";
 +
  input.type = "hidden";
 +
 +
  mainNode.insertBefore(input, beforeNode);
 +
 
 +
  changeSearchEngine(firstEngine, initValue);
 +
}
  
      // création du lien insertTag(tagBegin, tagEnd, defaultValue) en protegeant les caractères JS \ et '
+
function changeSearchEngine(selectedId, searchTerms) {
      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, "\\")));
+
  var currentId = document.getElementById("searchengineChoices").currentChoice;
      spans[j].appendChild(a);
+
  if (selectedId == currentId) return;
       spans[j].appendChild(document.createTextNode(" "));
+
 +
  document.getElementById("searchengineChoices").currentChoice = selectedId;
 +
  var radio = document.getElementById('searchengineRadio-'  + selectedId);
 +
  radio.checked = "checked";
 +
 +
  var engine = searchEngines[selectedId];
 +
  var p = engine.Template.indexOf('?');
 +
  var params = engine.Template.substr(p+1);
 +
 +
  var form;
 +
  if (document.forms["search"]) {
 +
    form = document.forms["search"];
 +
  } else {
 +
    form = document.getElementById("powersearch");
 +
  }
 +
  form.setAttribute("action", engine.Template.substr(0,p));
 +
 +
  var l = ("" + params).split("&");
 +
  for (var idx = 0;idx < l.length;idx++) {
 +
    var p = l[idx].split("=");
 +
    var pValue = p[1];
 +
 +
    if (pValue == "{language}") {
 +
    } else if (pValue == "{searchTerms}") {
 +
      var input;
 +
      input = document.getElementById("searchText");
 +
 +
       input.name = p[0];
 +
    } else {
 +
      var input = document.getElementById("searchengineextraparam");
 +
 +
      input.name = p[0];
 +
      input.value = pValue;
 
     }
 
     }
    // suppression de l'ancien contenu
 
    spans[j].removeChild(spans[j].firstChild);
 
 
   }
 
   }
 
}
 
}
  
addOnloadHook(addCharSubsetMenu);
 
  
/**
 
* Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
 
* paramètres :
 
* - nom du jeu de caractères
 
* - 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()
+
if (wgPageName == "Spécial:Recherche") {
   // lors de la sélection
+
var searchEngines = {
   var specialcharsets = document.getElementById('specialcharsets');
+
   mediawiki: {
   var p = document.createElement("p");
+
    ShortName: "Recherche interne",
  p.style.display = "none";
+
    Template: "/w/index.php?search={searchTerms}"
  p.title = title;
+
  },
   p.innerHTML = charsHTML;
+
   exalead: {
  specialcharsets.appendChild(p);
+
    ShortName: "Exalead",
 +
    Template: "http://www.exalead.com/search/wikipedia/results/?q={searchTerms}&language=fr"
 +
  },
 +
   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);
 
}
 
}
 +
 +
  
 
/**
 
/**
  * Permet d'ajouter d'un jeu de caractères spéciaux dans le menu déroulant
+
  * Affiche un modèle Information sur la page de téléchargement de fichiers [[Spécial:Téléchargement]]
* paramètres :
+
  * Voir aussi [[MediaWiki:Onlyifuploading.js]]
  * - nom du jeu de caractères
 
* - caractères spéciaux
 
* exemple d'utilisation : addSpecialCharset("Français", "â ê î ô û");
 
 
  */
 
  */
function addSpecialCharset(title, chars) {
+
if( wgCanonicalSpecialPageName == "Upload" ) {
   addSpecialCharsetHTML(title, "<span>" + chars + "</span>");
+
   importScript("MediaWiki:Onlyifuploading.js");
 
}
 
}
  
/**
+
} // Fin du code concernant l'espace de nom 'Special'
  * Générateur de tableaux
+
 
  * English: Generate an array using Mediawiki syntax
+
 
  *
+
// ESPACE DE NOM 'UTILISATEUR'
  * @author: fr:user:dake
+
if( wgNamespaceNumber == 2 ) {
  * @version: 0.2
+
 
  */
+
/* En phase de test */
 +
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
 +
    Fonctionnement du [[Modèle:Cadre à onglets]]
 +
    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;  
 +
    }
  
function generateTableau(nbCol, nbRow, styleHeader, styleLine) {
+
    if (vOgIni == 0) {  
  var code = "\n{| " +
+
        vOgIni = 1+Math.floor((j-1)*Math.random()) ;
    ((styleHeader==1) ? 'class="wikitable"' : '')+
+
        document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
    '\n|+ Titre du tableau\n';
+
        document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
      
+
        document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
   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';
+
function CadreOngletVoirOnglet(){
    } else {             
+
  var vMbNom = this.id.substr(0,3);  
      code += '|-----\n';
+
  var vIndex = this.id.substr(5,1);  
    }
+
         
+
  var i=1
    for (var i=0; i<nbCol; i++) code += '| élément\n';
+
   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;  
   code += '|}';
 
  insertTags('','', code);
 
 
}
 
}
 +
addOnloadHook(CadreOngletInit);
 +
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
 +
} // Fin du code concernant l'espace de nom 'Utilisateur'
 +
  
/**
+
// ESPACE DE NOM 'RÉFÉRENCE'
* English: Open a popup with parameters to generate an array.
+
if( wgNamespaceNumber == 104 ) {
* The number of rows/columns can be modified. Some additional
+
 
* parameters are related to templates available on :fr
+
/*
  *
+
  * Choix du mode d'affichage des références
  * @author: fr:user:dake
+
  * Devraient en principe se trouver côté serveur
  * @version: 0.1
+
  * @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
 
  */
 
  */
  
function popupTableau() {
+
function addBibSubsetMenu() {
   var popup = window.open('','name','height=400,width=500');
+
   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;
 
    
 
    
   javaCode =  '<script type="text\/javascript">function insertCode(){';
+
   /* default subset - try to use a cookie some day */
   javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
+
   chooseBibSubset(0);
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
+
}
   javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
+
 
   javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
+
// select subsection of special characters
  javaCode += 'window.opener.generateTableau(col,row,styleHeader,styleLine); ';
+
function chooseBibSubset(s) {
  javaCode += '}<\/script>';
+
   var l = document.getElementsByTagName('div');
    
+
   for (var i = 0; i < l.length ; i++) {
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
+
    if(l[i].className == 'BibList')   l[i].style.display = s == 0 ? 'block' : 'none';
  popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
+
    else if(l[i].className == 'WikiNorme') l[i].style.display = s == 1 ? 'block' : 'none';
  popup.document.write('<style type="text\/css" media="screen">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>');
+
    else if(l[i].className == 'BibTeX')   l[i].style.display = s == 2 ? 'block' : 'none';
  popup.document.write(javaCode);
+
    else if(l[i].className == 'ISBD')     l[i].style.display = s == 3 ? 'block' : 'none';
  popup.document.write('</head><body>');
+
    else if(l[i].className == 'ISO690')   l[i].style.display = s == 4 ? 'block' : 'none';
  popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>');
+
   }
  popup.document.write('<form name="paramForm">');
 
  popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>');
 
  popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>');
 
  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>');
 
  popup.document.write('</form">');
 
  popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>');
 
  popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
 
  popup.document.write('</body></html>');
 
   popup.document.close();
 
 
}
 
}
 +
addOnloadHook(addBibSubsetMenu);
 +
} // Fin du code concernant l'espace de nom 'Référence'
  
/**
 
* Insertion de nouveaux boutons dans la barre d'outil
 
*/
 
  
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
+
/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
  mwCustomEditButtons[mwCustomEditButtons.length] =
+
/* Plyd - 3 février 2009 */
    {"imageId": imageId,
+
function Rebours() {
    "imageFile": imageFile,
+
  if(wgNamespaceNumber==0) return;
    "speedTip": speedTip,
+
  try {
    "tagOpen": tagOpen,
+
  if (document.getElementById("rebours")) {
    "tagClose": tagClose,
+
      destime = document.getElementById("rebours").title.split(";;");
    "sampleText": sampleText};
+
      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);
 +
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png',
+
/* Ajoute la date de dernière modification sur le bandeau événement récent */
                'Tableau',
+
/* Plyd - 12 juin 2009 */
                '{|\n|-\n|\n|\n|}',
+
function LastModCopy() {
                '',
+
  var LastModSpan = document.getElementById('lastmod');                          // Monobook et affiliés, Modern
                '',
+
  if(!LastModSpan) LastModSpan = document.getElementById('footer-info-lastmod'); // Vector
                'mw-editbutton-array');
+
  var LastModBandeau = document.getElementById("lastmodcopy");
 +
  if((!LastModSpan)||(!LastModBandeau)) return;
 +
  LastModBandeau.innerHTML = LastModSpan.innerHTML;
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c9/Button_strike.png',
+
}
                'Rayer',
+
addOnloadHook(LastModCopy);
                '<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',
+
/* Autres fonctions non classées */
                '\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',
+
* Fonction
                '\n<gallery>\nImage:Exemple.jpg|[[Tournesol]]\nImage:Exemple1.jpg|[[La Joconde]]\nImage:Exemple2.jpg|Un [[hamster]]\n</gallery>\n{{message galerie}}',
+
*
                '',
+
* 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
                'mw-editbutton-gallery');
+
* @param val_defaut Valeur par défaut si la variable n'existe pas
 +
* @return La valeur de la variable, ou val_defaut si la variable n'existe pas
 +
*
 +
* Auteur : Sanao
 +
* Dernière révision : 22 novembre 2007
 +
*/
 +
function getVarValue(nom_variable, val_defaut)
 +
{
 +
    var result = null;
 +
 +
    try {
 +
        result = eval(nom_variable.toString());
 +
    } catch (e) {
 +
        result = val_defaut;
 +
    }
 +
 +
    return(result);
 +
}
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png',
+
/*
                'Commentaire',
+
* 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"
                'mw-editbutton-comment');
+
* 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);
 +
}
  
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/47/Button_redir.png',
+
/*
                'Redirection',
+
  Outil pour permettre l'affichage immédiat d'un javascript pour tous les utilisateurs en même temps.
                '#REDIRECT [[',
+
  Même s'ils ne rechargent pas Wikipédia avec CTRL+R.
                ']]',
+
  Utile initialement pour prévoir une bonne réactivité et un lancement général du [[Projet:Impression]].
                'nom de la destination',
+
  Plyd - 12 octobre 2008
                'mw-editbutton-redir');
+
  tag urgentsynchronejs inclus (pas encore) dans [[MediaWiki:Copyright]]
 +
*/
 +
function urgentSynchroneJsLoad() {
 +
  if (document.getElementById('urgentsynchronejs')) {
 +
    jsname = "MediaWiki:Common.js/"+document.getElementById('urgentsynchronejs').title;
 +
    importScript(jsname);
 +
  }
 +
}
 +
addOnloadHook(urgentSynchroneJsLoad);
  
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',
+
/* WikiForm pour la génération facilité de modèles */
                'Modèle',
+
/* Plyd - 10/02/2008 */
                '{{',
+
if (document.getElementById("WikiForm")) {
                '}}',
+
  importScript("MediaWiki:Gadget-WikiForm.js");
                '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',
+
/* petites fonctions pratiques  - Darkoneko, 09/01/2008 */
                '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'
+
//créé un lien et le retourne.
+ '== Notes et références de l\'article ==\n'
+
//le parametre onclick est facultatif.
+ '<references/>\n'
+
function createAdressNode(href, texte, onclick) {
+ '== Voir aussi ==\n'
+
  var a = document.createElement('a')
+ '=== Articles connexes ===\n'
+
  a.href = href
+ '* [[À remplacer]]\n'
+
  a.appendChild(document.createTextNode( texte ) )
+ '*\n'
+
  if(arguments.length == 3) {  a.setAttribute("onclick", onclick ) }
+ '=== Liens et documents externes ===\n'
 
+ '*\n';
 
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png',
 
                'Section Voir aussi',
 
                voirAussi,
 
                '',
 
                '',
 
                'mw-editbutton-voiraussi');
 
  
/**
+
   return a
* Changer le lien du bouton de création de tableau et supprime le bouton signature sur les articles
+
}
*/
 
function changButtons() {
 
   toolbarArray = document.getElementById('mw-editbutton-array');
 
  if (toolbarArray) {
 
    toolbarArray.onclick = function() {
 
      popupTableau();
 
      return false;
 
    }
 
  }
 
  
  var btnSigImg = document.getElementById('mw-editbutton-signature');
+
//Créé un cookie. il n'existais qu'une version dédiée à l'accueil. Celle ci est plus générique
  if (btnSigImg && wgNamespaceNumber == 0) btnSigImg.style.display = "none";
+
//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=/"
 
}
 
}
addOnloadHook(changButtons);
 
  
 +
/* /petites fonctions pratiques */
  
/**
+
/** For sysops and accountcreators *****************************************
  * Désactiver le bouton Sauvegarder à la première édition
+
  * Repris depuis Common.js @ enwiki - Crée le common.js réservé aux admins.
  * English : Force IP to preview before saving changes.
+
  *
  * Copyright Marc Mongenet, 2006
+
  * Description: Allows for sysop-specific Javascript at [[MediaWiki:Sysop.js]],
  * Plyd 05/2007: add "after preview" in the button to prevent misunderstanding from beginners
+
  *               and accountcreator-specific CSS at [[MediaWiki:Accountcreator.css]].
 
  */
 
  */
function forcePreview() {
+
if ( wgUserGroups ) {
   if (wgUserName != null || wgAction != "edit") return;
+
   for ( var g = 0; g < wgUserGroups.length; ++g ) {
  saveButton = document.getElementById("wpSave");
+
    if ( wgUserGroups[g] == "sysop" ) {
  if (!saveButton) return;
+
      importStylesheet("MediaWiki:Sysop.css");
  saveButton.disabled = true;
+
      addOnloadHook( function() {
  saveButton.value = "Sauvegarder (après prévisualisation)";
+
        if ( !window.disableSysopJS ) {
  saveButton.style.fontWeight = "normal";
+
          importScript("MediaWiki:Sysop.js");
   document.getElementById("wpPreview").style.fontWeight = "bold";
+
        }
 +
      } );
 +
    }
 +
   }
 
}
 
}
 
addOnloadHook(forcePreview);
 
 
//</nowiki>
 
  
 
function includePage( name )
 
function includePage( name )

Version du 6 septembre 2010 à 20:53

/* pour activer les pop-ups */

addOnloadHook( function() {
     var pops = function( elems ) {
         for (var i=0; i<elems.length; i++) {
             if ( !(' '+elems[i].className+' ').match( / pops / ) ) continue;
             var anchs = elems[i].getElementsByTagName('a');
             for (var j=0; j<anchs.length; j++) anchs[j].target = '_blank';
         }
     };
     var bc = document.getElementById('bodyContent');
     var tags = ['span', 'div', 'table', 'td', 'th'];
     for (var i=0; i<tags.length; i++) pops( bc.getElementsByTagName( tags[i] ) );
 } );

/**
 * 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
 * monobook.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
 */



/*************************************************************/
/* Fonctions JavaScript : pallient les limites de JavaScript */
/* Surveiller : http://www.ecmascript.org/                   */
/*************************************************************/

/**
 * insertAfter : insérer un élément dans une page
 */
function insertAfter(parent, node, referenceNode) {
  parent.insertBefore(node, referenceNode.nextSibling); 
}

/**
 * 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 getElementsByClassName(node, 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) {
  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) {
    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 (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.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
        return -1;
    }
}

/**********************************************************************************************************/
/* Fonctions générales MediaWiki (pallient les limitations du logiciel)                                   */
/* 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
 */
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
 */
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( wgAction == 'edit' || wgAction == 'submit' ) {
  importScript( 'MediaWiki:Common.js/edit.js' );
}

/**
 * Liens d'accès directs pour la navigation au clavier
 */
function showSkipLinks() {
  var jump_to_nav = document.getElementById('jump-to-nav');
  if( !jump_to_nav ) return;
  var skip_links = jump_to_nav.getElementsByTagName('A')[0];
  jump_to_nav.className='hidden';
  skip_links.onfocus=function() {
    jump_to_nav.className='';
  }
}
addOnloadHook(showSkipLinks);

/**
 * 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 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';
        if(wgNamespaceNumber==0 || wgNamespaceNumber==10) {
          var avert = document.createElement('p')
          avert.style.fontSize = '90%';
          avert.innerHTML = 'Titre à utiliser pour créer un lien interne : <b>'+realH1+'</b>';
          insertAfter(document.getElementById('content'),avert,h1);
        }

      }
    }
  }
}
addOnloadHook(rewritePageH1);

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

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

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

/**
 * Déplacement des [modifier]
 *
 * Correction des titres qui s'affichent mal en raison de limitations dues à MediaWiki.
 * Ce script devrait pouvoir être supprimé lorsque le [[bugzilla:11555]] sera résolu (comportement équivalent)
 *
 * Copyright 2006, Marc Mongenet. Licence GPL et GFDL.
 *
 * The function looks for <span class="editsection">, and move them
 * at the end of their parent and display them inline in small font.
 * var oldEditsectionLinks=true disables the function.
 */
function setModifySectionStyle() 
{
 
        var process = function(list)
        {
                for(var i=0;i!=list.length;i++)
                {
                        var span=list[i].firstChild
 
                        if (span.className == "editsection") 
                        {
                                span.style.fontSize = "x-small";
                                span.style.fontWeight = "normal";
                                span.style.cssFloat = span.style.styleFloat = "none";
                                span.parentNode.appendChild(document.createTextNode(" "));
                                span.parentNode.appendChild(span);
                        }
                }
        }
 
        try 
        {
                if (!(typeof oldEditsectionLinks == 'undefined' || oldEditsectionLinks == false)) return;
                process(document.getElementsByTagName("h2"));
                process(document.getElementsByTagName("h3"));
                process(document.getElementsByTagName("h4"));
                process(document.getElementsByTagName("h5"));
                process(document.getElementsByTagName("h6"));
 
        }
        catch (e) { }
}
addOnloadHook(setModifySectionStyle);

/** 
 * Boîtes déroulantes
 *
 * Pour [[Modèle:Méta palette de navigation]]
 */
var autoCollapse = 2;
var collapseCaption = '[Enrouler]';
var expandCaption = '[Dérouler]';

function collapseTable( tableIndex ) {
  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 ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = "none";
    }
    Button.firstChild.data = expandCaption;
  } else {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = Rows[0].style.display;
    }
    Button.firstChild.data = collapseCaption;
  }
}

function createCollapseButtons() {
  var tableIndex = 0;
  var NavigationBoxes = new Object();
  var Tables = document.getElementsByTagName( "table" );

  for ( var 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( ButtonLink );

      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 (var i = 0; i < tableIndex; i++) {
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
  }
}
addOnloadHook(createCollapseButtons);

/**
 * Pour [[Modèle:Boîte déroulante]] 
 */
var NavigationBarShowDefault = 0;
 
function toggleNavigationBar(indexNavigationBar) {
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
  if (!NavFrame || !NavToggle) return;
 
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
  // exemple : title="[déroulade]/[enroulade]"
  var caption = [expandCaption, collapseCaption];
  if (NavFrame.title && NavFrame.title.length > 0) {
    caption = NavFrame.title.split("/");
    if (caption.length < 2) caption.push(collapseCaption);
  }
 
  // if shown now
  if (NavToggle.firstChild.data == caption[1]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
    }
 
  // if hidden now
  } else if (NavToggle.firstChild.data == caption[0]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
    }
  }
}
 
// adds show/hide-button to navigation bars
function 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);
      NavToggle.appendChild(NavToggleText);
 
      // add NavToggle-Button as first div-element 
      // in <div class="NavFrame">
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
    }
  }
  // if more Navigation Bars found than Default: hide all
  if (NavigationBarShowDefault < indexNavigationBar) {
    for( var i=1; i<=indexNavigationBar; i++ ) {
      toggleNavigationBar(i);
    }
  }
}
addOnloadHook(createNavigationBarToggleButton);

/**
 * WikiMiniAtlas
 *
 * voir WP:WMA 
 */
if (wgServer == "https://secure.wikimedia.org") {
  var metaBase = "https://secure.wikimedia.org/wikipedia/meta";
} else {
  var metaBase = "http://meta.wikimedia.org";
}
importScriptURI(metaBase+"/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400")

var wma_settings = { 
  buttonImage: 'http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Geographylogo.svg/18px-Geographylogo.svg.png'
}

/**
 * Utilisation du modèle Modèle:Images
 */
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(){
  if (document.URL.match(/printable/g)) return;
  var bc=document.getElementById("bodyContent");
  if( !bc ) bc = document.getElementById("mw_contentholder");
  if( !bc ) bc = document.getElementById("article");
  if( !bc ) return;
  var divs=bc.getElementsByTagName("div");
  var i = 0, j = 0;
  var units, search;
  var currentimage;
  var UnitNode;
  for (i = 0; i < divs.length ; i++) {
    if (divs[i].className != "ImageGroup") continue;
    UnitNode=undefined;
    search=divs[i].getElementsByTagName("div");
    for (j = 0; j < search.length ; j++) {
      if (search[j].className != "ImageGroupUnits") continue;
      UnitNode=search[j];
      break;
    }
    if (UnitNode==undefined) continue;
    units=Array();
    for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
      var temp = UnitNode.childNodes[j];
      if (temp.className=="center") units.push(temp);
    }
    for (j = 0 ; j < units.length ; j++) {
      currentimage=units[j];
      currentimage.id="ImageGroupsGr"+i+"Im"+j;
      var imghead = document.createElement("div");
      var leftlink;
      var rightlink;
      if (j != 0) {
        leftlink = document.createElement("a");
        leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
        leftlink.innerHTML="◀";
      } else {
        leftlink = document.createElement("span");
        leftlink.innerHTML="&nbsp;";
      }
      if (j != units.length - 1) {
        rightlink = document.createElement("a");
        rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
        rightlink.innerHTML="▶";
      } else {
        rightlink = document.createElement("span");
        rightlink.innerHTML="&nbsp;";
      }
      var comment = document.createElement("tt");
      comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
      with(imghead) {
        style.fontSize="110%";
        style.fontweight="bold";
        appendChild(leftlink);
        appendChild(comment);
        appendChild(rightlink);
      }
      currentimage.insertBefore(imghead,currentimage.childNodes[0]);
      if (j != 0) currentimage.style.display="none";
    }
  }
}
addOnloadHook(imageGroup);

/**
 * Ajout d'un style particulier aux liens interlangues vers un bon article ou
 * un article de qualité
 */
function lienAdQouBAouPdQ() {

    if ( document.getElementById( "p-lang" ) ) {
        var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );
 
        for ( var i = 0; i < InterwikiLinks.length; i++ ) {
            if ( document.getElementById( InterwikiLinks[i].className + "-adq" ) ) {
                InterwikiLinks[i].className += " AdQ"
                InterwikiLinks[i].title = "Lien vers un article de qualité.";
            }
            else if ( document.getElementById( InterwikiLinks[i].className + "-ba" ) ) {
                InterwikiLinks[i].className += " BA"
                InterwikiLinks[i].title = "Lien vers un bon article.";
            }
            else if ( document.getElementById( InterwikiLinks[i].className + "-pdq" ) ) {
                InterwikiLinks[i].className += " PdQ"
                InterwikiLinks[i].title = "Lien vers un portail de qualité.";
            }
        }
    }
}
addOnloadHook(lienAdQouBAouPdQ);

/**
 * Redirect vers wikibooks etc.
 *
 */
var redirectedFromArticleDatas = new Array(
   new Array('Wikipédia:Redirect_vers_Wikibooks', 'wikibooks'),
   new Array('Wikipédia:Redirect_vers_Wikisource', 'wikisource'),
   new Array('Wikipédia:Redirect_vers_Wikiversité', 'wikiversity'),
   new Array('Wikipédia:Redirect_vers_Wikiquote', 'wikiquote'),
   new Array('Wikipédia:Redirect_vers_Wikinews', 'wikinews'),
   new Array('Wikipédia:Redirect_vers_Wiktionnaire', 'wiktionary')
);

function redirectedFromArticle() {
   if (wgIsArticle == false)
       return;
   for (var i = 0; i < redirectedFromArticleDatas.length; ++i) {
     var page_match = redirectedFromArticleDatas[i];
     var index = wgPageName.indexOf(page_match[0]);
     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);
        // Konqueror 3.5 work around
        if (target.indexOf('#') == 0)
            target = target.slice(1);
        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);

/**
 * Déplace les liens portails vers la boite de catégorie
 * 
 * Copyright 2007, fr:user:Aoineko. Licence GFDL et GPL.
 */
var gUseMovePortalToCategoryBox = 1;

function movePortalToCategoryBox() {
   if(!gUseMovePortalToCategoryBox)
      return;

   // search for portails
   var div_portal = document.getElementById('portallinks');
   if(div_portal && (div_portal.className == 'movable')) {
      div_portal.style.display = 'none'; // hide the portail div
      var div_cat = document.getElementById('catlinks'); // get cat div
      if(!div_cat) { // no category box ? then create it
         var div_foot;
         var divs = document.getElementsByTagName('div');
         for(var i = 0; i < divs.length ; i++)
            if(divs[i].className == 'printfooter')
               div_foot = divs[i];
         div_cat = document.createElement("div");
         div_cat.setAttribute('id', 'catlinks');
         div_foot.parentNode.insertBefore(div_cat, div_foot); 
      }
      div_cat.innerHTML = div_portal.innerHTML + '<hr/>' + div_cat.innerHTML;
   }
}
addOnloadHook(movePortalToCategoryBox);

/**
 * Permet d'afficher les catégories cachées pour les contributeurs enregistrés, en ajoutant un (+) à la manière des boîtes déroulantes
 */
function hiddencat(){
 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(' | '));
 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.onclick = toggleHiddenCats;
 lnk.appendChild(document.createTextNode('[+]'));
 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');
  changeText(hclink, '[–]');
 } else {
  removeClass(hc, 'mw-hidden-cat-user-shown');
  addClass(hc, 'mw-hidden-cats-hidden');
  changeText(hclink, '[+]');
 }
}
addOnloadHook(hiddencat);

/**
 * Script pour alterner entre deux cartes de géolocalisation
 */
addOnloadHook(function(){ 
  var cont;
  if(!(wgAction=="view" || wgAction=="purge")) return

  cont=getElementsByClass('img_toogle', document.getElementById('bodyContent'), 'div');
  if(cont.length==0) return

  for (var i = 0; i < cont.length ; i++) {
    cont.box = getElementsByClass('geobox',cont[i]);
    cont.box[0].style.display='none';
    cont.box[1].style.borderTop='0';
    var toogle = document.createElement('a');
    toogle.appendChild(document.createTextNode(cont.box[0].getElementsByTagName('img')[0].alt));
    toogle.href='#';
    toogle.className='a_toogle';
    toogle.status = 1;
    toogle.onclick = function() {
      this.removeChild(this.firstChild);
      div0 = getElementsByClass('geobox',this.parentNode)[0];
      div1 = getElementsByClass('geobox',this.parentNode)[1];
      alt0 = div0.getElementsByTagName('img')[0].alt;
      alt1 = div1.getElementsByTagName('img')[0].alt;
      if(this.status==0) {
        div0.style.display='none';
        div1.style.display='';
        this.status=1;
        this.appendChild(document.createTextNode(alt0));
      } else {
        div0.style.display='';
        div1.style.display='none';
        this.status=0;
        this.appendChild(document.createTextNode(alt1));
      }
      return false;
    }
  cont[i].insertBefore(toogle, cont.box[1].nextSibling);
  }
});

/**
 * permet d'ajouter un petit lien (par exemple d'aide) à la fin du titre d'une page.
 * known bug : conflit avec le changement de titre classique.
 * Pour les commentaires, merci de contacter [[user:Plyd|Plyd]].
 */
function rewritePageH1bis() {
  try {
    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";
      }
    }
  } 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 monobouc personnel désactive le script
 */

addOnloadHook(function () {

  if (wgNamespaceNumber == 0) {
    if ((typeof no_external_cache != "undefined") && (no_external_cache)) return;
    addcache();
  }
 
  function addcache() {
    var external_links;
    if (document.getElementsByClassName) {
      external_links = document.getElementsByClassName('external');
    } else {
      external_links = getElementsByClass('external',document.getElementById("bodyContent"),'a');
    }

    for( i = 0;i < external_links.length;i++) 
    {
      var chemin = external_links[i].href;

      if(chemin.indexOf("http://wikiwix.com/cache/")==-1 && chemin.indexOf("http://web.archive.org/web/*/")==-1 && chemin.indexOf("wikipedia.org")==-1 && chemin.indexOf("wikimedia.org")==-1 && chemin.indexOf("stable.toolserver.org")==-1)
      {
      var li = external_links[i].parentNode;
      if (li.className == "noarchive") continue;
      var depth = 0;
      while ((depth < 3) && (li.tagName != "OL") && (li.parentNode != null)) {
        li = li.parentNode;
        depth++;
      }
 
      if (li.tagName != "OL" || !(hasClass(li, 'references')) ) continue;
      var titre = getTextContent(external_links[i]); 
      var last = document.createElement("small");
      last.setAttribute("class", "cachelinks");
      last.style.color = "#3366BB";
      last.appendChild(document.createTextNode("\u00a0["));
      insertAfter(external_links[i].parentNode, last, external_links[i]);
 
      var link = document.createElement("a");
      link.setAttribute("href", "http://wikiwix.com/cache/?url=" + chemin.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(titre));
      link.setAttribute("title", "archive de "+ titre);
      link.appendChild(document.createTextNode("archive"));
      link.style.color = "#3366BB";
      last.appendChild(link);
      last.appendChild(document.createTextNode("]"));
      }
    }
  }
}
);

/**
 * Application de [[Wikipédia:Prise de décision/Lien interprojet]]
 * Copie les liens interprojets du modèle {{Autres projets}}
 * dans le menu en colonne de gauche.
 * remove_other_projects = true; dans le monobook personnel pour activer
 * en plus la suppression du modèle {{Autres projets}} en bas des articles.
 * no_other_projects = true; dans le monobook personnel pour désactiver
 * entièrement le script et l'ajout dans la colonne de gauche.
 */

function autresProjets() {
  if ((typeof no_other_projects != "undefined") && (no_other_projects)) return;
  if(!(wgNamespaceNumber==0)) return;
  if(!(wgAction=="view")) return;
  var div = document.getElementById('autres_projets');
  if(!div) return;

  if((skin=="monobook")||(skin=="chick")||(skin=="myskin")||(skin=="simple")){
    var Portlet_ClassName = "portlet";
    var PBody_ClassName = "pBody";
    var Column_Id = 'column-one';
  }else if(skin=="modern"){
    var Portlet_ClassName = "portlet";
    var PBody_ClassName = "pBody";
    var Column_Id = 'mw_portlets';
  }else if(skin=="vector"){
    var Portlet_ClassName = "portal";
    var PBody_ClassName = "body";
    var Column_Id = 'mw-panel'
  }else{
    var Portlet_ClassName = false;
  }
  if(!Portlet_ClassName) return;

  var list = div.getElementsByTagName('li');
  var newlist = document.createElement("ul");
  for (var i = 0; i < list.length ; i++) {
    list.link = list[i].getElementsByTagName('a')[0];
    list.text = list.link.getElementsByTagName('span')[0];
    var newlistitem = document.createElement("li");
    var newlink = document.createElement("a");
    var newlinktext = document.createTextNode(getTextContent(list.text));
    newlink.appendChild(newlinktext);
    newlink.title=getTextContent(list.link);
    newlink.href=list.link.href;
    newlistitem.appendChild(newlink);
    newlist.appendChild(newlistitem);
  }
  var interProject = document.createElement("div");
  interProject.className = Portlet_ClassName;
  interProject.id = 'p-projects';
  interProject.innerHTML = '<h5>Autres projets<\/h5><div class="'+PBody_ClassName+'"><ul>'+newlist.innerHTML+'</ul></div>';
  insertAfter(document.getElementById(Column_Id),interProject,document.getElementById('p-tb'));
  if ((typeof remove_other_projects != "undefined") && (remove_other_projects)) {
    document = div.parentNode.removeChild(div);
  }
}
 
addOnloadHook(autresProjets);


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

// PAGE D'ACCUEIL
if( wgFormattedNamespaces[wgNamespaceNumber]+":"+wgTitle == wgMainPageTitle ) {

/**
 * Suppression du titre sur la page d'accueil, 
 * changement de l'onglet et lien vers la liste complète des Wikipédias depuis l'accueil
 */
function mainPageTransform(){
  //retiré le test, car le if encadrant la fonction est déjà plus restrictif - darkoneko 05/12/09
  try {
    document.getElementById('ca-nstab-project').firstChild.innerHTML = '<span>Accueil<\/span>';
  } catch (e) { /* Erreur : l'apparence ne gère la pas les onglets */ }
  addPortletLink('p-lang', 'http://www.wikipedia.org/', 'Liste complète', 'interwiki-listecomplete', 'Liste complète des Wikipédias');
}
addOnloadHook(mainPageTransform);

} // FIN DU IF page d'accueil






// ESPACE DE NOM 'SPECIAL'
if( wgNamespaceNumber == -1 ) {

/**
 * Afficher une explication au nombre d'octets dans la liste de suivi
 */
function toolTipPlusMinus() {
  if(wgCanonicalSpecialPageName != "Watchlist") return
  var tt = "Nombre d'octets d'écart entre les deux dernières versions de la page";
  var elmts = document.getElementsByTagName("span");
  for(var cpt = 0; cpt < elmts.length; cpt++) {
    if (/mw-plusminus-(pos|neg|null)/.test(elmts[cpt].className) || /mw-plusminus-(pos|neg|null)/.test(elmts[cpt].getAttribute("class")))
      elmts[cpt].title = tt;
  }
}
addOnloadHook(toolTipPlusMinus);




/**
 * 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 (wgPageName != "Spécial:Recherche") 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");
  var initValue = lsearchbox.value;
 
  var space = "";

  for (var id in searchEngines) {
    var engine = searchEngines[id];
if(engine.ShortName)
   {
    if (space) choices.appendChild(space);
    space = document.createTextNode(" ");
 
    var attr = { 
      type: "radio", 
      name: "searchengineselect",
      value: id,
      onFocus: "changeSearchEngine(this.value)",
      id: "searchengineRadio-"+id
    };
 
    var html = "<input";
    for (var a in attr) html += " " + a + "='" + attr[a] + "'";
    html += " />";
    var span = document.createElement("span");
    span.innerHTML = html;
 
    choices.appendChild( span );
    var label = document.createElement("label");
    label.htmlFor = "searchengineRadio-"+id; 
    if (engine.Template.indexOf('http') == 0) {
      var lienMoteur = document.createElement("a");
      lienMoteur.href = engine.Template.replace("{searchTerms}", initValue).replace("{language}", "fr");
      lienMoteur.appendChild( document.createTextNode( engine.ShortName ) );
      label.appendChild(lienMoteur);
    } else {
      label.appendChild( document.createTextNode( engine.ShortName ) );
    }

    choices.appendChild( label );
  }
 }
  mainNode.insertBefore(choices, beforeNode);
 
  var input = document.createElement("input");
  input.id = "searchengineextraparam";
  input.type = "hidden";
 
  mainNode.insertBefore(input, beforeNode);

  changeSearchEngine(firstEngine, initValue);
}

function changeSearchEngine(selectedId, searchTerms) {

  var currentId = document.getElementById("searchengineChoices").currentChoice;
  if (selectedId == currentId) return;
 
  document.getElementById("searchengineChoices").currentChoice = selectedId;
  var radio = document.getElementById('searchengineRadio-'  + selectedId);
  radio.checked = "checked";
 
  var engine = searchEngines[selectedId];
  var p = engine.Template.indexOf('?');
  var params = engine.Template.substr(p+1);
 
  var form;
  if (document.forms["search"]) {
    form = document.forms["search"];
  } else {
    form = document.getElementById("powersearch");
  }
  form.setAttribute("action", engine.Template.substr(0,p));
 
  var l = ("" + params).split("&");
  for (var idx = 0;idx < l.length;idx++) {
    var p = l[idx].split("=");
    var pValue = p[1];
 
    if (pValue == "{language}") {
    } else if (pValue == "{searchTerms}") {
      var input;
      input = document.getElementById("searchText");
 
      input.name = p[0];
    } else {
      var input = document.getElementById("searchengineextraparam");
 
      input.name = p[0];
      input.value = pValue;
    }
  }
}



if (wgPageName == "Spécial:Recherche") {
var searchEngines = {
  mediawiki: {
    ShortName: "Recherche interne",
    Template: "/w/index.php?search={searchTerms}"
  },
  exalead: {
    ShortName: "Exalead",
    Template: "http://www.exalead.com/search/wikipedia/results/?q={searchTerms}&language=fr"
  },
  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( wgCanonicalSpecialPageName == "Upload" ) {
  importScript("MediaWiki:Onlyifuploading.js");
}

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


// ESPACE DE NOM 'UTILISATEUR'
if( wgNamespaceNumber == 2 ) {

/* En phase de test */
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
    Fonctionnement du [[Modèle:Cadre à onglets]]
    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) { 
         vOgIni = 1+Math.floor((j-1)*Math.random()) ;
         document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
         document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
         document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
     } 
  }
 }
 
 function CadreOngletVoirOnglet(){
  var vMbNom = this.id.substr(0,3); 
  var vIndex = this.id.substr(5,1); 
 
  var i=1
  for (i=1;i<=9;i++){        
        var vOgElem = document.getElementById(vMbNom+"og"+i);
        if (!vOgElem) break;
        if (vIndex==i){ 
                vOgElem.style.display = "block";
                vOgElem.style.visibility = "visible";
                document.getElementById(vMbNom+"bt"+i).className="mbBoutonSel";
        } else {             
                vOgElem.style.display = "none";
                vOgElem.style.visibility = "hidden";
                document.getElementById(vMbNom+"bt"+i).className="mbBouton";
        }
  }
  return false; 
}
addOnloadHook(CadreOngletInit);
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
} // Fin du code concernant l'espace de nom 'Utilisateur'


// ESPACE DE NOM 'RÉFÉRENCE'
if( 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 !
 */

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 chooseBibSubset(s) {
  var l = document.getElementsByTagName('div');
  for (var i = 0; i < l.length ; i++) {
    if(l[i].className == 'BibList')   l[i].style.display = s == 0 ? 'block' : 'none';
    else if(l[i].className == 'WikiNorme') l[i].style.display = s == 1 ? 'block' : 'none';
    else if(l[i].className == 'BibTeX')    l[i].style.display = s == 2 ? 'block' : 'none';
    else if(l[i].className == 'ISBD')      l[i].style.display = s == 3 ? 'block' : 'none';
    else if(l[i].className == 'ISO690')    l[i].style.display = s == 4 ? 'block' : 'none';
  }
}
addOnloadHook(addBibSubsetMenu);
} // Fin du code concernant l'espace de nom 'Référence'


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


/* Ajoute la date de dernière modification sur le bandeau événement récent */
/* Plyd - 12 juin 2009 */
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;

}
addOnloadHook(LastModCopy);


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

/*
* Fonction
*
* Récupère la valeur d'une variable globale en gérant le cas lorsque cette variable n'existe pas
* @param nom_variable Nom de la variable dont on veut connaître la valeur
* @param val_defaut Valeur par défaut si la variable n'existe pas
* @return La valeur de la variable, ou val_defaut si la variable n'existe pas
*
* Auteur : Sanao
* Dernière révision : 22 novembre 2007
*/
function getVarValue(nom_variable, val_defaut)
{
    var result = null;
 
    try {
        result = eval(nom_variable.toString());
    } catch (e) {
        result = val_defaut;
    }
 
    return(result);
}

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

/*
   Outil pour permettre l'affichage immédiat d'un javascript pour tous les utilisateurs en même temps.
   Même s'ils ne rechargent pas Wikipédia avec CTRL+R.
   Utile initialement pour prévoir une bonne réactivité et un lancement général du [[Projet:Impression]].
   Plyd - 12 octobre 2008
   tag urgentsynchronejs inclus (pas encore) dans [[MediaWiki:Copyright]]
*/
function urgentSynchroneJsLoad() {
  if (document.getElementById('urgentsynchronejs')) {
    jsname = "MediaWiki:Common.js/"+document.getElementById('urgentsynchronejs').title;
    importScript(jsname);
  }
}
addOnloadHook(urgentSynchroneJsLoad);


/* WikiForm pour la génération facilité de modèles */
/* Plyd - 10/02/2008 */
if (document.getElementById("WikiForm")) {
   importScript("MediaWiki:Gadget-WikiForm.js");
}


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

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

  return a
}

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

/* /petites fonctions pratiques */

/** For sysops and accountcreators *****************************************
 * Repris depuis Common.js @ enwiki - Crée le common.js réservé aux admins.
 *
 *  Description: Allows for sysop-specific Javascript at [[MediaWiki:Sysop.js]],
 *               and accountcreator-specific CSS at [[MediaWiki:Accountcreator.css]].
 */
if ( wgUserGroups ) {
  for ( var g = 0; g < wgUserGroups.length; ++g ) {
    if ( wgUserGroups[g] == "sysop" ) {
      importStylesheet("MediaWiki:Sysop.css");
      addOnloadHook( function() {
        if ( !window.disableSysopJS ) {
          importScript("MediaWiki:Sysop.js");
        }
      } );
    } 
  }
}

function includePage( name )
{
 document.write('<script type="text/javascript" src="' + wgScript + '?title='
  + name 
  + '&action=raw&ctype=text/javascript"><\/script>' 
 );
}
/* End of includePage */
/* Including extra .js pages */ 
 
// switches for scripts
// var load_extratabs = true;
var load_edittools = true;
 
// extra drop down menu on editing for adding special characters
includePage( 'MediaWiki:Edittools.js' );