Index: install.php
===================================================================
RCS file: /cvs/drupal/drupal/install.php,v
retrieving revision 1.147
diff -u -p -r1.147 install.php
--- install.php	20 Dec 2008 18:24:32 -0000	1.147
+++ install.php	20 Dec 2008 23:49:39 -0000
@@ -1016,6 +1016,7 @@ function install_task_list($active = NUL
  * Form API array definition for site configuration.
  */
 function install_configure_form(&$form_state, $url) {
+  include_once DRUPAL_ROOT . '/includes/country.inc';
 
   $form['intro'] = array(
     '#markup' => st('To configure your website, please provide the following information.'),
@@ -1079,6 +1080,16 @@ function install_configure_form(&$form_s
     '#title' => st('Server settings'),
     '#collapsible' => FALSE,
   );
+
+  $form['server_settings']['site_default_country'] = array(
+    '#type' => 'select',
+    '#title' => t('Default country'),
+    '#default_value' => variable_get('site_default_country', ''),
+    '#options' => country_get_list(),
+    '#description' => t('Select the default country for the site.'),
+    '#weight' => 0,
+  );
+
   $form['server_settings']['date_default_timezone'] = array(
     '#type' => 'select',
     '#title' => st('Default time zone'),
@@ -1152,6 +1163,7 @@ function install_configure_form_submit($
   variable_set('site_name', $form_state['values']['site_name']);
   variable_set('site_mail', $form_state['values']['site_mail']);
   variable_set('date_default_timezone', $form_state['values']['date_default_timezone']);
+  variable_set('site_default_country', $form_state['values']['site_default_country']);
 
   // Enable update.module if this option was selected.
   if ($form_state['values']['update_status_module'][1]) {
Index: includes/country.inc
===================================================================
RCS file: includes/country.inc
diff -N includes/country.inc
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ includes/country.inc	20 Dec 2008 23:49:39 -0000
@@ -0,0 +1,292 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Provides a list of countries based on ISO 3166-1 alpha-2.
+ */
+
+/**
+ * Get an array of all country code => country name pairs as layed out
+ * in ISO 3166-1 alpha-2 with the exception that on the ISO standard
+ * country codes are uppercased.
+ *
+ * Grabbed from location project (http://drupal.org/project/location).
+ * @return
+ *   An array of all country code => country name pairs.
+ */
+function _country_get_predefined_list() {
+  static $countries;
+
+  if (isset($countries)) {
+    return $countries;
+  }
+  $t = get_t();
+
+  $countries = array(
+    'ad' => $t('Andorra'),
+    'ae' => $t('United Arab Emirates'),
+    'af' => $t('Afghanistan'),
+    'ag' => $t('Antigua and Barbuda'),
+    'ai' => $t('Anguilla'),
+    'al' => $t('Albania'),
+    'am' => $t('Armenia'),
+    'an' => $t('Netherlands Antilles'),
+    'ao' => $t('Angola'),
+    'aq' => $t('Antarctica'),
+    'ar' => $t('Argentina'),
+    'as' => $t('American Samoa'),
+    'at' => $t('Austria'),
+    'au' => $t('Australia'),
+    'aw' => $t('Aruba'),
+    'ax' => $t('Aland Islands'),
+    'az' => $t('Azerbaijan'),
+    'ba' => $t('Bosnia and Herzegovina'),
+    'bb' => $t('Barbados'),
+    'bd' => $t('Bangladesh'),
+    'be' => $t('Belgium'),
+    'bf' => $t('Burkina Faso'),
+    'bg' => $t('Bulgaria'),
+    'bh' => $t('Bahrain'),
+    'bi' => $t('Burundi'),
+    'bj' => $t('Benin'),
+    'bm' => $t('Bermuda'),
+    'bn' => $t('Brunei'),
+    'bo' => $t('Bolivia'),
+    'br' => $t('Brazil'),
+    'bs' => $t('Bahamas'),
+    'bt' => $t('Bhutan'),
+    'bv' => $t('Bouvet Island'),
+    'bw' => $t('Botswana'),
+    'by' => $t('Belarus'),
+    'bz' => $t('Belize'),
+    'ca' => $t('Canada'),
+    'cc' => $t('Cocos (Keeling) Islands'),
+    'cd' => $t('Congo (Kinshasa)'),
+    'cf' => $t('Central African Republic'),
+    'cg' => $t('Congo (Brazzaville)'),
+    'ch' => $t('Switzerland'),
+    'ci' => $t('Ivory Coast'),
+    'ck' => $t('Cook Islands'),
+    'cl' => $t('Chile'),
+    'cm' => $t('Cameroon'),
+    'cn' => $t('China'),
+    'co' => $t('Colombia'),
+    'cr' => $t('Costa Rica'),
+    'cs' => $t('Serbia And Montenegro'),
+    'cu' => $t('Cuba'),
+    'cv' => $t('Cape Verde'),
+    'cx' => $t('Christmas Island'),
+    'cy' => $t('Cyprus'),
+    'cz' => $t('Czech Republic'),
+    'de' => $t('Germany'),
+    'dj' => $t('Djibouti'),
+    'dk' => $t('Denmark'),
+    'dm' => $t('Dominica'),
+    'do' => $t('Dominican Republic'),
+    'dz' => $t('Algeria'),
+    'ec' => $t('Ecuador'),
+    'ee' => $t('Estonia'),
+    'eg' => $t('Egypt'),
+    'eh' => $t('Western Sahara'),
+    'er' => $t('Eritrea'),
+    'es' => $t('Spain'),
+    'et' => $t('Ethiopia'),
+    'fi' => $t('Finland'),
+    'fj' => $t('Fiji'),
+    'fk' => $t('Falkland Islands'),
+    'fm' => $t('Micronesia'),
+    'fo' => $t('Faroe Islands'),
+    'fr' => $t('France'),
+    'ga' => $t('Gabon'),
+    'gd' => $t('Grenada'),
+    'ge' => $t('Georgia'),
+    'gf' => $t('French Guiana'),
+    'gg' => $t('Guernsey'),
+    'gh' => $t('Ghana'),
+    'gi' => $t('Gibraltar'),
+    'gl' => $t('Greenland'),
+    'gm' => $t('Gambia'),
+    'gn' => $t('Guinea'),
+    'gp' => $t('Guadeloupe'),
+    'gq' => $t('Equatorial Guinea'),
+    'gr' => $t('Greece'),
+    'gs' => $t('South Georgia and the South Sandwich Islands'),
+    'gt' => $t('Guatemala'),
+    'gu' => $t('Guam'),
+    'gw' => $t('Guinea-Bissau'),
+    'gy' => $t('Guyana'),
+    'hk' => $t('Hong Kong S.A.R., China'),
+    'hm' => $t('Heard Island and McDonald Islands'),
+    'hn' => $t('Honduras'),
+    'hr' => $t('Croatia'),
+    'ht' => $t('Haiti'),
+    'hu' => $t('Hungary'),
+    'id' => $t('Indonesia'),
+    'ie' => $t('Ireland'),
+    'il' => $t('Israel'),
+    'im' => $t('Isle of Man'),
+    'in' => $t('India'),
+    'io' => $t('British Indian Ocean Territory'),
+    'iq' => $t('Iraq'),
+    'ir' => $t('Iran'),
+    'is' => $t('Iceland'),
+    'it' => $t('Italy'),
+    'je' => $t('Jersey'),
+    'jm' => $t('Jamaica'),
+    'jo' => $t('Jordan'),
+    'jp' => $t('Japan'),
+    'ke' => $t('Kenya'),
+    'kg' => $t('Kyrgyzstan'),
+    'kh' => $t('Cambodia'),
+    'ki' => $t('Kiribati'),
+    'km' => $t('Comoros'),
+    'kn' => $t('Saint Kitts and Nevis'),
+    'kp' => $t('North Korea'),
+    'kr' => $t('South Korea'),
+    'kw' => $t('Kuwait'),
+    'ky' => $t('Cayman Islands'),
+    'kz' => $t('Kazakhstan'),
+    'la' => $t('Laos'),
+    'lb' => $t('Lebanon'),
+    'lc' => $t('Saint Lucia'),
+    'li' => $t('Liechtenstein'),
+    'lk' => $t('Sri Lanka'),
+    'lr' => $t('Liberia'),
+    'ls' => $t('Lesotho'),
+    'lt' => $t('Lithuania'),
+    'lu' => $t('Luxembourg'),
+    'lv' => $t('Latvia'),
+    'ly' => $t('Libya'),
+    'ma' => $t('Morocco'),
+    'mc' => $t('Monaco'),
+    'md' => $t('Moldova'),
+    'me' => $t('Montenegro'),
+    'mg' => $t('Madagascar'),
+    'mh' => $t('Marshall Islands'),
+    'mk' => $t('Macedonia'),
+    'ml' => $t('Mali'),
+    'mm' => $t('Myanmar'),
+    'mn' => $t('Mongolia'),
+    'mo' => $t('Macao S.A.R., China'),
+    'mp' => $t('Northern Mariana Islands'),
+    'mq' => $t('Martinique'),
+    'mr' => $t('Mauritania'),
+    'ms' => $t('Montserrat'),
+    'mt' => $t('Malta'),
+    'mu' => $t('Mauritius'),
+    'mv' => $t('Maldives'),
+    'mw' => $t('Malawi'),
+    'mx' => $t('Mexico'),
+    'my' => $t('Malaysia'),
+    'mz' => $t('Mozambique'),
+    'na' => $t('Namibia'),
+    'nc' => $t('New Caledonia'),
+    'ne' => $t('Niger'),
+    'nf' => $t('Norfolk Island'),
+    'ng' => $t('Nigeria'),
+    'ni' => $t('Nicaragua'),
+    'nl' => $t('Netherlands'),
+    'no' => $t('Norway'),
+    'np' => $t('Nepal'),
+    'nr' => $t('Nauru'),
+    'nu' => $t('Niue'),
+    'nz' => $t('New Zealand'),
+    'om' => $t('Oman'),
+    'pa' => $t('Panama'),
+    'pe' => $t('Peru'),
+    'pf' => $t('French Polynesia'),
+    'pg' => $t('Papua New Guinea'),
+    'ph' => $t('Philippines'),
+    'pk' => $t('Pakistan'),
+    'pl' => $t('Poland'),
+    'pm' => $t('Saint Pierre and Miquelon'),
+    'pn' => $t('Pitcairn'),
+    'pr' => $t('Puerto Rico'),
+    'ps' => $t('Palestinian Territory'),
+    'pt' => $t('Portugal'),
+    'pw' => $t('Palau'),
+    'py' => $t('Paraguay'),
+    'qa' => $t('Qatar'),
+    're' => $t('Reunion'),
+    'ro' => $t('Romania'),
+    'rs' => $t('Serbia'),
+    'ru' => $t('Russia'),
+    'rw' => $t('Rwanda'),
+    'sa' => $t('Saudi Arabia'),
+    'sb' => $t('Solomon Islands'),
+    'sc' => $t('Seychelles'),
+    'sd' => $t('Sudan'),
+    'se' => $t('Sweden'),
+    'sg' => $t('Singapore'),
+    'sh' => $t('Saint Helena'),
+    'si' => $t('Slovenia'),
+    'sj' => $t('Svalbard and Jan Mayen'),
+    'sk' => $t('Slovakia'),
+    'sl' => $t('Sierra Leone'),
+    'sm' => $t('San Marino'),
+    'sn' => $t('Senegal'),
+    'so' => $t('Somalia'),
+    'sr' => $t('Suriname'),
+    'st' => $t('Sao Tome and Principe'),
+    'sv' => $t('El Salvador'),
+    'sy' => $t('Syria'),
+    'sz' => $t('Swaziland'),
+    'tc' => $t('Turks and Caicos Islands'),
+    'td' => $t('Chad'),
+    'tf' => $t('French Southern Territories'),
+    'tg' => $t('Togo'),
+    'th' => $t('Thailand'),
+    'tj' => $t('Tajikistan'),
+    'tk' => $t('Tokelau'),
+    'tl' => $t('East Timor'),
+    'tm' => $t('Turkmenistan'),
+    'tn' => $t('Tunisia'),
+    'to' => $t('Tonga'),
+    'tr' => $t('Turkey'),
+    'tt' => $t('Trinidad and Tobago'),
+    'tv' => $t('Tuvalu'),
+    'tw' => $t('Taiwan'),
+    'tz' => $t('Tanzania'),
+    'ua' => $t('Ukraine'),
+    'ug' => $t('Uganda'),
+    'uk' => $t('United Kingdom'),
+    'um' => $t('United States Minor Outlying Islands'),
+    'us' => $t('United States'),
+    'uy' => $t('Uruguay'),
+    'uz' => $t('Uzbekistan'),
+    'va' => $t('Vatican'),
+    'vc' => $t('Saint Vincent and the Grenadines'),
+    've' => $t('Venezuela'),
+    'vg' => $t('British Virgin Islands'),
+    'vi' => $t('U.S. Virgin Islands'),
+    'vn' => $t('Vietnam'),
+    'vu' => $t('Vanuatu'),
+    'wf' => $t('Wallis and Futuna'),
+    'ws' => $t('Samoa'),
+    'ye' => $t('Yemen'),
+    'yt' => $t('Mayotte'),
+    'za' => $t('South Africa'),
+    'zm' => $t('Zambia'),
+    'zw' => $t('Zimbabwe'),
+  );
+
+  // Sort the list.
+  natcasesort($countries);
+
+  return $countries;
+}
+
+/**
+ * Get list of all predefined and custom countries.
+ *
+ * @return
+ *   An array of all country code => country name pairs.
+ */
+function country_get_list() {
+  $countries = _country_get_predefined_list();
+  // Allow other modules to modify the country list.
+  drupal_alter('countries', $countries);
+  return $countries;
+}
+
Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.110
diff -u -p -r1.110 system.admin.inc
--- modules/system/system.admin.inc	26 Nov 2008 13:54:05 -0000	1.110
+++ modules/system/system.admin.inc	20 Dec 2008 23:49:43 -0000
@@ -1526,7 +1526,10 @@ function system_rss_feeds_settings() {
  */
 function system_date_time_settings() {
   drupal_add_js(drupal_get_path('module', 'system') . '/system.js');
-  drupal_add_js(array('dateTime' => array('lookup' => url('admin/settings/date-time/lookup'))), 'setting');
+  drupal_add_js(array('dateTime' => array('lookup' => url('admin/settings/regional-settings/lookup'))), 'setting');
+
+  include_once DRUPAL_ROOT . '/includes/country.inc';
+  $countries = country_get_list();
 
   // Date settings:
   $zones = system_time_zones();
@@ -1561,6 +1564,14 @@ function system_date_time_settings() {
     '#title' => t('Locale settings'),
   );
 
+  $form['locale']['site_default_country'] = array(
+    '#type' => 'select',
+    '#title' => t('Default country'),
+    '#default_value' => variable_get('site_default_country', ''),
+    '#options' => $countries,
+    '#description' => t('Select the default country for the site.'),
+  );
+
   $form['locale']['date_default_timezone'] = array(
     '#type' => 'select',
     '#title' => t('Default time zone'),
Index: modules/system/system.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.install,v
retrieving revision 1.293
diff -u -p -r1.293 system.install
--- modules/system/system.install	20 Dec 2008 18:24:40 -0000	1.293
+++ modules/system/system.install	20 Dec 2008 23:49:46 -0000
@@ -3119,7 +3119,7 @@ function system_update_7013() {
     $timezone = 'UTC';
   }
   variable_set('date_default_timezone', $timezone);
-  drupal_set_message('The default time zone has been set to <em>' . check_plain($timezone) . '</em>. Please check the ' . l('date and time configuration page', 'admin/settings/date-time') . ' to configure it correctly.', 'warning');
+  drupal_set_message('The default time zone has been set to <em>' . check_plain($timezone) . '</em>. Please check the ' . l('date and time configuration page', 'admin/settings/regional-settings') . ' to configure it correctly.', 'warning');
   return $ret;
 }
 
Index: modules/system/system.js
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.js,v
retrieving revision 1.18
diff -u -p -r1.18 system.js
--- modules/system/system.js	22 Nov 2008 11:54:40 -0000	1.18
+++ modules/system/system.js	20 Dec 2008 23:49:47 -0000
@@ -98,7 +98,7 @@ Drupal.behaviors.copyFieldValue = {
 };
 
 /**
- * Show/hide custom format sections on the date-time settings page.
+ * Show/hide custom format sections on the regional settings page.
  */
 Drupal.behaviors.dateTime = {
   attach: function(context) {
@@ -131,4 +131,4 @@ Drupal.behaviors.poweredByPreview = {
       $('img.powered-by-preview').attr('src', path);
     });
   }
-};
\ No newline at end of file
+};
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.652
diff -u -p -r1.652 system.module
--- modules/system/system.module	20 Dec 2008 05:20:20 -0000	1.652
+++ modules/system/system.module	20 Dec 2008 23:49:49 -0000
@@ -70,7 +70,7 @@ function system_help($path, $arg) {
       $output .= '<li>' . t('support for enabling and disabling <a href="@themes">themes</a>, which determine the design and presentation of your site. Drupal comes packaged with several core themes and additional contributed themes are available at the <a href="@drupal-themes">Drupal.org theme page</a>.', array('@themes' => url('admin/build/themes'), '@drupal-themes' => 'http://drupal.org/project/themes')) . '</li>';
       $output .= '<li>' . t('a robust <a href="@cache-settings">caching system</a> that allows the efficient re-use of previously-constructed web pages and web page components. Drupal stores the pages requested by anonymous users in a compressed format; depending on your site configuration and the amount of your web traffic tied to anonymous visitors, Drupal\'s caching system may significantly increase the speed of your site.', array('@cache-settings' => url('admin/settings/performance'))) . '</li>';
       $output .= '<li>' . t('a set of routine administrative operations that rely on a correctly-configured <a href="@cron">cron maintenance task</a> to run automatically. A number of other modules, including the feed aggregator, and search also rely on <a href="@cron">cron maintenance tasks</a>. For more information, see the online handbook entry for <a href="@handbook">configuring cron jobs</a>.', array('@cron' => url('admin/reports/status'), '@handbook' => 'http://drupal.org/cron')) . '</li>';
-      $output .= '<li>' . t('basic configuration options for your site, including <a href="@date-settings">date and time settings</a>, <a href="@file-system">file system settings</a>, <a href="@clean-url">clean URL support</a>, <a href="@site-info">site name and other information</a>, and a <a href="@site-maintenance">site maintenance</a> function for taking your site temporarily offline.', array('@date-settings' => url('admin/settings/date-time'), '@file-system' => url('admin/settings/file-system'), '@clean-url' => url('admin/settings/clean-urls'), '@site-info' => url('admin/settings/site-information'), '@site-maintenance' => url('admin/settings/site-maintenance'))) . '</li></ul>';
+      $output .= '<li>' . t('basic configuration options for your site, including <a href="@regional-settings">date and time settings</a>, <a href="@file-system">file system settings</a>, <a href="@clean-url">clean URL support</a>, <a href="@site-info">site name and other information</a>, and a <a href="@site-maintenance">site maintenance</a> function for taking your site temporarily offline.', array('@regional-settings' => url('admin/settings/regional-settings'), '@file-system' => url('admin/settings/file-system'), '@clean-url' => url('admin/settings/clean-urls'), '@site-info' => url('admin/settings/site-information'), '@site-maintenance' => url('admin/settings/site-maintenance'))) . '</li></ul>';
       $output .= '<p>' . t('For more information, see the online handbook entry for <a href="@system">System module</a>.', array('@system' => 'http://drupal.org/handbook/modules/system/')) . '</p>';
       return $output;
     case 'admin/by-module':
@@ -627,14 +627,14 @@ function system_menu() {
     'page arguments' => array('system_rss_feeds_settings'),
     'access arguments' => array('administer site configuration'),
   );
-  $items['admin/settings/date-time'] = array(
-    'title' => 'Date and time',
+  $items['admin/settings/regional-settings'] = array(
+    'title' => 'Regional settings',
     'description' => "Settings for how Drupal displays date and time, as well as the system's default time zone.",
     'page callback' => 'drupal_get_form',
     'page arguments' => array('system_date_time_settings'),
     'access arguments' => array('administer site configuration'),
   );
-  $items['admin/settings/date-time/lookup'] = array(
+  $items['admin/settings/regional-settings/lookup'] = array(
     'title' => 'Date and time lookup',
     'type' => MENU_CALLBACK,
     'page callback' => 'system_date_time_lookup',
Index: modules/user/user.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.install,v
retrieving revision 1.15
diff -u -p -r1.15 user.install
--- modules/user/user.install	20 Nov 2008 06:56:17 -0000	1.15
+++ modules/user/user.install	20 Dec 2008 23:49:49 -0000
@@ -352,7 +352,7 @@ function user_update_7002(&$sandbox) {
       $ret[] = array('success' => TRUE, 'query' => "Migrate user time zones.");
       if ($sandbox['user_not_migrated'] > 0) {
         variable_set('empty_timezone_message', 1);
-        drupal_set_message('Some user time zones have been emptied and need to be set to the correct values. Use the new ' . l('time zone options', 'admin/settings/date-time') . ' to choose whether to remind users at login to set the correct time zone.', 'warning');
+        drupal_set_message('Some user time zones have been emptied and need to be set to the correct values. Use the new ' . l('time zone options', 'admin/settings/regional-settings') . ' to choose whether to remind users at login to set the correct time zone.', 'warning');
       }
     }
   }
