Index: trunk/wp-admin/includes/media.php
===================================================================
--- trunk/wp-admin/includes/media.php	(revision 7946)
+++ trunk/wp-admin/includes/media.php	(working copy)
@@ -213,6 +213,8 @@
 			$post['post_title'] = $attachment['post_title'];
 		if ( isset($attachment['post_excerpt']) )
 			$post['post_excerpt'] = $attachment['post_excerpt'];
+		if ( isset($attachment['menu_order']) )
+			$post['menu_order'] = $attachment['menu_order'];
 
 		$post = apply_filters('attachment_fields_to_save', $post, $attachment);
 
@@ -413,6 +415,7 @@
 			$errors = $return;
 	}
 
+	wp_enqueue_script('admin-gallery');
 	return wp_iframe( 'media_upload_gallery_form', $errors );
 }
 
@@ -549,6 +552,10 @@
 				</script>\n",
 			'helps'      => __('Enter a link URL or click above for presets.'),
 		),
+    	'menu_order'   => array(
+			'label'      => __('Order'),
+			'value'      => $edit_post->menu_order
+		),
 	);
 
 	foreach ( get_attachment_taxonomies($post) as $taxonomy ) {
Index: trunk/wp-admin/js/gallery.js
===================================================================
--- trunk/wp-admin/js/gallery.js	(revision 0)
+++ trunk/wp-admin/js/gallery.js	(revision 0)
@@ -0,0 +1,29 @@
+jQuery(function($) {
+	var gallerySortable;
+	var gallerySortableInit = function() {
+		try { // a hack to make sortables work in jQuery 1.2+ and IE7
+			$('#media-items').SortableDestroy();
+		} catch(e) {}
+		$('#media-items .media-item').
+		gallerySortable = $('#media-items').Sortable( {
+			accept: 'media-item',
+			helperclass: 'sorthelper',
+//			handle: 'img.pinkynail',
+			onchange: galleryReorder,
+			onStop: gallerySortableInit
+		} );
+	}
+	
+	var galleryReorder = function(myOrder) {
+		jQuery.each(myOrder[0]['o']['media-items'], function(i, id) {
+			jQuery('#' + id + ' .menu_order input')[0].value = i;
+		})
+	}
+
+	// initialize sortable
+	gallerySortableInit();
+	$('#media-items .media-item').css({
+		position: 'static',
+		cursor: 'move'
+	});
+});
