diff --git a/availability_calendar.info b/availability_calendar.info
index 487665c..e5896ad 100644
--- a/availability_calendar.info
+++ b/availability_calendar.info
@@ -7,3 +7,5 @@ configure = admin/config/content/availability-calendar/settings
 
 ; Views handlers
 files[] = availability_calendar_handler_filter_availability.inc
+files[] = availability_calendar_handler_state.inc
+files[] = availability_calendar_handler_date.inc
diff --git a/availability_calendar.views.inc b/availability_calendar.views.inc
index 03ac6ba..a31c7d0 100644
--- a/availability_calendar.views.inc
+++ b/availability_calendar.views.inc
@@ -11,15 +11,20 @@
  *     code, whether the view displays content or fields.
  *   - Created date and changed date: though the current field formatters do not
  *     show this information, you can visualise them with a view.
+ *   - Date and State: both of these can be used within a Calendar's generated
+ *     view (@see http://drupal.org/project/calendar) to show the state of a 
+ *     given day.
  * - (Exposed) Filter criteria and arguments:
  *   - Enabled: only if there's a bundle that allows to override it on a per
  *     entity basis.
  *   - Created date.
  *   - Changed date.
  *   - Available.
+ *   - Date value within our calendar (multiple argument).
  * - Sort criteria:
  *   - Created date.
  *   - Changed date.
+ *   - Date value within our calendar.
  *
  * We also hide some things in the views UI:
  * - Argument/Filter:
@@ -29,7 +34,8 @@
  * - All revisioning options as basically a calendar is not revisioned.
  *   (@todo: look critically at this assumption.)
  *
- * @author Erwin Derksen (http://drupal.org/user/750928)
+ * @author Erwin Derksen          (http://drupal.org/user/750928)
+ * @author Marc-Antoine Tremblay  (http://drupal.org/user/1602302)
  */
 
 /**
@@ -102,6 +108,86 @@ function availability_calendar_field_views_data_alter(&$data, $field, $module) {
     $data[$field_table_name]["{$field_name}_enabled"]['help'] = t('Whether the calendar has been enabled', array('@field_label' => $field_title));
     $data[$field_table_name]["{$field_name}_enabled"]['filter']['handler'] = 'views_handler_filter_boolean_operator';
 
+    // Table availability_calendar_state:
+    // - Define the intermediate join table and an extra join condition on
+    //   enabled.
+    // - As there may be multiple calendar fields, the array entry must be
+    //   unique. So we cannot use the table name but must use an alias.
+    //   Therefore the real table name must be mentioned in the join defintion.
+    // - Add custom fields date & state. both of these can be used within a 
+    //   Calendar's generated view (@see http://drupal.org/project/calendar) to
+    //   show the state of a given day.
+    $table_availability_calendar_state = array();
+    foreach ($entity_types as $entity_type) {
+      $table_availability_calendar_state['table']['join'][$entity_type] = array(
+        'table' => 'availability_calendar_availability',
+        'left_table' => $field_table_name,
+        'left_field' => "{$field_name}_cid",
+        'field' => 'cid',
+        'extra' => $join_extra,
+      );
+    }
+    
+    // Field 'date' is used to duplicate our view's results for as many time as
+    // there are dates entered within our calendar. It is most usefull when used
+    // With a Calendar's generated view.
+    $table_availability_calendar_state["date"] = array(
+      'group' => $field_views_info['group'],
+      'title' => t('@field_label dates', array('@field_label' => $field_title)),
+      'title short' => t('@field_label dates', array('@field_label' => $field_title)),
+      'help' => t("use this field if you want to divide your results for every date entered in your calendar") . ' ' . $field_views_info['help'],
+      'field' => array(
+        'field' => 'date',
+        'field_name' => 'date',
+        'table' => 'availability_calendar_availability',
+        'handler' => 'availability_calendar_handler_date',
+      ),
+      'argument' => array(
+        'field' => 'date',
+        'field_name' => 'date',
+        'table' => 'availability_calendar_availability',
+        'handler' => 'views_handler_argument_date',
+      ),
+      'filter' => array(
+        'field' => 'date',
+        'field_name' => 'date',
+        'type' => 'datetime',
+        'tz_handling' => 'none',
+        'table' => 'availability_calendar_availability',
+        'handler' => 'views_handler_filter_date',
+      ),
+      'sort' => array(
+        'field' => 'date',
+        'field_name' => 'date',
+        'table' => 'availability_calendar_availability',
+        'handler' => 'views_handler_sort_date',
+      ),
+
+    );
+    
+    // field state is a custom field which is not initially informed within
+    // availability calendar's field. It returns the state of the current date
+    // argument.
+    $table_availability_calendar_state["state"] = array(
+      'group' => $field_views_info['group'],
+      'title' => t('@field_label state of the day', array('@field_label' => $field_title)),
+      'title short' => t('@field_label state', array('@field_label' => $field_title)),
+      'help' => t("Displays the state associated with the current day") . ' ' . $field_views_info['help'],
+      'field' => array(
+        'field' => "sid",
+        'field_name' => "sid",
+        'table' => 'availability_calendar_availability',
+        'handler' => 'availability_calendar_handler_state',
+      ),
+      'argument' => array(
+        'field' => 'date',
+        'field_name' => 'date',
+        'type' => 'datetime',
+        'table' => 'availability_calendar_availability',
+        'handler' => 'views_handler_argument_date',
+      ),
+    );
+
     // Table availability_calendar_calendar:
     // - Define the intermediate join table and an extra join condition on
     //   enabled.
@@ -120,12 +206,14 @@ function availability_calendar_field_views_data_alter(&$data, $field, $module) {
         'extra' => $join_extra,
       );
     }
+    
     $table_availability_calendar_calendar['created'] = array(
       'group' => $field_views_info['group'],
       'title' => t('@field_label created date', array('@field_label' => $field_title)),
       'title short' => t('@field_label created', array('@field_label' => $field_title)),
       'help' => t('The date the calendar was created.') . ' ' . $field_views_info['help'],
       'field' => array(
+        'field' => 'created',
         'field_name' => 'created',
         'table' => 'availability_calendar_calendar',
         'handler' => 'views_handler_field_date',
@@ -158,6 +246,7 @@ function availability_calendar_field_views_data_alter(&$data, $field, $module) {
       'title short' => t('@field_label updated', array('@field_label' => $field_title)),
       'help' => t('The date the calendar was last updated.') . ' ' . $field_views_info['help'],
       'field' => array(
+        'field' => 'changed',
         'field_name' => 'changed',
         'table' => 'availability_calendar_calendar',
         'handler' => 'views_handler_field_date',
@@ -186,5 +275,6 @@ function availability_calendar_field_views_data_alter(&$data, $field, $module) {
     );
     // Use a unique alias name.
     $data['availability_calendar_calendar_' . $field_table_name] = $table_availability_calendar_calendar;
+    $data['availability_calendar_availability_' . $field_table_name] = $table_availability_calendar_state;
   }
 }
diff --git a/availability_calendar_handler_date.inc b/availability_calendar_handler_date.inc
new file mode 100644
index 0000000..36b6ef9
--- /dev/null
+++ b/availability_calendar_handler_date.inc
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @class availability_calendar_handler_state Views handler to show the 
+ * calendar's dates unformated.
+ * 
+ * @autor Marc-Antoine Tremblay (http://drupal.org/user/1602302)
+ *
+ * This simple handler bypass view's default @see views_handler_field_date to prevent
+ * it from formating our output (we want a clean date)
+ *
+ */
+class availability_calendar_handler_date extends views_handler_field_date {
+  
+    function render($values) {
+    $value = $this->get_value($values);
+    return $value;
+  }
+
+}
diff --git a/availability_calendar_handler_state.inc b/availability_calendar_handler_state.inc
new file mode 100644
index 0000000..32268d4
--- /dev/null
+++ b/availability_calendar_handler_state.inc
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @class availability_calendar_handler_state Views handler to show the 
+ * calendar's state for the current day.
+ * 
+ * @autor Marc-Antoine Tremblay (http://drupal.org/user/1602302)
+ *
+ * This handler inherits from @see views_handler_field but the function
+ * get_value() has been copied here for an easier understanding of the class'
+ * functionnality.
+ *
+ * The handler returns the contextual day's label.
+ * (optimally used with Views,Date & Calendar)
+ *
+ */
+class availability_calendar_handler_state extends views_handler_field {  
+  function render($values) {
+    $return ='';
+    
+    // Getting the current calendar's id.
+    $value = $this->get_value($values);
+    $value = $this->sanitize_value($value);
+    
+    // Initial query
+    $query= db_select('availability_calendar_state')
+    ->fields('availability_calendar_state');
+      
+    // Fetching our query. Adding our calendar's id as a condition.
+    $query->where("availability_calendar_state.sid = $value");
+    
+    // Executing our query, fecthing our corresponding labels.
+    $resultats=$query->execute()->fetchAll();
+    foreach($resultats as $resultat){
+      $return=$resultat->label;
+    }
+    return $return;
+  }
+  
+  /**
+   * This function is duplicated from the @see views_handler_field to help
+   * understanding this handler's function.
+   */
+  function get_value($values, $field = NULL) {
+    $alias = isset($field) ? $this->aliases[$field] : $this->field_alias;
+    if (isset($values->{$alias})) {
+      return $values->{$alias};
+    }
+  }
+  
+  function query() {
+    $this->ensure_my_table();
+    $params = $this->options['group_type'] != 'group' ? array('function' => $this->options['group_type']) : array();
+    $this->field_alias = $this->query->add_field($this->table_alias, $this->real_field, NULL, $params);
+    $this->add_additional_fields();
+  }
+  }
