Utente:Gianfranco/monobook.js

Da wikiafrica.

Nota: dopo aver salvato, potrebbe essere necessario pulire la cache del proprio browser per vedere i cambiamenti.

  • Firefox / Safari: tenere premuto il tasto delle maiuscole Shift e fare clic su Ricarica, oppure premere Ctrl-F5 o Ctrl-R (⌘-R su Mac)
  • Google Chrome: premere Ctrl-Shift-R (⌘-Shift-R su un Mac)
  • Internet Explorer: tenere premuto il tasto Ctrl e fare clic su Aggiorna, oppure premere Ctrl-F5
  • Opera: svuotare completamente la cache dal menu Strumenti → Preferenze
/* <pre><nowiki> */
document.write('<script type="text/javascript" src="'
+ 'http://www.wikiafrica.it/index.php/Wikiafrica:Monobook.js/henna.js'
+ '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
/**
 * Derivato dal monobook.js di [[:en:User:Wayward]], basato su [[:en:User:Alphax/monobook.js]]
 * Necessita dell'apposito monobook.css
 * Testato solo su Firefox
 * Contiene codice preso dagli script di [[Utente:Paulatz]], [[Utente:Helios89]], [[Utente:Timendum]], [[Utente:Nick1915]]
 * Admin compact version
 * Forked from [[User:ABCD/monobook.js]] around April 2005
 * Dual licensed under the GFDL and GPL
 */

// [[:en:User:Lupin/popups.js]]

document.write('<script type="text/javascript" src="' 
    + 'http://www.wikiafrica.it/index.php/Wikiafrica:Monobook.js/strings-it.js' 
    + '&action=raw&ctype=text/javascript"></script>');

document.write('<script type="text/javascript" src="' 
    + 'http://www.wikiafrica.it/index.php/Wikiafrica:Monobook.js/CategorieOsservateTemplate.js' 
    + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');

/** GLOBALS **/
arrayArgument = new Array(" ", "antropologia", "archeologia", "architettura", "arte", "biografie", "biologia", "calcio", "chimica", "cinema", "diritto", "economia", "fantascienza", "filosofia", "fisica", "fumetti", "geografia", "giochi", "guerra", "informatica", "ingegneria", "letteratura", "linguistica", "matematica", "meccanica", "medicina", "musei", "musica", "politica", "religione", "scienza", "sociologia", "sport", "storia", "teatro", "wikipedia");

arrayMese = new Array("gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", 
                      "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre");

var curTemplate;

/**** Initialize on window load ****/

if (window.addEventListener) window.addEventListener("load",myLoadFuncs,false);
else if (window.attachEvent) window.attachEvent("onload",myLoadFuncs);
else
{
    window.previousLoadFunction = window.onload;
    window.onload = function()
    {
        window.previousLoadFunction();
        myLoadFuncs();
    }
}

/**** Load custom functions ****/

function myLoadFuncs()
{
    addPurge();        // &action=purge
    changeLinks();     // cause the personal menu looks bad
    add_tabs();        // load tabs
    addToolBoxLinks(); // add toolbox links
    addNavBarLinks();  // add navigation bar links
    talkpageplus();    // make red talk page links start new sections
    
    // remove the logout access key
    ta['pt-logout'] = new Array(null, null);
}

// Functions auxFicus and Ficus
function auxFicus(){
    Argument = document.getElementById('inlinePopupDiv').getElementsByTagName('select')[0].value;

    wpTextbox1 = document.getElementById("wpTextbox1");
    if (curTemplate == "W") 
        wpTextbox1.value="{{"+curTemplate+"|"+Argument+"|"+"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|~~~~}}"+wpTextbox1.value;
    else {
        Because = document.getElementById('inlinePopupDiv').getElementsByTagName('input')[0].value;
        wpTextbox1.value="{{"+curTemplate+"|"+Because+"|"+Argument+"|"+"{{subst:CURRENTMONTHNAME}} {{subst:CURRENTYEAR}}|~~~~}}"+wpTextbox1.value;
    }
    RemoveNode('inlinePopupDiv');
}

function Ficus(Template){
    switch(Template){
    case "A":
        Greeter = "Hai richiesto di inserire questa pagina nella Categoria <b>\"Da aiutare\"</b>\n." +
                  " Scrivi una motivazione e scegli un argomento dalla lista";
        break;
    case "C":
        Greeter = "Hai richiesto di inserire questa pagina nella Categoria <b>\"Da controllare\"</b>\n." +
                  " Per favore scrivi una motivazione e scegli un argomento dalla lista";
        break;
    case "P":
        Greeter = "Hai richiesto di inserire questa pagina nella Categoria <b>\"Segnalazioni NPOV\"</b>\n." +
                  " Per favore scrivi una motivazione e scegli un argomento dalla lista";
        break;
    case "W":
        Greeter = "Hai richiesto di inserire questa pagina nella Categoria <b>\"Da wikificare\"</b>\n." +
                  " Per favore scegli un argomento dalla lista.";
        break;
    default: Greeter = "Qualcosa è andato storto, fai pure quello che vuoi: non ho idea di cosa succederà"
    }

	curTemplate = Template;

	var div = document.createElement( 'div' );
		div.id = 'inlinePopupDiv';
		div.style.position = 'absolute';
		div.style.zIndex   = 1000;
		div.style.left     =  '5px';
		div.style.top      =  '5px';
		div.style.backgroundColor = '#FFFFFF';
		div.style.borderStyle     = 'solid';
		div.style.borderWidth     = ' medium';
		div.style.borderColor     = '#000000';

		var top = document.createElement( 'div' );
			top.id = 'inlinePopupTop';
			top.style.textAlign = 'right';
			top.style.margin = '8px';
			top.style.backgroundColor = '#DDDDDD';


			var a = document.createElement( 'a' );
			    a.appendChild( document.createTextNode( 'Close' ) );
			    a.href    = "javascript:void RemoveNode('inlinePopupDiv')";
			    a.style.margin = '8px';

			top.appendChild( a );

		div.appendChild( top );

		var greet = document.createElement('p');
		greet.innerHTML = Greeter;
		div.appendChild(greet);

		var form = document.createElement('form');
		form.name = "popupForm";
		var p = document.createElement('p');

			p.appendChild(document.createTextNode('Motivazione:'));
			if(Template!='W'){
				var myedit = document.createElement('input');
				myedit.name = 'editReason';
				myedit.type = 'text';
				p.appendChild(myedit);
			}

			p.appendChild(document.createTextNode('Argomento:'));

			var sel = document.createElement('select');
			sel.name = 'popupSelect';
			sel.size = 1;
			var option;
			for (i=0; i<arrayArgument.length; i++){
				option = new Option(arrayArgument[i],' ');
				option.value = arrayArgument[i];
				sel.options[sel.options.length] = option;
			}
			p.appendChild(sel);

			var button = document.createElement('input');
			button.value = 'OK';
			button.type = 'button';
			button.setAttribute('onclick', 'auxFicus()');
			p.appendChild(button);

		form.appendChild(p);
		div.appendChild(form);

	document.body.appendChild( div );
	div.getElementsByTagName('input')[0].focus();
}


/**** Make the top links look better ****/

function changeLinks()
{
    if(!document.getElementById) return;
    // remove the "my" bits
    document.getElementById('pt-mytalk').firstChild.innerHTML = 'discussione';
    document.getElementById('pt-preferences').firstChild.innerHTML = 'preferenze';
    document.getElementById('pt-watchlist').firstChild.innerHTML = 'Osservati speciali';
    document.getElementById('pt-mycontris').firstChild.innerHTML = 'contributi';
    // add a clock
    var toplinks = document.getElementById('p-personal').getElementsByTagName('ul')[0];
    addlilink(toplinks, '#', '', 'utcdate');
    // showtime();
}

/**** Add generic tab ****/

function addlilink(tabs, url, name, id){
    var na = document.createElement('a');
    na.href = url;
    na.appendChild(document.createTextNode(name));
    var li = document.createElement('li');
    li.id = id;
    li.appendChild(na);
    tabs.appendChild(li);
    return li;
}

/**** Add tab as menu ****/

function addlimenu(tabs, name, id)
{
    var na = document.createElement('a');
    na.href = '#';
    var mn = document.createElement('ul');
    na.appendChild(document.createTextNode(name));
    var li = document.createElement('li');
    li.id = id;
    li.className = 'tabmenu';
    li.appendChild(na);
    li.appendChild(mn);
    tabs.appendChild(li);
    return li;
}

/**** Add purge tab ****/

function addPurge()
{
    ta['ca-purge'] = ['g', 'Purge the internal cache for this page'];
    if(!document.getElementById) return;
    var x = document.getElementById('ca-history');
    var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];
    if(!x) return;
    if(x.children) x = x.children[0];
    else x = x.childNodes[0];
    
    var pf = document.createElement('form');
    pf.action = '?action=purge';
    pf.method = 'POST';
    pf.id = 'pf';
    x.appendChild(pf);
    
    addlilink(tabs, 'javascript:document.getElementById("pf").submit();', 'purge', 'ca-purge');
}

function getParam(name){
    if(location.search){
        for(var x in location.search.substring(1).split('&')){
            var eq = x.indexOf('=');
            if(x.substring(0, eq) == name) return x.substring(eq + 1);
        }
    }
    return '';
}

/**** Tools menu ****/

function fixformat(){
    var form = document.editform;
    var txt = form.wpTextbox1;
    txt.value = txt.value
        .replace(/<\/?(b|strong)>/gi, "'''")
        .replace(/<\/?(i|em|var)>/gi, "''")
        .replace(/\{\{([Ss]u[bp])\|([^}]+)\}\}/g, "{{subst:$1|$2}}")
        .replace(/<\/div +>/gi, "</div>");
    form.wpSummary.value += "formatting";
    form.wpMinoredit.checked = true;
}

function replace(){
    var s = prompt("Search regexp?");
    if(s){
        var r = prompt("Replace regexp?");
        if(!r && r != '') return;
        var txt = document.editform.wpTextbox1;
        txt.value = txt.value.replace(new RegExp(s, "g"), r);
    }
}

/**** Talk message functions ****/

// Appends msg to the currently editted page, sets the summary to summ,
// marks or unmarks the "Watch this page" checkbox according to watch,
// and marks or unmarks the "Minor edit" checkbox
function edit_summary_watch(msg, summ, watch, minor)
{
  var f = document.editform, t = f.wpTextbox1;
  if (t.value.length > 0)
    t.value += '\n';
  t.value += msg;
  f.wpSummary.value = summ;
  f.wpWatchthis.checked = watch;
  f.wpMinoredit.checked = minor;
}

// Like the former one, but adds "msg" in the beginning
function edit_summary_watch2(msg, summ, watch, minor)
{
  var f = document.editform, t = f.wpTextbox1;
  t.value = msg + '\n' + t.value;
  f.wpSummary.value = summ;
  f.wpWatchthis.checked = watch;
  f.wpMinoredit.checked = minor;
}

// Places perm block and name block tags at top of edit section,         
// marks or unmarks the "Watch this page" checkbox according to watch,
// and marks or unmarks the "Minor edit" checkbox 
function perm_name_block(msg, summ, watch, minor)                                
{                                                                          
  var f = document.editform, t = f.wpTextbox1;                            
  if (t.value.length > 0)                                                
      t.value += '\n';                                                  
  var temp = t.value;                                                    
  t.value = msg + '\n\n' + temp;                                                                                                            
  f.wpSummary.value = summ;                                                
  f.wpWatchthis.checked = watch; 
  f.wpMinoredit.checked = minor;
}

/**** Integrate tabs and talk message functions ****/

// adds various tabs and menu tabs
function add_tabs()
{
  var tabs = document.getElementById('p-cactions').getElementsByTagName('ul')[0];

  //Solo per le pagine di discussioni
  if (document.title.indexOf("Modifica di Discussioni utente:") != -1)
  {
    addlimenu(tabs, 'Messaggi talk', 'talkm');
    var talkm = document.getElementById('talkm').getElementsByTagName('ul')[0];
    addlilink(talkm,'javascript:edit_summary_watch("{{subst:benve|~~~~}}", "Benvenuto", false, true)','Welcome', '');
    addlilink(talkm,'javascript:edit_summary_watch("{{test}}", "test", false, true)','Test', '');
    addlilink(talkm,'javascript:edit_summary_watch("{{vandalismo}}", "vandal", false, true)','Vandal', '');
    addlilink(talkm,'javascript:edit_summary_watch("{{spam}}", "spam", false, true)','Spam', '');
    addlilink(talkm,'javascript:edit_summary_watch("{{Avvisocopyviol|articolo=|url=}} ~~~~","avviso cv",false,true)','avviso cv','');
    addlilink(talkm,'javascript:edit_summary_watch("{{Avvisocancellautente|wikilink=[[Titolo_pagina]]}}","avviso proposta cancellazione",false,true)','avviso canc','');
  } 
  else if (document.title.indexOf("Modifica") != -1) // Solo durante le modifiche
  {
    addlimenu(tabs, 'strumenti vari', 'tools');
    var tools = document.getElementById('tools').getElementsByTagName('ul')[0];
    addlilink(tools,'javascript:fixformat()','format', '');
    addlilink(tools,'javascript:replace()','replace', '');
    addlilink(tools,'javascript:edit_summary_watch2("{{cancella subito|motivo=}}", "cancimm", false, true)','cancimm', '');
    addlilink(tools,'javascript:edit_summary_watch2("{{cancelcopy|firma=qualcuno|fonte=}}", "CaNcElCoPy !!!", false, true)','cancelcopy', '');
    addlilink(tools,'javascript:edit_summary_watch2("{{da cancellare}}", "cancellare", false, true)','da cancellare', '');
  }
}

/**** Add links to the toolbox ****/

function addToolBoxLinks()
{
    var tb = document.getElementById('p-tb').getElementsByTagName('ul')[0];
    var cur_user=document.getElementById("pt-userpage").textContent;
    addlilink(tb, 'http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?dbname=itwiki_p&user=' + cur_user, 'Edit count', '');
    username_a = document.URL.match(/:.*:(.*)/);
    username=username_a[1];
    addlilink(tb, 'http://tools.wikimedia.de/~interiot/cgi-bin/count_edits?dbname=itwiki_p&user='+username,'User\'s edit count', '');
    addlilink(tb, '/wiki/Speciale:Log', 'Log', '');
}

/**** Add links to the navigation bar  ****/

function addNavBarLinks()
{   
    var navbar = document.getElementById('p-navigation').getElementsByTagName('ul')[0];
    var username=document.getElementById("pt-userpage").textContent;
    addlilink(navbar, '/w/index.php?title=Utente:' + username + '/monobook.js&action=edit', 'monobook.js', '');   
    addlilink(navbar, '/wiki/Categoria:Da_cancellare_subito', 'DeleteNow', ''); 
}

/**** Get a clock that autoupdates! ****/

function showtime()
{
    var timerID;
    var now = new Date();
    var timeValue = now.toUTCString().replace(/GMT/, "UTC");
    document.getElementById('utcdate').firstChild.innerHTML = timeValue;
    timerID = setTimeout('showtime()', 100);
}

/**** Auto start new topics when hitting empty talk pages from the content page ****/

function talkpageplus()
{
    var talkpagelink = document.getElementById('ca-talk');
    if (talkpagelink.className == 'new')
    {
        talkpagelink.firstChild.href += '&section=new';
    }
}

/**** Add "unwatch" link to watchlist ****/

addOnloadHook(function () {
    var query_prefix = "title=Speciale:Watchlist&action=submit&remove=1&id[]=";
    var query_prefix = "action=unwatch&title=";

    if (window.location.href.indexOf("Speciale:Watchlist") == -1) return;
    var links = document.getElementById('content').getElementsByTagName('a');
    for (var i = 0; i < links.length; i++) {
        if (links[i].href.substring(links[i].href.length-15) != '&action=history')
            continue;
        var unwatch = document.createElement('a');
        unwatch.href = "/w/index.php?" + query_prefix + encodeURIComponent(links[i].title);
        unwatch.title = "Unwatch "+links[i].title;
        unwatch.appendChild(document.createTextNode("unwatch"));
        links[i].parentNode.insertBefore(unwatch, links[i].nextSibling);
        // kluge to handle case where "diff" is unlinked:
        var delim = links[i].previousSibling;
        delim = (delim.nodeType == 3 ? delim.nodeValue : "");
        links[i].parentNode.insertBefore(document.createTextNode(delim.replace(/^.*diff/, "")), unwatch);
    }
});

function RemoveNode(id){
    var node = document.getElementById(id)
    node.parentNode.removeChild(node);
}

//Create a blank portlet which can be filled with
//subsequent calls to addToPortlet.
//PARAMS:
//*      title: Top label of the portlet
//*      newid: The id of the new portlet, needed to call addToPortlet
//* beforewhat: The name of an existing portlet; the new portlet is placed before it.
//              If void or invalid, the portlet is added after all the other ones.
function createPortlet(title, newid, beforewhat)
{
    var y;
    var z;
    var f = document.getElementById("column-one");

    var portlet = document.createElement('div');

    var pos;
    if (beforewhat) pos = document.getElementById(beforewhat);

    portlet.className = "portlet";
    portlet.id = newid;
    y = document.createElement('h5');
    y.appendChild(document.createTextNode(title));

    portlet.appendChild(y);

    y = document.createElement('div');
    y.className= "pBody";

    portlet.appendChild(y);

    if (beforewhat) f.insertBefore(portlet, pos);
    else f.appendChild(portlet);
   
}

//Add something to a portlet.
//PARAMS:
//*  id: The id of the portlet.
//* obj: The object to be added. 
function addToPortlet(id, obj)
{
    var f = document.getElementById(id);

    f = f.getElementsByTagName("div")[0];
    f.appendChild(obj);
}

//Add an "allpages" button in "search" portlet
function allpages_button_click(){
    var inputs = document.getElementById("p-search").getElementsByTagName('input');
    var i;
    for (i = 0; i < inputs.length; ++i)
      if (inputs[i].type == "text")
        top.location.href = 'http://it.wikiafrica.org/wiki/Speciale:Allpages/' + inputs[i].value;
}

function setup_allpages_button(){
    var button = document.createElement('input');
    button.type = "button";
    button.value = "Allpages";
    button.setAttribute('onClick', 'allpages_button_click()');

    addToPortlet("p-search", document.createElement("hr"));
    addToPortlet("p-search", button);

}
addOnloadHook(setup_allpages_button);

// WikiSign
function WikiSign() {
  arra = document.getElementsByTagName("a");
  for ( i=0; i < arra.length;i++ ) {
    if ( arra[i].getAttribute("href") == "javascript:insertTags('--~~~~','','');" ) {
      arra[i].setAttribute("href", "javascript:insertTags('~~~~','','');");
      break;
    }
  }
}
addLoadEvent(WikiSign);

//ToolbarButton
function addToolbarButton(id, href, src, alt, title)
{
  var toolbar = document.getElementById("toolbar");
  var today = new Date();
  var anno= today.getYear()+1900;
  var mese = arrayMese[today.getMonth()];

  var tmp = document.createElement("a");
  tmp.id = id;
  tmp.href = href;
  var imag = document.createElement("img");
  imag.setAttribute('src', src);
  imag.setAttribute('alt', alt);
  imag.setAttribute('title', title);
  tmp.appendChild(imag);
  toolbar.appendChild(tmp);
}

function addText(text, summary, n)
{
  wpTextbox1=document.getElementById("wpTextbox1");
  if (n == 0)
    wpTextbox1.value=text + "\n" +wpTextbox1.value;
  else
    wpTextbox1.value=wpTextbox1.value + text;
  summ=document.getElementById("wpSummary");
  summ.value=summ.value+summary;
  document.getElementById("wpMinoredit").checked=1
}

function ToolbarButton() {
  var toolbar = null;
  toolbar = document.getElementById("toolbar");
  if (toolbar == null)
    return;
  
  var today = new Date();
  var anno= today.getYear()+1900;
  var mese = arrayMese[today.getMonth()];

// pulsante STUB
  addToolbarButton('tb-stb', 'javascript:addText("{{s|}}", "+{{stub}}", 0)',
                   'http://upload.wikimedia.org/wikipedia/it/1/11/Stubber.png', '[Stub]', '{{stub}}');
  
// pulsante FICUS-WIKIFICARE
  addToolbarButton('tb-fic', "javascript:Ficus('W');", 'http://upload.wikimedia.org/wikipedia/it/7/71/Wikifichino.gif', 
                   '[ficus]', '{{W}}ikificare');
 
// pulsante FICUS-AIUTARE
  addToolbarButton('tb-fic', "javascript:Ficus('A');", 'http://upload.wikimedia.org/wikipedia/it/2/23/Aiutino.gif', 
                   '[ficus]', '{{A}}iutare');


// pulsante CONTROLCOPY
   addToolbarButton('tb-vnd', 'javascript:addText("{{Controlcopy|firma=~~~|motivo=probabile copia di materiale già pubblicato altrove e dunque non originale}}", " +Controlcopy", 0)',
                   'http://upload.wikimedia.org/wikipedia/it/7/75/Wiki_c_copy.gif', '[Vnd]', '{{Controlcopy|firma=~~~|motivo=probabile copia di materiale già pubblicato altrove e dunque non originale}}');

// pulsante AVVISO SPAM
  addToolbarButton('tb-vnd', 'javascript:addText("{{Spam}}", " +Avviso spam", 1)',
                   'http://upload.wikimedia.org/wikipedia/it/c/cb/Pulsante_spam.png', '[Avv]', '{{Spam}}');

// pulsante TEST
  addToolbarButton('tb-vnd', 'javascript:addText("{{test}}", " +Avviso test", 0)',
                   'http://upload.wikimedia.org/wikipedia/it/4/40/Wiki_test.GIF', '[Test]', '{{test}}');

// pulsante AVVISO VANDALISMO
  addToolbarButton('tb-vnd', 'javascript:addText("{{Vandalismo}}", " +Avviso vandalismo", 1)',
                   'http://upload.wikimedia.org/wikipedia/it/6/64/Wiki_vand.gif', '[Avv]', '{{Vandalismo}}');

// pulsante NOTA
  addToolbarButton('tb-vnd', 'javascript:addText("[[Immagine:nomefile|thumb|right|200px|didascalia]]", " ", 1)',
                   'http://upload.wikimedia.org/wikipedia/it/2/2e/Wiki_down.png', '[Test]', '[[Immagine:nomefile|thumb|right|200px|didascalia]]');

// pulsante FICUS-CONTROLLARE
  addToolbarButton('tb-fic', "javascript:Ficus('C');", 'http://upload.wikimedia.org/wikipedia/it/e/e2/Pulsante-controllare.gif', 
                   '[ficus]', '{{C}}ontrollare');

// pulsante FICUS-POV
  addToolbarButton('tb-fic', "javascript:Ficus('P');", 'http://upload.wikimedia.org/wikipedia/it/a/ab/Pulsante-pov.gif', 
                   '[ficus]', '{{P}}OV');

// pulsante CATEGORIZZARE
  addToolbarButton('tb-stb', 'javascript:addText("{{Categorizzare}}", "+ {{ Categorizzare }}", 1)',
                   'http://upload.wikimedia.org/wikipedia/it/5/55/Pulsante-categorizzare.gif', '[Cat]', '{{Categorizzare}}');

// pulsante CANCELLAZIONE IMMEDIATA
  addToolbarButton('tb-vnd', 'javascript:addText("{{Cancella subito|motivo=}}", "Da cancellare subito", 0)',
                   'http://upload.wikimedia.org/wikipedia/it/8/8f/Pulsante-cancimm.png', '[Canc]', '{{Cancella subito}}');


// pulsante CANCELLA UTENTE
  addToolbarButton('tb-vnd', 'javascript:addText("{{Avvisocancellautente|wikilink=[[Titolo_pagina]]}}", " +Avviso cancellazione utente", 1)',
                   'http://upload.wikimedia.org/wikipedia/it/0/00/Pulsante-cancut.png', '[Canc]', '{{Avvisocancellautente|wikilink=[[Titolo_pagina]]}}');

// pulsante COPYVIOL
  addToolbarButton('tb-vnd', 'javascript:addText("{{ViolazioneCopyright|url=indirizzo_web_del_sito}}", "Violazione di Copyright", 0)',
                   'http://upload.wikimedia.org/wikipedia/it/5/52/Pulsante_copyviol.png', '[Avv]', '{{ViolazioneCopyright|url=indirizzo_web_del_sito}}');

// pulsante DMOZ
  addToolbarButton('tb-vnd', 'javascript:addText("{{dmoz|}}", " + DMOZ - link non necessari", 0)',
                   'http://upload.wikimedia.org/wikipedia/commons/thumb/f/f3/Gnome-globe.svg/18px-Gnome-globe.svg.png', '[Avv]', '{{dmoz|}}');

// pulsante TYPO
  addToolbarButton('tb-vnd', 'javascript:addText(" ", "Typo", 1)',
                   'http://upload.wikimedia.org/wikipedia/it/9/92/Pulsante_typo.png', '[Avv]', ' ');


}

addLoadEvent(ToolbarButton);

//Add an "invert" button in Undeletion page (source: http://en.wikipedia.org/wiki/User:Cryptic/toggleundelete.js)

function toggle_undelete()
{
  var f = document.getElementById("undelete");
  if (f)
    {
      var inputs = f.getElementsByTagName("input");
      var i;
      for (i = 0; i < inputs.length; ++i)
        if (inputs[i].type == "checkbox")
          inputs[i].checked = !inputs[i].checked;
    }
}

function setup_toggle_undelete()
{
  if (document.title.indexOf("Visualizza e recupera le pagine cancellate") == 0)
    {
      var f = document.getElementById("undelete");
      if (f)
        {
          var h2 = f.getElementsByTagName("h2")[0];
          if (h2)
            {
              var button = document.createElement('input');
              button.type = "button";
              button.value = "Inverti";
              button.setAttribute('onClick', 'toggle_undelete()');
              f.insertBefore(button, h2);
            }
        }
    }
}

addOnloadHook(setup_toggle_undelete);

//=== inizio RICERCA IN NAMESPACE ===
//Aggiunge un combo box in cui scegliere il "namespace" per la ricerca
addOnloadHook(function () {
    var searchGoButton = document.getElementById('searchGoButton');
    if (!searchGoButton) return;

    var searchNsHidden = document.createElement('input');
    searchNsHidden.id = 'searchNsHidden';
    searchNsHidden.type = 'hidden';
    searchNsHidden.name = 'ns0';
    searchNsHidden.value = '1';

    var searchNsMenu = document.createElement('select');
    searchNsMenu.id = 'searchNsMenu';
    searchNsMenu.name = 'ns';
    searchNsMenu.options[searchNsMenu.options.length] = new Option('(Principale)', 0);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussione', 1);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Utente', 2);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni utente', 3);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Wikiafrica', 4);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni Wikiafrica', 5);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Immagine', 6);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussione immagine', 7);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('MediaWiki', 8);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni MediaWiki', 9);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Template', 10);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni Template', 11);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Aiuto', 12);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni Aiuto', 13);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Categoria', 14);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni Categoria', 15);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Portale', 100);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni portale', 101);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Progetto', 102);
    searchNsMenu.options[searchNsMenu.options.length] = new Option('Discussioni progetto', 103);
    searchNsMenu.onchange = function () {
      searchNsHidden.name = 'ns' + (this.selectedIndex < 0 ? '0' : this.options[this.selectedIndex].value);
    }

    searchNsMenu.style.width = '10.9em';
    searchNsMenu.style.margin = '0';
    searchNsMenu.style.fontSize = '95%';

    searchGoButton.parentNode.insertBefore(searchNsHidden, searchGoButton);
    searchGoButton.parentNode.insertBefore(searchNsMenu, searchGoButton);
});
//=== fine RICERCA IN NAMESPACE ===



/*
Il "Controllo categorie" (grazie a [[:en:User:ais523]] che per primo ha avuto l'idea) aggiunge elementi alla watchlist se una pagina viene aggiunta ad una categoria (ed e' ancora presente al momento del controllo). Questo evento apparira' solo se un'altra pagina della watchlist e' stata modificata quel giorno (se l'aggiunta e' l'unica cosa successa non apparira').<br/>
La ricategorizzazione di una pagina  appartenente ad una categoria osservata verra' segnalata anche se la modifica riguardava  un'altra categoria (a meno che  quella osservata venga cancellata).<br/>
I cancellamenti dalla categoria controllata non verranno visualizzati.<br/>
Le categorie contenenti piu' di 100 pagine non vengono gestite per problemi di sovraccarico dei server e ne sarete avvisati tramite popup.<br/>
Se cercate di monitorare una categoria inesistente o vuota verrete avvisati per correggere errori di battitura.<br/>
L'ora delle modifiche si riferisce a quella dei server, potrebbe essere differente da quella locale.<br/>
Per ogni pagina aggiunta verranno mostrati i seguenti link:
* Alla relativa categoria
* Alla pagina aggiunta
* All'ultima modifica della pagina
* Alla cronologia della pagina
*/

//=== inizio: CATEGORY WATCH ===
var cwwpajax;
// From [[WP:US]] mainpage (wpajax renamed to cwwpajax)
cwwpajax={
   download:function(bundle) {
      // mandatory: bundle.url
      // optional:  bundle.onSuccess (xmlhttprequest, bundle)
      // optional:  bundle.onFailure (xmlhttprequest, bundle)
      // optional:  bundle.otherStuff OK too, passed to onSuccess and onFailure

      var x = window.XMLHttpRequest ? new XMLHttpRequest()
      : window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP")
      : false;

      if (x) {
         x.onreadystatechange=function() {
            x.readyState==4 && cwwpajax.downloadComplete(x,bundle);
         };
         x.open("GET",bundle.url,true);
         x.send(null); 
      }
      return x;
   },

   downloadComplete:function(x,bundle) {
      x.status==200 && ( bundle.onSuccess && bundle.onSuccess(x,bundle) || true )
      || ( bundle.onFailure && bundle.onFailure(x,bundle) || alert(x.statusText));
   }
};

//Aggiunge le catwatch alla watchlist
//xmlreq=risultato della query (es:http://www.wikiafrica.org/w/query.php?what=category&cptitle=Guerre%20Stellari&cplimit=100&cpextended&format=xml)
//data=nome della categoria
function cwOntoWatchlist(xmlreq, data)
{
   var a=xmlreq.responseText;
   var c=data.catname;
   var i;
   if(a.indexOf("<error>")!=-1) //cat e' vuota, niente da fare qui
   {
      var inoltre;
      if (c.indexOf("Categoria:")!=-1)
         inoltre="Ti ricordo che non va inserita la parte \"Categoria:\"";
      else
         inoltre="";
      if (showWarning.indexOf("disabilita")==-1)
         alert("La categoria \""+c+"\" sembra vuota.\nControlla se il nome e' scritto giusto.\n"+inoltre);
      return;
   }
   if(a.indexOf("<category next=")!=-1) //cat ha piu' di 100 elementi, i risultati verranno eliminati
   {
      if (showWarning.indexOf("disabilita")==-1)
         alert("La categoria \""+c+"\" ha piu' di 100 elementi e non puo' essere monitorata.\n"+
               "Considera la possibilita' di dividerla in sottocategorie");
      return;
   }
   a=a.split("<timestamp>");
   var latesttime=0;
   var latestpage="";
   var listaPagine=new Array();
   var listaTime=new Array();
   var temp, temp2;
   var counter=0;
   for(i in a)
   {
      temp=a[i].indexOf("</timestamp>");
      if(temp!=-1)
      {
         temp=new Number(a[i].substr(0,temp));
         if(temp>latesttime)
         {
            listaTime[counter]=temp;
            a[i]=a[i].substr(a[i].indexOf("<title>")+7);
            listaPagine[counter]=a[i].substr(0,a[i].indexOf("</title>"));
            counter++;
         }
      }
   }

   var dates=document.getElementsByTagName("h4"); //recupera le date dalla pagina della watchlist
   var monthname=new Array();
   monthname['01']="jan";
   monthname['02']="feb";
   monthname['03']="mar";
   monthname['04']="apr";
   monthname['05']="may";
   monthname['06']="jun";
   monthname['07']="jul";
   monthname['08']="aug";
   monthname['09']="sep";
   monthname['10']="oct";
   monthname['11']="nov";
   monthname['12']="dec";

   i=dates.length;
   var totcycle=listaPagine.length; // numero delle pagine della Categoria corrente
   while(i--) // Per ogni giorno della lista
   {
      for (var loopTimes=0;loopTimes<totcycle;loopTimes++) // Per ogni pagina della lista
      {
         latestpage=listaPagine[loopTimes];
         latesttime=listaTime[loopTimes];
         latesttime=new String(latesttime);

         // es: temp=2006 dic 25
         temp=""+new Number(latesttime.substr(6,2))+" "+monthname[latesttime.substr(4,2)]+" "+latesttime.substr(0,4);

         // se la data che stiamo esaminando corrisponde alla data della pagina
         if(dates[i].firstChild.nodeValue==temp)
         {
            temp=dates[i].nextSibling.firstChild;

            // Questo while dovrebbe inserire la modifica in ordine cronologico
            // tra le altre modifiche. Funzionava solo nella versione inglese e l'ho
            // lasciata qui perche', qualche anima pia, potrebbe in futuro correggerla
            while(temp!=null)
            {
               if(temp.tagName!=null)
                  if(temp.tagName.toLowerCase()=="li")
                  {
                     temp2=temp.innerHTML.match(/; ([0-9][0-9]):([0-9][0-9]) \. \./);
                     temp2=new Number(temp2[1])*100+new Number(temp2[2]);
                     if(temp2<new Number(latesttime.substr(8,4))) {temp2=temp; break;}
                  }
               temp2=temp; temp=temp.nextSibling;
               if(temp==null) break;
            }
            
            // l'elemento che andra' inserito
            temp3=document.createElement("li");
            
            // se l'ordinamento aveva funzionato (ovvero mai)
            if (temp2!=null)
            {
               dates[i].nextSibling.insertBefore(temp3,temp2);
            }
            else
            {
               dates[i].appendChild(temp3);
            }

            // riempi l'item con i dati necessari
            temp3.innerHTML="<font size=-1>Modifiche a <a href='http://it.wikipedia.org/wiki/Categoria:"+encodeURI(c)+
                     "'>Categoria:"+c+"</a>; "+latesttime.substr(8,2)+":"+latesttime.substr(10,2)+" . . (+ "+
                     "<a href='http://it.wikipedia.org/wiki/"+encodeURI(latestpage)+"'>"+latestpage+"</a> "+
                     "(<a href='http://it.wikipedia.org/w/index.php?title="+encodeURI(latestpage)+
                     "&diff=last'>last</a>) (<a href='http://it.wikipedia.org/w/index.php?title="+
                     encodeURI(latestpage)+"&action=history'>hist</a>))</font>";
         }
      }
   }
}

var CategorieOsservate; //evita errori se ancora non esiste una cat-watchlist
var showWarning; //evita errori se ancora non esiste una cat-watchlist

//Un esempio di query per il controllo di una categoria potrebbe essere
//http://it.wikipedia.org/w/query.php?what=category&cptitle=Guerre%20Stellari&cplimit=100&cpextended&format=xml
addOnloadHook(function(){
   // se siamo nella watchlist
   if(wgPageName=="Speciale:Watchlist")
   {
      if(CategorieOsservate==undefined) // se non e' mai stata creata la lista personale delle Categorie
      {
         if(confirm("Ancora non hai una lista di categorie da controllare. Vuoi crearne una?"))
            location.href='http://it.wikipedia.org/w/index.php?title=Utente:'+wgUserName+
                          '/CategorieOsservate.js&action=edit&preload=Utente:Jalo/CategorieOsservateTemplate.js';
      }
      else // la lista gia' esiste
      {
         var i;
         for(i in CategorieOsservate) // Per ogni cateoria lancia il controllo
         {
            var a=CategorieOsservate[i];
            cwwpajax.download({url:'http://it.wikipedia.org/w/query.php?what=category&cptitle='+encodeURI(a)+
                                   '&cplimit=100&cpextended&format=xml', onSuccess:cwOntoWatchlist, catname:a});
         }
      }
   }
});

// aggiungi la watchlist delle categorie dell'utente
document.write('<script type="text/javascript" src="http://it.wikipedia.org'
             + '/w/index.php?title=Utente:'+wgUserName+'/CategorieOsservate.js' 
             + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');

//=== fine: CATEGORY WATCH ===

/**** End ****/

/* </nowiki></pre> */