(function($){ function passwordStrength(password1, username, password2) { var shortPass = 1, badPass = 2, goodPass = 3, strongPass = 4, mismatch = 5, symbolSize = 0, natLog, score; // password 1 != password 2 if ( (password1 != password2) && password2.length > 0) return mismatch //password < 4 if ( password1.length < 4 ) return shortPass //password1 == username if ( password1.toLowerCase() == username.toLowerCase() ) return badPass; if ( password1.match(/[0-9]/) ) symbolSize +=10; if ( password1.match(/[a-z]/) ) symbolSize +=26; if ( password1.match(/[A-Z]/) ) symbolSize +=26; if ( password1.match(/[^a-zA-Z0-9]/) ) symbolSize +=31; natLog = Math.log( Math.pow(symbolSize, password1.length) ); score = natLog / Math.LN2; if (score < 40 ) return badPass if (score < 56 ) return goodPass return strongPass; } function check_pass_strength() { var pass1 = $('#pass1').val(), user = $('#user_login').val(), pass2 = $('#pass2').val(), strength; $('#pass-strength-result').removeClass('short bad good strong'); if ( ! pass1 ) { $('#pass-strength-result').html( pwsL10n.empty ); return; } strength = passwordStrength(pass1, user, pass2); switch ( strength ) { case 2: $('#pass-strength-result').addClass('bad').html( pwsL10n['bad'] ); break; case 3: $('#pass-strength-result').addClass('good').html( pwsL10n['good'] ); break; case 4: $('#pass-strength-result').addClass('strong').html( pwsL10n['strong'] ); break; case 5: $('#pass-strength-result').addClass('short').html( pwsL10n['mismatch'] ); break; default: $('#pass-strength-result').addClass('short').html( pwsL10n['short'] ); } } $(document).ready( function() { $('#pass1').val('').keyup( check_pass_strength ); $('#pass2').val('').keyup( check_pass_strength ); $('#pass-strength-result').show(); $('.color-palette').click(function(){$(this).siblings('input[name=admin_color]').attr('checked', 'checked')}); $('#nickname').blur(function(){ var str = $(this).val() || $('#user_login').val(); var select = $('#display_name'); var sel = select.children('option:selected').attr('id'); select.children('#display_nickname').remove(); if ( ! select.children('option[value=' + str + ']').length ) select.append(''); $('#'+sel).attr('selected', 'selected'); }); $('#first_name, #last_name').blur(function(){ var select = $('#display_name'); var first = $('#first_name').val(), last = $('#last_name').val(); var sel = select.children('option:selected').attr('id'); $('#display_firstname, #display_lastname, #display_firstlast, #display_lastfirst').remove(); if ( first && ! select.children('option[value=' + first + ']').length ) select.append(''); if ( last && ! select.children('option[value=' + last + ']').length ) select.append(''); if ( first && last ) { if ( ! select.children('option[value=' + first + ' ' + last + ']').length ) select.append(''); if ( ! select.children('option[value=' + last + ' ' + first + ']').length ) select.append(''); } $('#'+sel).attr('selected', 'selected'); }); }); })(jQuery);