Index: wp-admin/css/wp-admin.dev.css
===================================================================
--- wp-admin/css/wp-admin.dev.css	(revision 17243)
+++ wp-admin/css/wp-admin.dev.css	(working copy)
@@ -3078,6 +3078,22 @@
 	font-family: Verdana, Arial, "Bitstream Vera Sans", sans-serif;
 }
 
+#timezone_suggest_working {
+	padding-bottom: 4px;
+	vertical-align: bottom;
+	display: none;
+}
+
+#timezone_suggest_result {
+	display: none;
+	color: #f00;
+}
+
+#timezone_suggest_use {
+	display: none;
+	margin-left: 5px;
+}
+
 ul#dismissed-updates {
 	display: none;
 }
Index: wp-admin/options-general.php
===================================================================
--- wp-admin/options-general.php	(revision 17243)
+++ wp-admin/options-general.php	(working copy)
@@ -50,6 +50,37 @@
 					action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
 					date : format.val()
 				}, function(d) { format.siblings('img').css('visibility','hidden'); format.siblings('.example').text(d); } );
+		})
+		$("#timezone_suggest").click(function(){
+			$("#timezone_suggest_working").animate({opacity:'show'},500);
+			$.ajax({
+				type: 'GET',
+				dataType: 'jsonp',
+				url: 'http://api.wordpress.org/core/ip-to-zoneinfo/1.0/',
+				success: function(data){
+					if (data.errorcode) {
+						$("#timezone_suggest_result span").text('<?php esc_attr_e('Unable to suggest timezone'); ?>');
+					} else {
+						var text = '<?php esc_attr_e('Based on your IP address, we suggest the %s timezone.'); ?>';
+						text = text.replace('%s', data.timezoneId);
+						$("#timezone_suggest_result span").text(text);
+						$("#timezone_suggest_use").show().click(function () {
+							$("#timezone_string").val(data.timezoneId);
+							$("#timezone_suggest_result").animate({opacity:'hide'}, 2000, function() {
+								$("#timezone_suggest_use").hide();
+							});
+						});
+					}
+					$("#timezone_suggest_working").animate(
+						{opacity:'hide'},
+						500,
+						'linear',
+						function(){
+							$("#timezone_suggest_result").animate({opacity:'show'},1000);
+						}
+					);
+				}
+			});
 		});
 	});
 //]]>
@@ -64,6 +95,7 @@
 	'<p>' . __('The WordPress URL and the Site URL can be the same (example.com) or different; for example, having the WordPress core files (example.com/wordpress) in a subdirectory instead of the root directory.') . '</p>' .
 	'<p>' . __('If you want site visitors to be able to register themselves, as opposed to being registered by the site administrator, check the membership box. A default user role can be set for all new users, whether self-registered or registered by the site administrator.') . '</p>' .
 	'<p>' . __('UTC means Coordinated Universal Time.') . '</p>' .
+	'<p>' . __('The timezone suggest utility is powered by the GeoNames database. <code>api.wordpress.org</code> is used to suggest this timezone, based on your IP. No information is stored as a result of this utility.') . '</p>' .
 	'<p>' . __('Remember to click the Save Changes button at the bottom of the screen for new settings to take effect.') . '</p>' .
 	'<p><strong>' . __('For more information:') . '</strong></p>' .
 	'<p>' . __('<a href="http://codex.wordpress.org/Settings_General_SubPanel" target="_blank">Documentation on General Settings</a>') . '</p>' .
@@ -205,7 +237,12 @@
 	<span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
 <?php endif; ?>
 <br />
-<span class="description"><?php _e('Choose a city in the same timezone as you.'); ?></span>
+	<input id="timezone_suggest" type="button" class="button" value="<?php esc_attr_e('Suggest a time zone'); ?>" />
+	<img id="timezone_suggest_working" src="images/wpspin_light.gif" width="16" height="16" /><br />
+	<p id="timezone_suggest_result">
+		<span></span><input id="timezone_suggest_use" type="button" class="button" value="<?php esc_attr_e('Use this timezone') ?>" />
+	</p>
+	<span class="description"><?php _e('WordPress can suggest a time zone for you based on your computers IP address, or you may manually select a city in the same time zone as you.'); ?></span>
 <?php if ($check_zone_info && $tzstring) : ?>
 <br />
 <span>
