Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 7335)
+++ wp-includes/script-loader.php	(working copy)
@@ -147,6 +147,8 @@
 				'add' => attribute_escape(__('Add')),
 				'addTag' => attribute_escape(__('Add new tag')),
 				'separate' => __('Separate tags with commas'),
+				'cancel' => __('Cancel'),
+				'edit' => __('Edit'),
 			) );
 			$this->add( 'page', '/wp-admin/js/page.js', array('jquery', 'slug', 'postbox'), '20080208' );
 			$this->add( 'link', '/wp-admin/js/link.js', array('jquery-ui-tabs', 'wp-lists', 'postbox'), '20080131' );
Index: wp-admin/includes/comment.php
===================================================================
--- wp-admin/includes/comment.php	(revision 7335)
+++ wp-admin/includes/comment.php	(working copy)
@@ -21,6 +21,14 @@
 	$_POST['comment_content'] = $_POST['content'];
 	$_POST['comment_ID'] = (int) $_POST['comment_ID'];
 
+	foreach ( array ('aa', 'mm', 'jj', 'hh', 'mm') as $timeunit ) {
+		if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) {
+			$_POST['edit_date'] = '1';
+			break;
+		}
+	}
+
+
 	if (!empty ( $_POST['edit_date'] ) ) {
 		$aa = $_POST['aa'];
 		$mm = $_POST['mm'];
Index: wp-admin/includes/template.php
===================================================================
--- wp-admin/includes/template.php	(revision 7335)
+++ wp-admin/includes/template.php	(working copy)
@@ -830,7 +830,7 @@
 	if ( (int) $tab_index > 0 )
 		$tab_index_attribute = " tabindex=\"$tab_index\"";
 
-	echo '<label for="timestamp" style="display: block;"><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"'.$tab_index_attribute.' /> '.__( 'Edit timestamp' ).'</label><br />';
+	// echo '<label for="timestamp" style="display: block;"><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"'.$tab_index_attribute.' /> '.__( 'Edit timestamp' ).'</label><br />';
 
 	$time_adj = time() + (get_option( 'gmt_offset' ) * 3600 );
 	$post_date = ($for_post) ? $post->post_date : $comment->comment_date;
@@ -841,22 +841,26 @@
 	$mn = ($edit) ? mysql2date( 'i', $post_date ) : gmdate( 'i', $time_adj );
 	$ss = ($edit) ? mysql2date( 's', $post_date ) : gmdate( 's', $time_adj );
 
-	$month = "<select name=\"mm\" onchange=\"edit_date.checked=true\"$tab_index_attribute>\n";
+	$month = "<select id=\"mm\" name=\"mm\" onchange=\"edit_date.checked=true\"$tab_index_attribute>\n";
 	for ( $i = 1; $i < 13; $i = $i +1 ) {
-		$month .= "\t\t\t<option value=\"$i\"";
+		$month .= "\t\t\t" . '<option value="' . zeroise($i, 2) . '"';
 		if ( $i == $mm )
 			$month .= ' selected="selected"';
 		$month .= '>' . $wp_locale->get_month( $i ) . "</option>\n";
 	}
 	$month .= '</select>';
 
-	$day = '<input type="text" id="jj" name="jj" value="' . $jj . '" size="2" maxlength="2" onchange="edit_date.checked=true"' . $tab_index_attribute . ' autocomplete="off"  />';
-	$year = '<input type="text" id="aa" name="aa" value="' . $aa . '" size="4" maxlength="5" onchange="edit_date.checked=true"' . $tab_index_attribute . ' autocomplete="off"  />';
-	$hour = '<input type="text" id="hh" name="hh" value="' . $hh . '" size="2" maxlength="2" onchange="edit_date.checked=true"' . $tab_index_attribute . ' autocomplete="off"  />';
-	$minute = '<input type="text" id="mn" name="mn" value="' . $mn . '" size="2" maxlength="2" onchange="edit_date.checked=true"' . $tab_index_attribute . ' autocomplete="off"  />';
-	printf(_c('%1$s%2$s%3$s @ %4$s : %5$s|1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input'), $month, $day, $year, $hour, $minute);
+	$day = '<input type="text" id="jj" name="jj" value="' . $jj . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off"  />';
+	$year = '<input type="text" id="aa" name="aa" value="' . $aa . '" size="4" maxlength="5"' . $tab_index_attribute . ' autocomplete="off"  />';
+	$hour = '<input type="text" id="hh" name="hh" value="' . $hh . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off"  />';
+	$minute = '<input type="text" id="mn" name="mn" value="' . $mn . '" size="2" maxlength="2"' . $tab_index_attribute . ' autocomplete="off"  />';
+	printf(_c('%1$s%2$s, %3$s <br />@ %4$s : %5$s|1: month input, 2: day input, 3: year input, 4: hour input, 5: minute input'), $month, $day, $year, $hour, $minute);
+	echo "\n\n";
+	foreach ( array('mm', 'jj', 'aa', 'hh', 'mn') as $timeunit )
+		echo '<input type="hidden" id="hidden_' . $timeunit . '" name="hidden_' . $timeunit . '" value="' . $$timeunit . '" />' . "\n";
 ?>
-<input type="hidden" id="ss" name="ss" value="<?php echo $ss ?>" size="2" maxlength="2" onchange="edit_date.checked=true" />
+
+<input type="hidden" id="ss" name="ss" value="<?php echo $ss ?>" size="2" maxlength="2" />
 <?php
 }
 
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 7335)
+++ wp-admin/includes/post.php	(working copy)
@@ -74,6 +74,13 @@
 	if (!isset( $_POST['ping_status'] ))
 		$_POST['ping_status'] = 'closed';
 
+	foreach ( array ('aa', 'mm', 'jj', 'hh', 'mm') as $timeunit ) {
+		if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) {
+			$_POST['edit_date'] = '1';
+			break;
+		}
+	}
+
 	if (!empty ( $_POST['edit_date'] ) ) {
 		$aa = $_POST['aa'];
 		$mm = $_POST['mm'];
@@ -281,6 +288,13 @@
 	if (!isset( $_POST['ping_status'] ))
 		$_POST['ping_status'] = 'closed';
 
+	foreach ( array ('aa', 'mm', 'jj', 'hh', 'mm') as $timeunit ) {
+		if ( !empty( $_POST['hidden_' . $timeunit] ) && $_POST['hidden_' . $timeunit] != $_POST[$timeunit] ) {
+			$_POST['edit_date'] = '1';
+			break;
+		}
+	}
+
 	if (!empty ( $_POST['edit_date'] ) ) {
 		$aa = $_POST['aa'];
 		$mm = $_POST['mm'];
Index: wp-admin/js/post.js
===================================================================
--- wp-admin/js/post.js	(revision 7335)
+++ wp-admin/js/post.js	(working copy)
@@ -149,8 +149,15 @@
 	jQuery('.edit-timestamp').click(function () {
 		if (jQuery('#timestampdiv').is(":hidden")) {
 			jQuery('#timestampdiv').slideDown("normal");
+			jQuery('.edit-timestamp').text(postL10n.cancel);
 		} else {
 			jQuery('#timestampdiv').hide();
+			jQuery('#mm').val(jQuery('#hidden_mm').val());
+			jQuery('#jj').val(jQuery('#hidden_jj').val());
+			jQuery('#aa').val(jQuery('#hidden_aa').val());
+			jQuery('#hh').val(jQuery('#hidden_hh').val());
+			jQuery('#mn').val(jQuery('#hidden_mn').val());
+			jQuery('.edit-timestamp').text(postL10n.edit);
 		}
 		return false;
     });
Index: wp-admin/edit-form-advanced.php
===================================================================
--- wp-admin/edit-form-advanced.php	(revision 7335)
+++ wp-admin/edit-form-advanced.php	(working copy)
@@ -100,19 +100,19 @@
 <p><label for="post_status_private" class="selectit"><input id="post_status_private" name="post_status" type="checkbox" value="private" <?php checked($post->post_status, 'private'); ?> /> <?php _e('Keep this post private') ?></label></p>
 <?php
 if ($post_ID) {
-
-	if ( 'future' == $post->post_status ) {
+	if ( 'future' == $post->post_status ) { // scheduled for publishing at a future date
 		$stamp = __('Scheduled for:<br />%1$s at %2$s');
-	} else if ( 'publish' == $post->post_status ) {
-		$stamp = __('%1$s at %2$s');
-	} else {
-		$stamp = __('Saved on:<br />%1$s at %2$s');
+	} else if ( 'publish' == $post->post_status ) { // already published
+		$stamp = __('Published on:<br />%1$s at %2$s');
+	} else if ( '0000-00-00 00:00:00' == $post->post_date ) { // draft, 1 or more saves, no date specified
+		$stamp = __('Publish immediately');
+	} else { // draft, 1 or more saves, date specified
+		$stamp = __('Publish on:<br />%1$s at %2$s');
 	}
-
 	$date = mysql2date(get_option('date_format'), $post->post_date);
 	$time = mysql2date(get_option('time_format'), $post->post_date);
-} else {
-	$stamp = __('%1$s at %2$s');
+} else { // draft (no saves, and thus no date specified)
+	$stamp = __('Publish immediately');
 	$date = mysql2date(get_option('date_format'), current_time('mysql'));
 	$time = mysql2date(get_option('time_format'), current_time('mysql'));
 }
@@ -143,6 +143,12 @@
 <br class="clear" />
 <?php if ($post_ID): ?>
 <?php printf(__('Last edit: %1$s at %2$s'), mysql2date(get_option('date_format'), $post->post_modified), mysql2date(get_option('time_format'), $post->post_modified)); ?>
+<?php if ( $last_id = get_post_meta($post_ID, '_edit_last', true) ) {
+	$last_user = get_userdata($last_id);
+	echo '<br />' . sprintf( __( 'by <b>%s</b>' ), wp_specialchars( $last_user->display_name ) );
+}
+
+ ?>
 <br class="clear" />
 <?php endif; ?>
 <span id="autosave"></span>

