Index: wp-includes/library.timezones.php
===================================================================
--- wp-includes/library.timezones.php	(revision 0)
+++ wp-includes/library.timezones.php	(revision 0)
@@ -0,0 +1,848 @@
+<?php
+
+$timezones = array(
+	'Abu Dhabi - United Arab Emirates:UAE:U.A.E.' => array(
+		'Asia/Dubai',
+		__( 'Abu Dhabi - U.A.E.' )
+	),
+	'Accra - Ghana' => array(
+		'Africa/Accra',
+		__( 'Accra - Ghana' )
+	),
+	'Adak - United States of America:USA:U.S.A.' => array(
+		'America/Adak',
+		__( 'Adak - U.S.A.' )
+	),
+	'Addis Ababa - Ethiopia' => array(
+		'Africa/Addis_Ababa',
+		__( 'Addis Ababa - Ethiopia' )
+	),
+	'Adelaide - Australia' => array(
+		'Australia/Adelaide',
+		__( 'Adelaide - Australia' )
+	),
+	'Algiers - Algeria' => array(
+		'Africa/Algiers',
+		__( 'Algiers - Algeria' )
+	),
+	'Amman - Jordan' => array(
+		'Asia/Amman',
+		__( 'Amman - Jordan' )
+	),
+	'Amsterdam - Netherlands' => array(
+		'Europe/Amsterdam',
+		__( 'Amsterdam - Netherlands' )
+	),
+	'Anadyr - Russia' => array(
+		'Asia/Anadyr',
+		__( 'Anadyr - Russia' )
+	),
+	'Antananarivo - Madagascar' => array(
+		'Indian/Antananarivo',
+		__( 'Antananarivo - Madagascar' )
+	),
+	'Anchorage - United States of America:USA:U.S.A.' => array(
+		'America/Anchorage',
+		__( 'Anchorage - U.S.A.' )
+	),
+	'Ankara - Turkey' => array(
+		'Europe/Istanbul',
+		__( 'Ankara - Turkey' )
+	),
+	'Ashgabat - Turkmenistan' => array(
+		'Asia/Ashgabat',
+		__( 'Ashgabat - Turkmenistan' )
+	),
+	'Asmera - Eritrea' => array(
+		'Africa/Asmera',
+		__( 'Asmera - Eritrea' )
+	),
+	'Asuncion - Paraguay' => array(
+		'America/Asuncion',
+		__( 'Asunción - Paraguay' )
+	),
+	'Athens - Greece' => array(
+		'Europe/Athens',
+		__( 'Athens - Greece' )
+	),
+	'Atlanta - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Atlanta - U.S.A.' )
+	),
+	'Austin - United States of America:USA:U.S.A.' => array(
+		'America/Chicago',
+		__( 'Austin - U.S.A.' )
+	),
+	'Baghdad - Iraq' => array(
+		'Asia/Baghdad',
+		__( 'Baghdad - Iraq' )
+	),
+	'Baku - Azerbaijan' => array(
+		'Asia/Baku',
+		__( 'Baku - Azerbaijan' )
+	),
+	'Bamako - Mali' => array(
+		'Africa/Bamako',
+		__( 'Bamako - Mali' )
+	),
+	'Bangkok - Thailand' => array(
+		'Asia/Bangkok',
+		__( 'Bangkok - Thailand' )
+	),
+	'Bangui - Central African Republic' => array(
+		'Africa/Bangui',
+		__( 'Bangui - Central African Republic' )
+	),
+	'Bridgetown - Barbados' => array(
+		'America/Barbados',
+		__( 'Bridgetown - Barbados' )
+	),
+	'Beijing - China' => array(
+		'Asia/Shanghai',
+		__( 'Beijing - China' )
+	),
+	'Beirut - Lebanon' => array(
+		'Asia/Beirut',
+		__( 'Beirut - Lebanon' )
+	),
+	'Belgrade - Serbia and Montenegro' => array(
+		'Europe/Belgrade',
+		__( 'Belgrade - Serbia and Montenegro' )
+	),
+	'Berlin - Germany' => array(
+		'Europe/Berlin',
+		__( 'Berlin - Germany' )
+	),
+	'Blacksburg - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Blacksburg - U.S.A.' )
+	),
+	'Bogota - Colombia' => array(
+		'America/Bogota',
+		__( 'Bogotá - Colombia' )
+	),
+	'Boston - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Boston - U.S.A.' )
+	),
+	'Bratislava - Slovakia' => array(
+		'Europe/Bratislava',
+		__( 'Bratislava - Slovakia' )
+	),
+	'Brasalia - Brazil' => array(
+		'America/Sao_Paulo',
+		__( 'Brasília - Brazil' )
+	),
+	'Brisbane - Australia' => array(
+		'Australia/Brisbane',
+		__( 'Brisbane - Australia' )
+	),
+	'Brussels - Belgium' => array(
+		'Europe/Brussels',
+		__( 'Brussels - Belgium' )
+	),
+	'Bucharest - Romania' => array(
+		'Europe/Bucharest',
+		__( 'Bucharest - Romania' )
+	),
+	'Budapest - Hungary' => array(
+		'Europe/Budapest',
+		__( 'Budapest - Hungary' )
+	),
+	'Buenos Aires - Argentina' => array(
+		'America/Buenos_Aires',
+		__( 'Buenos Aires - Argentina' )
+	),
+	'Cairo - Egypt' => array(
+		'Africa/Cairo',
+		__( 'Cairo - Egypt' )
+	),
+	'Calgary - Canada' => array(
+		'America/Edmonton',
+		__( 'Calgary - Canada' )
+	),
+	'Canberra - Australia' => array(
+		'Australia/Canberra',
+		__( 'Canberra - Australia' )
+	),
+	'Canton - China' => array(
+		'Asia/Shanghai',
+		__( 'Canton - China' )
+	),
+	'Cape Town - South Africa' => array(
+		'Africa/Johannesburg',
+		__( 'Cape Town - South Africa' )
+	),
+	'Caracas - Venezuela' => array(
+		'America/Caracas',
+		__( 'Caracas - Venezuela' )
+	),
+	'Cardiff - Wales - United Kingdom:UK:U.K.' => array(
+		'Europe/London',
+		__( 'Cardiff - Wales - U.K.' )
+	),
+	'Cayenne - French Guiana' => array(
+		'America/Cayenne',
+		__( 'Cayenne - French Guiana' )
+	),
+	'Chennai - India' => array(
+		'Asia/Calcutta',
+		__( 'Chennai (Madras) - India' )
+	),
+	'Chicago - United States of America:USA:U.S.A.' => array(
+		'America/Chicago',
+		__( 'Chicago - U.S.A.' )
+	),
+	'Colombo - Sri Lanka' => array(
+		'Asia/Colombo',
+		__( 'Colombo - Sri Lanka' )
+	),
+	'Columbus - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Columbus - U.S.A.' )
+	),
+	'Conakry - Guinea' => array(
+		'Africa/Conakry',
+		__( 'Conakry - Guinea' )
+	),
+	'Copenhagen - Denmark' => array(
+		'Europe/Copenhagen',
+		__( 'Copenhagen - Denmark' )
+	),
+	'Cork - Ireland' => array(
+		'Europe/Dublin',
+		__( 'Cork - Ireland' )
+	),
+	'Dhaka - Bangladesh' => array(
+		'Asia/Dhaka',
+		__( 'Dhaka - Bangladesh' )
+	),
+	'Dakar - Senegal' => array(
+		'Africa/Dakar',
+		__( 'Dakar - Senegal' )
+	),
+	'Dallas - United States of America:USA:U.S.A.' => array(
+		'America/Chicago',
+		__( 'Dallas - U.S.A.' )
+	),
+	'Damascus - Syria' => array(
+		'Asia/Damascus',
+		__( 'Damascus - Syria' )
+	),
+	'Dar es Salaam - Tanzania' => array(
+		'Africa/Dar_es_Salaam',
+		__( 'Dar es Salaam - Tanzania' )
+	),
+	'Darwin - Australia' => array(
+		'Australia/Darwin',
+		__( 'Darwin - Australia' )
+	),
+	'Denver - United States of America:USA:U.S.A.' => array(
+		'America/Denver',
+		__( 'Denver - U.S.A.' )
+	),
+	'Detroit - United States of America:USA:U.S.A.' => array(
+		'America/Detroit',
+		__( 'Detroit - U.S.A.' )
+	),
+	'Djibouti - Djibouti' => array(
+		'Africa/Djibouti',
+		__( 'Djibouti - Djibouti' )
+	),
+	'Doha - Qatar' => array(
+		'Asia/Qatar',
+		__( 'Doha - Qatar' )
+	),
+	'Douala - Cameroon' => array(
+		'Africa/Douala',
+		__( 'Douala - Cameroon' )
+	),
+	'Dublin - Ireland' => array(
+		'Europe/Dublin',
+		__( 'Dublin - Ireland' )
+	),
+	'Edinburgh - Scotland - United Kingdom:UK:U.K.' => array(
+		'Europe/London',
+		__( 'Edinburgh - Scotland - U.K.' )
+	),
+	'Freetown - Sierra Leone' => array(
+		'Africa/Freetown',
+		__( 'Freetown - Sierra Leone' )
+	),
+	'Geneva - Switzerland' => array(
+		'Europe/Zurich',
+		__( 'Geneva - Switzerland' )
+	),
+	'Georgetown - Guyana' => array(
+		'America/Guyana',
+		__( 'Georgetown - Guyana' )
+	),
+	'Grytviken - South Georgia' => array(
+		'Atlantic/South_Georgia',
+		__( 'Grytviken - South Georgia' )
+	),
+	'Guam - United States of America:USA:U.S.A.' => array(
+		'Pacific/Guam',
+		__( 'Guam - U.S.A.' )
+	),
+	'Guatemala - Guatemala' => array(
+		'America/Guatemala',
+		__( 'Guatemala - Guatemala' )
+	),
+	'Halifax - Canada' => array(
+		'America/Halifax',
+		__( 'Halifax - Canada' )
+	),
+	'Hamburg - Germany' => array(
+		'Europe/Berlin',
+		__( 'Hamburg - Germany' )
+	),
+	'Hanoi - Vietnam' => array(
+		'Asia/Saigon',
+		__( 'Hanoi - Vietnam' )
+	),
+	'Harare - Zimbabwe' => array(
+		'Africa/Harare',
+		__( 'Harare - Zimbabwe' )
+	),
+	'Havana - Cuba' => array(
+		'America/Havana',
+		__( 'Havana - Cuba' )
+	),
+	'Helsinki - Finland' => array(
+		'Europe/Helsinki',
+		__( 'Helsinki - Finland' )
+	),
+	'Hobart - Australia' => array(
+		'Australia/Hobart',
+		__( 'Hobart - Australia' )
+	),
+	'Hong Kong - China' => array(
+		'Asia/Hong_Kong',
+		__( 'Hong Kong - China' )
+	),
+	'Honolulu - United States of America:USA:U.S.A.' => array(
+		'Pacific/Honolulu',
+		__( 'Honolulu - U.S.A.' )
+	),
+	'Houston - United States of America:USA:U.S.A.' => array(
+		'America/Chicago',
+		__( 'Houston - U.S.A.' )
+	),
+	'Indianapolis - United States of America:USA:U.S.A.' => array(
+		'America/Indianapolis',
+		__( 'Indianapolis - U.S.A.' )
+	),
+	'Islamabad - Pakistan' => array(
+		'Asia/Karachi',
+		__( 'Islamabad - Pakistan' )
+	),
+	'Istanbul - Turkey' => array(
+		'Europe/Istanbul',
+		__( 'Istanbul - Turkey' )
+	),
+	'Jakarta - Indonesia' => array(
+		'Asia/Jakarta',
+		__( 'Jakarta - Indonesia' )
+	),
+	'Jerusalem - Israel' => array(
+		'Asia/Jerusalem',
+		__( 'Jerusalem - Israel' )
+	),
+	'Kabul - Afghanistan' => array(
+		'Asia/Kabul',
+		__( 'Kabul - Afghanistan' )
+	),
+	'Kampala - Uganda' => array(
+		'Africa/Kampala',
+		__( 'Kampala - Uganda' )
+	),
+	'Katmandu - Nepal' => array(
+		'Asia/Katmandu',
+		__( 'Katmandu - Nepal' )
+	),
+	'Khartoum - Sudan' => array(
+		'Africa/Khartoum',
+		__( 'Khartoum - Sudan' )
+	),
+	'Kiev - Ukraine' => array(
+		'Europe/Kiev',
+		__( 'Kiev - Ukraine' )
+	),
+	'Kinshasa - Zaire' => array(
+		'Africa/Kinshasa',
+		__( 'Kinshasa - Zaire' )
+	),
+	'Knoxville - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Knoxville - U.S.A.' )
+	),
+	'Kolkata - India' => array(
+		'Asia/Calcutta',
+		__( 'Kolkata (Calcutta) - India' )
+	),
+	'Krasnoyarsk - Russia' => array(
+		'Asia/Krasnoyarsk',
+		__( 'Krasnoyarsk - Russia' )
+	),
+	'Kuala Lumpur - Malaysia' => array(
+		'Asia/Kuala_Lumpur',
+		__( 'Kuala Lumpur - Malaysia' )
+	),
+	'Kuwait - Kuwait' => array(
+		'Asia/Kuwait',
+		__( 'Kuwait - Kuwait' )
+	),
+	'La Paz - Bolivia' => array(
+		'America/La_Paz',
+		__( 'La Paz - Bolivia' )
+	),
+	'Lagos - Nigeria' => array(
+		'Africa/Lagos',
+		__( 'Lagos - Nigeria' )
+	),
+	'Lima - Peru' => array(
+		'America/Lima',
+		__( 'Lima - Peru' )
+	),
+	'Lisbon - Portugal' => array(
+		'Europe/Lisbon',
+		__( 'Lisbon - Portugal' )
+	),
+	'Ljubljana - Slovenia' => array(
+		'Europe/Ljubljana',
+		__( 'Ljubljana - Slovenia' )
+	),
+	'London - England - United Kingdom:UK:U.K.' => array(
+		'Europe/London',
+		__( 'London - England - U.K.' )
+	),
+	'Los Angeles - United States of America:USA:U.S.A.' => array(
+		'America/Los_Angeles',
+		__( 'Los Angeles - U.S.A.' )
+	),
+	'Luanda - Angola' => array(
+		'Africa/Luanda',
+		__( 'Luanda - Angola' )
+	),
+	'Lusaka - Zambia' => array(
+		'Africa/Lusaka',
+		__( 'Lusaka - Zambia' )
+	),
+	'Madrid - Spain' => array(
+		'Europe/Madrid',
+		__( 'Madrid - Spain' )
+	),
+	'Male - Maldives' => array(
+		'Indian/Maldives',
+		__( 'Male - Maldives' )
+	),
+	'Managua - Nicaragua' => array(
+		'America/Managua',
+		__( 'Managua - Nicaragua' )
+	),
+	'Manama - Bahrain' => array(
+		'Asia/Bahrain',
+		__( 'Manama - Bahrain' )
+	),
+	'Manchester - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Manchester - U.S.A.' )
+	),
+	'Manila - Philippines' => array(
+		'Asia/Manila',
+		__( 'Manila - Philippines' )
+	),
+	'Maputo - Mozambique' => array(
+		'Africa/Maputo',
+		__( 'Maputo - Mozambique' )
+	),
+	'Mecca - Saudia Arabia' => array(
+		'Asia/Riyadh',
+		__( 'Mecca - Saudia Arabia' )
+	),
+	'Melbourne - Australia' => array(
+		'Australia/Melbourne',
+		__( 'Melbourne - Australia' )
+	),
+	'Memphis - United States of America:USA:U.S.A.' => array(
+		'America/Chicago',
+		__( 'Memphis - U.S.A.' )
+	),
+	'Mexico City - Mexico' => array(
+		'America/Mexico_City',
+		__( 'Mexico City - Mexico' )
+	),
+	'Miami - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Miami - U.S.A.' )
+	),
+	'Minneapolis - United States of America:USA:U.S.A.' => array(
+		'America/Chicago',
+		__( 'Minneapolis - U.S.A.' )
+	),
+	'Magadan - Russia' => array(
+		'Asia/Magadan',
+		__( 'Magadan - Russia' )
+	),
+	'Mogadisho - Somalia' => array(
+		'Africa/Mogadishu',
+		__( 'Mogadisho - Somalia' )
+	),
+	'Monrovia - Liberia' => array(
+		'Africa/Monrovia',
+		__( 'Monrovia - Liberia' )
+	),
+	'Montevideo - Uruguay' => array(
+		'America/Montevideo',
+		__( 'Montevideo - Uruguay' )
+	),
+	'Montreal - Canada' => array(
+		'America/Montreal',
+		__( 'Montréal - Canada' )
+	),
+	'Moscow - Russia' => array(
+		'Europe/Moscow',
+		__( 'Moscow - Russia' )
+	),
+	'Mumbai - India' => array(
+		'Asia/Calcutta',
+		__( 'Mumbai (Bombay) - India' )
+	),
+	'Munich - Germany' => array(
+		'Europe/Berlin',
+		__( 'Munich - Germany' )
+	),
+	'Muscat - Oman' => array(
+		'Asia/Muscat',
+		__( 'Muscat - Oman' )
+	),
+	'Nairobi - Kenya' => array(
+		'Africa/Nairobi',
+		__( 'Nairobi - Kenya' )
+	),
+	'Ndjamena - Chad' => array(
+		'Africa/Ndjamena',
+		__( 'Ndjamena - Chad' )
+	),
+	'New Delhi - India' => array(
+		'Asia/Calcutta',
+		__( 'New Delhi - India' )
+	),
+	'New York - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'New York - U.S.A.' )
+	),
+	'Nouakchott - Mauritania' => array(
+		'Africa/Nouakchott',
+		__( 'Nouakchott - Mauritania' )
+	),
+	'Noumea - New Caledonia' => array(
+		'Pacific/Noumea',
+		__( 'Nouméa - New Caledonia' )
+	),
+	'Novosibirsk - Russia' => array(
+		'Asia/Novosibirsk',
+		__( 'Novosibirsk - Russia' )
+	),
+	'Nuuk - Greenland' => array(
+		'America/Godthab',
+		__( 'Nuuk - Greenland' )
+	),
+	'Omsk - Russia' => array(
+		'Asia/Omsk',
+		__( 'Omsk - Russia' )
+	),
+	'Osaka - Japan' => array(
+		'Asia/Tokyo',
+		__( 'Osaka - Japan' )
+	),
+	'Oslo - Norway' => array(
+		'Europe/Oslo',
+		__( 'Oslo - Norway' )
+	),
+	'Ottawa - Canada' => array(
+		'America/Toronto',
+		__( 'Ottawa - Canada' )
+	),
+	'Ougadougou - Burkina Faso' => array(
+		'Africa/Ouagadougou',
+		__( 'Ougadougou - Burkina Faso' )
+	),
+	'Pago Pago - Samoa' => array(
+		'Pacific/Pago_Pago',
+		__( 'Pago Pago - Samoa' )
+	),
+	'Panama - Panama' => array(
+		'America/Panama',
+		__( 'Panama - Panama' )
+	),
+	'Paramaribo - Surinam' => array(
+		'America/Paramaribo',
+		__( 'Paramaribo - Surinam' )
+	),
+	'Paris - France' => array(
+		'Europe/Paris',
+		__( 'Paris - France' )
+	),
+	'Perth - Australia' => array(
+		'Australia/Perth',
+		__( 'Perth - Australia' )
+	),
+	'Philadelphia - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Philadelphia - U.S.A.' )
+	),
+	'Phnom Penh - Cambodia' => array(
+		'Asia/Phnom_Penh',
+		__( 'Phnom Penh - Cambodia' )
+	),
+	'Phoenix - United States of America:USA:U.S.A.' => array(
+		'America/Phoenix',
+		__( 'Phoenix - U.S.A.' )
+	),
+	'Ponta Delgada - Portugal' => array(
+		'Atlantic/Azores',
+		__( 'Ponta Delgada - Portugal' )
+	),
+	'Port Louis - Mauritius' => array(
+		'Indian/Mauritius',
+		__( 'Port Louis - Mauritius' )
+	),
+	'Port-au-Prince - Haiti' => array(
+		'America/Port-au-Prince',
+		__( 'Port-au-Prince - Haiti' )
+	),
+	'Portland - United States of America:USA:U.S.A.' => array(
+		'America/Los_Angeles',
+		__( 'Portland - U.S.A.' )
+	),
+	'Prague - Czech Republic' => array(
+		'Europe/Prague',
+		__( 'Prague - Czech Republic' )
+	),
+	'Pyongyang - North Korea' => array(
+		'Asia/Pyongyang',
+		__( 'Pyongyang - North Korea' )
+	),
+	'Quito - Ecuador' => array(
+		'America/Guayaquil',
+		__( 'Quito - Ecuador' )
+	),
+	'Rabat - Morocco' => array(
+		'Africa/Casablanca',
+		__( 'Rabat - Morocco' )
+	),
+	'Rangoon - Burma' => array(
+		'Asia/Rangoon',
+		__( 'Rangoon - Burma' )
+	),
+	'Recife - Brazil' => array(
+		'America/Recife',
+		__( 'Recife - Brazil' )
+	),
+	'Regina - Canada' => array(
+		'America/Regina',
+		__( 'Regina - Canada' )
+	),
+	'Reykjavik - Iceland' => array(
+		'Atlantic/Reykjavik',
+		__( 'Reykjavík - Iceland' )
+	),
+	'Rio de Janeiro - Brazil' => array(
+		'America/Sao_Paulo',
+		__( 'Rio de Janeiro - Brazil' )
+	),
+	'Riyadh - Saudia Arabia' => array(
+		'Asia/Riyadh',
+		__( 'Riyadh - Saudia Arabia' )
+	),
+	'Rome - Italy' => array(
+		'Europe/Rome',
+		__( 'Rome - Italy' )
+	),
+	'Salt Lake City - United States of America:USA:U.S.A.' => array(
+		'America/Denver',
+		__( 'Salt Lake City - U.S.A.' )
+	),
+	'San Diego - United States of America:USA:U.S.A.' => array(
+		'America/Los_Angeles',
+		__( 'San Diego - U.S.A.' )
+	),
+	'San Francisco - United States of America:USA:U.S.A.' => array(
+		'America/Los_Angeles',
+		__( 'San Francisco - U.S.A.' )
+	),
+	'San Jose - Costa Rica' => array(
+		'America/Costa_Rica',
+		__( 'San José - Costa Rica' )
+	),
+	'San Juan - Puerto Rico' => array(
+		'America/Puerto_Rico',
+		__( 'San Juan - Puerto Rico' )
+	),
+	'San Salvador - El Salvador' => array(
+		'America/El_Salvador',
+		__( 'San Salvador - El Salvador' )
+	),
+	'Sanaa - Yemen' => array(
+		'Asia/Aden',
+		__( 'Sanaa - Yemen' )
+	),
+	'Santiago - Chile' => array(
+		'America/Santiago',
+		__( 'Santiago - Chile' )
+	),
+	'Santo Domingo - Dominican Republic' => array(
+		'America/Santo_Domingo',
+		__( 'Santo Domingo - Dominican Republic' )
+	),
+	'Sao Paulo - Brazil' => array(
+		'America/Sao_Paulo',
+		__( 'São Paulo - Brazil' )
+	),
+	'Seattle - United States of America:USA:U.S.A.' => array(
+		'America/Los_Angeles',
+		__( 'Seattle - U.S.A.' )
+	),
+	'Seoul - Korea' => array(
+		'Asia/Seoul',
+		__( 'Seoul - Korea' )
+	),
+	'Shanghai - China' => array(
+		'Asia/Shanghai',
+		__( 'Shanghai - China' )
+	),
+	'Singapore - Singapore' => array(
+		'Asia/Singapore',
+		__( 'Singapore - Singapore' )
+	),
+	'Sofia - Bulgaria' => array(
+		'Europe/Sofia',
+		__( 'Sofia - Bulgaria' )
+	),
+	'St. John\'s - Canada' => array(
+		'America/St_Johns',
+		__( 'St. John\'s - Canada' )
+	),
+	'St. Louis - United States of America:USA:U.S.A.' => array(
+		'America/Chicago',
+		__( 'St. Louis - U.S.A.' )
+	),
+	'St. Petersburg - Russia' => array(
+		'Europe/Moscow',
+		__( 'St. Petersburg - Russia' )
+	),
+	'Stockholm - Sweden' => array(
+		'Europe/Stockholm',
+		__( 'Stockholm - Sweden' )
+	),
+	'Sydney - Australia' => array(
+		'Australia/Sydney',
+		__( 'Sydney - Australia' )
+	),
+	'Taipei - ' => array(
+		'Asia/Taipei',
+		__( 'Taipei - ' )
+	),
+	'Tashkent - Uzbekistan' => array(
+		'Asia/Tashkent',
+		__( 'Tashkent - Uzbekistan' )
+	),
+	'Tegucigalpa - Honduras' => array(
+		'America/Tegucigalpa',
+		__( 'Tegucigalpa - Honduras' )
+	),
+	'Tehran - Iran' => array(
+		'Asia/Tehran',
+		__( 'Tehran - Iran' )
+	),
+	'Thanh Pho Ho Chi Minh - Vietnam' => array(
+		'Asia/Saigon',
+		__( 'Thanh Pho Ho Chi Minh - Vietnam' )
+	),
+	'Tientsin - China' => array(
+		'Asia/Shanghai',
+		__( 'Tientsin - China' )
+	),
+	'Tokyo - Japan' => array(
+		'Asia/Tokyo',
+		__( 'Tokyo - Japan' )
+	),
+	'Toronto - Canada' => array(
+		'America/Toronto',
+		__( 'Toronto - Canada' )
+	),
+	'Tripoli - Libya' => array(
+		'Africa/Tripoli',
+		__( 'Tripoli - Libya' )
+	),
+	'Tunis - Tunisia' => array(
+		'Africa/Tunis',
+		__( 'Tunis - Tunisia' )
+	),
+	'Ulaanbaatar - Mongolia' => array(
+		'Asia/Ulaanbaatar',
+		__( 'Ulaanbaatar - Mongolia' )
+	),
+	'UTC' => array(
+		'UTC',
+		__( 'UTC' )
+	),
+	'Vancouver - Canada' => array(
+		'America/Vancouver',
+		__( 'Vancouver - Canada' )
+	),
+	'Victoria - Seychelles' => array(
+		'Indian/Mahe',
+		__( 'Victoria - Seychelles' )
+	),
+	'Vienna - Austria' => array(
+		'Europe/Vienna',
+		__( 'Vienna - Austria' )
+	),
+	'Vladivostok - Russia' => array(
+		'Asia/Vladivostok',
+		__( 'Vladivostok - Russia' )
+	),
+	'Volgograd - Russia' => array(
+		'Europe/Moscow',
+		__( 'Volgograd - Russia' )
+	),
+	'Warsaw - Poland' => array(
+		'Europe/Warsaw',
+		__( 'Warsaw - Poland' )
+	),
+	'Washington, D.C. - United States of America:USA:U.S.A.' => array(
+		'America/New_York',
+		__( 'Washington, D.C. - U.S.A.' )
+	),
+	'Wellington - New Zealand' => array(
+		'Pacific/Auckland',
+		__( 'Wellington - New Zealand' )
+	),
+	'Winnipeg - Canada' => array(
+		'America/Winnipeg',
+		__( 'Winnipeg - Canada' )
+	),
+	'Yakutsk - Russia' => array(
+		'Asia/Yakutsk',
+		__( 'Yakutsk - Russia' )
+	),
+	'Yekaterinburg - Russia' => array(
+		'Asia/Yekaterinburg',
+		__( 'Yekaterinburg - Russia' )
+	),
+	'Yerevan - Armenia' => array(
+		'Asia/Yerevan',
+		__( 'Yerevan - Armenia' )
+	),
+	'Zagreb - Croatia' => array(
+		'Europe/Zagreb',
+		__( 'Zagreb - Croatia' )
+	),
+	'Zurich - Switzerland' => array(
+		'Europe/Zurich',
+		__( 'Zurich - Switzerland' )
+	)
+);
Index: wp-includes/js/jquery/suggest.js
===================================================================
--- wp-includes/js/jquery/suggest.js	(revision 11070)
+++ wp-includes/js/jquery/suggest.js	(working copy)
@@ -1 +1 @@
-(function(a){a.suggest=function(o,g){var c,f,n,d,q,p;c=a(o).attr("autocomplete","off");f=a(document.createElement("ul"));n=false;d=0;q=[];p=0;f.addClass(g.resultsClass).appendTo("body");j();a(window).load(j).resize(j);c.blur(function(){setTimeout(function(){f.hide()},200)});if(a.browser.msie){try{f.bgiframe()}catch(s){}}if(a.browser.mozilla){c.keypress(m)}else{c.keydown(m)}function j(){var e=c.offset();f.css({top:(e.top+o.offsetHeight)+"px",left:e.left+"px"})}function m(w){if((/27$|38$|40$/.test(w.keyCode)&&f.is(":visible"))||(/^13$|^9$/.test(w.keyCode)&&u())){if(w.preventDefault){w.preventDefault()}if(w.stopPropagation){w.stopPropagation()}w.cancelBubble=true;w.returnValue=false;switch(w.keyCode){case 38:k();break;case 40:t();break;case 9:case 13:r();break;case 27:f.hide();break}}else{if(c.val().length!=d){if(n){clearTimeout(n)}n=setTimeout(l,g.delay);d=c.val().length}}}function l(){var x=a.trim(c.val()),w,e;if(g.multiple){w=x.lastIndexOf(g.multipleSep);if(w!=-1){x=x.substr(w+g.multipleSep.length)}}if(x.length>=g.minchars){cached=v(x);if(cached){i(cached.items)}else{a.get(g.source,{q:x},function(y){f.hide();e=b(y,x);i(e);h(x,e,y.length)})}}else{f.hide()}}function v(w){var e;for(e=0;e<q.length;e++){if(q[e]["q"]==w){q.unshift(q.splice(e,1)[0]);return q[0]}}return false}function h(y,e,w){var x;while(q.length&&(p+w>g.maxCacheSize)){x=q.pop();p-=x.size}q.push({q:y,size:w,items:e});p+=w}function i(e){var x="",w;if(!e){return}if(!e.length){f.hide();return}j();for(w=0;w<e.length;w++){x+="<li>"+e[w]+"</li>"}f.html(x).show();f.children("li").mouseover(function(){f.children("li").removeClass(g.selectClass);a(this).addClass(g.selectClass)}).click(function(y){y.preventDefault();y.stopPropagation();r()})}function b(e,z){var w=[],A=e.split(g.delimiter),y,x;for(y=0;y<A.length;y++){x=a.trim(A[y]);if(x){x=x.replace(new RegExp(z,"ig"),function(B){return'<span class="'+g.matchClass+'">'+B+"</span>"});w[w.length]=x}}return w}function u(){var e;if(!f.is(":visible")){return false}e=f.children("li."+g.selectClass);if(!e.length){e=false}return e}function r(){$currentResult=u();if($currentResult){if(g.multiple){if(c.val().indexOf(g.multipleSep)!=-1){$currentVal=c.val().substr(0,(c.val().lastIndexOf(g.multipleSep)+g.multipleSep.length))}else{$currentVal=""}c.val($currentVal+$currentResult.text()+g.multipleSep);c.focus()}else{c.val($currentResult.text())}f.hide();if(g.onSelect){g.onSelect.apply(c[0])}}}function t(){$currentResult=u();if($currentResult){$currentResult.removeClass(g.selectClass).next().addClass(g.selectClass)}else{f.children("li:first-child").addClass(g.selectClass)}}function k(){var e=u();if(e){e.removeClass(g.selectClass).prev().addClass(g.selectClass)}else{f.children("li:last-child").addClass(g.selectClass)}}};a.fn.suggest=function(c,b){if(!c){return}b=b||{};b.multiple=b.multiple||false;b.multipleSep=b.multipleSep||", ";b.source=c;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new a.suggest(this,b)});return this}})(jQuery);
\ No newline at end of file
+(function(a){a.suggest=function(o,g){var c,f,n,d,q,p;c=a(o).attr("autocomplete","off");f=a(document.createElement("ul"));n=false;d=0;q=[];p=0;f.addClass(g.resultsClass).appendTo("body");j();a(window).load(j).resize(j);c.blur(function(){setTimeout(function(){f.hide()},200)});if(a.browser.msie){try{f.bgiframe()}catch(s){}}if(a.browser.mozilla){c.keypress(m)}else{c.keydown(m)}function j(){var e=c.offset();f.css({top:(e.top+o.offsetHeight)+"px",left:e.left+"px"})}function m(w){if((/27$|38$|40$/.test(w.keyCode)&&f.is(":visible"))||(/^13$|^9$/.test(w.keyCode)&&u())){if(w.preventDefault){w.preventDefault()}if(w.stopPropagation){w.stopPropagation()}w.cancelBubble=true;w.returnValue=false;switch(w.keyCode){case 38:k();break;case 40:t();break;case 9:case 13:r();break;case 27:f.hide();break}}else{if(c.val().length!=d){if(n){clearTimeout(n)}n=setTimeout(l,g.delay);d=c.val().length}}}function l(){var x=a.trim(c.val()),w,e;if(g.multiple){w=x.lastIndexOf(g.multipleSep);if(w!=-1){x=x.substr(w+g.multipleSep.length)}}if(x.length>=g.minchars){cached=v(x);if(cached){i(cached.items)}else{a.get(g.source,{q:x},function(y){f.hide();e=b(y,x);i(e);h(x,e,y.length)})}}else{f.hide()}}function v(w){var e;for(e=0;e<q.length;e++){if(q[e]["q"]==w){q.unshift(q.splice(e,1)[0]);return q[0]}}return false}function h(y,e,w){var x;while(q.length&&(p+w>g.maxCacheSize)){x=q.pop();p-=x.size}q.push({q:y,size:w,items:e});p+=w}function i(e){var x="",w;if(!e){return}if(!e.length){f.hide();return}j();for(w=0;w<e.length;w++){x+="<li>"+e[w]+"</li>"}f.html(x).show();f.children("li").mouseover(function(){f.children("li").removeClass(g.selectClass);a(this).addClass(g.selectClass)}).click(function(y){y.preventDefault();y.stopPropagation();r()})}function b(e,z){var w=[],A=e.split(g.delimiter),y,x;for(y=0;y<A.length;y++){x=a.trim(A[y]);if(x){var z=x.split('|||');if (z.length==2) {var h='<span style="display:none;">'+z[0]+'|</span>';x=z[1]}else{var h='';x=z[0]}x=x.replace(new RegExp(z,"ig"),function(B){return'<span class="'+g.matchClass+'">'+B+"</span>"});w[w.length]=h+x}}return w}function u(){var e;if(!f.is(":visible")){return false}e=f.children("li."+g.selectClass);if(!e.length){e=false}return e}function r(){$currentResult=u();if($currentResult){if(g.multiple){if(c.val().indexOf(g.multipleSep)!=-1){$currentVal=c.val().substr(0,(c.val().lastIndexOf(g.multipleSep)+g.multipleSep.length))}else{$currentVal=""}c.val($currentVal+$currentResult.text()+g.multipleSep);c.focus()}else{c.val($currentResult.text())}f.hide();if(g.onSelect){g.onSelect.apply(c[0])}}}function t(){$currentResult=u();if($currentResult){$currentResult.removeClass(g.selectClass).next().addClass(g.selectClass)}else{f.children("li:first-child").addClass(g.selectClass)}}function k(){var e=u();if(e){e.removeClass(g.selectClass).prev().addClass(g.selectClass)}else{f.children("li:last-child").addClass(g.selectClass)}}};a.fn.suggest=function(c,b){if(!c){return}b=b||{};b.multiple=b.multiple||false;b.multipleSep=b.multipleSep||", ";b.source=c;b.delay=b.delay||100;b.resultsClass=b.resultsClass||"ac_results";b.selectClass=b.selectClass||"ac_over";b.matchClass=b.matchClass||"ac_match";b.minchars=b.minchars||2;b.delimiter=b.delimiter||"\n";b.onSelect=b.onSelect||false;b.maxCacheSize=b.maxCacheSize||65536;this.each(function(){new a.suggest(this,b)});return this}})(jQuery);
\ No newline at end of file
Index: wp-includes/js/jquery/suggest.dev.js
===================================================================
--- wp-includes/js/jquery/suggest.dev.js	(revision 11070)
+++ wp-includes/js/jquery/suggest.dev.js	(working copy)
@@ -223,11 +223,19 @@
 			for (i = 0; i < tokens.length; i++) {
 				token = $.trim(tokens[i]);
 				if (token) {
+					var parts = token.split('|||');
+					if (parts.length == 2) {
+						var hidden = '<span style="display:none;">' + parts[0] + '|</span>';
+						token = parts[1];
+					} else {
+						var hidden = '';
+						token = parts[0];
+					}
 					token = token.replace(
 						new RegExp(q, 'ig'),
 						function(q) { return '<span class="' + options.matchClass + '">' + q + '</span>' }
 						);
-					items[items.length] = token;
+					items[items.length] = hidden + token;
 				}
 			}
 
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 11070)
+++ wp-includes/functions.php	(working copy)
@@ -3057,7 +3057,7 @@
 function wp_timezone_override_offset() {
 	if (!wp_timezone_supported()) return false;
 
-	$tz = get_option('timezone_string');
+	$tz = wp_get_zoneinfo_from_string( get_option('timezone_string') );
 	if (empty($tz)) return false;
 
 	@date_default_timezone_set($tz);
@@ -3087,61 +3087,86 @@
 	return false;
 }
 
+function wp_get_zoneinfo_from_string( $timezone_string ) {
+	if ( @timezone_open( $timezone_string ) ) {
+		return $timezone_string;
+	}
+	
+	global $timezones;
+	if ( !isset( $timezones ) ) {
+		require( ABSPATH . WPINC . '/library.timezones.php' );
+	}
+	
+	if ( !isset( $timezones[$timezone_string] ) ) {
+		return '';
+	}
+	
+	if ( !isset( $timezones[$timezone_string][0] ) ) {
+		return '';
+	}
+	
+	if ( !@timezone_open( $timezones[$timezone_string][0] ) ) {
+		return '';
+	}
+	
+	return $timezones[$timezone_string][0];
+}
+
 /**
  * Gives a nicely formatted list of timezone strings // temporary! Not in final
  *
- * @param string $selectedzone - which zone should be the selected one
+ * @param string $timezone_string - which zone should be the selected one
  *
  */
-function wp_timezone_choice($selectedzone) {
-	$continents = array('Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific', 'Etc');
-
-	$all = timezone_identifiers_list();
-
-	$i = 0;
-	foreach ( $all as $zone ) {
-		$zone = explode('/',$zone);
-		if ( ! in_array($zone[0], $continents) )
-			continue;
-		$zonen[$i]['continent'] = isset($zone[0]) ? $zone[0] : '';
-		$zonen[$i]['city'] = isset($zone[1]) ? $zone[1] : '';
-		$zonen[$i]['subcity'] = isset($zone[2]) ? $zone[2] : '';
-		$i++;
+function wp_timezone_choice( $timezone_string = false ) {
+	$gmt_offset = get_option('gmt_offset');
+	
+	if ( !$timezone_string ) {
+		$timezone_string = get_option('timezone_string');
 	}
-
-	asort($zonen);
-	$structure = '';
-	$pad = '&nbsp;&nbsp;&nbsp;';
-
-	if ( empty($selectedzone) )
-		$structure .= '<option selected="selected" value="">' . __('Select a city') . "</option>\n";
-	foreach ( $zonen as $zone ) {
-		extract($zone);
-		if ( empty($selectcontinent) && !empty($city) ) {
-			$selectcontinent = $continent;
-			$structure .= '<optgroup label="'.$continent.'">' . "\n"; // continent
-		} elseif ( !empty($selectcontinent) && $selectcontinent != $continent ) {
-			$structure .= "</optgroup>\n";
-			$selectcontinent = '';
-			if ( !empty($city) ) {
-				$selectcontinent = $continent;
-				$structure .= '<optgroup label="'.$continent.'">' . "\n"; // continent
-			}
-		}
-
-		if ( !empty($city) ) {
-			if ( !empty($subcity) ) {
-				$city = $city . '/'. $subcity;
-			}
-			$structure .= "\t<option ".((($continent.'/'.$city)==$selectedzone)?'selected="selected"':'')." value=\"".($continent.'/'.$city)."\">$pad".str_replace('_',' ',$city)."</option>\n"; //Timezone
+	
+	if ( !wp_get_zoneinfo_from_string($timezone_string) ) {
+		$timezone_string = false;
+	}
+	
+	if ( !$timezone_string ) {
+		$timezone_string = $gmt_offset;
+	}
+	
+	if ( preg_match( '/^\-*[0-9\.]+$/', $timezone_string ) ) {
+		// It's an old UTC offset from pre-2.8
+		if ( preg_match( '/^\-*0$/', $timezone_string ) ) {
+			$timezone_string = 'UTC';
+			$timezone_display = 'UTC';
 		} else {
-			$structure .= "<option ".(($continent==$selectedzone)?'selected="selected"':'')." value=\"".$continent."\">".$continent."</option>\n"; //Timezone
+			$timezone_display = (string) number_format( (float) $timezone_string, 2, '.', '' );
+			$timezone_display = str_replace(
+				array( '.00', '.25', '.50', '.75' ),
+				array( ':00', ':15', ':30', ':45' ),
+				$timezone_display
+			);
+			$timezone_display = preg_replace( '/^([0-9:]+)$/', '+$1', $timezone_display );
+			$timezone_display = 'UTC ' . $timezone_display;
+			$gmt_offset = $timezone_string;
+			$timezone_string = '';
 		}
+	} elseif ( strpos( $timezone_string, '/' ) !== false ) {
+		// It's a ZoneInfo zone
+		$timezone_display = $timezone_string;
+	} else {
+		// It's a named city from the library
+		global $timezones;
+		if ( !isset( $timezones ) ) {
+			require( ABSPATH . WPINC . '/library.timezones.php' );
+		}
+		$timezone_display = $timezones[$timezone_string][1];
 	}
-
-	if ( !empty($selectcontinent) )
-		$structure .= "</optgroup>\n";
-	return $structure;
+	
+	$r = '<input type="hidden" id="gmt_offset" name="gmt_offset" value="' . attribute_escape( $gmt_offset ) . '" />' . "\n";
+	$r .= '<input type="hidden" id="timezone_string" name="timezone_string" value="' . attribute_escape( $timezone_string ) . '" />' . "\n";
+	$r .= '<input id="timezone_display" name="timezone_display" class="regular-text" value="' . attribute_escape( $timezone_display ) . '" />' . "\n";
+	
+	return $r;
 }
 
 
Index: wp-admin/admin-ajax.php
===================================================================
--- wp-admin/admin-ajax.php	(revision 11070)
+++ wp-admin/admin-ajax.php	(working copy)
@@ -111,6 +111,35 @@
 
 	die('0');
 	break;
+case 'get-timezones' :
+	$q = strtolower( $_GET['q'] );
+	if ( !$q ) die('0');
+
+	if ( strpos( $q, '/' ) === false ) {
+		require( ABSPATH . WPINC . '/library.timezones.php' );
+		foreach ( $timezones as $key => $timezone ) {
+			if ( strpos( strtolower( $key ), $q ) !== false ) {
+				echo $key . '|||' . $timezone[1] . "\n";
+			}
+		}
+	} elseif ( function_exists( 'timezone_identifiers_list' ) ) {
+		$timezones = timezone_identifiers_list();
+		foreach ( $timezones as $timezone ) {
+			if ( strpos( $timezone, '/' ) === false ) {
+				continue;
+			}
+			list( $continent, $city ) = explode( '/', $timezone, 2 );
+			if ( !in_array( $continent, array( 'Africa', 'America', 'Antarctica', 'Arctic', 'Asia', 'Atlantic', 'Australia', 'Europe', 'Indian', 'Pacific' ) ) ) {
+				continue;
+			}
+			if ( strpos( strtolower( $timezone ), $q ) !== false ) {
+				echo $timezone . '|||' . $timezone . "\n";
+			}
+		}
+	}
+
+	die;
+	break;
 default :
 	do_action( 'wp_ajax_' . $_GET['action'] );
 	die('0');
Index: wp-admin/wp-admin.css
===================================================================
--- wp-admin/wp-admin.css	(revision 11070)
+++ wp-admin/wp-admin.css	(working copy)
@@ -1541,11 +1541,16 @@
 }
 
 .ac_results li {
+	margin: 1px;
 	padding: 2px 5px;
 	white-space: nowrap;
 	text-align: left;
 }
 
+.ac_results.timezone_results {
+	min-width: 331px;
+}
+
 .ac_over {
 	cursor: pointer;
 }
@@ -2923,6 +2928,45 @@
 	font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif;
 }
 
+#time-info {
+	-moz-border-radius: 4px;
+	-khtml-border-radius: 4px;
+	-webkit-border-radius: 4px;
+	border-radius: 4px;
+	background-color: rgb(223, 223, 223);
+	float: right;
+	color: rgb(102, 102, 102);
+	margin: 0 0 10px 10px;
+}
+
+#time-info legend {
+	line-height: 1.2em;
+	padding: 4px 6px;
+	margin: 0;
+	font-weight: bold;
+}
+
+#time-info th {
+	line-height: 1.2em;
+	padding: 0 2px 4px 6px;
+	margin: 0;
+	text-align: right;
+	width: auto;
+	text-shadow: none;
+	color: rgb(102, 102, 102);
+}
+
+#time-info td {
+	line-height: 1.2em;
+	padding: 0 6px 4px 0;
+	margin: 0;
+	font-style: italic;
+}
+
+#time-description {
+	display: block;
+}
+
 ul#dismissed-updates {
 	display: none;
 }
Index: wp-admin/options-general.php
===================================================================
--- wp-admin/options-general.php	(revision 11070)
+++ wp-admin/options-general.php	(working copy)
@@ -47,6 +47,8 @@
 }
 add_filter('admin_head', 'add_js');
 
+wp_enqueue_script('suggest');
+
 include('./admin-header.php');
 ?>
 
@@ -130,43 +132,45 @@
 	<span id="local-time"><?php printf(__('UTC %1$s is <code>%2$s</code>'), $current_offset_name, date_i18n($time_format)); ?></span>
 <?php endif; ?>
 <br/>
-<span class="setting-description"><?php _e('Unfortunately, you have to manually update this for Daylight Savings Time. Lame, we know, but will be fixed in the future.'); ?></span>
+<span class="setting-description"><?php _e('Unfortunately, you have to manually update this for Daylight Savings Time.'); ?></span>
 </td>
 <?php
 else: // looks like we can do nice timezone selection!
-$current_offset = get_option('gmt_offset');
-$tzstring = get_option('timezone_string');
-if (empty($tzstring)) { // set the Etc zone if no timezone string exists
-	if ($current_offset < 0) $offnum = - ceil($current_offset);
-	else $offnum = - floor($current_offset);
-	$tzstring = 'Etc/GMT' . (($offnum >= 0) ? '+' : '') . $offnum;
-}
 ?>
-<th scope="row"><label for="timezone_string"><?php _e('Timezone') ?></label></th>
+<th scope="row"><label for="timezone_string"><?php _e('Time zone') ?></label></th>
 <td>
 
-<select id="timezone_string" name="timezone_string">
-<?php echo wp_timezone_choice($tzstring); ?>
-</select>
-
-    <span id="utc-time"><?php printf(__('<abbr title="Coordinated Universal Time">UTC</abbr> time is <code>%s</code>'), date_i18n($timezone_format, false, 'gmt')); ?></span>
-<?php if (get_option('timezone_string')) : ?>
-	<span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
+	<div id="time-info">
+	<table>
+		<legend>Current time settings</legend>
+		<tr>
+			<th><?php _e( '<abbr title="Coordinated Universal Time">UTC</abbr> time:' ); ?></th>
+			<td><?php echo date_i18n( $timezone_format, false, 'gmt' ); ?></td>
+		</tr>
+<?php if ( get_option( 'timezone_string' ) ) : ?>
+		<tr>
+			<th><?php _e( 'Local time:' ); ?></th>
+			<td><?php echo date_i18n( $timezone_format ); ?></td>
+		</tr>
 <?php endif; ?>
-<br/>
-<span class="setting-description"><?php _e('Choose a city in the same timezone as you.'); ?></span>
-<br />
-<span>
-<?php if (get_option('timezone_string')) : ?>
-	<?php
-	$now = localtime(time(),true);
-	if ($now['tm_isdst']) _e('This timezone is currently in daylight savings time.');
-	else _e('This timezone is currently in standard time.');
-	?>
-	<br />
-	<?php
-	if (function_exists('timezone_transitions_get') && $tzstring) {
-		$dateTimeZoneSelected = new DateTimeZone($tzstring);
+<?php if ( $tzstring = wp_get_zoneinfo_from_string( get_option( 'timezone_string' ) ) ) : ?>
+		<tr>
+			<th><?php _e( '"Zoneinfo" zone:' ); ?></th>
+			<td><?php echo $tzstring; ?></td>
+		</tr>
+		<tr>
+			<th><?php _e( 'Currently observing:' ) ?></th>
+			<td><?php
+	$now = localtime( time(),true );
+	if ( $now['tm_isdst'] )
+		_e( 'daylight savings time' );
+	else
+		_e( 'standard time' );
+?></td>
+		</tr>
+<?php
+	if ( function_exists( 'timezone_transitions_get' ) ) {
+		$dateTimeZoneSelected = new DateTimeZone( $tzstring );
 		foreach (timezone_transitions_get($dateTimeZoneSelected) as $tr) {
 			if ($tr['ts'] > time()) {
 			    	$found = true;
@@ -175,21 +179,46 @@
 		}
 
 		if ( isset($found) && $found === true ) {
-			echo ' ';
-			$message = $tr['isdst'] ?
-				__('Daylight savings time begins on: <code>%s</code>.') :
-				__('Standard time begins  on: <code>%s</code>.');
-			$tz = new DateTimeZone($tzstring);
-			$d = new DateTime( "@{$tr['ts']}" );
-			$d->setTimezone($tz);
-			printf( $message, date_i18n(get_option('date_format').' '.get_option('time_format'), $d->format('U') ) );
-		} else {
-			_e('This timezone does not observe daylight savings time.');
+			$term = $tr['isdst'] ?
+				__('Daylight savings begins:') :
+				__('Standard time resumes:');
+			$definition = date_i18n( $timezone_format, $tr['ts'] );
+?>
+		<tr>
+			<th><?php echo $term; ?></th>
+			<td><?php echo $definition; ?></td>
+		</tr>
+<?php
 		}
 	}
-	?>
-	</span>
+?>
 <?php endif; ?>
+	</table>
+	</div>
+
+<?php echo wp_timezone_choice(); ?>
+
+	<script type="text/javascript" charset="utf-8">
+		jQuery(function() {
+			jQuery('#timezone_display').bind('change', function() {
+				jQuery('#timezone_string').attr('value', this.value);
+			} );
+			jQuery('#timezone_display').suggest('admin-ajax.php?action=get-timezones',{
+				minchars: 2,
+				resultsClass: 'ac_results timezone_results',
+				delay: 100,
+				onSelect: function() {
+					var splitString = this.value.split('|');
+					var timezoneString = splitString[0];
+					var timezoneDisplay = splitString[1];
+					this.value = timezoneDisplay;
+					jQuery('#timezone_string').attr('value', timezoneString);
+				}
+			} );
+		} );
+	</script>
+
+	<span id="time-description" class="setting-description"><?php _e('Enter your country or a nearby major city and select the appropriate time zone from the drop-down list. If you can\'t locate a relevant time zone, you may manually enter a <a href="http://en.wikipedia.org/wiki/List_of_zoneinfo_time_zones">"zoneinfo" time zone</a> instead.'); ?></span>
 </td>
 
 <?php endif; ?>
