Vés al contingut

Usuari:Anskar/scripts/escrutini.js

De la Viquipèdia, l'enciclopèdia lliure

Nota: Després de desar, heu de netejar la memòria cau del navegador per veure els canvis. En la majoria de navegadors amb Windows o Linux, premeu Ctrl+F5 o bé premeu Shift i cliqueu el botó "Actualitza" (Ctrl i "Actualitza" amb Internet Explorer). Vegeu més informació i instruccions per a cada navegador a Viquipèdia:Neteja de la memòria cau.

//<pre><nowiki>
/*
   mòdul implementat per l'usuari Coet
*/

/*
ToDo:
	1. les propostes d'esborrat amb un resultat de 2-1 no s'han d'esborrar, s'han d'arxivar han de tenir un percentatge del 67% per poder-se esborrar, i no 64%
	2. Les propostes amb un sol vot a favor de l'esborrament esperem a processar-les als 14 dies enlloc de fer-ho als 7 dies
	3. No se perquè però de tant en tant passa això: https://ca.wikipedia.org?diff=13322095&oldid=prev (crec que només passa quan s'esborra la primera proposta)
*/
if (typeof veCorregixFormat == "undefined") veCorregixFormat = false;
veProva           = /Usuari:Coet\/pr:Esborrar pàgines\/Propostes/.test(document.title);
vePaginaPropostes = veProva ? "Usuari:Coet/pr:Esborrar_pàgines/Propostes" : "Viquipèdia:Esborrar_pàgines/Propostes";
vePaginaHistorial = vePaginaPropostes.replace(/Propostes/,"Historial/")+veAnyActual+"/"+veTextMes;

function recompte(txt){
  reVotes=/((?:<s(?:trike)?>)? *(?: *\*? *)?\{\{ ?(?:[Aa]provació|[Oo]bjecció|[Ss]uport|[Aa]ssumible|[Ii]ndiferent|[Cc]onsentible|[Rr]ebuig|[Nn]snc|[Ee]n contra|[Aa] favor|[Vv]ot fusió) ?\}\} *(?:<\/s(?:trike)?>)?)/gmi;
  votes = txt.split(reVotes);
      //recompte dels vots
      idxVot=0;
      positius=0; negatius=0; anul_lats=0; nuls=0;fusio=0;

      for (var v in votes) {
        if(/.*([Aa]provació|[Oo]bjecció|[Ss]uport|[Aa]ssumible|[Ii]ndiferent|[Cc]onsentible|[Rr]ebuig|[Nn]snc|[Ee]n contra|[Aa] favor|[Vv]ot fusió).*/.test(votes[v])===true){
          esNul=/<s(?:trike)?>/gi.test(votes[v]);
          vot=votes[v].toLowerCase();

          if(!esNul){
            vot=vot.replace(/.*([Aa]provació|[Oo]bjecció|[Ss]uport|[Aa]ssumible|[Ii]ndiferent|[Cc]onsentible|[Rr]ebuig|[Nn]snc|[Ee]n contra|[Aa] favor).*/,"$1");
            switch (vot.toLowerCase()){
              case "aprovació"  :
              case "a favor"    :
              case "suport"     :
              case "assumible"  :positius++; break;
              case "objecció"   :
              case "en contra"  :
              case "rebuig"     :
              case "consentible":negatius++;break;
              case "indiferent" :
              case "nsnc"       :nuls++;break;
              case "vot fusió"  :fusio++;break;
            }
        } else {
          anul_lats++;
        }
        idxVot++;
                }
}
  return {positius: positius, negatius: negatius, nuls: nuls, anul_lats: anul_lats, fusio: fusio};
}

function extreu_dades(txt) {
      proposta=/\* *.*?\[\[(?:Us(?:uari|er)|\{\{ns:2\}\}):([^|]+?)\|(?:[^\]]+?)\]\].*?[\d:]{5}, (\d\d?) ([a-zç]{3,4}) (\d{4}) \(CES?T\)(?: \(proponent\))?/i;
      dades = proposta.exec(txt);
      console.log(dades);
      console.log(txt);
      proponent = dades[1];
      diaProposta = convertix(dades[2]);
      mesProposta = obtin_mes(dades[3]);
      anyProposta = convertix(dades[4]);
      dataProposta = "el ".concat(diaProposta, " de ", mesProposta, " de ", anyProposta);
      tempsTotal   = calcula_lapse(diaProposta, mesProposta, anyProposta);
      data1 = new Date(anyProposta, obtin_mes(mesProposta,true)-1, diaProposta);
  return {data: data1, data2: dataProposta, temps: tempsTotal, proponent: proponent};
}

function veredicte(proposta){
      if( /\{\{anul·lada\}\}\s*(?!<\/s(?:trike)?>)/gi.test(proposta.contingut) ) return "S'anul·la";
      var dataPrp               = proposta.dades.data;
      var decisio               = "";
      var hui                   = new Date();
      var un_dia                = 1000*60*60*24;
      var totalDies             = Math.ceil((hui.getTime()-dataPrp.getTime())/(un_dia))-1;
      var totalVotsComputables  = proposta.vots.positius + proposta.vots.negatius + proposta.vots.fusio;
      var ratio                 = 0.75 * totalVotsComputables;
      var ratio7d               = 0.75 * totalVotsComputables;
      var ratio14d              = 0.64 * totalVotsComputables;
      var difMes                = calcula_lapse(dataPrp.getDay(), dataPrp.getMonth()+1, dataPrp.getYear(), "m");
      var textTotalDies         = difMes>=1?" ("+totalDies+" di"+(totalDies==1?"a":"es")+")":"";
      proposta.dades.ntotaldies = totalDies;
      proposta.dades.totaldies  = textTotalDies;

      /**
       * deprecated: la conserve, però és totalment prescindible
       *
      //implementació temporal deguda als canvis de política
      //calculem els dies que separen el moment actual del 16 d'oct 2007 (=dataCanvi)
      dataCanvi =new Date(2007, 10-1, 16);


      if (dataPrp < dataCanvi) {

        if (totalDies >= 7){
          if (positius>=ratio)  decisio = "S'esborra";
          if (negatius>=ratio)  decisio = "Es conserva";
        }
        if(totalDies > 30) {
          if (positius < ratio &&
              negatius < ratio) decisio = "S'arxiva";
        }

      } else {
      */

      if (totalDies >= 4){
          if (proposta.vots.positius >= 5 && proposta.vots.negatius === 0)  decisio = "S'esborra";
          if (proposta.vots.negatius >= 5 && proposta.vots.positius === 0)  decisio = "Es conserva";
      }
      if (ratio7d !== 0 || ratio14d !==0) {
          if (totalDies >= 7 && decisio === "") {
            if (proposta.vots.positius >= ratio7d)  decisio = "S'esborra";
            if (proposta.vots.negatius >= ratio7d)  decisio = "Es conserva";
          }
          if (totalDies >= 14 && decisio === ""){
            if (proposta.vots.positius >= ratio14d)  decisio = "S'esborra";
            if (proposta.vots.negatius >= ratio14d)  decisio = "Es conserva";
          }
          if (totalDies >= 14 && decisio === "") {
            if (proposta.vots.positius < ratio14d &&
                proposta.vots.negatius < ratio14d) decisio = "S'arxiva";
          }
      }
      //en qualsevol altre cas:
      if (decisio==="") decisio = "Pendent";
      return decisio;
}

dbug=true;
function recompte_vots(){
  if(veEditant) {
    veContingut = document.getElementById("wpTextbox1").value;
  } else {
    veContingut = topaz.wputil.getpagecontent(vePaginaPropostes);
  }
  veDadesPropostes = {};
  vePropostes = veContingut.split(/==(.*)==([\s\S]*?)(?:(?===)|$)/g);
  for (x=1;x<vePropostes.length;x+=3){
        dades = extreu_dades(vePropostes[x+1]);
        vots = recompte(vePropostes[x+1]);
        veDadesPropostes[vePropostes[x]]={
           titol: vePropostes[x],
           contingut: vePropostes[x+1],
           dades: dades,
           decisio: null,
           vots: vots
      };
  }
  for (var proposta in veDadesPropostes){
     veDadesPropostes[proposta].decisio = veredicte(veDadesPropostes[proposta]);
  }
}

function URLseccio (seccio){
  paginaURL = location.href.toString().match(/https?:\/\/.*(?:Propostes|VP:EP\/P)/);
  if (paginaURL === null) return 'href="#"';
  accioURL = location.href.toString().match(/&action=.*/);
  if (accioURL === null) {
		accioURL = "";} else {accioURL = accioURL.toString().split("#")[0];}
  seccio = seccio.replace(/ /g, "_");
  seccio = encodeURIComponent(seccio);
  seccio = seccio.replace(/'/g, "%27");
  seccio = seccio.replace(/\(/g, "%28");
  seccio = seccio.replace(/\)/g, "%29");
  seccio = seccio.replace(/%/g, ".");
  seccio = seccio.replace(/.3A/g, ":"); //reconvertim codi a caràcter, capricis del MediaWiki?
  seccio = ' href="'.concat(paginaURL, accioURL, '#', seccio, '" ');
  return seccio;
}

function obrePopup(){
  recompte_vots();
  llistaPropostes = propostesAdjacents();
  ompleContingut(veDadesPropostes[llistaPropostes.primera]);
}

function tancaPopup(){
  popup.style.width="";
  popup.style.height="";
  popup.style.bottom="420px";
  popup.innerHTML='<a onclick="obrePopup()">escrutini</a>';
}

function propostesAdjacents(titol) {
  propostes = [];
  dadesPropostes = veDadesPropostes;
  for (var prop in dadesPropostes) {propostes.push(prop);}
  propia = propostes.indexOf(titol);
  anterior = propia-1;
  seguent = propia+1;
  if(anterior < 0) anterior = propostes.length-1;
  if(anterior > propostes.length-1) anterior = 0;
  if(seguent < 0) seguent = propostes.length-1;
  if(seguent > propostes.length-1) seguent = 0;
  return {seguent: propostes[seguent], anterior: propostes[anterior], propia: titol, primera: propostes[0], numero: propostes.indexOf(titol)+1};
}

function ves_hi(prop){
  prop = recuperaApostrof(prop);
  mostraAmaga('avís','hidden');
  ompleContingut(veDadesPropostes[prop]);
}

function ompleContingut(proposta){
  nomProposta   = proposta.titol.trim();
  nomProponent  = proposta.dades.proponent;
  dataProposta  = proposta.dades.data2;
  tempsTotal    = proposta.dades.temps;
  totalDies     = proposta.dades.totaldies;
  nTotalDies    = proposta.dades.ntotaldies;
  positius      = proposta.vots.positius;
  negatius      = proposta.vots.negatius;
  anul_lats     = proposta.vots.anul_lats;
  nuls          = proposta.vots.nuls;
  fusio			= proposta.vots.fusio
  decisio       = proposta.decisio;

  processables=""; indexPropostes=""; nombreProc=0; totalPropostes=0;
  i=0;
  dadesPropostes = veDadesPropostes; //vull evitar que s'esborre la variable quan acabe el bucle.
  for (var prop in dadesPropostes){
    if(veDadesPropostes[prop].decisio !== "" && processables === "") processables = "Propostes processables: ";
    if(veDadesPropostes[prop].decisio != "Pendent"){
      if(processables != "Propostes processables: ") processables += " · ";
      processables+= '<a id="processables" title="'+ veDadesPropostes[prop].titol.trim() +' ('+ veDadesPropostes[prop].decisio.toLowerCase()+')" onclick="ves_hi(\''+ camuflaApostrof(prop) +'\')" '+ URLseccio(veDadesPropostes[prop].titol.trim()) +'>'+  (i+1)+'</a>';
      nombreProc++;
    }
    if (i>0) indexPropostes += " ";
    indexPropostes += '<small><a id="processables" title="'+ veDadesPropostes[prop].titol.trim()+ ' ('+ veDadesPropostes[prop].decisio.toLowerCase() +')" onclick="ves_hi(\''+ camuflaApostrof(prop) +'\')" '+ URLseccio(veDadesPropostes[prop].titol.trim())+'>'+ (i+1) +'</a></small>';
    i++;
  }
  totalPropostes=i; totalProcessables=nombreProc;
  if (totalProcessables===0) processables+='<font color="grey">no hi ha cap.</font>';

  popup=document.getElementById("popup");
//  popup.style.width="330px";
//  popup.style.height="420px";
  popup.style.bottom="80px";

  llista = propostesAdjacents(proposta.titol);
  if(nomProponent==veUsuari){nomProponent="vós";}
  contingutPopup='<table class="vePopup" width=100% style="background:white; display:block; background-color:#FFFFE0; opacity: 100; z-index: 1;">'+
        '<tr><td width=85%><span style ="font-weight:bold; color:blue;">Resultats de les '+
        'propostes</span></td>'+
        '<td width=15% align=right><a title="amaga" onclick="tancaPopup()">✕</a></td></tr>'+
        '<tr style="background-color:white; bordercolor:white;"><td align="left">'+
        '<span style ="font-weight:bold; '+
        'color:gold;">'+ totalProcessables +'/'+ totalPropostes +'</span></td>'+
        '<td align="right"><a onclick="ves_hi(\''+ camuflaApostrof(llista.anterior) +'\')"'+
        URLseccio(veDadesPropostes[llista.anterior].titol.trim()) +' title="'+
        veDadesPropostes[llista.anterior].titol.trim() +'"><big>&#x3c;</big>'+
        '</a> <a onclick="ves_hi(\''+ camuflaApostrof(llista.seguent) +'\')"'+
        URLseccio(veDadesPropostes[llista.seguent].titol.trim()) +' title="'+
        veDadesPropostes[llista.seguent].titol.trim() +'"><big>&#x3e;'+
        '</big></a></td></tr>'+
        '<tr style="background-color:white; border-color:white;"><td colspan="2">'+
        processables +'</td></tr>'+
        '<tr style="background-color:white; border-color:white;"><td colspan="2">'+
        indexPropostes +'</td></tr>'+
        '<tr><td colspan="2"><b>'+ (llista.numero) +'.-</b> <a style="color:blue; '+
        'font-weight:bold" href="'+ wgServer +'/wiki/'+ encodeURI(nomProposta) +'">'+ nomProposta +
        '</a></td></tr>'+
        '<tr><td colspan="2">La proposta ha estat presentada '+ dataProposta +'.</td></tr>'+
        '<tr><td colspan="2">'+ tempsTotal + totalDies +'.</td></tr>'+
        '<tr><td colspan="2">Proposada per <b>'+nomProponent+'</b>.</td></tr>'+
        '<tr><td colspan="2">Compta amb:</td></tr>'+
        '<tr><td colspan="2">&nbsp;&nbsp;• <input id="vePositius" type="text" '+
        'size="2" maxlength="3" align="right" value="'+ positius +'" '+
        'onblur="resolucio('+ proposta +')"/> a favor</td></tr>'+
        '<tr><td colspan="2">&nbsp;&nbsp;• <input id="veNegatius" type="text" '+
        'size="2" maxlength="3" align="right" value="'+ negatius +'"'+
        'onblur="resolucio('+ proposta +')"/> en contra</td></tr>'+
        '<tr><td colspan="2">&nbsp;&nbsp;• <input id="veNuls" type="text" '+
        'size="2" maxlength="3" align="right" value="'+ nuls +'"'+
        'onblur="resolucio('+ proposta +')"/> nuls</td></tr>'+
        '<tr><td colspan="2">&nbsp;&nbsp;• <input id="veAnul·lats" type="text" '+
        'size="2" maxlength="3" align="right" value="'+ anul_lats +'" '+
        'onblur="resolucio('+ proposta +')"/> anul·lats</td></tr>'+
        '<tr><td colspan="2">&nbsp;&nbsp;• <input id="veFusio" type="text" '+
        'size="2" maxlength="3" align="right" value="'+ fusio +'" '+
        'onblur="resolucio('+ proposta +')"/> fusió</td></tr>'+
        '<tr><td colspan="2" id="resolucio"></td></tr>'+
        '<tr><td colspan="2" id="accions"></td></tr></table>';
  popup.innerHTML=contingutPopup;
  resolucio(proposta);
}

function resolucio(proposta){
  nomProposta   = proposta.titol;
  nomProponent  = proposta.dades.proponent;
  dataProposta  = proposta.dades.data2;
  tempsTotal    = proposta.dades.temps;
  totalDies     = proposta.dades.totaldies;
  nTotalDies    = proposta.dades.ntotaldies;
  nousPositius  = parseInt(document.getElementById("vePositius").value);
  nousNegatius  = parseInt(document.getElementById("veNegatius").value);
  nousNuls      = parseInt(document.getElementById("veNuls").value);
  nousAnul_lats = document.getElementById("veAnul·lats").value;
  decisio       = "";
  dataPrp       = proposta.dades.data;
  totalVotsComputables       = nousPositius + nousNegatius;
  ratio                      = 0.75 * totalVotsComputables;
  ratio7d                    = 0.75 * totalVotsComputables;
  ratio14d                   = 0.64 * totalVotsComputables;
  dataCanvi                  = new Date(2007, 10-1, 16);

  if (dataPrp < dataCanvi) {
    if (nTotalDies >= 7){
      if (nousPositius>=ratio)  decisio = "S'esborra";
      if (nousNegatius>=ratio)  decisio = "Es conserva";
    }
    if(nTotalDies > 30) {
      if (nousPositius < ratio &&
          nousNegatius < ratio) decisio = "S'arxiva";
    }

  } else {

    //el següent codi és el que romandrà una vegada s'hagen resolt les propostes
    //anteriors al 16 d'octubre de 2007 (fins a nous canvis :) )

    if (nTotalDies >= 4){
      if (nousPositius>=5 && nousNegatius === 0)  decisio = "S'esborra";
      if (nousNegatius>=5 && nousPositius === 0)  decisio = "Es conserva";
    }

    if (ratio7d !== 0 ||  ratio14d !== 0){
       if (nTotalDies >= 7 && ratio7d !== 0){
         if (nousPositius>=ratio7d)  decisio = "S'esborra";
         if (nousNegatius>=ratio7d)  decisio = "Es conserva";
       }

      if (nTotalDies >= 14 && ratio14d !== 0){
        if (nousPositius>=ratio14d)  decisio = "S'esborra";
        if (nousNegatius>=ratio14d)  decisio = "Es conserva";
      }

      if(nTotalDies >= 14 && ratio14d !== 0) {
        if (nousPositius < ratio14d &&
            nousNegatius < ratio14d) decisio = "S'arxiva";
      }
    }

  }
  if(proposta.contingut.indexOf("{{anul·lada}}")>-1) decisio="S'anul·la";

  //en qualsevol altre cas:
  if (decisio==="") decisio = "Pendent";

  proposta.decisio = decisio;

  var resolucio1 = decisio == "Pendent" ? 'la votació <b>roman oberta</b>' : 'la pàgina <a onclick="processa(\''+ camuflaApostrof(proposta.titol) +'\')"><b>'+decisio.toLowerCase()+'rà</b></a>';

  if(decisio=="S'arxiva") color="green";
  if(decisio=="Es conserva" || decisio=="S'anul·la") color="blue";
  if(decisio=="S'esborra") color="red";
  if(decisio=="Pendent") color="orange";
  resolucio1='<font color="'+ color +'">'+ decisio +'</font>';
  resolucio1='Segons les normes vigents i el resultat obtingut '+resolucio1;
  document.getElementById("resolucio").innerHTML=resolucio1;
}

// retira la proposta de la pàgina Viquipèdia:Esborrar pàgines/Propostes
function retira_proposta (proposta, comentari){
  reconsprop = RegExp("== *"+ prepare4regexp(proposta.titol.trim()) +" *==[\\r\\n]*");
  senseProposta = veContingut.replace(reconsprop, "");
  senseProposta = senseProposta.replace(proposta.contingut,"");
  resumRetirada = veVEprefixat +"arxivant la proposta «"+proposta.titol+"». Resultat: "+comentari;
  if(veEditant){
    document.getElementById("wpTextbox1").value = senseProposta;
    document.editform.wpSummary.value = resumRetirada;
    if(confirm("Heu eliminat una proposta d'aquesta pàgina\n"+
               "¿Desitgeu desar els canvis efectuats a la pàgina?")){
      document.editform.submit();
      document.editform.wpWatchthis.checked = true;
    }
  } else {
    topaz.wputil.setpagecontent(vePaginaPropostes,
                                senseProposta,
                                resumRetirada,
                                true);
  }

  //obre_pagina (vePaginaPropostes);
}

// arxiva la proposta
function arxiva_proposta(proposta, coment) {
  var resumArxivaProposta = veVEprefixat+"arxivada proposta «"+proposta.titol+"». Resultat: "+coment;
  var arxiuProposta='\n\n== '+ proposta.titol +' ==\n\n'+ proposta.contingut +'\n* '+coment+' --~~'+'~~';
  contingutHistorial = topaz.wputil.getpagecontent(vePaginaHistorial);
  if(contingutHistorial==="") arxiuProposta =
       "Arxiu dels [[VP:EP/P|processos]] de [[VP:EP]] corresponents al " +veTextMes +
       " de "+veAnyActual +".\n[[Categoria:Viquipèdia:Manteniment]]\n__NOINDEX__" +
       arxiuProposta;
  topaz.wputil.addpagecontent(vePaginaHistorial,
                              arxiuProposta,
                              resumArxivaProposta,
                              false);
  //obre_pagina (vePaginaHistorial);
}

//retira plantilla d'esborrament ( {{esborrar1}} ) de l'article
function retira_plantilla(proposta, coment) {
  var nomPag = proposta.titol.trim();
  nomPag = nomPag.replace(/ /g,"_");
  paginaDesti          = topaz.wputil.getpagecontent(proposta.titol);
  existeixPlantEsborrament = paginaDesti.search(/\{\{[Ee]sborrar1?\b.*\}\}/g)>-1;
  if (!existeixPlantEsborrament) {obre_pagina (proposta.titol); return;}
  sensePlantilla = paginaDesti.replace(/\{\{esborrar1? *[^}]+\}\}[\s\n\r]+/gi, "");
  resumRetiraPlantilla = veVEprefixat+"retirada plantilla {{esborrar1}}. Resultat: "+ coment;
  topaz.wputil.setpagecontent(nomPagina,
                              sensePlantilla,
                              resumRetiraPlantilla,
                              false);
  obre_pagina (proposta.titol);
}

// afegix el resultat a la pàgina de discussió de l'article
function afegix_resultat(proposta, coment, pagDiscussio, dataProp) {
  nomPag = proposta.titol.replace(/ /g,"_");
  var textDiscussio="", resumDiscussio="";
  textDiscussio  = "\n==Resultat de la proposta d'esborrament==\n" + "La pàgina principal d'esta discussió es va proposar per a ser esborrada " + proposta.dades.data2 + "\n\nEl resultat de [["+vePaginaHistorial + "#" + nomPag + "|les votacions]] ha estat el següent:\n\n"+coment+"\n\nResultat obtingut amb [[Usuari:Coet/viquiestris|Viquiestris]]\n\n~~~~";
  resumDiscussio = "Afegint resultat de proposta d'esborrament "+ veUString(veEnllacResum);

  topaz.wputil.addpagecontent(pagDiscussio,
                              textDiscussio,
                              resumDiscussio,
                              false);
  obre_pagina (proposta.titol);
}

// esborra l'article
function esborra_pagina(proposta, coment) {
   var urlnomPag = proposta.titol.replace(/ /,"_");
   window.open(wgServer+'/wiki/Special:Whatlinkshere/'+urlnomPag);
   alert("Abans d'esborrar:\n\nComproveu què hi enllaça.\n"+
        "Cal esborrar les redireccions que quedaran rompudes.\n\n"+
        "Si pel motiu d'esborrament no té sentit que l'article es torni "+
        "a crear en el futur, cal treure els enllaços interns que tingui en "+
        "altres articles.\n\n"+
        "En cas d'esborrar una plantilla o una imatge cal treure-la"+
        "abans de les pàgines on estigui inclosa.\n\n"+
        "Comproveu si té pàgina de discussió. Si el contingut no és "+
        "rellevant pel futur, es pot esborrar. Si no té sentit que la pàgina "+
        "es torni a crear en el futur, el contingut de la discussió que pugui "+
        "ser interessant es pot traslladar a un lloc més adequat.\n\n"+
        "Si té alguna imatge no lliure que només està justificada per "+
        "aquest article, cal esborrar-la.\n\n"+
        "Comproveu els enllaços interwiki i considereu eliminar l\'enllaç "+
        "a ca: en les altres viquis amb un resum d\'edició que els pugui "+
        "servir d'avís: deleted on ca.wiki per (copyvio, not notable, spam...)");

  if(veMarcaAdmin){
    veResumEsborraPagina = "[[".concat(
       vePaginaHistorial, "#", proposta.titol, "|Pàgina esborrada]] ",
       veUString(veEnllacResum), " - Resultat: ", coment
    );
    veResumEsborraPagina = veResumEsborraPagina.replace(" ","_");
    window.open(wgServer.concat('/w/index.php?title=', proposta.titol,
              '&action=delete&wpReason=', encodeURIComponent(veResumEsborraPagina)));
  } else {
    alert("Si us plau, comuniqueu a un administrador que\ns'ha d'eliminar la pàgina «".concat(proposta.titol, "»"));
  }
}

function inserix_motiu(motiu){
  addOnloadHook (function(){
      rao  = document.getElementById('wpReason') || document.getElementById('wpComment');
      alert(rao.value);
      rao.value=motiu;
    }
  );
}

function processa(proposta){
  proposta = veDadesPropostes[recuperaApostrof(proposta)];
  if(veUsuari == nomProponent) {
    if(!confirm("Compte! Sou el proponent, esteu segur que voleu arxivar la proposta?")) return;
  }
  nomPagina         = proposta.titol;
  nomProponent      = proposta.dades.proponent;
  dataProposta      = proposta.dades.data2;
  decisio           = proposta.decisio;
  contingutProposta = veContingut.match(RegExp("== *".concat(prepare4regexp(nomPagina), " *==[\\n\\r\\s]+", prepare4regexp(proposta.contingut),"[\\n\\r\\s]+")));

  //paginaDiscussio:
  //Usuari, Plantilla, Imatge, Viquipèdia, Categoria, MediaWiki, Ajuda, Portal, Viquiprojecte
  espais=/(Usuari|Plantilla|Fitxer|Mèdia|Viquipèdia|Categoria|MediaWiki|Ajuda|Portal|Viquiprojecte):(.*)/;
  paginaDiscussio = nomPagina.search(espais)>-1 ? nomPagina.replace(espais,"$1 Discussió:$2"): "Discussió:"+nomPagina;

 /*
  * accions que es realitzaran
  */

  //En qualsevol cas es realitzaran les dues accions següents, incloent si s'anul·la.
  accions="<small>&nbsp;&nbsp;• Es retirarà la proposta de "+vePaginaPropostes;
  accions+="<br/>&nbsp;&nbsp;• S'arxivarà la proposta a " + vePaginaHistorial;

  if (decisio=="S'esborra") {
    popup.style.height="490px";
    popup.style.bottom="80px";
    accions+="<br/>&nbsp;&nbsp;• S'esborrarà la pàgina.";
  }

  if (decisio=="S'arxiva" || decisio=="Es conserva") {
    popup.style.height="490px";
    popup.style.bottom="80px";
    accions+="<br/>&nbsp;&nbsp;• Es retirarà la plantilla {{esborrar}} de "+ nomPagina;
    accions+="<br/>&nbsp;&nbsp;• S'afegirà el resultat de la proposta a "+ paginaDiscussio;
  }
  document.getElementById("accions").innerHTML=accions+"</small>";

 /*
  * comentari del resultat
  */

  comentariResultat=""; textTotalDies = "al cap "+elidix("de", proposta.dades.ntotaldies)+" dies";

  if ((decisio=="S'esborra"||decisio=="Es conserva") && (positius===0||negatius===0) &&
  nuls===0){
    if(positius===0) {
      comentariResultat = decisio.concat(" per unanimitat dels ", proposta.vots.negatius,
        " participants ", proposta.dades.totaldies);
    } else {
      comentariResultat = decisio.concat(" per unanimitat dels ", proposta.vots.positius,
        " participants ", textTotalDies);
    }
  } else {
     comentariResultat = decisio.concat(" per ", proposta.vots.positius, " vots a favor de l'esborrament, i ",
       proposta.vots.negatius, " en contra ", textTotalDies);
  }
  if(decisio=="S'arxiva") comentariResultat += " No s'ha assolit cap consens";
  if(decisio=="S'anul·la") comentariResultat = "La proposta ha estat anul·lada pels canvis efectuats a la pàgina implicada.";

 /*
  * Ja hem completat tot els requisits per executar les accions escaients.
  */

  if(confirm("Desitgeu executar les accions descrites anteriorment?"+
         "\n\nEs la vostra responsabilitat comprovar el nombre de vots"+
           "\ni les dades extretes automàticament. Si seguiu amb el procés"+
           "\nno serà possible aturar-lo. Desitgeu continuar?")){
    retira_proposta(proposta, comentariResultat);
    arxiva_proposta(proposta, comentariResultat);
    if (decisio=="S'esborra" && !veProva) {
      esborra_pagina(proposta, comentariResultat);
    }
    if (!veProva && (decisio=="Es conserva"||decisio=="S'arxiva"||decisio=="S'anul·la")) {
      retira_plantilla(proposta, comentariResultat);
      afegix_resultat(proposta, comentariResultat, paginaDiscussio);
    }
    //window.location.reload() //Esta ordre atura la resta de codi, primer prove la següent :)
    window.location.href= cawiki+vePaginaPropostes; //torna a carregar la pàgina de propostes...
    obrePopup();                                    //i deixar l'escrutini obert...
  }
}

function carrega_escrutini(){
  if (wgPageName == vePaginaPropostes && veCorregixFormat && veEditant) formatador();
  if (wgPageName.indexOf("Esborrar_pàgines/Propostes")>-1 &&
      veHref.search(/action=history|&diff|&oldid|&submit|Discussi%C3%B3:/)==-1){
    var primer="content", segon="bodyContent";
    //if(veEditant) primer="toolbar"; segon="editform"; //això no cal ara
    primerObj = document.getElementById(primer);
    segonObj  = document.getElementById(segon);

    var divEscrutini = document.createElement("div");
    divEscrutini.innerHTML = '<div class="vePopup" id="popup" accesskey="I" tabIndex=0 style="position:fixed; right:5px; '+
                             'bottom:420px; float:right; padding:6px; background-color:#FFFFE0; opacity: 100; '+
                             'border:1px solid orange; z-index: 1;"><a onclick="obrePopup()" '+
                             'shape="poly">escrutini</a>'+
                             '</div>';

    primerObj.insertBefore(divEscrutini, segonObj);
    popup=document.getElementById("popup");
  }
}
$ (carrega_escrutini);

//</nowiki></pre>