--- worldclock.install.orig	2008-12-08 12:27:03.000000000 -0800
+++ worldclock.install	2008-12-08 14:00:35.000000000 -0800
@@ -2,9 +2,25 @@
 // $Id: worldclock.install,v 1.1.2.1 2008/12/03 15:27:45 flevour Exp $
 
 /**
+ * @file
+ * worldclock install
+ */
+
+/**
+ * Implementation of hook_install().
+ */
+function worldclock_install() {
+  drupal_install_schema('worldclock');
+  worldclock_load_locations();
+}
+
+/**
  * Implementation of hook_uninstall
  */
 function worldclock_uninstall() {
+  // Remove tables.
+  drupal_uninstall_schema('worldclock');
+
   variable_del('wc_location');
 
   // delete all related variables from db: use query instead of a series of
@@ -14,3 +30,234 @@ function worldclock_uninstall() {
     variable_del($variable->name);
   }
 }
+
+function worldclock_update_6000(){
+  drupal_install_schema('worldclock');
+  worldclock_load_locations();
+  return array();
+}
+
+/**
+ * Implementation of hook_schema().
+ */
+function worldclock_schema() {
+  $schema['wc_location'] = array(
+    'fields' => array(
+      'wid' => array(
+        'type' => 'serial',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      'name' => array(
+        'type' => 'varchar',
+        'length' => 255,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'gmt' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      'dst' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      's_mon' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      's_nth' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      's_dow' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      's_time' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      'e_mon' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      'e_nth' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+       'e_dow' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      'e_time' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),   
+    ),
+    'primary key' => array('wid')
+  );
+
+  $schema['wc_user'] = array(
+    'fields' => array(
+      'wid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+      'uid' => array(
+        'type' => 'int',
+        'not null' => TRUE,
+        'size' => 'tiny',
+      ),
+    )
+  );
+
+  return $schema;
+}
+
+function worldclock_load_locations() {
+  // Note: wc_location array
+  //
+  //    Name      Country or area name
+  //    GMT Diff    GMT time difference -12 to +12 (can be decimal numbers)
+  //    DST Y/N     0=No DST, 1=Has DST
+  //    DST Start   Describes when the DST starts
+  //        Mon   1 to 12 (0 is used for no DST countries)
+  //        Nth   1=1st, 2=2nd, 3=3rd, 9=Last
+  //        DOW   Day of the week (0=Sun, 1=Mon, 2=Tue... 6=Sat)
+  //        Time  0=0:00AM, 1=1:00AM, 2=2:00AM.....
+  //    DST End     Describes when the DST ends
+  //        Mon   1 to 12 (0 is used for no DST countries)
+  //        Nth   1=1st, 2=2nd, 3=3rd, 9=Last
+  //        DOW   Day of the week (0=Sun, 1=Mon, 2=Tue... 6=Sat)
+  //        Time  0=0:00AM, 1=1:00AM, 2=2:00AM.....
+  //
+  $locations = array(
+    //     Name                 GMT  DST ----- Start ------  ------ End -------
+    //                          Diff Y/N  Mon Nth DOW Time    Mon Nth DOW Time
+    array( t('-Not Selected-'),   0,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Afghanistan'),    4.5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Argentina'),       -3,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Australia ET'),    10,  1,  10,  9,  0,   2,     3,  9,  0,   3 ),
+    array( t('Australia CT'),   9.5,  1,  10,  9,  0,   2,     3,  9,  0,   3 ),
+    array( t('Australia WT'),     8,  1,  10,  9,  0,   2,     3,  9,  0,   3 ),
+    array( t('Austria'),          1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Bangladesh'),       6,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Belgium'),          1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Bhutan'),           6,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Bolivia'),         -4,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Brazil'),          -3,  1,  10,  3,  0,   0,     2,  3,  0,   0 ),
+    array( t('Bulgaria'),         2,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Cambodia'),         7,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Cameroon'),         1,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Canada AB'),       -7,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada BC'),       -8,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada MB'),       -6,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada NB'),       -4,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada NF'),     -3.5,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada NT'),       -7,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada NS'),       -4,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada NU(M)'),    -7,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada NU(C)'),    -6,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada NU(E)'),    -5,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada ON(E)'),    -5,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada ON(W)'),    -6,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada PE'),       -4,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada QC'),       -5,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Canada QC(E)'),    -4,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Canada SK'),       -7,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Canada SK(L)'),    -6,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Canada YK'),       -8,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Chile'),           -4,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('China'),            8,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Colombia'),        -5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Costa Rica'),      -6,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Croatia'),          1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Czech Republic'),   1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Denmark'),          1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Ecuador'),         -5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Egypt'),            2,  1,   4,  9,  5,   0,     9,  9,  4,   0 ),
+    array( t('Ethiopia'),         3,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Fiji'),            12,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Finland'),          2,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('France'),           1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Germany'),          1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Ghana'),            0,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Greece'),           2,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Hungary'),          1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Iceland'),          0,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('India'),          5.5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Iran'),           3.5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Israel'),           2,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Italy'),            1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Japan'),            9,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Jordan'),           2,  1,   3,  9,  4,   0,    10,  9,  5,   1 ),
+    array( t('Kenya'),            3,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Korea'),            9,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Laos'),             7,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Libya'),            2,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Madagascar'),       3,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Malaysia'),         8,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Mauritius'),        4,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Monaco'),           1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Mongolia'),         8,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Morocco'),          0,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Myanmar'),        6.3,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Nepal'),         5.45,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Netherland'),       1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('New Caledonia'),   11,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('New Zealand'),     12,  1,   9,  9,  0,   2,     4,  1,  0,   3 ),
+    array( t('Nigeria'),          1,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Norway'),           1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Oman'),             4,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Pakistan'),         5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Panama'),          -5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Peru'),            -5,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Philippines'),      8,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Porland'),          1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Portugal'),         0,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Romania'),          2,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Rwanda'),           2,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Russia Moscow'),    3,  1,   3,  9,  0,   2,    10,  9,  0,   3 ),
+    array( t('Saudi Arabia'),     3,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Senegal'),          0,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Seychells'),        4,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Singapore'),        8,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('South Africa'),     2,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Spain'),            1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Sudan'),            3,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Sweden'),           1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Switherland'),      1,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('Taiwan'),           8,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Thailand'),         7,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Tonga'),           13,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Turkey'),           2,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('UK'),               0,  1,   3,  9,  0,   1,    10,  9,  0,   1 ),
+    array( t('USA Alaska'),      -9,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('USA Hawaii'),     -10,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('USA PT'),          -8,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('USA MT'),          -7,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('USA CT'),          -6,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('USA ET'),          -5,  1,   3,  2,  0,   2,    11,  1,  0,   2 ),
+    array( t('Venezuela'),       -4,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Vietnam'),          7,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+    array( t('Zambia'),           2,  0,   0,  0,  0,   0,     0,  0,  0,   0 ),
+  );
+
+  //Preload the database with the locations
+  foreach ($locations as $loc) {
+    db_query("INSERT INTO {wc_location} (`name`, `gmt`, `dst`, `s_mon`, `s_nth`, `s_dow`, `s_time`, `e_mon`, `e_nth`, `e_dow`, `e_time`) VALUES ('%s', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d', '%d')", $loc[0], $loc[1], $loc[2], $loc[3], $loc[4], $loc[5], $loc[6], $loc[7], $loc[8], $loc[9], $loc[10], $loc[11]);
+  }
+}
+
