Index: nice_menus.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nice_menus/nice_menus.js,v
retrieving revision 1.16
diff -u -p -r1.16 nice_menus.js
--- nice_menus.js	4 Aug 2008 23:45:22 -0000	1.16
+++ nice_menus.js	18 Dec 2008 01:43:01 -0000
@@ -1,5 +1,7 @@
 // $Id: nice_menus.js,v 1.16 2008/08/04 23:45:22 add1sun Exp $
 
+// Minimal JavaScript needed to get IE 6 to function properly.
+
 // We need to do some browser sniffing to weed out IE 6 only
 // because only IE6 needs this hover hack.
 if (document.all && !window.opera && (navigator.appVersion.search("MSIE 6.0") != -1) && $.browser.msie) {
Index: nice_menus.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/nice_menus/nice_menus.module,v
retrieving revision 1.54
diff -u -p -r1.54 nice_menus.module
--- nice_menus.module	4 Dec 2008 00:42:49 -0000	1.54
+++ nice_menus.module	18 Dec 2008 01:43:02 -0000
@@ -83,18 +83,50 @@ function nice_menus_menu() {
  * Settings form as implemented by hook_menu
  */
 function nice_menus_admin_settings() {
+  // Create JavaScript options.
+  $js_options = array(
+    'none' => t('None'),
+    'minimal' => t('Minimal (IE 6 compatiblity)'),
+    'full' => t('Full (Superfish)'),
+  );
+  
   $form['nice_menus_number'] = array(
     '#type' => 'textfield',
     '#description' => t('The total number of independent Nice menus blocks you want. Enter a number between 0 and 99. If you set this to 0, you will have no blocks created but you can still use the Nice menus theme functions directly in your theme.'),
     '#default_value' => variable_get('nice_menus_number', '2'),
     '#size' => 2,
   );
-  $form['nice_menus_ie'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Enable IE support'),
-    '#description' => t('This will add necessary JavaScript for Nice menus to work properly in Internet Explorer.'),
-    '#default_value' => variable_get('nice_menus_ie', 1),
+  $form['nice_menus_js'] = array(
+    '#type' => 'radios',
+    '#title' => t('Select the level of JavaScript that Nice menus will use'),
+    '#description' => t('None: no JavaScript will be added. Internet Explorer 6 will not work properly.<br />Minimal: adds the minimal necessary JavaScript for Nice Menus to work properly in Internet Explorer 6. Other browsers will use CSS-only menus.<br />Full: adds JavaScript Superfish effects to all browsers <em>in addition to</em> the minimal needed for Internet Explorer 6.'),
+    '#default_value' => variable_get('nice_menus_js', 'full'),
+    '#options' => $js_options,
+  );
+  $form['nice_menus_sf_options'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Advanced: Superfish options'),
+    '#description' => t('You can change the default Superfish options by filling out the desired values here. these only take effect if your JavaScript settings are set to "Full (Superfish)" above.'),
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+  );
+  $form['nice_menus_sf_options']['nice_menus_sf_delay'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Mouse delay'),
+    '#description' => t('The delay in milliseconds that the mouse can remain outside a submenu without it closing.'),
+    '#default_value' => variable_get('nice_menus_sf_delay', 800),
+    '#size' => 5,
+  );
+  $form['nice_menus_sf_options']['nice_menus_sf_speed'] = array(
+    '#type' => 'select',
+    '#title' => t('Animation speed'),
+    '#multiple' => FALSE,
+    '#description' => t('Speed of the menu open/close animation.'),
+    '#options' => array(t('slow'), t('normal'), t('fast')),
+    '#default_value' => variable_get('nice_menus_sf_speed', 1),
   );
+  
+  
 
   // Custom validation to make sure the user is entering numbers.
   $form['#validate'][] = 'nice_menus_settings_validate';
@@ -231,9 +263,22 @@ function nice_menus_theme() {
  * and the menus are unstyled.
  */
 function nice_menus_init() {
-  // Add JavaScript, if enabled.
-  if (variable_get('nice_menus_ie', 1) == 1) {
+  // Add minimal JavaScript, if any JavaScript is enabled.
+  if (variable_get('nice_menus_js', 'full') != 'none') {
     drupal_add_js(drupal_get_path('module', 'nice_menus') .'/nice_menus.js');
+    // Add Superfish JavaScript if full JS is enabled.
+    if (variable_get('nice_menus_js', 'full') == 'full') {
+      // The script, from http://users.tpg.com.au/j_birch/plugins/superfish.
+      drupal_add_js(drupal_get_path('module', 'nice_menus') .'/superfish/js/superfish.js');
+      // Add the Superfish options variables.
+      drupal_add_js(array(
+        'nice_menus_options' => array(
+          'delay' => variable_get('nice_menus_sf_delay', 800),
+          'speed' => variable_get('nice_menus_sf_speed', 1),
+          )),'setting');
+      // The Nice menus implementation.
+      drupal_add_js(drupal_get_path('module', 'nice_menus') .'/nice_menus_superfish.js');
+    }
   }
 
   // Add main CSS functionality.
Index: nice_menus_superfish.js
===================================================================
RCS file: nice_menus_superfish.js
diff -N nice_menus_superfish.js
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ nice_menus_superfish.js	18 Dec 2008 01:43:02 -0000
@@ -0,0 +1,19 @@
+// $Id:$
+
+// This uses Superfish 1.4.8
+// (http://users.tpg.com.au/j_birch/plugins/superfish)
+// TODO: make options configurable through Drupal settings.
+
+// Add Superfish to all Nice menus with some basic options.
+$(document).ready(function() {
+  $('ul.nice-menu').superfish({
+    // Disable generation of arrow mark-up.
+    autoArrows: false,
+    // Disable drop shadows.
+    dropShadows: false,
+    // Mouse delay.
+    delay: Drupal.settings.nice_menus_options.delay,
+    // Animation speed.
+    speed: Drupal.settings.nice_menus_options.speed
+  }); 
+});
\ No newline at end of file
