PageSourceSearch

https://www.wvhedw.nl/wp-content/plugins/slider-wd/js/jquery.featureCarouselslider.js?ver=2.2.32

js wvhedw.nl collected 2026-10-02 23:36:12 UTC 27,714 bytes, 622 lines download raw bytes

1(function($){
2  $.fn.featureCarouselslider = function (options) {
3    // Adds support for multiple carousels on one page.
4    if (this.length > 1) {
5      this.each(function() {
6        $(this).featureCarouselslider(options);
7      });
8      return this;
9    }
10
11    // override the default options with user defined options
12    options = $.extend({}, $.fn.featureCarouselslider.defaults, options || {});
13
14    /* These are univeral values that are used throughout the plugin. Do not modify them
15     * unless you know what you're doing. Most of them feed off the options
16     * so most customization can be achieved by modifying the options values 
17    */
18    var pluginData = {      
19     
20      containerWidth:       0,
21      containerHeight:      0,
22      largeFeatureWidth:    0,
23      largeFeatureHeight:   0,
24      smallFeatureHeight:   0,
25      smallFeatureWidth:    0,       
26      totalFeatureCount:    $(this).children().first().children().first().children("span").length,
27      featuresContainer:    $(this),
28      featuresArray:        [],
29      containerIDTag:       "." + $(this).attr("id"),
30      timeoutVar:           null,
31      rotationsRemaining:   0,
32      itemsToAnimate:       0,
33      borderWidth:		      0,     
34      autoTime:             0   
35    };
36
37    /**
38     * Function to preload the images in the carousel if desired.
39     * This is not recommended if there are a lot of images in the carousel because
40     * it may take a while. Functionality does not depend on preloading the images 
41     */ 
42    var preload = function(callback) {
43      callback(); 
44    }
45 
46    // Gets the feature container based on the number
47    var getContainer = function(featureNum) {
48      return pluginData.featuresArray[featureNum-1];
49    }
50
51    // get previous feature number
52    var getPreviousNum = function(num) {
53      if ((num - 1) == 0) {
54        return pluginData.totalFeatureCount;
55      } else {
56        return num - 1;
57      }
58    }
59
60    // get next feature number
61    var getNextNum = function(num) {
62      if ((num + 1) > pluginData.totalFeatureCount) {
63        return 1;
64      } else {
65        return num + 1;
66      }
67    }
68
69    /**
70     * Because there are several options the user can set for the width and height
71     * of the feature images, this function is used to determine which options were set
72     * and to set the appropriate dimensions used for a small and large feature	
73     */
74    var setupFeatureDimensions = function() {
75      // Set the height and width of the entire carousel container
76      options.containerWidth = pluginData.featuresContainer.width();
77      options.containerHeight = pluginData.featuresContainer.height();
78    
79      // Grab the first image for reference
80      var $firstFeatureImage = $(pluginData.containerIDTag).find(".wds_slider_car_image" + options.wds_number + ":first");
81 
82      // Large Feature Width
83      if (options.largeFeatureWidth > 1) {
84        pluginData.largeFeatureWidth = options.largeFeatureWidth;
85      }
86	    else if (options.largeFeatureWidth > 0 && options.largeFeatureWidth < 1) {
87        pluginData.largeFeatureWidth = $firstFeatureImage.width() * options.largeFeatureWidth;
88      }
89      else {
90        pluginData.largeFeatureWidth = $firstFeatureImage.outerWidth();
91      }
92      // Large Feature Height
93      if (options.largeFeatureHeight > 1) {
94        pluginData.largeFeatureHeight = options.largeFeatureHeight;
95      }
96      else if (options.largeFeatureHeight > 0 && options.largeFeatureHeight < 1) {
97        pluginData.largeFeatureHeight = $firstFeatureImage.height() * options.largeFeatureHeight;
98      }
99      else {
100        pluginData.largeFeatureHeight = $firstFeatureImage.outerHeight();
101      }
102    }
103
104    /**
105     * Function to take care of setting up various aspects of the carousel,
106     * most importantly the default positions for the features	
107     */
108    var setupCarousel = function() {
109      // Set the total feature count to the amount the user wanted to cutoff
110      if (options.displayCutoff > 0 && options.displayCutoff < pluginData.totalFeatureCount) {
111        pluginData.totalFeatureCount = options.displayCutoff;
112      }
113
114      // Fill in the features array .
115      pluginData.featuresContainer.find(".wds_slider_car_image" + options.wds_number).each(function (index) {
116        if (index < pluginData.totalFeatureCount) {
117          pluginData.featuresArray[index] = $(this);
118        }
119      });
120 
121      // Determine the total border width around the feature if there is one.
122      if (pluginData.featuresContainer.find(".wds_slider_car_image" + options.wds_number).first().css("borderLeftWidth") != "medium") {
123        pluginData.borderWidth = parseInt(pluginData.featuresContainer.find(".wds_slider_car_image" + options.wds_number).first().css("borderLeftWidth"))*2;
124      }
125      // Place all the features in a center hidden position to start off.
126      if (options.imagecount != 1) {
127        pluginData.featuresContainer
128        .find(".wds_slider_car_image" + options.wds_number).each(function () {
129          // Center all the features in the middle and hide them.
130          jQuery(this).css({
131            'left': (options.containerWidth / 2) - (options.largeFeatureWidth * options.smallFeaturePar / 2) - (pluginData.borderWidth / 2) - options.parf,
132            'width': options.largeFeatureWidth * options.smallFeaturePar * options.parametr / 100,
133            'height': options.largeFeatureHeight * options.smallFeaturePar * options.parametr / 100,
134            'top': options.smallFeatureOffset + options.topPadding + options.parf,
135            'opacity': 0,
136            'filter': 'Alpha(opacity=0)'
137          });
138        });
139      } 
140      else {
141        pluginData.featuresContainer
142        .find(".wds_slider_car_image" + options.wds_number).each(function () {
143          // Center all the features in the middle and hide them.
144          jQuery(this).css({
145            'left': 0,
146            'width': options.largeFeatureWidth * options.smallFeaturePar,
147            'height': options.largeFeatureHeight * options.smallFeaturePar,
148            'top': 0,
149            'opacity': 0,
150            'filter': 'Alpha(opacity=0)'
151          });
152        });
153      }        
154      // Set position to relative of captions if displaying below image.
155      if (options.captionBelow) {
156        pluginData.featuresContainer.find(".wds_slider_car_image" + options.wds_number).css('position','absolute');
157      }
158
159      // Figure out number of items that will rotate each time.
160      if (pluginData.totalFeatureCount < options.imagecount) {
161        pluginData.itemsToAnimate = pluginData.totalFeatureCount;  
162      }  else {
163        pluginData.itemsToAnimate = options.imagecount + 2 ;
164      }       
165    }
166
167    /**
168     * Here all the position data is set for the features.
169     * This is an important part of the carousel to keep track of where
170     * each feature within the carousel is	 
171     */
172    var setupFeaturePositions = function() {
173      // give all features a set number that won't change so they remember their
174      // original order 
175      $.each(pluginData.featuresArray, function (i) {
176        $(this).data('setPosition', i + 1);
177      });
178
179      // Go back one - This is done because we call the move function right away, which
180      // shifts everything to the right. So we set the current center back one, so that
181      // it displays in the center when that happens
182      var oneBeforeStarting = getPreviousNum(window["wds_currentCenterNum" +options.wds_number]);
183
184      window["wds_currentCenterNum" +options.wds_number] = oneBeforeStarting;
185
186      // Center feature will be position 1
187      var $centerFeature = getContainer(oneBeforeStarting);
188      $centerFeature.data('position', 1);
189
190      // Everything before that center feature...
191      var $prevFeatures = $centerFeature.prevAll();
192      $prevFeatures.each(function (i) {
193        $(this).data('position', (pluginData.totalFeatureCount - i
193));
194      });
195        
196      // And everything after that center feature...
197      var $nextFeatures = $centerFeature.nextAll();
198      $nextFeatures.each(function (i) {
199        if ($(this).data('setPosition') != undefined) {
200          $(this).data('position',(i + 2));
201        }
202      });
203    }
204
205    /**
206     * This function will set the autoplay for the carousel to
207     * automatically rotate it given the time in the options
208     * pass in TRUE to just clear the timer
209     */
210    var setTimer = function(stop) {
211      return;
212      // clear the timeout var if it exists
213      clearTimeout(pluginData.timeoutVar);
214
215      // set interval for moving if autoplay is set
216      if (!stop && options.autoPlay != 0) {
217        var autoTime = (Math.abs(options.autoPlay) < options.carouselSpeed) ? options.carouselSpeed : Math.abs(options.autoPlay);
218        pluginData.timeoutVar = setTimeout(function () {
219          (options.autoPlay > 0) ? initiateMove(true,1) : initiateMove(false,1);
220        }, autoTime);
221      }
222    }
223 
224    // This is a helper function for the animateFeature function that
225    // will update the positions of all the features based on the direction
226    var rotatePositions = function(direction) {
227      $.each(pluginData.featuresArray, function () {
228        var newPos;
229        if (direction == false) {
230          newPos = getNextNum($(this).data().position);
231        } else {
232          newPos = getPreviousNum($(this).data().position);
233        }
234
235        $(this).data('position',newPos);
236      });
237    }
238
239    /* Animate the given feature to the given location. Valid locations are "left", "right", "center", "hidden".*/
240    var animateFeature = function($feature, direction, onload) {
241      if (typeof onload == "undefined") {
242        var onload = 0;
243      }
244      $feature.find(".wds_slideshow_image_" + options.wds_number).children().each(function() {
245        jQuery(this).hide();
246      });
247      $feature.find(".wds_video_hide" + options.wds_number).each(function() {
248        jQuery(this).show();
249      });
250      var new_width, new_height, new_top, new_left, new_zindex, new_padding, new_fade, new_fade1, new_left1;
251      // Determine the old and new positions of the feature.
252      var oldPosition = $feature.data('position');
253      var newPosition;
254      if (direction == true) {
255        newPosition = getPreviousNum(oldPosition);
256      }
257      else {
258        newPosition = getNextNum(oldPosition);
259      }
260      // Callback for moving out of center pos.
261      if (oldPosition == 1) {
262        options.leavingCenter($feature);
263      }
264      // Caculate new new css values depending on where the feature will be located center.
265      if (newPosition == 1) {
266        new_width = pluginData.largeFeatureWidth;        
267        new_height = pluginData.largeFeatureHeight;
268        new_top =(options.containerHeight / 2 - new_height / 2 );
269        new_zindex = $feature.css("z-index");
270        new_left = (options.containerWidth / 2) - (pluginData.largeFeatureWidth / 2) - (pluginData.borderWidth / 2);
271        new_fade = 1.0;
272        new_fade1 = 100;
273        new_f = "translateZ(0px) rotateY(0deg)";
274        new_gray = "grayscale(0%)";
275        $feature.find(".wds_slideshow_image_" + options.wds_number).children().each(function() {
276          jQuery(this).show();
277        });
278        $feature.find(".wds_video_hide" + options.wds_number).each(function() {
279          jQuery(this).hide();
280        });
281      }
282      else {
283        // Left.
284        if (newPosition <= pluginData.totalFeatureCount && newPosition > pluginData.totalFeatureCount - options.imagecount / 2 + 1) {
285          new_width = (pluginData.largeFeatureWidth * Math.pow(options.smallFeaturePar, pluginData.totalFeatureCount - newPosition + 1));      
286          new_height = (pluginData.largeFeatureHeight * Math.pow(options.smallFeaturePar, pluginData.totalFeatureCount - newPosition + 1));
287          new_top = (options.containerHeight/ 2  - new_height / 2 ) ;         
288          new_fade = 1 - options.carousel_transparency / 100;        
289          new_fade1 = 100; 
290          new_f = "translateX("+ (-1) * options.parametr  * options.carousel_degree  +"px) translateZ("+ (-1) *options.parametr * options.carousel_degree + "px) rotateY("+ options.carousel_degree +"deg)";
291          new_gray = "grayscale("+ options.carousel_grayscale +"%)";
292          if(options.fit_containerWidth == false && options.smallFeaturePar < 1){
293            new_left = (options.containerWidth / 2 - pluginData.largeFeatureWidth / 2)-(pluginData.largeFeatureWidth * (1 - options.smallFeaturePar) * options.smallFeaturePar * (pluginData.totalFeatureCount - newPosition + 1));             
294          } else if(options.fit_containerWidth == false && options.smallFeaturePar == 1){
295            new_left = (options.containerWidth / 2 - pluginData.largeFeatureWidth / 2)-(pluginData.largeFeatureWidth * ( options.smallFeaturePar) * options.smallFeaturePar * (pluginData.totalFeatureCount - newPosition + 1));             
296          } else {
297              new_left1 = (options.containerWidth / 2 - pluginData.largeFeatureWidth / 2) / (options.imagecount / 2 - 0.5);
298              new_left =  ((options.containerWidth / 2) - (pluginData.largeFeatureWidth / 2) - (pluginData.borderWidth / 2)) - (new_left1 * (pluginData.totalFeatureCount - newPosition+1  ));             
299          }                        
300        }
301        // Right.
302        else if (newPosition >
302= 2 && newPosition <= options.imagecount / 2 + 1) {
303          new_width = (pluginData.largeFeatureWidth * Math.pow(options.smallFeaturePar,newPosition - 1));
304          new_height =( pluginData.largeFeatureHeight * Math.pow(options.smallFeaturePar, newPosition - 1));
305          new_top = ( options.containerHeight / 2 - new_height / 2);
306          new_fade = 1 - options.carousel_transparency / 100;
307          new_fade1 = 100;
308          new_f = "translateX("+ options.parametr * options.carousel_degree +"px) translateZ("+ (-1) * options.parametr *options.carousel_degree +"px) rotateY("+ (-1) * options.carousel_degree +"deg)" ;
309          new_gray = "grayscale("+ options.carousel_grayscale + "%)";
310          if (options.fit_containerWidth == false && options.smallFeaturePar < 1) {
311            new_left = (options.containerWidth / 2 + pluginData.largeFeatureWidth / 2) + (pluginData.largeFeatureWidth * options.smallFeaturePar * (1 - options.smallFeaturePar) * (newPosition - 1)) - new_width;
312          } else if (options.fit_containerWidth == false && options.smallFeaturePar == 1) {
313            new_left = (options.containerWidth / 2 + pluginData.largeFeatureWidth / 2) + (pluginData.largeFeatureWidth * options.smallFeaturePar * (options.smallFeaturePar) * (newPosition - 1)) - new_width;
314          } else {
315            new_left1 = ( (options.containerWidth / 2 -pluginData.largeFeatureWidth / 2)) / (options.imagecount / 2 - 0.5);
316            new_left = (options.containerWidth / 2 + pluginData.largeFeatureWidth / 2) - new_width + (new_left1 * (newPosition - 1));
317          }
318        }
319        // Hidden.
320        else {
321          new_left = (options.containerWidth / 2) - (pluginData.largeFeatureWidth * options.smallFeaturePar / 2) - (pluginData.borderWidth / 2);
322          new_fade = 0;
323          new_fade1 = 0;
324        }
325      }
326      // This code block takes care of hiding the feature information if the feature is leaving the center.
327      if (oldPosition == 1) {
328        // Slide up the story information.
329        $feature.find(".wds_slider_car_image" + options.wds_number).hide();
330      }
331
332      // Animate the feature div to its new location.
333      jQuery(".wds_slide_bg_" + options.wds_number).css('perspective', 1000);
334      jQuery(".wds_slide_" + options.wds_number).css({"transformStyle":"preserve-3d"});
335      $feature.css({
336        "-webkit-transform":new_f,
337        "-moz-transform:":new_f,
338        "-ms-transform":new_f,
339        "-o-transform":new_f,
340        "transform":new_f,
341        "-webkit-filter":new_gray,
342        "-moz-filter":new_gray,
343        "-ms-filter":new_gray,
344        "-o-filter":new_gray,
345        "filter":new_gray,
346        "progid":"DXImageTransform.Microsoft.BasicImage(grayscale=1)",}),
347      $feature
348        .animate(
349          {
350            width: new_width,
351            height: new_height,
352            top: new_top,
353            left: new_left,                      
354            opacity: new_fade,
355            filter: new_fade1
356          },
357          onload ? 0 : options.carouselSpeed,
358          options.animationEasing,
359          function () {
360            // Take feature info out of hiding if new position is center
361            if (newPosition == 1) {
362              // need to set the height to auto to accomodate caption if displayed below image
363              if (options.captionBelow)
364               $feature.css('height','auto');
365              // fade in the feature information
366              $feature.find(".wds_slider_car_image" + options.wds_number)
367                .fadeTo("fast",0.85);
368              // callback for moved to center
369              options.movedToCenter($feature);
370            }
371            // decrement the animation queue
372            pluginData.rotationsRemaining = pluginData.rotationsRemaining - 1;
373            // have to change the z-index after the animation is done
374            $feature.css("z-index", new_zindex);
375            // change trackers if using them
376            if (options.trackerIndividual || options.trackerSummation) {
377              // just update the tracker once; once the new center feature has arrived in center
378              if (newPosition == 1) {
379                // figure out what item was just in the center, and what item is now in the center
380                var newCenterItemNum = pluginData.featuresContainer.find(".wds_slider_car_image" + options.wds_number).index($feature) + 1;
381                var oldCenterItemNum;
382                if (direction == false) {
383                  oldCenterItemNum = getNextNum(newCenterItemNum);
384                }
385                else {
386                  oldCenterItemNum = getPreviousNum(newCenterItemNum);
387                }
388              }
389            }
390
391            // did all the the animations finish yet?
392            var divide = pluginData.rotationsRemaining / pluginData.itemsToAnimate;
393            if (divide % 1 == 0) {
394              // Set moving to false.
395              window["wds_currentlyMoving" +options.wds_number]   = false;
396              // Change positions for all items.
397              rotatePositions(direction);
398
399              // Move carousel again if queue is not empty.
400              if (pluginData.rotationsRemaining > 0)
401                move(direction);
402            }
403            // Reset timer and auto rotate again.
404            setTimer(false); 
405          }
406        )
407        .end();
408    }
409
410    /* Move the carousel to the left or to the right. The features that
411     * will move into the four positions are calculated and then animated
412     * rotate to the RIGHT when direction is TRUE and
413     * rotate to the LEFT when direction is FALSE.
414     */
415    var move = function(direction, onload) {
416      // Set the carousel to currently moving
417      window["wds_currentlyMoving" + options.wds_number]  = true;
418      // Obtain the new feature positions based on the direction that the carousel is moving
419      var $newCenter, $newLefts, $newRights, $newHidden, $curNum;
420
421      if (direction == true) {
422        // Shift features to the left
423        $newCenter = getContainer(getNextNum(window["wds_currentCenterNum" +options.wds_number]));
424        $newLefts = [];
425        $curNum = window["wds_currentCenterNum" +options.wds_number];        
426        for (var i = 1; i <= options.imagecount / 2 + 1; ++i) {
427          $newLefts.push(getContainer($curNum));
428          $curNum = getPreviousNum($curNum);
429        }
430        $newRights = [];
431        $curNum = getNextNum(window["wds_currentCenterNum" + options.wds_number]);
432        for (var i = 1; i <= options.imagecount / 2 + 1; ++i) {
433          $curNum = getNextNum($curNum);
434          $newRights.push(getContainer($curNum));
435        }
436        window["wds_currentCenterNum" + options.wds_number] = getNextNum(window["wds_currentCenterNum" + options.wds_number]);
437      }
438      else {
439        $newCenter = getContainer(getPreviousNum(window["wds_currentCenterNum" +options.wds_number]));
440        $newLefts = [];
441        $curNum = getPreviousNum(window["wds_currentCenterNum" +options.wds_number]);        
442        for (var i = 1; i <= options.imagecount / 2 +1; ++i) {
443          $curNum = getPreviousNum($curNum);   
444          $newLefts.push(getContainer($curNum));
445        }
446        $newRights = [];
447        $curNum = window["wds_currentCenterNum" + options.wds_number];
448        for (var i = 1; i <= options.imagecount / 2 + 1; ++i) {
449          $newRights.push(getContainer($curNum));
450          $curNum = getNextNum($curNum);
451        }
452        window["wds_currentCenterNum" +options.wds_number] = getPreviousNum(window["wds_currentCenterNum" + options.wds_number]);
453      }
454      // Animate the features into their new positions.
455      for (i = 0; i < $newLefts.length; i++) {
456        $newLefts[i].css("z-index", $newLefts.length - i + 3);
457        animateFeature($newLefts[i], direction, onload);
458      }
459      $newCenter.css("z-index", Math.max($newLefts.length, $newRights.length) + 4);
460      animateFeature($newCenter, direction, onload);
461      for (i = 0; i < $newRights.length; i++) {
462        $newRights[i].css("z-index", $newRights.length - i + 3);
463        animateFeature($newRights[i], direction, onload);
464      }
465    }
466
467    // This is used to relegate carousel movement throughout the plugin.
468    // It will only initiate a move if the carousel isn't currently moving.
469    // It will set the animation queue to the number of rotations given.
470    var initiateMove = function(direction, rotations, onload) {
471      if (typeof onload == "undefined") {
472        var onload = 0;
473      }
474      if (window["wds_currentlyMoving" +options.wds_number]  == false) {
475        var queue = rotations * pluginData.itemsToAnimate ;
476        pluginData.rotationsRemaining = queue ;      
477        window["wds_set_filmstrip_class_" + options.wds_number]();
478        window["wds_set_dots_class_" + options.wds_number]();
479        move(direction, onload);
480      }
481    }
482
483    // Add event listener to all clicks within the features container
484    // This is done to disable any links that aren't within the center feature
485    $("a", pluginData.containerIDTag).on("click", function (event) {
486      // travel up to the container
487      var $parents = $(this).parentsUntil(pluginData.containerIDTag);
488      // now check each of the feature divs within it
489      $parents.each(function () {
490        var position = $(this).data('position');
491        // if there are more than just feature divs within the container, they will
492        // not have a position and it may come back as undefined. Throw these out
493        if (position != undefined) {
494          // if any of the links on a feature OTHER THAN the center feature were clicked,
495          // initiate a carousel move but then throw the link action away
496          if (position != 1) {
497            if (position == pluginData.totalFeatureCount) {
498              initiateMove(false,1);
499            } else if (position == 2) {
500              initiateMove(true, 1);
501            }
502            event.preventDefault();
503            return false;
504          // if the position WAS the center (i.e. 1), fire callback
505          } else {
506            options.clickedCenter($(this));
507          }
508        }
509      });
510    });
511
512    // Public functions.
513    this.initialize = function () {
514      jQuery("#wds_container2_" + options.wds_number).css({visibility: 'visible'});
515      jQuery(".wds_loading").hide();
516      // Call the preloader and pass in our callback, which is just a slew of function calls
517      // that should only be executed after the images have been loaded
518      preload(function () {
519        setupFeatureDimensions();
520        setupCarousel();
521        if (window["wds_currentlyMoving" +options.wds_number]  == false ) {
522          setupFeaturePositions();
523          initiateMove(true, 1, 1);
524        }
525      }); 
526      return this;
527    };
528
529    this.next = function() {
530      initiateMove(true, 1);
531    }
532    this.prev = function () {
533      initiateMove(false, 1);
534    }
535    this.shift = function (that) {
536      var position = $(that).data('position');
537      if (position == 1) {
538        return;
539      }
540      if (position > pluginData.totalFeatureCount / 2 + 1) {
541        initiateMove(false, pluginData.totalFeatureCount - position + 1);
542        options.carouselSpeed = 400;
543        options.animationEasing;
544      }
545      else {
546        initiateMove(true, position - 1);
547        options.carouselSpeed = 400;
548        options.animationEasing;
549      }
550    }
551    this.pause = function () {
552      options.autoPlay = false;
553      setTimer(true);
554    }
555    this.start = function () {
556      options.autoPlay = options.interval;
557      setTimer(false);
558    }
559    // Initialize the plugin.
560    return this.initialize();
561  };
562
563  $.fn.featureCarouselslider.defaults = {
564    // If zero, take original width and height of image
565    // If between 0 and 1, multiply by original width and height (acts as a percentage)
566    // If greater than one, use as a forced width/height for all of the images
567    largeFeatureWidth :   0,
568    largeFeatureHeight:		0,
569    containerWidth:       0,
570    containerHeight:      0,
571    fit_containerWidth:   0,
572    wds_number:           0,
573    // how much to pad the top of the carousel
574    topPadding:           20,
575    // spacing between the sides of the container
576    sidePadding:          50,
577    // the additional offset to pad the side features from the top of the carousel
578    smallFeatureOffset:		50,
579    //smallFeature parameters
580    smallFeaturePar:      0,
581    // indicates which feature to start the carousel at
582    startingFeature:      1,
583    // speed in milliseconds it takes to rotate the carousel
584    carouselSpeed:        400,
585    // time in milliseconds to set interval to autorotate the carousel
586    // set to zero to disable it, negative to go left
587    autoPlay:             4000,
588    carousel_degree: 50,
589    carousel_grayscale: 0,
590    carousel_transparency: 50,
591    interval:             true,
592    //imagecounts
593    imagecount:           7,
594    // with autoplay enabled, set this option to true to have the carousel pause rotating
595    // when a user hovers over any feature
596    pauseOnHover:         true,
597    // with autoplay enabled, set this option to completely stop the autorotate functionality
598    stopOnHover:          false,
599    // numbered blips can appear and be used to track the currently centered feature, as well as 
600    // allow the user to click a number to move to that feature. Set to false to not process these at all
601    // and true to process and display them//and true to process and display them
602    trackerIndividual:    true,
603    // a summation of the features can also be used to display an "x Of y" style of tracking
604    // this can be combined with the above option as well
605    trackerSummation:     true,
606    // Will only display this many features in the carousel
607    // set to zero to disable
608    displayCutoff:        0,
609    data:                 "",
610    // an easing can be specified for the animation of the carousel
611    animationEasing:      'swing',
612    // display captions below the image instead of on top
613    captionBelow:         false,
614    parf:                 0,
615    // callback function for when a feature has animated to the center
616    movedToCenter:        $.noop,
617    // callback function for when feature left center
618    leavingCenter:        $.noop,
619    // callback function for when center feature was clicked
620    clickedCenter:        $.noop
621  };
622})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.