Index: betterselect/betterselect.info
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/betterselect/betterselect.info,v
retrieving revision 1.1
diff -u -p -r1.1 betterselect.info
--- betterselect/betterselect.info	30 May 2008 17:37:25 -0000	1.1
+++ betterselect/betterselect.info	19 Jun 2008 03:54:59 -0000
@@ -1,4 +1,3 @@
 ; $Id: betterselect.info,v 1.1 2008/05/30 17:37:25 webchick Exp $
 name = Better Select
 description = Use stylized checkboxes instead of the default multiple select HTML element in forms.
-core = 6.x
Index: betterselect/betterselect.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/betterselect/betterselect.module,v
retrieving revision 1.3
diff -u -p -r1.3 betterselect.module
--- betterselect/betterselect.module	6 Jun 2008 20:24:53 -0000	1.3
+++ betterselect/betterselect.module	19 Jun 2008 03:54:59 -0000
@@ -13,7 +13,7 @@
  */
 function betterselect_elements() {
   $type = array();
-  $type['select']['#process'] = array('betterselect_process');
+  $type['select']['#process'] = array('betterselect_process' => array());
 
   return $type;
 }
@@ -21,7 +21,7 @@ function betterselect_elements() {
 /**
  * Form process callback; translates multiselect fields into checkboxes.
  */
-function betterselect_process($element, $edit, $form_state, $complete_form) {
+function betterselect_process($element) {
   if (isset($element['#multiple']) && $element['#multiple'] == TRUE) {
     // Remove the silly "None" option.
     if (!$element['#required']) {
@@ -78,26 +78,37 @@ function betterselect_process($element, 
 /**
  * Implementation of hook_form_alter().
  */
-function betterselect_form_alter(&$form, $form_state, $form_id) {
+function betterselect_form_alter($form_id, &$form) {
   // Taxonomy stores its #options in a weird way; we need to move it back once we're done.
   if ($form['#id'] == 'node-form' && isset($form['taxonomy'])) {
-    $form['#submit'] = array('betterselect_taxonomy_from_checkboxes');
+    // Keep track of which vocabularies support multiples so we can process them properly.
+    $vocabularies = array();
+    foreach ($form['taxonomy'] as $vid => $vocabulary) {
+      if ($vocabulary['#multiple']) {
+        $vocabularies[] = $vid;
+      }
+    }
+    
+    if (!empty($vocabularies)) {
+      $form['#submit']['betterselect_taxonomy_from_checkboxes'] = array($vocabularies);
+    }
   }
 }
 
 /**
  * Restore submitted checkbox values back to format Taxonomy module expects.
  */
-function betterselect_taxonomy_from_checkboxes($form, &$form_state) {
-  foreach ($form_state['values']['taxonomy'] as $index => $properties) {
-    if (is_numeric($index) && $form['taxonomy'][$index]['#multiple']) {
+function betterselect_taxonomy_from_checkboxes($form_id, $form_values, $vocabularies) {
+  foreach ($form_values['taxonomy'] as $vid => $properties) {
+    // Only process vocabularies that support multiples.
+    if (is_numeric($vid) && in_array($vid, $vocabularies)) {
       $options = array();
-      foreach ($form_state['values']['taxonomy'][$index] as $tid => $selected) {
+      foreach ($form_values['taxonomy'][$vid] as $tid => $selected) {
         if ($selected) {
           $options[$tid] = $tid;
         }
       }
-      $form_state['values']['taxonomy'][$index] = $options;
+      $form_values['taxonomy'][$vid] = $options;
     }
   }
 }
