PageSourceSearch

https://acecnd.org/image/cache/new_tao_animation.js

js acecnd.org collected 2026-10-05 21:57:48 UTC 14,296 bytes, 377 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 *
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		taoAnimate = function(slider, allSlides, settings, extra){
200	      // Get vars of the current slider
201            var vars = slider.data('taovars'),
202			previousSlide,currentSlide,taoEffect;
203			if(vars.paused==true){
204				return;
205			}
206
207
208			// get current slide which is on display  
209			if(extra!='nav'){
210				vars.previousSlide= vars.currentSlide;
211			}            
212
213			// get next  slide to be animated
214			vars.currentSlide++;
215			if(vars.currentSlide==vars.totalSlides || vars.currentSlide<0){
216				vars.currentSlide=0;
217			}
218			// get current slide which is on display  
219			previousSlide = $(allSlides[vars.previousSlide]);
220			
221			currentSlide = $(allSlides[vars.currentSlide]);
222			 // update nagviation links 
223            if(settings.showNav){
224                $('a', vars.navElement).removeClass('active');
225                $('a:eq('+ vars.currentSlide +')', vars.navElement).addClass('active');
226            }
227
228		
229
230			// update status vars
231			vars.running = true;
232			taoEffect = settings.effect; // assign animation effect to a variable
233			if(taoEffect=='scrollLeft'){
234				if(extra=='prev'){
235					currentSlide.animate({left: currentSlide.outerWidth()},settings.animSpeed).removeClass('activeSlide');
236					previousSlide.addClass('activeSlide').css('left', -currentSlide.outerWidth());
237					previousSlide.animate({left: 0}, settings.animSpeed);
238					slider.trigger('animationCompleted');
239				} else {
240					previousSlide.animate({left: -currentSlide.outerWidth()},settings.animSpeed).removeClass('activeSlide');
241					currentSlide.addClass('activeSlide').css('left', currentSlide.outerWidth());
242					currentSlide.animate({left: 0}, settings.animSpeed);
243					slider.trigger('animationCompleted');
244				}
245			}else if(taoEffect=='scrollRight') {
246				if(extra=='prev'){
247					currentSlide.removeClass('activeSlide').animate({left: -currentSlide.outerWidth()},settings.animSpeed);
248					previousSlide.addClass('activeSlide').css('left', currentSlide.outerWidth());
249					previousSlide.animate({left: 0}, settings.animSpeed);
250					slider.trigger('animationCompleted');
251				} else{
252					previousSlide.removeClass('activeSlide').animate({left: currentSlide.outerWidth()},settings.animSpeed);
253					currentSlide.addClass('activeSlide').css('left', -currentSlide.outerWidth());
254					currentSlide.animate({left: 0}, settings.animSpeed);
255					slider.trigger('animationCompleted');
256				}
257				
258			}else if(taoEffect=='scrollUp') {
259				previousSlide.animate({top: -slider.height()},settings.animSpeed).css('position', 'relative').removeClass('activeSlide');
260				currentSlide.addClass('activeSlide').css('top', slider.height()).css('position', 'absolute');
261				currentSlide.animate({top: 0}, settings.animSpeed);
262				slider.trigger('animationCompleted');
263			}else if(taoEffect=='slideIn') {
264				previousSlide.removeClass('activeSlide').css('zIndex', 0);
265				currentSlide.addClass('activeSlide').css('left', -currentSlide.outerWidth()).css('zIndex', 1);
266				currentSlide.animate({left: 0}, settings.animSpeed);
267				slider.trigger('animationCompleted');
268			}else if(taoEffect=='slideOut') {
269				previousSlide.removeClass('activeSlide').animate({left: currentSlide.outerWidth()},settings.animSpeed);
270				currentSlide.addClass('activeSlide').css('left', 0);
271				slider.trigger('animationCompleted');
272			}else if(taoEffect=='fade') {
273				if(extra=='prev'){
274					//currentSlide.fadeOut(1, function(){
275				  	previousSlide.fadeIn(settings.animSpeed*2, function() {
276    					$(this).addClass('activeSlide').css({'display': 'block', 'opacity': 1});
277  					});
278					//});
279					currentSlide.fadeOut(settings.animSpeed*2, function(){
280						$(this).removeClass('activeSlide');
281					});
282				}  else {
283					//currentSlide.fadeOut(1, function(){
284				  	currentSlide.fadeIn(settings.animSpeed*2, function() {
285    					$(this).addClass('activeSlide').css({'display': 'block', 'opacity': 1});
286  					});
287					//});
288					previousSlide.fadeOut(settings.animSpeed*2, function(){
289						$(this).removeClass('activeSlide');
290					});
291				}
292				
293				
294				slider.trigger('animationCompleted');
295			} else if (taoEffect=='shelf'){
296				indiWidth = (slider.width()- settings.imgWidth)/(vars.totalSlides-1);
297				previousSlide.removeClass('activeSlide').animate({width: indiWidth},(settings.animSpeed));
298				currentSlide.addClass('activeSlide').animate({width: settings.imgWidth}, (settings.animSpeed));
299			} else if(taoEffect=='simpleScroll') { 
300				currentSlide.addClass('activeSlide');
301				previousSlide.removeClass('activeSlide');
302				if(vars.currentslide!=1){
303					vars.leftPos=parseInt(settings.slideWidth)*parseInt(vars.currentSlide);
304					//alert(vars.totalWidth+vars.leftPos-vars.slideWidth);
305					if(parseInt(vars.totalWidth)-parseInt(vars.leftPos)<=parseInt(slider.width())){
306						vars.leftPos=0;
307						allSlides.animate({left:  0}, (settings.animSpeed*2));
308						slider.trigger('animationCompleted');
309					} else {
310						allSlides.animate({left:  -vars.leftPos}, (settings.animSpeed*2));
311						slider.trigger('animationCompleted');
312					}
313				}
314
315				/* if(parseInt(vars.leftPos,10)>=vars.totalWidth-parseInt(slider.parent().width(), 10)){
316					vars.leftPos='-'+parseInt(settings.slideWidth, 10);
317				}
318				vars.leftPos =parseInt(vars.leftPos, 10)+ parseInt(settings.slideWidth, 10);
319				currentSlide.addClass('activeSlide');
320				allSlides.animate({left:  -vars.leftPos}, (settings.animSpeed*2));
321				slider.trigger('animationCompleted');*/
322			}
323			else if(taoEffect=='marque') { 
324				allSlides.removeClass('activeSlide');
325				preHeight=previousSlide.height();
326				if(parseInt(vars.topPos)>=vars.totalHeight-parseInt(slider.parent().height())){
327					vars.topPos=0;
328					 $(allSlides[0]).addClass('activeSlide');
329					 vars.currentSlide=0;
330				} else {
331					vars.topPos =parseInt(vars.topPos)+ parseInt(preHeight);
332					currentSlide.addClass('activeSlide');
333				}
334				allSlides.animate({top:  -vars.topPos}, (settings.animSpeed*2));
335				slider.trigger('animationCompleted');
336			}
337		 if(extra=='prev'){
338		 	if(vars.currentSlide>1){
339				vars.currentSlide=parseInt(vars.currentSlide)-2;
340			} else if(vars.currentSlide<=1 || vars.currentSlide==0){
341				vars.currentSlide=0;
342			}
343		 }
344			
345		};
346	
347	
348	return this;
349};
350	$.fn.taoSlider = function(options) {
351	 return this.each(function(key, value){
352            var element = $(this),taoslider;
353            // Return early if this element already has a plugin instance
354            if (element.data('taoslider')) { return element.data('taoslider'); }
355            // Pass options to plugin constructor
356            taoslider = new TAOSlider(this, options);
357            // Store plugin object in this element's data
358            element.data('taoslider', taoslider);
359        });
360	};
361	//Default settings
362	$.fn.taoSlider.defaults = {
363	effect: 'scrollLeft',
364	animSpeed: 500,
365	pauseTime: 5000,
366	startSlide: 0,
367	showNav: true,
368	showTabs: false,
369	tabClass: 'taoTab',
370    directionNav: false,	
371    prevText: 'Prev',
372    nextText: 'Next',	
373	imgWidth: 0,
374	slideWidth: 0
375	};
376	
377})(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.