diff --git a/includes/calendar_plugin_row.inc b/includes/calendar_plugin_row.inc
index 616baa2..10b8fff 100644
--- a/includes/calendar_plugin_row.inc
+++ b/includes/calendar_plugin_row.inc
@@ -51,6 +51,7 @@ class calendar_plugin_row extends views_plugin_row {
         'taxonomy_field' => array('default' => ''),
         'calendar_colors_vocabulary' => array('default' => array()),
         'calendar_colors_taxonomy' => array('default' => array()),
+        'calendar_colors_date_field' => array('default' => array()),
         'calendar_colors_group' => array('default' => array()),
     ));
     return $options;
@@ -84,6 +85,9 @@ class calendar_plugin_row extends views_plugin_row {
     if (module_exists('taxonomy')) {
       $options['taxonomy'] = t('Based on Taxonomy');
     }
+    if (module_exists('field') ) {
+      $options['field'] = t('Based on Date Fields');
+    }
     if (module_exists('og')) {
       $options['group'] = t('Based on Organic Group');
     }
@@ -203,6 +207,45 @@ class calendar_plugin_row extends views_plugin_row {
         }
       }
     }
+    if (module_exists('field') ) {
+      $colors = $this->options['colors']['calendar_colors_date_field'];
+      $field_options = $this->display->handler->get_option('fields');
+      foreach ($field_options as $name => $field) {
+        // Only date fields are useful, since only the (date) fields from argument handler appear as an event.
+        if ( (empty($field['type']) || $field['type'] != 'date_default') && !isset($field['custom_date_format'])) {
+          continue;
+        }
+
+        $id = $field['field'];
+        $label = $field['label'];
+
+        $form['colors']['calendar_colors_date_field'][$id] = array(
+          '#title' => check_plain(t($label)),
+          '#default_value' => isset($colors[$id]) ? $colors[$id] : '#ffffff',
+          '#dependency' => array('edit-row-options-colors-legend' => array('field')),
+          '#type' => 'textfield',
+          '#size' => 7,
+          '#maxlength' => 7,
+          '#element_validate' => array('calendar_validate_hex_color'),
+          '#prefix' => '<div class="calendar-colorpicker-wrapper">',
+          '#suffix' => '<div class="calendar-colorpicker"></div></div>',
+          '#attributes' => array('class' => array('edit-calendar-colorpicker')),
+          '#attached' => array(
+            // Add Farbtastic color picker.
+            'library' => array(
+              array('system', 'farbtastic'),
+            ),
+            // Add javascript to trigger the colorpicker.
+            'js' => array(drupal_get_path('module', 'calendar') . '/js/calendar_colorpicker.js'),
+          ),
+        );
+      }
+      if (empty($form['colors']['calendar_colors_date_field'])) {
+        $form['colors']['date_field']['#options'] = array('' => '');
+        $form['colors']['date_field']['#suffix'] = t('You must add a date field to this view to use field stripe values. This is only useful for entities with multiple date fields.');
+      }
+
+    }
     if (module_exists('og')) {
       $colors_group = $this->options['colors']['calendar_colors_group'];
       $groups = og_get_all_group();
@@ -311,6 +354,18 @@ class calendar_plugin_row extends views_plugin_row {
               $field_name = 'revision_timestamp';
             }
 
+            if (module_exists('field') ) {
+              // Overwrite label: Use Views, not Fields for fields in Legend (e.g. removes 'Content: '-part).
+              // This can only be done for fields that are in the fields list of the display
+              $field_options = &$this->display->handler->get_option('fields');
+              foreach ($field_options as $field) {
+                if ($field['field'] == $field_name) {
+                  $info['label'] = $field['label'];
+                  break;
+                }
+              }
+            }
+
             $date_fields[$field_name] = $info;
           }
         }
@@ -356,6 +411,7 @@ class calendar_plugin_row extends views_plugin_row {
       $tz_field    = $info['timezone_field'];
       $rrule_field = $info['rrule_field'];
       $is_field    = $info['is_field'];
+      $field_label = $info['label'];
 
       $info = entity_get_info($this->entity_type);
       $this->id_field = $info['entity keys']['id'];
@@ -431,6 +487,8 @@ class calendar_plugin_row extends views_plugin_row {
       $event->entity = $entity;
       $event->stripe = array();
       $event->stripe_label = array();
+      $event->field_name = $field_name;
+      $event->field_label = $field_label;
 
       // All calendar row plugins should provide a date_id that the theme can use.
       $event->date_id = $entity->date_id[0];
@@ -444,6 +502,9 @@ class calendar_plugin_row extends views_plugin_row {
           case 'taxonomy':
             $this->calendar_taxonomy_stripe($entity);
             break;
+          case 'field':
+            $this->calendar_date_field_stripe($entity);
+            break;
           case 'group':
             $this->calendar_group_stripe($entity);
             break;
@@ -587,6 +648,25 @@ class calendar_plugin_row extends views_plugin_row {
   }
 
   /**
+   * Create a stripe based on the date field of the event.
+   */
+  function calendar_date_field_stripe(&$result) {
+    $colors = isset($this->options['colors']['calendar_colors_date_field']) ? $this->options['colors']['calendar_colors_date_field'] : array();
+    if (empty($colors)) {
+      return;
+    }
+    if (!empty($result->field_name)) {
+      $field_name = $result->field_name;
+      if (array_key_exists($field_name, $colors)) {
+        $result->stripe[] = $colors[$field_name];
+        $result->stripe_label[] = $result->field_label;
+      }
+    }
+
+    return;
+  }
+
+  /**
    * Create a stripe based on group.
    */
   function calendar_group_stripe(&$result) {
