--- event.module.orig	2008-07-16 11:55:26.000000000 -0500
+++ event.module	2008-08-06 02:42:22.828125000 -0500
@@ -1594,6 +1594,20 @@
       'ampm' => event_format_date($date, 'custom', 'a'),
       );
   }
+  
+ /**
+  * Handle 12/24 hour conversion.  There's probably a better place (and a better way) to do this, 
+  * but it gets the module to work for now... 
+  */
+  if (variable_get('event_ampm', 0)) {
+    if ($element['#value']['hour'] > 12) {
+      $element['#value']['hour'] -= 12;
+      $element['#value']['hour'] = str_pad($element['#value']['hour'], 2, '0', STR_PAD_LEFT);
+      $element['#value']['ampm'] = 'pm';     
+    } elseif ($element['#value']['hour'] == 0) {
+      $element['#value']['hour'] = 12;
+    }
+  }
 
   $element['#tree'] = TRUE;
 
@@ -1630,16 +1644,25 @@
       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++) {
+            $j = $i < 10 ? "0$i" : "$i";
+            $options["$j"] = $j;
+          }
         }
         else {
-          for ($i = 0; $i <= 23; $i++) $options["$i"] = ($i < 10) ? "0$i" : "$i";
+          for ($i = 0; $i <= 23; $i++) {
+            $j = $i < 10 ? "0$i" : "$i";
+            $options["$j"] = $j;
+          }
         }
         asort($options);
         break;
       case 'minute':
         $form_type = 'select';
-        for ($i = 0; $i <= 59; $i++) $options["$i"] = ($i < 10) ? "0$i" : "$i";
+        for ($i = 0; $i <= 59; $i++) {
+            $j = $i < 10 ? "0$i" : "$i";
+            $options["$j"] = $j;
+        }
         asort($options);
         break;
       case 'ampm':
