Index: modules/system/system.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.css,v
retrieving revision 1.62
diff -u -p -r1.62 system.css
--- modules/system/system.css	5 Sep 2009 06:07:58 -0000	1.62
+++ modules/system/system.css	15 Sep 2009 15:29:32 -0000
@@ -520,15 +520,22 @@ html.js .js-hide {
 /*
 ** Password strength indicator
 */
+#password-strength {
+  width: 17em;
+  float: right;  /* LTR */
+  margin-top: 1.4em;
+}
 .password-strength-title {
-  float: left; /* LTR */
+  display: inline;
+}
+#password-strength-text {
+  float: right; /* LTR */
+  font-weight: bold;
 }
 #password-indicator {
-  border: 1px solid #B4B4B4;
-  float: right;
-  height: 0.9em;
-  margin: 0.3em 0.80em 0 0.3em;
-  width: 5em;
+  background-color: #C4C4C4;
+  height: 0.3em;
+  width: 100%;
 }
 #password-indicator div {
   height: 100%;
@@ -539,6 +546,10 @@ input.password-confirm, input.password-f
   width: 16em;
   margin-bottom: 0.4em;
 }
+div.password-confirm {
+  display: inline;
+  padding-left: 1em;
+}
 div.password-suggestions {
   padding: 0.2em 0.5em;
   margin: 0.7em 0;
@@ -550,8 +561,7 @@ div.password-suggestions ul {
 }
 .password-parent {
   margin: 0;
-  float: left; /* LTR */
-  width: 17.3em;
+  width: 34.3em;
 }
 
 /*
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1043
diff -u -p -r1.1043 user.module
--- modules/user/user.module	11 Sep 2009 06:20:49 -0000	1.1043
+++ modules/user/user.module	15 Sep 2009 15:29:32 -0000

@@ -2829,6 +2830,10 @@ function _user_password_dynamic_validati
         'sameAsUsername' => t('Make it different from your username'),
         'confirmSuccess' => t('yes'),
         'confirmFailure' => t('no'),
+        'weak'           => t('Weak'),
+        'fair'           => t('Fair'),
+        'good'           => t('Good'),
+        'strong'         => t('Strong'),
         'confirmTitle' => t('Passwords match:'),
         'username' => (isset($user->name) ? $user->name : ''))),
       'setting');
Index: modules/user/user.js
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.js,v
retrieving revision 1.17
diff -u -p -r1.17 user.js
--- modules/user/user.js	31 Aug 2009 05:51:08 -0000	1.17
+++ modules/user/user.js	15 Sep 2009 15:29:32 -0000
@@ -18,10 +18,11 @@ Drupal.behaviors.password = {
       var passwordResult = $('span.password-result', passwordStrength);
       innerWrapper.addClass('password-parent');
 
-      // Add the description box at the end.
-      var passwordMeter = '<div id="password-strength"><div class="password-strength-title">' + translate.strengthTitle + '</div><div id="password-indicator"><div id="indicator"></div></div></div>';
+      // Add the description box.
+      var passwordMeter = '<div id="password-strength"><div id="password-strength-text"></div><div class="password-strength-title">' + translate.strengthTitle + '</div><div id="password-indicator"><div id="indicator"></div></div></div>';
+
       $('div.description', outerWrapper).prepend('<div class="password-suggestions"></div>');
-      $(innerWrapper).append(passwordMeter);
+      $(innerWrapper).prepend(passwordMeter);
       var passwordDescription = $('div.password-suggestions', outerWrapper).hide();
 
       // Add the password confirmation layer.
@@ -51,6 +52,11 @@ Drupal.behaviors.password = {
 
         // Adjust the length of the strength indicator.
         $('#indicator').css('width', result.strength + '%');
+        $("#indicator").css('background-color', result.indicatorColor);
+
+        // Update the strength indication text
+        $("#password-strength-text").html(result.indicatorText);
+        $("#password-strength-text").css('color', result.indicatorColor);
 
         passwordCheckMatch();
       };
@@ -155,9 +161,26 @@ Drupal.evaluatePasswordStrength = functi
     strength = 5;
   }
 
+  // Based on the strength, work out what text/color should be shown by the password strength meter
+  // if (indicatorText == translate.sameAsUsername2 || indicatorText == translate.tooShort2) {
+   if (strength < 60) {
+    indicatorText = translate.weak;
+    indicatorColor = '#bb5555';
+  } else if (strength < 70) {
+    indicatorText = translate.fair;
+    indicatorColor = '#bbbb55';
+  } else if (strength < 80) {
+    indicatorText = translate.good;
+    indicatorColor = '#4863a0';
+  } else if (strength < 100) {
+    indicatorText = translate.strong;
+    indicatorColor = '#47C965';
+  }
+
   // Assemble the final message.
   msg = translate.hasWeaknesses + '<ul><li>' + msg.join('</li><li>') + '</li></ul>';
-  return { strength: strength, message: msg };
+  return { strength: strength, message: msg, indicatorText: indicatorText, indicatorColor: indicatorColor };
+
 };
 
 /**
