Index: fullcalendar.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/fullcalendar/fullcalendar.module,v
retrieving revision 1.1.2.3
diff -u -p -r1.1.2.3 fullcalendar.module
--- fullcalendar.module	2 Dec 2010 05:17:55 -0000	1.1.2.3
+++ fullcalendar.module	8 Dec 2010 19:25:36 -0000
@@ -134,116 +134,85 @@ function theme_fullcalendar_classname($n
   return implode(' ', $className);
 }
 
-//Prepare variables for template file invoked for node row type
+/**
+ * Prepare variables for template file invoked for node row type
+ */
 function template_preprocess_views_view_node_fullcalendar(&$vars) {
-  $options = $vars['options'];
-
-  // Make sure the variables are defined.
-  $vars['url'] = '';
-  $vars['node'] = '';
-  $vars['className'] = '';
-  $vars['data'] = array(); // Contains the start, end & allDay values.
-  $vars['editable'] = FALSE;
-
-  $index = 0; // Used to create $vars['data'] variable.
-
   $nid = $vars['row']->{$vars['field_alias']};
-    if (!is_numeric($nid)) {
+  if (!is_numeric($nid)) {
     return;
   }
-
   $node = node_load($nid);
-
   if (empty($node)) {
     return;
   }
 
   // Allow resize/drag/drop of an event if user has proper permissions.
-  if (_fullcalendar_update_access($node)) {
-    $vars['editable'] = TRUE;
-  }
-
+  $vars['editable'] = _fullcalendar_update_access($node);
   $vars['className'] = theme('fullcalendar_classname', $node);
   $vars['node'] = $node;
+  $vars['data'] = array(); // Contains the start, end & allDay values.
+  $index = 0; // Used to create $vars['data'] variable.
+  $display_field = array();
 
-  if (!empty($options['fullcalendar_url_field'])) {
-    if (isset($node->{$options['fullcalendar_url_field']}[0]['value'])) {
-      $vars['url'] = $node->{$options['fullcalendar_url_field']}[0]['value'];
+  if ($url = $vars['options']['fullcalendar_url_field']) {
+    if (isset($node->{$url}[0]['value'])) {
+      $vars['url'] = $node->{$url}[0]['value'];
     }
   }
-  else {
+  if (empty($vars['url'])) {
     $vars['url'] = url('node/'. $nid);
   }
 
-  //find datetime field (strip tags in case one of the wysiwyg's adds tags)
-  $date_fields = trim(strip_tags($options['fullcalendar_date_fields']));
-  if ($date_fields) {
-    $date_fields = explode("\n", $date_fields);
-    foreach ($date_fields as $date_field) {
-      if ($date_field == 'node_created') {
-        $vars['data'][$index]['field'] = $date_field;
-        $vars['data'][$index++]['start'] = format_date($node->created, 'custom', 'Y-m-j H:i:s');
-        break;
+  $field_names = trim(strip_tags($vars['options']['fullcalendar_date_fields']));
+  if (!empty($field_names)) {
+    foreach (explode("\n", $field_names) as $field_name) {
+      $field_name = trim(strip_tags($field_name));
+      if (($field_name == 'created') || ($field_name == 'changed')) {
+        $node->$field_name = format_date($node->$field_name, 'custom', 'Y-m-j H:i:s');
+        $vars['data'][$index] = array(
+          'field' => $field_name,
+          'index' => 0,
+          'allDay' => FALSE,
+        );
+        _fullcalendar_set_display_times($node, $field_name, $index++, $vars);
+        return;
       }
-      if ($date_field == 'node_changed') {
-        $vars['data'][$index]['field'] = $date_field;
-        $vars['data'][$index++]['start'] = format_date($node->changed, 'custom', 'Y-m-j H:i:s');
-        break;
-      }
-      //if field exists and it is a date or datetime
-      if (isset($node->$date_field)) {
-        switch ($node->{$date_field}[0]['date_type']) {
-          case 'date':
-          case 'datetime':
-          case 'datestamp':
-            foreach ($node->$date_field as $key => $values) {
-              $vars['data'][$index]['field'] = $date_field;
-              $vars['data'][$index]['index'] = $key;
-
-              if ($field = content_fields($key)) {
-                $vars['allDay'][$index]['allDay'] = _fullcalendar_is_all_day($field, $values);
-              }
-              else {
-                $vars['allDay'][$index]['allDay'] = FALSE;
-              }
-              _fullcalendar_set_display_times($node, $date_field, $index++, $vars);
-            }
-            break;
-        }
-        break;
+      // If a date_type field exists
+      if (isset($node->{$field_name}[0]['date_type'])) {
+        $display_field[] = $field_name;
       }
     }
   }
-  // Dynamically find the field(s) with date/datetime values.
-  else {
+  // If no valid field was specified, dynamically find all date_type fields.
+  if (empty($display_field)) {
     $fields = content_fields();
-    $node_a = (array) $node;
-    foreach ($node_a as $field_name => $node_values) {
-      if (preg_match('/field_.*/', $field_name) && isset($node_values[0]['date_type'])) {
-        // Check first element; can have > 1 value, but the date_type will be the same for all those values.
-        switch ($node_values[0]['date_type']) {
-          case 'date':
-          case 'datetime':
-          case 'datestamp':
-            foreach ($node_values as $key_index => $values) {
-              if (isset($fields[$field_name])) {
-                // If no end date is set, copy start date for processing.
-                if (empty($values['value2'])) {
-                  $values['value2'] = $values['value'];
-                }
-
-                $vars['data'][$index]['field'] = $field_name;
-                $vars['data'][$index]['index'] = $key_index;
-                $vars['allDay'][$index]['allDay'] = _fullcalendar_is_all_day($field, $values);
-
-                _fullcalendar_set_display_times($node, $field_name, $index++, $vars);
-              }
-            }
-            break;
-        }
+    foreach ((array) $node as $field_name => $node_values) {
+      if (preg_match('/field_.*/', $field_name) && isset($node->{$field_name}[0]['date_type'])) {
+        $display_field[] = $field_name;
       }
     }
   }
+  // Iterate through available fields, using the first one found.
+  foreach ($display_field as $field_name) {
+    switch ($node->{$field_name}[0]['date_type']) {
+      case 'date':
+      case 'datetime':
+      case 'datestamp':
+        if ($field = content_fields($field_name)) {
+          foreach ($node->$field_name as $key => $values) {
+            $vars['data'][$index] = array(
+              'field' => $field_name,
+              'index' => $key,
+              'allDay' => _fullcalendar_is_all_day($field, $values),
+            );
+            _fullcalendar_set_display_times($node, $field_name, $index++, $vars);
+          }
+          return;
+        }
+        break;
+    }
+  }
 }
 
 /**
@@ -256,15 +225,26 @@ function template_preprocess_views_view_
  * @param array $vars
  */
 function _fullcalendar_set_display_times($node, $field_name, $index, &$vars) {
-  $dfp_info = array(
-    '#node' => $node,
-    '#field_name' => $field_name,
-    '#formatter' => NULL,
-    '#item' => $node->{$field_name}[$index],
-  );
-  $dfp = date_formatter_process($dfp_info);
-  $vars['data'][$index]['start'] = $dfp['value']['local']['datetime'];
-  $vars['data'][$index]['end'] = $dfp['value2']['local']['datetime'];
+  if (is_array($node->$field_name)) {
+    $dfp_info = array(
+      '#node' => $node,
+      '#field_name' => $field_name,
+      '#formatter' => NULL,
+      '#item' => $node->{$field_name}[$index],
+    );
+    $dfp = date_formatter_process($dfp_info);
+    $start = $dfp['value']['local']['datetime'];
+    $end = $dfp['value2']['local']['datetime'];
+  }
+  else {
+    $start = $node->$field_name;
+    $end = $start;
+  }
+  $vars['data'][$index]['start'] = $start;
+  $vars['data'][$index]['end'] = $end;
+  $vars['data'][$index]['start_formatted'] = format_date(strtotime($start));
+  $vars['data'][$index]['end_formatted'] = format_date(strtotime($end));
+
 }
 
 /**
@@ -293,10 +273,14 @@ function _fullcalendar_update_access($no
  * @param array $values
  */
 function _fullcalendar_is_all_day($field, $values) {
+  if (empty($field)) {
+    return FALSE;
+  }
+
   // Get DateTime objects with timezone support
-  $date1 = date_create($values['start'], timezone_open($values['timezone_db']));
+  $date1 = date_create($values['value'], timezone_open($values['timezone_db']));
   date_timezone_set($date1, timezone_open($values['timezone']));
-  $date2 = date_create($values['end'], timezone_open($values['timezone_db']));
+  $date2 = date_create($values['value2'], timezone_open($values['timezone_db']));
   date_timezone_set($date2, timezone_open($values['timezone']));
 
   // Get the max increment for minutes and seconds
Index: views-view-fullcalendar.tpl.php
===================================================================
RCS file: /cvs/drupal/contributions/modules/fullcalendar/views-view-fullcalendar.tpl.php,v
retrieving revision 1.1.2.4
diff -u -p -r1.1.2.4 views-view-fullcalendar.tpl.php
--- views-view-fullcalendar.tpl.php	2 Dec 2010 05:17:55 -0000	1.1.2.4
+++ views-view-fullcalendar.tpl.php	8 Dec 2010 19:25:37 -0000
@@ -67,8 +67,8 @@ Drupal.behaviors.fullCalendar = function
     events: function(start, end, callback) {
       var events = [];
 
-      $('.fullcalendar_event').each(function() {
-        $(this).find('.fullcalendar_event_details').each(function() {
+      $('.fullcalendar-event').each(function() {
+        $(this).find('.fullcalendar-event-details').each(function() {
           events.push({
             field: $(this).attr('field'),
             index: $(this).attr('index'),
Index: views-view-node-fullcalendar.tpl.php
===================================================================
RCS file: /cvs/drupal/contributions/modules/fullcalendar/views-view-node-fullcalendar.tpl.php,v
retrieving revision 1.1.2.3
diff -u -p -r1.1.2.3 views-view-node-fullcalendar.tpl.php
--- views-view-node-fullcalendar.tpl.php	2 Dec 2010 05:17:55 -0000	1.1.2.3
+++ views-view-node-fullcalendar.tpl.php	8 Dec 2010 19:25:37 -0000
@@ -19,18 +19,18 @@
  */
 
 ?>
-<div class="fullcalendar_event">
+<div class="fullcalendar-event">
   <?php foreach ($data as $row): ?>
-    <a class="fullcalendar_event_details" cn="<?php echo $className; ?>" href="<?php echo $url; ?>"
+    <a class="fullcalendar-event-details" cn="<?php echo $className; ?>" href="<?php echo $url; ?>"
       field="<?php echo $row['field']; ?>" index="<?php echo $row['index']; ?>"
       nid="<?php echo $node->nid; ?>" title="<?php echo $node->title; ?>"
       allDay="<?php echo $row['allDay']; ?>" start="<?php echo $row['start']; ?>" end="<?php echo $row['end']; ?>"
       editable="<?php echo $editable; ?>"><?php echo $node->title; ?></a>
 
-    : <?php echo format_date(strtotime($row['start'])); ?>
+    : <?php echo $row['start_formatted']; ?>
 
     <?php if (!$row['allDay'] && !empty($row['end'])): ?>
-      to <?php echo format_date(strtotime($row['end'])); ?>
+      to <?php echo $row['end_formatted']; ?>
     <?php endif; ?>
 
   <?php endforeach; ?>
