--- event/event.module	2007-06-04 19:36:56.000000000 +0000
+++ event_new.module	2008-04-17 13:20:58.000000000 +0000
@@ -135,9 +135,10 @@ function event_menu($may_cache) {
   }
   else {
     drupal_add_css(EVENT_PATH .'/event.css');
-
+    
     if (arg(0) == 'node' && is_numeric(arg(1))) {
       $type = db_result(db_query("SELECT type FROM {node} WHERE nid=%d", arg(1)));
+      
       if (event_is_enabled($type)) {
           $items[] = array('path' => 'node/'.arg(1).'/ical',
                            'title' => t('Event ical'),
@@ -507,6 +508,7 @@ function event_calendar_month($op, $stam
       break;
 
     case 'block':
+    
       // create caption and navigation links
       $caption = _event_nav($stamp, 'prev', 'block', $types, $terms) .' '. l(t(gmdate('F', $stamp)) .' '. $year, 'event/'. $year .'/'. $month .'/'. $day .'/month') .' '. _event_nav($stamp, 'next', 'block', $types, $terms);
 
@@ -774,6 +776,7 @@ function event_calendar_ical($stamp, $du
  * Return an ical for a specific event
  */
 function event_node_ical() {
+  
   $node = node_load(arg(1));
   $event = _event_node_ical($node);
   drupal_set_header('Content-Type: text/calendar; charset=utf-8');
@@ -782,9 +785,11 @@ function event_node_ical() {
 }
 
 function _event_node_ical($node) {
+
   $event = array();
   // Allow modules to affect item fields
   node_invoke_nodeapi($node, 'ical item');
+  
   $event['start'] = $node->event_start;
   $event['end'] = $node->event_end;
   $event['location'] = $node->event_location;
@@ -1445,6 +1450,22 @@ function _event_user_date() {
 }
 
 /**
+ * Constructs the time select boxes according to pre-defined step sizes.
+ *
+ * @ingroup event_support
+ * @param $timevalues pointer to time value array
+ * @param $start is the first value in dropdown
+ * @param $end is the last value in dropdown
+ * @param $stepsize is the inrecment (for hours, minutes) to display
+ */
+function _event_get_time_select(&$timevalues, $start = 0, $end = 12, $stepsize = 1){
+  $count = $start;
+  for($i = $start; $i <= $end; $i += $stepsize){
+    $keyval = $i < 10 ? "0$i" : $i;
+    $timevalues["$keyval"] = $keyval;
+  }
+}
+/**
  * Constructs the time select boxes.
  *
  * @ingroup event_support
@@ -1462,17 +1483,18 @@ function event_form_date($timestamp, $pr
   // ...hours
   if (variable_get('event_ampm', '0')) {
     $hour_format = t('g');
-    for ($i = 1; $i <= 12; $i++) $hours[$i] = $i < 10 ? "0$i" : $i;
+    _event_get_time_select($hours, 1, 12, 1);
     $am_pms = array('am' => t('am'), 'pm' => t('pm'));
   }
   else {
     $hour_format = t('H');
     // ...hours (with leading 0s)
-    for ($i = 0; $i <= 23; $i++) $hours[$i] = $i < 10 ? "0$i" : $i;
+    _event_get_time_select($hours, 0, 23, 1);
   }
-  // ...minutes (with leading 0s)
-  for ($i = 0; $i <= 59; $i++) $minutes[$i] = $i < 10 ? "0$i" : $i;
-
+  //only display required step size
+  _event_get_time_select($minutes, 0, 59, 15);
+  
+  //
   // This is a GMT timestamp, so the _event_date() wrapper to display local times.
   $form[$prefix .'_day'] = array(
     '#prefix' => '<div class="container-inline"><div class="day">',
@@ -1758,6 +1780,7 @@ function event_type_filter_form($curtype
  *        block.
  */
 function event_block($op = 'list', $delta = 0) {
+
   switch ($op) {
     case 'list' :
       $blocks[0]['info'] = t('Calendar to browse events.');
@@ -1895,7 +1918,6 @@ function event_form_alter($form_id, &$fo
          *  If so, display it, otherwise default to normal drop-down list selectors
          */
         if (module_exists('jscalendar')) {
-
           $form['start_date'] = array(
             '#title' => t('Start Date'),
             '#type' => 'textfield',
@@ -1929,6 +1951,7 @@ function event_form_alter($form_id, &$fo
             '#title' => t('Start date'),
             '#weight' => -15
             );
+	  
           $form['event_start']['date'] = event_form_date($node->event_start ? $node->event_start : _event_user_time(), 'start', $node->start_offset);
 
           $form['event_end'] = array(
@@ -1936,8 +1959,9 @@ function event_form_alter($form_id, &$fo
             '#title' => t('End date'),
             '#weight' => -14
             );
+	  
           $form['event_end']['date'] = event_form_date(($node->event_end ? $node->event_end : _event_user_time()), 'end', $node->end_offset);
-
+            
         }
 
         if (variable_get('event_timezone_input', 'site') == 'input') {
@@ -1974,15 +1998,19 @@ function event_form_alter($form_id, &$fo
  */
 function event_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
   // make sure it's an event enabled node
+	
   if(variable_get('event_nodeapi_'. $node->type, 'never') != 'never') {
     switch ($op) {
       case 'validate':
         // no break. both need a node with a formatted date and event_start
         // and event_end set, 'validate' for the previewing and 'submit' for
         // update/insert.
+      
       case 'submit':
         event_validate_form_date($node, 'start');
         event_validate_form_date($node, 'end');
+				
+				
         if ($node->event_end < $node->event_start) {
           $node->event_end = $node->event_start;
         }
@@ -2004,18 +2032,20 @@ function event_nodeapi(&$node, $op, $tea
         break;
 
       case 'insert':
-        db_query('INSERT INTO {event} (nid, event_start, event_end, timezone) VALUES (%d, %d, %d, %d)', $node->nid, $node->event_start, $node->event_end, $node->timezone);
+        
+        db_query('INSERT INTO {event} (nid, event_start, event_end, event_allday, timezone) VALUES (%d, %d, %d, %d, %d)', $node->nid, $node->event_start, $node->event_end, $node->event_allday, $node->timezone);
         event_set_range();
         break;
 
       case 'update':
+        
         // While the DELETE/INSERT is less efficient than single UPDATE, the
         // UPDATE only works if there's an existing record in the events
         // table. I.e. if you create a node and then enable the event module,
         // there will be no record in the event table, so the dates cannot be
         // changed.
         db_query('DELETE FROM {event} WHERE nid = %d', $node->nid);
-        db_query('INSERT INTO {event} (nid, event_start, event_end, timezone) VALUES (%d, %d, %d, %d)', $node->nid, $node->event_start, $node->event_end, $node->timezone);
+        db_query('INSERT INTO {event} (nid, event_start, event_end, event_allday, timezone) VALUES (%d, %d, %d, %d, %d)', $node->nid, $node->event_start, $node->event_end, $node->event_allday, $node->timezone);
         event_set_range();
         break;
 
@@ -2025,7 +2055,8 @@ function event_nodeapi(&$node, $op, $tea
         break;
 
       case 'load':
-        $object = db_fetch_object(db_query('SELECT event_start, event_end, timezone FROM {event} WHERE nid = %d', $node->nid));
+            
+        $object = db_fetch_object(db_query('SELECT event_start, event_end, event_allday, timezone FROM {event} WHERE nid = %d', $node->nid));
         switch (variable_get('event_timezone_display', 'event')) {
           case 'event' :
             include_once(EVENT_PATH .'/event_timezones.inc');
@@ -2041,32 +2072,51 @@ function event_nodeapi(&$node, $op, $tea
             break;
         }
         $ctype = module_invoke('flexinode', 'load_content_type', $node->ctype_id);
-
+        
+        $small_format_start = format_date($object->event_start, 'small', '', $start_offset);
+        $custom_format_start = format_date($object->event_start, 'custom', (variable_get('event_ampm', '0') ? 'g:i a' : 'H:i'), $start_offset);
+        
+        $small_format_end = format_date($object->event_end, 'small', '', $end_offset);
+        $custom_format_end = format_date($object->event_end, 'custom', (variable_get('event_ampm', '0') ? 'g:i a' : 'H:i'), $end_offset);
+        
+        if($object->event_allday == 1){
+          $small_format_start = format_date($object->event_start, 'custom', 'm/d/Y', $start_offset);
+          $custom_format_start = format_date($object->event_start, 'custom', 'm/d/Y', $start_offset);
+          
+          $small_format_end = format_date($object->event_end, 'custom', 'm/d/Y', $end_offset);
+          $custom_format_end = format_date($object->event_end, 'custom', 'm/d/Y', $end_offset);
+        }
+        
         return array(
           'event_start'       => $object->event_start,
           'event_end'         => $object->event_end,
+          'event_allday'      => $object->event_allday,
           'timezone'          => $object->timezone,
           'start_offset'      => $start_offset,
-          'start_format'      => format_date($object->event_start, 'small', '', $start_offset),
-          'start_time_format' => format_date($object->event_start, 'custom', (variable_get('event_ampm', '0') ? 'g:i a' : 'H:i'), $start_offset),
+          'start_format'      => $small_format_start,
+          'start_time_format' => $custom_format_start,
           'end_offset'        => $end_offset,
-          'end_format'        => format_date($object->event_end, 'small', '', $end_offset),
-          'end_time_format'   => format_date($object->event_end, 'custom', (variable_get('event_ampm', '0') ? 'g:i a' : 'H:i'), $end_offset),
+          'end_format'        => $small_format_end,
+          'end_time_format'   => $custom_format_end,
           'event_node_title'  => ($ctype->name ? $ctype->name : $node->type));
         break;
 
       case 'ical item':
+        
         break;
 
       case 'view':
+        
         $node->content['event'] = array(
           '#value' => theme('event_nodeapi', $node),
           '#weight' => -10,
         );
         break;
       case 'rss item':
-        $node->body = theme('event_nodeapi', $node). $node->body;
-        $node->teaser = theme('event_nodeapi', $node). $node->teaser;
+        
+        $node->body = theme('event_nodeapi', $node).$node->body;
+        $node->teaser = theme('event_nodeapi', $node).$node->teaser;       
+        
         break;
     }
   }
