1/** 2 * 2007-2018 ETS-Soft 3 * 4 * NOTICE OF LICENSE 5 * 6 * This file is not open source! Each license that you purchased is only available for 1 wesite only. 7 * If you want to use this file on more websites (or projects), you need to purchase additional licenses. 8 * You are not allowed to redistribute, resell, lease, license, sub-license or offer our resources to any third party. 9 * 10 * DISCLAIMER 11 * 12 * Do not edit or add to this file if you wish to upgrade PrestaShop to newer 13 * versions in the future. If you wish to customize PrestaShop for your 14 * needs please contact us for extra customization service at an affordable price 15 * 16 * @author ETS-Soft <[email protected]> 17 * @copyright 2007-2018 ETS-Soft 18 * @license Valid for 1 website (or project) for each purchase of license 19 * International Registered Trademark & Property of ETS-Soft 20 */ 21(function($) { 22 var NivoSlider = function(element, options){ 23 // Defaults are below 24 var settings = $.extend({}, $.fn.nivoSlider.defaults, options); 25 26 // Useful variables. Play carefully. 27 var vars = { 28 currentSlide: 0, 29 currentImage: '', 30 totalSlides: 0, 31 running: false, 32 paused: false, 33 stop: false, 34 controlNavEl: false 35 }; 36 37 // Get this slider 38 var slider = $(element); 39 slider.data('nivo:vars', vars).addClass('nivoSlider'); 40 41 // Find our slider children 42 var kids = slider.children(); 43 kids.each(function() { 44 var child = $(this); 45 var link = ''; 46 if(!child.is('img')){ 47 if(child.is('a')){ 48 child.addClass('nivo-imageLink'); 49 link = child; 50 } 51 child = child.find('img:first'); 52 } 53 // Get img width & height 54 var childWidth = (childWidth === 0) ? child.attr('width') : child.width(), 55 childHeight = (childHeight === 0) ? child.attr('height') : child.height(); 56 57 if(link !== ''){ 58 link.css('display','none'); 59 } 60 child.css('display','none'); 61 vars.totalSlides++; 62 }); 63 64 // If randomStart 65 if(settings.randomStart){ 66 settings.startSlide = Math.floor(Math.random() * vars.totalSlides); 67 } 68 69 // Set startSlide 70 if(settings.startSlide > 0){ 71 if(settings.startSlide >= vars.totalSlides) { settings.startSlide = vars.totalSlides - 1; } 72 vars.currentSlide = settings.startSlide; 73 } 74 75 // Get initial image 76 if($(kids[vars.currentSlide]).is('img')){ 77 vars.currentImage = $(kids[vars.currentSlide]); 78 } else { 79 vars.currentImage = $(kids[vars.currentSlide]).find('img:first'); 80 } 81 82 // Show initial link 83 if($(kids[vars.currentSlide]).is('a')){ 84 $(kids[vars.currentSlide]).css('display','block'); 85 } 86 87 // Set first background 88 var sliderImg = $('<img/>').addClass('nivo-main-image'); 89 sliderImg.attr('src', vars.currentImage.attr('src')).show(); 90 slider.append(sliderImg); 91 92 // Detect Window Resize 93 $(window).resize(function() { 94 slider.children('img').width(slider.width()); 95 sliderImg.attr('src', vars.currentImage.attr('src')); 96 sliderImg.stop().height('auto'); 97 $('.nivo-slice').remove(); 98 $('.nivo-box').remove(); 99 }); 100 101 //Create caption 102 slider.append($('<div class="nivo-caption"></div>')); 103 104 // Process caption function 105 var processCaption = function(settings){ 106 var nivoCaption = $('.nivo-caption', slider); 107 if(vars.currentImage.attr('title') != '' && vars.currentImage.attr('title') != undefined){ 108 var title = vars.currentImage.attr('title'); 109 if(title.substr(0,1) == '#') title = $(title).html(); 110 111 if(nivoCaption.css('display') == 'block'){ 112 setTimeout(function(){ 113 nivoCaption.html(title); 114 }, settings.animSpeed); 115 } else { 116 nivoCaption.html(title); 117 nivoCaption.stop().fadeIn(settings.animSpeed); 118 } 119 } else { 120 nivoCaption.stop().fadeOut(settings.animSpeed); 121 } 122 } 123 124 //Process initial caption 125 processCaption(settings); 126 127 // In the words of Super Mario "let's a go!" 128 var timer = 0; 129 if(!settings.manualAdvance && kids.length > 1){ 130 timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); 131 } 132 133 // Add Direction nav 134 if(settings.directionNav){ 135 slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+ settings.prevText +'</a><a class="nivo-nextNav">'+ settings.nextText +'</a></div>'); 136 137 $(slider).on('click', 'a.nivo-prevNav', function(){ 138 if(vars.running) { return false; } 139 clearInterval(timer); 140 timer = ''; 141 vars.currentSlide -= 2; 142 nivoRun(slider, kids, settings, 'prev'); 143 }); 144 145 $(slider).on('click', 'a.nivo-nextNav', function(){ 146 if(vars.running) { return false; } 147 clearInterval(timer); 148 timer = ''; 149 nivoRun(slider, kids, settings, 'next'); 150 }); 151 } 152 153 // Add Control nav 154 if(settings.controlNav){
155 vars.controlNavEl = $('<div class="nivo-controlNav"></div>'); 156 slider.after(vars.controlNavEl); 157 for(var i = 0; i < kids.length; i++){ 158 if(settings.controlNavThumbs){ 159 vars.controlNavEl.addClass('nivo-thumbs-enabled'); 160 var child = kids.eq(i); 161 if(!child.is('img')){ 162 child = child.find('img:first'); 163 } 164 if(child.attr('data-thumb')) vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('data-thumb') +'" alt="" /></a>'); 165 } else { 166 vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'">'+ (i + 1) +'</a>'); 167 } 168 } 169 170 //Set initial active link 171 $('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active'); 172 173 $('a', vars.controlNavEl).bind('click', function(){ 174 if(vars.running) return false; 175 if($(this).hasClass('active')) return false; 176 clearInterval(timer); 177 timer = ''; 178 sliderImg.attr('src', vars.currentImage.attr('src')); 179 vars.currentSlide = $(this).attr('rel') - 1; 180 nivoRun(slider, kids, settings, 'control'); 181 }); 182 } 183 184 //For pauseOnHover setting 185 if(settings.pauseOnHover){ 186 slider.hover(function(){ 187 vars.paused = true; 188 clearInterval(timer); 189 timer = ''; 190 }, function(){ 191 vars.paused = false; 192 // Restart the timer 193 if(timer === '' && !settings.manualAdvance){ 194 timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); 195 } 196 }); 197 } 198 199 // Event when Animation finishes 200 slider.bind('nivo:animFinished', function(){ 201 sliderImg.attr('src', vars.currentImage.attr('src')); 202 vars.running = false; 203 // Hide child links 204 $(kids).each(function(){ 205 if($(this).is('a')){ 206 $(this).css('display','none'); 207 } 208 }); 209 // Show current link 210 if($(kids[vars.currentSlide]).is('a')){ 211 $(kids[vars.currentSlide]).css('display','block'); 212 } 213 // Restart the timer 214 if(timer === '' && !vars.paused && !settings.manualAdvance){ 215 timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); 216 } 217 // Trigger the afterChange callback 218 settings.afterChange.call(this); 219 }); 220 221 // Add slices for slice animations 222 var createSlices = function(slider, settings, vars) { 223 if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block'); 224 $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show(); 225 var sliceHeight = ($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().is('a')) ? $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().height() : $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height(); 226 227 for(var i = 0; i < settings.slices; i++){ 228 var sliceWidth = Math.round(slider.width()/settings.slices); 229 230 if(i === settings.slices-1){ 231 slider.append( 232 $('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0;
232 left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({ 233 left:(sliceWidth*i)+'px', 234 width:(slider.width()-(sliceWidth*i))+'px', 235 height:sliceHeight+'px', 236 opacity:'0', 237 overflow:'hidden' 238 }) 239 ); 240 } else { 241 slider.append( 242 $('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0; left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({ 243 left:(sliceWidth*i)+'px', 244 width:sliceWidth+'px', 245 height:sliceHeight+'px', 246 opacity:'0', 247 overflow:'hidden' 248 }) 249 ); 250 } 251 } 252 253 $('.nivo-slice', slider).height(sliceHeight); 254 sliderImg.stop().animate({ 255 height: $(vars.currentImage).height() 256 }, settings.animSpeed); 257 }; 258 259 // Add boxes for box animations 260 var createBoxes = function(slider, settings, vars){ 261 if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block'); 262 $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show(); 263 var boxWidth = Math.round(slider.width()/settings.boxCols), 264 boxHeight = Math.round($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height() / settings.boxRows); 265 266 267 for(var rows = 0; rows < settings.boxRows; rows++){ 268 for(var cols = 0; cols < settings.boxCols; cols++){ 269 if(cols === settings.boxCols-1){ 270 slider.append( 271 $('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({ 272 opacity:0, 273 left:(boxWidth*cols)+'px', 274 top:(boxHeight*rows)+'px', 275 width:(slider.width()-(boxWidth*cols))+'px' 276 277 }) 278 ); 279 $('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px'); 280 } else { 281 slider.append( 282 $('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({ 283 opacity:0, 284 left:(boxWidth*cols)+'px', 285 top:(boxHeight*rows)+'px', 286 width:boxWidth+'px' 287 }) 288 ); 289 $('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px'); 290 } 291 } 292 } 293 294 sliderImg.stop().animate({ 295 height: $(vars.currentImage).height() 296 }, settings.animSpeed); 297 }; 298 299 // Private run method 300 var nivoRun = function(slider, kids, settings, nudge){ 301 // Get our vars 302 var vars = slider.data('nivo:vars'); 303 304 // Trigger the lastSlide callback 305 if(vars && (vars.currentSlide === vars.totalSlides - 1)){ 306 settings.lastSlide.call(this); 307 } 308 309 // Stop 310 if((!vars || vars.stop) && !nudge) { return false; } 311 312 // Trigger the beforeChange callback 313 settings.beforeChange.call(this); 314 315 // Set current background before change 316 if(!nudge){ 317 sliderImg.attr('src', vars.currentImage.attr('src')); 318 } else { 319 if(nudge === 'prev'){ 320 sliderImg.attr('src', vars.currentImage.attr('src')); 321 } 322 if(nudge === 'next'){ 323 sliderImg.attr('src', vars.currentImage.attr('src')); 324 } 325 } 326 327 vars.currentSlide++; 328 // Trigger the slideshowEnd callback 329 if(vars.currentSlide === vars.totalSlides){ 330 vars.currentSlide = 0; 331 settings.slideshowEnd.call(this); 332 }
333 if(vars.currentSlide < 0) { vars.currentSlide = (vars.totalSlides - 1); } 334 // Set vars.currentImage 335 if($(kids[vars.currentSlide]).is('img')){ 336 vars.currentImage = $(kids[vars.currentSlide]); 337 } else { 338 vars.currentImage = $(kids[vars.currentSlide]).find('img:first'); 339 } 340 341 // Set active links 342 if(settings.controlNav){ 343 $('a', vars.controlNavEl).removeClass('active'); 344 $('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active'); 345 } 346 347 // Process caption 348 processCaption(settings); 349 350 // Remove any slices from last transition 351 $('.nivo-slice', slider).remove(); 352 353 // Remove any boxes from last transition 354 $('.nivo-box', slider).remove(); 355 356 var currentEffect = settings.effect, 357 anims = ''; 358 359 // Generate random effect 360 if(settings.effect === 'random'){ 361 anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade', 362 'boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse'); 363 currentEffect = anims[Math.floor(Math.random()*(anims.length + 1))]; 364 if(currentEffect === undefined) { currentEffect = 'fade'; } 365 } 366 367 // Run random effect from specified set (eg: effect:'fold,fade') 368 if(settings.effect.indexOf(',') !== -1){ 369 anims = settings.effect.split(','); 370 currentEffect = anims[Math.floor(Math.random()*(anims.length))]; 371 if(currentEffect === undefined) { currentEffect = 'fade'; } 372 } 373 374 // Custom transition as defined by "data-transition" attribute 375 if(vars.currentImage.attr('data-transition')){ 376 currentEffect = vars.currentImage.attr('data-transition'); 377 } 378 379 // Run effects 380 vars.running = true; 381 var timeBuff = 0, 382 i = 0, 383 slices = '', 384 firstSlice = '', 385 totalBoxes = '', 386 boxes = ''; 387 388 if(currentEffect === 'sliceDown' || currentEffect === 'sliceDownRight' || currentEffect === 'sliceDownLeft'){
389 createSlices(slider, settings, vars); 390 timeBuff = 0; 391 i = 0; 392 slices = $('.nivo-slice', slider); 393 if(currentEffect === 'sliceDownLeft') { slices = $('.nivo-slice', slider)._reverse(); } 394 395 slices.each(function(){ 396 var slice = $(this); 397 slice.css({ 'top': '0px' }); 398 if(i === settings.slices-1){ 399 setTimeout(function(){ 400 slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); 401 }, (100 + timeBuff)); 402 } else { 403 setTimeout(function(){ 404 slice.animate({opacity:'1.0' }, settings.animSpeed); 405 }, (100 + timeBuff)); 406 } 407 timeBuff += 50; 408 i++; 409 }); 410 } else if(currentEffect === 'sliceUp' || currentEffect === 'sliceUpRight' || currentEffect === 'sliceUpLeft'){
411 createSlices(slider, settings, vars); 412 timeBuff = 0; 413 i = 0; 414 slices = $('.nivo-slice', slider); 415 if(currentEffect === 'sliceUpLeft') { slices = $('.nivo-slice', slider)._reverse(); } 416 417 slices.each(function(){ 418 var slice = $(this); 419 slice.css({ 'bottom': '0px' }); 420 if(i === settings.slices-1){ 421 setTimeout(function(){ 422 slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); 423 }, (100 + timeBuff)); 424 } else { 425 setTimeout(function(){ 426 slice.animate({opacity:'1.0' }, settings.animSpeed); 427 }, (100 + timeBuff)); 428 } 429 timeBuff += 50; 430 i++; 431 }); 432 } else if(currentEffect === 'sliceUpDown' || currentEffect === 'sliceUpDownRight' || currentEffect === 'sliceUpDownLeft'){
433 createSlices(slider, settings, vars); 434 timeBuff = 0; 435 i = 0; 436 var v = 0; 437 slices = $('.nivo-slice', slider); 438 if(currentEffect === 'sliceUpDownLeft') { slices = $('.nivo-slice', slider)._reverse(); } 439 440 slices.each(function(){ 441 var slice = $(this); 442 if(i === 0){ 443 slice.css('top','0px'); 444 i++; 445 } else { 446 slice.css('bottom','0px'); 447 i = 0; 448 } 449 450 if(v === settings.slices-1){ 451 setTimeout(function(){ 452 slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); 453 }, (100 + timeBuff)); 454 } else { 455 setTimeout(function(){ 456 slice.animate({opacity:'1.0' }, settings.animSpeed); 457 }, (100 + timeBuff)); 458 } 459 timeBuff += 50; 460 v++; 461 }); 462 } else if(currentEffect === 'fold'){
463 createSlices(slider, settings, vars); 464 timeBuff = 0; 465 i = 0; 466 467 $('.nivo-slice', slider).each(function(){ 468 var slice = $(this); 469 var origWidth = slice.width(); 470 slice.css({ top:'0px', width:'0px' }); 471 if(i === settings.slices-1){ 472 setTimeout(function(){ 473 slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); 474 }, (100 + timeBuff)); 475 } else { 476 setTimeout(function(){ 477 slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed); 478 }, (100 + timeBuff)); 479 } 480 timeBuff += 50; 481 i++; 482 }); 483 } else if(currentEffect === 'fade'){ 484 createSlices(slider, settings, vars); 485 486 firstSlice = $('.nivo-slice:first', slider); 487 firstSlice.css({ 488 'width': slider.width() + 'px' 489 }); 490 491 firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); }); 492 } else if(currentEffect === 'slideInRight'){
493 createSlices(slider, settings, vars); 494 495 firstSlice = $('.nivo-slice:first', slider); 496 firstSlice.css({ 497 'width': '0px', 498 'opacity': '1' 499 }); 500 501 firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); }); 502 } else if(currentEffect === 'slideInLeft'){ 503 createSlices(slider, settings, vars); 504 505 firstSlice = $('.nivo-slice:first', slider); 506 firstSlice.css({ 507 'width': '0px', 508 'opacity': '1', 509 'left': '', 510 'right': '0px' 511 }); 512 513 firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ 514 // Reset positioning 515 firstSlice.css({ 516 'left': '0px', 517 'right': '' 518 }); 519 slider.trigger('nivo:animFinished'); 520 }); 521 } else if(currentEffect === 'boxRandom'){ 522 createBoxes(slider, settings, vars); 523 524 totalBoxes = settings.boxCols * settings.boxRows; 525 i = 0; 526 timeBuff = 0; 527 528 boxes = shuffle($('.nivo-box', slider)); 529 boxes.each(function(){ 530 var box = $(this); 531 if(i === totalBoxes-1){ 532 setTimeout(function(){ 533 box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); 534 }, (100 + timeBuff)); 535 } else { 536 setTimeout(function(){ 537 box.animate({ opacity:'1' }, settings.animSpeed); 538 }, (100 + timeBuff)); 539 } 540 timeBuff += 20; 541 i++; 542 }); 543 } else if(currentEffect === 'boxRain' || currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){ 544 createBoxes(slider, settings, vars); 545 546 totalBoxes = settings.boxCols * settings.boxRows; 547 i = 0; 548 timeBuff = 0; 549 550 // Split boxes into 2D array 551 var rowIndex = 0; 552 var colIndex = 0; 553 var box2Darr = []; 554 box2Darr[rowIndex] = []; 555 boxes = $('.nivo-box', slider); 556 if(currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrowReverse'){ 557 boxes = $('.nivo-box', slider)._reverse(); 558 } 559 boxes.each(function(){ 560 box2Darr[rowIndex][colIndex] = $(this); 561 colIndex++; 562 if(colIndex === settings.boxCols){ 563 rowIndex++; 564 colIndex = 0; 565 box2Darr[rowIndex] = []; 566 } 567 }); 568 569 // Run animation 570 for(var cols = 0; cols < (settings.boxCols * 2); cols++){ 571 var prevCol = cols; 572 for(var rows = 0; rows < settings.boxRows; rows++){ 573 if(prevCol >= 0 && prevCol < settings.boxCols){ 574 /* Due to some weird JS bug with loop vars 575 being used in setTimeout, this is wrapped 576 with an anonymous function call */ 577 (function(row, col, time, i, totalBoxes) { 578 var box = $(box2Darr[row][col]); 579 var w = box.width(); 580 var h = box.height(); 581 if(currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){ 582 box.width(0).height(0); 583 } 584 if(i === totalBoxes-1){ 585 setTimeout(function(){ 586 box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('nivo:animFinished'); }); 587 }, (100 + time)); 588 } else { 589 setTimeout(function(){ 590 box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3); 591 }, (100 + time)); 592 } 593 })(rows, prevCol, timeBuff, i, totalBoxes); 594 i++; 595 } 596 prevCol--; 597 } 598 timeBuff += 100; 599 } 600 } 601 }; 602 603 // Shuffle an array 604 var shuffle = function(arr){ 605 for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i, 10), x = arr[--i], arr[i] = arr[j], arr[j] = x); 606 return arr; 607 }; 608 609 // For debugging 610 var trace = function(msg){ 611 if(this.console && typeof console.log !== 'undefined') { console.log(msg); } 612 }; 613 614 // Start / Stop 615 this.stop = function(){
616 if(!$(element).data('nivo:vars').stop){ 617 $(element).data('nivo:vars').stop = true; 618 trace('Stop Slider'); 619 } 620 }; 621 622 this.start = function(){ 623 if($(element).data('nivo:vars').stop){ 624 $(element).data('nivo:vars').stop = false; 625 trace('Start Slider'); 626 } 627 }; 628 629 // Trigger the afterLoad callback 630 settings.afterLoad.call(this); 631 632 return this; 633 }; 634 635 $.fn.nivoSlider = function(options) { 636 return this.each(function(key, value){ 637 var element = $(this); 638 // Return early if this element already has a plugin instance 639 if (element.data('nivoslider')) { return element.data('nivoslider'); } 640 // Pass options to plugin constructor 641 var nivoslider = new NivoSlider(this, options); 642 // Store plugin object in this element's data 643 element.data('nivoslider', nivoslider); 644 }); 645 }; 646 647 //Default settings 648 $.fn.nivoSlider.defaults = { 649 effect: 'random', 650 slices: 15, 651 boxCols: 8, 652 boxRows: 4, 653 animSpeed: 500, 654 pauseTime: 3000, 655 startSlide: 0, 656 directionNav: true, 657 controlNav: true, 658 controlNavThumbs: false, 659 pauseOnHover: true, 660 manualAdvance: false, 661 prevText: 'Prev', 662 nextText: 'Next', 663 randomStart: false, 664 beforeChange: function(){}, 665 afterChange: function(){}, 666 slideshowEnd: function(){}, 667 lastSlide: function(){}, 668 afterLoad: function(){} 669 }; 670 671 $.fn._reverse = [].reverse; 672 673})(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.