--- downloads/event/event.module	2008-06-30 15:12:17.000000000 -0700
+++ public_html/drupal6/sites/all/modules/event/event.module	2008-08-20 00:01:39.000000000 -0700
@@ -1594,6 +1594,16 @@
       'ampm' => event_format_date($date, 'custom', 'a'),
       );
   }
+  
+  if (variable_get('event_ampm', 0)) {
+    if ($element['#value']['hour'] > 11) {
+      $element['#value']['ampm'] = 'pm';     
+    }
+    $element['#value']['hour'] = _event_hour_to_ampm($element['#value']['hour']);
+  }
+
+  $element['#value']['hour'] = (int) $element['#value']['hour'];
+  $element['#value']['minute'] = (int) $element['#value']['minute'];
 
   $element['#tree'] = TRUE;
 
@@ -1630,7 +1640,7 @@
       case 'hour':
         $form_type = 'select';
         if (variable_get('event_ampm', 0)) {
-          for ($i = 0; $i <= 12; $i++) $options["$i"] = $i < 10 ? "0$i" : "$i";
+          for ($i = 1; $i <= 12; $i++) $options["$i"] = $i < 10 ? "0$i" : "$i";
         }
         else {
           for ($i = 0; $i <= 23; $i++) $options["$i"] = ($i < 10) ? "0$i" : "$i";
@@ -1656,7 +1666,7 @@
     $parents[] = $type;
     $element[$type] = array(
       '#type' => $form_type,
-      '#value' => $element['#value'][$type],
+      '#default_value' => $element['#value'][$type],
       '#attributes' => $element['#attributes'],
     );
     if (isset($options)) {
@@ -1679,11 +1689,13 @@
  * @return formatted hour
  */
 function _event_hour_to_ampm($hour) {
-  if (variable_get('event_ampm', 0) && $hour > 0) {
-    $hour = $hour % 12;
+  if (variable_get('event_ampm', 0)) {
+    if ($hour > 0) {
+	  $hour = $hour % 12;
+    }
     if ($hour == 0) {
       $hour = 12;
-    }
+    } 
   }
   return $hour;
 }
@@ -2276,10 +2288,13 @@
         $node->teaser = theme('event_nodeapi', $node) . $node->teaser;
         break;
       case 'presave':
-        if (event_is_later($node->event['start_exploded'], $node->event['end_exploded'], 'array')) {
-          $node->event['end_exploded'] = $node->event['start_exploded'];
-        }
-        if (variable_get('event_ampm', '0') == 1) {
+        if (variable_get('event_ampm', '0')) {
+          if ($node->event['start_exploded']['hour'] == 12) {
+         	$node->event['start_exploded']['hour'] = 0;
+          }
+          if ($node->event['end_exploded']['hour'] == 12) {
+          	$node->event['end_exploded']['hour'] = 0;
+          }
           if ($node->event['start_exploded']['ampm'] == 'pm') {
             $node->event['start_exploded']['hour'] += 12;
           }
@@ -2287,6 +2302,9 @@
             $node->event['end_exploded']['hour'] += 12;
           }
         }
+        if (event_is_later($node->event['start_exploded'], $node->event['end_exploded'], 'array')) {
+          $node->event['end_exploded'] = $node->event['start_exploded'];
+        }
         $node->event['start_in_dst'] = event_is_dst($node->event['timezone'], $node->event['start_exploded']);
         $node->event['end_in_dst'] = event_is_dst($node->event['timezone'], $node->event['end_exploded']);
         break;
