Index: wp-includes/js/swfupload/handlers.dev.js
===================================================================
--- wp-includes/js/swfupload/handlers.dev.js	(revision 16472)
+++ wp-includes/js/swfupload/handlers.dev.js	(working copy)
@@ -93,7 +93,7 @@
 	});
 
 	// Bind AJAX to the new Delete button
-	jQuery('a.delete', item).click(function(){
+	jQuery('a.delete-attachment', item).click(function(){
 		// Tell the server to delete it. TODO: handle exceptions
 		jQuery.ajax({
 			url: 'admin-ajax.php',
@@ -101,9 +101,29 @@
 			success: deleteSuccess,
 			error: deleteError,
 			id: fileObj.id,
+			data:{
+				id : this.id.replace(/[^0-9]/g,''),
+				action : 'delete-attachment',
+				_ajax_nonce : this.href.replace(/^.*wpnonce=/,'')
+			}
+		});
+
+		return false;
+	});
+
+	// Bind AJAX to the new Trash button
+	jQuery('a.trash-attachment', item).click(function(){
+
+		// Tell the server to trash it. TODO: handle exceptions
+		jQuery.ajax({
+			url: 'admin-ajax.php',
+			type: 'post',
+			success: trashSuccess,
+			error: trashError,
+			id: fileObj.id,
 			data: {
 				id : this.id.replace(/[^0-9]/g, ''),
-				action : 'trash-post',
+				action : 'trash-attachment',
 				_ajax_nonce : this.href.replace(/^.*wpnonce=/,'')
 			}
 		});
@@ -119,7 +139,7 @@
 			id: fileObj.id,
 			data: {
 				id : this.id.replace(/[^0-9]/g,''),
-				action: 'untrash-post',
+				action: 'untrash-attachment',
 				_ajax_nonce: this.href.replace(/^.*wpnonce=/,'')
 			},
 			success: function(data, textStatus){
@@ -176,13 +196,48 @@
 	}
 
 	// Vanish it.
+	jQuery('.filename:empty', item).remove(); 
+	jQuery('.filename .title', item).css('font-weight','bold');
+	jQuery('.filename', item).append(' <span class="deletednotice">'+swfuploadL10n.deleted+'</span>').siblings('a.toggle').remove(); 
+	jQuery('#media-item-' + this.id).children('.describe').css({backgroundColor:'#fff'}).end() 
+		.animate({backgroundColor:'#ffc0c0'}, {queue:false,duration:50}) 
+		.animate({minHeight:0,height:36}, 400, null, function(){jQuery(this).children('.describe').remove()}) 
+		.animate({backgroundColor:'#fff'}, 400) 
+		.animate({height:0}, 800, null, function(){
+					jQuery(this).remove();
+					updateMediaForm();
+				}); 
+
+	return;
+}
+
+function trashSuccess(data, textStatus) {
+	if ( data == '-1' )
+		return itemAjaxError(this.id, 'You do not have permission. Has your session expired?');
+	if ( data == '0' )
+		return itemAjaxError(this.id, 'Could not be trashed. Has it been trashed already?');
+
+	var id = this.id, item = jQuery('#media-item-' + id);
+
+	// Decrement the counters.
+	if ( type = jQuery('#type-of-' + id).val() )
+		jQuery('#' + type + '-counter').text( jQuery('#' + type + '-counter').text() - 1 );
+	if ( item.hasClass('child-of-'+post_id) )
+		jQuery('#attachments-count').text( jQuery('#attachments-count').text() - 1 );
+
+	if ( jQuery('form.type-form #media-items').children().length == 1 && jQuery('.hidden', '#media-items').length > 0 ) {
+		jQuery('.toggle').toggle();
+		jQuery('.slidetoggle').slideUp(200).siblings().removeClass('hidden');
+	}
+
+	// Vanish it.
 	jQuery('.toggle', item).toggle();
 	jQuery('.slidetoggle', item).slideUp(200).siblings().removeClass('hidden');
 	item.css( {backgroundColor:'#faa'} ).animate( {backgroundColor:'#f4f4f4'}, {queue:false, duration:500} ).addClass('undo');
 
 	jQuery('.filename:empty', item).remove();
 	jQuery('.filename .title', item).css('font-weight','bold');
-	jQuery('.filename', item).append('<span class="trashnotice"> ' + swfuploadL10n.deleted + ' </span>').siblings('a.toggle').hide();
+	jQuery('.filename', item).append('<span class="trashnotice"> ' + swfuploadL10n.trashed + ' </span>').siblings('a.toggle').hide();
 	jQuery('.filename', item).append( jQuery('a.undo', item).removeClass('hidden') );
 	jQuery('.menu_order_input', item).hide();
 
@@ -193,6 +248,10 @@
 	// TODO
 }
 
+function trashError(X, textStatus, errorThrown) {
+	// TODO
+}
+
 function updateMediaForm() {
 	var one = jQuery('form.type-form #media-items').children(), items = jQuery('#media-items').children();
 
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 16472)
+++ wp-includes/script-loader.php	(working copy)
@@ -234,7 +234,8 @@
 			'upload_stopped' => __('Upload stopped.'),
 			'dismiss' => __('Dismiss'),
 			'crunching' => __('Crunching&hellip;'),
-			'deleted' => __('moved to the trash.'),
+			'trashed' => __('moved to the trash.'),
+			'deleted' => __('deleted.'),
 			'l10n_print_after' => 'try{convertEntities(swfuploadL10n);}catch(e){};',
 			'error_uploading' => __('&#8220;%s&#8221; has failed to upload due to an error')
 	) );
Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 16472)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -389,6 +389,7 @@
 		die('1');
 	die('0');
 	break;
+case 'delete-attachment' :
 case 'delete-post' :
 	check_ajax_referer( "{$action}_$id" );
 	if ( !current_user_can( 'delete_post', $id ) )
@@ -402,6 +403,8 @@
 	else
 		die('0');
 	break;
+case 'trash-attachment' :
+case 'untrash-attachment' : 
 case 'trash-post' :
 case 'untrash-post' :
 	check_ajax_referer( "{$action}_$id" );
@@ -411,7 +414,7 @@
 	if ( !get_post( $id ) )
 		die('1');
 
-	if ( 'trash-post' == $action )
+	if ( 'trash-post' == $action || 'trash-attachment' == $action )
 		$done = wp_trash_post( $id );
 	else
 		$done = wp_untrash_post( $id );
Index: wp-admin/includes/media.php
===================================================================
--- wp-admin/includes/media.php	(revision 16472)
+++ wp-admin/includes/media.php	(working copy)
@@ -1225,15 +1225,15 @@
 		$send = get_submit_button( __( 'Insert into Post' ), 'button', "send[$attachment_id]", false );
 	if ( $delete && current_user_can( 'delete_post', $attachment_id ) ) {
 		if ( !EMPTY_TRASH_DAYS ) {
-			$delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Delete Permanently' ) . '</a>';
+			$delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete delete-attachment'>" . __( 'Delete Permanently' ) . '</a>';
 		} elseif ( !MEDIA_TRASH ) {
 			$delete = "<a href='#' class='del-link' onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __( 'Delete' ) . "</a>
 			 <div id='del_attachment_$attachment_id' class='del-attachment' style='display:none;'>" . sprintf( __( 'You are about to delete <strong>%s</strong>.' ), $filename ) . "
-			 <a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='button'>" . __( 'Continue' ) . "</a>
-			 <a href='#' class='button' onclick=\"this.parentNode.style.display='none';return false;\">" . __( 'Cancel' ) . "</a>
+			 <p><a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='button delete-attachment'>" . __( 'Continue' ) . "</a>
+			 <a href='#' class='button' onclick=\"this.parentNode.style.display='none';return false;\">" . __( 'Cancel' ) . "</a></p>
 			 </div>";
 		} else {
-			$delete = "<a href='" . wp_nonce_url( "post.php?action=trash&amp;post=$attachment_id", 'trash-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete'>" . __( 'Move to Trash' ) . "</a>
+			$delete = "<a href='" . wp_nonce_url( "post.php?action=trash&amp;post=$attachment_id", 'trash-attachment_' . $attachment_id ) . "' id='del[$attachment_id]' class='trash-attachment'>" . __( 'Move to Trash' ) . "</a>
 			<a href='" . wp_nonce_url( "post.php?action=untrash&amp;post=$attachment_id", 'untrash-attachment_' . $attachment_id ) . "' id='undo[$attachment_id]' class='undo hidden'>" . __( 'Undo' ) . "</a>";
 		}
 	} else {
