Index: wp-admin/css/wp-admin.dev.css
===================================================================
--- wp-admin/css/wp-admin.dev.css	(revision 17449)
+++ wp-admin/css/wp-admin.dev.css	(revision )
@@ -854,19 +854,22 @@
 }
 
 .folded #adminmenu div.wp-submenu-head,
-.folded #adminmenu li.wp-has-submenu div.sub-open {
+body.js.folded #adminmenu li.wp-has-submenu div.sub-open {
 	display: block;
 }
 
 .folded #adminmenu a.menu-top,
 .folded #adminmenu .wp-submenu,
-.folded #adminmenu li.wp-menu-open .wp-submenu,
+.folded #adminmenu li.wp-has-current-submenu .wp-submenu,
+body.no-js.folded #adminmenu .open-if-no-js .wp-submenu,
+body.js.folded #adminmenu li.wp-menu-open .wp-submenu,
 .folded #adminmenu div.wp-menu-toggle {
 	display: none;
 }
 
-#adminmenu li.wp-menu-open .wp-submenu,
-.no-js #adminmenu .open-if-no-js .wp-submenu {
+body.js #adminmenu li.wp-menu-open .wp-submenu,
+body.no-js #adminmenu .open-if-no-js .wp-submenu,
+body.no-js #adminmenu li.wp-has-current-submenu .wp-submenu {
 	display: block;
 }
 
@@ -1048,6 +1051,10 @@
 	cursor: default;
 }
 
+body.no-js #adminmenu .wp-menu-toggle {
+    display:none;
+}
+
 #adminmenu li.wp-has-current-submenu ul {
 	border-bottom-width: 1px;
 	border-bottom-style: solid;
Index: wp-admin/menu-header.php
===================================================================
--- wp-admin/menu-header.php	(revision 15866)
+++ wp-admin/menu-header.php	(revision )
@@ -36,6 +36,9 @@
 function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true ) {
 	global $self, $parent_file, $submenu_file, $plugin_page, $pagenow, $typenow;
 
+	$menu_setting_increment = -1;
+	$user_settings = get_all_user_settings();
+
 	$first = true;
 	// 0 = name, 1 = capability, 2 = file, 3 = class, 4 = id, 5 = icon src
 	foreach ( $menu as $key => $item ) {
@@ -45,14 +48,18 @@
 			$class[] = 'wp-first-item';
 			$first = false;
 		}
-		if ( !empty($submenu[$item[2]]) )
+		if ( !empty($submenu[$item[2]]) ) {
 			$class[] = 'wp-has-submenu';
+			$menu_setting_increment++;
+		}
 
 		if ( ( $parent_file && $item[2] == $parent_file ) || ( empty($typenow) && $self == $item[2] ) ) {
 			if ( !empty($submenu[$item[2]]) )
 				$class[] = 'wp-has-current-submenu wp-menu-open';
 			else
 				$class[] = 'current';
+		} elseif ( ! empty( $submenu[ $item[2] ] ) && isset( $user_settings[ 'm' . $menu_setting_increment ] ) && 'o' == $user_settings[ 'm' . $menu_setting_increment ] ) {
+				$class[] = 'wp-menu-open';
 		}
 
 		if ( ! empty($item[4]) )
Index: wp-admin/js/common.dev.js
===================================================================
--- wp-admin/js/common.dev.js	(revision 16900)
+++ wp-admin/js/common.dev.js	(revision )
@@ -28,26 +28,15 @@
 
 		if ( $('body').hasClass('folded') )
 			this.fold();
-
-		this.restoreMenuState();
 	},
 
 	restoreMenuState : function() {
-		$('li.wp-has-submenu', '#adminmenu').each(function(i, e) {
-			var v = getUserSetting( 'm'+i );
-			if ( $(e).hasClass('wp-has-current-submenu') )
-				return true; // leave the current parent open
-
-			if ( 'o' == v )
-				$(e).addClass('wp-menu-open');
-			else if ( 'c' == v )
-				$(e).removeClass('wp-menu-open');
-		});
+		// (perhaps) needed for back-compat
 	},
 
 	toggle : function(el) {
 		el.slideToggle(150, function() {
-			var id = el.parent().toggleClass( 'wp-menu-open' ).attr('id');
+			var id = el.removeAttr('style').parent().toggleClass( 'wp-menu-open' ).attr('id');
 			if ( id ) {
 				$('li.wp-has-submenu', '#adminmenu').each(function(i, e) {
 					if ( id == e.id ) {
