Index: conditional_fields.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/conditional_fields/conditional_fields.module,v
retrieving revision 1.1.2.22.2.7
diff -u -p -r1.1.2.22.2.7 conditional_fields.module
--- conditional_fields.module	22 Dec 2008 03:39:03 -0000	1.1.2.22.2.7
+++ conditional_fields.module	23 Dec 2008 19:32:34 -0000
@@ -257,7 +257,7 @@ function conditional_fields_form_alter(&
       break;
     case $form['type']['#value'] . '_node_form':
       // When previewing, the form is called twice, and this is bad for drupal_add_js. See issue #325448, comment 11
-      if ($form_state['submitted'] == FALSE && empty($form_state['post']) || $form_state['submitted'] == TRUE && $form_state['node_preview']) {
+      if ($form_state['submitted'] == FALSE && empty($form_state['post']) || $form_state['submitted'] == TRUE && $form_state['node_preview'] || $form_state['submitted'] == FALSE && !empty($form_state['post']) && in_array($form_state['post']['op'], array('Save', 'Preview'))) {
         conditional_fields_node_editing_form($form);
       }
       break;
@@ -617,7 +617,6 @@ function conditional_fields_unset_requir
  * Validation for node editing form.
  */
 function conditional_fields_node_editing_form_validate($form, $form_state) {
-  
   // When previewing, hook_form_alter is not called, so we need to add js here too
   if ($form['#conditional_fields']['settings']['ui_settings']) {
     conditional_fields_add_js($form['#conditional_fields']['settings']);
@@ -813,8 +812,19 @@ function conditional_fields_default_valu
  * Adds javascript to the node editing form
  */
 function conditional_fields_add_js($settings) {
-  drupal_add_js(array('ConditionalFields' => $settings), 'setting', 'header', FALSE, TRUE, FALSE);
-  drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js', 'module', 'header', FALSE, TRUE, FALSE);
+  static $included_settings = array(); // Holds our array of unique settings hashes
+  $settings_hash = md5(serialize($settings));
+  
+  // Only add js if it has not been added yet
+  if (!count($included_settings) || count($included_settings) && !in_array($settings_hash, $included_settings)) {
+    $included_settings[] = $settings_hash;
+
+    drupal_add_js(array('ConditionalFields' => $settings), 'setting', 'header', FALSE, TRUE, FALSE);
+    
+    // This file should only need to be added once
+    if (count($included_settings) == 1)
+      drupal_add_js(drupal_get_path('module', 'conditional_fields') . '/conditional_fields.js', 'module', 'header', FALSE, TRUE, FALSE);
+  }
 }
 
 /*
