User:Alex brollo/Library.js

From Wikimedia Commons, the free media repository
Jump to navigation Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
$(document).ready(function () {
	var  wgCanonicalNamespace = mw.config.get('wgCanonicalNamespace');
	var wgAction = mw.config.get('wgAction');
    if (wgCanonicalNamespace == "Creator" || wgCanonicalNamespace == "File") {

        $('<li><a href="javascript:show2(1)" title="metadati it:w">metadati it:w</a></li>').appendTo($("#p-tb ul"));
        $('<li><a href="javascript:show2(2)" title="metadati en:w">metadati en:w</a></li>').appendTo($("#p-tb ul"));
        if (wgAction == "edit" || wgAction == "submit") {
             $('<li><a href="javascript:loadActiveTab()" title="Active_table">Active table</a></li>').appendTo($("#p-tb ul"));
             }
        }
});

function show2(lang) {
    // if ((wgAction == "edit" || wgAction == "submit") && $("#creatorMakeLink").length==0 ) $('<li><a href="javascript:creatorMake()" title="creatorMake" id="creatorMakeLink" >creatorMake</a></li>').appendTo($("#p-tb ul"));
    if (lang == 1) {
        if (wgCanonicalNamespace == "File") {
            getPage(wgPageName.replace("File:", "Indice:"), "it.wikisource.org");
            if ($("#bookMakeLink").length==0) $('<li><a href="javascript:bookMake()" title="bookMake" id="bookMakeLink" >bookMake</a></li>').appendTo($("#p-tb ul"));
        }
        if (wgCanonicalNamespace == "Creator") {
            getPage(wgPageName.replace("Creator:", ""), "it.wikipedia.org");
            if ($("#creatorMakeLink").length==0) $('<li><a href="javascript:creatorMake()" title="creatorMake" id="creatorMakeLink" >creatorMake</a></li>').appendTo($("#p-tb ul"));
        }
    }
    if (lang == 2) {
        if (wgCanonicalNamespace == "File") {
            getPage(wgPageName.replace("File:", "Index:"), "en.wikisource.org");
        }
        if (wgCanonicalNamespace == "Creator") {
            getPage(wgPageName.replace("Creator:", ""), "en.wikipedia.org");
        }
    }
}


/* conta il numero di occorrenze di stringa dentro testo*/
function count(testo, stringa) {
    n = 0;
    while (testo.indexOf(stringa) > -1) {
        n = n + 1;
        testo = testo.replace(stringa, "");
    }
    return n;
}
/* 
Ricerca nella stringa testo la sottostringa che inizia con idi e termina con idf.  (idi e idf sono stringhe).
 
Se dc ("delimitatori compresi") è 1, restituisce la sottostringa completa di idi e idf; se dc è 0, restituisce la stringa
senza delimitatori; parametro opzionale con default 0.
Per risolvere correttamente il caso di ricerca di tag annidati, come i template, in cui l'identificatore iniziale ha una 
parte non aspecifica, e una parte specifica, può essere passato un quinto parametro, che definisce  la parte aspecifica dell'identificatore iniziale.
 
Esempio: volendo ottenere l'intero contenuto del template {{centrato|{{sc|Testo di prova}}|l=18em}}, il risultato corretto
NON proviene dalla ricerca find_stringa("{{centrato|","}}",1), perchè sarebbe {{centrato|{{sc|Testo di prova}}. 
Impostando invece find_stringa("{{centrato|","}}",1,"{{"), visto che "{{" è la parte aspecifica del primo delimitatore,
si ottiene il risultato corretto, a prescindere dal numero dei template annidati. 
 
Se la sottostringa non viene trovata, la funzione restituisce una stringa vuota "". 
 
*/
function find_stringa(testo, idi, idf, dc, x) {
    idip = testo.indexOf(idi);
    idfp = testo.indexOf(idf, idip + idi.length) + idf.length;
    if (idip > -1 && idfp > -1) {
        if (x != "") {
            while (count(testo.slice(idip, idfp), x) > count(testo.slice(idip, idfp), idf)) {
                idfp = testo.indexOf(idf, idfp) + idf.length;
            }
        }
        if (dc == 0) {
            vvalore = testo.slice(idip + idi.length, idfp - idf.length);
        } else {
            vvalore = testo.slice(idip, idfp);
        }
    } else {
        vvalore = "";
    }
    return vvalore;
}

// delim true: con delimitatori, false: senza delimitatori
function produciLista(testo, s1, s2, delim, x) {
    lista = new Array();
    while (find_stringa(testo, s1, s2, true, x) > "") {
        elemento = find_stringa(testo, s1, s2, true, x);
        testo = testo.replace(elemento, "");
        if (delim) {
            lista.push(elemento);
        } else {
            lista.push(elemento.slice(s1.length, - s2.length));
        }
    }
    return lista;
}

function leggiBox(area) {
    if (area == undefined) {
        if (wgCanonicalNamespace == "Pagina") area = 1;
        else area = 0;
    }
    return $('textarea')[area].value;
}

function scriviBox(testo, area, ss, se) {
    if (area == undefined || area == "") {
        if (wgCanonicalNamespace == "Pagina") area = 1;
        else area = 0;
    }
    $('textarea')[area].value = testo;
    if (ss != undefined && se != undefined) {
        $('textarea')[area].selectionStart = ss;
        $('textarea')[area].selectionEnd = se;
    }
}

function selection(area) {
    if (area == undefined) {
        if (wgCanonicalNamespace == "Pagina") area = 1;
        else area = 0;
    }
    txtarea = $('textarea')[area];
    return [$(txtarea).val().substring(0, txtarea.selectionStart),
    $(txtarea).val().substring(txtarea.selectionStart, txtarea.selectionEnd),
    $(txtarea).val().substring(txtarea.selectionEnd)];
}

$("#content").append($('<div id="newtattoo" align="right" style="position:fixed;bottom:0; right:0; background-color:white; border: 1px solid; border-color:#F0F0F0; z-index:1500;"><span>&nbsp;</span></dir>'));


// rimuove il box di visualizzazione
function delShow() {
    $(".showCode").remove();
}

//apre un box fixed in cui visualizzare il wikicode e ci aggiunge una barra e il wikicode
function show(option) {
    if (option == undefined) option = 0;

    var commandBar = '<div style="white-space:pre-wrap; width:100%; height:17px; background-color:#4D8AC0;"><img src="//upload.wikimedia.org/wikipedia/commons/f/f8/Tooltip-CloseButton.png" onclick="delShow()" style="align:right;cursor:pointer;"/></div>\n';
    var box = '<div ondblclick="delShow()" style="white-space:pre-wrap; background-color:#FCFCFC; font-family:Courier; font-size:0.7pc; position:fixed; width:45%; height:70%; top:20px; right:20px; z-index:999; overflow:auto; border:1px solid #bbb;" class="showCode">';
    box += commandBar;
    if (option == 0) {
        var wt = acchiappaWikicode(wgPageName);
        var headerDiv = '<div style="white-space:pre-wrap; width:97%; padding:5px;  background-color:#D9FFFF;">' + wt[0] + '</div>\n';
        var bodyDiv = '<div style="white-space:pre-wrap; width:97%; padding:5px; background-color:#FCFCFC;">' + wt[1] + '</div>\n';
        var footerDiv = '<div style="white-space:pre-wrap; width:97%; padding:5px; background-color:#CCFFFF;">' + wt[2] + ' </div>\n';
        if (wt[0] != "") box += headerDiv;
        box += bodyDiv;
        if (wt[0] != "") box += footerDiv;
    }
    if (option == 1) {
        divData = parseMetadata();
        box += divData[0];
    }
    if (option == 2) {
        // la funzione viene chiamata dentro un callback di getPage e dispone di una variabile lista
        // che contiene un oggetto jQuery lista
        box += $(lista).html();
    }
    box += '</div>';

    $(box).appendTo($("body"));
    mw.loader.using(["jquery.ui"], function () { //'jquery.ui', niente draggabilità per ora
        $(".showCode").resizable(); // .draggable() occorre applicare un handle, altrimenti col cavolo che si seleziona...
    });

}

function acchiappaWikicode(pagina, progetto) {
    if (progetto==undefined) {progetto="";} else {progetto="//"+progetto;}
    var wikitext =$.ajax({
    url:progetto+"/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&titles="+pagina,
    async: false
    }).responseText;  
    var contenuto=find_stringa(wikitext,'<rev contentformat="text/x-wiki" xml:space="preserve">',"</rev>",0,'<rev contentformat="text/x-wiki" xml:space="preserve">'); 
    var l=produciLista(contenuto,"{{","}}",1,"{{");
 
    for (var i=0;i<l.length;i+=1) {contenuto=contenuto.replace(l[i],'<span style="color: red;">'+l[i]+'</span>');}
    contenuto=contenuto
         .replace(/\&lt;/g , '<span style="color:blue">&lt;')
         .replace(/\&gt;/g , '&gt;</span>')
         .replace(/\n/g,"<br />");
    if (wgCanonicalNamespace=="Pagina") {
    var noincludeList=produciLista(contenuto,'<span style="color:blue">&lt;noinclude&gt;</span>','<span style="color:blue">&lt;/noinclude&gt;</span>',1);
    var header=noincludeList[0];
    var footer=noincludeList[noincludeList.length -1];
    var body=find_stringa(contenuto,header,footer,0);
    contenuto=[header,body,footer];
     }
    else {contenuto=["",contenuto,""];}
    return contenuto;
}

function incapsula(pre, post) {
    t = selection();
    t[0] = t[0] + pre.replace(/&quote;/g, '"');
    t[2] = post.replace(/&quote;/g, '"') + t[2];
    scriviBox(t.join(""));
}


/* *********************  funzioni per parseTemplate ***********************/
function cod(testo) {
    var l = produciLista(testo, "{{", "}}", 1, "{{");
    for (var i = 0; i < l.length; i += 1) {
        testo = testo.replace(l[i], l[i].replace(/\|/g, "__!__"));
    }
    l = produciLista(testo, "[[", "]]", 1, "[[");
    for (var i = 0; i < l.length; i += 1) {
        testo = testo.replace(l[i], l[i].replace(/\|/g, "__!__"));
    }
    return testo;
}

function parseTemplate(template, testo) {
    if (testo == undefined) testo = leggiBox();
	var cap=template.substring(0,1).toLocaleUpperCase()+template.substring(1);
      testo=testo.replace("{{"+cap,"{{"+template);
    var t = find_stringa(testo, "{{" + template, "}}", 1, "{{");
    var l = [] // lista delle keys
    var t = "0=" + t.substring(2, t.length - 2) // nome del template in parametro "0"
    l.push["0"]
    var ts = {}
    var n = 1;
    t = cod(t);
    t = t.split("|");

    // element for element
    for (i = 0; i < t.length; i += 1) {
        // case param is positional
        if (t[i].indexOf("=") == -1) {
            t[i] = n + "=" + t[i];
            n = n + 1;
        }
        var els = [];
        els[0] = t[i].substring(0, t[i].indexOf("=")).trim();
        els[1] = t[i].substring(t[i].indexOf("=") + 1).trim();
        if (els[1][els[1].length - 1] == "\n") els[1] = els[1].substring(0, els[1].length - 1);
        if (els[1].indexOf("<ref>") != -1) {
            var nota = find_stringa(els[1], "<ref>", "</ref>", 1);
            els[1] = els[1].replace(nota, "");
        }
        ts[els[0]] = decod(els[1]);
        l.push(els[0]);
    }

    return [ts, l];
}

function decod(testo) {
    testo = testo.replace(/__!__/g, "|");
    return testo;
}

function templateObj(nomeTemplate) {
    data = parseTemplate(nomeTemplate);
    this.keys = data[1];
    this.dict = data[0];
}
function rewriteTemplate(x) {
	var testo = "";
	$.each(x[1], function (indice, valore) {
		if (valore != "0") testo += " | " + valore + " = " + x[0][valore] + "\n";
	});
	testo = "{{" + x[0]["0"] + "\n" + testo + "}}\n";
	testo = testo.replace(/\n\s\|\s\d*\s=\s/g, "\n | ");
	return testo
}

/************************ funzioni per getPage() ***************************/
oggetto = "";
datiAjax = "";
nomiMesi={"Jan":"01", "Feb":"02", "Mar":"03", "Apr":"04", "May":"05", "Jun":"06", "Jul":"07", "Aug":"08", "Sep":"09", "Oct":"10", "Nov":"11", "Dec":"12","January":"01", "February":"02", "March":"03", "April":"04", "May":"05", "June":"06", "July":"07", "August":"08", "September":"09", "October":"10", "November":"11", "December":"12"};

function convDate(testo) {
var dm=testo.split(" ");
if ((/\d/).test(dm[0]) && (/\d/).test(dm[1])==false && (/\d/).test(dm[2]) && nomiMesi[dm[1]]!=undefined)  dm=dm[2]+"-"+nomiMesi[dm[1]]+"-"+((dm[0]<10) ? "0"+dm[0] :dm[0]);
if ((/\d\d\d\d-\d\d-\d\d/).test(dm)) return dm; return undefined;}

function getPage(title, site) {
    if ($(".ourDiv").length==0) 
        $("body").append($('<div class="ourDiv" style="display:none;"></div>'));
    $.ajax({
        url: 'https://' + site + '/w/api.php',
        async: true,
        data: {
            format: 'json',
            action: 'query',
            titles: title,
            prop: 'revisions',
            rvlimit: '1',
            rvprop: 'content'
        },
        dataType: 'jsonp' // this is the important one!
    }).done(function (data) {
        datiAjax = data;

        lista = "<ul><li>La pagina non esiste</li></ul>";
        oggetto = wikitext(data);
        if (oggetto != "-1") lista = makeLista();
        oggetto["source"] = site;
        show(2);
        
    });
    //while ($("#spinnerIcon").css("display")=="inline"){continue;}
    //return oggetto;
}

function wikitext(oggetto) {
    l = [];
    for (i in oggetto.query.pages) {
        l.push(i);
    }
    if (l[0] == "-1") return "-1";
    testo = oggetto.query.pages[l[0]].revisions[0]["*"];
    testo = testo.replace("{{Information", "{{information")
        .replace("{{Book", "{{book")
        .replace("{{Creator", "{{creator")
        .replace("{{Bio", "{{bio")
        .replace(":MediaWiki:Proofreadpage_index_template", "MediaWiki_Proofreadpage_index_template")
        .replace("{{Infobox", "{{infobox");
    dati = {
        information: parseTemplate("information", testo),
        book: parseTemplate("book", testo),
        creator: parseTemplate("creator", testo),
        bio: parseTemplate("bio", testo),
        MediaWiki_Proofreadpage_index_template: parseTemplate("MediaWiki_Proofreadpage_index_template", testo),
        infobox: parseTemplate("infobox", testo)
    };
    return dati;
}

function makeLista(data) {
    lista = $("<ul></ul>");
    //{{:MediaWiki:Proofreadpage_index_template
    $.each(oggetto["MediaWiki_Proofreadpage_index_template"][1], function (index, key) {
        value = oggetto["MediaWiki_Proofreadpage_index_template"][0][key];
        keyDisp = key;
        if (key == "0") {
            keyDisp = "Nome template:";
        }
        if (value != "") $("<li><b>" + keyDisp + ": </b>" + value + "</li>\n").appendTo(lista);
    });
    $.each(oggetto["bio"][1], function (index, key) {
        value = oggetto["bio"][0][key];
        keyDisp = key;
        if (key == "0") {
            keyDisp = "Nome template:";
        }
        if (value != "") $("<li><b>" + keyDisp + ": </b>" + value + "</li>\n").appendTo(lista);
    });
    $.each(oggetto["creator"][1], function (index, key) {
        value = oggetto["creator"][0][key];
        keyDisp = key;
        if (key == "0") {
            keyDisp = "Nome template:";
        }
        if (value != "") $("<li><b>" + keyDisp + ": </b>" + value + "</li>\n").appendTo(lista);
    });
    $.each(oggetto["book"][1], function (index, key) {
        value = oggetto["book"][0][key];
        keyDisp = key;
        if (key == "0") {
            keyDisp = "Nome template:";
        }
        if (value != "") $("<li><b>" + keyDisp + ": </b>" + value + "</li>\n").appendTo(lista);
    });
    $.each(oggetto["infobox"][1], function (index, key) {
        value = oggetto["infobox"][0][key];
        keyDisp = key;
        if (key == "0") {
            keyDisp = "Nome template:";
        }
        if (value != "") $("<li><b>" + keyDisp + ": </b>" + value + "</li>\n").appendTo(lista);
    });
    $.each(oggetto["information"][1], function (index, key) {
        value = oggetto["information"][0][key];
        keyDisp = key;
        if (key == "0") {
            keyDisp = "Nome template";
        }
        if (value != "") $("<li><b>" + keyDisp + ": </b>" + value + "</li>\n").appendTo(lista);
    });
    return lista;
}

function parseMetadata(divdata) {
    var cap=template.substring(0,1).toLocaleUpperCase()+template.substring(1);
    testo=testo.replace(cap,template);

    if (divdata == undefined || divdata == "") {
        if (wgCanonicalNamespace == "File") fileUrl = wgPageName;
        if (wgCanonicalNamespace == "Indice") fileUrl = wgPageName.replace("Indice:", "File:");
        if (wgCanonicalNamespace == "Pagina") fileUrl = wgPageName.substring(0, wgPageName.lastIndexOf("/")).replace("Pagina:", "File:");
        if (wgCanonicalNamespace == "" && wgPageName.indexOf("/") == -1) {
            fileUrl = $('a[title^="Indice:"]').attr("title").replace("Indice:", "File:");
        }
        if (wgCanonicalNamespace == "" && wgPageName.indexOf("/") > -1) {
            fileUrl = $('a[title^="Pagina:"]').attr("title").replace("Pagina:", "File:");
            fileUrl = fileUrl.substring(0, fileUrl.lastIndexOf("/"));
        }

        html = $.ajax({
            url: "http://" + location.hostname + "/wiki/" + fileUrl,
            async: false
        }).responseText;
        divdata = $(".hproduct", html).html();
    }
    var tabellaDati = [];
    /* 
   var tr=$("tr",divdata);
   for (i=0; i<tr.length; i+=1) {     
      tabellaDati.push( [$("td",tr[i]).eq(0).attr("id").replace("fileinfotpl_",""),
                           $("td",tr[i]).eq(0).text(),
                           $("td",tr[i]).eq(1).html()]);
  } */
    return [divdata, tabellaDati];

}

function creatorMake() {
    var autore = wgTitle.replace("Creator:", "");
    var template = "{{Creator\n | Name              = {{LangSwitch    \n    | en=[[:en:NAME SURNAME|NAME SURNAME]]\n    | it=[[:it:NAME SURNAME|NAME SURNAME]]\n}} \n | Alternative names = \n | Nationality       = NAZIONALITA\n | Gender            = SESSO\n | Occupation        = OCCUPAZIONE\n | Birthdate         = DATA NASCITA\n | Birthloc          = LUOGO NASCITA\n | Deathdate         = DATA MORTE\n | Deathloc          = LUOGO MORTE\n | Workperiod        = {{other date|century|SECOLO}}\n | Workloc           = \n | Image             = IMMAGINE\n | Sortkey           = SURNAME, NAME \n | Homecat           = PAGE NAME\n | Wikisource        = s:it:Autore:NAME SURNAME\n | Option            = {{{1|}}} <!-- Do not modify -->\n | Linkback          = FULL PAGE NAME \n | Authority         = <!-- {{Authority control|VIAF=|LCCN=|ULAN=|PND=|bare=1}} -->\n}}\n\n<!--\n{{Creator:NAME SURNAME}}\n\n{{DEFAULTSORT:SURNAME, NAME}}\n[[Category:People by name]]\n[[Category:ANNONASCITA births]]\n[[Category:ANNOMORTE deaths]]\n[[Category:Writers from Italy]]\n-->\n";
    // dati da it.wikipedia
    var naz={"italiano":"it",
         "italiana":"it",
         "inglese":"en",
         "francese":"fr",
         "tedesco":"de","tedesca":"de",
         "greco":"el","greca":"el","latino":"la"};
    
    if (oggetto["source"] == "it.wikipedia.org") {
        var datiPedia = oggetto.bio[0];
        var dataNascita = datiPedia["AnnoNascita"];
        if (datiPedia["GiornoMeseNascita"]) dataNascita = m2m(datiPedia["GiornoMeseNascita"] + " " + datiPedia["AnnoNascita"]);
        var dataMorte = datiPedia["AnnoMorte"];
        if (datiPedia["GiornoMeseMorte"]) dataMorte = m2m(datiPedia["GiornoMeseMorte"] + " " + datiPedia["AnnoMorte"]);
        var occupazione = datiPedia["Attività"];
        var nazionalita= (datiPedia["Nazionalità"] in naz) ? naz[datiPedia["Nazionalità"]] : datiPedia["Nazionalità"]; // da tradurre in sigla!
        var sesso=datiPedia["Sesso"]; // da verificare valore! Vanno bene M/F 
        if (datiPedia["Attività2"]) occupazione = occupazione + "/" + datiPedia["Attività2"];
        if (datiPedia["Attività3"]) occupazione = occupazione + "/" + datiPedia["Attività3"];
        var nomeCognomeCreator = wgTitle.replace("Creator:", "");
        if (datiPedia["Nome"] + " " + datiPedia["Cognome"] != nomeCognomeCreator) {
            datiPedia["Nome"] = nomeCognomeCreator.replace(" " + datiPedia["Cognome"], "");
        }

        template = template.replace(/NAME SURNAME/g, datiPedia["Nome"] + " " + datiPedia["Cognome"])
            .replace(/SURNAME, NAME/g, datiPedia["Cognome"] + ", " + datiPedia["Nome"])
            .replace("FULL PAGE NAME", wgCanonicalNamespace + ":" + wgTitle)
            .replace("PAGE NAME", wgTitle)
            .replace("NAZIONALITA", nazionalita)
            .replace("SESSO", sesso)
            .replace("OCCUPAZIONE", occupazione)
            .replace("DATA NASCITA", dataNascita)
            .replace("LUOGO NASCITA", datiPedia["LuogoNascita"] ? datiPedia["LuogoNascita"] : "")
            .replace("DATA MORTE", dataMorte)
            .replace("LUOGO MORTE", datiPedia["LuogoMorte"] ? datiPedia["LuogoMorte"] : "")
            .replace("SECOLO", datiPedia["Epoca"] ? datiPedia["Epoca"] / 100 + 1 : "")
            .replace("ANNONASCITA", datiPedia["AnnoNascita"] ? datiPedia["AnnoNascita"] : "")
            .replace("ANNOMORTE", datiPedia["AnnoMorte"] ? datiPedia["AnnoMorte"] : "")
            .replace("IMMAGINE", datiPedia["Immagine"] ? datiPedia["Immagine"] : "");
    }
    // versione per dati da en.wikipedia
    if (oggetto["source"] == "en.wikipedia.org") {
        var dati = oggetto.infobox[0];

       
        
        var dataMorte = convDate(dati["death_date"]);
        if (dataMorte==undefined) {
             var dm=parseTemplate("death",dati["death_date"])[0];
             if (dm["0"]=="death date and age") {
                  dataMorte=dm["1"]+"-"+((dm["2"]<10)?"0"+dm["2"]:dm["2"])+"-"+((dm["3"]<10)?"0"+dm["3"]:dm["3"]);
                  dataNascita=dm["4"]+"-"+((dm["5"]<10)?"0"+dm["5"]:dm["5"])+"-"+((dm["6"]<10)?"0"+dm["6"]:dm["6"]);
                 }
             else {dataMorte=dati["death_date"];
                 }
             }
        var luogoMorte = dati["death_place"].replace("[[", "").replace("]]", "");
        if (dataNascita==undefined) dataNascita = convDate(dati["birth_date"]);
        if (dataNascita==undefined) dataNascita=dati["birth_date"];
        
        var luogoNascita = dati["birth_place"].replace("[[", "").replace("]]", "");
        if (dati["occupation"]==undefined) dati["occupation"]="";
        var occupazione = dati["occupation"].split(",");
        occupazione = $.each(occupazione, function (i, x) {
            occupazione[i] = occupazione[i].replace("[[", "").replace("]]", "").split("|")[0].trim().toLocaleLowerCase();
        }).join("/");
        var immagine = dati["image"];
        var nationality=dati["nationality"];
        var sesso="";
        var nomeCognome = wgTitle.replace("Creator:", "");
        var cognomeNome = nomeCognome.split(" ");
        cognomeNome = cognomeNome.slice(1).join(" ") + ", " + cognomeNome.slice(0, 1);

        template = template.replace(/NAME SURNAME/g, nomeCognome)
            .replace(/SURNAME, NAME/g, cognomeNome)
            .replace("FULL PAGE NAME", wgCanonicalNamespace + ":" + wgTitle)
            .replace("NAZIONALITA", nationality)
            .replace("SESSO",sesso)
            .replace("PAGE NAME", wgTitle)
            .replace("OCCUPAZIONE", occupazione)
            .replace("DATA NASCITA", dataNascita)
            .replace("LUOGO NASCITA", luogoNascita)
            .replace("DATA MORTE", dataMorte)
            .replace("LUOGO MORTE", luogoMorte)
            .replace("SECOLO", "")
            .replace("ANNONASCITA", "")
            .replace("ANNOMORTE", "")
            .replace("IMMAGINE", immagine);
    }

    scriviBox(template);
}


function m2m(mg) {
    var mese = {
        "gennaio": "01",
        "febbraio": "02",
        "marzo": "03",
        "aprile": "04",
        "maggio": "05",
        "giugno": "06",
        "luglio": "07",
        "agosto": "08",
        "settembre": "09",
        "ottobre": "10",
        "novembre": "11",
        "dicembre": "12"
    };
    mg = mg.split(" ");
    mg[1] = mese[mg[1]];
    if (mg[0].length == 1) mg[0] = "0".concat(mg[0]);
    return mg[2] + "-" + mg[1] + "-" + mg[0];
}

function bookMake() {
      var schema="{{Book\n|Author=AUTORE\n|Translator=\n|Editor=\n|Illustrator=\n|Title=TITOLO\n|Subtitle=SOTTOTITOLO\n|Series title=\n|Volume=\n|Edition=\n|Publisher=EDITORE\n|Printer=\n|Date=ANNOPUBBLICAZIONE\n|City=LUOGOPUBBLICAZIONE\n|Language=LINGUA\n|Description=DESCRIZIONE\n|Source=FONTE\n|Permission=LICENZA\n|Image=IMMAGINE\n|Image page=IMMAGINEPAGINA\n|Pageoverview=\n|Wikisource=WIKISOURCE\n|Homecat=\n|Other_versions=\n|ISBN=\n|LCCN=\n|OCLC=\n}}";
      var codicePagina=acchiappaWikicode(wgPageName)[1];
      var dati_c=parseTemplate("Information",codicePagina)[0];
      var dati_w=oggetto["MediaWiki_Proofreadpage_index_template"][0];
      var book=schema.replace("AUTORE",dati_c["Author"])
          .replace("TITOLO",dati_w["TitoloOriginale"])
          .replace("SOTTOTITOLO",dati_w["Sottotitolo"])
          .replace("EDITORE",dati_w["Editore"])
          .replace("LUOGOPUBBLICAZIONE",dati_w["Città"])
          .replace("ANNOPUBBLICAZIONE",dati_w["Anno"])
          .replace("IMMAGINE",dati_w["Immagine"].replace("{{!}}Page=","|").split("|")[0])
          .replace("IMMAGINEPAGINA",dati_w["Immagine"].replace("{{!}}Page=","|").split("|")[1])
          .replace("WIKISOURCE","s:it:"+dati_w["Titolo"])
          .replace("FONTE",dati_c["Source"])
          .replace("LICENZA",produciLista(codicePagina,"{{PD","}}",1).join(" ")) 
          .replace("DESCRIZIONE",dati_c["Description"])
          .replace("LINGUA","IT");
      book+="\n\n"+produciLista(codicePagina,"[[Category","]]",1).join("\n");
      scriviBox(book);
}

function getPageNew(title, site,template) {
  $.ajax({
  url: 'https://'+site+'/w/api.php',
  async:false,
  data: {
    format: 'json',
    action: 'query',
    titles: title,
    prop: 'revisions',
    rvlimit: '1',
    rvprop: 'content'
   },
   dataType: 'jsonp' // this is the important one!
}).done(function (data) { 
    var testo=getText(data);
	var templateData=parseTemplate(template,testo);
    $(".ourDiv").data(site+"."+template,templateData);
    }
    );
}

// Gets text content from API objects stored into div.ourDiv
function getText(dato) {
var l="";
for (i in dato.query.pages) {l=i;break;}
var testo=dato.query.pages[l].revisions[0]["*"];
return testo;
}


/* personal loading of Bottoni.js tool */
if (mw.config.get('wgUserName')=="Alex brollo") importScript("User:Alex_brollo/Bottoni.js");