//Initialisation des variables globales //Nombre de caractere minimum var iCaractereMinimum = 6; //Nombre de caractere maximum var iCaractereMaximum = 8; //Le minimum qu'il faut avoir comme chiffre pour que ce soit secure var iMinimumChiffreSecure = 3; //Determination du nombre de caractere pour la repetition var ciMaxRepetition = 2; //Langue par defaut var sLangue = "en"; //Initialisation du message d'erreur var sMsgErreur = ""; //Caracteres autorises var aCaractereMajuscule = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var aCaractereMinuscule = "abcdefghijklmnopqrstuvwxyz"; var aChiffre = "0123456789"; //var aCaractereSpecial = "!@#$%-.&*?_~"; var aCaractereSpecial = "-_"; var aMotInterdit = new Array(); //Calcul de l'evaluateur //******************************************************** //Total des points a effectuer pour passer les niveaux var ciNiveauVert = 60 //Excellent (par defaut : 60) var ciNiveauBleu = 50 //Bon (par defaut : 55) var ciNiveauOrange = 35 //Moyen (par defaut : 35) //Tout ce qui est en dessous de 35 est insuffisant ! //Message d'erreur var aMsgErreur = new Array(); //Divers variables var sValeur = ""; var sNomElement = ""; var oFormulaire = ""; var oInputElement = ""; fCreerMessage = function (){ aMsgErreur["en"] = ["The password is required and may not exceed "+iCaractereMaximum+" characters.", "Please type a password (at least "+iCaractereMinimum+" characters).", "Invalid character.", "Repetition not allowed", "Number of characters still needed.", "Acceptable", "Good password", "Very good password", "Character string not allowed", "Please use a password that is different to your user name."]; aMsgErreur["fr"] = ["Le mot de passe est obligatoire et il ne doit pas dépasser "+iCaractereMaximum+" caractères.", "Vous devez entrer un mot de passe (au moins "+iCaractereMinimum+" caractères).", "Caractère Invalide.", "Répétition interdite", "Nombre de caractères insuffisants", "Acceptable", "Bon", "Excellent", "Chaîne de caractères interdite", "Veuillez utiliser un mot de passe différent de votre nom d'utilisateur"]; aMsgErreur["nl"] = ["Le mot de passe est obligatoire et il ne doit pas dépasser "+iCaractereMaximum+" caractères.", "Vous devez entrer un mot de passe (au moins "+iCaractereMinimum+" caractères).", "Ongeldig teken.", "Herhaling verboden", "Te weinig tekens", "Acceptabel", "Goed", "Perfect", "Verboden tekens", "Uw wachtwoord moet anders zijn dan uw gebruikersnaam"]; aMsgErreur["de"] = ["Die Eingabe des Passworts ist obligatorisch (nicht länger als "+iCaractereMaximum+" Buchstaben).", "Sie müssen ein Kennwort eingeben (mindestens "+iCaractereMinimum+" Zeichen).", "Ungültige Zeichen.", "Répétition interdite", "Anzahl der Zeichen nicht ausreichend", "Akzeptabel", "Gut", "Sehr gut", "Ungültige Zeichenkette", "Bitte verwenden Sie ein anderes Kennwort als Ihren Benutzernamen"]; aMsgErreur["it"] = ["La password è necessaria e non può superare "+iCaractereMaximum+" caratteri.", "Per favore inserisca la password (minimo "+iCaractereMinimum+" caratteri).", "Carattere non valido.", "Non é possibile ripetere caratteri.", "Numero di caratteri insufficiente", "Accettabile", "Bene", "Molto bene", "Sequenza di caratteri non autorizzata.", "Deve essere utilizzata una password diversa dal nome utente."]; aMsgErreur["es"] = ["La contraseña es obligatoria y no debe contener mas de "+iCaractereMaximum+" caracteres.", "Por favor ingresar una contraseña (mínimo "+iCaractereMinimum+" caracteres).", "Caracter inválido.", "Repetición prohibida", "Cantidad de caracteres insuficiente", "Aceptable", "Buena", "Muy buenas", "Cantidad de caracteres prohibida", "Ingrese una contraseña distinta al nombre de usuario."]; } // Check si la longueur du mot de passe est correcte function fLongueurPassword (){ var iTotalPoint = 0; if (sValeur.length < iCaractereMinimum){ iTotalPoint += 0; sMsgErreur = aMsgErreur[sLangue][4]; }else if (sValeur.length > (iCaractereMinimum-1) && sValeur.length < (iCaractereMaximum+1)){ //iTotalPoint += 10; iTotalPoint += 35; }else if (sValeur.length > (iCaractereMaximum)){ iTotalPoint += 25; sMsgErreur = aMsgErreur[sLangue][0]; } return iTotalPoint; } function fCompteurCaractere (iTotalCaractereMinuscule, iTotalCaractereMajuscule){ var iTotalPoint = 0; if (iTotalCaractereMajuscule == 0 && iTotalCaractereMinuscule != 0) { iTotalPoint += 7; }else if (iTotalCaractereMajuscule != 0 && iTotalCaractereMinuscule != 0) { iTotalPoint += 13; }else if (iTotalCaractereMajuscule != 0 && iTotalCaractereMinuscule == 0) { iTotalPoint += 15; } return iTotalPoint; } function fCheckCaractereValide (){ for (var iCompteur = 0; iCompteur < sValeur.length; iCompteur++){ if(aCaractereMajuscule.indexOf(sValeur.charAt(iCompteur),0) == -1){ if(aCaractereMinuscule.indexOf(sValeur.charAt(iCompteur),0) == -1){ if(aChiffre.indexOf(sValeur.charAt(iCompteur),0) == -1){ if(aCaractereSpecial.indexOf(sValeur.charAt(iCompteur),0) == -1){ sMsgErreur = aMsgErreur[sLangue][2]; return false; } } } } } } function fCheckMemeChaine(sChaine){ var sDebut = "^("; var sFin = ")*$"; var sRecherche = new RegExp(sDebut+sChaine+sFin,"g"); if(sRecherche.test(sValeur)){ return true; }else { return false; } } function fModulo(rChiffre,rBase) { return Math.round(rChiffre - (Math.floor(rChiffre/rBase)*rBase)); } function fCheckSequence(iTotalCaractere){ var sSequence = sValeur.substr(0, iTotalCaractere); if(!fCheckMemeChaine(sSequence)){ if(iTotalCaractere > ciMaxRepetition){ var iNouveauTotal = iTotalCaractere - 1; fCheckSequence(iNouveauTotal); }else{ return true; } }else { sMsgErreur = aMsgErreur[sLangue][3]; return false; } } function fCheckNotRepetition (){ //Test si c'est le meme caractere if(!fCheckMemeChaine(sValeur.charAt(0))){ var iSequenceCaractere = Math.floor((sValeur.length)/2); if(fCheckSequence(iSequenceCaractere)){ return true; } }else { //C'est le meme caractere sMsgErreur = aMsgErreur[sLangue][3]; return false; } } function fCheckMotInterdit(){ for(var iCompteur = 0; iCompteur < aMotInterdit.length; iCompteur++){ if(aMotInterdit[iCompteur] == sValeur){ sMsgErreur = aMsgErreur[sLangue][8]; return false; } } return true; } function fCheckUser(){ if(document.getElementById('iIdUser')){ if(document.getElementById('iIdUser').value != ""){ if(document.getElementById('iIdUser').value == sValeur){ sMsgErreur = aMsgErreur[sLangue][9]; return true; }else { return false; } }else { return false; } }else { return false; } } function fLongueurValide(){ if(sValeur.length > iCaractereMaximum){ sMsgErreur = aMsgErreur[sLangue][0]; // oInputElement.value = sValeur.substring(0,iCaractereMaximum); return false; }else { return true; } } // Check password function fCheckPasswordScore(){ //Initialisation var iTotalPoint = 0; //Validite du caractere fCheckCaractereValide(); if(sMsgErreur != ""){ return false; } //Longueur du mot de passe iTotalPoint = fLongueurPassword(); if(sMsgErreur != ""){ return false; } //Test le suivi des touches fCheckNotRepetition(); if(sMsgErreur != ""){ return false; } //Test des lettres normales var iTotalCarMaj = fCombienDsTableau(aCaractereMajuscule); var iTotalCarMin = fCombienDsTableau(aCaractereMinuscule); var iTotalCaractere = iTotalCarMin + iTotalCarMaj; iTotalPoint += fCompteurCaractere(iTotalCarMin, iTotalCarMaj); //Test des chiffres var iTotalNum = fCombienDsTableau(aChiffre); if (iTotalNum >= 1){ iTotalPoint += 5; } if (iTotalNum >= iMinimumChiffreSecure){ iTotalPoint += 5; } //Test caractere speciale var iTotalCarSpe = fCombienDsTableau(aCaractereSpecial); if (iTotalCarSpe == 1){ iTotalPoint += 10; } if (iTotalCarSpe > 1){ iTotalPoint += 25; } //Melange chiffre et caractere if (iTotalNum != 0 && iTotalCaractere != 0){ iTotalPoint += 2; } //Melange chiffre, caractere et caractere special if (iTotalNum != 0 && iTotalCarMaj != 0 && iTotalCarSpe != 0){ iTotalPoint += 3; } //Melange chiffre, caractere et caractere special if (iTotalNum != 0 && iTotalCarMaj != 0 && iTotalCarMin != 0 && iTotalCarSpe != 0){ iTotalPoint += 5; } return iTotalPoint; } function fCheckPassword(oElement, iMinimumCaractere, iMaximumCaractere, oForm) { sValeur = oElement.value; sNomElement = oElement.name; oInputElement = oElement; oFormulaire = oForm; iCaractereMinimum = iMinimumCaractere; iCaractereMaximum = iMaximumCaractere; sLangue = sLangue.charAt(0)+sLangue.charAt(1); fCreerMessage(); sMsgErreur = ""; if(sValeur != ""){ //Test si la longeur est valide if(fLongueurValide()){ //Test si c'est un mot de passe interdit if(fCheckMotInterdit()){ //Test si le mot de passe est identique au nom d'utilisateur if(!fCheckUser()){ // Recuperation des points pour ce mot de passe var iTotalPoint = fCheckPasswordScore(); if(sMsgErreur != ""){ var sTexte = sMsgErreur; fMsg('BarRed', 0); }else{ //alert(iTotalPoint); if (iTotalPoint >= ciNiveauVert){ var sTexte = aMsgErreur[sLangue][7]; fMsg('BarGreen', iTotalPoint); }else if (iTotalPoint >= ciNiveauBleu){ var sTexte = aMsgErreur[sLangue][6]; fMsg('BarBlue', iTotalPoint); }else if (iTotalPoint >= ciNiveauOrange){ var sTexte = aMsgErreur[sLangue][5]; fMsg('BarOrange', iTotalPoint); }else { var sTexte = aMsgErreur[sLangue][4]; fMsg('BarRed', 0); } } }else { var sTexte = sMsgErreur; fMsg('BarRed', 0); } }else { var sTexte = sMsgErreur; fMsg('BarRed', 0); } }else{ var sTexte = sMsgErreur; fMsg('BarRed', 0); } }else { var sTexte = ""; fMsg('', 0); } document.getElementById("iIdInfos").innerHTML = "" + sTexte + ""; } function fMsg(sClass, iPoint){ document.getElementById('iIdBarreCouleur').className=sClass; oFormulaire.iTotal.value = iPoint; } function fCombienDsTableau(aTableau){ var iTotal = 0; for (i = 0; i < sValeur.length; i++) { if (aTableau.indexOf(sValeur.charAt(i)) > -1) { iTotal++; } } return iTotal; }