Questa funzione Javascript converte i numeri in cifre in lettere scritte per esteso (come sugli assegni).

Ad esempio 2234 diventa DueMilaDueCentoTrentaQuattro.
abbrevia
=

Il codice è il seguente:
var sgart = sgart || {};

sgart.convNumLett= function (n, abbr) {
  if(isNaN(n) == true){
    return "!!! Insert number !!!";
  }
  if(n.indexOf('.') >=0){
    return "!!! Only integer number !!!";
  }
  if(n == 0){
    return "ZERO";
  }
  var lettu = ["","Uno","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove"];
  var lettu1 = ["Dieci","Undici","Dodici","Tredici","Quattordici","Quindici","Sedici","Diciassette","Diciotto","Diciannove"];
  var lettd = ["","Dieci","Venti","Trenta","Quaranta","Cinquanta","Sessanta","Settanta","Ottanta","Novanta"];
  var prefs = ["","UnMila","UnMilione","UnMiliardo"];
  var prefp = ["","Mila","Milioni","Miliardi"];
  
  var numero = n.replace(/^\s+|\s+$/g,""); 
  var lmax = numero.length;

  //indica se centinaia=2, decine=1 o unita=0
  var cdu = parseInt((lmax-1) % 3);
  //indica il moltiplicatore
  var molt = parseInt((lmax-1) / 3);
  if(molt > 3){
    molt = parseInt(molt % 4);
  }
  
  var risultato = "";    //contiene il numero in lettere
  var i  = 0;  	//contatore all'interno del numero

  while(i < lmax){
    var ris_par = "";
    var cent_dec = 0;  //se=1, indica se nelle centinaia o nelle decine c'era una cifra <> da 0
    var decine = 0;    //se=1, indica che nelle decine c'era un 1
    if(i < lmax-3 && molt < 1){
      molt = 3;
    }
    var car = parseInt(numero.charAt(i));
    //* centinaia
    if( cdu == 2 ){
      if (car > 0){
        if( car != 1){
          ris_par = lettu[car] + "Cento";
        }else{
          ris_par =  "Cento";
        }
        cent_dec = 1;
      }
      i++;
    }	
    // decine
    car = parseInt(numero.charAt(i));
    if( cdu >= 1) {
      if( car == 1){
        decine = 1;
      } else if(car > 1){
        ris_par = ris_par + lettd[car];
        cent_dec = 2;
      }
      i++;
    }
    // unita
    car = parseInt(numero.charAt(i));
    if( cdu >= 0) {
      if( decine == 1){
        //scrive numero da 10 a 19
        ris_par = ris_par + lettu1[car];
        cent_dec = 1;
      }else {
        // scrive gli altri numeri 0 a 9
        if ((car == 1 || car == 8) && cent_dec == 2){
          ris_par = ris_par.substring(0, ris_par.length-1);
        }
        if ((car == 1 && cent_dec > 0) || car > 1 || molt == 0 ){
          ris_par = ris_par + lettu[car];
        }
      }
      if (decine == 1 || cent_dec > 0 || car != 0 || molt == 3){
        if (cent_dec == 0 && car == 1){
          ris_par = ris_par + prefs[molt];
        }else{
          ris_par = ris_par + prefp[molt];
        }
      }
      if ((ris_par == "UnMila" || ris_par == "Mila") && i == 0 ){
        ris_par = "Mille";
      }
      i++;
      molt--;
      cdu = 2;
      risultato = risultato + ris_par;
      if (abbr == true && i >= lmax-3){
        risultato = risultato + "/" + numero.substring(numero.length-2);
        break;
      }
    }
  }
  return risultato;
}
va richiamato con:
var r = sgart.convNumLett(2012, false);