Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 14438)
+++ wp-includes/script-loader.php	(working copy)
@@ -395,6 +395,8 @@
 		// Custom Navigation
 		$scripts->add( 'nav-menu', "/wp-admin/js/nav-menu$suffix.js", false, '20100504' );
 		$scripts->localize( 'nav-menu', 'navMenuL10n', array(
+			'home' => _x('Home', 'nav menu home label'),
+			'homeurl' => home_url('/'),
 			'custom' => _x('Custom', 'menu nav item type'),
 			'thickbox' => _x('Edit Menu Item', 'Thickbox Title'),
 			'edit' => _x('Edit', 'menu item edit text'),
Index: wp-admin/includes/nav-menu.php
===================================================================
--- wp-admin/includes/nav-menu.php	(revision 14438)
+++ wp-admin/includes/nav-menu.php	(working copy)
@@ -314,19 +314,16 @@
 	wp_nav_menu_post_type_meta_boxes();
 	wp_nav_menu_taxonomy_meta_boxes();
 
-
 	// Register advanced menu items (columns)
 	add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns');
 
 	add_filter( 'columns_prefs_header', create_function( '', "return __('Show advanced menu properties');" ));
 
-
-
 	// If first time editing, disable advanced items by default.
 	if( false === get_user_option( 'managenav-menuscolumnshidden' ) ) {
 		$user = wp_get_current_user();
-		update_user_option($user->ID, "managenav-menuscolumnshidden",
-			array ( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', ),
+		update_user_option($user->ID, 'managenav-menuscolumnshidden',
+			array( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', ),
 			true);
 	}
 }
@@ -449,6 +446,9 @@
 			</p>
 
 		<p class="button-controls">
+			<span class="list-controls">
+				<a href="#" class="select-all add-home-link"><?php _e('Add Home Link'); ?></a>
+			</span>
 			<span class="add-to-menu">
 				<img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" />
 				<input type="submit" class="button-secondary" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" />
Index: wp-admin/js/nav-menu.dev.js
===================================================================
--- wp-admin/js/nav-menu.dev.js	(revision 14438)
+++ wp-admin/js/nav-menu.dev.js	(working copy)
@@ -182,6 +182,8 @@
 
 			this.attachTabsPanelListeners();
 
+			this.attachHomeLinkListener();
+
 			if( menuList.length ) // If no menu, we're in the + tab.
 				this.initSortables();
 
@@ -190,6 +192,8 @@
 			this.initTabManager();
 			
 			this.initAddMenuItemDraggables();
+			
+			this.checkForEmptyMenu();
 		},
 
 		initToggles : function() {
@@ -349,7 +353,7 @@
 					// Set us to be the ajax target
 					targetList = target.children('.menu-item-transport');
 					// Get all checked elements and assemble selected items.
-					items = menuItems.filter('.selected-menu-item').children().not( ui.helper ).clone();
+					items = li.parents('.tabs-panel').find('.selected-menu-item').children().not( ui.helper ).clone();
 					ui.helper.children('.additional-menu-items').append( items );
 					// This class tells the sortables to treat it as a new item.
 					ui.helper.addClass('new-menu-item');
@@ -372,7 +376,7 @@
 				stop: function(e, ui) {
 					// Reset the targetList and unselect the menu items
 					targetList = menuList;
-					menuItems.filter('.selected-menu-item').deselectItem();
+					$(e.target).parents('.tabs-panel').find('.selected-menu-item').deselectItem();
 				}
 			});
 		},
@@ -478,9 +482,10 @@
 			});
 		},
 		
-		addCustomLink : function() {
-			var url = $('#custom-menu-item-url').val(),
-			label = $('#custom-menu-item-name').val(),
+		addCustomLink : function(url, label, addToTop) {
+			var url = url || $('#custom-menu-item-url').val(),
+			label = label || $('#custom-menu-item-name').val(),
+			addToTop = addToTop || false,
 			menu = $('#menu').val(),
 			nonce = $('#menu-settings-column-nonce').val(),
 			params = {},
@@ -506,15 +511,31 @@
 				}
 			};
 			
-			processMethod = that.eventAddMenuItem;
-			
+			processMethod = addToTop ? that.addMenuItemToTop : that.addMenuItemToBottom;
+
 			$.post( ajaxurl, params, function(menuMarkup) {
 				processMethod.call(that, menuMarkup, params);
 				
 				// Remove the ajax spinner
 				$('.customlinkdiv img.waiting').hide();
+
+				// Reset the form
+				wpNavMenu.resetCustomLinkForm();
 			});
 		},
+		
+		resetCustomLinkForm : function() {
+			// set custom link form back to defaults
+			$('#custom-menu-item-name').val('').blur();
+			$('#custom-menu-item-url').val('http://');
+		},
+		
+		attachHomeLinkListener : function() {
+			$('.add-home-link', '.customlinkdiv').click(function(e) {
+				wpNavMenu.addCustomLink( navMenuL10n.homeurl, navMenuL10n.home, true);
+				return false;
+			});
+		},
 
 		attachTabsPanelListeners : function() {
 			$('#menu-settings-column').bind('click', function(e) {
@@ -726,11 +747,10 @@
 
 		eventOnClickMenuDelete : function(clickedEl) {
 			// Delete warning AYS
-			if ( confirm( navMenuL10n.warnDeleteMenu ) ) {
+			if ( confirm( navMenuL10n.warnDeleteMenu ) )
 				return true;
-			} else {
+			else
 				return false;
-			}
 		},
 
 		eventOnClickMenuItemDelete : function(clickedEl) {
@@ -768,16 +788,17 @@
 		 *
 		 * @param string id The id of the metabox
 		 */
-		addItemsToMenu : function(id) {
+		addItemsToMenu : function(id, addToTop) {
 			var items = $( '.tabs-panel-active .categorychecklist li input:checked', '#' + id),
 			menu = $('#menu').val(),
 			nonce = $('#menu-settings-column-nonce').val(),
 			params = {},
 			that = this,
+			addToTop = addToTop || false,
 			processMethod = function(){},
 			re = new RegExp('menu-item\\[(\[^\\]\]*)');
 			
-			processMethod = that.eventAddMenuItem;
+			processMethod = addToTop ? that.addMenuItemToTop : that.addMenuItemToBottom;
 			
 			// If no items are checked, bail.
 			if ( !items.length )
@@ -806,7 +827,7 @@
 				});
 
 				// Uncheck the item
-				$(this).attr('checked', false);
+				$(this).parent().prev().deselectItem();
 			});
 
 			// Remove the ajax spinner
@@ -819,9 +840,13 @@
 		 * @param string menuMarkup The text server response of menu item markup.
 		 * @param object req The request arguments.
 		 */
-		eventAddMenuItem : function( menuMarkup, req ) {
+		addMenuItemToBottom : function( menuMarkup, req ) {
 			$(menuMarkup).hideAdvancedMenuItemFields().appendTo( targetList );
 		},
+		
+		addMenuItemToTop : function( menuMarkup, req ) {
+			$(menuMarkup).hideAdvancedMenuItemFields().prependTo( targetList );
+		},
 
 		/**
 		 * Process the quick search response into a search result
@@ -886,12 +911,21 @@
 		removeMenuItem : function(el) {
 			el = $(el)
 			var children = el.childMenuItems();
+			var that = this;
 
 			el.addClass('deleting').fadeOut( 350 , function() {
 				el.remove();
 				children.shiftDepthClass(-1).updateParentMenuItemDBId();
 				recalculateMenuItemPositions();
+				that.checkForEmptyMenu();
 			});
+		},
+		
+		checkForEmptyMenu : function() {
+			if( menuList.children().length ) return;
+			menuList.height(80).one('sortstop', function(){
+				$(this).height('auto');
+			});
 		}
 	}
 }
Index: wp-admin/css/nav-menu.dev.css
===================================================================
--- wp-admin/css/nav-menu.dev.css	(revision 14438)
+++ wp-admin/css/nav-menu.dev.css	(working copy)
@@ -313,6 +313,10 @@
 	padding-top:1em;
 }
 
+#menu-to-edit {
+	padding: 1em 0;
+}
+
 .menu ul { width: 100%; }
 .menu ul.sub-menu {
 }
