--- webform_report.module	2010-03-29 11:21:03.000000000 -0600
+++ /Volumes/Server Data/JKIG/Drupal/sites/all/modules/drupal-contrib/webform_report/webform_report.module	2010-07-28 14:59:04.000000000 -0600
@@ -213,8 +213,60 @@ function webform_report_load($node) {
 }
 
 /**
+ * Date Range Range Form
+ */ 
+ 
+function webform_report_date_range_form($form_state){
+ $form['fitler_widgets_fieldset'] = array(
+  '#type' => 'fieldset',
+  '#title' => t('Filter Date'),
+  '#collapsible' => TRUE,
+  '#collapsed' => FALSE,
+  '#description' => t('Select the specific dates that you would like to filter the report on.'),
+  '#weight' => 5,
+ );
+ $form['fitler_widgets_fieldset']['from_date'] = array(
+    '#type' => 'date_popup',
+    '#title' => t('From Date'),
+    '#date_format' => 'm/d/Y',
+    '#default_value' => (isset($_SESSION['webform_report_date_from'])) ? $_SESSION['webform_report_date_from'] : '',
+  );
+  $form['fitler_widgets_fieldset']['to_date'] = array(
+    '#type' => 'date_popup',
+    '#title' => t('To Date'),
+    '#date_format' => 'm/d/Y',
+    '#default_value' => (isset($_SESSION['webform_report_date_to'])) ? $_SESSION['webform_report_date_to'] : '',
+  );
+  $form['fitler_widgets_fieldset']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Apply'),
+  );
+  $form['fitler_widgets_fieldset']['reset'] = array(
+    '#type' => 'submit',
+    '#value' => t('Reset'),
+  );
+  return $form;
+}
+
+/**
+ * Date Range Submit Handler
+ */ 
+
+function webform_report_date_range_form_submit(&$form, $form_state) {
+  if ($form_state['values']['op'] == $form_state['values']['submit']) { 
+    $_SESSION['webform_report_date_from'] = $form_state['values']['from_date'];
+    $_SESSION['webform_report_date_to'] = $form_state['values']['to_date'];
+  }
+  else if ($form_state['values']['op'] == $form_state['values']['reset']) {
+    unset($_SESSION['webform_report_date_from']);
+    unset($_SESSION['webform_report_date_to']);
+  }
+}
+
+/**
  * Implementation of hook_view
  */
+ 
 function webform_report_view($node, $teaser = FALSE, $page = FALSE) {
   if(!empty($node->nid) && empty($node->wnid) && (arg(2) != 'add' && arg(2) != 'edit')) {
     drupal_goto('node/' . $node->nid . '/add/webform_report/criteria');
@@ -222,6 +274,7 @@ function webform_report_view($node, $tea
   module_load_include('inc', 'webform_report', 'webform_report');
 
   $data = _webform_report_get_data($node);
+  
   $output = _webform_report_get_body_content($data, $node);
   $node->content['body'] = array('#value' => check_markup($node->body, $node->format, FALSE));
   $node->content['webform_report'] = array('#value' => $output, '#weight' => 10);
@@ -339,6 +393,7 @@ function webform_report_criteria_form_pu
 function webform_report_criteria_form($form_state) {
   global $user;
   $node = node_load(arg(1));
+  
   // Check if the webform report has already been submitted, so that edits can be denied to users with only create permission
   $webform_report = db_fetch_object(db_query("SELECT wnid FROM {webform_report} WHERE nid = '" . $node->nid . "'"));
   module_load_include('inc', 'webform_report', 'webform_report');
@@ -400,6 +455,37 @@ function webform_report_criteria_form($f
       );
     }
 
+    $form['date_range_fieldset'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Date Range'),
+      '#description' => t('Displays a date range filter on the top of the reports page. This allows the end user to filter the report based on a specific date.'),
+      '#collapsible' => TRUE,
+      '#collapsed' => FAlSE,
+      '#weight' => 5,
+    );
+    $form['date_range_fieldset']['date_range_enable'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Enable'),
+        '#default_value' => variable_get('date_range_enable', ''),
+        '#weight' => 5
+    );
+    $form['date_range_fieldset']['date_range_default_from'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Default From Date'),
+        '#default_value' => variable_get('date_range_default_from', ''),
+        '#description' => t('Parse about any English textual datetime description into a Unix timestamp. Please refer to the php !link function on php.net', array('!link' => l(t('strtotime'), 'http://php.net/manual/en/function.strtotime.php'))),
+        '#size' => 30,
+        '#weight' => 10
+    );
+    $form['date_range_fieldset']['date_range_default_to'] = array(
+        '#type' => 'textfield',
+        '#title' => t('Default To Date'),
+        '#default_value' => variable_get('date_range_default_to', ''),
+        '#description' => t('Parse about any English textual datetime description into a Unix timestamp. Please refer to the php !link function on php.net', array('!link' => l(t('strtotime'), 'http://php.net/manual/en/function.strtotime.php'))),
+        '#size' => 30,
+        '#weight' => 15
+    );
+    
     if (!empty($node->kcid) && !empty($node->filter_type)) {
       $form['filter_value'] = array(
         '#type' => 'textfield',
@@ -408,7 +494,7 @@ function webform_report_criteria_form($f
         '#default_value' => $node->filter_value,
         '#attributes' => array('onchange' => 'this.form.submit()'),
         '#required' => FALSE,
-        '#weight' => 4
+        '#weight' => 5
       );
     }
 
@@ -436,7 +522,7 @@ function webform_report_criteria_form($f
         '#options' => array_map('filter_xss', $meta_components + $webform_components + array(-5 => t('Edit link'))),
         '#default_value' => $default,
         '#required' => TRUE,
-        '#weight' => 5
+        '#weight' => 6
       );
     }
     unset($default);
@@ -479,3 +565,15 @@ function webform_report_criteria_form($f
     exit;
   }
 }
+
+/**
+ * Submit handler 
+ */ 
+
+function webform_report_criteria_form_submit(&$form, $form_state) {
+  if($form_state['values']['op'] == $form_state['values']['submit']) {
+    variable_set('date_range_enable', $form_state['values']['date_range_enable']);
+    variable_set('date_range_default_from', $form_state['values']['date_range_default_from']);
+    variable_set('date_range_default_to', $form_state['values']['date_range_default_to']);
+  }
+}
