Index: /trunk/src/bp-templates/bp-legacy/buddypress-functions.php
===================================================================
--- /trunk/src/bp-templates/bp-legacy/buddypress-functions.php	(revision 8685)
+++ /trunk/src/bp-templates/bp-legacy/buddypress-functions.php	(revision 8686)
@@ -254,4 +254,19 @@
 			wp_enqueue_script( 'comment-reply' );
 		}
+
+		// Maybe enqueue password verify JS (register page or user settings page)
+		if ( bp_is_register_page() || ( function_exists( 'bp_is_user_settings_general' ) && bp_is_user_settings_general() ) ) {
+			$min      = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
+			$filename = "password-verify{$min}.js";
+
+			// Locate the Register Page JS file
+			$asset = $this->locate_asset_in_stack( $filename, 'js' );
+
+			// Enqueue script
+			$dependencies = array_merge( bp_core_get_js_dependencies(), array(
+				'password-strength-meter',
+			) );
+			wp_enqueue_script( $asset['handle'] . '-password-verify', $asset['location'], $dependencies, $this->version);
+		}
 	}
 
Index: /trunk/src/bp-templates/bp-legacy/buddypress/members/register.php
===================================================================
--- /trunk/src/bp-templates/bp-legacy/buddypress/members/register.php	(revision 8685)
+++ /trunk/src/bp-templates/bp-legacy/buddypress/members/register.php	(revision 8686)
@@ -40,9 +40,10 @@
 				<label for="signup_password"><?php _e( 'Choose a Password', 'buddypress' ); ?> <?php _e( '(required)', 'buddypress' ); ?></label>
 				<?php do_action( 'bp_signup_password_errors' ); ?>
-				<input type="password" name="signup_password" id="signup_password" value="" />
+				<input type="password" name="signup_password" id="signup_password" value="" class="password-entry" />
+				<div id="pass-strength-result"></div>
 
 				<label for="signup_password_confirm"><?php _e( 'Confirm Password', 'buddypress' ); ?> <?php _e( '(required)', 'buddypress' ); ?></label>
 				<?php do_action( 'bp_signup_password_confirm_errors' ); ?>
-				<input type="password" name="signup_password_confirm" id="signup_password_confirm" value="" />
+				<input type="password" name="signup_password_confirm" id="signup_password_confirm" value="" class="password-entry-confirm" />
 
 				<?php do_action( 'bp_account_details_fields' ); ?>
Index: /trunk/src/bp-templates/bp-legacy/buddypress/members/single/settings/general.php
===================================================================
--- /trunk/src/bp-templates/bp-legacy/buddypress/members/single/settings/general.php	(revision 8685)
+++ /trunk/src/bp-templates/bp-legacy/buddypress/members/single/settings/general.php	(revision 8686)
@@ -14,6 +14,7 @@
 
 	<label for="pass1"><?php _e( 'Change Password <span>(leave blank for no change)</span>', 'buddypress' ); ?></label>
-	<input type="password" name="pass1" id="pass1" size="16" value="" class="settings-input small" /> &nbsp;<?php _e( 'New Password', 'buddypress' ); ?><br />
-	<input type="password" name="pass2" id="pass2" size="16" value="" class="settings-input small" /> &nbsp;<?php _e( 'Repeat New Password', 'buddypress' ); ?>
+	<input type="password" name="pass1" id="pass1" size="16" value="" class="settings-input small password-entry" /> &nbsp;<?php _e( 'New Password', 'buddypress' ); ?><br />
+	<div id="pass-strength-result"></div>
+	<input type="password" name="pass2" id="pass2" size="16" value="" class="settings-input small password-entry-confirm" /> &nbsp;<?php _e( 'Repeat New Password', 'buddypress' ); ?>
 
 	<?php do_action( 'bp_core_general_settings_before_submit' ); ?>
Index: /trunk/src/bp-templates/bp-legacy/css/buddypress.css
===================================================================
--- /trunk/src/bp-templates/bp-legacy/css/buddypress.css	(revision 8685)
+++ /trunk/src/bp-templates/bp-legacy/css/buddypress.css	(revision 8686)
@@ -530,4 +530,39 @@
 	border: 1px solid #591;
 	color: #250;
+}
+#buddypress #pass-strength-result {
+	background-color: #eee;
+	border-color: #ddd;
+	border-style: solid;
+	border-width: 1px;
+	display: none;
+	margin: 5px 5px 5px 0;
+	padding: 5px;
+	text-align: center;
+	width: 150px;
+}
+#buddypress .standard-form #basic-details-section #pass-strength-result {
+	width: 35%;
+}
+#buddypress #pass-strength-result.error,
+#buddypress #pass-strength-result.bad {
+	background-color: #ffb78c;
+	border-color: #ff853c !important;
+	display: block;
+}
+#buddypress #pass-strength-result.good {
+	background-color: #ffec8b;
+	border-color: #fc0 !important;
+	display: block;
+}
+#buddypress #pass-strength-result.short {
+	background-color: #ffa0a0;
+	border-color: #f04040 !important;
+	display: block;
+}
+#buddypress #pass-strength-result.strong {
+	background-color: #c3ff88;
+	border-color: #8dff1c !important;
+	display: block;
 }
 #buddypress .standard-form#signup_form div div.error {
Index: /trunk/src/bp-templates/bp-legacy/js/password-verify.js
===================================================================
--- /trunk/src/bp-templates/bp-legacy/js/password-verify.js	(revision 8686)
+++ /trunk/src/bp-templates/bp-legacy/js/password-verify.js	(revision 8686)
@@ -0,0 +1,42 @@
+/* Password Verify */
+( function( $ ){
+	function check_pass_strength() {
+		var pass1 = $( '.password-entry' ).val(),
+		    pass2 = $( '.password-entry-confirm' ).val(),
+		    strength;
+
+		// Reset classes and result text
+		$( '#pass-strength-result' ).removeClass( 'short bad good strong' );
+		if ( ! pass1 ) {
+			$( '#pass-strength-result' ).html( pwsL10n.empty );
+			return;
+		}
+
+		strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), 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'] );
+				break;
+		}
+	}
+
+	// Bind check_pass_strength to keyup events in the password fields
+	$( document ).ready( function() {
+		$( '.password-entry' ).val( '' ).keyup( check_pass_strength );
+		$( '.password-entry-confirm' ).val( '' ).keyup( check_pass_strength );
+	});
+
+} )( jQuery );
