// Version 1.0, septembre 2004

// Variables statiques

var alphaB = "abcdefghijklmnopqrstuvwxyz";

var courant = 0;

// Première lettre du mot

var prem="ccppaardesmtbfiglvohnjqukzwyx";

// Lettres suivantes

var suiv=new Array("niurstvlmcpbgfyd", "roealuisj", "ehoarilutcs", "eeaiours", "sntrumlcavzipgedfb", "aorfeilus", "eerlnauoit", "eaoiuy", "tlesnrmvocdbqafx", "eoua", "eayoi", "eealoiustd", "eeaobmipu", "tsedocaginfuq", "unirmsltycebp", "aeorliupsht", "u", "eeaoistrudmncgbl", "eoatsuipcq", "eeroasiuthy", "rrsiexntvlpacdfgbbomj", "eoiaru", "aae", "ieptachq", "eearoslmnpdc", "aaeouiz");

// syllabes

var syl=new Array;

syl[0]=new Array("u","u","i","r","p","n","s","l","c","f","t","in","b","y","d","h","m","e","g")

syl[1]=new Array("e","re","a","ou","le","o","i","li","on","ru","ri","ien","u","ra","eau","oi","la","an","ai","lou","leu","eil","reu","ran","ro","y","eu","au","ie","oy","ron","rou","rai","un","rez","roya","ui","lon","rin","en","ez","ho","in","lo","lu","ry","ue","ey","ion")

syl[2]=new Array("e","he","o","i","ou","ha","on","ri","a","han","u","re","la","hi","en","eu","le","hai","ho","roi","lai","ra","hez","ai","hau","ro","an","rou","hoi","lou","lo","un","y","oin","ru","in","hri","li","eau","hon","au","ay","hen","hu","reu","amp","heu","ien","oi","hou","hy","ez","rain","roy","ey","hre","ion","rin","ein","hry","lin","lu","rai","lan","lau","lez","loi","ran","ry")

syl[3]=new Array("e","e","i","an","u","on","eu","a","re","o","en","ou","roi","ra","ai","oi","ez","in","ro","rin","ron","ain","rai","ri","eau","au","ien","rou","y","ay","ei","oy","reu","rus")

syl[4]=new Array("t","t","n","s","m","l","u","f","x","au","r","h","a","p","y","z")

syl[5]=new Array("ai","i","e","a","o","u","on","an","ou","ran","ron","au","re","le","la","ri","eu","oi","leu","ra","lo","reu","roi","in","lanc","ro","et","lai","en","lu","ru","rai","rau","ren","um","uy","len","lez","li","rain","ez")

syl[6]=new Array("e","a","ran","i","ue","re","ou","es","o","le","ea","loi","ra","en","ri","lan","an","u","ueu","eo","lai","la","ui","eu","ro","ai","li","ion","lo","ez","ron","rou","rin","au","lou","ne","oi","et","leu","na","rai","rain","ret","roi","lau","lin","lu","ni","oin","reu","ru","uin","y")

syl[7]=new Array("o","u","i","e","a","on","au","eu","ai","y","ay","ou","an")

syl[8]=new Array("l","l","n","m","g","v","r","f","a","e","s","x")

syl[9]=new Array("e","e","ou","u","a","eu","oi","ean","an","on","o","ai","au","oin","uin","i")

syl[10]=new Array("i","o","e","a","le")

syl[11]=new Array("e","e","a","eu","i","u","ai","o","on","an","ou","et","oi","i","en","ion","ei","ez","y","in","oin","au","heu","oy","ay","eau","ain","ey","ia","ian","io","omb")

syl[12]=new Array("e","e","i","a","en","on","o","ai","ain","an","u","oi","eu","ou","et","au","eil","in","y","oin","ez","y","eau","oy","ol")

syl[13]=new Array("e","i","ou","a","u","o","oi","an","on","ai","om","eu","ez","en","au","et","ei","ain","oy","y","ay","ew","ey","in","ox")

syl[14]=new Array("n","u","nt","m","r","ui","b","i","h","p","f","s","c","ur","uir")

syl[15]=new Array("a","e","ou","re","i","o","ri","eu","u","ro","lu","le","en","la","ai","li","leu","au","eau","on","an","ren","oin","oi","rin","lein","lon","in","he","ain","ay","ha","lait","hi","lain","lei","ei","len","roi","ru","lau","lan","ret","loy","rou","ez","hes","om","loi","ra","reu","uy","ho","lat","run","y","ein","hra","hry","lo","hee","hent","hti","hton","lez","lin","ouil","rein","sau")

syl[16]=new Array("ue","ue","ui","u","uan","uoi","ua","ueu","uin","uai","uo","uon")

syl[17]=new Array("e","e","i","a","o","ai","on","eu","ou","u","an","en","oi","ei","eau","ez","ain","ieu","au","ein","oy","ey","he","hin","ha","in","hu","y")

syl[18]=new Array("e","u","on","a","i","an","ou","o","ai","en","eu","ain","oi","ez","in","au","eau","ei","cu","pe","ce","ple","que","ta","ti","tru","tu","ci","ein","tan","ca","y","tre","cru","ey","oin","pa","ty","te","toi","tro","co","cri","pi","cin","ho","phe","po","cha","chi","tra","tri")

syl[19]=new Array("e","e","re","ou","i","u","a","on","oi","ai","o","en","an","ri","ra","rou","ion","ro","rai","eu","in","ran","y","ez","eau","he","roi","ein","ru","ain","au","oy","rei","rin","ren","ron","eil","ay","reu","ry")

syl[20]=new Array("n","r","l")

syl[21]=new Array("e","i","ou","o","oi","a","an","en","re","ai","eu","re","ain","in","on","au","rai","u","ri","ran","oy","eau","ra","ron","ro")

syl[22]=new Array("a","e")

syl[23]=new Array("e","i","a","an","u")

syl[24]=new Array("eu","o")

syl[25]=new Array("e","a","u","on","an","i","in","o","oi")

// Syllabes de fin de mot

var fin=new Array;

fin[0]=new Array("s","r","it","is","in","int","ng","ut","ins","nt","l","ix","t","ux","ys","c")

fin[1]=new Array("le","re","les","res","out","e","our","li")

fin[2]=new Array("he","e","i","hes","es","re","her","hant","le","un","hez","ean","tre","les","sin","hers","ree","te")

fin[3]=new Array("e","es","ieu","re","eux","ent","is","eur","ain","ee","it","its")

fin[4]=new Array("ur","ux","urs","t","nt","rs","ut","u","mps","r","ns","uil","nts","ul","au","ant","nd","ants","l","uf")

fin[5]=new Array("fre","fle","fe","ond","aud","front")

fin[6]=new Array("e","ne","es","le","res","re","ue","nes","les","out","ues","ands","ion","nan","ner","ard","and","neur")

fin[7]=new Array("ez","er","amp","amps","iens","ors")

fin[8]=new Array("t","eu","eux","en","el","ent","s","l","ls","eds","ens","er","ed","e","n","x","on","ant","ers","nq","ons")

fin[9]=new Array("ours","a","an","at","ets","ouis")

fin[10]=new Array("ir","o")

fin[11]=new Array(". L'",". E",". ",". A",". R",". ",". ",". Y","dats",", l'","eur","eon","ler",", à ","ant","ait","ors","eil","lons","que","lait","on. ","ein","me","lez","anc","ets","lon","et","leurs","ee","lant"," ou ","ons","ots","ais","ot","iers","ancs","ent","ieu","let","eins","eu","i","ier","is","ez","ie","ous")

fin[12]=new Array("e","ent","es","me","bre","mes","ain","ais","ents","our","er","ble","pe","ant","in","ier","i","is","it","ains","ir")

fin[13]=new Array("e","te","ce","tre","ge","es","ir","ant","ne","de","dre","se","si","neur","dit","des","tes","che","dant","ons","que","nant","i","ait","ger","s","dis","ez","ces","deur","it","see","tend","tent","ches","cor","ner","ton","dent","nent","al","at","drin","er","ie","tez","nes","tant","teau","fin","oux","re","sieur","tons","trer","on","nait","seur","tends","us","ze","gez","ier","ies","son")

fin[14]=new Array("us","n","ur","i","nt","ut","is","ir","rt","it","nd","nc","rts","m","urs","ix","up","irs","ue","int","in","ux","ups","rs","ie","u","ins","rd","l","nts","ts","uet","ng","urd","ms","ns")

fin[15]=new Array("le","e","res","ee","eau","les","re","long","in","pe","as","es","uis","ris","ens","os")

fin[16]=new Array("ue","ues","uin","uins","uant","uet","uais","uel","uer","uets")

fin[17]=new Array("e","te","es","re","is","ont","and","ait","ne","as","me","de","ce","be","ge","ai","eur","oit","ie","ons","reur","che","er","ent","uit","ands","ant","se","ain","ez","ois","on","tre","res","tes","os","mi","nes","dez","it","mes","eux","ir","tout","iant","nier","dre","ment","reaux","tu","bes","bre","mee","cher","ges","i","ieux","quoi","tant","ans","dent","ee","et","tyrs","al","ets","gent","mees","op","ais","des","end","le","oix","tez","tir","gie","oid","tis","aux","dant","oie","pre","tent","don","ends","les","litz","oits","onts","reau","an","at","geois","lant","ous","que")

fin[18]=new Array("se","e","te","sant","ses","es","on","que","ar","tre","ait","prit","sent","ser","ant","ent","sait","ons","tres","us","sants","crits","tes","eaux","sus","ee","tin","eau","er","poir","ard","sa","sis","aient","crit","seur","ert","ion","ions","sin","in")

fin[19]=new Array("e","re","es","te","ait","res","ant","ion","ion","er","tes","it","rie","our","on","eur","eurs","in","tre","eau","an","its","ez","el","ent","ons","tent","at","tant")

fin[20]=new Array("i","e","r","it","x","and","is","t","oi","el","eux","rs","ees","et","ez","es")

fin[21]=new Array("e","re","ant","ec","ait","es","oir","res","ez","ent","er","ons","ers","rant","ais","aux","ient","rait","ail","ants","rier","al","eur","eurs","eux")

fin[22]=new Array("e","er")

fin[23]=new Array("il","e","es","te","a")

fin[24]=new Array("ant","s","ez","on","ons")

fin[25]=new Array("ur","ar","on","e","ons","as")

// Génération de mot de passe: fonctions


function genere()

// Générer un mot

{

 var passe = "";

 var i;

 var a;

 while (passe.length < 4)

 {

  if (passe.length == 0)

  {

   a = choix(prem);

  }

  else

  {

   a = choix(suiv[alphaB.indexOf(passe.charAt(passe.length-1))]);

  }

 i = alphaB.indexOf(a);

 passe += a + syl[i][Math.floor(Math.random()*Math.random()*syl[i].length)];

 }

 a = choix(suiv[alphaB.indexOf(passe.charAt(passe.length-1))]);

 i = alphaB.indexOf(a);

 passe += a + fin[i][Math.floor(Math.random()*Math.random()*fin[i].length)];

 return passe;

}



function choix(lettres)

// Choix dans une chaîne de caractères

{

 return lettres.charAt(Math.floor(Math.random()*Math.random()*lettres.length));

}



function maju(s)

// Ajout aléatoire de majuscule

{

 var t = "";

 for (var i=0; i < s.length; i++)

 {

 if ((Math.floor(Math.random() * 11)) < 1)

  {

   t += s.charAt(i).toUpperCase();

  }

 else

  {

   t += s.charAt(i);

  }

 }

 return t;

}