PageSourceSearch

https://www.bewhalewise.org/wp-content/themes/pool-services/js/plugins/jquery.nivo.slider.js?ver=20151215

js bewhalewise.org collected 2026-09-24 09:45:44 UTC 29,774 bytes, 662 lines download raw bytes

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