source: extensions/ExtendedDescription/template/nivoslider/jquery.nivo.slider.js @ 17010

Last change on this file since 17010 was 17010, checked in by mistic100, 12 years ago

-add [slider] tag
-parse all tags in page_banner
-allow random order of parameters for [photo], [random] and [slider]

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