PageSourceSearch

https://ndna.com/image/cache/tao_animation.js

js ndna.com collected 2026-10-04 05:46:06 UTC 15,192 bytes, 397 lines download raw bytes

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.