Index: wp-admin/js/post.js
===================================================================
--- wp-admin/js/post.js	(revision 23176)
+++ wp-admin/js/post.js	(working copy)
@@ -371,6 +371,16 @@
 		stamp = $('#timestamp').html();
 		visibility = $('#post-visibility-display').html();
 
+		function updatePasswordSubmitability() { 
+			var post_password = jQuery.trim($('#post_password').val()); 
+			if ( post_password == '' ) { 
+				$('.save-post-visibility', '#post-visibility-select').addClass('button-disabled'); 
+			} else { 
+				$('.save-post-visibility', '#post-visibility-select').removeClass('button-disabled'); 
+				$('#post_password').removeClass('form-invalid'); 
+			}
+		}
+
 		function updateVisibility() {
 			var pvSelect = $('#post-visibility-select');
 			if ( $('input:radio:checked', pvSelect).val() != 'public' ) {
@@ -380,12 +390,16 @@
 				$('#sticky-span').show();
 			}
 			if ( $('input:radio:checked', pvSelect).val() != 'password' ) {
-				$('#password-span').hide();
+				$('#password-span').hide();                              
+				$('.save-post-visibility', '#post-visibility-select').removeClass('button-disabled'); 
 			} else {
 				$('#password-span').show();
+				updatePasswordSubmitability(); 
 			}
 		}
-
+		// disable submit button based on password field content 
+		$('#post_password').keyup(function() {updatePasswordSubmitability();});
+		
 		function updateText() {
 
 			if ( ! $('#timestampdiv').length )
@@ -487,6 +501,13 @@
 		$('.save-post-visibility', '#post-visibility-select').click(function () { // crazyhorse - multiple ok cancels
 			var pvSelect = $('#post-visibility-select');
 
+			if ( $('.save-post-visibility', pvSelect).hasClass('button-disabled') ) { 
+				$('#post_password').addClass('form-invalid'); 
+				return false; 
+			} else { 
+				$('#post_password').removeClass('form-invalid'); 
+			} 
+
 			pvSelect.slideUp('fast');
 			$('.edit-visibility', '#visibility').show();
 			updateText();
