﻿/* ************************************************************

Password Strength Factors and Weightings

password length:
level 0 (3 point): less than 4 characters
level 1 (6 points): between 5 and 7 characters
level 2 (12 points): between 8 and 15 characters
level 3 (18 points): 16 or more characters

letters:
level 0 (0 points): no letters
level 1 (5 points): all letters are lower case
level 2 (7 points): letters are mixed case

numbers:
level 0 (0 points): no numbers exist
level 1 (5 points): one number exists
level 1 (7 points): 3 or more numbers exists

special characters:
level 0 (0 points): no special characters
level 1 (5 points): one special character exists
level 2 (10 points): more than one special character exists

combinatons:
level 0 (1 points): letters and numbers exist
level 1 (1 points): mixed case letters
level 1 (2 points): letters, numbers and special characters 
					exist
level 1 (2 points): mixed case letters, numbers and special 
					characters exist

************************************************************ */

function getPasswordSecurityRating(passwd) {
    var intScore = 0

    // Password length
    if (passwd.length > 0 && passwd.length < 6)
        intScore = 1
    else {
        var ContainSecialChar = 0;
        var ContainLowerCase = 0;
        var ContainUpperCase = 0;
        var ContainNumber = 0;
        if (passwd.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) intScore = (intScore + 1);   // [verified] at least one special character
        if (passwd.match(/[a-z]/)) intScore = (intScore + 1);   // [verified] at least one lower case letter
        if (passwd.match(/[A-Z]/)) intScore = (intScore + 1);   // [verified] at least one upper case letter
        if (passwd.match(/[0-9]/)) intScore = (intScore + 1);   // [verified] at least one number
    }
    
    return intScore;
}