Usuari:Coet/scripts/recursos.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>
/*** funcions de text ***
 *
 */

function simplificaCaràcter(cadConv) {
  //This function replace a diacritized character with the corresponding simple character 
  //and allows to maintain its case (upper- or lowcase).
  var conversió=new String, carResultant=new String, carTrobat=new String, carTrobatMin=new String;
  var majúscula = false;
  for (var posició=0;posició!=cadConv.length;posició++) {
    carTrobat=cadConv.charAt(posició);
    carTrobatMin = carTrobat.toLowerCase();
    if(carTrobat != carTrobatMin) {carTrobat=carTrobatMin; majúscula=true;}
    carTrobat = carTrobat.toString() 
    if(carTrobat.match(/[a-z]/)!=null) {carResultant=carTrobat;} else {
      if(carTrobat.match(/[àáâäãăǎąåā]/)!=null) carResultant='a';
      if(carTrobat.match(/[æǣ]/)!=null)         carResultant='ae';
      if(carTrobat.match(/[ḃɓ]/)!=null)         carResultant='b';
      if(carTrobat.match(/[çćčćĉċ]/)!=null)     carResultant='c';
      if(carTrobat.match(/[đðḍďḋ]/)!=null)      carResultant='d';
      if(carTrobat.match(/ð/)!=null)            carResultant='dh';
      if(carTrobat.match(/[èéêëẽēę]/)!=null)    carResultant='e';
      if(carTrobat.match(/ḟƒ/)!=null)           carResultant='f';
      if(carTrobat.match(/[ĝġģğ]/)!=null)       carResultant='g';
      if(carTrobat.match(/[ĥħ]/)!=null)         carResultant='h';
      if(carTrobat.match(/[ìíîïīį]/)!=null)     carResultant='i';
      if(carTrobat.match(/ij/)!=null)            carResultant='ij';
      if(carTrobat.match(/ĵ/)!=null)            carResultant='j';
      if(carTrobat.match(/ķ/)!=null)            carResultant='k';
      if(carTrobat.match(/[ŀļḷḹľł]/)!=null)      carResultant='l';
      if(carTrobat.match(/[ñńň]/)!=null)        carResultant='n';
      if(carTrobat.match(/[òóôöõøōǫ]/)!=null)   carResultant='o';
      if(carTrobat.match(/œ/)!=null)            carResultant='oe';
      if(carTrobat.match(/ṗ/)!=null)            carResultant='p';
      if(carTrobat.match(/[ŗřṛṝ]/)!=null)        carResultant='r';
      if(carTrobat.match(/[şṡšŝ]/)!=null)       carResultant='s';
      if(carTrobat.match(/ß/)!=null)            carResultant='ss';
      if(carTrobat.match(/[ţṫṭ]/)!=null)         carResultant='t';
      if(carTrobat.match(/Þ/)!=null)            carResultant='th';
      if(carTrobat.match(/[ùúûüŭūų]/)!=null)    carResultant='u';
      if(carTrobat.match(/[ẁŵẅƿ]/)!=null)       carResultant='w';
      if(carTrobat.match(/[ýỳŷÿȳỹ]/)!=null)     carResultant='y';
      if(carTrobat.match(/[źžż]/)!=null)        carResultant='z';
      //per defecte (default)
      if (carResultant=='') carResultant=carTrobat;
    }
    if (majúscula) {carResultant=carResultant.toUpperCase(); majúscula=false;}
    conversió+=carResultant;
    carResultant='';
  }
  return conversió
}

function elidix(avant, arrere, tria) {
  inicial=simplificaCaràcter(arrere.toString().toLowerCase().charAt(0));
  posició=avant.search(/[dl]/i);
  if(arrere.toString().search(/\b11?\b/) >=0 || inicial.toString().search(/[aehiou]/i) ==0){
     avant=avant.substr(posició,1)+"'";
  }else{avant += " "}

  //per excepcions de tipus "d'Stalingrad", "de Holliwood"
  if(arrere.toString().search(/(?:del |de la |de l')[hs]/i)>=0){
    avant= arrere.replace(/(?:del |de la |de l')[hs]\w*/i, "$1")
    arrere=arrere.replace(/(del |de la |de l')([hs]\w*)/i, "$2")
  }

  //per excepcions de tipus "l'Steward", "el Holliwood"
  if(arrere.toString().search(/(?:(?:el|la) |l')[hs]/i)>=0){
    avant= arrere.replace(/((?:el|la) |l')[hs]\w*/i, "$1")
    arrere=arrere.replace(/((?:el|la) |l')([hs]\w*)/i, "$2")
  }

  if (avant=="de")avant= "de "

  if(!tria) return avant+arrere;
  if (tria){
    if (tria==1) return avant;
    if (tria==2) return arrere;

  }
}

function majInicial(mot){
 var inicial = mot.charAt(0);
 var resultat= mot.substring(1);
 inicial=inicial.toUpperCase();
 resultat=inicial+resultat;
 return resultat;
}

function convertix(text){
  //This function convert a cahracter number to its value.
  //convertim text numèric en una xifra.
  nombre=0
  for(var i=0;i!=text.length;i++){
    var potència = 1
    for (var j=text.length-i;j>1;j--){potència*=10;}
    dígit = (text.charCodeAt(i)-48)*potència;
    nombre += dígit
  }
  return nombre
}

function camuflaApostrof(cadena){
  cadena=cadena.replace(/'/g,"´");
  return cadena;
};

function recuperaApostrof(cadena){
  cadena=cadena.replace(/´/g, "'");
  return cadena;
};

function escape4regexp(string){
  string = string.replace(/([{}()[\]|\\.*+])/g, "\\$1");
  return string;
};

function prepare4regexp(string){
  string = escape4regexp(string)
  string = string.replace(/([\n\r])/g, "\\$1");
  return string;
};

/*** funcions de dates ***
 *
 */

function obtin_mes(mes,torna){
  //amb torna=true tornem un valor numèric, i torna=false, el mes en lletres sencer.
  numMes=0; nomMes="";

  //En cas que mes és escrit sencer l'abreugem
  if (typeof mes == 'string' && mes.length>4) mes=mes.substr(0,3);

  switch (mes){
    case "gen" : numMes =  1; nomMes = "gener"; break;
    case "feb" : numMes =  2; nomMes = "febrer"; break;
    case "febr": numMes =  2; nomMes = "febrer"; break;
    case "març": numMes =  3; nomMes = "març"; break;
    case "abr" : numMes =  4; nomMes = "abril"; break;
    case "maig": numMes =  5; nomMes = "maig"; break;
    case "juny": numMes =  6; nomMes = "juny"; break;
    case "jul" : numMes =  7; nomMes = "juliol"; break;
    case "ag"  : //deixem-ho fins el 21 de setembre de 2007
    case "ago" : numMes =  8; nomMes = "agost"; break;
    case "set" : numMes =  9; nomMes = "setembre"; break;
    case "oct" : numMes = 10; nomMes = "octubre"; break;
    case "nov" : numMes = 11; nomMes = "novembre"; break;
    case "des" : numMes = 12; nomMes = "desembre"; break;
  }
  if (!torna) {return nomMes} else {return numMes}
}

function diesMes(mesM,anyA){
  //This function allows to know how many days has a month.
  var totalDies = 0;
  switch (mesM){case 1:case 3:case 5:case 7:case 8:case 10:case 12:totalDies=31;break;
                case 4:case 6:case 9:case 11:totalDies=30;break;
                case 2:if((anyA % 4 == 0 && anyA % 100 != 0) || anyA % 400 == 0)
                       {totalDies=28}else{totalDies=29}; break;
  }
  return totalDies
}

var data = new Date();
var diaActual=data.getDate(), mesActual=data.getMonth()+1, anyActual=data.getFullYear();
veAnyActual = anyActual 
veTextMes   = mesActual.toString(); if(veTextMes.length==1) veTextMes="0"+mesActual;

function calcula_lapse(dia, mes, any, concreta) {
  var difDies=0, difMesos=0, difAnys=0; 

   //En cas que tranferim cadenes de caràcters, les convertim en nombres.
  if(typeof dia=='string')dia=convertix(dia)
  if(typeof mes=='string')mes=obtin_mes(mes,true)
  if(typeof any=='string')any=convertix(any)

  difDies  = diaActual - dia
  difMesos = mesActual - mes
  difAnys  = anyActual - any

  if (difMesos < 0 && difAnys  >= 0) {difMesos = 12 + difMesos; difAnys--}
  if (difDies  < 0 && difMesos >= 0) {difDies  = diesMes(mes, any) + difDies; difMesos--}

  // ara uns arranjaments per al text
  var frase ="Hui es compleix", desinència = "";
  var separaMes="", separaDia="", pqTextMes="", indicaAnys="", indicaMesos="", indicaDies="";

  if (difAnys > 0){
    if (difMesos > 0 && difDies  >  0)  {separaMes = ", "; separaDia = " i ";}
    if (difMesos > 0 && difDies  == 0)  {separaMes = " i ";}
    if (difMesos == 0 && difDies  >  0) {separaDia = " i ";}
  }

  if (difAnys==0 && difMesos>0 && difDies>0) separaDia=" i ";
       
  if (difAnys == 1)  indicaAnys  = "1 any";
  if (difAnys > 1)   indicaAnys  = difAnys + " anys";
  if (difMesos == 1) indicaMesos = separaMes + "1 mes";
  if (difMesos > 1)  indicaMesos = separaMes + difMesos + " mesos";
  if (difDies == 1)  indicaDies  = separaDia + "1 dia";
  if (difDies > 1)   indicaDies  = separaDia + difDies  + " dies";

  if (difAnys>1) desinència="en";
  if (difAnys==0 && difMesos>1) desinència="en";
  if (difAnys==0 && difMesos==0 && difDies>1) desinència="en";
  if (difAnys==0 && difMesos==0 && difDies==0) frase="Hui és el primer dia"


  if(!concreta) return frase+desinència+" "+indicaAnys+indicaMesos+indicaDies
  if(concreta){
    if (concreta=="d") return difDies
    if (concreta=="m") return difMesos
    if (concreta=="a") return difAnys
  }
}


/*** funcions de rutina de comprovació ***
 *
 */

if (typeof veComprovaCanvis == "undefined") veComprovaCanvis = true;

function obre_pàgina(nompàgina) {
  if (veComprovaCanvis == true) window.open(mw.config.get('wgServer')+"/wiki/"+nompàgina);
}

function finestra_procés(text,pàgina,procés){
  switch (procés) {
    case 0: finestraProcés = window.open("", "procés",
            "resizable=yes,scrollbars=yes,width=700,height=300");
            finestraProcés.document.open("text/html","replace");
            finestraProcés.document.write(text + '<span style=" color:#002BB8; ' +
            'font-weight:bold;">' + pàgina + "</span>");
            break;
    case 1: finestraProcés.document.write('<br />' + text + '<span style=" color:#002BB8; ' +
            'font-weight:bold;">' + pàgina + "</span>");
            break;
    case 2: finestraProcés.document.write(text);
            break;
    case 3: finestraProcés.document.write('<br />' + text + '<span style=" color:green; ' +
            'font-weight:bold;">' + pàgina + "</span>");
            finestraProcés.focus();
            finestraProcés.document.close();
            break;
  }
}

/*** funcions de missatges ***
 *
 */

function mostraAmaga(nomObj,visualització){
  objecte = document.getElementById(nomObj)
  if(!objecte) return;
  document.getElementById(nomObj).style.visibility=visualització;
}

if(typeof(String.prototype.trim) === "undefined")
{
    String.prototype.trim = function() 
    {
        return String(this).replace(/^\s+|\s+$/g, '');
    };
}
//</pre>