Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 16067)
+++ wp-includes/admin-bar.php	(working copy)
@@ -170,12 +170,7 @@
 function wp_admin_bar_bloginfo_menu() {
 	global $wp_admin_bar;
 
-	/* Add the Site Info menu */
-	$wp_admin_bar->add_menu( array( 'id' => 'bloginfo', 'title' => __( 'Site Info' ), 'href' => '', ) );
-
-	// TODO: Move this js out into a seperate file?
-	$wp_admin_bar->add_menu( array( 'parent' => 'bloginfo', 'title' => __( 'Get Shortlink' ), 'href' => '', 'meta' => array( 
-			'onclick' => 'javascript:function wpcomshort() { var url=document.location;var links=document.getElementsByTagName(&#39;link&#39;);var found=0;for(var i = 0, l; l = links[i]; i++){if(l.getAttribute(&#39;rel&#39;)==&#39;shortlink&#39;) {found=l.getAttribute(&#39;href&#39;);break;}}if (!found) {for (var i = 0; l = document.links[i]; i++) {if (l.getAttribute(&#39;rel&#39;) == &#39;shortlink&#39;) {found = l.getAttribute(&#39;href&#39;);break;}}}if (found) {prompt(&#39;' . esc_js( __( 'URL:' ) ) . '&#39;, found);} else {alert(&#39;' . esc_js( __( 'No shortlink available for this page.' ) ) . '&#39;); } } wpcomshort(); return false;' ) ) );
+	$wp_admin_bar->add_menu( array( 'id' => 'get-shortlink', 'title' => __( 'Get Shortlink' ), 'href' => '', ) );
 }
 
 /**
@@ -208,41 +203,6 @@
 function wp_admin_bar_header() {
 	?>
 	<style type="text/css" media="print">#wpadminbar { display:none; }</style>
-	<script type="text/javascript">
-	/*	<![CDATA[ */
-	(function(d, w) {
-		var init = function() {
-			var b = d.getElementsByTagName('body')[0],
-			aB = d.getElementById('wpadminbar'),
-			s = d.getElementById('adminbar-search');
-
-			if ( b && aB )
-				b.appendChild( aB );
-
-			if ( s ) {
-				if ( '' == s.value )
-					s.value = s.getAttribute('title');
-
-				s.onblur = function() {
-					this.value = '' == this.value ? this.getAttribute('title') : this.value;
-				}
-				s.onfocus = function() {
-					this.value = this.getAttribute('title') == this.value ? '' : this.value;
-				}
-			}
-			
-			if ( w.location.hash )
-				w.scrollBy(0,-32);
-		}
-
-		if ( w.addEventListener )
-			w.addEventListener('load', init, false);
-		else if ( w.attachEvent ) 
-			w.attachEvent('onload', init);
-
-	})(document, window);
-	/*	]]> */
-	</script>
 	<?php
 }
 
@@ -272,9 +232,6 @@
 	<?php
 }
 
-add_action('wp_head', 'wp_admin_body_style');
-add_action('admin_head', 'wp_admin_body_style');
-
 /**
  * Determine whether the admin bar should be showing.
  *
@@ -291,7 +248,10 @@
 		if ( defined('WP_SHOW_ADMIN_BAR') )
 			$show_admin_bar = (bool) WP_SHOW_ADMIN_BAR;
 
-		if ( ! is_user_logged_in() )
+		if (  
+			! is_user_logged_in() || 
+			( is_admin() && ! is_multisite() )
+		)
 			$show_admin_bar = false;
 	}
 
Index: wp-includes/js/admin-bar.dev.js
===================================================================
--- wp-includes/js/admin-bar.dev.js	(revision 0)
+++ wp-includes/js/admin-bar.dev.js	(revision 0)
@@ -0,0 +1,116 @@
+(function(d, w) {
+	var addEvent = function( obj, type, fn ) {
+		if (obj.addEventListener)
+			obj.addEventListener(type, fn, false);
+		else if (obj.attachEvent)
+			obj.attachEvent('on' + type, function() { return fn.call(obj, window.event);});
+	},
+
+	aB, hc = new RegExp('\\bhover\\b', 'g'), q = [],
+
+	getTOID = function(el) {
+		var i = q.length;
+		while( i-- )
+			if ( q[i] && el == q[i][1] )
+				return q[i][0];
+		return false;
+	},
+
+	addClass = function(t) {
+		while ( t && t != aB && t != d ) {
+			if( 'LI' == t.nodeName.toUpperCase() ) {
+				var id = getTOID(t);	
+				if ( id )
+					clearTimeout( id );
+				t.className = t.className ? ( t.className.replace(hc, '') + ' hover' ) : 'hover';
+			}
+			t = t.parentNode;
+		}
+	},
+
+	removeClass = function(t) {
+		while ( t && t != aB && t != d ) {
+			if( 'LI' == t.nodeName.toUpperCase() ) {
+				(function(t) {
+					var to = setTimeout(function() {
+						t.className = t.className ? t.className.replace(hc, '') : '';
+					}, 500);
+					q[q.length] = [to, t];
+				})(t);
+			}
+			t = t.parentNode;
+		}
+	}
+
+	clickShortlink = function(e) {
+		var t = e.target || e.srcElement, links, i;
+		
+
+		if ( 'undefined' == typeof setAdminBarL10n )
+			return;
+
+		while( t && t != aB && t != d && (
+			! t.className ||
+			-1 == t.className.indexOf('ab-get-shortlink')
+		) )
+			t = t.parentNode;
+
+		if ( t && t.className && -1 != t.className.indexOf('ab-get-shortlink') ) {
+			links = d.getElementsByTagName('link');
+			if ( ! links.length )
+				links = d.links;
+
+			i = links.length;
+
+			if ( e.preventDefault )
+				e.preventDefault();
+			e.returnValue = false;
+
+			while( i-- ) {
+				if ( links[i] && 'shortlink' == links[i].getAttribute('rel') ) {
+					prompt( setAdminBarL10n.url, links[i].href );
+					return false;
+				}
+			}
+			
+			alert( setAdminBarL10n.noShortlink );
+			return false;
+		}
+	},
+
+	addEvent(w, 'load', function() {
+		var b = d.getElementsByTagName('body')[0],
+		s = d.getElementById('adminbar-search');
+		
+		aB = d.getElementById('wpadminbar');
+
+		if ( b && aB ) {
+			b.appendChild( aB );
+
+			addEvent(aB, 'mouseover', function(e) {
+				addClass( e.target || e.srcElement );
+			});
+
+			addEvent(aB, 'mouseout', function(e) {
+				removeClass( e.target || e.srcElement );	
+			});
+
+			addEvent(aB, 'click', clickShortlink );
+		}
+
+		if ( s ) {
+			if ( '' == s.value )
+				s.value = s.getAttribute('title');
+
+			s.onblur = function() {
+				this.value = '' == this.value ? this.getAttribute('title') : this.value;
+			}
+			s.onfocus = function() {
+				this.value = this.getAttribute('title') == this.value ? '' : this.value;
+			}
+		}
+		
+		if ( w.location.hash )
+			w.scrollBy(0,-32);
+	});
+})(document, window);
Index: wp-includes/admin-bar/admin-bar-class.php
===================================================================
--- wp-includes/admin-bar/admin-bar-class.php	(revision 16067)
+++ wp-includes/admin-bar/admin-bar-class.php	(working copy)
@@ -33,8 +33,12 @@
 		$this->user->locale = get_locale();
 
 		add_action( 'wp_head', 'wp_admin_bar_header' );
+		add_action( 'wp_head', 'wp_admin_body_style');
+
 		add_action( 'admin_head', 'wp_admin_bar_header' );
+		add_action( 'admin_head', 'wp_admin_body_style');
 
+		wp_enqueue_script( 'admin-bar' );
 		wp_enqueue_style( 'admin-bar' );
 
 		if ( is_super_admin() ) {
Index: wp-includes/css/admin-bar-rtl.dev.css
===================================================================
--- wp-includes/css/admin-bar-rtl.dev.css	(revision 16067)
+++ wp-includes/css/admin-bar-rtl.dev.css	(working copy)
@@ -25,7 +25,7 @@
 	border-right: 1px solid #808080;
 }
 
-#wpadminbar .quicklinks > ul > li.hover > a {
+#wpadminbar .quicklinks > ul > li:hover > a {
 	border-right-color: #707070;
 	border-left-color: #686868;
 }
@@ -35,7 +35,8 @@
 	float:none;
 }
 
-#wpadminbar .menupop li:hover > ul {
+#wpadminbar .menupop li:hover > ul,
+#wpadminbar .menupop li.hover > ul {
 	margin-left:-100%;
 }
 
@@ -156,8 +157,8 @@
 	padding: 0 0.7em 0 1.15em;
 }
 
-#wpadminbar li.ab-me > a.hover, 
-#wpadminbar li.ab-blog > a.hover {
+#wpadminbar li.ab-me > a:hover, 
+#wpadminbar li.ab-blog > a:hover {
 	background-position: 33% 59.8%;
 }
 
@@ -211,7 +212,8 @@
 	direction: ltr;
 }
 
-#wpadminbar #admin-bar-micro ul li:hover > ul {
+#wpadminbar #admin-bar-micro ul li:hover > ul,
+#wpadminbar #admin-bar-micro ul li.hover > ul {
 	left: auto;
 	right: 100%;
 }
Index: wp-includes/css/admin-bar.dev.css
===================================================================
--- wp-includes/css/admin-bar.dev.css	(revision 16067)
+++ wp-includes/css/admin-bar.dev.css	(working copy)
@@ -30,8 +30,7 @@
 #wpadminbar .quicklinks > ul > li:last-child > a {
 	border-right: none;
 }
-#wpadminbar .quicklinks > ul > li:hover > a,
-#wpadminbar .quicklinks > ul > li.hover > a {
+#wpadminbar .quicklinks > ul > li:hover > a {
 	border-left-color: #707070;
 }
 #wpadminbar a {
@@ -45,11 +44,13 @@
 	float:none;
 	display:inline !important;
 }
-#wpadminbar li:hover > ul {
+#wpadminbar li:hover > ul,
+#wpadminbar li.hover > ul {
 	display:block;
 }
 
-#wpadminbar .menupop li:hover > ul {
+#wpadminbar .menupop li:hover > ul,
+#wpadminbar .menupop li.hover > ul {
 	margin-left:100%;
 	margin-top:-28px;
 }
@@ -226,9 +227,7 @@
 	padding: 0 1.15em 0 0.7em;
 }
 #wpadminbar li.ab-me > a:hover, 
-#wpadminbar li.ab-me > a.hover, 
-#wpadminbar li.ab-blog > a:hover,
-#wpadminbar li.ab-blog > a.hover {
+#wpadminbar li.ab-blog > a:hover {
 	background-position: 67% 59.8%;
 }
 #wpadminbar li.ab-me img.avatar, 
@@ -338,7 +337,8 @@
 * html #wpadminbar .menupop a span, 
 * html #wpadminbar .menupop ul li a:hover, 
 * html #wpadminbar .myaccount a, 
-* html .quicklinks a:hover,#wpadminbar .menupop:hover { 
+* html .quicklinks a:hover,
+* html #wpadminbar .menupop:hover {
 	background-image: none !important; 
 }
 
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 16067)
+++ wp-includes/script-loader.php	(working copy)
@@ -58,6 +58,11 @@
 
 	$suffix = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
 
+	$scripts->add( 'admin-bar', "/wp-includes/js/admin-bar$suffix.js", false, '20101028');
+	$scripts->localize( 'admin-bar', 'setAdminBarL10n', array(
+		'url' => __( 'URL:' ),
+		'noShortlink' => __( 'No shortlink available for this page.' ),
+	) );
 	$scripts->add( 'utils', "/wp-admin/js/utils$suffix.js", false, '20090102' );
 
 	$scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), '20101007' );
