(function($) {
//alert('here');
$.pwstrength = function(password) {
//alert('here2');
var score = 0,
length = password.length,
upperCase, lowerCase, digits, nonAlpha;
if (length < 5) score += 0;
else if (length < 8) score += 5;
else if (length < 16) score += 10;
else score += 15;
lowerCase = password.match(/[a-z]/g);
if (lowerCase) score += 1;
upperCase = password.match(/[A-Z]/g);
if (upperCase) score += 5;
if (upperCase && lowerCase) score += 2;
digits = password.match(/\d/g);
if (digits && digits.length > 1) score += 5;
nonAlpha = password.match(/\W/g)
if (nonAlpha) score += (nonAlpha.length > 1) ? 15 : 10;
//if (upperCase && lowerCase && digits && nonAlpha) score += 15;
if (password.match(/\s/)) score += 10;
//alert(score);
/*if (score < 15) return 0;
if (score < 20) return 1;
if (score < 35) return 2;
if (score < 50) return 3;*/
if (score < 10) return 0;
if (score < 15) return 1;
if (score < 20) return 2;
if (score < 35) return 3;
return 4;
};
function updateIndicator(event) {
var strength = $.pwstrength($(this).val()),
options = event.data,
klass;
klass = options.classes[strength];
options.indicator.removeClass(options.indicator.data('pwclass'));
options.indicator.data('pwclass', klass);
options.indicator.addClass(klass);
options.indicator.find(options.label).html(options.texts[strength]);
}
$.fn.pwstrength = function(options) {
var options = $.extend({
label: '.label',
classes: ['pw-very-weak', 'pw-weak', 'pw-mediocre', 'pw-strong', 'pw-very-strong'],
texts: ['Very Weak', 'Weak', 'Medium Password ', 'Acceptable Password ', 'Very Strong']
}, options || {});
options.indicator = $('#' + this.data('indicator'));
return this.keyup(options, updateIndicator);
};
})(jQuery);