Index: viewslivefilters.js
===================================================================
--- viewslivefilters.js.old	2009-07-12 16:14:23.000000000 -0400
+++ viewslivefilters.js	2010-04-08 13:51:22.000000000 -0400
@@ -14,7 +14,7 @@
  */
 
 Drupal.behaviors.viewsLiveFilters = function() {
-  $('.view-filters form:not(.viewsLiveFilters-processed)').each(function() {
+  $('form:not(.viewsLiveFilters-processed).viewslivefilters-enabled').each(function() {
     var form = this;
     var timeout = undefined;
     var delay = 1000;
Index: viewslivefilters.module
===================================================================
--- viewslivefilters.module.old	2009-07-12 16:14:23.000000000 -0400
+++ viewslivefilters.module	2010-04-08 13:51:28.000000000 -0400
@@ -17,8 +17,102 @@
 /**
  * Implementation of hook_form_alter().
  */
-function viewslivefilters_form_alter(&$form, $form_state, $form_id) {
-  if ($form_id == 'views_exposed_form') {
-    drupal_add_js(drupal_get_path('module', 'viewslivefilters') .'/viewslivefilters.js');
+function viewslivefilters_form_views_exposed_form_alter(&$form, &$form_state) {
+  $ids = viewslivefilters_get_ids();
+  if (in_array($form['#id'], $ids)) {
+    $form['#attributes']['class'] .= ' viewslivefilters-enabled';
+    $form['#after_build'][] = 'viewslivefilters_add_js';
   }
 }
+
+/**
+ * Load JavaScript file.
+ */
+function viewslivefilters_add_js($form) {
+  drupal_add_js(drupal_get_path('module', 'viewslivefilters') .'/viewslivefilters.js');
+  return $form;
+}
+
+/**
+ * Implementation of hook_menu().
+ */
+function viewslivefilters_menu() {
+  $items = array();
+  $items['admin/build/views/viewslivefilters'] = array(
+    'title' => 'Views Live Filters',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('viewslivefilters_admin_settings'),
+    'access arguments' => array('administer views'),
+    'weight' => 10,
+    'type' => MENU_LOCAL_TASK,
+  );
+  return $items;
+}
+
+/**
+ * Admin settings for Views Live Filters.
+ */
+function viewslivefilters_admin_settings(&$form_state) {
+  $form = array();
+  $form['viewslivefilters'] = array(
+    '#tree' => TRUE,
+  );
+  $views = views_get_all_views();
+  $values = variable_get('viewslivefilters', array());
+  foreach ($views as $view) {
+    if (!$view->disabled) {
+      $empty = TRUE;
+      $form['viewslivefilters'][$view->name] = array(
+        '#type' => 'fieldset',
+        '#title' => $view->name,
+        '#weight' => $view->vid,
+        '#collapsible' => TRUE,
+        '#collapsed' => FALSE,
+      );
+      $default = FALSE;
+      foreach ($view->display as $display) {
+        $exposed = FALSE;
+        if (is_array($display->display_options['filters'])) {
+          foreach ($display->display_options['filters'] as $filter) {
+            if ($filter['exposed']) {
+              $exposed = TRUE;
+              $empty = FALSE;
+              if ($display->id == 'default') {
+                $default = TRUE;
+              }
+            }
+          }
+        }
+        elseif ($default && $display->id != 'default') {
+          if ($display->display_options['defaults']['filters']) {
+            $exposed = TRUE;
+          }
+        }
+        if ($exposed) {
+          $form['viewslivefilters'][$view->name][$display->id] = array(
+            '#type' => 'checkbox',
+            '#title' => $display->display_title,
+            '#default_value' => $values[$view->name][$display->id],
+          );
+        }
+      }
+      if ($empty) {
+        unset($form['viewslivefilters'][$view->name]);
+      }
+    }
+  }
+  return system_settings_form($form);
+}
+
+function viewslivefilters_get_ids() {
+  $values = variable_get('viewslivefilters', array());
+  $ids = array();
+  foreach ($values as $view => $displays) {
+    foreach ($displays as $filter => $enabled) {
+      if ($enabled) {
+        $ids[] = 'views-exposed-form-' . str_replace('_', '-', $view . '-' . $filter);
+      }
+    }
+  }
+  return $ids;
+}
