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