Index: wp-admin/css/wp-admin.css
===================================================================
--- wp-admin/css/wp-admin.css	(revision 23774)
+++ wp-admin/css/wp-admin.css	(working copy)
@@ -166,6 +166,10 @@
 	padding: 0 7px;
 }
 
+#col-left-locations {
+	width: 40%;
+}
+
 /* utility classes */
 .alignleft {
 	float: left;
@@ -2423,6 +2427,7 @@
 	width: 8%;
 }
 
+.fixed .column-posts,
 .fixed .column-date,
 .fixed .column-parent,
 .fixed .column-links,
@@ -2439,6 +2444,14 @@
 	width: 15%;
 }
 
+.fixed .column-slug {
+	width: 25%;
+}
+
+.fixed .column-locations {
+	width: 35%;
+}
+
 .fixed .column-comments {
 	width: 4em;
 	padding: 8px 0;
@@ -2453,14 +2466,6 @@
 	float: left;
 }
 
-.fixed .column-slug {
-	width: 25%;
-}
-
-.fixed .column-posts {
-	width: 10%;
-}
-
 .fixed .column-icon {
 	width: 80px;
 }
@@ -7402,6 +7407,10 @@
 	filter: alpha(opacity=50);
 }
 
+#menu-locations-wrap {
+	width: 55%;
+}
+
 .metabox-holder-disabled .button-controls .select-all {
 	display: none;
 }
@@ -7562,6 +7571,40 @@
 	margin-top: -2px;
 }
 
+.menu-location-title {
+	position: relative;
+	top: 10px;
+}
+
+#locations-nav-menu-wrapper {
+	padding: 5px 0;
+}
+
+.locations-nav-menu-select select {
+	float: left;
+	width: 160px;
+	margin-right: 5px;
+}
+
+#locations-row-links {
+	display: inline-block;
+	position: relative;
+	top: 3px;
+}
+
+#locations-edit-menu-link,
+#locations-add-menu-link {
+	margin: 0 2px;
+}
+
+#locations-edit-menu-link {
+	width: 15%;
+}
+
+#locations-add-menu-link {
+	width: 12%;	
+}
+
 #wpbody .open-label {
 	display: block;
 	float:left;
Index: wp-admin/nav-menus.php
===================================================================
--- wp-admin/nav-menus.php	(revision 23774)
+++ wp-admin/nav-menus.php	(working copy)
@@ -37,6 +37,11 @@
 // The menu id of the current menu being edited
 $nav_menu_selected_id = isset( $_REQUEST['menu'] ) ? (int) $_REQUEST['menu'] : 0;
 
+// Get existing menu locations assignments
+$locations = get_registered_nav_menus();
+$menu_locations = get_nav_menu_locations();
+$num_locations = count( array_keys( $locations ) );
+
 // Allowed actions: add, update, delete
 $action = isset( $_REQUEST['action'] ) ? $_REQUEST['action'] : 'edit';
 
@@ -262,10 +267,6 @@
 	case 'update':
 		check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' );
 
-		// Get existing menu locations assignments
-		$locations = get_registered_nav_menus();
-		$menu_locations = get_nav_menu_locations();
-
 		// Remove menu locations that have been unchecked
 		foreach ( $locations as $location => $description ) {
 			if ( ( empty( $_POST['menu-locations'] ) || empty( $_POST['menu-locations'][ $location ] ) ) && isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] == $nav_menu_selected_id )
@@ -341,6 +342,20 @@
 			}
 		}
 		break;
+	case 'locations':
+		add_filter( 'screen_options_show_screen', '__return_false' );
+
+		if ( isset( $_POST['menu-locations'] ) ) {
+			check_admin_referer( 'save-menu-locations' );
+
+			$new_menu_locations = array_map( 'absint', $_POST['menu-locations'] );
+			$menu_locations = array_merge( $menu_locations, $new_menu_locations );
+			// Set menu locations
+			set_theme_mod( 'nav_menu_locations', $menu_locations );
+
+			$messages[] = '<div id="message" class="updated"><p>' . __( 'Menu locations updated.' ) . '</p></div>';
+		}
+		break;
 }
 
 // Get all nav menus
@@ -350,6 +365,8 @@
 // Are we on the add new screen?
 $add_new_screen = ( isset( $_GET['menu'] ) && 0 == $_GET['menu'] ) ? true : false;
 
+$locations_screen = ( isset( $_GET['action'] ) && 'locations' == $_GET['action'] ) ? true : false;
+
 // If we have one theme location, and zero menus, we take them right into editing their first menu
 $page_count = wp_count_posts( 'page' );
 $one_theme_location_no_menus = ( 1 == count( get_registered_nav_menus() ) && ! $add_new_screen && empty( $nav_menus ) && ! empty( $page_count->publish ) ) ? true : false;
@@ -474,19 +491,80 @@
 ?>
 <div class="wrap">
 	<?php screen_icon(); ?>
-	<h2><?php _e( 'Menus' ); ?> <a href="<?php echo esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => 0, ), admin_url( 'nav-menus.php' ) ) ); ?>" class="add-new-h2"><?php _ex( 'Add New', 'menu' ); ?></a></h2>
+	<h2 class="nav-tab-wrapper">
+		<a href="<?php echo admin_url( 'nav-menus.php' ); ?>" class="nav-tab<?php if ( ! isset( $_GET['action'] ) || isset( $_GET['action'] ) && 'locations' != $_GET['action'] ) echo ' nav-tab-active'; ?>"><?php esc_html_e( 'Edit Menus' ); ?></a>
+		<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'locations' ), admin_url( 'nav-menus.php' ) ) ); ?>" class="nav-tab<?php if ( $locations_screen ) echo ' nav-tab-active'; ?>"><?php esc_html_e( 'Manage Locations' ); ?></a>
+ 	</h2>
 	<?php
 	foreach( $messages as $message ) :
 		echo $message . "\n";
 	endforeach;
 	?>
+	<?php 
+	if ( $locations_screen ) : 
+		echo '<p>' . sprintf( _n( 'Your theme supports %s menu. Select which menu you would like to use below.', 'Your theme supports %s menus. Select a menu to use for each theme location below.', $num_locations ), number_format_i18n( $num_locations ) ) . '</p>';
+	?>
+	<div id="menu-locations-wrap">
+		<form method="post" action="<?php echo esc_url( add_query_arg( array( 'action' => 'locations' ), admin_url( 'nav-menus.php' ) ) ); ?>">
+			<p class="button-controls"><?php submit_button( __( 'Save Changes' ), 'primary left', 'nav-menu-locations', false ); ?></p>
+			<table class="widefat fixed" cellspacing="0" id="menu-locations-table">
+				<thead>
+				<tr>
+					<th scope="col" class="manage-column column-locations"><?php _e( 'Theme Location' ); ?></th>
+					<th scope="col" class="manage-column column-menus"><?php _e( 'Assigned Menu' ); ?></th>
+				</tr>
+				</thead>
+				<tfoot>
+				<tr>
+					<th scope="col" class="manage-column column-locations"><?php _e( 'Theme Location' ); ?></th>
+					<th scope="col" class="manage-column column-menus"><?php _e( 'Assigned Menu' ); ?></th>
+				</tr>
+				</tfoot>
+				<tbody class="menu-locations">
+				<?php foreach ( $locations as $_location => $_name ) { ?>
+					<tr id="menu-locations-row">
+						<td class="menu-location-title"><strong><?php echo $_name; ?></strong></td>
+						<td class="menu-location-menus">
+							<select name="menu-locations[<?php echo $_location; ?>]" id="locations-<?php echo $_location; ?>">
+								<option value="0"><?php printf( '&mdash; %s &mdash;', esc_html__( 'Select a Menu' ) ); ?></option>
+								<?php foreach ( $nav_menus as $menu ) : ?>
+								<option<?php selected( isset( $menu_locations[ $_location ] ) && $menu_locations[ $_location ] == $menu->term_id ); ?>
+									value="<?php echo $menu->term_id; ?>">
+									<?php $truncated_name = wp_html_excerpt( $menu->name, 40 );
+									echo $truncated_name == $menu->name ? $menu->name : trim( $truncated_name ) . '&hellip;'; ?>
+								</option>
+								<?php endforeach; ?>
+							</select>
+							<div id="locations-row-links">
+								<span id="locations-edit-menu-link">
+									<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => $menu->term_id ), admin_url( 'nav-menus.php' ) ) ); ?>">
+										<?php _ex( 'Edit', 'menu' ); ?>
+									</a>
+								</span> | 
+								<span id="locations-add-menu-link">
+									<a href="<?php echo esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => 0 ), admin_url( 'nav-menus.php' ) ) ); ?>">
+										<?php _ex( 'Add New', 'menu' ); ?>
+									</a>
+								</span>
+							</div><!-- #locations-row-links -->
+						</td><!-- .menu-location-menus -->
+					</tr><!-- #menu-locations-row -->
+				<?php } // foreach ?>
+				</tbody>
+			</table>
+			<p class="button-controls"><?php submit_button( __( 'Save Changes' ), 'primary left', 'nav-menu-locations', false ); ?></p>
+			<?php wp_nonce_field( 'save-menu-locations' ); ?>
+			<input type="hidden" name="menu" id="nav-menu-meta-object-id" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
+		</form>
+	</div><!-- #menu-locations-wrap -->
+	<?php else : ?>
 	<div class="manage-menus">
-	<?php if ( $menu_count < 2 ) : ?>
+		<?php if ( $menu_count < 2 ) : ?>
 		<span class="add-edit-menu-action">
 			<?php printf( __( 'Edit your menu below, or <a href="%s">create a new menu</a>.' ), esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => 0 ), admin_url( 'nav-menus.php' ) ) ) ); ?>
 		</span><!-- /add-edit-menu-action -->
-	<?php else : ?>
-		<form method="post" action="<?php echo admin_url( 'nav-menus.php' ); ?>">
+		<?php else : ?>
+		<form method="get" action="<?php echo admin_url( 'nav-menus.php' ); ?>">
 			<input type="hidden" name="action" value="edit" />
 			<label for="menu" class="selected-menu"><?php _e( 'Select a menu to edit:' ); ?></label>
 			<select name="menu" id="menu">
@@ -520,7 +598,7 @@
 				<?php printf( __( 'or <a href="%s">create a new menu</a>.' ), esc_url( add_query_arg( array( 'action' => 'edit', 'menu' => 0 ), admin_url( 'nav-menus.php' ) ) ) ); ?>
 			</span><!-- /add-new-menu-action -->
 		</form>
-	<?php endif; ?>
+		<?php endif; ?>
 	</div><!-- /manage-menus -->
 	<div id="nav-menus-frame">
 	<div id="menu-settings-column" class="metabox-holder<?php if ( isset( $_GET['menu'] ) && '0' == $_GET['menu'] ) { echo ' metabox-holder-disabled'; } ?>">
@@ -633,5 +711,6 @@
 		</div><!-- /#menu-management -->
 	</div><!-- /#menu-management-liquid -->
 	</div><!-- /#nav-menus-frame -->
+	<?php endif; ?>
 </div><!-- /.wrap-->
 <?php include( './admin-footer.php' ); ?>
