// JavaScript Document
function testPassword(passwd)
{
var description = new Array();
description[0] = "<table border=0 cellpadding=0 cellspacing=0><tr><td><table cellpadding=0 cellspacing=2><tr><td height=15 width=30 bgcolor=#ff0000></td><td height=15 width=120 bgcolor=#dddddd></td></tr></table></td><td class=bold>Faible</td></tr></table>";
description[1] = "<table border=0 cellpadding=0 cellspacing=0><tr><td><table cellpadding=0 cellspacing=2><tr><td height=15 width=60 bgcolor=#bb0000></td><td height=15 width=90 bgcolor=#dddddd></td></tr></table></td><td class=bold>Non &eacute;valu&eacute;e</td></tr></table>";
description[2] = "<table border=0 cellpadding=0 cellspacing=0><tr><td><table cellpadding=0 cellspacing=2><tr><td height=15 width=90 bgcolor=#ff9900></td><td height=15 width=60 bgcolor=#dddddd></td></tr></table></td><td class=bold>Moyenne</td></tr></table>";
description[3] = "<table border=0 cellpadding=0 cellspacing=0><tr><td><table cellpadding=0 cellspacing=2><tr><td height=15 width=120 bgcolor=#00bb00></td><td height=15 width=30 bgcolor=#dddddd></td></tr></table></td><td class=bold>&Eacute;lev&eacute;(e)</td></tr></table>";
description[4] = "<table border=0 cellpadding=0 cellspacing=0><tr><td><table cellpadding=0 cellspacing=2><tr><td height=15 width=150 bgcolor=#00ee00></td></tr></table></td><td class=bold>OPTIMALE</td></tr></table>";
description[5] = "<table border=0 cellpadding=0 cellspacing=0><tr><td><table cellpadding=0 cellspacing=2><tr><td height=15 width=150 bgcolor=#dddddd></td></tr></table></td><td class=bold></td></tr></table>";

      var intScore   = 0
      var strVerdict = 0
      
      // PASSWORD LENGTH
      if (passwd.length==0 || !passwd.length)                         // length 0
      {
         intScore = -1
      }
      else if (passwd.length>0 && passwd.length<5) // length between 1 and 4
      {
         intScore = (intScore+3)
      }
      else if (passwd.length>4 && passwd.length<8) // length between 5 and 7
      {
         intScore = (intScore+6)
      }
      else if (passwd.length>7 && passwd.length<12)// length between 8 and 15
      {
         intScore = (intScore+12)
      }
      else if (passwd.length>11)                    // length 16 or more
      {
         intScore = (intScore+18)
      }
      
      
      // LETTERS (Not exactly implemented as dictacted above because of my limited understanding of Regex)
      if (passwd.match(/[a-z]/))                              // [verified] at least one lower case letter
      {
         intScore = (intScore+1)
      }
      
      if (passwd.match(/[A-Z]/))                              // [verified] at least one upper case letter
      {
         intScore = (intScore+5)
      }
      
      // NUMBERS
      if (passwd.match(/\d+/))                                 // [verified] at least one number
      {
         intScore = (intScore+5)
      }
      
      if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/))             // [verified] at least three numbers
      {
         intScore = (intScore+5)
      }
      
      
      // SPECIAL CHAR
      if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))            // [verified] at least one special character
      {
         intScore = (intScore+5)
      }
      
                                                 // [verified] at least two special characters
      if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
      {
         intScore = (intScore+5)
      }
   
      
      // COMBOS
      if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))        // [verified] both upper and lower case
      {
         intScore = (intScore+2)
      }

      if (passwd.match(/(\d.*\D)|(\D.*\d)/))                    // [FAILED] both letters and numbers, almost works because an additional character is required
      {
         intScore = (intScore+2)
      }
 
                                                  // [verified] letters, numbers, and special characters
      if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
      {
         intScore = (intScore+2)
      }
   
   
      if(document.getElementById("password_field").value.length < document.getElementById("password_field").getAttribute('minLenght'))
      {
         strVerdict = description[5];
		 document.getElementById("level").innerHTML = 'Trop court';
		 document.getElementById("level_left").style.width = '5px';
		 document.getElementById("level_right").style.width = '114px';
		 document.getElementById("level_left").style.backgroundColor = '#8f8f8f';
		 document.getElementById("level").style.color = '#8f8f8f';
      }
      else if(intScore == -1)
      {
         strVerdict = description[5];
      }
      else if(intScore > -1 && intScore < 16)
      {
         strVerdict = description[0];
		 document.getElementById("level").innerHTML = 'Faible';
		 document.getElementById("level_left").style.width = '30px';
		 document.getElementById("level_right").style.width = '89px';
		 document.getElementById("level_left").style.backgroundColor = '#ff0000';
		 document.getElementById("level").style.color = '#ff0000';
		 
      }
      else if (intScore > 15 && intScore < 25)
      {
         strVerdict = description[1];
		 document.getElementById("level").innerHTML = 'Moyen';
		 document.getElementById("level_left").style.width = '49px';
		 document.getElementById("level_right").style.width = '70px';
		 document.getElementById("level_left").style.backgroundColor = '#ffb400';
		 document.getElementById("level").style.color = '#e8a200';
      }
      else if (intScore > 24 && intScore < 35)
      {
         strVerdict = description[2];
		 document.getElementById("level").innerHTML = 'Bon';
		 document.getElementById("level_left").style.width = '68px';
		 document.getElementById("level_right").style.width = '51px';
		 document.getElementById("level_left").style.backgroundColor = '#00bb00';
		 document.getElementById("level").style.color = '#00bb00';
      }
      else if (intScore > 34 && intScore < 45)
      {
         strVerdict = description[3];
		 document.getElementById("level").innerHTML = 'Elev&eacute;';
		 document.getElementById("level_left").style.width = '94px';
		 document.getElementById("level_right").style.width = '25px';
		 document.getElementById("level_left").style.backgroundColor = '#00ee00';
		 document.getElementById("level").style.color = '#00ee00';
      }
      else
      {
         strVerdict = description[4];
		 document.getElementById("level").innerHTML = 'Optimal';
		 document.getElementById("level_left").style.width = '119px';
		 document.getElementById("level_right").style.width = '0px';
		 document.getElementById("level_left").style.backgroundColor = '#f7eb00';
		 document.getElementById("level").style.color = '#e5da00';
      }
   
   //document.getElementById("Words").innerHTML= (strVerdict);
} 
