PageSourceSearch

https://www.landers-shop.fr/modules/zeroslideshow/views/js/jquery.nivo.slider.js

js landers-shop.fr collected 2026-10-10 01:59:03 UTC 30,765 bytes, 686 lines download raw bytes

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.