/**
@name jQuery pwdMeter 1.0.1
@author Shouvik Chatterjee (mailme@shouvik.net) Modified by e107 Inc.
@date 31 Oct 2010
@modify 31 Dec 2010
@license Free for personal and commercial use as long as the author's name retains
*/
(function(jQuery){
jQuery.fn.pwdMeter = function(options){
options = jQuery.extend({
minLength: 6,
displayGeneratePassword: false,
generatePassText: 'Generate',
generatePassClass: 'GeneratePasswordLink',
randomPassLength: 13,
passwordBox: this
}, options);
var pwdObj = this;
$(pwdObj).after("Very Weak");
return this.each(function(index){
$(this).keyup(function(){
evaluateMeter();
});
function evaluateMeter(){
var passwordStrength = 0;
var password = $(options.passwordBox).val();
$("#showPwdBox").val(password);
if ((password.length >0) && (password.length <=5)) passwordStrength=1;
if (password.length >= options.minLength) passwordStrength++;
if ((password.match(/[a-z]/)) && (password.match(/[A-Z]/)) ) passwordStrength++;
if (password.match(/\d+/)) passwordStrength++;
if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)) passwordStrength++;
if (password.length > 12) passwordStrength++;
$('#pwdMeter').removeClass();
$('#pwdMeter').addClass('neutral');
switch(passwordStrength){
case 1:
$('#pwdMeter').addClass('veryweak');
$('#pwdMeter').text('Very Weak');
break;
case 2:
$('#pwdMeter').addClass('weak');
$('#pwdMeter').text('Weak');
break;
case 3:
$('#pwdMeter').addClass('medium');
$('#pwdMeter').text('Medium');
break;
case 4:
$('#pwdMeter').addClass('strong');
$('#pwdMeter').text('Strong');
break;
case 5:
$('#pwdMeter').addClass('verystrong');
$('#pwdMeter').text('Very Strong');
break;
default:
$('#pwdMeter').addClass('neutral');
$('#pwdMeter').text('Very Weak');
}
}
if(options.displayGeneratePassword){
$('#pwdMeter').before(' '+ options.generatePassText +'
');
$('#pwdMeter').after(' Show');
$(pwdObj).after('');
}
$('#Spn_PasswordGenerator').click(function(){
var randomPassword = random_password();
$('#Spn_NewPassword').text(randomPassword);
$(options.passwordBox).val(randomPassword);
// alert(randomPassword);
evaluateMeter();
});
$("#showPwd").click(function () {
var id = $(pwdObj).attr("type");
$(pwdObj).toggle();
$("#showPwdBox").toggle();
var text = $(this).text() == 'Show' ? 'Hide' : 'Show';
$(this).text(text);
});
function random_password() {
var allowed_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!?$?%^&*()_-+={[}]:;@~#|\<,>.?/";
var pwd_length = options.randomPassLength;
var rnd_pwd = '';
for (var i=0; i