1/* 2 * $('#js-video').fxslider({ 3 * slideshow: true, //Boolean: Animate slider automatically 4 * slideshowSpeed: 7000, //Integer: Set the speed of the slideshow cycling, in milliseconds 5 * animationDuration: 600, //Integer: Set the speed of animations, in milliseconds 6 * mousewheel: true, //Boolean: Allow slider navigating via mousewheel* 7 * controlNav: true, //Boolean: Create navigation for paging control 8 * directionNav: false, //Boolean: Create navigation for previous/next navigation? (true/false) 9 * prevText: "Prev", //String: Set the text for the "Prev" directionNav item 10 * nextText: "Next", //String: Set the text for the "Next" directionNav item 11 * animationLoop: true, //Boolean: Should the animation loop 12 * pauseOnAction: true, //Boolean: Pause the slideshow when interacting with control elements, highly recommended. 13 * pauseOnHover: true, //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hovering 14 * start: function(){}, //Callback: function(slider) - Fires when the slider loads the first slide 15 * before: function(){}, //Callback: function(slider) - Fires asynchronously with each slider animation 16 * after: function(){}, //Callback: function(slider) - Fires after each slider animation completes 17 * end: function(){} 18 * }); 19 */ 20(function ($) { 21 22 $.fxslider = function(el, options) { 23 var slider = el; 24 25 // Initialize 26 slider.init = function() { 27 slider.vars = $.extend({}, $.fxslider.defaults, options); 28 slider.data('fxslider', true); 29 slider.container = $('.slides', slider); 30 slider.slides = $('.slides > li', slider); 31 slider.count = slider.slides.length; 32 slider.animating = false; 33 slider.currentSlide = 0; 34 slider.animatingTo = 0; 35 36 // Slider Animation Initialize 37 slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%"}).hide().eq(slider.currentSlide).show(); 38 //slider.slides.css({"width": "100%", "float": "left", "marginRight": "-100%"}).eq(slider.currentSlide).fadeIn(slider.vars.animationDuration); 39 40 // Control Nav 41 if (slider.vars.controlNav) { 42 var controlNavScaffold = $('<ol class="control-nav"></ol>'); 43 var j = 1; 44 for (var i = 0; i < slider.count; i++) { 45 controlNavScaffold.append('<li><span>' + j + '</span></li>'); 46 j++; 47 } 48 49 slider.append(controlNavScaffold); 50 slider.controlNav = $('.control-nav li span', slider); 51 52 slider.controlNav.eq(slider.currentSlide).addClass('activ'); 53 54 slider.controlNav.bind('click', function(event) { 55 event.preventDefault(); 56 if (!$(this).hasClass('activ')) { 57 (slider.controlNav.index($(this)) > slider.currentSlide) ? slider.direction = "next" : slider.direction = "prev"; 58 slider.flexAnimate(slider.controlNav.index($(this)), slider.vars.pauseOnAction); 59 } 60 }); 61 } 62 63 //Direction Nav 64 if (slider.vars.directionNav) { 65 var directionNavScaffold = $('<div class="direction-nav"><span class="prev">' + slider.vars.prevText + '</span><span class="next">' + slider.vars.nextText + '</span></div>'); 66 67 slider.append(directionNavScaffold); 68 slider.directionNav = $('.direction-nav span', slider); 69 70 //Set initial disable styles if necessary 71 if (!slider.vars.animationLoop) { 72 if (slider.currentSlide == 0) { 73 slider.directionNav.filter('.prev').addClass('disabled'); 74 } else if (slider.currentSlide == slider.count - 1) { 75 slider.directionNav.filter('.next').addClass('disabled'); 76 } 77 } 78 79 slider.directionNav.bind('click', function(event) { 80 event.preventDefault(); 81 var target = ($(this).hasClass('next')) ? slider.getTarget('next') : slider.getTarget('prev'); 82 83 if (slider.canAdvance(target)) { 84 slider.flexAnimate(target, slider.vars.pauseOnAction); 85 } 86 }); 87 } 88 89 // Mousewheel interaction 90 if (slider.vars.mousewheel) { 91 slider.mousewheelEvent = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel"; 92 slider.bind(slider.mousewheelEvent, function(e) { 93 e.preventDefault(); 94 e = e ? e : window.event; 95 var wheelData = e.detail ? e.detail * -1 : e.wheelDelta / 40, 96 target = (wheelData < 0) ? slider.getTarget('next') : slider.getTarget('prev'); 97 98 if (slider.canAdvance(target)) { 99 slider.flexAnimate(target, slider.vars.pauseOnAction); 100 } 101 }); 102 } 103 104 //Slideshow Setup 105 if (slider.vars.slideshow) { 106 //pauseOnHover 107 if (slider.vars.pauseOnHover && slider.vars.slideshow) { 108 slider.hover(function() { 109 slider.pause(); 110 }, function() { 111 slider.resume(); 112 }); 113 } 114 115 //Initialize animation 116 slider.animatedSlides = setInterval(slider.animateSlides, slider.vars.slideshowSpeed); 117 } 118 119 //start() Callback 120 slider.vars.start(slider); 121 } 122 123 //Animation Actions 124 slider.flexAnimate = function(target, pause) { 125 if (!slider.animating) { 126 //Animating flag 127 slider.animating = true; 128 129 slider.animatingTo = target; 130 //before() animation Callback 131 slider.vars.before(slider); 132 133 //Optional paramter to pause slider when making an anmiation call 134 if (pause) { 135 slider.pause(); 136 } 137 138 //Update controlNav 139 if (slider.vars.controlNav) { 140 slider.controlNav.removeClass('activ').eq(target).addClass('activ'); 141 } 142 143 //Is the slider at either end 144 if (!slider.vars.animationLoop && slider.vars.directionNav) { 145 if (target == 0) { 146 slider.directionNav.removeClass('disabled').filter('.prev').addClass('disabled'); 147 } else if (target == slider.count - 1) { 148 slider.directionNav.removeClass('disabled').filter('.next').addClass('disabled'); 149 } else { 150 slider.directionNav.removeClass('disabled'); 151 } 152 } 153 154 if (!slider.vars.animationLoop && target == slider.count - 1) { 155 slider.pause(); 156 //end() of cycle Callback 157 slider.vars.end(slider); 158 } 159 160 //Default to Fade 161 slider.slides.eq(slider.currentSlide).fadeOut(slider.vars.animationDuration); 162 slider.slides.eq(target).fadeIn(slider.vars.animationDuration, function() { 163 slider.wrapup(); 164 }); 165 166 } 167 } 168 169 //Function to minify redundant animation actions 170 slider.wrapup = function() { 171 //console.log('wrapup'); 172 slider.animating = false;
173 slider.currentSlide = slider.animatingTo; 174 //after() animation Callback 175 slider.vars.after(slider); 176 } 177 178 //Automatic Slideshow 179 slider.animateSlides = function() { 180 if (!slider.animating) { 181 slider.flexAnimate(slider.getTarget("next")); 182 } 183 } 184 185 //Automatic Slideshow Pause 186 slider.pause = function() { 187 //console.log('pause'); 188 clearInterval(slider.animatedSlides); 189 } 190 191 //Automatic Slideshow Start/Resume 192 slider.resume = function() { 193 //console.log('resume'); 194 slider.animatedSlides = setInterval(slider.animateSlides, slider.vars.slideshowSpeed); 195 } 196 197 //Helper function for non-looping sliders 198 slider.canAdvance = function(target) { 199 if (!slider.vars.animationLoop) { 200 if (slider.currentSlide == 0 && target == slider.count - 1 && slider.direction != "next") { 201 return false; 202 } else if (slider.currentSlide == slider.count - 1 && target == 0 && slider.direction == "next") { 203 return false; 204 } else { 205 return true; 206 } 207 } else { 208 return true; 209 } 210 } 211 212 //Helper function to determine animation target 213 slider.getTarget = function(dir) { 214 slider.direction = dir; 215 if (dir == "next") { 216 return (slider.currentSlide == slider.count - 1) ? 0 : slider.currentSlide + 1; 217 } else { 218 return (slider.currentSlide == 0) ? slider.count - 1 : slider.currentSlide - 1; 219 } 220 } 221 222 //Initialize 223 slider.init(); 224 } 225 226 //Default Settings 227 $.fxslider.defaults = { 228 slideshow: true, 229 slideshowSpeed: 7000, 230 animationDuration: 600, 231 mousewheel: false, 232 controlNav: true, 233 directionNav: false, 234 prevText: "Prev", 235 nextText: "Next", 236 animationLoop: true, 237 pauseOnAction: true, 238 pauseOnHover: true, 239 start: function(){}, 240 before: function(){}, 241 after: function(){}, 242 end: function(){} 243 } 244 245 246 $.fn.fxslider = function(options) { 247 return this.each(function() { 248 var _this = $(this); 249 if( (_this.find('.slides li').length != 1) && (_this.data('fxslider') != true) ){ 250 new $.fxslider(_this, options); 251 } 252 }); 253 } 254 255})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.