// JavaScript Document
var commonPasswords = new Array('password','pass','passwd','contraseña','contrasena','secret',
'4444','55555','666666','7777777','88888888','999999999',
'1234','1246','12345','123456','1234567','12345678','123456789','1234567890',
'qwerty','qwertyu','qwertyui','qwertyuio','qwertyuiop',
'asdfhj','asdfghjk','asdfghjkl','asdfghjklñ',
'zxcvbn','zxcvbnm','zxcvbnm,','zxcvbnm,.','zxcvbnm,.-');

function passwordStrength(password)
{
	var desc = new Array();
	desc[0] = "Password not entered"
  desc[1] = "Very Weak";
	desc[2] = "Weak";
	desc[3] = "Better";
	desc[4] = "Medium";
	desc[5] = "Strong";
	desc[6] = "Strongest";

	var score = 0;



  //if password has lowercase characters give 1 point	
  if (password.match(/[a-z]/)) score++; 
  
  //if password has uppercase characters give 1 point
  if (password.match(/[A-Z]/)) score++;
  
	//if password has at least one number give 1 point
	if (password.match(/\d+/)) score++;

	//if password has at least one special caracther give 1 point
	if ( password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,),.,\,,:,\;]/) )	score++;

	//if password bigger than 7 give 1 point
	if (password.length > 7) {
    score++;
  } 
  else if (password.length > 0) {
    desc[score]+=" (minimum 8)";
  } 
  
	//if password bigger than 12 give another 1 point
	if (password.length > 12) score++;
	
	
	if (isCommonPassword(password)) {
      score = 1;
      desc[1]="Very Week (Dictionary Password)";
  }
  if (password.length==0){
      score = 0;
  }
  
	 document.getElementById("passwordDescription").innerHTML = desc[score];

	 document.getElementById("passwordStrength").className = "strength" + score;

}

function isCommonPassword(password) { 
 
    for (i = 0; i < commonPasswords.length; i++) { 
        var commonPassword = commonPasswords[i]; 
        if (password == commonPassword) { 
            return true; 
        } 
    } 
 
    return false; 
 
}
