1/** 2 * jQuery Tao Slider v1.1.1 3 * mutli purpose custom jquery slider 4 * 5 * @package tao|cms 6 * @author Tao Interactive Inc <[email protected]> 7 * @source Nivo slider - Dev7studios (Distributed under the MIT license.) 8 * @update 28-09-2018 support prev/next navigation, callback function for slide, resume animation 9 */ 10 11(function($) { 12 var TAOSlider = function(element, options){ 13 // setting of the slider 14 var settings = $.extend({}, $.fn.taoSlider.defaults, options), 15 timer,slider,allSlides,i,taoAnimate,vars; 16 17 // variables of the current slider 18 vars = { 19 currentSlide: 0, 20 previousSlide: 0, 21 currentImage: '', 22 totalSlides: 0, 23 running: false, 24 paused: false, 25 stop: false, 26 navElement: false, 27 forceSlide: false, 28 loop: false, 29 leftPos: 0, 30 topPos: 0, 31 totalWidth: 0, 32 totalHeight: 0, 33 slideWidth:0 34 } 35 // set slider to variable 36 slider = $(element); 37 slider.data('taovars', vars).addClass('taoSlider'); // store data to the element 38 allSlides = slider.find('.base'); 39 vars.totalSlides = allSlides.length; 40 41 42 if(vars.totalWidth==0) { 43 allSlides.each(function() { vars.totalWidth += $(this).outerWidth(); vars.totalHeight=parseInt(vars.totalHeight)+parseInt($(this).outerHeight()); }); 44 } 45 46 if(settings.effect=='simpleScroll'){ 47 vars.totalWidth=settings.slideWidth*vars.totalSlides; 48 } 49 50 // Show initial slide 51 if(vars.currentSlide==0){ 52 $(allSlides[0]).addClass('activeSlide').css('display','block').css('opacity','1'); 53 } 54 55 // Add navigation html to the slide 56 if(settings.showNav && settings.showTabs==false){ 57 vars.navElement = $('<div class="taoNav"></div>'); 58 slider.append(vars.navElement); 59 for(i = 0; i < vars.totalSlides ; i++){ 60 vars.navElement.append('<a class="taoNavlink" rel="'+ i +'">'+ (i + 1) +'</a>'); 61 } 62 //Set initial active link 63 $('a:eq('+ vars.currentSlide +')', vars.navElement).addClass('active'); 64 65 $('a', vars.navElement).bind('click', function(){ 66 if(vars.running) return false; 67 if(vars.paused) vars.paused=false; 68 if($(this).hasClass('active')) return false; 69 clearInterval(timer); 70 timer = ''; 71 vars.previousSlide=vars.navElement.find('.active').attr('rel'); 72 $(allSlides[vars.previousSlide]).find('iframe').attr('src', $(allSlides[vars.previousSlide]).find('iframe').attr('src')); 73 vars.currentSlide = $(this).attr('rel') - 1; 74 taoAnimate(slider, allSlides, settings, 'nav'); 75 }); 76 ver=$.fn.jquery.replace('.','').substring(0,2); 77 if(ver<14){ 78 $('.activeSlide').live('click touch', function(){ 79 pauseAnimation(slider); 80 }); 81 $('.activeSlide iframe').live('mouseover touchstart touch', function(){ 82 pauseAnimation(slider); 83 }); 84 } 85 else if(ver<17){ 86 slider.delegate('click touch','.activeSlide', function(){ 87 pauseAnimation(slider); 88 }); 89 slider.delegate('mouseover touchstart touch', '.activeSlide iframe', function(){ 90 pauseAnimation(slider); 91 }); 92 } else { 93 slider.on('click touch','.activeSlide', function(){ 94 pauseAnimation(slider); 95 }); 96 slider.on('mouseover touchstart touch', '.activeSlide iframe', function(){ 97 pauseAnimation(slider); 98 }); 99 } 100 } 101 102 // show tabs section 103 if(settings.showTabs){ 104 vars.navElement = $('<div class="taoTab_blk"></div>'); 105 slider.append(vars.navElement); 106 for(i = 0; i < vars.totalSlides ; i++){ 107 data=$(allSlides[i]).find('.'+settings.tabClass).html(); 108 if(data!==undefined){ 109 vars.navElement.append('<a class="'+settings.tabClass+'" rel="'+ i +'">'+ data +'</a>'); 110 $(allSlides[i]).find('.'+settings.tabClass).remove(); 111 } 112 } 113 //Set initial active link 114 $('a:eq('+ vars.currentSlide +')', vars.navElement).addClass('active'); 115 116 $('a', vars.navElement).bind('click', function(){ 117 if(vars.running) return false; 118 if(vars.paused) vars.paused=false; 119 if($(this).hasClass('active')) return false; 120 clearInterval(timer); 121 timer = ''; 122 vars.previousSlide=vars.navElement.find('.active').attr('rel'); 123 $(allSlides[vars.previousSlide]).find('iframe').attr('src', $(allSlides[vars.previousSlide]).find('iframe').attr('src')); 124 vars.currentSlide = $(this).attr('rel') - 1; 125 taoAnimate(slider, allSlides, settings, 'nav'); 126 }); 127 ver=$.fn.jquery.replace('.','').substring(0,2); 128 if(ver<14){ 129 $('.activeSlide').live('click touch', function(){ 130 pauseAnimation(slider); 131 }); 132 $('.activeSlide iframe').live('mouseover touchstart touch', function(){ 133 pauseAnimation(slider); 134 }); 135 } 136 else if(ver<17){ 137 slider.delegate('click touch','.activeSlide', function(){ 138 pauseAnimation(slider); 139 });
140 slider.delegate('mouseover touchstart touch', '.activeSlide iframe', function(){ 141 pauseAnimation(slider); 142 }); 143 } else { 144 slider.on('click touch','.activeSlide', function(){ 145 pauseAnimation(slider); 146 }); 147 slider.on('mouseover touchstart touch', '.activeSlide iframe', function(){ 148 pauseAnimation(slider); 149 }); 150 } 151 } 152 153 // Add Direction nav 154 if(settings.directionNav){ 155 slider.append('<div class="directionNav"><a class="prevNav">'+ settings.prevText +'</a><a class="nextNav">'+ settings.nextText +'</a></div>'); 156 $(slider).on('click', 'a.prevNav', function(){ 157 if(vars.running) { return false; } 158 clearInterval(timer); 159 taoAnimate(slider, allSlides, settings, 'prev'); 160 }); 161 162 $(slider).on('click', 'a.nextNav', function(){ 163 if(vars.running) { return false; } 164 clearInterval(timer); 165 timer = ''; 166 taoAnimate(slider, allSlides, settings, 'next'); 167 }); 168 } 169 170 171 if(settings.effect=='shelf'){ 172 indiWidth = (slider.width()- settings.imgWidth-1)/(vars.totalSlides-1); 173 $(allSlides).css('width', indiWidth); 174 $(allSlides[0]).removeClass('activeSlide'); 175 vars.currentSlide=vars.totalSlides-1; 176 } 177 178 // start slideshow 179 timer = 0; 180 if(vars.totalSlides > 1){ 181 timer = setInterval(function(){ taoAnimate(slider, allSlides, settings, false); }, settings.pauseTime); 182 } 183 184 slider.bind('animationCompleted', function(){ 185 vars.running = false; 186 if(timer==''){ 187 timer = setInterval(function(){ taoAnimate(slider, allSlides, settings, false); }, settings.pauseTime); 188 } 189 190 }); 191 pauseAnimation= function (slider){ 192 var vars = slider.data('taovars'); 193 if(vars.running) return false; 194 if(vars.paused) return false; 195 vars.paused=true; 196 clearInterval(timer); 197 timer = ''; 198 }; 199 200 // resume animation of slider 201 slider.bind('resumeAnimation', function(){ 202 vars.running = false; 203 vars.paused=false; 204 if(timer==''){ 205 timer = setInterval(function(){ taoAnimate(slider, allSlides, settings, false); }, settings.pauseTime); 206 } 207 208 }); 209 210 211 taoAnimate = function(slider, allSlides, settings, extra){ 212 // Get vars of the current slider 213 var vars = slider.data('taovars'), 214 previousSlide,currentSlide,taoEffect; 215 if(vars.paused==true){ 216 return; 217 } 218 219 220 // get current slide which is on display 221 if(extra!='nav'){ 222 vars.previousSlide= vars.currentSlide; 223 } 224 225 // get next slide to be animated 226 vars.currentSlide++; 227 if(vars.currentSlide==vars.totalSlides || vars.currentSlide<0){ 228 vars.currentSlide=0; 229 } 230 // get current slide which is on display 231 previousSlide = $(allSlides[vars.previousSlide]); 232 233 currentSlide = $(allSlides[vars.currentSlide]); 234 // update nagviation links 235 if(settings.showNav){ 236 $('a', vars.navElement).removeClass('active'); 237 $('a:eq('+ vars.currentSlide +')', vars.navElement).addClass('active'); 238 } 239 240 241 242 // update status vars 243 vars.running = true; 244 taoEffect = settings.effect; // assign animation effect to a variable 245 if(taoEffect=='scrollLeft'){ 246 if(extra=='prev'){ 247 currentSlide.animate({left: currentSlide.outerWidth()},settings.animSpeed).removeClass('activeSlide'); 248 previousSlide.addClass('activeSlide').css('left', -currentSlide.outerWidth()); 249 previousSlide.animate({left: 0}, settings.animSpeed); 250 slider.trigger('animationCompleted'); 251 } else { 252 previousSlide.animate({left: -currentSlide.outerWidth()},settings.animSpeed).removeClass('activeSlide'); 253 currentSlide.addClass('activeSlide').css('left', currentSlide.outerWidth()); 254 currentSlide.animate({left: 0}, settings.animSpeed); 255 slider.trigger('animationCompleted'); 256 } 257 }else if(taoEffect=='scrollRight') { 258 if(extra=='prev'){ 259 currentSlide.removeClass('activeSlide').animate({left: -currentSlide.outerWidth()},settings.animSpeed); 260 previousSlide.addClass('activeSlide').css('left', currentSlide.outerWidth()); 261 previousSlide.animate({left: 0}, settings.animSpeed); 262 slider.trigger('animationCompleted'); 263 } else{ 264 previousSlide.removeClass('activeSlide').animate({left: currentSlide.outerWidth()},settings.animSpeed); 265 currentSlide.addClass('activeSlide').css('left', -currentSlide.outerWidth()); 266 currentSlide.animate({left: 0}, settings.animSpeed); 267 slider.trigger('animationCompleted'); 268 } 269 270 }else if(taoEffect=='scrollUp') { 271 previousSlide.animate({top: -slider.height()},settings.animSpeed).css('position', 'relative').removeClass('activeSlide'); 272 currentSlide.addClass('activeSlide').css('top', slider.height()).css('position', 'absolute'); 273 currentSlide.animate({top: 0}, settings.animSpeed); 274 slider.trigger('animationCompleted'); 275 }else if(taoEffect=='slideIn') { 276 previousSlide.removeClass('activeSlide').css('zIndex', 0); 277 currentSlide.addClass('activeSlide').css('left', -currentSlide.outerWidth()).css('zIndex', 1); 278 currentSlide.animate({left: 0}, settings.animSpeed); 279 slider.trigger('animationCompleted'); 280 }else if(taoEffect=='slideOut') { 281 previousSlide.removeClass('activeSlide').animate({left: currentSlide.outerWidth()},settings.animSpeed); 282 currentSlide.addClass('activeSlide').css('left', 0); 283 slider.trigger('animationCompleted'); 284 }else if(taoEffect=='fade') { 285 if(extra=='prev'){ 286 //currentSlide.fadeOut(1, function(){ 287 previousSlide.fadeIn(settings.animSpeed*2, function() { 288 $(this).addClass('activeSlide').css({'display': 'block', 'opacity': 1}); 289 });
290 //}); 291 currentSlide.fadeOut(settings.animSpeed*2, function(){ 292 $(this).removeClass('activeSlide'); 293 }); 294 } else { 295 //currentSlide.fadeOut(1, function(){ 296 currentSlide.fadeIn(settings.animSpeed*2, function() { 297 $(this).addClass('activeSlide').css({'display': 'block', 'opacity': 1}); 298 }); 299 //}); 300 previousSlide.fadeOut(settings.animSpeed*2, function(){ 301 $(this).removeClass('activeSlide'); 302 }); 303 } 304 305 306 slider.trigger('animationCompleted'); 307 } else if (taoEffect=='shelf'){ 308 indiWidth = (slider.width()- settings.imgWidth)/(vars.totalSlides-1); 309 previousSlide.removeClass('activeSlide').animate({width: indiWidth},(settings.animSpeed)); 310 currentSlide.addClass('activeSlide').animate({width: settings.imgWidth}, (settings.animSpeed)); 311 } else if(taoEffect=='simpleScroll') { 312 currentSlide.addClass('activeSlide'); 313 previousSlide.removeClass('activeSlide'); 314 if(vars.currentslide!=1){ 315 vars.leftPos=parseInt(settings.slideWidth)*parseInt(vars.currentSlide); 316 //alert(vars.totalWidth+vars.leftPos-vars.slideWidth); 317 if(parseInt(vars.totalWidth)-parseInt(vars.leftPos)<=parseInt(slider.width())){ 318 vars.leftPos=0; 319 allSlides.animate({left: 0}, (settings.animSpeed*2)); 320 slider.trigger('animationCompleted'); 321 } else { 322 allSlides.animate({left: -vars.leftPos}, (settings.animSpeed*2)); 323 slider.trigger('animationCompleted'); 324 } 325 } 326 327 /* if(parseInt(vars.leftPos,10)>=vars.totalWidth-parseInt(slider.parent().width(), 10)){ 328 vars.leftPos='-'+parseInt(settings.slideWidth, 10); 329 } 330 vars.leftPos =parseInt(vars.leftPos, 10)+ parseInt(settings.slideWidth, 10); 331 currentSlide.addClass('activeSlide'); 332 allSlides.animate({left: -vars.leftPos}, (settings.animSpeed*2)); 333 slider.trigger('animationCompleted');*/ 334 } 335 else if(taoEffect=='marque') { 336 allSlides.removeClass('activeSlide'); 337 preHeight=previousSlide.height(); 338 if(parseInt(vars.topPos)>=vars.totalHeight-parseInt(slider.parent().height())){ 339 vars.topPos=0; 340 $(allSlides[0]).addClass('activeSlide'); 341 vars.currentSlide=0; 342 } else { 343 vars.topPos =parseInt(vars.topPos)+ parseInt(preHeight); 344 currentSlide.addClass('activeSlide'); 345 } 346 allSlides.animate({top: -vars.topPos}, (settings.animSpeed*2)); 347 slider.trigger('animationCompleted'); 348 } 349 if(extra=='prev'){ 350 if(vars.currentSlide>1){ 351 vars.currentSlide=parseInt(vars.currentSlide)-2; 352 } else if(vars.currentSlide<=1 || vars.currentSlide==0){ 353 vars.currentSlide=0; 354 } 355 } 356 //check if call back is defined on attribute 357 var callBack=currentSlide.attr('js-data'); 358 var callBackParam=currentSlide.attr('js-param'); 359 // callbac function Initiated... 360 if(callBack!==undefined && callBack!=''){ 361 callBackParam = (callBackParam !== undefined)?callBackParam:''; 362 var fun = window[currentSlide.attr('js-data')]; 363 fun(callBackParam); 364 } 365 }; 366 367 368 return this; 369}; 370 $.fn.taoSlider = function(options) { 371 return this.each(function(key, value){ 372 var element = $(this),taoslider; 373 // Return early if this element already has a plugin instance 374 if (element.data('taoslider')) { return element.data('taoslider'); } 375 // Pass options to plugin constructor 376 taoslider = new TAOSlider(this, options); 377 // Store plugin object in this element's data 378 element.data('taoslider', taoslider); 379 }); 380 }; 381 //Default settings 382 $.fn.taoSlider.defaults = { 383 effect: 'scrollLeft', 384 animSpeed: 500, 385 pauseTime: 5000, 386 startSlide: 0, 387 showNav: true, 388 showTabs: false, 389 tabClass: 'taoTab', 390 directionNav: false, 391 prevText: 'Prev', 392 nextText: 'Next', 393 imgWidth: 0, 394 slideWidth: 0 395 }; 396 397})(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.