Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.335
diff -u -p -r1.335 form.inc
--- includes/form.inc	13 May 2009 17:23:48 -0000	1.335
+++ includes/form.inc	20 May 2009 01:31:37 -0000
@@ -1626,6 +1626,7 @@ function form_process_password_confirm($
     '#value' => empty($element['#value']) ? NULL : $element['#value']['pass1'],
     '#required' => $element['#required'],
     '#attributes' => array('class' => 'password-field'),
+    '#description' => t('A strong password consists of at least 6 characters, lower-case letters, upper-case letters, numbers and punctuation.'),
   );
   $element['pass2'] =  array(
     '#type' => 'password',
@@ -1633,6 +1634,7 @@ function form_process_password_confirm($
     '#value' => empty($element['#value']) ? NULL : $element['#value']['pass2'],
     '#required' => $element['#required'],
     '#attributes' => array('class' => 'password-confirm'),
+    '#description' => t('Enter a matching password.'),
   );
   $element['#element_validate'] = array('password_confirm_validate');
   $element['#tree'] = TRUE;
Index: misc/vertical-tabs.css
===================================================================
RCS file: /cvs/drupal/drupal/misc/vertical-tabs.css,v
retrieving revision 1.3
diff -u -p -r1.3 vertical-tabs.css
--- misc/vertical-tabs.css	19 May 2009 06:03:25 -0000	1.3
+++ misc/vertical-tabs.css	20 May 2009 01:31:37 -0000
@@ -47,11 +47,6 @@
 .vertical-tabs-list li a:hover {
   text-decoration: none;
 }
-.vertical-tabs-list li strong {
-  /* Strong tags are used around tab titles to indicate importance; however,
-     only the currently active tab should actually look bold. */
-  font-weight:normal;
-}
 .vertical-tabs-list li.selected {
   background: #fff;
   border-right-width: 0;
@@ -60,8 +55,8 @@
 .vertical-tabs-list li.selected a:focus {
   outline: 0;
 }
-.vertical-tabs-list li.selected strong {
-  font-weight: bold;
+.vertical-tabs-list li.selected strong,
+.vertical-tabs-list li.selected small {
   color: #000;
 }
 .vertical-tabs-list .summary {
Index: misc/vertical-tabs.js
===================================================================
RCS file: /cvs/drupal/drupal/misc/vertical-tabs.js,v
retrieving revision 1.4
diff -u -p -r1.4 vertical-tabs.js
--- misc/vertical-tabs.js	27 Apr 2009 20:19:35 -0000	1.4
+++ misc/vertical-tabs.js	20 May 2009 01:31:37 -0000
@@ -111,7 +111,7 @@ Drupal.theme.prototype.verticalTab = fun
   tab.item = $('<li class="vertical-tab-button"></li>')
     .append(tab.link = $('<a href="#"></a>')
       .append(tab.title = $('<strong></strong>').text(settings.title))
-      .append(tab.summary = $('<span class="summary"></span>')
+      .append(tab.summary = $('<small class="summary"></span>')
     )
   );
   return tab;
Index: modules/system/system-rtl.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system-rtl.css,v
retrieving revision 1.15
diff -u -p -r1.15 system-rtl.css
--- modules/system/system-rtl.css	20 Apr 2009 20:07:14 -0000	1.15
+++ modules/system/system-rtl.css	20 May 2009 01:31:38 -0000
@@ -95,12 +95,6 @@ input.password-confirm {
   margin-left: 10px;
   margin-right: 0;
 }
-.password-strength-title {
-  float: right;
-}
-.password-parent {
-  float: right;
-}
 
 .draggable a.tabledrag-handle {
   float: right;
Index: modules/system/system.css
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.css,v
retrieving revision 1.54
diff -u -p -r1.54 system.css
--- modules/system/system.css	11 Apr 2009 22:19:45 -0000	1.54
+++ modules/system/system.css	20 May 2009 01:31:40 -0000
@@ -521,14 +521,10 @@ html.js .js-hide {
 /*
 ** Password strength indicator
 */
-.password-strength-title {
-  float: left; /* LTR */
-}
 #password-indicator {
   border: 1px solid #B4B4B4;
-  float: right;
   height: 0.9em;
-  margin: 0.3em 0.80em 0 0.3em;
+  margin-bottom: 0.4em;
   width: 5em;
 }
 #password-indicator div {
@@ -549,18 +545,3 @@ div.password-suggestions {
 div.password-suggestions ul {
   margin-bottom: 0;
 }
-.password-parent {
-  margin: 0;
-  float: left; /* LTR */
-  width: 17.3em;
-}
-
-/*
-** Password confirmation checker
-*/
-.confirm-parent {
-  margin: 0;
-}
-div.password-confirm {
-  visibility: hidden;
-}
Index: modules/user/user.js
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.js,v
retrieving revision 1.14
diff -u -p -r1.14 user.js
--- modules/user/user.js	16 May 2009 20:10:50 -0000	1.14
+++ modules/user/user.js	20 May 2009 01:31:40 -0000
@@ -19,13 +19,16 @@ Drupal.behaviors.password = {
       innerWrapper.addClass('password-parent');
 
       // Add the description box at the end.
+      $('#edit-pass-pass1-wrapper > div.description').hide();
       var passwordMeter = '<div id="password-strength"><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);
-      var passwordDescription = $('div.password-suggestions', outerWrapper).hide();
+      $('#edit-pass-pass1-wrapper').append('<div class="password-suggestions"></div>');
+      var passwordDescription = $('div.password-suggestions', outerWrapper);
+      $('div.password-suggestions').html(translate.suggestionTitle + '<ul><li class="too-short">' + translate.tooShort + '</li><li class="add-lower-case">' + translate.addLowerCase + '</li><li class="add-upper-case">' + translate.addUpperCase + '</li><li class="add-numbers">' + translate.addNumbers + '</li><li class="add-punctuation">' + translate.addPunctuation + '</li><li class="same-as-username">' + translate.sameAsUsername + '</li></ul>');
 
       // Add the password confirmation layer.
-      $('input.password-confirm', outerWrapper).after('<div class="password-confirm">' + translate['confirmTitle'] + ' <span></span></div>').parent().addClass('confirm-parent');
+      $('#edit-pass-pass2-wrapper > div.description').after('<div class="password-confirm">' + translate['confirmTitle'] + ' <span></span></div>').parent().addClass('confirm-parent');
+      $('div.password-confirm').hide();
       var confirmInput = $('input.password-confirm', outerWrapper);
       var confirmResult = $('div.password-confirm', outerWrapper);
       var confirmChild = $('span', confirmResult);
@@ -36,19 +39,6 @@ Drupal.behaviors.password = {
         // Evaluate the password strength.
         var result = Drupal.evaluatePasswordStrength(passwordInput.val(), settings.password);
 
-        // Update the suggestions for how to improve the password.
-        if (passwordDescription.html() != result.message) {
-          passwordDescription.html(result.message);
-        }
-
-        // Only show the description box if there is a weakness in the password.
-        if (result.strength == 100) {
-          passwordDescription.hide();
-        }
-        else {
-          passwordDescription.show();
-        }
-
         // Adjust the length of the strength indicator.
         $('#indicator').css('width', result.strength + '%');
 
@@ -62,7 +52,8 @@ Drupal.behaviors.password = {
           var success = passwordInput.val() === confirmInput.val();
 
           // Show the confirm result.
-          confirmResult.css({ visibility: 'visible' });
+          $('#edit-pass-pass2-wrapper > div.description').hide();
+          confirmResult.show();
 
           // Remove the previous styling if any exists.
           if (this.confirmClass) {
@@ -74,9 +65,6 @@ Drupal.behaviors.password = {
           confirmChild.html(translate['confirm' + (success ? 'Success' : 'Failure')]).addClass(confirmClass);
           this.confirmClass = confirmClass;
         }
-        else {
-          confirmResult.css({ visibility: 'hidden' });
-        }
       };
 
       // Monitor keyup and blur events.
@@ -107,27 +95,45 @@ Drupal.evaluatePasswordStrength = functi
 
   // Lose 10 points for every character less than 6.
   if (password.length < 6) {
-    msg.push(translate.tooShort);
+    $('li.too-short').html('<span class="error">' + translate.tooShort + '</span>');
     strength -= (6 - password.length) * 10;
   }
+  else {
+    $('li.too-short').html('<span class="ok">' + translate.tooShort + '</span>');
+  }
 
   // Count weaknesses.
   if (!hasLowercase) {
-    msg.push(translate.addLowerCase);
+    $('li.add-lower-case').html('<span class="error">' + translate.addLowerCase + '</span>');
     weaknesses++;
   }
+  else {
+    $('li.add-lower-case').html('<span class="ok">' + translate.addLowerCase + '</span>');
+  }
+
   if (!hasUppercase) {
-    msg.push(translate.addUpperCase);
+    $('li.add-upper-case').html('<span class="error">' + translate.addUpperCase + '</span>');
     weaknesses++;
   }
+  else {
+    $('li.add-upper-case').html('<span class="ok">' + translate.addUpperCase + '</span>');
+  }
+
   if (!hasNumbers) {
-    msg.push(translate.addNumbers);
+    $('li.add-numbers').html('<span class="error">' + translate.addNumbers + '</span>');
     weaknesses++;
   }
+  else {
+    $('li.add-numbers').html('<span class="ok">' + translate.addNumbers + '</span>');
+  }
+
   if (!hasPunctuation) {
-    msg.push(translate.addPunctuation);
+    $('li.add-punctuation').html('<span class="error">' + translate.addPunctuation + '</span>');
     weaknesses++;
   }
+  else {
+    $('li.add-punctuation').html('<span class="ok">' + translate.addPunctuation + '</span>');
+  }
 
   // Apply penalty for each weakness (balanced against length penalty).
   switch (weaknesses) {
@@ -150,13 +156,15 @@ Drupal.evaluatePasswordStrength = functi
 
   // Check if password is the same as the username.
   if (password !== '' && password.toLowerCase() === username.toLowerCase()) {
-    msg.push(translate.sameAsUsername);
+    $('li.same-as-username').html('<span class="error">' + translate.sameAsUsername + '</span>');
     // Passwords the same as username are always very weak.
     strength = 5;
   }
+  else {
+    $('li.same-as-username').html('<span class="ok">' + translate.sameAsUsername + '</span>');
+  }
 
   // Assemble the final message.
-  msg = translate.hasWeaknesses + '<ul><li>' + msg.join('</li><li>') + '</li></ul>';
   return { strength: strength, message: msg };
 };
 
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.987
diff -u -p -r1.987 user.module
--- modules/user/user.module	16 May 2009 15:23:16 -0000	1.987
+++ modules/user/user.module	20 May 2009 01:31:41 -0000
@@ -2647,7 +2647,7 @@ function _user_password_dynamic_validati
     drupal_add_js(array(
       'password' => array(
         'strengthTitle' => t('Password strength:'),
-        'hasWeaknesses' => t('To make your password stronger:'),
+        'suggestionTitle' => t('To make a strong password:'),
         'tooShort' => t('Make it at least 6 characters'),
         'addLowerCase' => t('Add lowercase letters'),
         'addUpperCase' => t('Add uppercase letters'),
Index: themes/garland/style.css
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/style.css,v
retrieving revision 1.55
diff -u -p -r1.55 style.css
--- themes/garland/style.css	12 May 2009 08:31:17 -0000	1.55
+++ themes/garland/style.css	20 May 2009 01:31:41 -0000
@@ -885,6 +885,17 @@ div.vertical-tabs ul.vertical-tabs-list 
   background-color: #edf5fa;
   border-color: #d9eaf5;
 }
+div.vertical-tabs ul.vertical-tabs-list li strong {
+  font-weight: normal;
+}
+
+div.vertical-tabs ul.vertical-tabs-list li.selected strong {
+  font-weight: bold;
+}
+
+div.vertical-tabs ul.vertical-tabs-list li.selected small {
+  color: #898989;
+}
 
 div.vertical-tabs ul.vertical-tabs-list li.selected {
   background: #fff repeat-x 0 0;

