Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 1767)
+++ wp-includes/post.php	(working copy)
@@ -1401,7 +1401,7 @@
 	if ( ('' == $post_content) && ('' == $post_title) && ('' == $post_excerpt) ) {
 		if ( $wp_error )
 			return new WP_Error('empty_content', __('Content, title, and excerpt are empty.'));
-		else
+		elseif ( empty($force_autosave) )
 			return 0;
 	}
 
Index: wp-includes/js/autosave.dev.js
===================================================================
--- wp-includes/js/autosave.dev.js	(revision 1767)
+++ wp-includes/js/autosave.dev.js	(working copy)
@@ -172,7 +172,9 @@
 autosave = function() {
 	// (bool) is rich editor enabled and active
 	var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(), post_data, doAutoSave, ed, origStatus, successCallback;
-
+	
+	var force = jQuery("#force_autosave").size() && jQuery("#force_autosave").val();
+	
 	post_data = {
 		action: "autosave",
 		post_ID:  jQuery("#post_ID").val() || 0,
@@ -208,7 +210,7 @@
 		post_data["post_name"] = jQuery('#post_name').val();
 
 	// Nothing to save or no change.
-	if( ( post_data["post_title"].length == 0 && post_data["content"].length == 0 ) || post_data["post_title"] + post_data["content"] == autosaveLast) {
+	if ( !force && (( post_data["post_title"].length == 0 && post_data["content"].length == 0 ) || post_data["post_title"] + post_data["content"] == autosaveLast ) ) {
 		doAutoSave = false;
 	}
 
@@ -232,6 +234,9 @@
 	if ( jQuery("#post_author").size() )
 		post_data["post_author"] = jQuery("#post_author").val();
 	post_data["user_ID"] = jQuery("#user-id").val();
+	
+	if ( force )
+		post_data["force_autosave"] = 1;
 
 	// Don't run while the TinyMCE spellcheck is on. It resets all found words.
 	if ( rich && tinyMCE.activeEditor.plugins.spellchecker && tinyMCE.activeEditor.plugins.spellchecker.active ) {
Index: wp-admin/includes/media.php
===================================================================
--- wp-admin/includes/media.php	(revision 1767)
+++ wp-admin/includes/media.php	(working copy)
@@ -358,12 +358,15 @@
 	$video_title = __('Add Video');
 	$audio_upload_iframe_src = apply_filters('audio_upload_iframe_src', "$media_upload_iframe_src&amp;type=audio");
 	$audio_title = __('Add Audio');
+	
+	$tb_class = $uploading_iframe_ID >= 0 ? ' class="thickbox"' : '';
+	
 	$out = <<<EOF
 
-	<a href="{$image_upload_iframe_src}&amp;TB_iframe=true" id="add_image" class="thickbox" title='$image_title' onclick="return false;"><img src='images/media-button-image.gif' alt='$image_title' /></a>
-	<a href="{$video_upload_iframe_src}&amp;TB_iframe=true" id="add_video" class="thickbox" title='$video_title' onclick="return false;"><img src='images/media-button-video.gif' alt='$video_title' /></a>
-	<a href="{$audio_upload_iframe_src}&amp;TB_iframe=true" id="add_audio" class="thickbox" title='$audio_title' onclick="return false;"><img src='images/media-button-music.gif' alt='$audio_title' /></a>
-	<a href="{$media_upload_iframe_src}&amp;TB_iframe=true" id="add_media" class="thickbox" title='$media_title' onclick="return false;"><img src='images/media-button-other.gif' alt='$media_title' /></a>
+	<a href="{$image_upload_iframe_src}&amp;TB_iframe=true" id="add_image" title='$image_title' $tb_class onclick="return false;"><img src='images/media-button-image.gif' alt='$image_title' /></a>
+	<a href="{$video_upload_iframe_src}&amp;TB_iframe=true" id="add_video" title='$video_title' $tb_class onclick="return false;"><img src='images/media-button-video.gif' alt='$video_title' /></a>
+	<a href="{$audio_upload_iframe_src}&amp;TB_iframe=true" id="add_audio" title='$audio_title' $tb_class onclick="return false;"><img src='images/media-button-music.gif' alt='$audio_title' /></a>
+	<a href="{$media_upload_iframe_src}&amp;TB_iframe=true" id="add_media" title='$media_title' $tb_class onclick="return false;"><img src='images/media-button-other.gif' alt='$media_title' /></a>
 
 EOF;
 	printf($context, $out);
Index: wp-admin/edit-form-advanced.php
===================================================================
--- wp-admin/edit-form-advanced.php	(revision 1767)
+++ wp-admin/edit-form-advanced.php	(working copy)
@@ -573,6 +573,7 @@
 <input type="hidden" id="post_type" name="post_type" value="<?php echo esc_attr($post->post_type) ?>" />
 <input type="hidden" id="original_post_status" name="original_post_status" value="<?php echo esc_attr($post->post_status) ?>" />
 <input name="referredby" type="hidden" id="referredby" value="<?php echo esc_url(stripslashes(wp_get_referer())); ?>" />
+<input type="hidden" id="force_autosave" value="" />
 <?php
 if ( 'draft' != $post->post_status )
 	wp_original_referer_field(true, 'previous');
@@ -661,5 +662,25 @@
 <?php if ((isset($post->post_title) && '' == $post->post_title) || (isset($_GET['message']) && 2 > $_GET['message'])) : ?>
 <script type="text/javascript">
 try{document.post.title.focus();}catch(e){}
+jQuery(function($) {
+	$("#add_image, #add_video, #add_audio, #add_media").click(function() {
+		var post_id = parseInt($("#post_ID").val(), 10);
+
+		if ( post_id > 0 )
+		 	return false;
+
+		$("#force_autosave").val(1);
+		autosave();
+		$("#force_autosave").val('');
+
+		if ( !$(this).hasClass('thickbox') ) {
+			$(this).addClass('thickbox').hasClass('thickbox');
+			tb_init(this);
+			return false;
+		} else {
+			return false;
+		}
+	});
+});
 </script>
 <?php endif; ?>
