﻿function DonneNombreHasard(Minimum, Maximum) 
{
	return (Math.floor(Math.random() * (Maximum - Minimum)) + Minimum);
}

function DonneCaractereHasard(Chiffres, Minuscules, Majuscules, Autres) 
{
	var LesChiffres 			= "0123456789";
	var LesMinuscules 			= "abcdefghijklmnopqrstuvwxyz";
	var LesMajuscules 			= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var LesAutres 				= "`~!@#$%^&*()-_=+[{]}\\|;:'\",<.>/? ";
	var ChaineCaracteres 	= ""
	
	if (Chiffres == true)	  	ChaineCaracteres += LesChiffres;
	if (Minuscules == true) 	ChaineCaracteres += LesMinuscules;
	if (Majuscules == true) 	ChaineCaracteres += LesMajuscules;
	if (Autres == true)     	ChaineCaracteres += LesAutres;
	
	return ChaineCaracteres.charAt(DonneNombreHasard(0, ChaineCaracteres.length));
}

function ComposerMotPasse(NbCaracteres,ChiffreDebut,MinusculeDebut,MajusculeDebut,AutreDebut,ChiffreSuite,MinusculeSuite,MajusculeSuite, AutreSuite) 
{
	var Resultat = "";
	if (NbCaracteres > 0) Resultat = Resultat + DonneCaractereHasard(ChiffreDebut,MinusculeDebut,MajusculeDebut,AutreDebut);
	for (var i = 1; i < NbCaracteres; ++i) 
	{
		Resultat = Resultat + DonneCaractereHasard(ChiffreSuite,MinusculeSuite,MajusculeSuite,AutreSuite);
	}
	return Resultat;
}

function Generer()
{
	document.Generateur.password.value =
		ComposerMotPasse
		(
			document.Generateur.NbCaracteres.value, 
			document.Generateur.ChiffreDebut.checked, 
			document.Generateur.MinusculeDebut.checked,
			document.Generateur.MajusculeDebut.checked, 
			document.Generateur.AutreDebut.checked,
			document.Generateur.ChiffreSuite.checked, 
			document.Generateur.MinusculeSuite.checked,
			document.Generateur.MajusculeSuite.checked, 
			document.Generateur.AutreSuite.checked
		);
}