Advertisement
Guest User

NivoSlider for HTTPS

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