Index: wp-admin/admin-header.php
===================================================================
--- wp-admin/admin-header.php	(revision 7944)
+++ wp-admin/admin-header.php	(working copy)
@@ -5,6 +5,7 @@
 	if ( user_can_richedit() )
 		wp_enqueue_script( 'wp_tiny_mce' );
 }
+wp_enqueue_script( 'wp-gears' );
 
 $min_width_pages = array( 'post.php', 'post-new.php', 'page.php', 'page-new.php', 'widgets.php', 'comment.php', 'link.php' );
 $the_current_page = preg_replace('|^.*/wp-admin/|i', '', $_SERVER['PHP_SELF']);
@@ -63,9 +64,48 @@
 <div id="wphead">
 <h1><?php if ( '' == get_bloginfo('name') ) echo '&nbsp;'; else echo get_bloginfo('name'); ?><span id="viewsite"><a href="<?php echo trailingslashit( get_option('home') ); ?>"><?php _e('Visit Site') ?></a></span></h1>
 </div>
-<div id="user_info"><p><?php printf(__('Howdy, <a href="%1$s">%2$s</a>!'), 'profile.php', $user_identity) ?> | <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log Out') ?>"><?php _e('Log Out'); ?></a> | <?php _e('<a href="http://codex.wordpress.org/">Help</a>') ?> | <?php _e('<a href="http://wordpress.org/support/">Forums</a>') ?></p></div>
 
 <?php
+$gears_compat = false;
+
+if ( ($is_gecko || $is_winIE) && strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'webkit') === false ) { 
+	$gears_compat = true;
+?>
+	<div id="gears-info-box" class="info-box">
+	<img src="images/gear.png" title="Gear" alt="" class="gears-img" />
+	<div id="gears-msg1">
+	<h3 class="info-box-title"><?php _e('Speed up WordPress'); ?></h3>
+	<p><?php _e('WordPress has support for Google Gears that adds new features to your web browser.'); ?><br />
+	<a href="http://gears.google.com/" target="_blank" style="font-weight:normal;"><?php _e('More information...'); ?></a></p>
+	<p><?php _e('After installing and enabling it, most of the WordPress images, scripts and CSS files will be stored on this computer. This will speed up page loading.'); ?></p>
+	<p><strong><?php _e('Please make sure you are not using a public or shared computer.'); ?></strong></p>
+	<div class="submit"><button onclick="window.location = 'http://gears.google.com/?action=install&return=<?php echo get_option('siteurl') . '/wp-admin/'; ?>';" class="button"><?php _e('Install Now'); ?></button>
+	<button class="button" style="margin-left:10px;" onclick="document.getElementById('gears-info-box').style.display='none';">Cancel</button></div>
+	</div>
+
+	<div id="gears-msg2" style="display:none;">
+	<h3 class="info-box-title"><?php _e('Google Gears Status'); ?></h3>
+	<p><?php _e('Google Gears is installed on this computer but is not enabled for use with WordPress.'); ?></p> 
+	<p><?php _e('To enable it, make sure this web site is not on the denied list in Google Gears Settings under your browser\'s Tools menu, then click the button below.'); ?></p>
+	<p><strong><?php _e('However if this is a public or shared computer, Google Gears should not be enabled.'); ?></strong></p>
+	<div class="submit"><button class="button" onclick="wpGears.getPermission();"><?php _e('Enable Google Gears'); ?></button>
+	<button class="button" style="margin-left:10px;" onclick="document.getElementById('gears-info-box').style.display='none';">Cancel</button></div>
+	</div>
+
+	<div id="gears-msg3" style="display:none;">
+	<h3 class="info-box-title"><?php _e('Google Gears Status'); ?></h3>
+	<p><?php _e('Google Gears is installed and enabled on this computer. You can disable it from your browser Tools menu.'); ?></p>
+	<p><?php _e('If there are any errors, try disabling Gears, then reload the page and enable it again.'); ?></p>
+	<p><?php _e('Local storage status:'); ?> <span id="gears-wait"><span style="color:#f00;"><?php _e('Please wait! Updating files:'); ?></span> <span id="gears-upd-number"></span></span></p>
+	<div class="submit"><button class="button" onclick="document.getElementById('gears-info-box').style.display='none';"><?php _e('Close'); ?></button></div>
+	</div>
+	</div>
+
+<?php } ?>
+
+<div id="user_info"><p><?php printf(__('Howdy, <a href="%1$s">%2$s</a>!'), 'profile.php', $user_identity) ?> | <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?action=logout" title="<?php _e('Log Out') ?>"><?php _e('Log Out'); ?></a> | <?php _e('<a href="http://codex.wordpress.org/">Help</a>') ?> | <?php _e('<a href="http://wordpress.org/support/">Forums</a>') ?> | <?php if ( $gears_compat ) { ?><span id="gears-menu"><a href="#" onclick="wpGears.message(1);return false;"><?php _e('Speed up!') ?></a></span><?php } ?></p></div>
+
+<?php
 require(ABSPATH . 'wp-admin/menu-header.php');
 
 if ( $parent_file == 'options-general.php' ) {
Index: wp-admin/css/colors-classic.css
===================================================================
--- wp-admin/css/colors-classic.css	(revision 7944)
+++ wp-admin/css/colors-classic.css	(working copy)
@@ -37,7 +37,7 @@
 	color: #fff;
 }
 
-ul#category-tabs li.ui-tabs-selected, li.widget-list-control-item, div.nav, .tablenav, .submitbox, h3.dashboard-widget-title, h3.dashboard-widget-title span, h3.dashboard-widget-title small, ul.view-switch li.current, .form-table tr, #poststuff h3, .login form {
+ul#category-tabs li.ui-tabs-selected, li.widget-list-control-item, div.nav, .tablenav, .submitbox, h3.dashboard-widget-title, h3.dashboard-widget-title span, h3.dashboard-widget-title small, ul.view-switch li.current, .form-table tr, #poststuff h3, .login form, h3.info-box-title {
 	background-color: #cfebf7;
 }
 
Index: wp-admin/css/colors-fresh.css
===================================================================
--- wp-admin/css/colors-fresh.css	(revision 7944)
+++ wp-admin/css/colors-fresh.css	(working copy)
@@ -41,7 +41,7 @@
 	color: #fff;
 }
 
-li.widget-list-control-item, div.nav, .tablenav, .submitbox, h3.dashboard-widget-title, h3.dashboard-widget-title span, h3.dashboard-widget-title small, ul.view-switch li.current, .form-table tr, #poststuff h3, .login form {
+li.widget-list-control-item, div.nav, .tablenav, .submitbox, h3.dashboard-widget-title, h3.dashboard-widget-title span, h3.dashboard-widget-title small, ul.view-switch li.current, .form-table tr, #poststuff h3, .login form, h3.info-box-title {
 	background-color: #eaf3fa;
 }
 
Index: wp-admin/images/gear.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: wp-admin\images\gear.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Index: wp-admin/images/logo.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: wp-admin\images\logo.gif
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Index: wp-admin/index.php
===================================================================
--- wp-admin/index.php	(revision 7944)
+++ wp-admin/index.php	(working copy)
@@ -32,7 +32,6 @@
 add_action( 'admin_head', 'index_css' );
 
 wp_enqueue_script( 'jquery' );
-wp_enqueue_script( 'wp-gears' );
 
 $title = __('Dashboard');
 $parent_file = 'index.php';
@@ -117,34 +116,6 @@
 	<?php endif; ?>
 	<?php update_right_now_message(); ?>
 </p>
-
-<?php
-if ( ($is_gecko || $is_winIE) && strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'webkit') === false ) { 
-	if ( ! isset($current_user) )
-		$current_user = wp_get_current_user();
-
-	if ( ! isset($current_user->gearsinfobox) ) {
-		update_usermeta($current_user->ID, 'gearsinfobox', '1'); ?>
-
-	<div id="gears-info-box" class="info-box">
-	<h3 class="dashboard-widget-title"><?php _e('Install offline storage for WordPress'); ?></h3>
-	<p><?php _e('WordPress has support for Google Gears that adds new features to your web browser.'); ?> <a href="http://gears.google.com/" target="_blank" style="font-weight:normal;"><?php _e('More information...'); ?></a></p>
-	<p><?php _e('After installing and enabling it, most of the WordPress images, scripts and CSS files will be stored on this computer. This will speed up page loading considerably.'); ?></p>
-	<p><strong><?php _e('Please make sure you are not using a public or shared computer.'); ?></strong></p>
-	<div class="submit"><a href="http://gears.google.com/?action=install&return=<?php echo get_option('siteurl') . '/wp-admin/'; ?>" class="button"><?php _e('Install Now'); ?></a><a href="#" class="button" style="margin-left:10px;" onclick="document.getElementById('gears-info-box').style.display='none';return false;">Cancel</a></div>
-	</div>
-<?php } ?>
-
-	<div id="gears-msg1"><p><?php _e('WordPress has support for Google Gears that adds new features to your web browser.'); ?> <a href="http://gears.google.com/" target="_blank" style="font-weight:normal;"><?php _e('More information...'); ?></a><br />
-	<?php _e('After installing and enabling it, most of the WordPress images, scripts and CSS files will be stored on this computer. This will speed up page loading considerably.'); ?></p>
-	<p><a href="http://gears.google.com/?action=install&return=<?php echo get_option('siteurl') . '/wp-admin/'; ?>" class="rbutton"><?php _e('Install Google Gears'); ?></a> <strong><?php _e('Please make sure you are not using a public or shared computer.'); ?></strong></p></div>
-	
-	<p id="gears-msg2" style="display:none;"><?php _e('Google Gears is installed on this computer but is not enabled for use with WordPress. To enable it, make sure this web site is not on the denied list under Tools - Google Gears Settings menu of your browser, then reload this page and allow the site to use Google Gears on this computer.'); ?><br />
-	<strong><?php _e('However if this is a public or shared computer, Google Gears should not be enabled.'); ?></strong></p>
-	
-	<p id="gears-msg3" style="display:none;"><?php _e('Google Gears is installed and enabled on this computer. You can disable it from your browser Tools menu.'); ?><br />
-	<?php _e('Status:'); ?> <span id="gears-wait"><span style="color:#fff;background-color:#f00;"><?php _e('Please wait! Updating files:'); ?></span> <span id="gears-upd-number"></span></span></p>
-<?php } ?>
 <?php do_action( 'rightnow_end' ); ?>
 <?php do_action( 'activity_box_end' ); ?>
 </div><!-- rightnow -->
Index: wp-admin/js/wp-gears.js
===================================================================
--- wp-admin/js/wp-gears.js	(revision 7944)
+++ wp-admin/js/wp-gears.js	(working copy)
@@ -1,31 +1,27 @@
 
 wpGears = {
 
-	init : function() {
-		if ( 'undefined' != typeof google && google.gears ) {
-			try { 
-				localServer = google.gears.factory.create("beta.localserver");
-				this.createStore();
-			} catch(e) { // silence if canceled
-				this.message();
-			}
-	  	}
-	},
-
 	createStore : function() {
 		if ( 'undefined' == typeof google || ! google.gears ) return;
 
+		if ( 'undefined' == typeof localServer ) 
+			localServer = google.gears.factory.create("beta.localserver");
+
 		store = localServer.createManagedStore(this.storeName());
 		store.manifestUrl = "gears-manifest.php";
 		store.checkForUpdate();
 		this.message();
 	},
 
-	removeStore : function() {
-		if ( 'undefined' == typeof google || ! google.gears ) return;
+	getPermission : function() {
+		if ( 'undefined' != typeof google && google.gears ) {
+			if ( ! google.gears.factory.hasPermission )
+				google.gears.factory.getPermission( 'WordPress', 'images/logo.gif' );
 
-		localServer.removeManagedStore(this.storeName());
-		this.message();
+			try {
+				this.createStore();
+			} catch(e) {} // silence if canceled
+		}
 	},
 
 	storeName : function() {
@@ -37,31 +33,36 @@
       return name;
     },
 
-    message : function() {
+    message : function(show) {
 		var t = this, msg1 = t.I('gears-msg1'), msg2 = t.I('gears-msg2'), msg3 = t.I('gears-msg3'), num = t.I('gears-upd-number'), wait = t.I('gears-wait');
 
 		if ( ! msg1 ) return;
 
-        if ( 'undefined' != typeof store ) {
-			msg1.style.display = msg2.style.display = 'none';
-			msg3.style.display = 'block';
+		if ( 'undefined' != typeof google && google.gears ) {
+			if ( google.gears.factory.hasPermission ) {
+				msg1.style.display = msg2.style.display = 'none';
+				msg3.style.display = 'block';
 
-			store.oncomplete = function(){wait.innerHTML = (' ' + wpGearsL10n.updateCompleted);};
-			store.onerror = function(){wait.innerHTML = (' ' + wpGearsL10n.error + ' ' + store.lastErrorMessage);};
-			store.onprogress = function(e){if(num) num.innerHTML = (' ' + e.filesComplete + ' / ' + e.filesTotal);};
-        } else if ( 'undefined' != typeof google && google.gears ) {
-			msg1.style.display = 'none';
-			msg2.style.display = 'block';
+				if ( 'undefined' == typeof store )
+					t.createStore();
+
+				store.oncomplete = function(){wait.innerHTML = (' ' + wpGearsL10n.updateCompleted);};
+				store.onerror = function(){wait.innerHTML = (' ' + wpGearsL10n.error + ' ' + store.lastErrorMessage);};
+				store.onprogress = function(e){if(num) num.innerHTML = (' ' + e.filesComplete + ' / ' + e.filesTotal);};
+			} else {
+				msg1.style.display = msg3.style.display = 'none';
+				msg2.style.display = 'block';
+			}
 		}
+
+		if ( show ) t.I('gears-info-box').style.display = 'block';
 	},
-	
+
 	I : function(id) {
 		return document.getElementById(id);
 	}
 }
 
-addLoadEvent( function(){wpGears.init()} );
-
 function gearsInit() {
 	if ( 'undefined' != typeof google && google.gears ) return;
 
Index: wp-admin/wp-admin.css
===================================================================
--- wp-admin/wp-admin.css	(revision 7944)
+++ wp-admin/wp-admin.css	(working copy)
@@ -1500,21 +1500,33 @@
 }
 
 .info-box {
-	top: 120px;
+	top: 100px;
 	left: 50%;
-	margin-left: -200px;
+	margin-left: -225px;
 	height: 300px;
-	width: 400px;
+	width: 450px;
 	border: 5px solid #ddd;
 	background: #f8f8f8;
 	position: absolute;
 	padding: 15px 15px 10px;
 	z-index: 1000;
+	display: none;
 }
 
 .info-box .submit {
 	position: absolute;
 	bottom: 15px;
-	width: 400px;
-	padding: 20px 0 5px;
+	width: 450px;
+	padding: 15px 0 0;
 }
+
+.info-box .gears-img {
+	float: right;
+	margin: 10px;
+}
+
+.info-box-title {
+	line-height: 2;
+	margin: 0;
+	padding: 0 7px;
+}
