PageSourceSearch

http://www.ilsileno.it/edizioni/wp-content/themes/parabola/js/nivo-slider.js?ver=2.4.0.1

js ilsileno.it collected 2026-09-24 22:57:16 UTC 29,512 bytes, 676 lines download raw bytes

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

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.