Index: wp-includes/js/autosave.js
===================================================================
--- wp-includes/js/autosave.js	(revision 7911)
+++ wp-includes/js/autosave.js	(working copy)
@@ -180,9 +180,9 @@
 		post_data["comment_status"] = 'open';
 	if ( jQuery("#ping_status").attr("checked") )
 		post_data["ping_status"] = 'open';
-	if ( jQuery("#excerpt") )
+	if ( jQuery("#excerpt").size() )
 		post_data["excerpt"] = jQuery("#excerpt").val();
-	if ( jQuery("#post_author") )
+	if ( jQuery("#post_author").size() )
 		post_data["post_author"] = jQuery("#post_author").val();
 
 	// Don't run while the TinyMCE spellcheck is on.  Why?  Who knows.
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 7911)
+++ wp-includes/script-loader.php	(working copy)
@@ -47,7 +47,7 @@
 			'broken' => __('An unidentified error has occurred.')
 		) );
 
-		$this->add( 'autosave', '/wp-includes/js/autosave.js', array('schedule', 'wp-ajax-response'), '20080507' );
+		$this->add( 'autosave', '/wp-includes/js/autosave.js', array('schedule', 'wp-ajax-response'), '20080508' );
 
 		$this->add( 'wp-ajax', '/wp-includes/js/wp-ajax.js', array('prototype'), '20070306');
 		$this->localize( 'wp-ajax', 'WPAjaxL10n', array(
Index: wp-admin/revision.php
===================================================================
--- wp-admin/revision.php	(revision 7911)
+++ wp-admin/revision.php	(working copy)
@@ -8,12 +8,8 @@
 $left        = absint($left);
 $right       = absint($right);
 
-
 $parent_file = $redirect = 'edit.php';
-$submenu_file = 'edit.php';
-$title = __( 'Post Revision' );
 
-
 switch ( $action ) :
 case 'delete' : // stubs
 case 'edit' :
@@ -95,11 +91,22 @@
 	break;
 endswitch;
 
+if ( !$redirect && !in_array( $post->post_type, array( 'post', 'page' ) ) )
+	$redirect = 'edit.php';
+
 if ( $redirect ) {
 	wp_redirect( $redirect );
 	exit;
 }
 
+if ( 'page' == $post->post_type ) {
+	$submenu_file = 'edit-pages.php';
+	$title = __( 'Page Revisions' );
+} else {
+	$submenu_file = 'edit.php';
+	$title = __( 'Post Revisions' );
+}
+
 // Converts post_author ID# into name
 add_filter( '_wp_revision_field_post_author', 'get_author_name' );
 
@@ -163,7 +170,7 @@
 
 <br class="clear" />
 
-<h2><?php _e( 'Post Revisions' ); ?></h2>
+<h2><?php echo $title; ?></h2>
 
 <?php
 
Index: wp-admin/edit-page-form.php
===================================================================
--- wp-admin/edit-page-form.php	(revision 7911)
+++ wp-admin/edit-page-form.php	(working copy)
@@ -5,11 +5,10 @@
 $messages[2] = __('Custom field updated.');
 $messages[3] = __('Custom field deleted.');
 $messages[4] = __('Page updated.');
-?>
-<?php if (isset($_GET['message'])) : ?>
-<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
-<?php endif;
 
+$notice = false;
+$notices[1] = __( 'There is an autosave of this page that is more recent than the version below.  <a href="%s">View the autosave</a>.' );
+
 if (!isset($post_ID) || 0 == $post_ID) {
 	$form_action = 'post';
 	$nonce_action = 'add-page';
@@ -20,6 +19,9 @@
 	$form_action = 'editpost';
 	$nonce_action = 'update-page_' . $post_ID;
 	$form_extra = "<input type='hidden' id='post_ID' name='post_ID' value='$post_ID' />";
+	$autosave = wp_get_autosave( $post_id );
+	if ( $autosave && mysql2date( 'U', $autosave->post_modified_gmt ) > mysql2date( 'U', $post->post_modified_gmt ) )
+		$notice = sprintf( $notices[1], get_edit_post_link( $autosave->ID ) );
 }
 
 $temp_ID = (int) $temp_ID;
@@ -31,6 +33,13 @@
 	$sendto = 'redo';
 ?>
 
+<?php if ( $notice ) : ?>
+<div id="notice" class="error"><p><?php echo $notice ?></p></div>
+<?php endif; ?>
+<?php if (isset($_GET['message'])) : ?>
+<div id="message" class="updated fade"><p><?php echo $messages[$_GET['message']]; ?></p></div>
+<?php endif; ?>
+
 <form name="post" action="page.php" method="post" id="post">
 <div class="wrap">
 <h2><?php _e('Write Page') ?></h2>
@@ -44,6 +53,7 @@
 <input type="hidden" id="user-id" name="user_ID" value="<?php echo $user_ID ?>" />
 <input type="hidden" id="hiddenaction" name="action" value='<?php echo $form_action ?>' />
 <input type="hidden" id="originalaction" name="originalaction" value="<?php echo $form_action ?>" />
+<input type="hidden" id="post_author" name="post_author" value="<?php echo attribute_escape( $post->post_author ); ?>" />
 <?php echo $form_extra ?>
 <input type="hidden" id="post_type" name="post_type" value="<?php echo $post->post_type ?>" />
 <input type="hidden" id="original_post_status" name="original_post_status" value="<?php echo $post->post_status ?>" />
@@ -282,6 +292,16 @@
 </div>
 <?php endif; ?>
 
+<?php if ( isset($post_ID) && 0 < $post_ID && wp_get_post_revisions( $post_ID ) ) : ?>
+<div id="revisionsdiv" class="postbox <?php echo postbox_classes('revisionsdiv', 'page'); ?>">
+<h3><?php _e('Page Revisions'); ?></h3>
+<div class="inside">
+<?php wp_list_post_revisions(); ?>
+</div>
+</div>
+<?php endif; ?>
+
+
 <?php do_meta_boxes('page', 'advanced', $post); ?>
 
 </div>
