wp/wp-admin/js/about.js
author ymh <ymh.work@gmail.com>
Wed, 06 Nov 2013 03:21:17 +0000
changeset 0 d970ebf37754
permissions -rw-r--r--
first import
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
(function($){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
	var password = 'Gosh, WordPress is grand.',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
		$input = $('#pass'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
		shouldAnimate = true,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
		timesForAnimation = [280, 300, 305, 310, 315, 325, 330, 345, 360, 370, 380, 400, 450, 500, 600],
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
		resultsCache = {},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
		indicatorString = $('#pass-strength-result').text();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
	function updateResult(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
		var strength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
		if ( typeof( resultsCache[ $input.val() ]) === 'undefined') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
			strength = wp.passwordStrength.meter($input.val(), [], $input.val());
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
			resultsCache[ $input.val() ] = strength;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
		} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
			strength = resultsCache[ $input.val() ];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
		$('#pass-strength-result').removeClass('short bad good strong');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
		switch ( strength ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
			case 2:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
				$('#pass-strength-result').addClass('bad').html( pwsL10n['bad'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
			case 3:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
				$('#pass-strength-result').addClass('good').html( pwsL10n['good'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
			case 4:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
				$('#pass-strength-result').addClass('strong').html( pwsL10n['strong'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
				break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
			default:
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
				$('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
	function resetMeter(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		$input.val('');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
		$('#pass-strength-result').text(indicatorString);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
		$('#pass-strength-result').removeClass('short bad good strong');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
	function animate(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
		if (shouldAnimate === false)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
			return;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
		if ($input.val().length < password.length){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
			$input.val( password.substr(0, $input.val().length + 1) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
			updateResult();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
			// Look like real typing by changing the speed new letters are added each time
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
			setTimeout( animate, ( timesForAnimation[ Math.floor( Math.random() * timesForAnimation.length ) ] ) );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
		} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
			resetMeter();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
			// When we reset, let's wait a bit longer than normal to start again
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
			setTimeout(animate, 700);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
	function begin(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		// we async load zxcvbn, so we need to make sure it's loaded before starting
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		if (typeof(zxcvbn) !== 'undefined')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
			animate();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
		else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
			setTimeout(begin,800);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
	}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
	// Turn off the animation on focus
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
	$input.on('focus', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
		shouldAnimate = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
		resetMeter();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
	// Act like a normal password strength meter
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
	$input.on('keyup', function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
		updateResult();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
	});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
	// Start the animation
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
	begin();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
})(jQuery);