﻿// Fichier JScript
// ctl00_ContentPlaceHolder1_btnModifier" disabled="disabled"
var MinCaracteres = 6; // Nombre minimum de caratères du mot de passe
var CaracteresSecurite = 8; // Nombre de caractères correct pour un mot de passe
var SecuriteBouton = 2; // Niveau de sécurité pour dévérouiller le bouton Faible : 1, Moyen : 2, Fort : 3
// images des différents niveaux
var PicSecurite = new Array();
PicSecurite[0] = url_site+"/lib/js/images/NiveauZero.PNG";
PicSecurite[1] = url_site+"/lib/js/images/NiveauFaible.PNG";
PicSecurite[2] = url_site+"/lib/js/images/NiveauMoyen.PNG";
PicSecurite[3] = url_site+"/lib/js/images/NiveauFort.PNG";

var preLoadSecurite = new Array();

for (i = 0; i < 4; i++){
   preLoadSecurite[i] = new Image();
   preLoadSecurite[i].src = PicSecurite[i];
}

function NiveauSecurite()
{ 
    // pwd : Mot de passe à vérifier
    var pwd = document.getElementById("txtPdw").value ; 

    if (IsStrong(pwd))
    {
	    document.getElementById("imgNiveauSecurite").src = preLoadSecurite[3].src;
	    //document.getElementById("btnValider").disabled = false;
    }
    else if (IsMedium(pwd))
    {
	    document.getElementById("imgNiveauSecurite").src = preLoadSecurite[2].src;
 	    if (SecuriteBouton<=2)
	    {
	       // document.getElementById("btnValider").disabled = false;
	    }else{
	        //document.getElementById("btnValider").disabled = true;
	    }
    }
    else if (IsWeak(pwd))
    {
	    document.getElementById("imgNiveauSecurite").src = preLoadSecurite[1].src;
 	    if (SecuriteBouton<=1)
	    {
	        //document.getElementById("btnValider").disabled = false;
	    }else{
	        //document.getElementById("btnValider").disabled = true;
	    }
    }
    else
    {
	    document.getElementById("imgNiveauSecurite").src = preLoadSecurite[0].src;
	    //document.getElementById("btnValider").disabled = true;
    }
}

function IsStrong(pwd)
{
// niveau Fort
	if (pwd.length < CaracteresSecurite)
	{
		return false;
	}else{
        if (!SpansAtLeastNCharacterSets(pwd,3))
        {
        	return false;
        }else{
		    return true;
		}
	}	
}

function IsMedium(pwd)
{
// niveau Moyen
	if (pwd.length < CaracteresSecurite)
	{
		return false;
	}else{
        if (!SpansAtLeastNCharacterSets(pwd,2))
        {
        	return false;
        }else{
		    return true;
		}
	}	
}

function IsWeak(pwd)
{
// niveau Faible
	return (pwd.length >= (MinCaracteres));
}

function SpansAtLeastNCharacterSets( word, N)
{
// Calcul les différents types de caractères du mot de passe
// word : mot de passe, N : Nombre minimun de types de caractère différents pour retour à vrai 
	if (word == null)
		return false;
		
	var csets = new Array(false,false,false,false);

	ncs = 0;
	var listeNombre = "0123456789";
	var listeCaractereSpe = "&é'(-è_çà)=*ù!:;,?./§-+<>$£µ%"+'"';
    for (i = 0; i < word.length; i++)
	{
	    c= word.charAt(i);
		if (listeNombre.indexOf(c)>=0)
		{
		// caractère numérique
			if (csets[0] == false)
			{
				csets[0] = true;
				ncs++;
				if (ncs >= N)
					return true;
			}
		}
		else if (listeCaractereSpe.indexOf(c)>=0)
		{
		// caractère spécial
			if (csets[1] == false)
			{
				csets[1] = true;
				ncs++;
				if (ncs >= N)
					return true;
			}
		}
		else if (c.toUpperCase() ==c)
		{
		// caractère en Majuscule
			if (!csets[2])
			{
				csets[2] = true;
				ncs++;
				if (ncs >= N)
					return true;
			}
			continue;
		}
		else if (c.toLowerCase() ==c)
		{
		// caractère en Minuscule
			if (!csets[3])
			{
				csets[3] = true;
				ncs++;
				if (ncs >= N)
					return true;
			}
		}
	}
	return false;
}

function genere_passe(nb_caract,formul,champPasse,champConfirme) {
var chaine = Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9','\_', '\%', '\!', '\£', '\*', '\@', '\+', '\-');
var pass = '';
var nb, u;
for (u=1; u <= nb_caract; u++) {
nb = chaine.length;
nb = Math.round(Math.random()*chaine.length);
pass += chaine[nb];
var clean_pass = pass.replace('undefined','_')
}
document.forms[formul].elements[champPasse].value = clean_pass;
document.forms[formul].elements[champConfirme].value = clean_pass;
document.forms[formul].elements['genpasse'].checked = false;
NiveauSecurite();

//return pass;
}


