diff --git a/better_exposed_filters.js b/better_exposed_filters.js
index 3a7b59b..a29d726 100644
--- a/better_exposed_filters.js
+++ b/better_exposed_filters.js
@@ -85,9 +85,9 @@
       // Check for and initialize datepickers
       if (Drupal.settings.better_exposed_filters.bef_datepicker) {
         // Note: JavaScript does not treat "" as null
-        if (Drupal.settings.better_exposed_filters.bef_dateformat) {
+        if (Drupal.settings.better_exposed_filters.settings.bef_dateformat) {
           $('.bef-datepicker').datepicker({
-            dateFormat: Drupal.settings.better_exposed_filters.bef_dateformat
+            dateFormat: Drupal.settings.better_exposed_filters.settings.bef_dateformat
           });
         }
         else {
@@ -95,6 +95,51 @@
         }
       }
 
+      // Check for and initialize sliders
+      if (Drupal.settings.better_exposed_filters.bef_slider) {
+        var settings = Drupal.settings.better_exposed_filters.bef_settings;
+        $('.bef-slider').each(function() {
+          var $this = $(this);
+          var $input = $this.prevAll().find('input[type=text]');
+          var id = this.id.replace('bef-slider-', '');
+
+          if (2 == $input.length) {
+            // This is a "between" or "not between" filter with two values
+            var $min = $input.parent().find('input[id $= -min]');
+            var $max = $input.parent().find('input[id $= -max]');
+
+            $this.slider({
+              // Min/Max range of the slider
+              min: settings[id].min,
+              max: settings[id].max,
+
+              // This a two-handled slider with these default values
+              range: true,
+              values: [settings[id].defaults.min, settings[id].defaults.max],
+
+              // Update the textfields as the sliders are moved
+              slide: function (event, ui) {
+                $min.val(ui.values[0]);
+                $max.val(ui.values[1]);
+              }
+            });
+          }
+          else {
+            $this.slider({
+              //   // Min/Max range of the slider
+              min: settings[id].min,
+              max: settings[id].max,
+
+              value: settings[id].defaults.value,
+
+            // Update the textfields as the sliders are moved
+              slide: function (event, ui) {
+                $input.val(ui.value);
+              }
+            });
+          }
+        });
+      }
     }                   // attach: function() {
   };                    // Drupal.behaviors.better_exposed_filters = {
 
diff --git a/better_exposed_filters_exposed_form_plugin.inc b/better_exposed_filters_exposed_form_plugin.inc
index 68ca833..e653d20 100644
--- a/better_exposed_filters_exposed_form_plugin.inc
+++ b/better_exposed_filters_exposed_form_plugin.inc
@@ -214,6 +214,9 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
       // Used for date-based filters
       $bef_datepicker = FALSE;
 
+      // Numeric filters can use a jQuery slider
+      $bef_slider = FALSE;
+
       /*
        * Check various filter types and determine what options are available
        */
@@ -244,6 +247,10 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
         $bef_datepicker = TRUE;
       }
 
+      if ($filter instanceof views_handler_filter_numeric) {
+        $bef_slider = TRUE;
+      }
+
       // All filters can use the default filter exposed by Views
       $display_options = array('default' => t('Default select list'));
 
@@ -264,6 +271,10 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
         $display_options['bef_datepicker'] = t('jQuery UI Datepicker');
       }
 
+      if ($bef_slider) {
+        $display_options['bef_slider'] = t('jQuery UI Slider');
+      }
+
       if ($bef_standard) {
         // Less used BEF options, so put them last.
         $display_options['bef_links'] = t('Links');
@@ -281,6 +292,28 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
         '#options' => $display_options,
       );
 
+      if ($bef_slider) {
+        $bef_options[$label]['slider_options'] = array(
+          '#type' => 'fieldset',
+          '#title' => t('jQuery slider options'),
+          '#collapsible' => TRUE,
+          '#collapsed' => FALSE,
+          '#dependency' => array('edit-exposed-form-options-bef-' . str_replace('_', '-', $label) . '-bef-format' => array('bef_slider')),
+        );
+        $bef_options[$label]['slider_options']['min'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Minimum value'),
+          '#description' => t('Enter a minimum value for the slider.'),
+          '#default_value' => $existing[$label]['slider_options']['min'],
+        );
+        $bef_options[$label]['slider_options']['max'] = array(
+          '#type' => 'textfield',
+          '#title' => t('Maximum value'),
+          '#description' => t('Enter a maximum value for the slider.'),
+          '#default_value' => $existing[$label]['slider_options']['max'],
+        );
+      }
+
       // Fieldset to keep the UI from getting out of hand
       $bef_options[$label]['more_options'] = array(
         '#type' => 'fieldset',
@@ -419,10 +452,13 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
     // If we have no visible elements, we don't show the Apply button.
     $show_apply = FALSE;
 
-    // We only want to add the datepicker code once.
-    // TODO: Does this need to be moved to a behavior.attach()?
-    $add_datepicker = FALSE;
-    $datepicker_format = '';
+    // Collect BEF's Javascript settings, add to Drupal.settings at the end.
+    $bef_add_js = FALSE;
+    $bef_js = array(
+      'bef_datepicker' => FALSE,
+      'bef_slider' => FALSE,
+      'bef_settings' => array(),
+    );
 
     // Grab BEF settings
     $settings = $this->_bef_get_settings();
@@ -699,7 +735,8 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
       switch ($options['bef_format']) {
         case 'bef_datepicker':
           $show_apply = TRUE;
-          $add_datepicker = TRUE;
+          $bef_add_js = TRUE;
+          $bef_js['bef_datepicker'] = TRUE;
 
           if ((
             // Single Date API-based input element
@@ -801,6 +838,43 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
             else {
               $form[$field_id]['#attributes']['class'][] = 'bef-datepicker';
             }
+
+            $bef_js['settings']['bef_dateformat'] = $datepicker_format;
+          }
+          break;
+
+        case 'bef_slider':
+          $show_apply = TRUE;
+          $bef_add_js = TRUE;
+          $bef_js['bef_slider'] = TRUE;
+          @$form[$field_id]['#suffix'] .= '<div class="bef-slider" id="bef-slider-' . $field_id . '"></div>';
+
+          // Add slider range min/max
+          $bef_js['bef_settings'][$field_id]['min'] = $settings[$label]['slider_options']['min'];
+          $bef_js['bef_settings'][$field_id]['max'] = $settings[$label]['slider_options']['max'];
+
+          // Add default values -- two values for between/not between
+          // @TODO: need to figure out default values based on form #value element,
+          // but it doesn't exist in the form yet...  WTF?
+          dpm($form[$field_id], $field_id);
+
+          if (isset($form[$field_id]['min']) && isset($form[$field_id]['max'])) {
+            // If there is no defined default value, use the min/max of the range
+            if (empty($form[$field_id]['min']['#default_value'])) {
+              $bef_js['bef_settings'][$field_id]['defaults']['min'] = $settings[$label]['slider_options']['min'];
+            }
+            else {
+              $bef_js['bef_settings'][$field_id]['defaults']['min'] = $form[$field_id]['min']['#default_value'];
+            }
+            if (empty($form[$field_id]['max']['#default_value'])) {
+              $bef_js['bef_settings'][$field_id]['defaults']['max'] = $settings[$label]['slider_options']['max'];
+            }
+            else {
+              $bef_js['bef_settings'][$field_id]['defaults']['max'] = $form[$field_id]['max']['#default_value'];
+            }
+          }
+          else {
+            $bef_js['bef_settings'][$field_id]['defaults']['value'] = $form[$field_id]['#default_value'];
           }
           break;
 
@@ -955,10 +1029,8 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
             }
 
             if ($options['more_options']['bef_select_all_none'] || $options['more_options']['bef_select_all_none_nested']) {
-              // Add BEF's JavaScript to the mix to handle select all/none functionality
-              // @TODO: move to #attached?
-              drupal_add_js(drupal_get_path('module', 'better_exposed_filters') . '/better_exposed_filters.js');
 
+              $bef_add_js = TRUE;
               if ($options['more_options']['bef_select_all_none']) {
                 $form[$field_id]['#bef_select_all_none'] = TRUE;
               }
@@ -1009,18 +1081,19 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
     $form['submit']['#access'] = $show_apply;
     $form['reset']['#access'] = $show_apply;
 
-    // Only add datepicker code once
-    drupal_add_js(array('better_exposed_filters' => array('bef_datepicker' => FALSE)), 'setting');
-    if ($add_datepicker) {
-       // Add Datepicker JS and CSS
-      drupal_add_library('system', 'ui.datepicker');
+    // Add Javascript as needed
+    if ($bef_add_js) {
       drupal_add_js(drupal_get_path('module', 'better_exposed_filters') . '/better_exposed_filters.js');
 
-      // Trigger datepicker in better_exposed_filters.js
-      drupal_add_js(array('better_exposed_filters' => array(
-        'bef_datepicker' => TRUE,
-        'bef_dateformat' => $datepicker_format,
-      )), 'setting');
+      // Add jQuery UI library code as needed
+      if ($bef_js['bef_datepicker']) {
+        drupal_add_library('system', 'ui.datepicker');
+      }
+      if ($bef_js['bef_slider']) {
+        drupal_add_library('system', 'ui.slider');
+      }
+
+      drupal_add_js(array('better_exposed_filters' => $bef_js), 'setting');
     }
 
     // Check for secondary elements
@@ -1062,15 +1135,15 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
         // Numeric keyed values are added (unless already there)
         if (is_numeric($key) && !in_array ($value, $return)) {
           if (is_array($value)) {
-            $return [] = $this->_bef_set_defaults($return[$key], $value);
+            $return[] = $this->_bef_set_defaults($return[$key], $value);
           } else {
-            $return [] = $value;
+            $return[] = $value;
           }
 
         // String keyed values are replaced
         } else {
           if (isset($return[$key]) && is_array($value) && is_array($return[$key])) {
-            $return[$key] = $this->_bef_set_defaults($return[$key], $value);
+              $return[$key] = $this->_bef_set_defaults($return[$key], $value);
           } else {
             $return[$key] = $value;
           }
@@ -1166,6 +1239,10 @@ Title Desc|Z -> A</pre> Leave the replacement value blank to remove an option al
           'filter_rewrite_values' => '',
         ),
       ),
+      'slider_options' => array(
+        'min' => 0,
+        'max' => 99999,
+      ),
     );
 
     // Go through each exposed filter and collect settings
