From b60ed6d9a36b92610973641ba4ba5cf6bc18562e Mon Sep 17 00:00:00 2001
From: Heiko Henning <h.henning@educa.ch>
Date: Thu, 11 Nov 2010 18:18:04 +0100
Subject: [PATCH 2/2] fix up init problem

---
 tablefield.js     |   19 +++++++++++++++++++
 tablefield.module |   34 +++++++++++++---------------------
 2 files changed, 32 insertions(+), 21 deletions(-)
 create mode 100644 tablefield.js

diff --git a/tablefield.js b/tablefield.js
new file mode 100644
index 0000000..68c1f81
--- /dev/null
+++ b/tablefield.js
@@ -0,0 +1,19 @@
+tablefield_sliders = new Object();
+Drupal.behaviors.tablefield = function() {
+ for(delta in tablefield_sliders) {
+   $("#tablefield_" + delta + "_td_width_slider").slider({
+                step: 1,
+                min: 0,
+                max: 100,
+                orientation: "horizontal",
+                values: tablefield_sliders[delta],
+                change: function(event, ui) {
+                 var thisHandle = jQuery(ui.handle);
+
+                 $("input[td_width_id="+delta+"_"+thisHandle.attr("id").split("handle_")[1]+"]").val(ui.value);
+                }
+            });
+
+   delete(tablefield_sliders[delta]);
+ }
+};
\ No newline at end of file
diff --git a/tablefield.module b/tablefield.module
index 9603829..10abc50 100755
--- a/tablefield.module
+++ b/tablefield.module
@@ -370,6 +370,18 @@ function tablefield_widget(&$form, &$form_state, $field, $items, $delta = 0) {
  * Process the tablefield
  */
 function tablefield_process($element, $edit, $form_state, $form) {
+  static $js_is_ineted;
+
+  if ($js_is_ineted!==true) {
+   // Enable JQuery plugins
+   $jq_ui_files = array('ui.slider');
+   jquery_ui_add($jq_ui_files);
+   $path = drupal_get_path('module', 'tablefield');
+   drupal_add_js($path .'/tablefield.js');
+
+   $js_is_ineted = true;
+  }
+
   $type_of_header = 'top';
   $td_width = array();
   
@@ -457,11 +469,6 @@ function tablefield_process($element, $edit, $form_state, $form) {
     '#value' => t('Drag slider to define column width.'),
   );
 
-
-  // Enable JQuery plugins
-  $jq_ui_files = array('ui.slider');
-  jquery_ui_add($jq_ui_files);
-
   for($i=0; $i<($count_cols-1) ; $i++) {
    $element['tablefield']['td_width'][$i] = array(
     '#type'  => 'hidden',
@@ -482,22 +489,7 @@ function tablefield_process($element, $edit, $form_state, $form) {
   $element['tablefield']['td_width_js'] = array(
       '#type'  => 'markup',
       '#title' => t('Slide to define row width'),
-      '#value' => '<script type="text/javascript">
-      Drupal.behaviors.tablefield = function() {
-        $("#tablefield_' . $delta . '_td_width_slider").slider({
-                step: 1,
-                min: 0,
-                max: 100,
-                orientation: "horizontal",
-                values: ['.implode(',', $td_width).'],
-                change: function(event, ui) {
-                 var thisHandle = jQuery(ui.handle);
-
-                 $("input[td_width_id='.$delta.'_"+thisHandle.attr("id").split("handle_")[1]+"]").val(ui.value);
-                }
-            });
-      };
-    </script>'
+      '#value' => '<script type="text/javascript"> tablefield_sliders['.$delta.'] = ['.implode(',', $td_width).']; </script>'
   );
 
   $element['tablefield']['hl_2'] = array(
-- 
1.7.0.4

