Index: jcarousel.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/jcarousel/Attic/jcarousel.js,v
retrieving revision 1.1.2.2.2.8
diff -u -r1.1.2.2.2.8 jcarousel.js
--- jcarousel.js	5 Nov 2009 23:11:47 -0000	1.1.2.2.2.8
+++ jcarousel.js	5 Nov 2009 23:48:01 -0000
@@ -14,23 +14,23 @@
 
     // Convert any callback arguments from strings to function calls.
     var callbacks = ['initCallback', 'itemLoadCallback', 'itemFirstInCallback', 'itemFirstOutCallback', 'itemLastOutCallback', 'itemLastInCallback', 'itemVisibleInCallback', 'itemVisibleOutCallback', 'buttonNextCallback', 'buttonPrevCallback'];
-    for (callback in callbacks) {
-      var callbackname = callbacks[callback];
-      // The callback depends on its type.
-      if (typeof(options[callbackname]) == 'string') {
-        // Strings are evaluated as functions.
-        options[callbackname] = eval(options[callbackname]);
-      }
-      else if (typeof(options[callbackname]) == 'object' && (options[callbackname] instanceof Array)) {
-        // Arrays are evaluated as a list of callback registrations. This is because callbacks
-        // like itemVisibleInCallback can either be a function call back, or an array of callbacks
-        // consisting of both onBeforeAnimation and onAfterAnimation.
-        for (subcallback in options[callbackname]) {
-          var name = options[callbackname][subcallback];
-          options[callbackname][name] = eval(options[callbackname][name]);
+    jQuery.each(callbacks, function(callback, callbackname) {
+      if (options[callbackname] || false) {
+        // The callback depends on its type.
+        if (typeof(options[callbackname]) == 'string') {
+          // Strings are evaluated as functions.
+          options[callbackname] = eval(options[callbackname]);
+        }
+        else if (typeof(options[callbackname]) == 'object' || (options[callbackname] instanceof Array)) {
+          // Arrays are evaluated as a list of callback registrations. This is because callbacks
+          // like itemVisibleInCallback can either be a function call back, or an array of callbacks
+          // consisting of both onBeforeAnimation and onAfterAnimation.
+          jQuery.each(options[callbackname], function(subcallbackname, subcallback) {
+            options[callbackname][subcallbackname] = eval(subcallback);
+          });
         }
       }
-    }
+    });
 
     // Prepare the skin name to be added as a class name.
     var skin = options['skin'];
