// JavaScript Validation de password
/** *********************************************************
*	@file www/js/pswd.js
*	@author Cyril COPHIGNON
*	@date 03/05/2007
*	@brief Bibliotheque javascript des password
********************************************************* */

/** 
*	@fn function NombreCaracteresNumeriques(valeur)
*	@brief fonction comptant le nombre de caracteres numeriques
*	@param valeur chaine 
*	@return	le nombre de caracteres numeriques
*/
function NombreCaracteresNumeriques(valeur)
{
	var nb= 0;
	var reg=new RegExp("[0-9]", "g"); 
	var resultat = valeur.match(reg);
	if(resultat)
	{
		for(i=0;i<resultat.length;++i) nb+=((resultat[i]).length);
	}
	return(nb);
}

/** 
*	@fn function NombreCaracteresNumeriques(valeur)
*	@brief fonction comptant le nombre de caracteres alpahbetiques minuscules
*	@param valeur chaine 
*	@return	le nombre de caracteres alpahbetiques minuscules
*/
function NombreCaracteresAlphabeticMinuscule(valeur)
{
	var nb= 0;
	var reg=new RegExp("[a-z]", "g"); 
	var resultat = valeur.match(reg);
	if(resultat)
	{
		for(i=0;i<resultat.length;++i) nb+=((resultat[i]).length);
	}
	return(nb);
}

/** 
*	@fn function NombreCaracteresNumeriques(valeur)
*	@brief fonction comptant le nombre de caracteres alpahbetiques Majuscules
*	@param valeur chaine 
*	@return	le nombre de caracteres alpahbetiques Majuscules
*/
function NombreCaracteresAlphabeticMajuscule(valeur)
{
	var nb= 0;
	var reg=new RegExp("[A-Z]", "g"); 
	var resultat = valeur.match(reg);
	if(resultat)
	{
		for(i=0;i<resultat.length;++i) nb+=((resultat[i]).length);
	}
	return(nb);
}

/** 
*	@fn function NombreCaracteresSpeciaux(valeur)
*	@brief fonction comptant le nombre de caracteres alpahbetiques Speciaux
*	@param valeur chaine 
*	@return	le nombre de caracteres alpahbetiques Speciaux
*/
function NombreCaracteresSpeciaux(valeur)
{
	var nb= 0;
	var reg=new RegExp("[^a-zA-Z0-9]"); 
	var resultat = valeur.match(reg);
	if(resultat)
	{
		for(i=0;i<resultat.length;++i) nb+=((resultat[i]).length);
	}
	return(nb);
}

/** 
*	@fn function NombreCaracteresSpeciaux(valeur)
*	@brief fonction verifiant la robustesse d'un mot de passe
*	@param valeur chaine 
*	@return	true ou false
*/
function IsRobuste(valeur)
{
	var robuste=true;
	var Num=NombreCaracteresNumeriques(valeur);
	var Alpham=NombreCaracteresAlphabeticMinuscule(valeur);
	var AlphaM=NombreCaracteresAlphabeticMajuscule(valeur);
	var NonAlpha=NombreCaracteresSpeciaux(valeur);
		
	if(valeur.length < 6 || Num==valeur.length || Alpham==valeur.length || AlphaM==valeur.length || NonAlpha==valeur.length) 
	{
		alert("Votre mot de passe n'est pas assez robuste. Il est conseillé de le changer.");
		return false;
	}
	
	if(!((Num 	>=1 	&& Alpham 	>=1) ||
	   (Num 	>=1 	&& AlphaM 	>=1) ||
	   (Num 	>=1 	&& NonAlpha >=1) ||
	   (Alpham 	>=1 	&& AlphaM 	>=1) ||
	   (Alpham 	>=1 	&& NonAlpha >=1) ||
	   (AlphaM 	>=1 	&& NonAlpha >=1))) 
	{
		alert("Votre mot de passe n'est pas assez robuste. Il est conseillé de le changer.");
		return false;
	}
	return true;
}
