MediaWiki:Common.js

De Spinoza et Nous.
(Différences entre les versions)
Aller à : Navigation, rechercher
 
 
(5 révisions intermédiaires par un utilisateur sont masquées)
Ligne 95 : Ligne 95 :
  
 
/* Fin des fonctions générales</source> */
 
/* Fin des fonctions générales</source> */
 
//============================================================
 
//
 
// Info-bulle sur liens internes
 
//
 
//============================================================
 
loadJS('[[Utilisateur:Henrique/popups-strings-fr.js]]');
 
 
document.write('<script type="text/javascript" src="'
 
            + 'http://www.spinozaetnous.org/w/index.php?title=Utilisateur:Henrique/popups.js'
 
            + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
 
popupPreviewFirstParOnly=false;
 
popupShortcutKeys=true;
 
//popupMaxPreviewSentences=10;
 
 
popupDabRegexp = '([{][{]\\s*homonymie|homonymie\\s*[}][}])';
 
popupImages=false;
 
popupHideDelay=0.1;
 
 
// Fonction pour charger un js
 
function loadJS(page){
 
  page=page.replace(/^\[\[(.*)\]\]$/, '$1');
 
  document.write('<script type="text/javascript" src="' +
 
                'http://www.spinozaetnous.org/w/wiki.phtml?title=' + page +
 
                '&action=raw&ctype=text/javascript"></script>');
 
}
 
 
function PageHomeArrows()
 
{
 
        for (var level = 2; level <= 6; ++level) {
 
                var h = document.getElementsByTagName("h" + level);
 
                for (var i = 0; i < h.length; ++i) {
 
                        var arrow = document.createElement("a");
 
                        arrow.appendChild(document.createTextNode(" ↑"));
 
                        arrow.href = "javascript:window.scrollTo(0,0); void 0;";
 
                        h[i].appendChild(arrow);
 
                }
 
        }
 
}
 
 
 
 
//============================================================
 
//
 
// Info-bulle et touches de raccourci
 
//
 
//============================================================
 
 
ta = new Object();
 
ta['pt-userpage']          = new Array('.', 'Ma page utilisateur');
 
ta['pt-anonuserpage']      = new Array('.', 'La page utilisateur pour l\'adresse IP que vous utilisez');
 
ta['pt-mytalk']            = new Array('N', 'Ma page de discussion');
 
ta['pt-anontalk']          = new Array('N', 'La page de discussion pour cette adresse');
 
ta['pt-preferences']        = new Array('',  'Mes préférences');
 
ta['pt-watchlist']          = new Array('L', 'La liste des pages que vous suivez');
 
ta['pt-mycontris']          = new Array('Y', 'La liste de mes contributions');
 
ta['ca-talk']              = new Array('T', 'Discussion pour cette page');
 
ta['ca-edit']              = new Array('E', 'Vous pouvez modifier cette page. Merci de prévisualiser avant d\'enregistrer.');
 
ta['ca-addsection']        = new Array('+', 'Ajouter un commentaire à cette discussion.');
 
ta['ca-viewsource']        = new Array('E', 'Cette page est protégée. Vous pouvez toutefois en voir le contenu.');
 
ta['ca-history']            = new Array('H', 'Les auteurs et versions précédentes de cette page.');
 
ta['ca-protect']            = new Array('=', 'Pour protéger cette page.');
 
ta['ca-delete']            = new Array('D', 'Pour supprimer cette page.');
 
ta['ca-undelete']          = new Array('D', 'Pour restaurer cette page.');
 
ta['ca-move']              = new Array('M', 'Pour déplacer ou renommer cette page.');
 
ta['ca-nomove']            = new Array('',  'Vous n\'avez pas la permission de déplacer cette page.');
 
ta['ca-watch']              = new Array('W', 'Ajoutez cette page à votre liste de suivi.');
 
ta['ca-unwatch']            = new Array('W', 'Retirez cette page de votre liste de suivi.');
 
ta['search']                = new Array('F', 'Pour effectuer une recherche.');
 
ta['p-logo']                = new Array('',  'Page principale.');
 
ta['n-mainpage']            = new Array('Z', 'Pour afficher la page principale.');
 
ta['n-portal']              = new Array('',  'À propos du projet.');
 
ta['n-currentevents']      = new Array('',  'Trouvez des informations sur les événements récents.');
 
ta['n-recentchanges']      = new Array('R', 'La liste des modifications récentes.');
 
ta['n-randompage']          = new Array('X', 'Afficher une page au hasard.');
 
ta['n-help']                = new Array('',  'Aide.');
 
ta['n-sitesupport']        = new Array('',  'Pour soutenir le projet.');
 
ta['t-whatlinkshere']      = new Array('J', 'Liste des pages liées à celle-ci.');
 
ta['t-recentchangeslinked'] = new Array('K', 'Liste des modifications récentes des pages liées à celle-ci.');
 
ta['feed-rss']              = new Array('',  'Alimenter le flux RSS pour cette page.');
 
ta['feed-atom']            = new Array('',  'Alimenter le flux Atom pour cette page.');
 
ta['t-contributions']      = new Array('',  'Voir la liste des contributions de cet utilisateur.');
 
ta['t-emailuser']          = new Array('',  'Envoyer un courriel à cet utilisateur.');
 
ta['t-upload']              = new Array('U', 'Importer une image ou fichier média sur le serveur.');
 
ta['t-specialpages']        = new Array('Q', 'Liste des pages spéciales.');
 
ta['ca-nstab-main']        = new Array('C', 'Afficher le contenu de cette page.');
 
ta['ca-nstab-user']        = new Array('C', 'Afficher la page utilisateur.');
 
ta['ca-nstab-media']        = new Array('C', 'Afficher la page média.');
 
ta['ca-nstab-special']      = new Array('',  'Ceci est une page spéciale, vous ne pouvez pas la modifier.');
 
ta['ca-nstab-wp']          = new Array('A', 'Afficher la page du projet.');
 
ta['ca-nstab-image']        = new Array('C', 'Afficher la page de description de l\'image.');
 
ta['ca-nstab-mediawiki']    = new Array('C', 'Afficher le message système.');
 
ta['ca-nstab-template']    = new Array('C', 'Afficher le modèle.');
 
ta['ca-nstab-help']        = new Array('C', 'Afficher la page d\'aide.');
 
ta['ca-nstab-category']    = new Array('C', 'Afficher la page de catégorie.');
 
  
  
Ligne 209 : Ligne 114 :
 
     var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
 
     var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
 
     menu += "<option>Wiki</option>";
 
     menu += "<option>Wiki</option>";
 +
    menu += "<option>Mathématiques</option>";
 
     menu += "<option>Latin/Romain</option>";
 
     menu += "<option>Latin/Romain</option>";
 
     menu += "<option>Grec</option>";
 
     menu += "<option>Grec</option>";
 
     menu += "<option>Cyrillique</option>";
 
     menu += "<option>Cyrillique</option>";
    menu += "<option>AHD</option>";
 
 
     menu += "<option>Allemand</option>";
 
     menu += "<option>Allemand</option>";
 
     menu += "<option>Arabe</option>";
 
     menu += "<option>Arabe</option>";
    menu += "<option>Catalan</option>";
 
    menu += "<option>Croate</option>";
 
 
     menu += "<option>Espagnol</option>";
 
     menu += "<option>Espagnol</option>";
 
     menu += "<option>Espéranto</option>";
 
     menu += "<option>Espéranto</option>";
    menu += "<option>Estonien</option>";
 
    menu += "<option>Gallois</option>";
 
    menu += "<option>Hawaien</option>";
 
 
     menu += "<option>Hébreu</option>";
 
     menu += "<option>Hébreu</option>";
 
     menu += "<option>Hiéroglyphe</option>";
 
     menu += "<option>Hiéroglyphe</option>";
 
     menu += "<option>Hollandais</option>";
 
     menu += "<option>Hollandais</option>";
    menu += "<option>Hongrois</option>";
 
    menu += "<option>Indo-européen</option>";
 
    menu += "<option>Irlandais</option>";
 
    menu += "<option>Islandais</option>";
 
 
     menu += "<option>Italien</option>";
 
     menu += "<option>Italien</option>";
    menu += "<option>Letton</option>";
 
    menu += "<option>Lituanien</option>";
 
    menu += "<option>Maltais</option>";
 
    menu += "<option>Navajo & Apache</option>";
 
    menu += "<option>Pinyin</option>";
 
    menu += "<option>Polonais</option>";
 
 
     menu += "<option>Portugais</option>";
 
     menu += "<option>Portugais</option>";
    menu += "<option>Rōmaji</option>";
 
    menu += "<option>Roumain</option>";
 
    menu += "<option>Scandinave</option>";
 
    menu += "<option>Serbe</option>";
 
    menu += "<option>Tchèque</option>";
 
    menu += "<option>Turc</option>";
 
    menu += "<option>Vieil anglais</option>";
 
    menu += "<option>Vietnamien</option>";
 
 
     menu += "<option>Yiddish</option>";
 
     menu += "<option>Yiddish</option>";
 
     menu += "<option>API</option>";
 
     menu += "<option>API</option>";
    menu += "<option>Mathématiques</option>";
 
 
     menu += "</select>";
 
     menu += "</select>";
 
     specialchars.innerHTML = menu + specialchars.innerHTML;
 
     specialchars.innerHTML = menu + specialchars.innerHTML;
Ligne 276 : Ligne 157 :
 
//============================================================
 
//============================================================
  
//============================================================
+
// Bouton Comment dans wikieditor
// Générateur de tableaux
+
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
//============================================================
+
        'section': 'advanced',
 
+
        'group': 'format',
/**
+
        'tools': {
*
+
                'comment': {
* English: Generate an array using Mediawiki syntax
+
                        label: 'Comment',
*
+
                        type: 'button',
* @author: fr:user:dake
+
                        icon: 'http://upload.wikimedia.org/wikipedia/commons/1/11/Toolbaricon_hiddencomment.png',
* @version: 0.1
+
                        action: {
*/
+
                                type: 'encapsulate',
+
                                options: {
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
+
                                        pre: "<!-- ",
{
+
                                        post: " -->"
var code = "\n";
+
                                }
if (styleHeader==1) {
+
                        }
code += '{{entête tableau charte}}\n';
+
                }
} else {
+
        }
code += '{| border="' + border + '"\n';
+
} );
code += '|+ Titre du tableau\n';
+
}
+
+
for (var i=0;i<nbCol;i++) code += '! en-tête ' + i + '\n'
+
+
for (var j=0;j<nbRow;j++) {
+
if ((j+1)%2==0 && styleLine==1) {
+
code += '|-{{ligne grise}}\n'
+
} else {
+
code += '|-----\n'
+
}
+
+
for (var i=0;i<nbCol;i++) code += '| élément\n';
+
}
+
+
code += '|}';
+
insertTags('','', code);
+
}
+
 
+
/**
+
*
+
* English: Open a popup with parameters to generate an array.
+
* The number of rows/columns can be modified. Some additional
+
* parameters are related to templates available on :fr
+
*
+
* @author: fr:user:dake
+
* @version: 0.1
+
*/
+
+
function popupTableau()
+
{
+
  var popup = window.open('','name','height=400,width=500');
+
 
+
  javaCode =  '<script type="text\/javascript">function insertCode(){';
+
  javaCode += 'var row = parseInt(document.paramForm.inputRow.value); '
+
  javaCode += 'var col = parseInt(document.paramForm.inputCol.value); '
+
  javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); '
+
  javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; '
+
  javaCode += 'var styleLine = document.paramForm.inputLine.checked; '
+
  javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); '
+
  javaCode += '}<\/script>';
+
 
+
  popup.document.write('<html><head><title>Paramètres du tableau</title>');
+
  popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
+
  popup.document.write('<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>');
+
  popup.document.write(javaCode);
+
  popup.document.write('</head><body>');
+
  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('Largeur de la bordure : <input type="text" name="inputBorder" value="1" ><p>');
+
  popup.document.write('En-tête en gris (style « charte graphique ») : <input type="checkbox" name="inputHeader" checked="1" ><p>');
+
  popup.document.write('Lignes grises alternées (style « charte graphique ») : <input type="checkbox" name="inputLine" checked="1" ><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();
+
}
+
  
 
//============================================================
 
//============================================================
Ligne 484 : Ligne 305 :
  
  
/*
+
//============================================================
== Boîtes déroulantes ==
+
//
<source lang="javascript">*/
+
// Boites deroulantes
// set up the words in your language
+
//
  var NavigationBarHide = '[ Enrouler ]';
+
//============================================================
var NavigationBarShow = '[ Dérouler ]';
+
 
 +
   
 +
 +
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 );
 
   
 
   
var NavigationBarShowDefault = 0;
+
      Button.style.styleFloat = "right";
 +
      Button.style.cssFloat = "right";
 +
      Button.style.fontWeight = "normal";
 +
      Button.style.textAlign = "right";
 +
      Button.style.width = "6em";
 
   
 
   
  // shows and hides content and picture (if available) of navigation bars
+
      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
  // Parameters:
+
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
  //     indexNavigationBar: the index of navigation bar to be toggled
+
      ButtonLink.appendChild( ButtonText );
  function toggleNavigationBar(indexNavigationBar)
+
   
{
+
      Button.appendChild( ButtonLink );
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
+
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
+
      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 (!NavFrame || !NavToggle) {
+
      if (Header) {
      return;
+
        Header.insertBefore( Button, Header.childNodes[0] );
  }
+
        tableIndex++;
 
+
      }
  // ajout par Dake - permet de créer un titre en lieu et place du "Dérouler" grâce
+
    }
  // à l'attribut "title" du tag.
+
  }
  var ShowText;
+
 
+
  for (var i = 0; i < tableIndex; i++) {
  if (NavFrame.title == undefined || NavFrame.title.length == 0 ) {
+
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
     ShowText = NavigationBarShow;
+
  }
  } else {
+
}
 +
   
 +
addOnloadHook( createCollapseButtons );
 +
   
 +
/* Pour {{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;
 +
 +
  // ajout par Dake - permet de créer un titre en lieu et place du "Dérouler" grâce
 +
  // à l'attribut "title" du tag.
 +
  var ShowText;
 +
 +
  if (NavFrame.title == undefined || NavFrame.title.length == 0 ) {
 +
     ShowText = expandCaption;
 +
  } else {
 
     ShowText = NavFrame.title;
 
     ShowText = NavFrame.title;
  }
+
  }
 
+
  // if shown now
+
  // if shown now
  if (NavToggle.firstChild.data == NavigationBarHide) {
+
  if (NavToggle.firstChild.data == collapseCaption) {
      for (
+
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
              var NavChild = NavFrame.firstChild;
+
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
              NavChild != null;
+
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
              NavChild = NavChild.nextSibling
+
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = ShowText;
          ) {
+
    }
          if (hasClass(NavChild, 'NavPic')) {
+
              NavChild.style.display = 'none';
+
  // if hidden now
          }
+
  } else if (NavToggle.firstChild.data == ShowText) {
          if (hasClass(NavChild, 'NavContent')) {
+
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
              NavChild.style.display = 'none';
+
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
          }
+
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
          if (hasClass(NavChild, 'NavToggle')) {
+
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = collapseCaption;
              NavChild.firstChild.data = ShowText;
+
    }
          }
+
  }
      }
+
 
+
  // if hidden now
+
  } else if (NavToggle.firstChild.data == ShowText) {
+
      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 = NavigationBarHide;
+
          }
+
      }
+
  }
+
 
}
 
}
 
+
 
// adds show/hide-button to navigation bars
 
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
+
function createNavigationBarToggleButton() {
{
+
  var indexNavigationBar = 0;
  var indexNavigationBar = 0;
+
  var NavFrame;
  var NavFrame;
+
  // iterate over all < div >-elements
  // iterate over all < div >-elements
+
  for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) {
  for(
+
    // if found a navigation bar
          var i=0;
+
    if (hasClass(NavFrame, "NavFrame")) {
          NavFrame = document.getElementsByTagName("div")[i];
+
      indexNavigationBar++;
          i++
+
      var NavToggle = document.createElement("a");
      ) {
+
      NavToggle.className = 'NavToggle';
      // if found a navigation bar
+
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
      if (hasClass(NavFrame, "NavFrame")) {
+
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
+
          indexNavigationBar++;
+
      var NavToggleText = document.createTextNode(collapseCaption);
          var NavToggle = document.createElement("a");
+
      NavToggle.appendChild(NavToggleText);
          NavToggle.className = 'NavToggle';
+
          NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
+
      // add NavToggle-Button as first div-element
          NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
+
      // in <div class="NavFrame">
 
+
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
          var NavToggleText = document.createTextNode(NavigationBarHide);
+
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
          NavToggle.appendChild(NavToggleText);
+
    }
 
+
  }
          // add NavToggle-Button as first div-element  
+
  // if more Navigation Bars found than Default: hide all
          // in < div class="NavFrame" >
+
  if (NavigationBarShowDefault < indexNavigationBar) {
          NavFrame.insertBefore(
+
    for( var i=1; i<=indexNavigationBar; i++ ) {
              NavToggle,
+
      toggleNavigationBar(i);
              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);
 
addOnloadHook(createNavigationBarToggleButton);
 +
 +
/* Test if an element has a certain class **************************************
 +
  *
 +
  * Description: Uses regular expressions and caching for better performance.
 +
  * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
 +
  */
 +
 +
var hasClass = (function () {
 +
    var reCache = {};
 +
    return function (element, className) {
 +
        return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
 +
    };
 +
})();
  
  

Version actuelle en date du 3 février 2012 à 02:14

/* N’importe quel JavaScript ici sera chargé pour n’importe quel utilisateur et pour chaque page accédée. */

/* <pre> <nowiki> */

/*
== Fonctions générales ==

<source lang="javascript">/*
 * Fonctions générales de lancement de fonctions ou de script
 */

/**
 * Installation d'une nouvelle fonction de cette façon :
 * addOnloadHook(nom_de_la_fonction); (sans parenthèses)
 * La procédure suivante ne doit plus être utilisée
 */
if (!window.aOnloadFunctions) { 
  var aOnloadFunctions = new Array(); 
}

window.onload = function() {
  if (window.aOnloadFunctions) {
    for (var _i=0; _i<aOnloadFunctions.length; _i++) {
      aOnloadFunctions[_i]();
    }
  }
}

function addLoadEvent(func) {
  addOnloadHook(func);
}

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

/**
 * Teste si un élément contient la classe CSS spécifiée
 * Utilise des expressions régulières et un cache pour de meilleures perfs
 * Fonction importée depuis [[:en:MediaWiki:Common.js]]
 * Auteurs : [[:en:User:Mike Dillon]], [[:en:User:R. Koot]], [[:en:User:SG]]
 */
var hasClass = (function () {
     var reCache = {};
     return function (element, className) {
         return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
     };
})();


/**
 * Insérer un JavaScript d'une page particulière, idée de Mickachu
 */
function loadJs(page) {
  document.write('<script type="text/javascript" src="' +
                 'http://fr.wikipedia.org/w/index.php?title=' + page +
                 '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}

/**
 * Projet JavaScript
 */
function obtenir(name) {
  loadJs('MediaWiki:JSScripts/' + name);
}

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

/* Fin des fonctions générales</source> */



//============================================================
//
// Caractères spéciaux
//
//============================================================

/**
 * Ajoutez le menu pour choisir des sous-ensembles de caractères spéciaux
 * @note	L'ordre de cette liste doit correspondre a celui de MediaWiki:Edittools !
 */
function addCharSubsetMenu() {
  var specialchars = document.getElementById('specialchars');

  if (specialchars) {
    var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
    menu += "<option>Wiki</option>";
    menu += "<option>Mathématiques</option>";
    menu += "<option>Latin/Romain</option>";
    menu += "<option>Grec</option>";
    menu += "<option>Cyrillique</option>";
    menu += "<option>Allemand</option>";
    menu += "<option>Arabe</option>";
    menu += "<option>Espagnol</option>";
    menu += "<option>Espéranto</option>";
    menu += "<option>Hébreu</option>";
    menu += "<option>Hiéroglyphe</option>";
    menu += "<option>Hollandais</option>";
    menu += "<option>Italien</option>";
    menu += "<option>Portugais</option>";
    menu += "<option>Yiddish</option>";
    menu += "<option>API</option>";
    menu += "</select>";
    specialchars.innerHTML = menu + specialchars.innerHTML;

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

/* select subsection of special characters */
function chooseCharSubset(s) {
  var l = document.getElementById('specialchars').getElementsByTagName('p');
  for (var i = 0; i < l.length ; i++) {
    l[i].style.display = i == s ? 'inline' : 'none';
    l[i].style.visibility = i == s ? 'visible' : 'hidden';
  }
}

addLoadEvent(addCharSubsetMenu);




//============================================================
//
// Barre d'outil
//
//============================================================

// Bouton Comment dans wikieditor
$( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
        'section': 'advanced',
        'group': 'format',
        'tools': {
                'comment': {
                        label: 'Comment',
                        type: 'button',
                        icon: 'http://upload.wikimedia.org/wikipedia/commons/1/11/Toolbaricon_hiddencomment.png',
                        action: {
                                type: 'encapsulate',
                                options: {
                                        pre: "<!-- ",
                                        post: " -->"
                                }
                        }
                }
        }
} );

//============================================================
// Insertion de nouveaux boutons dans la barre d'outil
//============================================================

//Remplit la variable mwCustomEditButtons (voir /skins-1.5/commons/wikibits.js) pour ajouter des boutons à la barre d'outils
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText)
{
 mwCustomEditButtons[mwCustomEditButtons.length] =
 {"imageFile": imageFile,
  "speedTip": speedTip,
  "tagOpen": tagOpen,
  "tagClose": tagClose,
  "sampleText": sampleText};
}

addCustomButton('http://upload.wikimedia.org/wikipedia/en/e/e9/Button_headline2.png','Sous-titre de niveau 3',"\n===","===\n",'Sous-titre');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/5/5f/Button_center.png','Centrer',"<div style=\"text-align:center;\">","</div>",'Texte centré');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/a/a5/Button_align_right.png','Texte justifié à droite',"<div style=\"text-align:right;\">","</div>",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/8/8e/Button_shifting.png','Retrait',":","",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/5/58/Button_small.png','Texte plus petit',"<small>","</small>",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png','Exposant',"<sup>","</sup>",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png','Insérer un bloc de citation',"<blockquote style=\"border: 1px solid #97D5DC; padding: 2em;\">\n","\n</blockquote>",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png','Rayer',"<s>","</s>",'');
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","",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png','Liste',"\n* élément A\n* élément B\n* élément C","",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png','Commentaire',"<!--","-->",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/93/Button_sub_link.png','Lien ancré',"[[#|","]]",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/13/Button_enter.png','à la ligne',"<br />","",'');

//Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags
function marque_tab()
{
 var toolbar = document.getElementById('toolbar');
 if (!toolbar) return false;
 
 var textbox = document.getElementById('wpTextbox1');
 if (!textbox) return false;
 
 if (!document.selection && textbox.selectionStart == null)
 return false;
 
 var image = document.createElement("img");
 image.width = 23;
 image.height = 22;
 image.src = 'http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png';
 image.border = 0;
 image.alt = 'Tableau';
 image.title = 'Tableau';
 image.style.cursor = "pointer";
 image.onclick = function() {
   popupTableau();
   return false;
 }
 toolbar.appendChild(image);
}

addOnloadHook(marque_tab);


//============================================================
// 
// Divers
// 
//============================================================

/**
 * 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");
	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 = document.createElement("a");
			var rightlink = document.createElement("a");
			if (j != 0) {
				leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
				leftlink.innerHTML="◀";
			}
			if (j != units.length - 1) {
				rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
				rightlink.innerHTML="▶";
			}
			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);


//============================================================
//
// Boites deroulantes
//
//============================================================

 
 
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 {{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;
 
  // ajout par Dake - permet de créer un titre en lieu et place du "Dérouler" grâce
  // à l'attribut "title" du tag.
  var ShowText;
 
  if (NavFrame.title == undefined || NavFrame.title.length == 0 ) {
    ShowText = expandCaption;
  } else {
    ShowText = NavFrame.title;
  }
 
  // if shown now
  if (NavToggle.firstChild.data == collapseCaption) {
    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 = ShowText;
    }
 
  // if hidden now
  } else if (NavToggle.firstChild.data == ShowText) {
    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 = collapseCaption;
    }
  }
}
 
// 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 + ');');
 
      var NavToggleText = document.createTextNode(collapseCaption);
      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);

/* Test if an element has a certain class **************************************
  *
  * Description: Uses regular expressions and caching for better performance.
  * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]]
  */
 
 var hasClass = (function () {
     var reCache = {};
     return function (element, className) {
         return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
     };
 })();



/*
 * VraiTitre : Ajout du titre réel d'un article pour lequel MediaWiki n'affiche pas correctement
 */

function VraiTitre() 
{
   var balise = document.getElementById("vrai_titre");
   if (!balise) return;
   vrai_titre = balise.childNodes[0].nodeValue;
   var titre = document.getElementsByTagName("H1")[0];
   rectificatif = titre.appendChild(document.createElement("span"));
   rectificatif.setAttribute ("style","color:#AAAAAA; font-size:0.7em; font-style:italic; display:inline;");
   rectificatif.appendChild(document.createTextNode(" ("+ vrai_titre +")"));
}
addLoadEvent(VraiTitre);



/* </nowiki> </pre> */
Outils personnels
Espaces de noms
Variantes
Actions
Découvrir
Œuvres
Échanger
Ressources
Boîte à outils