Index: /trunk/wp-admin/css/wp-admin.css
===================================================================
--- /trunk/wp-admin/css/wp-admin.css	(revision 23706)
+++ /trunk/wp-admin/css/wp-admin.css	(revision 23707)
@@ -6038,4 +6038,8 @@
 }
 
+.wp-full-overlay-sidebar-content .accordion-section:first-child {
+	border-top: 1px solid #fff;
+}
+
 /* Close Link */
 .wp-full-overlay .close-full-overlay {
@@ -7203,4 +7207,27 @@
 }
 
+#nav-menu-meta ul.outer-border {
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
+}
+
+.accordion-section ul.category-tabs,
+.accordion-section ul.add-menu-item-tabs,
+.accordion-section ul.wp-tab-bar {
+	margin: 0;
+}
+
+.accordion-section .categorychecklist {
+	margin: 13px 0;
+}
+
+#nav-menu-meta .accordion-section-content {
+	padding: 18px 13px;
+}
+
+#nav-menu-meta .button-controls {
+	margin-bottom: 0;
+}
+
 #nav-menus-frame {
 	margin-left: 300px;
@@ -7332,5 +7359,5 @@
 
 .nav-menus-php #post-body {
-	padding: 0 10px;
+	padding: 0 10px 10px;
 	border-width: 1px 0;
 	border-style: solid;
@@ -7402,11 +7429,34 @@
 
 /* Add Menu Item Boxes */
-.postbox .howto input {
+.postbox .howto input,
+.accordion-container .howto input {
 	width: 180px;
 	float: right;
 }
 
+.accordion-container .outer-border {
+	margin-top: 0;
+}
+
+.accordion-container .accordion-section:first-child {
+	-webkit-border-top-right-radius: 3px;
+	-webkit-border-top-left-radius: 3px;
+	border-top-right-radius: 3px;
+	border-top-left-radius: 3px;
+}
+
+.accordion-container .accordion-section:last-child {
+	-webkit-border-bottom-right-radius: 3px;
+	-webkit-border-bottom-left-radius: 3px;
+	border-bottom-right-radius: 3px;
+	border-bottom-left-radius: 3px;
+}
+
 .customlinkdiv .howto input {
-	width: 200px;
+	width: 180px;
+}
+
+.customlinkdiv p {
+	margin-top: 0
 }
 
@@ -8819,4 +8869,8 @@
 }
 
+.accordion-section:first-child {
+	border-top: 1px solid #dfdfdf;
+}
+
 .accordion-section:last-child {
 	box-shadow: 0 1px 0 0px #fff;
@@ -8826,4 +8880,6 @@
 	display: block;
 	background: #fdfdfd;
+	border-left: 1px solid #dfdfdf;
+	border-right: 1px solid #dfdfdf;
 }
 
@@ -8842,4 +8898,6 @@
 	padding: 15px 20px;
 	position: relative;
+	border-left: 1px solid #dfdfdf;
+	border-right: 1px solid #dfdfdf;
 
 	cursor: pointer;
@@ -8915,4 +8973,6 @@
 	background-image:      -o-linear-gradient(bottom, #6d6d6d, #808080);
 	background-image: linear-gradient(to top, #6d6d6d, #808080);
+	border-left: 1px solid #808080;
+	border-right: 1px solid #808080;
 }
 
Index: /trunk/wp-admin/includes/nav-menu.php
===================================================================
--- /trunk/wp-admin/includes/nav-menu.php	(revision 23706)
+++ /trunk/wp-admin/includes/nav-menu.php	(revision 23707)
@@ -388,9 +388,9 @@
 	// Register meta boxes
 	wp_nav_menu_post_type_meta_boxes();
-	add_meta_box( 'add-custom-links', __( 'Add Links' ), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' );
+	add_meta_box( 'add-custom-links', __( 'Links' ), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' );
 	wp_nav_menu_taxonomy_meta_boxes();
 
 	// Register advanced menu items (columns)
-	add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns');
+	add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' );
 
 	// If first time editing, disable advanced items by default.
@@ -448,5 +448,7 @@
 		if ( $post_type ) {
 			$id = $post_type->name;
-			add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', 'default', $post_type );
+			// give pages a higher priority
+			$priority = ( 'page' == $post_type->name ? 'core' : 'default' );
+			add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', $priority, $post_type );
 		}
 	}
@@ -566,19 +568,18 @@
 	?>
 	<div class="customlinkdiv" id="customlinkdiv">
-
-			<input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" />
-			<p id="menu-item-url-wrap">
-				<label class="howto" for="custom-menu-item-url">
-					<span><?php _e('URL'); ?></span>
-					<input id="custom-menu-item-url" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-url]" type="text" class="code menu-item-textbox" value="http://" />
-				</label>
-			</p>
-
-			<p id="menu-item-name-wrap">
-				<label class="howto" for="custom-menu-item-name">
-					<span><?php _e( 'Link Text' ); ?></span>
-					<input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Menu Item'); ?>" />
-				</label>
-			</p>
+		<input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" />
+		<p id="menu-item-url-wrap">
+			<label class="howto" for="custom-menu-item-url">
+				<span><?php _e('URL'); ?></span>
+				<input id="custom-menu-item-url" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-url]" type="text" class="code menu-item-textbox" value="http://" />
+			</label>
+		</p>
+
+		<p id="menu-item-name-wrap">
+			<label class="howto" for="custom-menu-item-name">
+				<span><?php _e( 'Link Text' ); ?></span>
+				<input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text" class="regular-text menu-item-textbox input-with-default-title" title="<?php esc_attr_e('Menu Item'); ?>" />
+			</label>
+		</p>
 
 		<p class="button-controls">
@@ -684,8 +685,20 @@
 	<div id="posttype-<?php echo $post_type_name; ?>" class="posttypediv">
 		<ul id="posttype-<?php echo $post_type_name; ?>-tabs" class="posttype-tabs add-menu-item-tabs">
-			<li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'most-recent', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent"><?php _e('Most Recent'); ?></a></li>
-			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#<?php echo $post_type_name; ?>-all"><?php _e('View All'); ?></a></li>
-			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-search"><?php _e('Search'); ?></a></li>
-		</ul>
+			<li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-most-recent" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'most-recent', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent">
+					<?php _e( 'Most Recent' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="<?php echo esc_attr( $post_type_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#<?php echo $post_type_name; ?>-all">
+					<?php _e( 'View All' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-search" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-search">
+					<?php _e( 'Search'); ?>
+				</a>
+			</li>
+		</ul><!-- .posttype-tabs -->
 
 		<div id="tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent" class="tabs-panel <?php
@@ -894,8 +907,20 @@
 	<div id="taxonomy-<?php echo $taxonomy_name; ?>" class="taxonomydiv">
 		<ul id="taxonomy-<?php echo $taxonomy_name; ?>-tabs" class="taxonomy-tabs add-menu-item-tabs">
-			<li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'most-used', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-pop"><?php _e('Most Used'); ?></a></li>
-			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-all"><?php _e('View All'); ?></a></li>
-			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>><a class="nav-tab-link" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"><?php _e('Search'); ?></a></li>
-		</ul>
+			<li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-pop" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'most-used', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-pop">
+					<?php _e( 'Most Used' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-all">
+					<?php _e( 'View All' ); ?>
+				</a>
+			</li>
+			<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>>
+				<a class="nav-tab-link" data-type="tabs-panel-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>">
+					<?php _e( 'Search' ); ?>
+				</a>
+			</li>
+		</ul><!-- .taxonomy-tabs -->
 
 		<div id="tabs-panel-<?php echo $taxonomy_name; ?>-pop" class="tabs-panel <?php
Index: /trunk/wp-admin/includes/template.php
===================================================================
--- /trunk/wp-admin/includes/template.php	(revision 23706)
+++ /trunk/wp-admin/includes/template.php	(revision 23707)
@@ -969,4 +969,68 @@
 
 /**
+ * Meta Box Accordion Template Function
+ *
+ * Largely made up of abstracted code from {@link do_meta_boxes()}, this
+ * function serves to build meta boxes as list items for display as
+ * a collapsible accordion.
+ *
+ * @since 3.6.0
+ *
+ * @uses global $wp_meta_boxes Used to retrieve registered meta boxes.
+ *
+ * @param string|object $screen The screen identifier.
+ * @param string $context The meta box context.
+ * @param mixed $object gets passed to the section callback function as first parameter.
+ * @return int number of meta boxes as accordion sections.
+ */
+function do_accordion_sections( $screen, $context, $object ) {
+	global $wp_meta_boxes;
+
+	if ( empty( $screen ) )
+		$screen = get_current_screen();
+	elseif ( is_string( $screen ) )
+		$screen = convert_to_screen( $screen );
+
+	$page = $screen->id;
+
+	$hidden = get_hidden_meta_boxes( $screen );
+	?>
+	<div id="side-sortables" class="accordion-container">
+		<ul class="outer-border">
+	<?php
+	$i = 0;
+	do {
+		if ( ! isset( $wp_meta_boxes ) || ! isset( $wp_meta_boxes[$page] ) || ! isset( $wp_meta_boxes[$page][$context] ) )
+			break;
+
+		foreach ( array( 'high', 'sorted', 'core', 'default', 'low' ) as $priority ) {
+			if ( isset( $wp_meta_boxes[$page][$context][$priority] ) ) {
+				foreach ( $wp_meta_boxes[$page][$context][$priority] as $box ) {
+					if ( false == $box || ! $box['title'] )
+						continue;
+					$i++;
+					$hidden_class = in_array( $box['id'], $hidden ) ? 'hide-if-js' : '';
+					?>
+					<li class="control-section accordion-section <?php echo $hidden_class; ?> <?php echo esc_attr( $box['id'] ); ?>" id="<?php echo esc_attr( $box['id'] ); ?>">
+						<h3 class="accordion-section-title hndle" tabindex="0" title="<?php echo esc_attr( $box['title'] ); ?>"><?php echo esc_html( $box['title'] ); ?></h3>
+						<div class="accordion-section-content <?php postbox_classes( $box['id'], $page ); ?>">
+							<div class="inside">
+								<?php call_user_func( $box['callback'], $object, $box ); ?>
+							</div><!-- .inside -->
+						</div><!-- .accordion-section-content -->
+					</li><!-- .accordion-section -->
+					<?php
+				}
+			}
+		}
+	} while(0);
+	?>
+		</ul><!-- .outer-border -->
+	</div><!-- .accordion-container -->
+	<?php
+	return $i;
+}
+
+/**
  * Add a new section to a settings page.
  *
Index: /trunk/wp-admin/js/nav-menu.js
===================================================================
--- /trunk/wp-admin/js/nav-menu.js	(revision 23706)
+++ /trunk/wp-admin/js/nav-menu.js	(revision 23707)
@@ -43,5 +43,5 @@
 			this.attachUnsavedChangesListener();
 
-			if( api.menuList.length ) // If no menu, we're in the + tab.
+			if( api.menuList.length )
 				this.initSortables();
 
@@ -52,4 +52,7 @@
 
 			this.initToggles();
+
+			// Open first accordion option
+			this.initAccordion();
 		},
 
@@ -261,4 +264,10 @@
 				}
 			});
+		},
+
+		initAccordion : function() {
+			var accordionOptions = $( '.accordion-container li.accordion-section' );
+			accordionOptions.removeClass('open');
+			accordionOptions.filter(':visible').first().addClass( 'open' );
 		},
 
@@ -392,4 +401,16 @@
 			// hide fields
 			api.menuList.hideAdvancedMenuItemFields();
+
+			$('.hide-postbox-tog').click(function () {
+				api.initAccordion();
+
+				var hidden = $( '.accordion-container li.accordion-section' ).filter(':hidden').map(function() { return this.id; }).get().join(',');
+				$.post(ajaxurl, {
+					action: 'closed-postboxes',
+					hidden: hidden,
+					closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
+					page: 'nav-menus'
+				});
+			});
 		},
 
@@ -787,11 +808,8 @@
 
 				if ( target.hasClass('nav-tab-link') ) {
-					panelId = /#(.*)$/.exec(e.target.href);
-					if ( panelId && panelId[1] )
-						panelId = panelId[1]
-					else
-						return false;
-
-					wrapper = target.parents('.inside').first();
+
+					panelId = target.data( 'type' );
+
+					wrapper = target.parents('.accordion-section-content').first();
 
 					// upon changing tabs, we want to uncheck all checkboxes
@@ -807,5 +825,5 @@
 					$('.quick-search', wrapper).focus();
 
-					return false;
+					e.preventDefault();
 				} else if ( target.hasClass('select-all') ) {
 					selectAreaMatch = /#(.*)$/.exec(e.target.href);
Index: /trunk/wp-admin/nav-menus.php
===================================================================
--- /trunk/wp-admin/nav-menus.php	(revision 23706)
+++ /trunk/wp-admin/nav-menus.php	(revision 23707)
@@ -24,4 +24,5 @@
 
 wp_enqueue_script( 'nav-menu' );
+wp_enqueue_script( 'accordion' );
 
 if ( wp_is_mobile() )
@@ -511,5 +512,5 @@
 			<input type="hidden" name="action" value="add-menu-item" />
 			<?php wp_nonce_field( 'add-menu_item', 'menu-settings-column-nonce' ); ?>
-			<?php do_meta_boxes( 'nav-menus', 'side', null ); ?>
+			<?php do_accordion_sections( 'nav-menus', 'side', null ); ?>
 		</form>
 
