Utilisateur:MyXiLo/Monobook.js

Une page de Wikiquote, le recueil des citations libres.

Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
  • Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
  • Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
  • Opera : appuyez sur Ctrl + F5.
/*
__FORCETOC__
== infobulles et touches d’accès ==

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

/*</pre>
== Fonctions de base pour monobook ==
<pre>*/
/**
 * Installation d'une nouvelle fonction de cette façon :
 * aOnloadFunctions[aOnloadFunctions.length] = nom_de_la_fonction; // (sans parenthèses)
 */
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);
}

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

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

/*</pre>
=== Navigation interprojet ===

<pre>*/

// Initialisation de la navigation interprojets (code adapté de de:wikt:Mediawiki:monobook.js)

 document.write('<style type="text/css">#interProject {display: none; speak: none;} #p-tb .pBody {padding-right: 0;}<\/style>');
 function iProject() {
  if (document.getElementById("interProject")) {
   var iProject = document.getElementById("interProject").innerHTML;
   var interProject = document.createElement("div");
   interProject.style.marginTop = "0.7em";
   interProject.innerHTML = '<h5>Autres projets<\/h5><div class="pBody">'+iProject+'<\/div>';
   document.getElementById("p-tb").appendChild(interProject);
  }
 }
 hookEvent("load", iProject);

// Navigation interprojets

/* </pre>

== Liste des caractères spéciaux ==

<pre>*/
//============================================================
//
// 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>API</option>";
    menu += "<option>Latin/Romain</option>";
    menu += "<option>Grec</option>";
    menu += "<option>Cyrillique</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';
  }
}

$(addCharSubsetMenu);

/*</pre>
== Boîtes déroulantes ==
<pre>*/

 // BEGIN Dynamic Navigation Bars (experimantal)
 
 // set up the words in your language
 var NavigationBarHide = '[ Enrouler ]';
 var NavigationBarShow = '[ Dérouler ]';
 
 var NavigationBarShowDefault = 0;
 
 // shows and hides content and picture (if available) of navigation bars
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 function toggleNavigationBar(indexNavigationBar)
{
   var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
   var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

   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.
   var ShowText;

   if (NavFrame.title == undefined || NavFrame.title.length == 0 ) {
    ShowText = NavigationBarShow;
   } else {
    ShowText = NavFrame.title;
   }

   // if shown now
   if (NavToggle.firstChild.data == NavigationBarHide) {
       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;
           }
       }

   // if hidden now
   } else if (NavToggle.firstChild.data == ShowText) {
       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 = NavigationBarHide;
           }
       }
   }
}

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

           var NavToggleText = document.createTextNode(NavigationBarHide);
           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);
       }
   }

}
 
$(createNavigationBarToggleButton);
 
// END Dynamic Navigation Bars

/*</pre>

== Barre d'outil ==

=== Générateur de tableaux ===
<pre>*/


/**
 *
 * English: Generate an array using Mediawiki syntax
 *
 * @author: fr:user:dake
 * @version: 0.1
 */
 
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);
}

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

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

<pre>*/

//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/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>\\nImage:M63.jpg|[[M63]]\\nImage:Mona Lisa.jpg|[[La Joconde]]\\nImage:Truite arc-en-ciel.jpg|Une [[truite]]\\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/e/e2/Button_contexto.png','Modèle Citation','\{\{citation\|citation=','\n\|original=\n\|langue=\n\|précisions=\n\}\}','Texte de la citation');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/02/Button_fuente_primaria.png','Source Livre','\{\{Réf Livre\|titre=','\n\|auteur=\n\|éditeur=\n\|année=\n\|page=\n\|tome=\n\|partie=\n\|chapitre=\n\|acte=\n\|scène=\n\|section=\n\|ISBN=\n\|traducteur=\n\|année d\'origine=\n\|collection=\n\|auteur de la contribution=\n\|titre de la contribution=\n\|traducteur de la contribution=\n\|année de la contribution=\n\|vers=\n\|s=\n\|langue=\n\}\}','Titre du livre');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/2/2b/Button_plume_1.png','Source Article','\{\{Réf Article\|titre=','\n\|auteur=\n\|publication=\n\|numéro=\n\|date=\n\|page=\n\|ISSN=\n\|ISBN=\n\|s=\n\}\}','Titre Article');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9a/Button_references.png','Source Film','\{\{Réf Film\|titre=','\n\|auteur=\n\|date=\n\|acteur=\n\}\}','Titre du Film');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/82/Button_publication.png','Source Émission','\{\{Réf Émission\|auteur=','\n\|émission=\n\|diffuseur=\n\|date=\n\|langue=\n\}\}','Titre du Film');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/5/5c/Button_references2.png','Source discours','\{\{Réf Pub\|nom=','\n\|date=\n\|lieu=\n\|source=\n\|parution=\n\|auteur=\n\|précision=\n\}\}','Nom de l\'auteur');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Button_source_jv.png','Source jeu vidéo','\{\{Réf Jeu vidéo\|titre=','\n\|auteur=\n\|éditeur=\n\|développeur=\n\|date=\n\|personnage=\n\}\}','Nom du jeu vidéo');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/2/29/Button_user.png','Modèle Personnage','\{\{Personnage\|','\}\} \: ','Nom du personnage');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4e/Button_romain.png','Modèle Romain','\{\{romain\|','\}\}','Texte à mettre en caractères romains');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4c/Button_interprojet.png','Interprojet','\{\{Interprojet\n\|nolink\n\|etiq=','\n\|w=\n\|w-it=\n\|w-en=\n\|w-es=\n\|w-de=\n\|s=\n\|wikt=\n\|b=\n\|n=\n\|v=\n\|wikispecies=\n\|commons=\n\|m=\n\}\}','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/13/Button_enter.png','Aller à la ligne','<br />','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4b/Button_nbsp.png','Espace insécable','&nbsp\;','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/8f/Button_poeme.png','Poésie','<poem>\n','\n</poem>','');

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

$(marque_tab);


/*</pre>

== Historique en couleurs ==

<pre>*/

var ajax = new objAJAX()
var cookies = new objCookies()

//--------------------------------------------------------------------------------------------objAJAX
function objAJAX() {
        // AJAX taken from http://jibbering.com/2002/4/httprequest.html. Thanx :)
        this.conn = false
        /*@cc_on @*/
        /*@if (@_jscript_version >= 5)
        // JScript gives us Conditional compilation, we can cope with old IE versions.
        // and security blocked creation of the objects.
        try {
                this.conn = new ActiveXObject("Msxml2.XMLHTTP")
        } catch (e) {
                try {
                        this.conn = new ActiveXObject("Microsoft.XMLHTTP")
                } catch (E) {
                        this.conn = false
                }
        }
        @end @*/
        if (!this.conn && typeof XMLHttpRequest != 'undefined') {
                try {
                        this.conn = new XMLHttpRequest()
                } catch (e) {
                        this.conn =false
                }
        }
        if (!this.conn && window.createRequest) {
                try {
                        this.conn = window.createRequest()
                } catch (e) {
                        this.conn = false
                }
        }

        this.url = null
        this.requestType = "GET"
        this.unsync = true
        this.parser = new objHTMLparser()
}

objAJAX.prototype.sendRequest = function (url, type, unsync, data) {
        if (!this.conn)
                return null
        if (this.conn.readyState != 0 && this.conn.readyState != 4)
                return "busy"
        if (url)
                this.url = url
        if (type)
                this.requestType = type
        if (unsync != null)
                this.unsync = unsync
//alert(this.requestType + " ++ " + this.url + " ++ " + this.unsync)
        this.conn.open(this.requestType, this.url, this.unsync)
        this.conn.send(data)
}

objAJAX.prototype.getResult = function () {
        if (!this.conn)
                return null
        return this.conn.responseText
}

objAJAX.prototype.abort = function () {
        this.conn.onreadystatechange = null
        this.conn.abort()
}

//------------------------------------------------------------------------------------------ObjCookie

function objCookies() {
        this.value = null
        this.name = null
        this.expires = null
}

objCookies.prototype.get = function (which) {
        this.allcookies = document.cookie
        var start = this.allcookies.indexOf("; " + which + "=")
        if (start == -1) {
                start = this.allcookies.indexOf(which + "=")
                if (start != 0)
                        return null
        } else
                start += "; ".length
        this.name = which
        var end = this.allcookies.indexOf(";", start)
        if (end == -1)
                end = this.allcookies.length
        this.value = this.allcookies.substring(start + which.length + 1, end)
        var arr = this.allcookies.substring(start, this.allcookies.length).split("; ")
        this.expires = null
        if (arr.length > 0)
                if (/expires=/.test(arr[1]))
                        this.expires = arr[1].substring("expires=".length, arr[1].length)
        return this.value
}

objCookies.prototype.set = function (name, value, expires) {
        document.cookie = name + "=" + value + ";" + (expires ? "expires=" + expires + ";" : "") + "path=/;" + "domain=fr.wikipedia.org;"
        this.allcookies = document.cookie
}

objCookies.prototype.setWithDelay = function (name, value, delay) {
// delay is in millisecond
        var d = new Date()
        d.setTime(d.getTime() + delay)
        this.set(name, value, d.toGMTString())
}

objCookies.prototype.kill = function (which) {
        if (this.get(which))
                this.set(which, null, "Thu, 01-Jan-70 00:00:01 GMT")
}

//--------------------------------------------------------------------------------------objHTMLparser

function objHTMLparser(str) {
        this.html = str
}

objHTMLparser.prototype.parse = function (elmt, str) {
	if (str !== null)
		this.html = str
	if (this.html.indexOf("<" + elmt) == -1 || this.html.indexOf("</" + elmt + ">") == -1)
		return null
	var arr1 = this.html.split("<" + elmt)
	var elmts = new Array()
	for (var cpt = 1 ; cpt < arr1.length ; cpt++) {
		var el = new Object()
		el.innerHTML = arr1[cpt].substring(arr1[cpt].indexOf(">"), arr1[cpt].length).split("</" + elmt)[0]
		var prop = arr1[cpt].split(">")[0].split(/\s/g)
		for (var cpt1 = 1 ; cpt1 < prop.length ; cpt1++) {
			if (prop[cpt1].indexOf("=") != -1)
				el[prop[cpt1]] = true
			else
				el[prop[cpt1].split("=")[0]] = prop[cpt1].substring(prop[cpt1].indexOf("="), prop[cpt1].length)
		}
		elmts[cpt-1] = el
	}
	this.elmts[elmt] = elmts
}

/*************************************************/
// Nom : DeluxeHistory
// Auteur : Dake
// Basé sur du code Ajax de GôTô
// Dernière mise à jour : 8 avril 2006
// Commentaires : 
/*************************************************/
var sysopsDeluxeHistory = null;
var botsDeluxeHistory = null;

function extractUsers(res) {
	pattern = /title\=\"Utilisateur:(.*?)\"/g;
	s = "";
	while((result = pattern.exec(res)) != null) {
		s += result[1] + "||";
	}
	return s;
}

/*************************************************/
// Auteur : Dake
// Basé sur du code de GôTô
/*************************************************/
function getBots() {
	try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	} catch (e) {
	  // mange l'exception
	}

	if (!cookies.get("botsDeluxeHistory")) {
		ajax.conn.onreadystatechange = function () {
			if (ajax.conn.readyState == 4) {
				botsDeluxeHistory = extractUsers(ajax.getResult())
				// conservé pour une semaine
				cookies.setWithDelay("botsDeluxeHistory", botsDeluxeHistory, 1000*3600*24*7)
				getSysops();
			}
		}
		ajax.sendRequest("http://fr.wikiquote.org/w/index.php?title=Special:Listusers&group=bot&limit=500&offset=0&action=raw", "GET", true)
	} else {
		botsDeluxeHistory = cookies.get("botsDeluxeHistory")
		getSysops();
	}
}

/*************************************************/
// Auteur : Dake
// Basé sur du code de GôTô
/*************************************************/				
function getSysops() {
	try {
		netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
	} catch (e) {
	 // mange l'exception
	}

	if (!cookies.get("sysopsDeluxeHistory")) {
		ajax.conn.onreadystatechange = function () {
			if (ajax.conn.readyState == 4) {
				sysopsDeluxeHistory = extractUsers(ajax.getResult())
				// conservé pour une semaine
				cookies.setWithDelay("sysopsDeluxeHistory", sysopsDeluxeHistory, 1000*3600*24*7)
				deluxeHistoryProcess();
			}
		}
		ajax.sendRequest("http://fr.wikiquote.org/w/index.php?title=Special:Listusers&group=sysop&limit=500&offset=0&action=raw", "GET", true)
	} else {
		sysopsDeluxeHistory = cookies.get("sysopsDeluxeHistory")
		deluxeHistoryProcess();
	}
}
				
// code by Martin Honnen
function getOuterHTML (node) {
	if (node.nodeType == 3)
			return node.nodeValue;
	else if (node.nodeType == 1) {
			var html = '';
		html += '<' + node.nodeName;
		for (var a = 0; a < node.attributes.length; a++)
			html += ' ' + node.attributes[a].nodeName + '="' +
		node.attributes[a].nodeValue + '"';
			if (node.childNodes.length == 0)
			html += ' \/>';
			else {
			html += '>';
			for (var c = 0; c < node.childNodes.length; c++)
			html += getOuterHTML(node.childNodes[c]);
			html += '<\/' + node.nodeName + '>';
		}
			return html;
		}
}
		
function deluxeHistoryProcess() {					
	sysopsList = sysopsDeluxeHistory.split("||")
	botsList = botsDeluxeHistory.split("||")		
	
	var lis = document.getElementById("pagehistory").getElementsByTagName("li");

	for (i=0; i<lis.length; i++) {
		spanNode = lis[i].getElementsByTagName("span");
		username = spanNode[0].childNodes[0].childNodes[0].nodeValue;
		
		// check le statut du contributeur
		var className = "history-user-normal";
		
		// bot ? 
		for (j=0;j<botsList.length;j++) {
			if (botsList[j].indexOf(username)==0) {
				className = "history-user-bot"
				break;
			}
		}  
		
		// sysop ? 
		for (j=0;j<sysopsList.length;j++) {
			if (sysopsList[j].indexOf(username)==0) {
				className = "history-user-sysop"
				break;
			}
		}
	
		// ip ? 
		var ip = /\d{1,3}\.\d{1,3}.\d{1,3}.\d{1,3}/;
		
		if (ip.exec(username)) {
			className = "history-user-ip"
		}

                // ajout des icônes
		specialOp = "";
		var comment = "";
					
		for (h=0;h<spanNode.length;h++) {
			if (spanNode[h].getAttribute("class") == "comment") { 
				comment = getOuterHTML(spanNode[h])
				break;
			}
		}
				
		var regexExpEvents = new Array();
      	        regexExpEvents[0] = /((r|R)(é|e)vocation|(r|R)v |(R|r)evert|(v|V)andal(isme|e))/;
      	        regexExpEvents[1] = /(a restauré|a effacé|(s|S)uppression)/;	
		regexExpEvents[2] = /((R|r)enommage|a déplacé)/;
		regexExpEvents[3] = /((semi|Semi)-(p|P)rotection|(P|p)rotection)/;
		
		var iconsEvents = new Array();
iconsEvents[0] = "http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Crystal_Clear_action_reload.png/20px-Crystal_Clear_action_reload.png"
iconsEvents[1] = "http://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Crystal_Clear_action_exit.png/20px-Crystal_Clear_action_exit.png"
iconsEvents[2] = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/45/Crystal_Clear_action_2rightarrow.png/20px-Crystal_Clear_action_2rightarrow.png"
iconsEvents[3] = "http://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/Crystal_Clear_action_lock.png/20px-Crystal_Clear_action_lock.png"
		
		
		if (comment) {
			for (k=0;k<regexExpEvents.length;k++) {
				if (regexExpEvents[k].test(comment)) {
					imgTag = "<img src=\"" + iconsEvents[k] + "\" />" 
					specialOp = "<div class=\"" + className + 
                                                    "\" style=\"float: right; vertical-align:top;\">" + 
                                                    imgTag + "</div>"
				}
			}	
		}
		
		lis[i].innerHTML = "<div class=\"" + className + "\">" + specialOp  + lis[i].innerHTML + "</div>"

		
		inputNodes = lis[i].getElementsByTagName("input");
		for (j=0;j<inputNodes.length;j++) {
			inputNodes[j].style.visibility='visible';
		}

		for (j=0;j<spanNode.length;j++) {
			if(spanNode[j].getAttribute("class")=="history-user") {
				spanNode[j].setAttribute("class", className)
			}
		}
	}
}
					
function deluxeHistoryLoader() {
	if (document.URL.indexOf("&action=history")==-1) return;		
	getBots();
}	

addLoadEvent(deluxeHistoryLoader)	

/*</pre>

== Pré-initialisation de certaines pages ==

<pre>*/

//============================================================
//
// Fonctions de remplissage automatique
//
//============================================================

/*</pre>

=== Citation du jour ===

<pre>*/

function InitQOTD(page_name)
{
    var cbeg = '<!--Remplissez les champs citation, auteur et article et sauvegardez la page. -->';
    var template = '{{' + 'subst:' + 'Citation du jour/Préchargement' + '\n' + '|citation=\n' + '|auteur=\n' + '|article=\n' + '}}';
    return cbeg + '\n' + template + '\n';
}

/*</pre>

=== Espace Référence ===

<pre>*/

/* Pour les sous-pages de l'espace Référence (e.g. [[Référence:Page/Sous-page]]) */
function InitRefSub()
{
    var cbeg = '<!-- Remplissez les champs ci-dessous et sauvegardez la page. Voyez la documentation de ' + '[[Modèle:' + 'Édition' + ']]' + ' pour la liste des champs disponibles. -->';
    var beg = '{{subst:' + 'Édition début' + '}}'; 
    var fields = '|titre=' + '\n' + '|auteur=' + '\n' + '|éditeur=' + '\n' + '|année=' + '\n' + '|lieu=' + '\n' + '|pages=' + '\n' + '|isbn=';

    var cend = '<!-- Ne pas modifier après cette ligne. -->';
    var end = '{{subst:' + 'Édition fin' + '}}';
    return cbeg + '\n' + beg + '\n' + fields + '\n' + cend + '\n' + end;
}

/* Pour les pages de l'espace Référence (e.g. [[Référence:Page]]) */
function InitRefPage()
{
    var beg = '{{' + 'Référence' + '}}' + '\n\n== Éditions ==';
    var cbeg = "<!-- Attention : cette partie ne doit faire qu'inclure les sous-pages (une par édition). Pour ajouter une édition, il faut créer une nouvelle sous-page. -->";
    var body = '\n<!-- Exemple : \n\n=== [[/Gallimard-Folio|Gallimard]] ===\n\n' + '{{' + '/Gallimard-Folio' + '}}\n\n-->';
    return beg + "\n" + cbeg + "\n" + body;
}

function InitRef(page_name)
{
    var retval;
    var index = page_name.indexOf('/');
    if (index != -1)
      retval = InitRefSub();
    else
      retval = InitRefPage();
    return retval;
}

/*</pre>

=== Pré-initialisation ===

<pre>*/

var init_if_empty = new Array(
    new Array('R%C3%A9f%C3%A9rence:', InitRef),
    new Array('Mod%C3%A8le:Citation_du_jour/', InitQOTD)
);

/**
 * Remplit la zone d'édition si elle est vide avec le texte retourné par
 * un pointeur de fonction sélectionné par le nom de la page.
 */
function InitPage()
{
    // Tester si editdorm et wpTextbox1 existe sinon il y a une erreur lorsqu'on
    // ouvre l'historique d'une page qui match un des noms de init_if_empty[],
    // tester seulement le nom de la page n'est pas suffisant.
    if (document.editform == undefined ||
        document.editform.wpTextbox1 == undefined)
      return;
    var text_area = document.editform.wpTextbox1;
    if (text_area.value.length != 0)
      return;

    ugly_url = 'http://fr.wikiquote.org/w/index.php?title=';
    for (var i = 0; i < init_if_empty.length; ++i) {
      var page_name = document.URL;
      var page_match = init_if_empty[i][0];
      var index = page_name.indexOf(ugly_url + page_match);
      if (index != -1) {
         page_name = page_name.slice((ugly_url + page_match).length);
         page_name = page_name.split('&')[0];
         page_name = decodeURI(page_name);
         page_name = page_name.replace(/_/g, ' ')
         text_area.value = init_if_empty[i][1](page_name);
         break;
      }
    }
}

$(InitPage);

/*</pre>

== Choix de l'affichage des références ==

<pre>*/

//============================================================
//
// Choix de l'affichage des références
//
//============================================================

/**
 * Choix du mode d'affichage des références.
 * @note	L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
 */
function addBibSubsetMenu() 
{
  var specialBib = document.getElementById('specialBib');

  if (specialBib) 
  {
    specialBib.style.display = 'block';
    var menu = "<select style=\"display:inline;\" onChange=\"chooseBibSubset(selectedIndex)\">";
    menu += "<option>Liste</option>";
    menu += "<option>WikiNorme</option>";
    menu += "<option>BibTeX</option>";
    menu += "<option>ISBD</option>";
    menu += "<option>ISO690</option>";
    menu += "</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';
  }
}

$(addBibSubsetMenu);

/* </pre> */