 <!--
// Password strength meter v1.0
// Matthew R. Miller - 2007
// www.codeandcoffee.com
// Based off of code from  http://www.intelligent-web.co.uk

// Settings
// -- Toggle to true or false, if you want to change what is checked in the password
var bCheckNumbers = true;
var bCheckUpperCase = true;
var bCheckLowerCase = true;
var bCheckPunctuation = true;
var nPasswordLifetime = 365;

// Check password
function checkPassword(passwd)
{
        var intScore   = 0
		//var strVerdict = "weak"
		//var strLog     = ""
		
		// PASSWORD LENGTH
		if (passwd.length<5)                         // length 4 or less
		{
			intScore = (intScore+3)
			//strLog   = strLog + "3 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>4 && passwd.length<8) // length between 5 and 7
		{
			intScore = (intScore+6)
			//strLog   = strLog + "6 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>7 && passwd.length<16)// length between 8 and 15
		{
			intScore = (intScore+12)
			//strLog   = strLog + "12 points for length (" + passwd.length + ")\n"
		}
		else if (passwd.length>15)                    // length 16 or more
		{
			intScore = (intScore+18)
			//strLog   = strLog + "18 point for length (" + passwd.length + ")\n"
		}
		
		
		// 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)
			//strLog   = strLog + "1 point for at least one lower case char\n"
		}
		
		if (passwd.match(/[A-Z]/))                              // [verified] at least one upper case letter
		{
			intScore = (intScore+5)
			//strLog   = strLog + "5 points for at least one upper case char\n"
		}
		
		// NUMBERS
		if (passwd.match(/\d+/))                                 // [verified] at least one number
		{
			intScore = (intScore+5)
			//strLog   = strLog + "5 points for at least one number\n"
		}
		
		if (passwd.match(/(.*[0-9].*[0-9].*[0-9])/))             // [verified] at least three numbers
		{
			intScore = (intScore+5)
			//strLog   = strLog + "5 points for at least three numbers\n"
		}
		
		
		// SPECIAL CHAR
		if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/))            // [verified] at least one special character
		{
			intScore = (intScore+5)
			//strLog   = strLog + "5 points for at least one special char\n"
		}
		
									 // [verified] at least two special characters
		if (passwd.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/))
		{
			intScore = (intScore+5)
			//strLog   = strLog + "5 points for at least two special chars\n"
		}
	
		
		// COMBOS
		if (passwd.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/))        // [verified] both upper and lower case
		{
			intScore = (intScore+2)
			//strLog   = strLog + "2 combo points for upper and lower letters\n"
		}

		if (passwd.match(/([a-zA-Z])/) && passwd.match(/([0-9])/)) // [verified] both letters and numbers
		{
			intScore = (intScore+2)
			//strLog   = strLog + "2 combo points for letters and numbers\n"
		}
 
									// [verified] letters, numbers, and special characters
		if (passwd.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/))
		{
			intScore = (intScore+2)
			//strLog   = strLog + "2 combo points for letters, numbers and special chars\n"
		}
	
	return intScore;
}
 
// Runs password through check and then updates GUI 
function runPassword(strPassword, strFieldID) 
{
	// Check password
	var intScore = checkPassword(strPassword);
	
	 // Get controls
    var ctlBar = document.getElementById(strFieldID + "_bar"); 
    var ctlText = document.getElementById(strFieldID + "_text");
    if (!ctlBar || !ctlText)
    	return;
    	
    
    if(strPassword.length <= 0)
	{
		strColor = "#C0C0C0";
 		strText = "Not Rated";
 		ctlBar.style.width = "0%";
	}
    else if(intScore < 16)
	{
		strColor = "#FF0000";
 		strText = "Weak";
 		ctlBar.style.width = "10%";
	}
	else if (intScore > 15 && intScore < 25)
	{
		strColor = "#FF0000";
 		strText = "Fair";
 		ctlBar.style.width = "20%";
	}
	else if (intScore > 24 && intScore < 35)
	{
		strText = "Good";
 		strColor = "#9ACD32";
 		ctlBar.style.width = "50%";
	}
	else if (intScore > 34 && intScore < 45)
	{
	    strText = "Strong";
 		strColor = "#006400";
 		ctlBar.style.width = "80%";
	}
	else
	{
	    strText = "Very Strong";
 		strColor = "#006400";
 		ctlBar.style.width = "100%";
	}
		
	ctlBar.style.backgroundColor = strColor;
	ctlText.innerHTML = "<span style='color: " + strColor + ";'>" + strText + "</span>";
}
 
    function ValidatePasswordRating(sender, args)
    {
        if(args.Value.length<4)
	    {
	        args.IsValid = false;
	    }
        else
        {
            args.IsValid = true;
        }
    }
 
 //-->
 
 
 
 
 


