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 var multiplier = Math.cos(options.carousel_degree / 180* Math.PI); 265 // Caculate new new css values depending on where the feature will be located center. 266 if (newPosition == 1) { 267 new_width = pluginData.largeFeatureWidth; 268 new_height = pluginData.largeFeatureHeight; 269 new_top =(options.containerHeight / 2 - new_height / 2 ); 270 new_zindex = $feature.css("z-index"); 271 new_left = (options.containerWidth / 2) - (pluginData.largeFeatureWidth / 2) - (pluginData.borderWidth / 2); 272 new_fade = 1.0; 273 new_fade1 = 100; 274 new_f = "translateZ(0px) rotateY(0deg)"; 275 new_gray = "grayscale(0%)"; 276 $feature.find(".wds_slideshow_image_" + options.wds_number).children().each(function() { 277 jQuery(this).show(); 278 }); 279 $feature.find(".wds_video_hide" + options.wds_number).each(function() { 280 jQuery(this).hide(); 281 }); 282 } 283 else { 284 // Left. 285 if (newPosition <= pluginData.totalFeatureCount && newPosition > pluginData.totalFeatureCount - options.imagecount / 2 + 1) { 286 new_width = (pluginData.largeFeatureWidth * Math.pow(options.smallFeaturePar, pluginData.totalFeatureCount - newPosition + 1)); 287 new_height = (pluginData.largeFeatureHeight * Math.pow(options.smallFeaturePar, pluginData.totalFeatureCount - newPosition + 1)); 288 new_top = (options.containerHeight/ 2 - new_height / 2 ) ; 289 new_fade = 1 - options.carousel_transparency / 100; 290 new_fade1 = 100; 291 new_f = "translateX("+ (-1) * options.parametr * Math.abs(options.carousel_degree) / multiplier +"px) translateZ("+ (-1) *options.parametr / multiplier * 2 * Math.abs(options.carousel_degree) + "px) rotateY("+ options.carousel_degree +"deg)"; 292 new_gray = "grayscale("+ options.carousel_grayscale +"%)"; 293 if(options.fit_containerWidth == false && options.smallFeaturePar < 1){ 294 new_left = (options.containerWidth / 2 - pluginData.largeFeatureWidth / 2)-(pluginData.largeFeatureWidth * (1 - options.smallFeaturePar) * options.smallFeaturePar * (pluginData.totalFeatureCount - newPosition + 1)); 295 } else if(options.fit_containerWidth == false && options.smallFeaturePar == 1){ 296 new_left = (options.containerWidth / 2 - pluginData.largeFeatureWidth / 2)-(pluginData.largeFeatureWidth * ( options.smallFeaturePar) * options.smallFeaturePar * (pluginData.totalFeatureCount - newPosition + 1)); 297 } else { 298 new_left1 = (options.containerWidth / 2 - pluginData.largeFeatureWidth / 2) / (options.imagecount / 2 - 0.5); 299 new_left = ((options.containerWidth / 2) - (pluginData.largeFeatureWidth / 2) - (pluginData.borderWidth / 2)) - (new_left1 * (pluginData.totalFeatureCount - newPosition+1 )); 300 } 301 } 302 // Right. 303 else if (newPosition >
303= 2 && newPosition <= options.imagecount / 2 + 1) { 304 new_width = (pluginData.largeFeatureWidth * Math.pow(options.smallFeaturePar,newPosition - 1)); 305 new_height =( pluginData.largeFeatureHeight * Math.pow(options.smallFeaturePar, newPosition - 1)); 306 new_top = ( options.containerHeight / 2 - new_height / 2); 307 new_fade = 1 - options.carousel_transparency / 100; 308 new_fade1 = 100; 309 new_f = "translateX("+ options.parametr * Math.abs(options.carousel_degree) / multiplier +"px) translateZ("+ (-1) * options.parametr / multiplier * 2 * Math.abs(options.carousel_degree) +"px) rotateY("+ (-1) * options.carousel_degree +"deg)" ; 310 new_gray = "grayscale("+ options.carousel_grayscale + "%)"; 311 if (options.fit_containerWidth == false && options.smallFeaturePar < 1) { 312 new_left = (options.containerWidth / 2 + pluginData.largeFeatureWidth / 2) + (pluginData.largeFeatureWidth * options.smallFeaturePar * (1 - options.smallFeaturePar) * (newPosition - 1)) - new_width; 313 } else if (options.fit_containerWidth == false && options.smallFeaturePar == 1) { 314 new_left = (options.containerWidth / 2 + pluginData.largeFeatureWidth / 2) + (pluginData.largeFeatureWidth * options.smallFeaturePar * (options.smallFeaturePar) * (newPosition - 1)) - new_width; 315 } else { 316 new_left1 = ( (options.containerWidth / 2 -pluginData.largeFeatureWidth / 2)) / (options.imagecount / 2 - 0.5); 317 new_left = (options.containerWidth / 2 + pluginData.largeFeatureWidth / 2) - new_width + (new_left1 * (newPosition - 1)); 318 } 319 } 320 // Hidden. 321 else { 322 new_left = (options.containerWidth / 2) - (pluginData.largeFeatureWidth * options.smallFeaturePar / 2) - (pluginData.borderWidth / 2); 323 new_fade = 0; 324 new_fade1 = 0; 325 } 326 } 327 // This code block takes care of hiding the feature information if the feature is leaving the center. 328 if (oldPosition == 1) { 329 // Slide up the story information. 330 $feature.find(".wds_slider_car_image" + options.wds_number).hide(); 331 } 332 333 // Animate the feature div to its new location. 334 jQuery(".wds_slide_bg_" + options.wds_number).css('perspective', 1000); 335 jQuery(".wds_slide_container_" + options.wds_number).css({'zIndex': 99}); 336 jQuery(".wds_slide_" + options.wds_number).css({"transformStyle":"preserve-3d"}); 337 $feature.css({ 338 "-webkit-transform":new_f, 339 "-moz-transform:":new_f, 340 "-ms-transform":new_f, 341 "-o-transform":new_f, 342 "transform":new_f, 343 "-webkit-filter":new_gray, 344 "-moz-filter":new_gray, 345 "-ms-filter":new_gray, 346 "-o-filter":new_gray, 347 "filter":new_gray, 348 "progid":"DXImageTransform.Microsoft.BasicImage(grayscale=1)",}), 349 $feature 350 .animate( 351 { 352 width: new_width, 353 height: new_height, 354 top: new_top, 355 left: new_left, 356 opacity: new_fade, 357 filter: new_fade1 358 }, 359 onload ? 0 : options.carouselSpeed, 360 options.animationEasing, 361 function () { 362 // Take feature info out of hiding if new position is center 363 if (newPosition == 1) { 364 // need to set the height to auto to accomodate caption if displayed below image 365 if (options.captionBelow) 366 $feature.css('height','auto'); 367 // fade in the feature information 368 $feature.find(".wds_slider_car_image" + options.wds_number) 369 .fadeTo("fast",0.85); 370 // callback for moved to center 371 options.movedToCenter($feature); 372 } 373 // decrement the animation queue 374 pluginData.rotationsRemaining = pluginData.rotationsRemaining - 1; 375 // have to change the z-index after the animation is done 376 $feature.css("z-index", new_zindex); 377 // change trackers if using them 378 if (options.trackerIndividual || options.trackerSummation) { 379 // just update the tracker once; once the new center feature has arrived in center 380 if (newPosition == 1) { 381 // figure out what item was just in the center, and what item is now in the center 382 var newCenterItemNum = pluginData.featuresContainer.find(".wds_slider_car_image" + options.wds_number).index($feature) + 1; 383 var oldCenterItemNum; 384 if (direction == false) { 385 oldCenterItemNum = getNextNum(newCenterItemNum); 386 } 387 else { 388 oldCenterItemNum = getPreviousNum(newCenterItemNum); 389 } 390 } 391 } 392 393 // did all the the animations finish yet? 394 var divide = pluginData.rotationsRemaining / pluginData.itemsToAnimate; 395 if (divide % 1 == 0) { 396 // Set moving to false. 397 window["wds_currentlyMoving" +options.wds_number] = false;
398 // Change positions for all items. 399 rotatePositions(direction); 400 401 // Move carousel again if queue is not empty. 402 if (pluginData.rotationsRemaining > 0) 403 move(direction); 404 } 405 // Reset timer and auto rotate again. 406 setTimer(false); 407 } 408 ) 409 .end(); 410 } 411 412 /* Move the carousel to the left or to the right. The features that 413 * will move into the four positions are calculated and then animated 414 * rotate to the RIGHT when direction is TRUE and 415 * rotate to the LEFT when direction is FALSE. 416 */ 417 var move = function(direction, onload) { 418 // Set the carousel to currently moving 419 window["wds_currentlyMoving" + options.wds_number] = true; 420 // Obtain the new feature positions based on the direction that the carousel is moving 421 var $newCenter, $newLefts, $newRights, $newHidden, $curNum; 422 423 if (direction == true) { 424 // Shift features to the left 425 $newCenter = getContainer(getNextNum(window["wds_currentCenterNum" +options.wds_number])); 426 $newLefts = []; 427 $curNum = window["wds_currentCenterNum" +options.wds_number]; 428 for (var i = 1; i <= options.imagecount / 2 + 1; ++i) { 429 $newLefts.push(getContainer($curNum)); 430 $curNum = getPreviousNum($curNum); 431 } 432 $newRights = []; 433 $curNum = getNextNum(window["wds_currentCenterNum" + options.wds_number]); 434 for (var i = 1; i <= options.imagecount / 2 + 1; ++i) { 435 $curNum = getNextNum($curNum); 436 $newRights.push(getContainer($curNum)); 437 } 438 window["wds_currentCenterNum" + options.wds_number] = getNextNum(window["wds_currentCenterNum" + options.wds_number]); 439 } 440 else { 441 $newCenter = getContainer(getPreviousNum(window["wds_currentCenterNum" +options.wds_number])); 442 $newLefts = []; 443 $curNum = getPreviousNum(window["wds_currentCenterNum" +options.wds_number]); 444 for (var i = 1; i <= options.imagecount / 2 +1; ++i) { 445 $curNum = getPreviousNum($curNum); 446 $newLefts.push(getContainer($curNum)); 447 } 448 $newRights = []; 449 $curNum = window["wds_currentCenterNum" + options.wds_number]; 450 for (var i = 1; i <= options.imagecount / 2 + 1; ++i) { 451 $newRights.push(getContainer($curNum)); 452 $curNum = getNextNum($curNum); 453 } 454 window["wds_currentCenterNum" +options.wds_number] = getPreviousNum(window["wds_currentCenterNum" + options.wds_number]); 455 } 456 // Animate the features into their new positions. 457 for (i = 0; i < $newLefts.length; i++) { 458 $newLefts[i].css("z-index", $newLefts.length - i + 3); 459 animateFeature($newLefts[i], direction, onload); 460 } 461 $newCenter.css("z-index", Math.max($newLefts.length, $newRights.length) + 4); 462 animateFeature($newCenter, direction, onload); 463 for (i = 0; i < $newRights.length; i++) { 464 $newRights[i].css("z-index", $newRights.length - i + 3); 465 animateFeature($newRights[i], direction, onload); 466 } 467 } 468 469 // This is used to relegate carousel movement throughout the plugin. 470 // It will only initiate a move if the carousel isn't currently moving. 471 // It will set the animation queue to the number of rotations given. 472 var initiateMove = function(direction, rotations, onload) { 473 if (typeof onload == "undefined") { 474 var onload = 0; 475 } 476 if (window["wds_currentlyMoving" +options.wds_number] == false) { 477 var queue = rotations * pluginData.itemsToAnimate ; 478 pluginData.rotationsRemaining = queue ; 479 window["wds_set_filmstrip_class_" + options.wds_number](); 480 window["wds_set_dots_class_" + options.wds_number](); 481 move(direction, onload); 482 } 483 } 484 485 // Add event listener to all clicks within the features container 486 // This is done to disable any links that aren't within the center feature 487 $("a", pluginData.containerIDTag).on("click", function (event) { 488 // travel up to the container 489 var $parents = $(this).parentsUntil(pluginData.containerIDTag); 490 // now check each of the feature divs within it 491 $parents.each(function () { 492 var position = $(this).data('position'); 493 // if there are more than just feature divs within the container, they will 494 // not have a position and it may come back as undefined. Throw these out 495 if (position != undefined) { 496 // if any of the links on a feature OTHER THAN the center feature were clicked, 497 // initiate a carousel move but then throw the link action away 498 if (position != 1) { 499 if (position == pluginData.totalFeatureCount) { 500 initiateMove(false,1); 501 } else if (position == 2) { 502 initiateMove(true, 1); 503 } 504 event.preventDefault(); 505 return false;
506 // if the position WAS the center (i.e. 1), fire callback 507 } else { 508 options.clickedCenter($(this)); 509 } 510 } 511 }); 512 }); 513 514 // Public functions. 515 this.initialize = function () { 516 jQuery("#wds_container2_" + options.wds_number).css({visibility: 'visible'}); 517 jQuery(".wds_loading").hide(); 518 // Call the preloader and pass in our callback, which is just a slew of function calls 519 // that should only be executed after the images have been loaded 520 preload(function () { 521 setupFeatureDimensions(); 522 setupCarousel(); 523 if (window["wds_currentlyMoving" +options.wds_number] == false ) { 524 setupFeaturePositions(); 525 initiateMove(true, 1, 1); 526 } 527 }); 528 return this; 529 }; 530 531 this.next = function() { 532 initiateMove(true, 1); 533 } 534 this.prev = function () { 535 initiateMove(false, 1); 536 } 537 this.shift = function (that) { 538 var position = $(that).data('position'); 539 if (position == 1) { 540 return; 541 } 542 if (position > pluginData.totalFeatureCount / 2 + 1) { 543 initiateMove(false, pluginData.totalFeatureCount - position + 1); 544 options.carouselSpeed = 400; 545 options.animationEasing; 546 } 547 else { 548 initiateMove(true, position - 1); 549 options.carouselSpeed = 400; 550 options.animationEasing; 551 } 552 } 553 this.pause = function () { 554 options.autoPlay = false; 555 setTimer(true); 556 } 557 this.start = function () { 558 options.autoPlay = options.interval; 559 setTimer(false); 560 } 561 // Initialize the plugin. 562 return this.initialize(); 563 }; 564 565 $.fn.featureCarouselslider.defaults = { 566 // If zero, take original width and height of image 567 // If between 0 and 1, multiply by original width and height (acts as a percentage) 568 // If greater than one, use as a forced width/height for all of the images 569 largeFeatureWidth : 0, 570 largeFeatureHeight: 0, 571 containerWidth: 0, 572 containerHeight: 0, 573 fit_containerWidth: 0, 574 wds_number: 0, 575 // how much to pad the top of the carousel 576 topPadding: 20, 577 // spacing between the sides of the container 578 sidePadding: 50, 579 // the additional offset to pad the side features from the top of the carousel 580 smallFeatureOffset: 50, 581 //smallFeature parameters 582 smallFeaturePar: 0, 583 // indicates which feature to start the carousel at 584 startingFeature: 1, 585 // speed in milliseconds it takes to rotate the carousel 586 carouselSpeed: 400, 587 // time in milliseconds to set interval to autorotate the carousel 588 // set to zero to disable it, negative to go left 589 autoPlay: 4000, 590 carousel_degree: 50, 591 carousel_grayscale: 0, 592 carousel_transparency: 50, 593 interval: true, 594 //imagecounts 595 imagecount: 7, 596 // with autoplay enabled, set this option to true to have the carousel pause rotating 597 // when a user hovers over any feature 598 pauseOnHover: true, 599 // with autoplay enabled, set this option to completely stop the autorotate functionality 600 stopOnHover: false, 601 // numbered blips can appear and be used to track the currently centered feature, as well as 602 // allow the user to click a number to move to that feature. Set to false to not process these at all 603 // and true to process and display them//and true to process and display them 604 trackerIndividual: true, 605 // a summation of the features can also be used to display an "x Of y" style of tracking 606 // this can be combined with the above option as well 607 trackerSummation: true, 608 // Will only display this many features in the carousel 609 // set to zero to disable 610 displayCutoff: 0, 611 data: "", 612 // an easing can be specified for the animation of the carousel 613 animationEasing: 'swing', 614 // display captions below the image instead of on top 615 captionBelow: false, 616 parf: 0, 617 // callback function for when a feature has animated to the center 618 movedToCenter: $.noop, 619 // callback function for when feature left center 620 leavingCenter: $.noop, 621 // callback function for when center feature was clicked 622 clickedCenter: $.noop 623 }; 624})(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.