$(document).ready(function() {
var strPassword;
var charPassword;
var security = $("#security");
var minLength = 7;
var baseScore = 0, score = 0;
var num = {};
num.Overflow = 0;
num.Upper = 0;
num.Numbers = 0;
num.Symbols = 0;
var bonus = {};
bonus.Overflow = 3;
bonus.Upper = 4;
bonus.Numbers = 5;
bonus.Symbols = 5;
bonus.Combo = 0;
bonus.FlatLower = 0;
bonus.FlatNumber = 0;
outputResult();
$("#password").bind("keyup", checkVal);
function checkVal() {
init();
if (charPassword.length >= minLength) {
baseScore = 50;
analyzeString();
calcSecurity();
} else {
baseScore = 0;
}
outputResult();
}
function init() {
strPassword= $("#password").val();
charPassword = strPassword.split("");
num.Overflow = 0;
num.Upper = 0;
num.Numbers = 0;
num.Symbols = 0;
bonus.Combo = 0;
bonus.FlatLower = 0;
bonus.FlatNumber = 0;
baseScore = 0;
score = 0;
}
function analyzeString () {
for (i=0; i<charPassword.length;i++) {
if (charPassword[i].match(/[A-Z]/g)) {num.Upper++;}
if (charPassword[i].match(/[0-9]/g)) {num.Numbers++;}
if (charPassword[i].match(/(.*[!,@,#,$,%,^,&,*,?,_,~])/)) {num.Symbols++;}
}
num.Overflow = charPassword.length - minLength;
if (num.Upper && num.Numbers && num.Symbols) {
bonus.Combo = 25;
} else if ((num.Upper && num.Numbers) || (num.Upper && num.Symbols) || (num.Numbers && num.Symbols)) {
bonus.Combo = 15;
}
if (strPassword.match(/^[\sa-z]+$/)) {
bonus.FlatLower = -15;
}
if (strPassword.match(/^[\s0-9]+$/)) {
bonus.FlatNumber = -35;
}
}
function calcSecurity() {
score = baseScore + (num.Overflow*bonus.Overflow) + (num.Upper*bonus.Upper) + (num.Numbers*bonus.Numbers) + (num.Symbols*bonus.Symbols) + bonus.Combo + bonus.FlatLower + bonus.FlatNumber;
}
function outputResult() {
if ($("#password").val()== "") {
security.html("").removeClass("weak strong stronger strongest").addClass("default");
} else if (charPassword.length < minLength) {
security.html("Bitte geben Sie mindestens " + minLength+ " Zeichen ein!").removeClass("strong stronger strongest").addClass("weak");
} else if (score<50) {
security.html("Ihr Passwort ist sehr wage!").removeClass("strong stronger strongest").addClass("weak");
} else if (score>=50 && score<75) {
security.html("Ihr Passwort ist durchschnittlich!").removeClass("stronger strongest").addClass("strong");
} else if (score>=75 && score<100) {
security.html("Ihr Passwort ist stark!").removeClass("strongest").addClass("stronger");
} else if (score>=100) {
security.html("Ihr Passwort ist sicher!").addClass("strongest");
}
}
});