MediaWiki:Common.js

Eus Wikiarroud

Notenn : Goude bezañ enrollet ho pajenn e rankot freskaat krubuilh ho merdeer evit gwelet ar c'hemmoù.

  • Firefox / Safari: Derc'hel da bouezañ war Pennlizherenn en ur glikañ war Adkargañ, pe pouezañ war Ctrl-F5 pe Ctrl-R (⌘-R war ur Mac);
  • Google Chrome: Pouezañ war Ctrl-Pennlizh-R (⌘-Shift-R war ur Mac)
  • Internet Explorer / Edge: Derc'hel da bouezañ war Ctrl en ur glikañ war Freskaat, pe pouezañ war Ctrl-F5
  • Konqueror : Klikañ war Adkargañ pe pouezañ war F5
  • Opera : Mont da Arventennoù → lañser (Opera → Penndibaboù war ur Mac) ha goude mont da Prevezded & surentez → Riñsañ roadennoù ar grubuilh → Skeudennoù krubuilhet ha restroù.
/*
__FORCETOC__
== infobulles et touches d’accès ==

=== Navigation interprojet ===
*/

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

mw.util.addCSS('#interProject {display: none; speak: none;} #p-tb .pBody {padding-right: 0;}');
 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>Raktresoù all<\/h5><div class="pBody">'+iProject+'<\/div>';
   document.getElementById("p-tb").appendChild(interProject);
  }
 }
$(iProject);

// Navigation interprojets

/*

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

*/
//============================================================
//
// 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>Matematikoù</option>";
    menu += "<option>API</option>";
    menu += "<option>Latin/Romain</option>";
    menu += "<option>Gresianeg</option>";
    menu += "<option>Kirileg</option>";
    menu += "<option>AHD</option>";
    menu += "<option>Alamaneg</option>";
    menu += "<option>Arabeg</option>";
    menu += "<option>Katalaneg</option>";
    menu += "<option>Kroateg</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);

/*
== Boîtes déroulantes ==
*/

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

/*

== Barre d'outil ==

=== Générateur de tableaux ===
*/


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

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

*/

function addCustomButton(){}

//Ressemble à la fonction de /w/skins/common/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 = '//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);


/*

== Historique en couleurs ==

*/

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
       
        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.wikiquote.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("//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("//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] = "//upload.wikimedia.org/wikipedia/commons/thumb/7/77/Crystal_Clear_action_reload.png/20px-Crystal_Clear_action_reload.png"
iconsEvents[1] = "//upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Crystal_Clear_action_exit.png/20px-Crystal_Clear_action_exit.png"
iconsEvents[2] = "//upload.wikimedia.org/wikipedia/commons/thumb/4/45/Crystal_Clear_action_2rightarrow.png/20px-Crystal_Clear_action_2rightarrow.png"
iconsEvents[3] = "//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)
			}
		}
	}
}

if (location.href.indexOf("&action=history")!==-1) {
  $(function () {
    getBots();
  });	
}

/*

== Pré-initialisation de certaines pages ==

*/

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

/*

=== Citation du jour ===

*/

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';
}

/*

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

*/

/* 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' + '|trad=' + '\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;
}

/*

=== Pré-initialisation ===

*/

var init_if_empty = [
    ['R%C3%A9f%C3%A9rence:', InitRef],
    ['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 = '//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);

/*

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

*/

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