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