This is an archive copy of wikilivres.ca as of 18 February 2017 (from the WikiTeam dump). The original site is closed.

MediaWiki:Common.js: Difference between revisions

Free texts and images.
Jump to navigation Jump to search
imported>Phe
No edit summary
imported>Marc
No edit summary
Line 66: Line 66:
importScriptURI('http://wikisource.org/w/index.php?title=MediaWiki:MatchSplit.js&action=raw&ctype=text/javascript');
importScriptURI('http://wikisource.org/w/index.php?title=MediaWiki:MatchSplit.js&action=raw&ctype=text/javascript');


/*********************************
* page numbers for proofreadpage
* by [[user:ThomasV]]
**********************************/
var layout_num = 0;
function toggle_layout() {
  var n=0; for( key in self.ws_layouts ) n++;
  layout_num = (layout_num+1) % n;
  SetCookie("layout",""+layout_num);
  set_layout(layout_num);
}
if(!self.ws_layouts) self.ws_layouts = {}
function set_layout(layout_num) {
  var i=0; for( key in self.ws_layouts ) { if(i==layout_num) layout_name = key; i++; }
  d = self.ws_layouts[layout_name];
  for( key in d ) {
    if(key.substring(0,1)=='.') {
        var t = get_elements_by_classname( key.substring(1,key.length) ,"span");
        for(var i=0; i<t.length; i++)  t[i].style.cssText = d[key];
    } else if(key.substring(0,1)=='#') {
        var item = document.getElementById(key.substring(1,key.length));
        if(item) item.style.cssText = d[key];
    }
  }
  o_a = document.getElementById("option-textLayout");
  if(o_a) o_a.innerHTML = "<a href='javascript:toggle_layout();'>"+layout_name+"</a>";
  refresh_pagenumbers();
}
function add_page_container(){
        if(wgNamespaceNumber!=0 && wgNamespaceNumber!=2 ) return;
        var id = null;
        if(wgAction=="view"||wgAction=="purge") id = "#bodyContent";
        if(wgAction=="submit") id = "#wikiPreview";
        if (!id) return;
        if( document.getElementById("text-wrap") ) return;
        if( !self.proofreadpage_source_href && get_elements_by_classname("pagenum","span").length==0 ) return;
var t = get_elements_by_classname("text","div");
        for(var i=0; i<t.length; i++)  t[i].className ="";
        t = get_elements_by_classname("lefttext","div");
        for(var i=0; i<t.length; i++)  t[i].className ="";
        t = get_elements_by_classname("centertext","div");
        for(var i=0; i<t.length; i++)  t[i].className ="";
        t = get_elements_by_classname("indented-page","div");
        for(var i=0; i<t.length; i++)  t[i].className ="";
        t = get_elements_by_classname("prose","div");
        for(var i=0; i<t.length; i++)  t[i].className ="";
        $(id).prepend($('#contentSub'));
        $('#contentSub').nextUntil('#catlinks').wrapAll("<div id='text-wrap'><div id='text-container'><div id='text'></div></div></div><div style='clear:both'/>");
}
function init_page_layout() {
    if(self.debug_page_layout) return;
    if(document.URL.indexOf("match=") > 0 ) return;
    if(document.URL.indexOf("diff=") > 0 ) return;
    var k=false;
    for( key in self.ws_layouts ) { k = true;}
    if(!k) return;
    add_page_container();
    if(document.getElementById("text-wrap")) {
      var optlist = get_optlist();
      /*p = document.getElementById('p-displayOptions');
      if(self.proofreadpage_debug) alert(p);*/
      mw.util.addPortletLink ('p-displayOptions', 'javascript:toggle_layout();', ws_msg('layout'), 'option-textLayout', '' );
      layout = GetCookie("layout") ;
      if(layout) layout_num = parseInt( layout ); else layout_num = 0;
      if(!layout_num) layout_num = 0;
      set_layout(layout_num);
    }
}
function hide_pagenumbers(){
  var ml = get_elements_by_classname( 'pagenumber', 'span' );
  for(var i=0; i<ml.length; i++) {
    ml[i].style.display="none";
  }
  o_a = document.getElementById("option-pageNumbers");
  if(o_a) {
    o_a.innerHTML = "<a href='javascript:show_pagenumbers();'>"+ws_msg('show_page_numbers')+"</a>";
  }
  SetCookie("pagenum","0") ;
}
function show_pagenumbers(){
  var ml = get_elements_by_classname( 'pagenumber', 'span' );
  for(var i=0; i<ml.length; i++) {
    ml[i].style.display="";
  }
  o_a = document.getElementById("option-pageNumbers");
  if(o_a){
    o_a.innerHTML = "<a href='javascript:hide_pagenumbers();'>"+ws_msg('hide_page_numbers')+"</a>";
  }
  SetCookie("pagenum","1") ;
}
// see http://stackoverflow.com/questions/1472842/firefox-and-chrome-give-different-values-for-offsettop
function get_offset(item) {
var ox=0; var oy=0;
var zme = item;
for(zmi=0;zmi<50;zmi++) {
if(zme+1 == 1 ) {
break;
}
else {
ox+=zme.offsetLeft;
                        oy+=zme.offsetTop;
}
zme=zme.offsetParent;
}
return [ox,oy, item.offsetTop];
}
function pagenum_over(ox,oy,prev_ox,prev_oy,h,w) {
  if(self.proofreadpage_disable_highlighting) return true;
  var ct = document.getElementById("ct-popup");
  if(!ct) return true;
  var dd = h/10;
  ct.style.top = (oy-h+dd)+"px";
  ct.style.height= "";
  ct.firstChild.style.width = (w-ox)+"px";
  ct.firstChild.nextSibling.style.height = (prev_oy-oy-h)+"px";
  ct.firstChild.nextSibling.nextSibling.style.width = prev_ox+"px";
  return true;
}
function pagenum_out(){
  if(self.proofreadpage_disable_highlighting) return true;
  var ct = document.getElementById("ct-popup");
  if(!ct) return true;
  ct.style.height= "0px";
  ct.firstChild.style.width = "0px";
  ct.firstChild.nextSibling.style.height = "0px";
  ct.firstChild.nextSibling.nextSibling.style.width = "0px";
  return true;
}
function init_page_numbers() {
if(document.URL.indexOf("match=") > 0 ) return;
    self.pagenum_ml = get_elements_by_classname( 'pagenum', 'span' );
    if( !self.proofreadpage_source_href || self.pagenum_ml.length==0) return;
    var optlist = get_optlist();
    mw.util.addPortletLink ('p-displayOptions', 'javascript:hide_pagenumbers();', ws_msg('hide_page_numbers'), 'option-pageNumbers', '', 'n' );
    var cs = self.pagenum_ml[0].parentNode.parentNode;
    //this happens for empty pages ; check if there are other cases
    if(cs.tagName=="P") cs = cs.parentNode;
    /* Measure the line height and the height of an empty span */
    var ct = document.createElement("div");
    ct.setAttribute("id","my-ct");
    cs.insertBefore(ct,cs.firstChild);
    var ss = document.createElement("div"); /*we need a div, not a span*/
    ss.innerHTML="&nbsp;<span></span>";    /*empty span following some text */
    ss.setAttribute("id","my-ss");
    cs.appendChild(ss);
    /* container for page numbers */
    var div_pagenums = document.createElement("div");
    div_pagenums.setAttribute("id","ct-pagenums");
    /* insert the container in the grandparent node, or parent, or self */
    var mcs = document.getElementById("text-wrap");
    if(!mcs) {
      if(cs.parentNode.parentNode.style.position=="relative") mcs = cs.parentNode.parentNode;
      else if(cs.parentNode.style.position=="relative") mcs = cs.parentNode;
      else { mcs = cs; mcs.style.position = "relative"; }
    }
    mcs.appendChild(div_pagenums);
    /* container for the highlight */
    var div_popup = document.createElement("div");
    var opacity="background-color:#000000;opacity:0.2;-ms-filter:alpha(opacity=20);filter:alpha(opacity=20);";
    div_popup.setAttribute("id","ct-popup");
    div_popup.style.cssText = "position:absolute;width:100%;";
    div_popup.innerHTML = "<div style=\""+opacity+"float:right;width:0px;\" >&nbsp;</div>"
      +"<div style=\""+opacity+"width:100%;height:0px;clear:both;\"></div>"
      +"<div style=\""+opacity+"width:0px;\">&nbsp;</div>";
    cs.appendChild(div_popup);
    refresh_pagenumbers();
}
function refresh_pagenumbers() {
    var ct = document.getElementById("my-ct");
    if(!ct) return;
    var ss = document.getElementById("my-ss");
    var cs = ct.parentNode;
    /* set it to relative because the highlight is of width 100% */
    cs.style.position = "relative"; /* fixme : this interacts with layouts */
    var lineheight = ss.offsetHeight;
    var offset_h = ss.lastChild.offsetHeight;
    var linewidth = cs.offsetWidth;
    var ct_o = get_offset(ct);
    var ct_ox = ct_o[0];
    var ct_oy = ct_o[1];
    var oo = get_offset(ss);
    var ox = oo[0] - ct_ox; var oy = oo[1] - ct_oy;
    var oh ="";
    for(var i=self.pagenum_ml.length-1; i>=0; i--) {
        var a = self.pagenum_ml[i];
        var num = decodeURI( a.id );
        if(num==".CE.9E") num="Ξ";
        if(num==".E2.80.93") num="—";
        if(num==".E2.80.94") num="—";
        var page = a.title;
        var pagetitle = decodeURI( page );
        var page_url = wgArticlePath.replace("$1", encodeURIComponent( pagetitle.replace(/ /g,"_") ) );
        // encodeURIComponent encodes '/', which breaks subpages
        page_url = page_url.replace(/%2F/g, '/');
        var ll = a.parentNode.nextSibling;
        if(ll && ll.tagName=="A" && ll.className=="new") class_str=" class=\"new\" "; else class_str="";
        var link_str = "<a href=\""+page_url+"\"" + class_str + " title=\""+escapeQuotesHTML(pagetitle)+"\">"+escapeQuotesHTML(num)+"</a>"
        if(self.proofreadpage_numbers_inline){
                a.innerHTML = "&#x0020;<span class=\"pagenumber noprint\" style=\"color:#666666; display:inline; margin:0px; padding:0px;\">[<b>"+link_str+"</b>]</span>&#x0020;";
        }
        else {
            if(a.offsetTop==0 && i!=0) {
                //if(self.proofreadpage_debug) alert("zero2 "+a.id+" "+a.parentNode.offsetTop);
                continue;
            }
            prev_ox = ox;
            prev_oy = oy;
            a_o = get_offset(a);
            ox = a_o[0] - ct_ox;
            oy = a_o[1] - ct_oy + offset_h;
            if(prev_oy - oy > 5) {
                  oh = oh + "<div class=\"pagenumber noprint\" onmouseover=\"pagenum_over("+ ox + "," + oy + "," + prev_ox + "," + prev_oy + "," + lineheight + "," + linewidth + ");\" onmouseout=\"pagenum_out();\" style=\"position:absolute; left:-4em; top:"+(oy+cs.offsetTop-lineheight)+"px; text-indent:0em; text-align:left; font-size:80%; font-weight:normal; font-style: normal;\">["+link_str+"]</div>";
            }
        }
    }
    if(!self.proofreadpage_numbers_inline) {
        var ct_pagenums = document.getElementById("ct-pagenums");
        ct_pagenums.innerHTML = oh;
    }
    pagenum_out();
    if( parseInt(GetCookie("pagenum")) == 0 ) hide_pagenumbers();
}
if ($.inArray(mw.config.get('wgAction'), [ 'edit', 'submit' ])) {
    //fixme : this is sensitive to order (detection of containers with "relative" position)
    addOnloadHook(init_page_layout);
    addOnloadHook(init_page_numbers);
}


/********************************************
/********************************************

Revision as of 10:11, 4 November 2011

/* <pre> */

/**********************
*** Quality indicators on "article" tab
*** by [[user:ThomasV]]
**********************/
// return src for icon given percentage
function icon_src(t){
	var src='http://wikilivres.info/w/images/';
	switch(t){
		case '0%': src+='8/8f/00%25.png'; break;
		case '25%': src+='5/5b/25%25.png'; break;
		case '50%': src+='3/3a/50%25.png'; break;
		case '75%': src+='c/cd/75%25.png'; break;
		case '100%': src+='6/64/100%25.png'; break;
		case "Validated": src=+'b/b7/Etoile.png'; break;
	} 
	return src;
}
 
// add indicator
function pageQuality() {
	var a = document.getElementById('ca-nstab-main');
	if(!a) return;
 
	var pr_index = document.getElementById('pr_index');
	if(pr_index) return;
 
	var q = document.getElementById('textquality');
	if(q) {
		var new_img = document.createElement('img');
		new_img.setAttribute('src', icon_src(q.className));
		a.firstChild.appendChild(new_img);
	}
 
	for(var i=0; spanElem = document.getElementsByTagName('span')[i]; i++) {
		if (spanElem.className == 'pagequality')  {
			var new_img = document.createElement('img');
			new_img.setAttribute('src', icon_src(spanElem.title));
 
			if(wgCanonicalNamespace == 'Page') {
				a.firstChild.appendChild(new_img);
			}
			else {
				s1 = spanElem.parentNode.previousSibling;
				opttext = s1.firstChild.firstChild;
				img = opttext.firstChild.nextSibling.nextSibling.nextSibling;
				next = img.nextSibling;
				opttext.removeChild(img);
				opttext.insertBefore(new_img,next);
			}
		}
	}
}
addOnloadHook(pageQuality);


/* configure */
self.proofreadpage_add_container = true;
self.proofreadpage_disable_wheelzoom = false;
 
importScriptURI('http://wikisource.org/w/index.php?title=MediaWiki:Base.js&action=raw&ctype=text/javascript');
/* importScriptURI('http://wikisource.org/w/index.php?title=MediaWiki:PageNumbers.js&action=raw&ctype=text/javascript'); */
importScriptURI('http://wikisource.org/w/index.php?title=MediaWiki:DisplayFooter.js&action=raw&ctype=text/javascript');
importScriptURI('http://wikisource.org/w/index.php?title=MediaWiki:IndexForm.js&action=raw&ctype=text/javascript');
importScriptURI('http://wikisource.org/w/index.php?title=MediaWiki:MatchSplit.js&action=raw&ctype=text/javascript');

/*********************************
* page numbers for proofreadpage
* by [[user:ThomasV]]
**********************************/


var layout_num = 0;

function toggle_layout() {
  var n=0; for( key in self.ws_layouts ) n++;
  layout_num = (layout_num+1) % n;
  SetCookie("layout",""+layout_num);
  set_layout(layout_num);
}

if(!self.ws_layouts) self.ws_layouts = {}

function set_layout(layout_num) {
  var i=0; for( key in self.ws_layouts ) { if(i==layout_num) layout_name = key; i++; }
  d = self.ws_layouts[layout_name];
  for( key in d ) {
     if(key.substring(0,1)=='.') {
        var t = get_elements_by_classname( key.substring(1,key.length) ,"span"); 
        for(var i=0; i<t.length; i++)  t[i].style.cssText = d[key];
     } else if(key.substring(0,1)=='#') {
        var item = document.getElementById(key.substring(1,key.length));
        if(item) item.style.cssText = d[key];
     }
  }
  o_a = document.getElementById("option-textLayout");
  if(o_a) o_a.innerHTML = "<a href='javascript:toggle_layout();'>"+layout_name+"</a>";

  refresh_pagenumbers();
}

function add_page_container(){
        if(wgNamespaceNumber!=0 && wgNamespaceNumber!=2 ) return; 
        var id = null;
        if(wgAction=="view"||wgAction=="purge") id = "#bodyContent"; 
        if(wgAction=="submit") id = "#wikiPreview"; 
        if (!id) return;
        if( document.getElementById("text-wrap") ) return;

        if( !self.proofreadpage_source_href && get_elements_by_classname("pagenum","span").length==0 ) return;

	var t = get_elements_by_classname("text","div"); 
        for(var i=0; i<t.length; i++)  t[i].className =""; 
        t = get_elements_by_classname("lefttext","div"); 
        for(var i=0; i<t.length; i++)  t[i].className =""; 
        t = get_elements_by_classname("centertext","div"); 
        for(var i=0; i<t.length; i++)  t[i].className =""; 
        t = get_elements_by_classname("indented-page","div"); 
        for(var i=0; i<t.length; i++)  t[i].className =""; 
        t = get_elements_by_classname("prose","div"); 
        for(var i=0; i<t.length; i++)  t[i].className ="";

        $(id).prepend($('#contentSub'));
        $('#contentSub').nextUntil('#catlinks').wrapAll("<div id='text-wrap'><div id='text-container'><div id='text'></div></div></div><div style='clear:both'/>");
}

function init_page_layout() {
    if(self.debug_page_layout) return;

    if(document.URL.indexOf("match=") > 0 ) return;
    if(document.URL.indexOf("diff=") > 0 ) return;

    var k=false; 
    for( key in self.ws_layouts ) { k = true;}
    if(!k) return;

    add_page_container();

    if(document.getElementById("text-wrap")) {
       var optlist = get_optlist();
       /*p = document.getElementById('p-displayOptions'); 
       if(self.proofreadpage_debug) alert(p);*/
       mw.util.addPortletLink ('p-displayOptions', 'javascript:toggle_layout();', ws_msg('layout'), 'option-textLayout', '' );
       layout = GetCookie("layout") ;
       if(layout) layout_num = parseInt( layout ); else layout_num = 0;
       if(!layout_num) layout_num = 0;
       set_layout(layout_num);
    }
}

function hide_pagenumbers(){
   var ml = get_elements_by_classname( 'pagenumber', 'span' );
   for(var i=0; i<ml.length; i++) {
     ml[i].style.display="none";
   }
   o_a = document.getElementById("option-pageNumbers");
   if(o_a) {
     o_a.innerHTML = "<a href='javascript:show_pagenumbers();'>"+ws_msg('show_page_numbers')+"</a>"; 
   }
   SetCookie("pagenum","0") ;
}

function show_pagenumbers(){
   var ml = get_elements_by_classname( 'pagenumber', 'span' );
   for(var i=0; i<ml.length; i++) {
     ml[i].style.display="";
   }
   o_a = document.getElementById("option-pageNumbers");
   if(o_a){
     o_a.innerHTML = "<a href='javascript:hide_pagenumbers();'>"+ws_msg('hide_page_numbers')+"</a>"; 
   }
   SetCookie("pagenum","1") ;
}

// see http://stackoverflow.com/questions/1472842/firefox-and-chrome-give-different-values-for-offsettop 

function get_offset(item) {
	var ox=0; var oy=0;
	var zme = item;
	for(zmi=0;zmi<50;zmi++) {
		if(zme+1 == 1 ) { 
			break;
		} 
		else {
			ox+=zme.offsetLeft;
                        oy+=zme.offsetTop;
		}
		zme=zme.offsetParent; 
	}
	return [ox,oy, item.offsetTop];
}

function pagenum_over(ox,oy,prev_ox,prev_oy,h,w) {
  if(self.proofreadpage_disable_highlighting) return true;
  var ct = document.getElementById("ct-popup");
  if(!ct) return true;
  var dd = h/10;
  ct.style.top = (oy-h+dd)+"px";
  ct.style.height= "";

  ct.firstChild.style.width = (w-ox)+"px";
  ct.firstChild.nextSibling.style.height = (prev_oy-oy-h)+"px";
  ct.firstChild.nextSibling.nextSibling.style.width = prev_ox+"px";
  return true;

}

function pagenum_out(){
  if(self.proofreadpage_disable_highlighting) return true;
  var ct = document.getElementById("ct-popup");
  if(!ct) return true;
  ct.style.height= "0px";
  ct.firstChild.style.width = "0px";
  ct.firstChild.nextSibling.style.height = "0px";
  ct.firstChild.nextSibling.nextSibling.style.width = "0px";
  return true;
}



function init_page_numbers() {

	if(document.URL.indexOf("match=") > 0 ) return;

    self.pagenum_ml = get_elements_by_classname( 'pagenum', 'span' );

    if( !self.proofreadpage_source_href || self.pagenum_ml.length==0) return;

    var optlist = get_optlist();
    mw.util.addPortletLink ('p-displayOptions', 'javascript:hide_pagenumbers();', ws_msg('hide_page_numbers'), 'option-pageNumbers', '', 'n' );

    var cs = self.pagenum_ml[0].parentNode.parentNode;
    //this happens for empty pages ; check if there are other cases
    if(cs.tagName=="P") cs = cs.parentNode; 

    /* Measure the line height and the height of an empty span */
    var ct = document.createElement("div");
    ct.setAttribute("id","my-ct");
    cs.insertBefore(ct,cs.firstChild);
    var ss = document.createElement("div"); /*we need a div, not a span*/
    ss.innerHTML="&nbsp;<span></span>";     /*empty span following some text */
    ss.setAttribute("id","my-ss");
    cs.appendChild(ss);

    /* container for page numbers */
    var div_pagenums = document.createElement("div"); 
    div_pagenums.setAttribute("id","ct-pagenums");
    /* insert the container in the grandparent node, or parent, or self */
    var mcs = document.getElementById("text-wrap");
    if(!mcs) {
      if(cs.parentNode.parentNode.style.position=="relative") mcs = cs.parentNode.parentNode;
      else if(cs.parentNode.style.position=="relative") mcs = cs.parentNode; 
      else { mcs = cs; mcs.style.position = "relative"; }
    } 
    mcs.appendChild(div_pagenums);

    /* container for the highlight */
    var div_popup = document.createElement("div"); 
    var opacity="background-color:#000000;opacity:0.2;-ms-filter:alpha(opacity=20);filter:alpha(opacity=20);";
    div_popup.setAttribute("id","ct-popup");
    div_popup.style.cssText = "position:absolute;width:100%;";
    div_popup.innerHTML = "<div style=\""+opacity+"float:right;width:0px;\" >&nbsp;</div>"
      +"<div style=\""+opacity+"width:100%;height:0px;clear:both;\"></div>"
      +"<div style=\""+opacity+"width:0px;\">&nbsp;</div>";
    cs.appendChild(div_popup);

    refresh_pagenumbers();
}


function refresh_pagenumbers() {
    var ct = document.getElementById("my-ct");
    if(!ct) return;
    var ss = document.getElementById("my-ss");

    var cs = ct.parentNode;
    /* set it to relative because the highlight is of width 100% */
    cs.style.position = "relative"; /* fixme : this interacts with layouts */

    var lineheight = ss.offsetHeight; 
    var offset_h = ss.lastChild.offsetHeight;

    var linewidth = cs.offsetWidth; 
    var ct_o = get_offset(ct);
    var ct_ox = ct_o[0]; 
    var ct_oy = ct_o[1];
    var oo = get_offset(ss);
    var ox = oo[0] - ct_ox; var oy = oo[1] - ct_oy;

    var oh ="";
    for(var i=self.pagenum_ml.length-1; i>=0; i--) {
        var a = self.pagenum_ml[i];
        var num = decodeURI( a.id );
        if(num==".CE.9E") num="Ξ";
        if(num==".E2.80.93") num="—";
        if(num==".E2.80.94") num="—";
        var page = a.title;
        var pagetitle = decodeURI( page );
        var page_url = wgArticlePath.replace("$1", encodeURIComponent( pagetitle.replace(/ /g,"_") ) );
        // encodeURIComponent encodes '/', which breaks subpages
        page_url = page_url.replace(/%2F/g, '/');
        var ll = a.parentNode.nextSibling;
        if(ll && ll.tagName=="A" && ll.className=="new") class_str=" class=\"new\" "; else class_str="";
        var link_str = "<a href=\""+page_url+"\"" + class_str + " title=\""+escapeQuotesHTML(pagetitle)+"\">"+escapeQuotesHTML(num)+"</a>" 
        if(self.proofreadpage_numbers_inline){
                a.innerHTML = "&#x0020;<span class=\"pagenumber noprint\" style=\"color:#666666; display:inline; margin:0px; padding:0px;\">[<b>"+link_str+"</b>]</span>&#x0020;";
        }
        else { 
            if(a.offsetTop==0 && i!=0) { 
                //if(self.proofreadpage_debug) alert("zero2 "+a.id+" "+a.parentNode.offsetTop); 
                continue;
            }
            prev_ox = ox;
            prev_oy = oy;
            a_o = get_offset(a); 
            ox = a_o[0] - ct_ox;
            oy = a_o[1] - ct_oy + offset_h;

            if(prev_oy - oy > 5) {
                  oh = oh + "<div class=\"pagenumber noprint\" onmouseover=\"pagenum_over("+ ox + "," + oy + "," + prev_ox + "," + prev_oy + "," + lineheight + "," + linewidth + ");\" onmouseout=\"pagenum_out();\" style=\"position:absolute; left:-4em; top:"+(oy+cs.offsetTop-lineheight)+"px; text-indent:0em; text-align:left; font-size:80%; font-weight:normal; font-style: normal;\">["+link_str+"]</div>";
            }
        }
     }
     if(!self.proofreadpage_numbers_inline) {
        var ct_pagenums = document.getElementById("ct-pagenums");
        ct_pagenums.innerHTML = oh;
    }
    pagenum_out();
    if( parseInt(GetCookie("pagenum")) == 0 ) hide_pagenumbers();
}

if ($.inArray(mw.config.get('wgAction'), [ 'edit', 'submit' ])) {
    //fixme : this is sensitive to order (detection of containers with "relative" position)
    addOnloadHook(init_page_layout);
    addOnloadHook(init_page_numbers);
}

/********************************************
*** New buttons on toolbar box
*** by [[user:ThomasV]]
********************************************/

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/8/8f/Button_poeme.png','Poésie','<poem>\\n\\n','\\n</poem>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png','Galerie Photo','<gallery>\\n','\\n</gallery>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png','Commentaire','<!--','-->','Insérer votre 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/5/5f/Button_center.png','Texte centré','<center>','</center>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/e/e9/Button_headline2.png','paragraphe niveau 3','===','===','');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/8/8e/Button_shifting.png', 'Insérer un retrait',':','',':' );
addCustomButton('http://upload.wikimedia.org/wikipedia/en/5/58/Button_small.png','Texte plus petit','<small>','</small>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png','Exposant','<sup>','</sup>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4b/Button_nbsp.png','Espace insécable','&nbsp\;','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/9/93/Button_sub_link.png','Lien vers sous-titre','\[\[Page\#','\]\]','Sub_page' );
addCustomButton('http://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png','Block quote','<blockquote style=&quot;border: 1px solid blue; padding: 2em;&quot;>\\n','\\n</blockquote>','Block quote');
addCustomButton('http://upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png','Aller à la ligne','<br />','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/4/4b/Button_class_text.png', 'Paragraphe texte','<div class=\'text\'>\\n\\n','\\n</div>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/78/Button_titre.png','Titre de page','\{\{Titre\|','\|\|\}\}','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/03/Button_chapitre.png','Titre de Chapitre','\{\{chapitre\|livre=','\|auteur=\|nrpartie=\|nrchapitre=\|TitreChapitre=\|commentaires=\}\}','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c4/Button_ref.png','Ajoute une référence','<ref>','</ref>','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/6/64/Buttonrefvs8.png','Liste des références','<references />','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c3/Button_travaux.png','Relecture','\{\{subst:Infoédit\|1=','\|2= \|3= \|4= \|5= \|6= \}\}','');



/********************************************
*** Copyright tab
*** by [[user:ThomasV]]
********************************************/

function ongletCopyright() {  // id created by Template:Licence. It should match Template:Licence parameters
        var a = document.getElementById("p-cactions");
        if (a) 
        {
          b = a.getElementsByTagName("ul");
          if(b.length > 0)
          {
            if(document.getElementById("Creative Commons by-nc-sa"))
              { b[0].innerHTML = b[0].innerHTML 
                + '<li id="ca-nstab-user">'
                + '<a href="http://fr.wikisource.org/wiki/Wikisource:Creative_Commons_by-nc-sa">'   // /wiki/Wikilivres:Creative Commons by-nc-sa
                + 'Copyright</a></li>';
              }
            else if(document.getElementById("Copyright-ONU"))
              { b[0].innerHTML = b[0].innerHTML 
                + '<li id="ca-nstab-user">'
                + '<a href="http://fr.wikisource.org/wiki/Wikisource:Copyright-ONU">'   // /wiki/Wikilivres:Copyright-ONU
                + 'Copyright</a></li>';
              }
            else if(document.getElementById("Copyright-UNESCO"))
              { b[0].innerHTML = b[0].innerHTML 
                + '<li id="ca-nstab-user">'
                + '<a href="http://fr.wikisource.org/wiki/Wikisource:Copyright-UNESCO">'  // /wiki/Wikilivres:Copyright-UNESCO
                + 'Copyright</a></li>';
              }
            else if(document.getElementById("GFDL"))
              { b[0].innerHTML = b[0].innerHTML 
                + '<li id="ca-nstab-user">'
                + '<a href="http://fr.wikisource.org/wiki/Wikisource:Licence_GFDL">'  // /wiki/Wikilivres:Licence GFDL
                + 'Copyright</a></li>';
              }
          }
        }
}
      
addOnloadHook(ongletCopyright);



/*****************************************************************
*** Edittools: Menu for selecting subsets of special characters
*** 
******************************************************************/

function addCharSubsetMenu() {   // the options should match MediaWiki:Edittools
  var specialchars = document.getElementById('specialchars');

  if (specialchars) {
    var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
    menu += "<option>Wiki</option>";
    menu += "<option>Latin</option>";
    menu += "<option>Grec</option>";
    menu += "<option>Cyrillique</option>";
    menu += "<option>AHD</option>";
    menu += "<option>Allemand</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>Hiéroglyphe</option>";
    menu += "<option>Islandais</option>";
    menu += "<option>Italien</option>";
    menu += "<option>Maltais</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>Vieil anglais</option>";
    menu += "<option>Vietnamien</option>";
    menu += "<option>API</option>";
    menu += "</select>";
    specialchars.innerHTML = menu + specialchars.innerHTML;

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

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

addOnloadHook(addCharSubsetMenu);



/*****************************************************************
*** interwikiExtra
*** by [[user:ThomasV]]
******************************************************************/

function interwikiExtra() 
{
   // iterate over all <span>-elements
   for(var i=0; a = document.getElementsByTagName("span")[i]; i++) {
      // if found a linkInfo span
      if(a.className == "interwiki-info") {  // class created by Template:Interwiki-info
         // iterate over all <li>-elements
         var count=0;
         
         for(var j=0; b = document.getElementsByTagName("li")[j]; j++) {
            if(b.className == "interwiki-" + a.id) {
               b.innerHTML = b.innerHTML + " "+a.title;
               if(a.title == "(vo)") { b.title = "Original Text"; }
            }
         else if(b.className == "interwiki-" + a.id.substr(0,a.id.length-1)) {
               count = count+1;
               if(a.id.charAt(a.id.length-1) == count) {
                  b.innerHTML = b.innerHTML + " "+a.title;
               }
            }
         }
      }
      if(a.className == "OtherVersion") {   // class created by Template:OtherVersion (Modèle:AutreVersion in fr.ws)
         p = a.title.indexOf("|");
         pvers = document.getElementById("p-version");
         if (pvers == null) {
           c = document.getElementById("column-one");
           c.innerHTML = c.innerHTML
             + "<div class=\"portlet\" id=\"p-version\">"
             + "<h5>Other versions</h5>"
             + "<div class=\"pBody\">"
             + "<ul>"
             + "</ul>"
             + "</div>";
             pvers = document.getElementById("p-version");
           }
           e = pvers.getElementsByTagName("ul")[0]; 
           e.innerHTML = e.innerHTML 
             + "<li class=\"\"><a href='" 
             + a.title.substr(0,p)
             + "'>" + a.title.substr(p+1,a.title.length-1)+ "</a> " +"</li>";
      }
   }
}

addOnloadHook(interwikiExtra);



/*****************************************************************
*** footnotes as tooltip
*** from it.wikipedia.org
*** inserted by [[user:-jkb-]]
******************************************************************/

addOnloadHook ( function ()
{
 sups = document.getElementsByTagName("sup");
 for (i=0; i<sups.length; i++)
 {
   note_id = sups[i].childNodes[0].href;
   if (note_id && (note_id.indexOf("#") != -1))
   {
     note_id = document.getElementById(note_id.substr(note_id.indexOf("#")+1));
     if (note_id)
       if (document.all) 
       { 
           sups[i].title = note_id.innerText; 
           sups[i].childNodes[0].title = note_id.innerText; 
       } 
       else 
       { 
           sups[i].title = note_id.textContent; 
      }
   }
 }
})




/* </pre> */