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

Une page de Wikiversité, la communauté pédagogique libre.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
déplacement suite à bug
Ligne 1 081 : Ligne 1 081 :
}
}
);
);


/**
* mwEmbed ajoute les sous-titres de la langue définie dans vos préférences aux vidéos des extentions Firefogg uploading et "Add-Media-Wizard".
* Voir http://www.mediawiki.org/wiki/JS2_Overview#Debugging_mwEmbed_Gadget
**/
if( typeof mwAddMediaConfig == 'undefined'){
mwAddMediaConfig = {};
}
mwAddMediaConfig['enabled_providers'] = [ 'wiki_commons', 'upload' ];
// Include the mwEmbed gadget remote
importScriptURI( 'http://prototype.wikimedia.org/mwe-gadget/mwEmbed/remotes/mediaWiki.js?uselang=' + wgUserLanguage );

Version du 29 janvier 2011 à 11:04

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

<div style="background:#FFE4E1;">[[Fichier:Nuvola apps important.svg|30px]] Avant de modifier cette page, veuillez '''tester vos changements avec votre propre [[Spécial:Mypage/monobook.js|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 !</div>

Voir aussi [[Mediawiki:Monobook.js]] · [[Mediawiki:Common.css]] · [[Mediawiki:Monobook.css]]

__FORCETOC__
== Infobulles et touches d’accès ==
Ce Javascript permet l'affichage des infobulles et des touches de raccourci
<source lang="javascript">*/
var ta = new Object();
ta['pt-userpage'] = new Array('.','Ma page utilisateur');
ta['pt-anonuserpage'] = new Array('.','La page utilisateur de l’IP avec laquelle vous contribuez');
ta['pt-mytalk'] = new Array('n','Ma page de discussion');
ta['pt-anontalk'] = new Array('n','Discussion à propos des modifications depuis cette adresse IP');
ta['pt-preferences'] = new Array('','Mes préférences');
ta['pt-watchlist'] = new Array('l','liste des pages dont vous suivez les modifications.');
ta['pt-mycontris'] = new Array('y','Liste de mes contributions');
ta['pt-login'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.');
ta['pt-anonlogin'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.');
ta['pt-logout'] = new Array('o','Se déconnecter');
ta['ca-talk'] = new Array('t','Discussion à propos de l’article');
ta['ca-edit'] = new Array('e','Vous pouvez modifier cette page. Merci d’utiliser le bouton de prévisualisation avant de sauvegarder.');
ta['ca-addsection'] = new Array('+','Ajouter un commentaire à cette discussion.');
ta['ca-viewsource'] = new Array('e','Cette page est protégée. Vous pouvez voir sa source.');
ta['ca-history'] = new Array('h','Anciennes versions de cette page.');
ta['ca-protect'] = new Array('=','Protéger cette page');
ta['ca-delete'] = new Array('d','Supprimer cette page');
ta['ca-undelete'] = new Array('d','Restaurer les modifications effectuées sur cette page avant sa suppression');
ta['ca-move'] = new Array('m','Renommer cette page');
ta['ca-watch'] = new Array('w','Ajouter cette page à votre liste de suivi');
ta['ca-unwatch'] = new Array('w','Retirer cette page de votre liste de suivi');
ta['search'] = new Array('f','Chercher dans ce wiki');
ta['p-logo'] = new Array('','Page principale');
ta['n-mainpage'] = new Array('z','Visitez la page principale');
ta['n-portal'] = new Array('','À propos de ce projet, ce que vous pouvez faire, où trouver les choses');
ta['n-currentevents'] = new Array('','Trouver des informations sur les évènements actuels');
ta['n-recentchanges'] = new Array('r','Liste des changements récents sur le wiki');
ta['n-randompage'] = new Array('x','Charger une page aléatoire');
ta['n-help'] = new Array('','Aide');
ta['n-sitesupport'] = new Array('','Aidez-nous');
ta['t-whatlinkshere'] = new Array('j','Liste de tous les wikis qui lient vers cette page');
ta['t-recentchangeslinked'] = new Array('k','Changements récents dans les pages qui lient vers cette page');
ta['feed-rss'] = new Array('','Flux RSS pour cette page');
ta['feed-atom'] = new Array('','Flux Atom pour cette page');
ta['t-contributions'] = new Array('','Voir la liste de contributions de cet utilisateur');
ta['t-emailuser'] = new Array('','Envoyer un courriel à cet utilisateur');
ta['t-upload'] = new Array('u','Télécharger une image ou des fichiers');
ta['t-specialpages'] = new Array('q','Liste de toutes les pages spéciales');
ta['ca-nstab-main'] = new Array('c','Voir l’article');
ta['ca-nstab-user'] = new Array('c','Voir la page utilisateur');
ta['ca-nstab-media'] = new Array('c','Voir la page du média');
ta['ca-nstab-special'] = new Array('','Ceci est une page spéciale, vous ne pouvez la modifier.');
ta['ca-nstab-project'] = new Array('a','Voir la page du projet');
ta['ca-nstab-image'] = new Array('c','Voir la page de l’image');
ta['ca-nstab-mediawiki'] = new Array('c','Voir le message système');
ta['ca-nstab-template'] = new Array('c','Voir le modèle');
ta['ca-nstab-help'] = new Array('c','Voir la page d’aide');
ta['ca-nstab-category'] = new Array('c','Voir la page de la catégorie');

/*</source>
== Fonctions de base pour monobook ==
Cette partie contient les fonctions Javascript de base de Wikiversité.

Pour installer une nouvelle fonction :
<code>aOnloadFunctions[aOnloadFunctions.length] = nom_de_la_fonction; // (sans parenthèses)</code>
<source lang="javascript">*/
if (!window.aOnloadFunctions) { 
  var aOnloadFunctions = new Array(); 
}

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


/**
 * Ajouter une nouvelle fonction à exécuter au chargement de la page.
 */ 
function addLoadEvent(func) 
{
  if (window.addEventListener) 
    window.addEventListener("load", func, false);
  else if (window.attachEvent)
    window.attachEvent("onload", func);
}

/**
 * Permet de centraliser les codes javascript au moyen de la fonction "obtenir" (crée sur fr.wikipedia)
 */

function obtenir(name)
{
 document.write('<script type="text/javascript" src="' +
                'http://fr.wikiversity.org/w/index.php?title=MediaWiki:JSScripts/' + name +
                '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}

/*</source>

== Liste des 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]] !
<source lang="javascript">*/
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>API</option>";
    menu += "<option>Latin/Romain</option>";
    menu += "<option>Grec</option>";
    menu += "<option>Cyrillique</option>";
    menu += "<option>Devanāgarī</option>";
    menu += "<option>AHD</option>";
    menu += "<option>Allemand</option>";
    menu += "<option>Arabe</option>";
    menu += "<option>Catalan</option>";
    menu += "<option>Croate</option>";
    menu += "<option>Espagnol</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>Hiéroglyphe</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>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>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 += "</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';
  }
}

addOnloadHook(addCharSubsetMenu);

/*</source>
== Boîtes déroulantes ==
<source lang="javascript">*/
 
// BEGIN Dynamic Navigation Bars (experimental)
 
 var NavigationBarHide = '[ Enrouler ]';
 var NavigationBarShow = '[ Dérouler ]';
 
 var NavigationBarShowDefault = 0;
 
 // shows and hides content and picture (if available) of navigation bars
 // affiche ou masque une NavBar donnée
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 //     indexNavigationBar : numéro de la barre concernée
 
 function toggleNavigationBar(indexNavigationBar)
{
   var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
   var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
  // si y'a pas de NavFrame/NavToggle, on oublie
   if (!NavFrame || !NavToggle) { return false;   }
 
   // ajout par Dake
   // permet de créer un titre en lieu et place du "Dérouler" grâce
   // à l'attribut "title" du tag.
 
   // Bidouillage : 
   // 1. Permet de modifier « Enrouler » et « Dérouler »
   //         Utilisation : title = "dérouler/enrouler"
   //         Si non supporté, laisse le texte par défaut
   // 2. Permet de décider si la boîte est affichée au départ ou pas
   //         Par défaut, le contenu est caché
   //         Pour l'afficher, il suffit d'ajouter style="display:block" au NavContent
 
   var ShowText;
   var HideText;
   var Texts;
 
    ShowText = NavigationBarShow;
    HideText = NavigationBarHide;
 
   if (NavFrame.title == undefined || NavFrame.title.length == 0 ) 
   {
   } else {
       // Cette astuce permet de passer deux arguments dans « titre »
       Texts=NavFrame.title.split("/");
       if (Texts[0].length==0) {} else { ShowText=Texts[0] }
       if (Texts[1].length==0 || Texts[1] == undefined) {} else { HideText=Texts[1] }
   }
 
   if (NavToggle.firstChild.data == ShowText || NavToggle.firstChild.data == NavigationBarShow) {
       for (
               var NavChild = NavFrame.firstChild;
               NavChild != null;
               NavChild = NavChild.nextSibling
           ) {
           if (NavChild.className == 'NavPic') {
               NavChild.style.display = 'block';
           }
           if (NavChild.className == 'NavContent') {
               NavChild.style.display = 'block';
           }
           if (NavChild.className == 'NavToggle') {
               NavChild.firstChild.data = HideText;
           }
       }
   } else {
       for (
               var NavChild = NavFrame.firstChild;
               NavChild != null;
               NavChild = NavChild.nextSibling
           ) {
           if (NavChild.className == 'NavPic') {
               NavChild.style.display = 'none';
           }
           if (NavChild.className == 'NavContent') {
               NavChild.style.display = 'none';
           }
           if (NavChild.className == 'NavToggle') {
               NavChild.firstChild.data = ShowText;
           }
       }
   } 
}
 
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
   var indexNavigationBar = 0;
   // iterate over all < div >-elements
   for(
           var i=0;
           NavFrame = document.getElementsByTagName("div")[i];
           i++
       ) {
       // if found a navigation bar
       if (NavFrame.className == "NavFrame") {
 
           indexNavigationBar++;
           var NavToggle = document.createElement("a");
           NavToggle.className = 'NavToggle';
           NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
           NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
           // Par défaut, la boîte est fermée 
           var NavToggleText = document.createTextNode(NavigationBarHide);
 
            // Vérifie si l'un des enfants est affiché, alors la boîte s'ouvre
            for (var NavChild = NavFrame.firstChild;NavChild != null;NavChild = NavChild.nextSibling)
            {
                if (NavChild.style!=undefined) {
                    if (NavChild.style.display!=undefined) {
                        if (NavChild.style.display=="block") { NavToggleText = document.createTextNode(NavigationBarShow);}
                    }
                }
             }
 
           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);
 
/*</source>
== Réécritrure des titres ==
La fonction cherche une bannière comme celle-là :

<nowiki><div id="RealTitleBanner">Div cachée
  <span id="RealTitle">titre</span>
</div></nowiki>

Un élément avec id=DisableRealTitle désactive la fonction.
<source lang="javascript">
*/
rewritePageH1 = function() {
	try {
		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) {
					h1.innerHTML = realTitle.innerHTML;
					realTitleBanner.style.display = "none";
				}
			}
		}
	} catch (e) {
		/* Something went wrong. */
	}
}
addOnloadHook(rewritePageH1);

 /*
 * 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 +")"));
}
addOnloadHook(VraiTitre);
/*</source>

== 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.
<source lang="javascript">*/
function IconesDeTitre() {
  var h1 = document.getElementsByTagName("h1")[0];
  var icones = document.getElementsByTagName("div");
  var icones2 = new Array();
  var j = 0;
  for (var i = 0; i < icones.length; ++i) {
    if (icones[i].className == "icone de titre") {
      icones2[j++] = icones[i];
    }
  }
  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(IconesDeTitre);
/*</source>
== Lien d'import ==
Changer le lien d'import en lien vers la page [[Aide:Importer un fichier]] (depuis fr.wikipedia)
<source lang="javascript">*/
function LienUpload() 
{
  uploadLink = document.getElementById("t-upload");
  if (!uploadLink) return;
  
  a = uploadLink.firstChild;
  a.setAttribute('href', '/wiki/Aide:Importer_un_fichier');
} 
addOnloadHook(LienUpload);
/*</source>

== Barre d'outil ==
=== Générateur de tableaux ===
Génère un tableau en utilisant la syntaxe MediaWiki
@author: fr:user:dake
@version: 0.1
<source lang="javascript">*/
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
{
        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);
}

/**
 * Ouvre une popup avec paramètres pour générer un tableau
 * Le nombre de lignes et de colonnes peut être modifié. Des
 * paramètres supplémentaires sont liés aux modèles disponibles sur :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();
}
/*</source>

=== 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
<source lang="javascript">*/
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/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/9/9e/Btn_toolbar_gallery.png','Galerie d\'images',"\n<gallery>\nFichier:Image1.jpg|[[Titre1]]\nFichier:Image2.jpg|[[Image2]]\nFichier:Image3.jpg|Le [[titre3]]\n</gallery>","",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png','Commentaire',"<!--","-->",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png','Redirection',"#REDIRECT [[","]]",'nom de la destination');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png','Catégorie',"[[Catégorie:","]]",'nom de la catégorie');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/77/Button_Nuvola_apps_edu_phi.png','Chapitre','\{\{Chapitre\n\|titre=\n\|titre_leçon=\n\|idfaculté=','\n\|leçon=\n\|numero=\n\|précédent=\n\|suivant=\n\|niveau=\n\}\}','entrez le nom de la faculté');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bd/Btn_plus.png','Bas de page','\{\{Bas de page\n\|idfaculté=mathématiques\n\|leçon=[[../]]\n\|précédent=[[../|sommaire]]','\n\|suivant=[[..//]]\n\}\}');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/0c/Blue-question-mark.jpg','Quiz','<quiz>\n\{ Entrer ici la question :<br />\n\| type="\{\}" \}\n\{ réponse 1 \| réponse 2 ignorant les majuscules (i) _10 \}\n</quiz>');

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


/*</source>

== Suppression du titre sur la page d'accueil ==
Script de suppression du titre sur la page d'accueil (depuis fr.wikipedia)
<source lang="javascript">*/
var mpTitle = "Accueil";
var isMainPage = (/[Aa]ccueil/.test(wgTitle));
var isMainPageFront = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle);
var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));

if (isMainPage) 
{
    if (isMainPageFront && !isDiff)
        document.write('<style type="text/css">/*<![CDATA[*/ #lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>');

    var mpSmallEnabled;
    var mpMinWidth = 700;

    function mainPageTransform()
    {
       if (isMainPage && document.getElementById('ca-nstab-main')) 
          document.getElementById('ca-nstab-main').firstChild.innerHTML = 'Accueil';
       if (((isMainPageFront && !isDiff) || /[\/=:]Main_Page/.test(document.location)) && document.getElementById('ca-nstab-main'))
       var mpContentEl = document.getElementById("bodyContent");
       var mpBrowseEl = document.getElementById("EnWpMpBrowse");
       var mpContainEl = document.getElementById("EnWpMpBrowseContainer");
       var mpMarginEl = document.getElementById("EnWpMpMargin");
       var mpEl = document.getElementById("EnWpMainPage");

       if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl)
           return;

       if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth)
       {
           mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild);
           mpBrowseEl.className = "EnWpMpBrowseBottom";
           mpMarginEl.style.marginRight = 0;
           mpSmallEnabled = true;
       }
       else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth)
       {
           mpEl.insertBefore(mpBrowseEl, mpEl.firstChild);
           mpBrowseEl.className = "EnWpMpBrowseRight";
           mpMarginEl.style.marginRight = "13.8em";
           mpSmallEnabled = false;
       }
    }

    var onloadFuncts = [ mainPageTransform ];
    addFuncEvent("resize", mainPageTransform);
}
/*</source>

== Page de recherche ==
* Amélioration de la page de recherche v3
* Auteur : Marc Mongenet
* Sous licence GFDL & GPL
<source lang="javascript">*/
function SpecialSearchEnhanced3() 
{

 function SearchForm(search_action_url, engine_url, engine_name, logo_url,
                     search_field_name, search_field_value, site_field_name, site_field_value)
 {
   var span = document.createElement("div");
   span.style.marginRight = "1em";
   span.style.width="100%";
   span.style.whiteSpace = "nowrap";

   var form = document.createElement("form");
   form.method = "get";
   form.action = search_action_url;
   form.style.display = "inline";
   span.appendChild(form);

   var input = document.createElement("input");
   input.type = "hidden";
   input.name = search_field_name;
   form.appendChild(input);

   var site = document.createElement("input");
   site.type = "hidden";
   site.name = site_field_name;
   site.value = site_field_value;
   form.appendChild(site);

   var submit = document.createElement("input");
   submit.type = "submit";
   submit.value = "Recherche";
   form.appendChild(submit);

   form.onsubmit = function() {
     input.value = document.getElementById("lsearchbox").value;
   }

   var a = document.createElement("a");
   a.href = engine_url;
   span.appendChild(a);

   var img = document.createElement("img");
   img.src = logo_url;
   img.alt = engine_name;
   img.style.borderWidth = "0";
   img.style.padding = "5px";
   a.appendChild(img);

   return span;
 }

 if (typeof SpecialSearchEnhanced3Disabled != 'undefined') return;
 if (wgPageName != "Special:Search") return;

 var mainNode = document.getElementsByTagName("form");
 if (!mainNode) return;
 mainNode = mainNode[0];
 mainNode.appendChild(document.createElement("center"));
 mainNode = mainNode.lastChild;

 var searchValue = document.getElementById("lsearchbox").value;
 var engine;
 engine = SearchForm("http://partner.exalead.fr/search", "http://www.exalead.fr/", "Exalead",
                     "http://www.wikipedia.fr/exalead.gif", "q", searchValue,
                     "site", "fr.wikiversity.org");
 mainNode.appendChild(engine);
 engine = SearchForm("http://www.google.fr/search", "http://www.google.fr/", "Google",
                     "http://www.google.com/logos/Logo_25wht.gif", "q", searchValue,
                     "as_sitesearch", "fr.wikiversity.org");
 mainNode.appendChild(engine);
 engine = SearchForm("http://search.live.com/results.aspx", "http://search.live.com/", "Live",
                     "http://search.live.com/s/affillogoLive.gif", "q", searchValue,
                     "q1", "site:http://fr.wikiversity.org");
 mainNode.appendChild(engine);
 engine = SearchForm("http://fr.search.yahoo.com/search", "http://fr.search.yahoo.com/", "Yahoo!",
                     "http://us.yimg.com/i/yahootogo/y88red2.gif", "p", searchValue,
                     "vs", "fr.wikiversity.org");
 mainNode.appendChild(engine);
}
addOnloadHook(SpecialSearchEnhanced3);
/*</source>
== Salle Café ==
Ce Javascript permet de gérer la salle café comme une page de discussion.
<source lang="javascript">*/
function DiscussionCafe()
{
  if(  (wgPageName.search('Wikiversité:La_salle_café') != -1)
    || (wgPageName.search('Wikiversité:Réserve') != -1))
    document.body.className = 'cafe';
}
addOnloadHook(DiscussionCafe);
/*</source>

== LookupHover ==
Ce Javascript permet d'afficher la définition du Wiktionnaire d'un mot lorsqu'on double-clique dessus.
<source lang="javascript">*/
importScriptURI('http://en.wikinews.org/w/index.php?title=MediaWiki:Gadget-dictionaryLookupHover.js&action=raw&ctype=text/javascript');

/*</source>*/

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

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

/**
 * Script pour alterner entre deux cartes de géolocalisation
 */
addOnloadHook(function(){ 
  var cont;
  if(!(wgAction=="view")) 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);
  }
});

/**
* Utilisation du modèle Modèle:VideoSRT
*/

function toggleVideo(group, remindex, shwindex) {
  document.getElementById("VideoSRTGroupsGr"+group+"Im"+remindex).style.display="none";
  document.getElementById("VideoSRTGroupsGr"+group+"Im"+shwindex).style.display="inline";
}

function videoGroup(){
  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, k = 0;
  var units, search;
  var currentvideo;
  var UnitNode;
  for (i = 0; i < divs.length ; i++) {
    if (divs[i].className != "VideoSRTGroup") continue;
    UnitNode=undefined;
    search=divs[i].getElementsByTagName("div");
    for (j = 0; j < search.length ; j++) {
      if (search[j].className != "VideoSRTGroupUnits") 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 < 2 ; j++) {
      currentvideo=units[j];
      currentvideo.id="VideoSRTGroupsGr"+i+"Im"+j;
      var imghead = document.createElement("div");
      var link;
      if (j != 0) {
        link = document.createElement("a");
        link.href = "javascript:toggleVideo("+i+","+j+","+(j-1)+");";
        link.innerHTML="Version sans sous-titres";
      } else {
        link = document.createElement("a");
        link.href = "javascript:toggleVideo("+i+","+j+","+(j+1)+");";
        link.innerHTML="Version avec sous-titres";
      }
      var comment = document.createElement("tt");
      comment.innerHTML = "("+ (j+1) + "/" + 2 + ")";

      with(imghead) {
        style.fontSize="110%";
        style.fontweight="bold";
        appendChild(link);
      }
      currentvideo.insertBefore(imghead,currentvideo.childNodes[0]);
      if (j != 0) currentvideo.style.display="none";
    }
  }
}
addOnloadHook(videoGroup);


/* 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
    Importation sur le Wiktionnaire puis la Wikiversité par JackPotte
*/
function CadreOngletInit(){
  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"*/




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


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


/**
 * application de [[w:Wikipédia:Prise de décision/Système de cache]], puis [[Wikiversité:La_salle_café/33_2010]]
 * un <span class="noarchive"> autour du lien l'empêche d'être pris en compte
 * pour celui-ci uniquement
 * un no_external_cache=true dans un monobook personnel désactive le script
 */
 
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(wgServer)==-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/?org=" + wgServer + "&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("]"));
      }
    }
  }
}
);