MediaWiki:Common.js

From dmfswiki
Revision as of 22:30, 29 November 2011 by Tiksmoke (Talk | contribs)

Jump to: navigation, search

Note: After saving, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Clear the cache in Tools → Preferences
/* Crée l'objet $j comme alias à jQuery et ws comme super-objet*/
if(typeof $j == 'undefined') {
    $j = jQuery;
}
ws = {};

//import de la libraire de manipulation des metadonnées et du widget "citer le livre"
mw.loader.load('//fr.wikisource.org/w/index.php?title=MediaWiki:Wikisource.data.js&action=raw&ctype=text/javascript');
mw.loader.load('//fr.wikisource.org/w/index.php?title=MediaWiki:Wikisource.citeBox.js&action=raw&ctype=text/javascript');

/*********************
Indicateurs de qualité
Auteur: ThomasV
*********************/

var q0  = "http://upload.wikimedia.org/wikipedia/commons/8/8f/00%25.png";
var q25 = "http://upload.wikimedia.org/wikipedia/commons/5/5b/25%25.png";
var q50 = "http://upload.wikimedia.org/wikipedia/commons/3/3a/50%25.png";
var q75 = "http://upload.wikimedia.org/wikipedia/commons/c/cd/75%25.png";
var q100 = "http://upload.wikimedia.org/wikipedia/commons/6/64/100%25.png";
var qvalid = "http://upload.wikimedia.org/wikisource/fr/2/2b/Valid%C3%A9.png";

function textQuality() {
        if ($.inArray(mw.user.options.get('skin'), [ 'monobook', 'vector' ]) == -1)
                return;

	if ($.inArray(wgAction, [ 'view', 'submit', 'purge' ]) == -1)
                return;

	if (wgNamespaceNumber)
                return;

	var a = document.getElementById("ca-nstab-main");
        if (!a)
                return;

	var pr_q = document.getElementById("pr_index")
	if( pr_q ) {
                /* Modèle:Index présent. */
		href = pr_q.firstChild;
                if (!href)
                    return;
		pr_q.removeChild(href);
		href.firstChild.innerHTML = "Source";
		href.setAttribute("title", "Source de ce texte (fac-simile)");
		var new_li = document.createElement("li");
		new_li.appendChild(href); 
		a.parentNode.insertBefore(new_li, a.nextSibling);
	} else {
                /* Porter depuis monobook.js, est-ce encore utile et qu'est-ce ? */
		if( mw.user.options.get('skin') == 'monobook' && !document.getElementById("pr_page")) {
			var c = document.getElementById("contentSub");
                        /* FIXME: très très mauvais */
			c.innerHTML = c.innerHTML + "<span></span>";
		}

		var q = document.getElementById("textquality")
		if (q) {
			var new_img = document.createElement("img");
			var t = q.className;
			switch (t) {
				case 'Textes validés':
					new_img.setAttribute("src", qvalid);
					break;
				case '25%':
					new_img.setAttribute("src", q25);
					break;
				case '50%':
					new_img.setAttribute("src", q50);
					break;
				case '75%':
					new_img.setAttribute("src", q75);
					break;
				case '100%':
					new_img.setAttribute("src", q100);
					break;
			}
			new_img.setAttribute("title", "état d'avancement: "+t.substring(0,t.length-1)+'%');
                        if (mw.user.options.get('skin') == 'vector')
        			a.firstChild.firstChild.appendChild(new_img);
                        else /* monobook */
        			a.firstChild.appendChild(new_img);
		}
	}
}

addOnloadHook(textQuality);

/* Bouton OCR -- ThomasV : OCR ne fonctionannt plus sur le Toolserver 
function add_msg(){
	if((!wgCurRevisionId) && self.proofreadPageIsEdit && self.proofreadPageViewURL) {
		var msg  = document.getElementById("msgNewarticletext"); 
		if(msg) msg.innerHTML = "<div style=\"border:1px solid #CCC; padding:0.5em;\">Vous avez suivi un lien vers une page en mode fac-similé, pour laquelle le texte n'est pas encore disponible. Vous pouvez compléter cette page en entrant le texte dans la boîte ci-dessous. Vous pouvez demander une reconnaissance automatique de caractères, en utilisant le service d'OCR de Wikisource.</div>";
	}
}
addOnloadHook(add_msg); */


/* corrections pour pages non corrigées */
function typographie(){
        var editbox = document.getElementById('wpTextbox1');
        if(editbox && wgNamespaceNumber==104 && self.proofreadpage_quality==1 ){

	search = new RegExp("([^'])'([^'])",'g');
	editbox.value = editbox.value.replace(search,"$1’$2");
	search = new RegExp("\n\n- ",'g');
	editbox.value = editbox.value.replace(search,"\n\n— ");
   }
}
addOnloadHook(typographie);


/* traduction des messages javascript*/
self.ws_messages = { 
	'optlist':'Options d’affichage',
	'hide_page_numbers':'Liens vers les pages',
	'show_page_numbers':'Liens vers les pages',
	'layout':'Maquette',

	'author':'Auteur',
	'translator':'Traducteur', 
	'editor':'Éditeur scientifique', 
	'publisher':'Éditeur', 
	'place':'Lieu', 
	'volume':'Volume', 
	'school':'School', /*ne pas traduire*/
	'book':'Livre', 
	'collection':'Recueil', 
	'journal':'Journal ou revue', 
	'phdthesis':'Thèse, rapport', 
	'dictionary':'Dictionnaire, encyclopédie, ouvrage de référence', 
	'progress':'Avancement', 
	'progress_T':'Terminé', 
	'progress_V':'À valider', 
	'progress_C':'À corriger', 
	'progress_MS':'Texte prêt à être découpé (match & split)', 
	'progress_OCR':'Ajouter une couche texte OCR', 
	'progress_X':'Source incomplète (extrait) ou compilation de sources différentes', 
	'progress_L':'Fichier défectueux (lacunes, pages dans le désordre, etc)',

	'matching':'appariement en cours',
	'splitting':'découpage en cours',

	'corr_list':"Liste des corrections apportées à cette page",
	'corr_link':"Coquilles",
	'corr_one':"Une coquille </a> a été corrigée.",
	'corr_many':" coquilles</a> ont été corrigées.",
	'corr_close':'Fermer.',

	'iwtrans':'Son texte vient de', 
	'iwtrans2':'Son texte vient d’autres sous-domaines de Wikisource.',
        'commons_error_link' : 'Erreur(s) possible',
        'err_list' : 'Erreur(s) possible'
}

/* attributs de style dynamiques */
self.ws_layouts = {
 'Maquette 1':{'text-wrap':"position:relative;margin-left:3em;margin-right:3em;", 
      '#text-container':"width:36em;margin:0px auto;" , 
      '#text':"text-align:justify;", 
      '#box-right':"position:absolute; right:-20em;top:0em;",
      '#box-toc':"position:absolute; right:-23em;top:0em; width:22em;",
      '.sidenote-right':"position:absolute; left:37em;width:15em;text-indent:0em;text-align:left;",
      '.sidenote-left':"position:absolute; right:37em;width:15em;text-indent:0em;text-align:right;",
      '.editsection':"display:none",
      '.headerlabel':"display:none",
      '.headertemplate-author':"font-size:100%",
      '.headertemplate-title':"font-size:120%;",
      '.headertemplate-reference':"font-size:90%",
      '#headertemplate':"" },
 'Maquette 2':{'text-wrap':"margin-left:3em", 
      '#text-container':"" , 
      '#text':"text-align:justify;width:auto;", 
      '#box-right':"float:right;",
      '#box-toc':"margin:auto;width:100%;",
      '.sidenote-right':"float:right;margin:0.5em;padding:3px;border:solid 1px gray;max-width:9em;text-indent:0em;text-align:left;",
      '.sidenote-left':"float:left;margin:0.5em;padding:3px;border:solid 1px gray;max-width:9em;text-indent:0em;text-align:left;",
      '.editsection':"display:none",
      '.headerlabel':"display:none",
      '.headertemplate-author':"font-size:100%",
      '.headertemplate-title':"font-size:120%;",
      '.headertemplate-reference':"font-size:90%",
      '#headertemplate':"" },
 'Maquette 3':{'text-wrap':"margin-left:3em",
      '#text-container':"position:relative; min-width:60em; float:left; width:100%; margin-right:-23em;" , 
      '#text':"text-align:justify;margin-right:23em; text-indent:0em; padding-left:0px; padding-right:0px;width:auto;position:relative;",
      '#box-right':"float:right;",
      '#box-toc':"margin:auto;width:100%;",
      '.sidenote-right':"position:absolute; right:-16em; width:15em; background-color:#eeeeee;text-indent:0em;text-align:left;line-height:normal;",
      '.sidenote-left': "position:absolute; right:-16em; width:15em; background-color:#eeeeee;text-indent:0em;text-align:left;line-height:normal;",
      '.editsection':"display:none",
      '.headerlabel':"display:inline",
      '.headertemplate-author':"font-size:100%;",
      '.headertemplate-title':"font-size:100%;",
      '.headertemplate-reference':"font-size:100%;",
      '#headertemplate':"position:absolute; top:0em; right:-23em; width:21em;float:right; text-align:left;" }
}

/* test */
self.proofreadpage_add_container=true;

var old_wgserver = '//wikisource.org';
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript');
/*mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:OCR.js&action=raw&ctype=text/javascript');*/
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:PageNumbers.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Modernisation.js&action=raw&ctype=text/javascript');
/*mw.loader.load('//pt.wikisource.org/w/index.php?title=Usuário:Heldergeovane/Scripts/Modernisation.js&action=raw&ctype=text/javascript');*/

mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Corrections.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:DisplayFooter.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:InterWikiTransclusion.js&action=raw&ctype=text/javascript'); 
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:IndexForm.js&action=raw&ctype=text/javascript');

mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:Dictionary.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:RegexpButton.js&action=raw&ctype=text/javascript');
mw.loader.load(old_wgserver + '/w/index.php?title=MediaWiki:DoubleWiki.js&action=raw&ctype=text/javascript');

mw.loader.load(mw.config.get('wgServer') + '/w/index.php?title=MediaWiki:MediaWiki.panel.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400' );


/* Réécriture des titres
 *
 * Fonction utilisée par Modèle:TitreModifié et Modèle:Statut
 * 
 */
function rewritePageH1() {
      var realTitle = document.getElementById('RealTitle');
      var h1 = document.getElementsByTagName('h1')[0];
      if (realTitle && h1) {
        var titleText = realTitle.innerHTML;
        if (titleText == '') h1.style.display = 'none';
        else h1.innerHTML = titleText;
        realTitleBanner.style.display = 'none';
      }
}

addOnloadHook(rewritePageH1);



/*
Fonction pratique pour créer un nouveau menu de lien avec "id" un identifiant html, "title" le titre du bloc, "body" le ul contenant les liens, "divBefore" l’objet jQuery de la div avant laquelle le menu doit être inséré (par défaut le menu interlangue, si le menu précisé n’existe pas il est ajouté à la fin) et expanded ,si le menu doit être déroulé.
Auteur : Tpt
OBSOLETE, REMPLACE PAR MediaWiki.panel. voir doc : http://fr.wikisource.org/wiki/Discussion_MediaWiki:MediaWiki.panel.js
*/
function addNavBox(id, title, body, divBefore, expanded) {
    if(skin=="monobook" || skin=="chick" || skin=="myskin" || skin=="simple") {
        var portletClassName = "portlet";
        var pBodyClassName = "pBody";
        var columnId = "column-one";
    } else if(skin=="modern") {
        var portletClassName = "portlet";
        var pBodyClassName = "pBody";
        var columnId = "mw_portlets";
    } else if(skin=="vector") {
        var portletClassName = "portal expanded";
        var pBodyClassName = "body";
        var columnId = "mw-panel";
        var pBodyStyle = "display: block;";
    } else {
         return;
    }

    if(typeof divBefore == 'undefined') {
        divBefore = $j('#p-lang');
    }
    if(divBefore.size()) {
        divBefore.before('<div id="' + id + '" class="' + portletClassName + '"><h5>' + title + '</h5><div class="' + pBodyClassName + '">' +  body + '</div></div>');
    } else {
        $j('#' + columnId).append('<div id="' + id + '" class="' + portletClassName + '"><h5>' + title + '</h5><div class="' + pBodyClassName + '" style="' + pBodyStyle + '">' +  body + '</div></div>');
    }
    if(skin=="vector") {
        if(expanded) {
            $j('div #' + id).addClass('expanded').find('div.body').show();
        } else {
            $j('div #' + id).addClass('collapsed');
        }
    }
}



/*
Interwikiextra
Auteur:ThomasV et Tpt
*/
function menuExtra() {
    $j(".interwiki-info").each(function(i, info) {
        var langLink = $j("#p-lang .interwiki-" + info.id + " a");
        if(info.title == "(vo)") {
            langLink.after(' (<abbr title="Version originale">vo</abbr>)');
        } else {
            langLink.after(" " + info.title);
        }
    });
 
    //Autre versions
    if($j(".AutreVersion").size() != 0) {
      var data = {
        sections: {
          version: {
            expanded: true,
            label: 'Autres versions',
            links: {}
          }
        }
      };
      $j(".AutreVersion").each(function(i, info) {
        var p = info.title.indexOf("|");
        data.sections.version.links['interwiki-' + i] = {
          label: info.title.substr(p+1,this.title.length-1),
          href: info.title.substr(0,p)
        };
      });
      mw.panel(data);
    }

    // interprojet
    if($j("#interProject").size() != 0) {
      var data = {
        sections: {
          version: {
            expanded: true,
            label: 'Compléments',
            links: {}
          }
        }
      };
      $j("#interProject a").each(function(i, info) {
        var p = info.title.indexOf("|");
        data.sections.version.links['complements-' + i] = {
          label: $(this).text(),
          href: $(this).attr('href')
        };
      });
      mw.panel(data);
    }
}
addOnloadHook(menuExtra);


/*
Compatibilité du menu Option d’affichage avec Vector
Auteur : Tpt
*/
function VectorCompatibility() {
    if(document.getElementById("p-displayOptions")) {
        document.getElementById("p-displayOptions").childNodes[1].style.display = "block";
    }
}
addOnloadHook(VectorCompatibility);


/*******************************************************************
 * affichage des liens vers les pages d'auteur dans les catégories *
 *******************************************************************/

function authors_cat(){
   if(wgNamespaceNumber==14) {
      var list = document.getElementsByTagName('li')
      for(var i in list){
        var item = list[i];
        if(item.firstChild && item.firstChild.innerHTML){
           var s = item.firstChild.innerHTML;
           if(s.substr(0,7)=="Auteur:") item.firstChild.innerHTML = s.substr(7);
        }
      }; 
   }
}
addOnloadHook(authors_cat);



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


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 collapseTable( tableIndex ) {
  var Button = document.getElementById( "collapseButton" + tableIndex );
  var Table = document.getElementById( "collapsibleTable" + tableIndex );
  if ( !Table || !Button ) return false;
 
  var Rows = Table.getElementsByTagName( "tr" ); 
 
  if ( Button.firstChild.data == collapseCaption ) {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = "none";
    }
    Button.firstChild.data = expandCaption;
  } else {
    for ( var i = 1; i < Rows.length; i++ ) {
      Rows[i].style.display = Rows[0].style.display;
    }
    Button.firstChild.data = collapseCaption;
  }
}
 
function createCollapseButtons() {
  var tableIndex = 0;
  var NavigationBoxes = new Object();
  var Tables = document.getElementsByTagName( "table" );
 
  for ( var i = 0; i < Tables.length; i++ ) {
    if ( hasClass( Tables[i], "collapsible" ) ) {
      NavigationBoxes[ tableIndex ] = Tables[i];
      Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );
 
      var Button     = document.createElement( "span" );
      var ButtonLink = document.createElement( "a" );
      var ButtonText = document.createTextNode( collapseCaption );
 
      Button.style.styleFloat = "right";
      Button.style.cssFloat = "right";
      Button.style.fontWeight = "normal";
      Button.style.textAlign = "right";
      Button.style.width = "6em";
 
      ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
      ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
      ButtonLink.appendChild( ButtonText );
 
      Button.appendChild( ButtonLink );
 
      var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0];
      /* only add button and increment count if there is a header row to work with */
      if (Header) {
        Header.insertBefore( Button, Header.childNodes[0] );
        tableIndex++;
      }
    }
  }
 
  for (var i = 0; i < tableIndex; i++) {
    if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) collapseTable( i );
  }
}
addOnloadHook(createCollapseButtons);
 
/**
 * Pour [[Modèle:Boîte déroulante]] 
 */
var NavigationBarShowDefault = 0;
 
function toggleNavigationBar(indexNavigationBar) {
  var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
 
  if (!NavFrame || !NavToggle) return;
 
  // surcharge des libellés dérouler/enrouler grâce a l'attribut title
  // exemple : title="[déroulade]/[enroulade]"
  var caption = [expandCaption, collapseCaption];
  if (NavFrame.title && NavFrame.title.length > 0) {
    caption = NavFrame.title.split("/");
    if (caption.length < 2) caption.push(collapseCaption);
  }
 
  // if shown now
  if (NavToggle.firstChild.data == caption[1]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'none';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[0];
    }
 
  // if hidden now
  } else if (NavToggle.firstChild.data == caption[0]) {
    for ( var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
      if (hasClass(NavChild, 'NavPic')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavContent')) NavChild.style.display = 'block';
      if (hasClass(NavChild, 'NavToggle')) NavChild.firstChild.data = caption[1];
    }
  }
}
 
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton() {
  var indexNavigationBar = 0;
  var NavFrame;
  // iterate over all < div >-elements
  for( var i=0; NavFrame = document.getElementsByTagName("div")[i]; i++ ) {
    // if found a navigation bar
    if (hasClass(NavFrame, "NavFrame")) {
      indexNavigationBar++;
      var NavToggle = document.createElement("a");
      NavToggle.className = 'NavToggle';
      NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
      NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
      // surcharge des libellés dérouler/enrouler grâce a l'attribut title
      var caption = collapseCaption;
      if (NavFrame.title && NavFrame.title.indexOf("/") > 0) {
         caption = NavFrame.title.split("/")[1];
      }
 
      var NavToggleText = document.createTextNode(caption);
      NavToggle.appendChild(NavToggleText);
 
      // add NavToggle-Button as first div-element 
      // in <div class="NavFrame">
      NavFrame.insertBefore( NavToggle, NavFrame.firstChild );
      NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
    }
  }
  // if more Navigation Bars found than Default: hide all
  if (NavigationBarShowDefault < indexNavigationBar) {
    for( var i=1; i<=indexNavigationBar; i++ ) {
      toggleNavigationBar(i);
    }
  }
}
addOnloadHook(createNavigationBarToggleButton);

/**
 * Menu de navigation, pour Modèle:Menu de navigation - user:Dodoïste
 */

$j(document).ready( function () { 
    // On cache les sous-menus 
    // sauf celui qui porte la classe "open_at_load" : 
    $j(".navigation ul.subMenu:not('.open_at_load')").hide(); 
    // On sélectionne tous les items de liste portant la classe "toggleSubMenu" 
 
    // et on remplace l'élément span qu'ils contiennent par un lien : 
    $j(".navigation li.toggleSubMenu span").each( function () { 
        // On stocke le contenu du span : 
        var TexteSpan = $j(this).text(); 
        $j(this).replaceWith('<a href="" class="subMenuA" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ; 
    } ) ; 
 
    // On modifie l'évènement "click" sur les liens dans les items de liste 
    // qui portent la classe "toggleSubMenu" : 
    $j(".navigation li.toggleSubMenu > a").click( function () { 
        // Si le sous-menu était déjà ouvert, on le referme : 
        if ($j(this).next("ul.subMenu:visible").length != 0) { 
            $j(this).next("ul.subMenu").slideUp("normal", function () { $j(this).parent().removeClass("open") } ); 
        } 
        // Si le sous-menu est caché, on ferme les autres et on l'affiche : 
        else { 
            $j(".navigation ul.subMenu").slideUp("normal", function () { $j(this).parent().removeClass("open") }); 
            $j(this).next("ul.subMenu").slideDown("normal", function () { $j(this).parent().addClass("open") } ); 
        } 
        // On empêche le navigateur de suivre le lien : 
        return false; 
    }); 
 
} ) ;


/**********************
*** add menu on edit page /for selecting subsets of special characters
*** by [[user:Pathoschild]]
***   - note: must match MediaWiki:Edittools
**********************/
function addCharSubsetMenu() {
	var specialchars = document.getElementById('specialchars');

	if (specialchars) {
		var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
		menu += "<option>Sélectionner</option>";
		menu += "<option>Ligatures et symboles</option>";
		menu += "<option>Accents</option>";
		menu += "<option>Tildes</option>";
		menu += "<option>Cédilles</option>";
		menu += "<option>Trémas</option>";
		menu += "<option>Circonflexes</option>";
		menu += "<option>Longues</option>";
		menu += "<option>Autres diacritiques</option>";
		menu += "<option>Grec</option>";
		menu += "<option>Hébreu</option>";
		menu += "<option>Cyrillique</option>";
                menu += "<option>IPA</option>";
		menu += "</select>";
		specialchars.innerHTML = menu + specialchars.innerHTML.replace(/_newline_/gm, "\n");

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

// Cache le lien "Ajouter un sujet" dans les pages contenant le marqueur idoine,
// un <span id="suppression_lien_ajouter_un_sujet"></span> suffit.
addOnloadHook(function() {
    if ($('#suppression_lien_ajouter_un_sujet').length) {
        $('#ca-addsection').css('display', 'none');
        // Pas de raison de spliter sur ce type de page.
        $('#ca-split').css('display', 'none');
    }
});

/* Fonction dans l'extension, fichier proofread.js, adapté pour que lorsque
 * un utilisateur clique q3 alors que q3 est déjà le niveau, le nom de l'utilisateur
 * qui a marqué la page q3 ne soit pas changé, idem pour q4.
 */
/* -2 n'est pas un niveau de qualité valide. */
document.initial_proofreadpage_quality = -2;
document.initial_proofreadpage_username = "";
 
/* Quality buttons */
self.pr_add_quality = function( form, value ) {
	if (document.initial_proofreadpage_quality == -2) {
		document.initial_proofreadpage_quality = self.proofreadpage_quality;
                document.initial_proofreadpage_username = self.proofreadpage_username;
        }
	if (document.initial_proofreadpage_quality < 3 || value != document.initial_proofreadpage_quality)
		self.proofreadpage_username = proofreadPageUserName;
        else
                self.proofreadpage_username = document.initial_proofreadpage_username;
	self.proofreadpage_quality = value;
	var text = '';
	switch( value ) {
		case 0:
			text = mediaWiki.msg( 'proofreadpage_quality0_category' );
			break;
		case 1:
			text = mediaWiki.msg( 'proofreadpage_quality1_category' );
			break;
		case 2:
			text = mediaWiki.msg( 'proofreadpage_quality2_category' );
			break;
		case 3:
			text = mediaWiki.msg( 'proofreadpage_quality3_category' );
			break;
		case 4:
			text = mediaWiki.msg( 'proofreadpage_quality4_category' );
			break;
	}
	form.elements['wpSummary'].value = '/* ' + text + ' */ ';
	form.elements['wpProofreader'].value = self.proofreadpage_username;
};

/* Modèle:Titre sous-page */
$(document).ready(function () {
    if ($('#titre-sous-page-seul').size()) {
        var $titre =  $('#firstHeading');
        $titre.text($titre.text().split('/').slice(-1)[0]);
    }
});

/*
 * In Page: namespace, prefetch the next image.
 */
function pf_prefetch_image() {
    if (jQuery.inArray(mw.config.get("wgAction"), ["edit", "submit"]) != -1) {
        /* On devrait faire quelque chose de plus sophistiqué ici, par exemple stocker
         * dans un Cookie le nom de la dernière Page: lu et ne commencer à prefetcher
         * que lors de la lecture de deux pages consécutives pour faire du readahead.
         */
        var page_nr = Number(proofreadPageViewURL.replace(/^.*\/page(\d+).*$/, "$1"));
        var next_thumb = self.proofreadPageViewURL.replace(/^(.*\/page)\d+(.*)$/, "$1" + (page_nr + 1) + "$2");
        var im = new Image();
        im.src = next_thumb;
     } else if (mw.config.get("wgAction") == "view") {
        /* FIXME: same thing in view mode but how to do this as the the url is build later than we run ? */
        //alert("Pageview: " + self.proofreadPageViewURL);
        //alert("Thumb: " + self.proofreadPageThumbURL);
        //alert("External: " + self.proofreadPageExternalURL);
    }
}

if (mw.config.get("wgNamespaceNumber") == 104) {
    addOnloadHook(pf_prefetch_image);
}

/* https://bugzilla.wikimedia.org/show_bug.cgi?id=26028 commentaire 26 et 27 */
$(document).ready(function () {
    $textarea = $('textarea[name="wpFooterTextbox"]');
    if ($textarea.size()) {
        $textarea.text($textarea.text().replace(/^(<references\/>)$/, '\n$1'));
    }
});