Usuari:Coet/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 veAnyActual !== 'undefined') {
    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) ?\}\} *(?:<\/s(?:trike)?>)?)/gmi
      votes = txt.split(reVotes)
          //recompte dels vots
          idxVot=0
          positius=0; negatius=0; anul_lats=0; nuls=0;
    
          for(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).*/.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;
                }
            } else {
              anul_lats++
            }
            idxVot++
                    }
    }
      return {positius: positius, negatius: negatius, nuls: nuls, anul_lats: anul_lats}
    }
    
    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 = "".concat(elidix("el",diaProposta), " ", elidix("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;
          var ratio                 = .75 * totalVotsComputables;
          var ratio7d               = .75 * totalVotsComputables;
          var ratio14d              = .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 (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 = "".concat(' href="', 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 (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
      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 (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">cap de processable.</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="'+ mw.config.get('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" 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                      = .75 * totalVotsComputables;
      ratio7d                    = .75 * totalVotsComputables;
      ratio14d                   = .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 resolucio = 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"
      resolucio='<font color="'+ color +'">'+ resolucio +'</font>'
      resolucio='Segons les normes vigents i el resultat obtingut '+resolucio
      document.getElementById("resolucio").innerHTML=resolucio;
    };
    
    // 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.trim()+"». 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) {
      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) {
       urlnomPag = proposta.titol.replace(/ /,"_");
       window.open(mw.config.get('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("".concat(mw.config.get('wgServer'), '/w/index.php?title=', proposta.titol,
                  '&action=delete&wpReason=', encodeURIComponent(veResumEsborraPagina)));
      } else {
        alert("".concat("Si us plau, comuniqueu a un administrador que\ns'ha d'eliminar la pàgina «", 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 = "".concat(decisio, " per unanimitat dels ", proposta.vots.negatius,
            " participants ", proposta.dades.totaldies);
        } else {
          comentariResultat = "".concat(decisio, " per unanimitat dels ", proposta.vots.positius,
            " participants ", textTotalDies);
        }
      } else {
         comentariResultat = "".concat(decisio, " 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 (mw.config.get('wgPageName') == vePaginaPropostes && veCorregixFormat && veEditant) formatador();
      if (mw.config.get('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")
      }
    };
    addOnloadHook (carrega_escrutini)
    
    //</nowiki></pre>
    
} else {
    mw.log.warn( 'The script Usuari:Coet/scripts/escrutini.js has been setup incorrectly. Please review your dependencies.' );
}