PageSourceSearch

https://www.studiodiluigipirandello.it/wp-content/themes/angular/js/aviapoly.js?ver=1.1.0

js studiodiluigipirandello.it collected 2026-10-02 08:01:32 UTC 52,017 bytes, 1,689 lines download raw bytes

1/**
2 * aviapoly Slider - A responsive jQuery image slider with advanced transition effects
3 * (c) Copyright Christian "Kriesi" Budschedl
4 * http://www.kriesi.at
5 * http://www.twitter.com/kriesi/
6 *
7 */
8 
9 
10(function($)
11{
12	$.fn.aviapoly = function(set_options, overwrite_methods) 
13	{	
14		var defaults = 
15			{
16				animation: false,
17				pluginNameSpace: 'aviapoly',
18				transition: 'aviapoly_fx',
19				blockHeight: 'full',
20				blockWidth:	'full',
21				transitionFx: 'fade',
22				betweenBlockDelay: 100,
23				transitionSpeed:600,
24				cssEasing: 	'cubic-bezier(0.250, 0.460, 0.450, 0.940)',		// easing for CSS transition
25				easing: 'easeOutQuad'										// easing for JS transitions
26			},
27			
28			options = $.extend({}, defaults, set_options),
29		
30			methods = 
31			{
32
33				aviapoly_fx: function(slider)
34				{	
35					//set height and widh of the slider
36					methods.set_slide_option(slider);
37					
38					//generate the blocks for the next transition based on the slide options set above
39					methods.generate_blocks(slider);
40					
41					//get all blocks, sort them and position them as needed
42					methods.perpare_blocks(slider);
43					
44					//fire the transition
45					setTimeout(function(){ methods.start_block_transition(slider); }, 100);
46				},
47				
48				set_slide_option: function(slider)
49				{
50					var cur_height, cur_width, slideWidth = slider.width(), slideHeight = slider.height();
51					//check if either width or height should be full container width			
52					cur_height  = options.blockHeight == 'full'? slideHeight: options.blockHeight;
53					cur_width   = options.blockWidth == 'full' ? slideWidth : options.blockWidth;
54				
55					slider.currentOptions = 
56					{
57						blockHeight: 	cur_height,
58						blockWidth: 	cur_width,
59						slideHeight:	slideHeight,
60						slideWidth:		slideWidth
61					};
62					
63					slider.currentOptions = $.extend({}, slider.options, slider.currentOptions);
64					slider.methods.overwrite_options(slider.currentSlide, slider.currentOptions);
65					
66					
67					if(slider.currentOptions.animation)
68					{
69						slider.methods.use_preset_animation(slider, slider.currentOptions.animation);
70					}
71				},
72				
73				
74				
75				perpare_blocks: function(slider)
76				{
77					slider.blocks = slider.find('.avBlock');
78					
79					if(slider.css_active && slider.isMobile)
80					{
81						if (slider.moveDirection > 0)
82						{
83							slider.blocks = $(slider.blocks.get().reverse()); 
84						} 
85					} 
86					else if (slider.moveDirection < 0) 
87					{ 
88						slider.blocks = $(slider.blocks.get().reverse()); 
89					}
90					
91					switch(slider.currentOptions.order)
92					{
93						case 'diagonal': slider.blocks = slider.methods.diagonal(slider.blocks, slider);  break;
94						case 'random'  : slider.blocks = slider.methods.fyrandomize(slider.blocks, slider);  break;
95					}
96				},
97				
98				generate_blocks: function(slider)
99				{
100					slider.blockNumber 	= 0;
101					var	posX 			= 0,
102						posY 			= 0,
103						generateBlocks 	= true,
104						nextImage		= slider.nextSlide.find('img:eq(0)').attr('src'); 
105					
106
107					
108					// start generating the blocks and add them until the whole image area
109					// is filled. Depending on the options that can be only one div or quite many ;)
110					while(generateBlocks)
111					{					
112						slider.blockNumber ++;
113						
114						var block = $('<div class="avBlock avBlock'+slider.blockNumber+'"></div>').appendTo(slider).css({	
115								zIndex:20, 
116								position:'absolute',
117								overflow:'hidden',
118								display:'none',
119								left:posX,
120								top:posY,
121								height:slider.currentOptions.blockHeight,
122								width:slider.currentOptions.blockWidth
123							});
124						
125						var imagestring = '';
126						if(nextImage) imagestring = '<img src="'+ nextImage +'" title="" alt="" />';
127						
128						var innerBlock = $('<div class="av_innerBlock">'+imagestring+'</div>').appendTo(block).css({	
129								position:'absolute',
130								left:-posX,
131								top:-posY,
132								height: slider.currentOptions.slideHeight,
133								width:slider.currentOptions.slideWidth
134							});
135						
136						posX += slider.currentOptions.blockWidth;
137						
138						if(posX >= slider.currentOptions.slideWidth)
139						{
140							posX = 0;
141							posY += slider.currentOptions.blockHeight;
142						}
143
144						if(posY >= slider.currentOptions.slideHeight)
145						{	
146							//end adding Blocks
147							generateBlocks = false;
148						}
149					} // end while
150				},
151				
152				use_preset_animation: function(slider, animation)
153				{
154					var options = {},
155						animationOptions = ["fade", "slide", "square", "square-fade", "square-random", "square-random-fade", "bar-vertical-top", "bar-vertical-side", "bar-vertical-mesh", "bar-vertical-random", "bar-horizontal-top", "bar-horizontal-side", "bar-horizontal-mesh", "bar-horizontal-random", "square-zoom", "bar-vertical-zoom", "bar-horizontal-zoom"],
156						x = slider.currentOptions.slideWidth,
157						y = slider.currentOptions.slideHeight,
158						randomCount = animationOptions.length;
159					
160					if(!slider.css_active)	randomCount -= 3; //subtract the css3 transitions
161					if(animation == 'random') animation = animationOptions[Math.floor(Math.random() * randomCount)];
162					var squares = 8;
163					
164					switch(animation)
165					{
166						case "fade": options = { blockHeight: y, blockWidth: x, transitionFx: 'fade', betweenBlockDelay: 50, transitionSpeed:600, order:'' }; break;
167						case "slide": options = { blockHeight: y, blockWidth: x, transitionFx: 'side', betweenBlockDelay: 50, transitionSpeed:600, order:'' }; break;
168					
169						case "square": options = { blockHeight: Math.ceil(x/squares), blockWidth: Math.ceil(x/squares), transitionFx: 'slide', betweenBlockDelay: 50, transitionSpeed:600, order:'diagonal' }; break;
170						case "square-fade": options = { blockHeight: Math.ceil(x/squares), blockWidth: Math.ceil(x/squares), transitionFx: 'fade', betweenBlockDelay: 50, transitionSpeed:600, order:'diagonal' }; break;
171						case "square-random": options = { blockHeight: Math.ceil(x/squares), blockWidth: Math.ceil(x/squares), transitionFx: 'slide', betweenBlockDelay: 50, transitionSpeed:600, order:'random' }; break;
172						case "square-random-fade": options = { blockHeight: Math.ceil(x/squares), blockWidth: Math.ceil(x/squares), transitionFx: 'fade', betweenBlockDelay: 50, transitionSpeed:600, order:'random' }; break;
173						case "square-zoom": options = { blockHeight: Math.ceil(x/squares), blockWidth: Math.ceil(x/squares), transitionFx: 'zoom', betweenBlockDelay: 50, transitionSpeed:600, order:'diagonal' }; break;
174
175						case "bar-vertical-top": options  = { blockHeight: y, blockWidth: Math.ceil(x/12), transitionFx: 'drop', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
176						case "bar-vertical-side": options  = { blockHeight: y, blockWidth: Math.ceil(x/12), transitionFx: 'side-stay', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
177						case "bar-vertical-mesh": options  = { blockHeight: y, blockWidth: Math.ceil(x/12), transitionFx: 'mesh-vert', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
178						case "bar-vertical-random": options  = { blockHeight: y, blockWidth: Math.ceil(x/12), transitionFx: 'fade', betweenBlockDelay: 100, transitionSpeed:600, order:'random' }; break;
179						case "bar-vertical-zoom": options  = { blockHeight: y, blockWidth: Math.ceil(x/12), transitionFx: 'zoom', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
180
181						case "bar-horizontal-top": options  = { blockHeight: Math.ceil(y/6), blockWidth: x, transitionFx: 'drop', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
182						case "bar-horizontal-side": options  = { blockHeight: Math.ceil(y/6), blockWidth: x, transitionFx: 'side', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
183						case "bar-horizontal-mesh": options  = { blockHeight: Math.ceil(y/6), blockWidth: x, transitionFx: 'mesh-hor', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
184						case "bar-horizontal-random": options  = { blockHeight: Math.ceil(y/6), blockWidth: x, transitionFx: 'fade', betweenBlockDelay: 100, transitionSpeed:600, order:'random' }; break;
185						case "bar-horizontal-zoom": options  = { blockHeight: Math.ceil(y/6), blockWidth: x, transitionFx: 'zoom', betweenBlockDelay: 100, transitionSpeed:600, order:'' }; break;
186					}
187					
188					$.extend(slider.currentOptions, options);
189
190				},
191				
192				start_block_transition: function(slider)
193				{
194					//fire transition
195					slider.blocks.each(function(i)
196					{	
197						var currentBlock = $(this);
198						
199						setTimeout(function()
200						{	
201							var transitionObject = {};
202							transitionObject['css']  = {display:'block',opacity:0}
202;
203							transitionObject['anim'] = {opacity:1};
204
205							switch(slider.currentOptions.transitionFx)
206							{
207								case 'fade':
208									//default opacity fade defined above
209								break;
210							
211								case 'drop':
212									if(slider.isMobile) 
213									{
214										var modifier = 1;
215										if(slider.moveDirection < 0) modifier = modifier * -1;
216										
217										transitionObject['css'][slider.css_prefix+'transform-origin'] = '0 0';
218										transitionObject['css'][slider.css_prefix+'transform'] = 'rotate(0deg) scale(1, 0.1) skew(0deg, 0deg)';
219										transitionObject['anim'][slider.css_prefix+'transform'] ='rotate(0deg) scale(1,1) skew(0deg, 0deg)';
220									}
221									else
222									{
223										transitionObject['css']['height'] 	= 1;
224										transitionObject['css']['width']  	= slider.currentOptions.blockWidth;
225										
226										transitionObject['anim']['height']  = slider.currentOptions.blockHeight;
227										transitionObject['anim']['width']  	= slider.currentOptions.blockWidth;
228									}
229								break;
230								
231								case 'side':
232								
233									var modifier = -1;
234									if(slider.moveDirection < 0) modifier = 1;
235									if(slider.isMobile) 
236									{
237										modifier = modifier * -1;
238										transitionObject['css'][slider.css_prefix+'transform'] = 'translateX('+( slider.currentOptions.slideWidth * modifier) +'px)';
239										transitionObject['anim'][slider.css_prefix+'transform'] ='translateX(0px)';
240									
241									}
242									else
243									{
244										transitionObject['css']['left']  = slider.currentOptions.slideWidth * modifier;
245										transitionObject['anim']['left'] = parseInt(currentBlock.css('left'),10);
246									}
247								break;
248								
249								
250								case 'side-stay':
251									if(slider.isMobile) 
252									{
253										transitionObject['css'][slider.css_prefix+'transform'] = 'rotate(0deg) scale(0.1,1) skew(0deg, 0deg)';
254										transitionObject['anim'][slider.css_prefix+'transform'] ='rotate(0deg) scale(1,1) skew(0deg, 0deg)';
255									}
256									else
257									{
258										transitionObject['css']['width']  	= 1;
259										transitionObject['anim']['width']  	= slider.currentOptions.blockWidth;
260									}
261								break;
262								
263								
264								case 'zoom': 
265									transitionObject['css'][slider.css_prefix+'transform'] = 'rotate(0deg) scale(2) skew(0deg, 0deg)';
266									transitionObject['anim'][slider.css_prefix+'transform'] ='rotate(0deg) scale(1) skew(0deg, 0deg)';
267								break;
268	
269								
270								case 'mesh-vert':
271								
272									var modifier = -1;
273									if(i % 2) modifier = 1;
274									
275									if(slider.isMobile)
276									{
277										transitionObject['css'][slider.css_prefix+'transform'] = 'translateY('+( slider.currentOptions.slideWidth * modifier) +'px)';
278										transitionObject['anim'][slider.css_prefix+'transform'] ='translateY(0px)';
279									}
280									else
281									{
282										transitionObject['css']['top']  = slider.currentOptions.slideHeight * modifier;
283										transitionObject['anim']['top'] = parseInt(currentBlock.css('top'),10);
284									}
285								break;
286								
287								case 'mesh-hor':
288									var modifier = -1;
289									if(i % 2) modifier = 1;
290									
291									if(slider.isMobile)
292									{
293										transitionObject['css'][slider.css_prefix+'transform'] = 'translateX('+( slider.currentOptions.slideWidth * modifier) +'px)';
294										transitionObject['anim'][slider.css_prefix+'transform'] ='translateX(0px)';
295									}
296									else
297									{
298										transitionObject['css']['left']  = slider.currentOptions.slideWidth * modifier;
299										transitionObject['anim']['left'] = parseInt(currentBlock.css('left'),10);
300									}
301									
302								break;
303								
304								case 'slide':
305									if(slider.isMobile)
306									{
307										transitionObject['css'][slider.css_prefix+'transform'] = 'rotate(0deg) scale(0.1) skew(0deg, 0deg)';
308										transitionObject['anim'][slider.css_prefix+'transform'] ='rotate(0deg) scale(1) skew(0deg, 0deg)';
309									}
310									else
311									{
312										transitionObject['css']['height'] 	= 1;
313										transitionObject['css']['width']  	= 1;
314										
315										transitionObject['anim']['height']  = slider.currentOptions.blockHeight;
316										transitionObject['anim']['width']  	= slider.currentOptions.blockWidth;
317									}
318								break;
319							
320							
321							}
322				
323						
324							currentBlock.css(transitionObject['css']);
325														
326							slider.methods.animate(currentBlock, transitionObject['anim'], function()
327							{ 
328								if(i+1 == slider.blockNumber)
329								{	
330									slider.methods.change_finished(false, slider);
331								}
332							}, true);
333							
334							
335						}, i*slider.currentOptions.betweenBlockDelay);
336					});
337				},
338				
339				clean_up_hook: function(slider)
340				{
341					if(!slider.blocks || !slider.blocks.length) return;
342					
343					slider.methods.remove_css_transition(slider.blocks);
344				
345					var fadeOut = 10;
346					if(slider.currentSlide.is('.withCaption')) fadeOut = 500;
347					
348					slider.blocks.animate({opacity:0}, fadeOut, function()
349					{
350						slider.blocks.remove();
351						slider.animating 	= false;
352					});
353				},
354				
355				// array sorting
356				fyrandomize: function(object) 
357				{	
358					var length = object.length,
359						objectSorted = $(object);
360						
361					if ( length == 0 ) return false;
362					
363					while ( --length ) 
364					{
365						var newObject = Math.floor( Math.random() * ( length + 1 ) ),
366							temp1 = objectSorted[length],
367							temp2 = objectSorted[newObject];
368						objectSorted[length] = temp2;
369						objectSorted[newObject] = temp1;
370					}
371					return objectSorted;
372				},
373				
374				diagonal: function(object, slider)
375				{
376					var length = object.length, 
377						objectSorted = $(object),	
378						currentIndex = 0,		//index of the object that should get the object in "i" applied
379						rows = Math.ceil(slider.currentOptions.slideHeight / slider.currentOptions.blockHeight),
380						columns = Math.ceil(slider.currentOptions.slideWidth / slider.currentOptions.blockWidth),
381						oneColumn = slider.blockNumber/columns,
382						oneRow = slider.blockNumber/rows,
383						modX = 0,
384						modY = 0,
385						i = 0,
386						rowend = 0,
387						endreached = false,
388						onlyOne = false; 
389					
390					if ( length == 0 ) return false;
391					for (i = 0; i<length; i++ ) 
392					{
393						objectSorted[i] = object[currentIndex];
394						
395						if((currentIndex % oneRow == 0 && slider.blockNumber - i > oneRow)|| (modY + 1) % oneColumn == 0)
396						{						
397							currentIndex -= (((oneRow - 1) * modY) - 1); modY = 0; modX ++; onlyOne = false;
398							
399							if (rowend > 0)
400							{
401								modY = rowend; currentIndex += (oneRow -1) * modY;
402							}
403						}
404						else
405						{
406							currentIndex += oneRow -1; modY ++;
407						}
408						
409						if((modX % (oneRow-1) == 0 && modX != 0 && rowend == 0) || (endreached == true && onlyOne == false) )
410						{	
411							modX = 0.1; rowend ++; endreached = true; onlyOne = true;
412						}	
413					}
414					
415				return objectSorted;						
416				}
417
418			};
419 		
420		return this.avia_base_slider(options, methods);
421	}
422	
423})(jQuery);
424 
425 
426 
427/**
428 * Avia Base Slider - A responsive jQuery image slider, capable of displaying video and a good starting point for modified slideshows 
429 * (c) Copyright Christian "Kriesi" Budschedl
430 * http://www.kriesi.at
431 * http://www.twitter.com/kriesi/
432 *
433 * Help Sources:
434 * http://www.w3schools.com/css3/css3_user_interface.asp
435 * http://googlecode.blogspot.com/2010/08/css3-transitions-and-transforms-in.html
436 * http://stackoverflow.com/questions/5819912/webkit-transition-end-in-mozilla-and-opera
437 * http://www.the-art-of-web.com/css/css-animation/
438 * http://matthewlein.com/ceaser/
439 * http://www.zackgrossbart.com/hackito/touchslider/
440 * http://www.sitepen.com/blog/2008/07/10/touching-and-gesturing-on-the-iphone/
441 * http://www.learningjquery.com/2007/10/a-plugin-development-pattern
442 * http://fluidproject.org/blog/2008/08/04/in-praise-of-jqueryextend/
443 */
444
445
446/* this prevents dom flickering, needs to be outside of dom.ready event: */
447document.documentElement.className += ' js_active ';
448/*end dom flickering =) */
449
450
451(function($)
452{
453	var slideshow_counter = 0;
454	
455	$.fn.avia_base_slider = function(options, overwrite_methods) 
456	{
457		var pluginNameSpace = 'avia_base',
458		
459		resize_helper	= function()
460		{
461			var $window = $(window), resize_timeout = "";
462			$window.bind('resize.'+pluginNameSpace, function(){	
463				clearTimeout(resize_timeout);
464				resize_timeout =  setTimeout(function(){$window.trigger('resize_finished.'+pluginNameSpace)}, 500);
465			});
466		};
467		
468	
469		//activate helper
470		if(this.length)
471		{
472			resize_helper();
473		}
474	
475		//iterate over all slideshows
476		return this.each(function()
477		{	
478			slideshow_counter++;
479						
480			var slider =  $(this), 
481			
482			methods = {
483			
484				preload: function(slider)
485				{
486					methods.append_caption();
487					var delay = 0, fadeInSpeed = 0;
488					if(slider.options.globalDelay)
489					{
490						delay = slideshow_counter * slider.options.globalDelay;
491						fadeInSpeed = 10;
492					}
493					
494					slider.aviaImagePreloader({fadeInSpeed: fadeInSpeed, globalDelay: delay },function(){ methods.init.apply( slider ); });
495				},
496					
497				init: function()
498				{
499				
500					methods.init_hook(slider);
501					methods.overwrite_options(slider, slider.options);
502					methods.set_slide_proportions(false, function(){ methods.img_ready_hook(slider) }, true);
503					methods.set_video_slides();
504					methods.bind_events();
505					methods.css_setup_and_display();
506					methods.append_controls();
507					methods.activate_touch_control();
508					methods.start_autorotation();
509				},
510				
511				init_hook: function(slider)
512				{
513					//blank function which can be used to modify the slider behaviour by another plugin building upon it
514				},
515				
516				img_ready_hook: function(slider)
517				{
518					//blank function which can be used to modify the slider behaviour by another plugin building upon it
519				},
520				
521				first_img_displayed_hook: function(slider)
522				{
523					//blank function which can be used to modify the slider behaviour by another plugin building upon it
524					slider.removeClass('preloading');
525				},
526				
527				bind_events: function()
528				{
529					//handle resizing
530					var win = $(window);
531					win.bind('resize.'+pluginNameSpace, methods.set_slide_proportions);
532					
533					//handle clicking on slide controls
534					slider.bind('switch.'+pluginNameSpace , methods.try_slide_transition);
535					
536					//slide transitioning
537					slider.slides.bind("webkitTransitionEnd oTransitionEnd OTransitionEnd transitionend mozTransitionEnd",  methods.change_finished);
538					
539					//stop autorotation if link inside the slider is clicked
540					slider.find('a').bind('click.'+pluginNameSpace, methods.pause_slider);
541				
542					//show videos
543					slider.slides.bind('click.'+pluginNameSpace, function()
544					{ 
545						var clicked_item = $(this);
546						
547						if(clicked_item.is('.comboslide'))
548						{
549							if(clicked_item.find('img:visible').length)
550							{	
551								methods.showvideo(clicked_item); 
552								methods.pause_slider();
553								return false; 
554							}
555						}
556					});
557				},
558				
559				set_slide_proportions: function(event, callback)
560				{
561					slider.proportions = 16 / 9; //default width if no image is available
562					if(slider.currentImg) slider.proportions = slider.currentImg.width / slider.currentImg.height;
563					var properties = {height:slider.width() / slider.proportions};
564					
565					if(event && event.originalEvent && event.originalEvent.type == 'resize') 
566					{
567						methods.remove_css_transition(slider);
568						slider.css(properties); 
569					}
570					else
571					{
572						methods.animate(slider, properties, callback, true);
573					}
574				},
575				
576				try_set_slide_proportions: function() //checks if the next image is smaller and resizes the container at the start of the transition
577				{
578					var nextImg = slider.nextSlide.find('img').get(0);
579					
580					if(nextImg)
581					{
582						var	nextProportions = nextImg.width / nextImg.height;
583						
584						if(nextProportions > slider.proportions)
585						{
586							slider.currentImg = nextImg;
587							methods.set_slide_proportions(false);
588						}
589					}
590				},
591								
592				css_setup_and_display: function()
593				{
594					slider.currentSlide.css({zIndex: 3, opacity:0, visibility:'visible'});
595					slider.slides.each(function(i)
596					{
597						if($.browser.msie) $(this).css({backgroundColor:'#000000'}); //fix iebug where images appear buggy
598						$(this).css({position:'absolute'}).addClass('slide_number_'+ (i+1));
599					});
600
601					//display the fist slide. default jquery animation is sufficient
602					slider.currentSlide.animate({opacity:1}, 1200, function()
603					{
604						methods.first_img_displayed_hook(slider);
605					});
606					
607				},
608				/************************************************************************
609				SECTION: Video helper
610				*************************************************************************/	
611				
612				set_video_slides: function()
613				{
614					slider.slides.each(function(i)
615					{
616						var currentslide 	= $(this);
617						var imageslide 		= currentslide.find('img');
618						var videoslide		= currentslide.find('video, embed, object, iframe, .avia_video').attr('wmode','opaque');
619						var iframe			= currentslide.find('iframe');
620						var src 			= iframe.attr('src');
621						var classname		= 'emptyslide';
622						
623						if(src)
624						{
625							if(src.indexOf('?') !== -1)
626							{
627								src += "&wmode=opaque";
628							}
629							else
630							{
631								src += "?wmode=opaque";
632							}
633							
634							iframe.attr('src', src);
635						}
636						
637						if(imageslide.length && videoslide.length)
638						{
639							classname = 'comboslide';
640						}
641						else if(videoslide.length)
642						{
643							classname = 'videoslide';
644						}
645						else if(imageslide.length)
646						{
647							classname = 'imageslide';
648						}
649						
650						currentslide.addClass(classname).append('<span class="slideshow_overlay"></span>');
651						
652						// initialy google chrome youtube fix: youtube videos need to be hidden and then shown before they respond to zIndex properties
653						// now used on every video only slide
654						if(classname == 'videoslide')
655						{
656							videoslide.css({display:"none"});
657							setTimeout(function()
658							{
659								videoslide.css({display:"block"});
660							},10)
661						}					
662						
663					});
664				},
665				
666							
667				showvideo: function(clicked_item)
668				{
669					var iframe 	= clicked_item.find('iframe'),
670						param	= clicked_item.find('param[name=movie]'),
671						embed	= clicked_item.find('embed')
672						object	= clicked_item.find('object')
673						src = "";
674						
675					//try to activate autoplay
676					if(iframe.length)
677					{
678						src = iframe.attr('src');
679						if(src && slider.options.try_video_autoplay)
680						{
681							src += "&autoplay=1";
682							iframe.attr('src', src);
683						}
684						
685						iframe.css('display','block');
686					}
687					
688					if(object.length)
689					{
690						src = param.val();
691						if(src && slider.options.try_video_autoplay)
692						{
693							if(src.indexOf('?') !== -1){ src += "&amp;autoplay=1"; }
694							else { src += "?autoplay=1"; }
695							param.val(src);
696						}
697						object.css('display','block');
698					}
699					
700					if(embed.length)
701					{
702						src = embed.attr('src');
703						if(src && slider.options.try_video_autoplay)
704						{
705							if(src.indexOf('?') !== -1){ src += "&amp;autoplay=1"; }
706							else { src += "?autoplay=1"; }
707							embed.attr('src',src)
708						}
709						embed.css('display','block');
710					}
711					
712					clicked_item.find('.slideshow_overlay, .'+slider.options.captionClass).stop().animate({opacity:0}
712, function()
713					{
714						$(this).css({zIndex:0, visibility:'hidden', display:'none'});
715					});
716					
717					setTimeout(function(){
718					clicked_item.find('img, canvas').stop().animate({opacity:0}, function()
719					{
720						$(this).css({zIndex:0, visibility:'hidden', display:'none'});
721					});
722					},200);
723				},
724
725				
726				/************************************************************************
727				SECTION: Animation helper
728				*************************************************************************/
729				
730				set_css_transition: function(element)
731				{
732					var property 	= slider.css_prefix + 'transition',
733						transition  = {};
734						
735					transition[property] = 'all '+(slider.options.transitionSpeed/1000)+'s '+slider.options.cssEasing;
736					element.css(transition);
737				},
738				
739				remove_css_transition: function(element)
740				{
741					var property 	= slider.css_prefix + 'transition',
742						transition  = {};
743						
744					transition[property] = "none";
745					element.css(transition);
746				},
747				
748				animate: function(element, properties, callback, callback_by_timeout)
749				{
750				
751					if(slider.css_active)
752					{
753						setTimeout(function(){ methods.set_css_transition(element); },10);
754						setTimeout(function(){ element.css(properties); },20);
755						if(callback && callback_by_timeout) setTimeout(function(){callback.call();}, slider.options.transitionSpeed);
756					}
757					else
758					{
759						element.animate(properties, slider.options.transitionSpeed, slider.options.easing, callback);
760					}
761				
762				},
763				
764				
765				/************************************************************************
766				SECTION: ADD controls
767				*************************************************************************/
768				
769				append_controls: function()
770				{
771					if(slider.count > 1 && (!slider.isMobile ||  slider.isMobile && !slider.options.forceMobile))
772					{
773						slider.controls.numeric = $('<div class="numeric_controls slide_controls"></div>').insertAfter(slider);
774						
775						//numeric controls
776						var active_class = "class='active_item'";
777						slider.slides.each(function(i)
778						{
779							$('<a '+active_class+' href="#" data-show-slide="'+i+'" >'+(i+1)+'</a>').appendTo(slider.controls.numeric); active_class = "";
780						});
781						
782					
783						//arrow controls
784						var labels = ['previous', 'pause_play', 'next']; 
785						slider.controls.arrow = $('<div class="arrow_controls slide_controls"></div>').insertAfter(slider); 
786						for (x in labels)
787						{
788							var extra_class = 'class = "ctrl_'+labels[x]+'"';
789							
790							if(labels[x] == "pause_play")
791							{
792								if(slider.options.autorotation == false)
793								{
794									labels[x] = 'Play';
795								}
796								else
797								{
798									extra_class = 'class = "ctrl_active_rotation ctrl_'+labels[x]+'"';
799									labels[x] = 'Pause';
800								}
801							} 
802							
803							if(typeof labels[x] == 'string')
804							{
805								$('<a '+extra_class+' href="#" data-show-slide="'+labels[x]+'" >'+labels[x]+'</a>').appendTo(slider.controls.arrow); 
806							}
807						}
808						
809						slider.pauseButton = slider.controls.arrow.find('.ctrl_pause_play');
810						methods.activate_controls();
811					}
812				},
813				
814				activate_controls: function()
815				{
816					slider.pauseButton.bind('click', function(){ methods.toogle_autorotation(); return false;})	
817				
818					slider.controls.numeric.find('a').bind('click', function()
819					{ 
820						methods.pause_slider(); slider.trigger('switch.'+pluginNameSpace, this); return false;
821					});
822							
823					slider.controls.arrow.find('a').not('.ctrl_pause_play').bind('click',function()
824					{ 
825						methods.pause_slider(); slider.trigger('switch.'+pluginNameSpace, this); return false;
826					})	
827						
828				},
829				
830				new_active_control: function(target)
831				{
832					var controls = slider.controls.numeric.find('a').removeClass('active_item');
833					controls.filter(':eq('+target+')').addClass('active_item');
834				},
835				
836				activate_touch_control:function()
837				{
838					if(slider.css_active && slider.isMobile)
839					{
840						slider.touchPos = {};
841						slider.hasMoved = false;
842						
843						if(slider.options.forceMobile) slider.options.transition = 'move';
844						
845						slider.bind('touchstart', function(event)
846						{
847							slider.touchPos.X = event.originalEvent.touches[0].clientX;
848							slider.touchPos.Y = event.originalEvent.touches[0].clientY;
849						});
850						
851						slider.bind('touchend', function(event)
852						{
853							slider.touchPos = {};
854			                if(slider.hasMoved) { event.preventDefault(); }
855			                slider.hasMoved = false;
856						});
857						
858						slider.bind('touchmove', function(event)
859						{
860							if(!slider.touchPos.X) 
861							{
862								slider.touchPos.X = event.originalEvent.touches[0].clientX;
863								slider.touchPos.Y = event.originalEvent.touches[0].clientY;
864							}
865							else
866							{
867								var differenceX = event.originalEvent.touches[0].clientX - slider.touchPos.X; 
868								var differenceY = event.originalEvent.touches[0].clientY - slider.touchPos.Y; 
869								
870								//check if user is scrolling the window or moving the slider
871								if(Math.abs(differenceX) > Math.abs(differenceY)) 
872								{
873									event.preventDefault();
874									
875									if(!slider.animating)
876									{	
877										if(slider.touchPos != event.originalEvent.touches[0].clientX)
878										{
879											if(Math.abs(differenceX) > 50)
880											{
881												var move = differenceX > 0 ? 'previous' : 'next';
882												
883												methods.pause_slider();
884												methods.try_slide_transition(false, move);
885												slider.touchPos = {};
886												slider.hasMoved = true;
887												return false;
888						                	}
889						                }
890						
891					                }
892				                }
893			                }
894		            	});
895					}
896				},
897								
898				
899				/************************************************************************
900				SECTION: Autorotation
901				*************************************************************************/	
902							
903				start_autorotation: function()
904				{
905					if(slider.count)
906					{
907						slider.interval = setInterval(function()
908						{
909							if(slider.options.autorotation)
910							{	
911								slider.trigger('switch.'+pluginNameSpace, 'next');
912							}
913						}, 
914						slider.options.autorotationTimer * 1000);
915					}
916				},
917				
918				
919				toogle_autorotation: function()
920				{
921					if(slider.options.autorotation)
922					{
923						methods.pause_slider();
924					}
925					else
926					{
927						methods.unpause_slider();
928					}
929				},
930
931				pause_slider: function()
932				{
933					if(slider.pauseButton.length) slider.pauseButton.removeClass('ctrl_active_rotation').text('Play');
934					slider.options.autorotation = false;
935					clearInterval(slider.interval);
936				},
937				
938				unpause_slider: function()
939				{
940					if(slider.pauseButton.length) slider.pauseButton.addClass('ctrl_active_rotation').text('Pause');
941					slider.options.autorotation = true;
942					methods.try_slide_transition(false, 'next');
943					methods.start_autorotation();
944				},
945				
946				try_slide_transition: function(event, target)
947				{
948					if(!slider.is(':visible'))
949					{
950						methods.pause_slider();
951						return false;
952					}
953				
954					slider.moveDirection = false;
955					target = methods.calculate_target(target);
956				
957					if(slider.animating) return false;
958					if(target == slider.currentIndex) return false;
959					
960					slider.nextIndex = target;
961					slider.animating = true;
962					methods.change_slides(target);
963				},
964				
965				/************************************************************************
966				SECTION: Append Caption
967				*************************************************************************/
968				
969				append_caption: function(slider_passed)
970				{
971					if(slider_passed) slider = slider_passed;
972					
973					slider.slides.each(function()
974					{
975						var current 	= $(this),
976							caption 	= current.data('caption'),
977							container 	= "div",
978							link 		= current.find('a'),
979							href		= "";
980						
981						if(caption)
982						{
983							if(!$(caption).find('a').length && link.length)
984							{
985								href = "href='"+link.attr('href')+"'";
986								container = "a";
987							}
988							
989							current.addClass('withCaption');
990							var current_caption = $("<"+container+" "+href+" class='slideshow_caption'><div class='slideshow_inner_caption'><div class='slideshow_align_caption'>"+caption+"</div></div></"+container+">").appendTo(current);
991						}
992					});
993					
994					
995					
996				},
997				
998				/************************************************************************
999				SECTION: CHANGE SLIDES
1000				*************************************************************************/
1001				
1002				calculate_target: function(target)
1003				{
1004					if(typeof target == 'object') target = $(target).data('show-slide');
1005					switch(target)
1006					{
1007						case 'next': target = slider.currentIndex + 1; slider.moveDirection = 1000; break;
1008						case 'previous': target = slider.currentIndex - 1; slider.moveDirection = -1000; break;
1009					}
1010					
1011					if(slider.currentIndex > target) slider.moveDirection = -1000;
1012					if(target < 0) target = slider.count - 1;
1013					if(target == slider.count) target = 0;
1014					
1015					return target;
1016				},
1017				
1018				change_slides: function(target)
1019				{
1020					
1021					methods.new_active_control(target);
1022					slider.nextSlide = slider.slides.filter(':eq('+target+')');
1023					methods.try_set_slide_proportions();
1024					methods[slider.options.transition].call(this, slider);
1025				},
1026				
1027				fade: function()
1028				{
1029					slider.nextSlide.css({display:'block', zIndex:2, opacity:1});
1030					methods.animate(slider.currentSlide, {opacity:0}
1030, methods.change_finished);
1031				},
1032				
1033				move: function()
1034				{
1035					var sliderWidth = slider.width(),
1036						transition  = {},
1037						transition2  = {},
1038						modifier 	= -1;
1039					
1040					if(slider.currentIndex > slider.nextIndex) modifier = 1;
1041					if(slider.moveDirection)
1042					{
1043						if(slider.moveDirection > 0) modifier = -1;
1044						if(slider.moveDirection < 0) modifier =  1;
1045					}
1046					
1047					
1048					slider.nextSlide.css({display:'block', zIndex:4, opacity:1, left:0, top:0});
1049					if(slider.css_active)
1050					{
1051						var property  = slider.css_prefix + 'transform';
1052						
1053						slider.nextSlide.css(property, "translate(" + ( sliderWidth * modifier * -1) + "px,0)");
1054						transition[property]  = "translate(" + ( sliderWidth * modifier) + "px,0)";
1055						transition2[property] = "translate(0,0)";
1056					}
1057					else
1058					{
1059						slider.nextSlide.css({left:sliderWidth * modifier * -1});
1060						transition['left'] = sliderWidth * modifier;
1061						transition2['left'] = 0;
1062					}
1063					
1064					methods.animate(slider.nextSlide,    transition2, methods.change_finished);
1065					methods.animate(slider.currentSlide, transition);
1066				},
1067				
1068				change_finished: function(event, slider_passed)
1069				{	
1070					if(slider_passed) slider = slider_passed;
1071					
1072					if(event) methods.remove_css_transition($(event.target));
1073					slider.slides.css({display:'none', zIndex:1});
1074					
1075					slider.currentSlide	= slider.nextSlide.css({display:'block', zIndex:3, left:0, top:0});
1076					slider.currentIndex	= slider.slides.index(slider.currentSlide);
1077					slider.currentImg	= slider.currentSlide.find('img').get(0);
1078					methods.set_slide_proportions();
1079					methods.clean_up_hook(slider);
1080					
1081				},
1082				
1083				clean_up_hook: function(slider)
1084				{
1085					//blank fanction which can be used to modify the slider behaviour by another plugin building upon it
1086					slider.animating 	= false;
1087				},
1088				
1089				
1090				/************************************************************************
1091				methods.overwrite_defaults:
1092				
1093				lets you overwrite options for multiple sliders on one page with different 
1094				settings, without the need to call the slider function multiple times
1095				*************************************************************************/
1096				overwrite_options: function(element, array)
1097				{
1098					var htmlData = element.data(),
1099					i = "";
1100					
1101					for (i in htmlData)
1102					{
1103					
1104						if(typeof htmlData[i] == "string" || typeof htmlData[i] == "number" || typeof htmlData[i] == "boolean")
1105						{
1106							array[i] = htmlData[i];
1107						}
1108					}
1109						
1110				},
1111				
1112				css3_transition_check: function()
1113				{
1114					if("webkitTransition" in document.body.style)
1115					{
1116						slider.css_active		= true;
1117						slider.css_prefix		= "-webkit-";
1118					}
1119					 
1120					if("msTransition" in document.body.style)
1121					{
1122						slider.css_active		= true;
1123						slider.css_prefix		= "-ms-";
1124					}
1125					
1126					if("MozTransition" in document.body.style)
1127					{
1128						slider.css_active		= true;
1129						slider.css_prefix		= "-moz-";
1130					}
1131					
1132					if("OTransition" in document.body.style)
1133					{
1134						slider.css_active		= true;
1135						slider.css_prefix		= "-o-";
1136					}
1137					
1138					if("transition" in document.body.style)
1139					{
1140						slider.css_active		= true;
1141						slider.css_prefix		= "";
1142					}
1143					/**/
1144
1145				}
1146				
1147			},
1148			
1149			//default slideshow settings. can be overwritten by passing different values when calling the function 
1150			defaults = 
1151			{
1152				autorotation: 		false,				// autorotation true or false?
1153				autorotationTimer:	6,					// duration between autorotation switch in Seconds
1154				transitionSpeed: 	400,				// animation speed
1155				cssEasing: 			'cubic-bezier(0.560, 0.000, 0.070, 1.000)',		// easing for CSS transition
1156				easing: 			'easeInOutQuint',	// easing for JS transitions
1157				slides: 			'li',				// wich element inside the container should serve as slide
1158				pluginNameSpace:	'avia_base',		// define a plugin namespace
1159				transition:			'move',				// fade or move the slider
1160				forceMobile:		 false,				// forces the mobile version to mobile devices: only fade animation and touch gestures
1161				captionClass:		'slideshow_caption',//
1162				try_video_autoplay:	 true,				// try to start video autoplay once a user opens a slideshow video for the first time
1163				globalDelay:		0					// delay of appearance for multiple slideshows
1164			};
1165			
1166			//merge default options and options passed by the user, then collect some slider data
1167			slider.methods			= $.extend(methods, $.fn.avia_base_slider.methods , overwrite_methods);
1168			slider.options 			= $.extend({}, defaults, $.fn.avia_base_slider.defaults, options);
1169			slider.slides			= slider.find(slider.options.slides);
1170			slider.count 			= slider.slides.length;
1171			slider.animating		= false;
1172			slider.currentIndex		= 0;
1173			slider.nextIndex		= 0;
1174			slider.currentSlide		= slider.slides.filter(':eq('+slider.currentIndex+')');
1175			slider.nextSlide		= slider.currentSlide;
1176			slider.moveDirection	= false;
1177			slider.currentImg		= slider.currentSlide.find('img').get(0);
1178			slider.isMobile 		= 'ontouchstart' in document.documentElement;
1179			slider.proportions		= 16 / 9; //default value if we got a pure video slideshow
1180			slider.controls			= {};
1181			slider.pauseButton		= {};
1182			slider.interval 		= false;
1183			slider.css_active		= false;
1184			slider.css_prefix		= false;
1185			
1186			if(slider.options.pluginNameSpace) pluginNameSpace = slider.options.pluginNameSpace;
1187			
1188			methods.css3_transition_check();
1189			methods.preload(slider);
1190		
1191	});
1192	
1193}
1194	
1195})(jQuery);
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207 
1208
1209
1210
1211// -------------------------------------------------------------------------------------------
1212// show/hide controls
1213// -------------------------------------------------------------------------------------------
1214
1215(function($)
1216{
1217	$.fn.avia_base_control_hide = function() 
1218	{
1219		return this.each(function()
1220		{
1221			var container 	= $(this).parent();
1222			var controls;
1223			var isMobile    = 'ontouchstart' in document.documentElement
1224			
1225			if(!isMobile)
1226			{
1227					//next button click
1228					container.delegate('.nextSlide', 'click', function()
1229					{
1230						container.find('.ctrl_next').trigger('click');
1231					});
1232					
1233					
1234					/*
1235					container.delegate('.slideshow_caption, .slideshow_inner_caption', 'mouseleave', function(event)
1236					{
1237						container.trigger('mouseenter');
1238					});
1239					
1240					container.delegate('.slideshow_caption, .slideshow_inner_caption', 'mouseenter', function(event)
1241					{
1242						container.trigger('mouseleave');
1243					});
1244		*/
1245					
1246					
1247					//hover event
1248					container.hover(function(event)
1249					{
1250						//if($(event.target).is('.slideshow_caption, .slideshow_inner_caption')) return;
1251						controls = container.find('.slide_controls a').stop().css({display:'block', opacity:0}).animate({opacity:0.9});
1252					},
1253					
1254					function(event)
1255					{
1256						if(!controls) return;
1257					
1258						controls.stop().animate({opacity:0}
1258, function()
1259						{
1260							controls.css({opacity:0});
1261						});
1262					});
1263			
1264			}
1265
1266		});
1267	};
1268})(jQuery);
1269
1270
1271
1272// -------------------------------------------------------------------------------------------
1273// external controls
1274// -------------------------------------------------------------------------------------------
1275
1276(function($)
1277{
1278	$.fn.avia_external_controls = function() 
1279	{
1280		return this.each(function()
1281		{
1282			var container 	= $(this).parent();
1283			var controls 	= container.next('.thumbnails_container'),
1284				thumbs 		= controls.find('.slideThumb');
1285
1286			if(!controls.length) return;
1287			
1288			//next button click
1289			controls.delegate('.slideThumb', 'click', function(event)
1290			{
1291				thumbs.removeClass('activeslideThumb');
1292				var current = $(this).addClass('activeslideThumb');
1293				var index = thumbs.index(this);
1294				container.find('.numeric_controls a:eq('+index+')').trigger('click');
1295			});
1296
1297		});
1298	};
1299})(jQuery);
1300
1301
1302
1303// -------------------------------------------------------------------------------------------
1304// image preloader
1305// -------------------------------------------------------------------------------------------
1306
1307(function($)
1308{
1309	var aviaGlobalCount = 0
1310
1311	$.fn.aviaImagePreloader = function(variables, callback) 
1312	{
1313		var defaults = 
1314		{
1315			css_before_show:{},
1316			css_show:{},
1317			fadeInSpeed: 800,
1318			delay:0,
1319			maxLoops: 10,
1320			thisData: {},
1321			globalDelay:0,
1322			data: ''
1323		};
1324		
1325		var options 	= $.extend(defaults, variables),
1326			isMobile	= 'ontouchstart' in document.documentElement;
1327		
1328		aviaGlobalCount = aviaGlobalCount + this.find('img').length;
1329		
1330		return this.each(function()
1331		{
1332			var container 	= $(this),
1333				images		= $('img', this),
1334				parent = images.parent(),
1335				imageCount = images.length,
1336				interval = '',
1337				animTime = 300,
1338				greyscale_active = container.parents('.greyscale-active').length || container.is('.greyscale-active'),
1339				allImages = images ;
1340			
1341			if(isMobile) greyscale_active = false;			
1342			
1343			var methods = 
1344			{
1345				checkImage: function()
1346				{
1347					images.each(function(i)
1348					{
1349						if(this.complete == true) 
1350						{
1351							images = images.not(this);
1352							if(greyscale_active) methods.greyscaler(this);
1353						}
1354					});
1355					
1356					if(images.length && options.maxLoops >= 0)
1357					{
1358						options.maxLoops--;
1359						setTimeout(methods.checkImage, 500);
1360					}
1361					else
1362					{
1363						methods.showImages();
1364					}
1365					
1366					
1367				},
1368				
1369				showImages: function()
1370				{
1371					setTimeout(function()
1372					{
1373						allImages.each(function(i)
1374						{
1375							var currentImage = $(this);
1376							methods.showSingleImage(currentImage, i);
1377						});
1378					},
1379					options.globalDelay);
1380				},
1381				
1382				showSingleImage: function(currentImage, i)
1383				{	
1384					aviaGlobalCount --;
1385					
1386					if(options.css_before_show) currentImage.css(options.css_before_show);
1387					if(options.css_show) currentImage.animate(options.css_show, options.fadeInSpeed);
1388					
1389					if(allImages.length == i+1) 
1390					{
1391						if(aviaGlobalCount == 0) { $(window).trigger('avia_images_loaded'); }
1392						
1393						methods.callback(i);
1394					}
1395				},
1396				
1397				callback: function()
1398				{		
1399					if (variables instanceof Function) { callback = variables; }
1400					if (callback  instanceof Function) { callback.call(options.thisData, options.data);  }
1401				},
1402				
1403				greyscaler: function(image)
1404				{
1405					var clone, $img = $(image);
1406				
1407					if ($.browser.msie && $.browser.version < 9) 
1408					{
1409						clone = $img.clone().addClass('greyscale-image').insertBefore($img);
1410						
1411						var cloneEl = clone.get(0);
1412						cloneEl.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(grayScale=1)";
1413					} 
1414					else 
1415					{
1416						clone = avia_grayscale(image, $img)
1417						clone.insertAfter($img).addClass('greyscale-image');
1418					}
1419				},
1420				
1421				greyscale_bindings: function()
1422				{
1423					$(".greyscale-active").delegate(".flex_column", "mouseenter", function() 
1424					{
1425						var column 	= $(this), image = column.find('.greyscale-image');
1426					  	image.stop().animate({opacity:0}
1426,animTime);
1427					}
1428					).delegate(".flex_column", "mouseleave", function() 
1429					{
1430						var column 	= $(this), image = column.find('.greyscale-image');
1431					  	image.stop().animate({opacity:1},animTime);
1432					});
1433
1434				}
1435			};
1436			if ($.browser.msie && $.browser.version < 9) { animTime = 600; }
1437			if(greyscale_active) methods.greyscale_bindings();
1438			if(!images.length) { methods.callback(); if(aviaGlobalCount == 0) { $(window).trigger('avia_images_loaded'); } return }
1439			
1440			methods.checkImage();
1441
1442		});
1443	};
1444})(jQuery);
1445
1446
1447
1448
1449
1450
1451function avia_grayscale(image, $img)
1452{
1453
1454		var canvas = document.createElement('canvas');
1455		var ctx = canvas.getContext('2d');
1456		var newData = $img.data();
1457		
1458		if(newData.imgh > 0)
1459		{
1460			canvas.width = newData.imgw;
1461			canvas.height = newData.imgh;
1462		}
1463		else
1464		{
1465			var w = $img.attr('width'), h = $img.attr('height');
1466			if(w && h)
1467			{
1468				canvas.width = w;
1469				canvas.height = h;
1470			}
1471		}
1472		
1473		
1474		
1475	  	ctx.drawImage(image, 0, 0); 
1476		var imgPixels = ctx.getImageData(0, 0, canvas.width, canvas.height);
1477		for(var y = 0; y < imgPixels.height; y++){
1478			for(var x = 0; x < imgPixels.width; x++){
1479				var i = (y * 4) * imgPixels.width + x * 4;
1480				var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
1481				imgPixels.data[i] = avg; 
1482				imgPixels.data[i + 1] = avg; 
1483				imgPixels.data[i + 2] = avg;
1484			}
1485		}
1486		ctx.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
1487		
1488		return jQuery(canvas);
1489		  
1490		
1491    }
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501jQuery.easing['jswing'] = jQuery.easing['swing'];
1502
1503jQuery.extend( jQuery.easing,
1504{
1505	def: 'easeOutQuad',
1506	swing: function (x, t, b, c, d) {
1507		//alert(jQuery.easing.default);
1508		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
1509	},
1510	easeInQuad: function (x, t, b, c, d) {
1511		return c*(t/=d)*t + b;
1512	},
1513	easeOutQuad: function (x, t, b, c, d) {
1514		return -c *(t/=d)*(t-2) + b;
1515	},
1516	easeInOutQuad: function (x, t, b, c, d) {
1517		if ((t/=d/2) < 1) return c/2*t*t + b;
1518		return -c/2 * ((--t)*(t-2) - 1) + b;
1519	},
1520	easeInCubic: function (x, t, b, c, d) {
1521		return c*(t/=d)*t*t + b;
1522	},
1523	easeOutCubic: function (x, t, b, c, d) {
1524		return c*((t=t/d-1)*t*t + 1) + b;
1525	},
1526	easeInOutCubic: function (x, t, b, c, d) {
1527		if ((t/=d/2) < 1) return c/2*t*t*t + b;
1528		return c/2*((t-=2)*t*t + 2) + b;
1529	},
1530	easeInQuart: function (x, t, b, c, d) {
1531		return c*(t/=d)*t*t*t + b;
1532	},
1533	easeOutQuart: function (x, t, b, c, d) {
1534		return -c * ((t=t/d-1)*t*t*t - 1) + b;
1535	},
1536	easeInOutQuart: function (x, t, b, c, d) {
1537		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
1538		return -c/2 * ((t-=2)*t*t*t - 2) + b;
1539	},
1540	easeInQuint: function (x, t, b, c, d) {
1541		return c*(t/=d)*t*t*t*t + b;
1542	},
1543	easeOutQuint: function (x, t, b, c, d) {
1544		return c*((t=t/d-1)*t*t*t*t + 1) + b;
1545	},
1546	easeInOutQuint: function (x, t, b, c, d) {
1547		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
1548		return c/2*((t-=2)*t*t*t*t + 2) + b;
1549	},
1550	easeInSine: function (x, t, b, c, d) {
1551		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
1552	},
1553	easeOutSine: function (x, t, b, c, d) {
1554		return c * Math.sin(t/d * (Math.PI/2)) + b;
1555	},
1556	easeInOutSine: function (x, t, b, c, d) {
1557		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
1558	},
1559	easeInExpo: function (x, t, b, c, d) {
1560		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
1561	},
1562	easeOutExpo: function (x, t, b, c, d) {
1563		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
1564	},
1565	easeInOutExpo: function (x, t, b, c, d) {
1566		if (t==0) return b;
1567		if (t==d) return b+c;
1568		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
1569		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
1570	},
1571	easeInCirc: function (x, t, b, c, d) {
1572		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
1573	},
1574	easeOutCirc: function (x, t, b, c, d) {
1575		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
1576	},
1577	easeInOutCirc: function (x, t, b, c, d) {
1578		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
1579		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
1580	},
1581	easeInElastic: function (x, t, b, c, d) {
1582		var s=1.70158;var p=0;var a=c;
1583		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
1584		if (a < Math.abs(c)) { a=c; var s=p/4; }
1585		else var s = p/(2*Math.PI) * Math.asin (c/a);
1586		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
1587	},
1588	easeOutElastic: function (x, t, b, c, d) {
1589		var s=1.70158;var p=0;var a=c;
1590		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
1591		if (a < Math.abs(c)) { a=c; var s=p/4; }
1592		else var s = p/(2*Math.PI) * Math.asin (c/a);
1593		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
1594	},
1595	easeInOutElastic: function (x, t, b, c, d) {
1596		var s=1.70158;var p=0;var a=c;
1597		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
1598		if (a < Math.abs(c)) { a=c; var s=p/4; }
1599		else var s = p/(2*Math.PI) * Math.asin (c/a);
1600		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
1601		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
1602	},
1603	easeInBack: function (x, t, b, c, d, s) {
1604		if (s == undefined) s = 1.70158;
1605		return c*(t/=d)*t*((s+1)*t - s) + b;
1606	},
1607	easeOutBack: function (x, t, b, c, d, s) {
1608		if (s == undefined) s = 1.70158;
1609		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
1610	},
1611	easeInOutBack: function (x, t, b, c, d, s) {
1612		if (s == undefined) s = 1.70158; 
1613		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
1614		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
1615	},
1616	easeInBounce: function (x, t, b, c, d) {
1617		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
1618	},
1619	easeOutBounce: function (x, t, b, c, d) {
1620		if ((t/=d) < (1/2.75)) {
1621			return c*(7.5625*t*t) + b;
1622		} else if (t < (2/2.75)) {
1623			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
1624		} else if (t < (2.5/2.75)) {
1625			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
1626		} else {
1627			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
1628		}
1629	},
1630	easeInOutBounce: function (x, t, b, c, d) {
1631		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
1632		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
1633	}
1634});
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644function avia_log(text) 
1645{
1646	var ios = navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad)/);
1647	( (window.console && console.log && !ios) || (window.opera && opera.postError && !ios) ||  avia_text_log).call(this, text);
1648	
1649	function avia_text_log(text)
1650	{
1651		var logfield = jQuery('.avia_logfield');
1652		if(!logfield.length) logfield = jQuery('<pre class="avia_logfield"></pre>').appendTo('body').css({	zIndex:100000, 
1653																											padding:"20px", 
1654																											backgroundColor:"#ffffff", 
1655																											position:"fixed", 
1656																											top:0, right:0, 
1657																											width:"300px",
1658																											borderColor:"#cccccc",
1659																											borderWidth:"1px",
1660																											borderStyle:'solid',
1661																											height:"600px",
1662																											overflow:'scroll',
1663																											display:'block',
1664																											zoom:1
1665																											});
1666		var val = logfield.html();
1667		var text = avia_get_object(text);
1668		logfield.html(val + "\n<br/>" + text);
1669	}
1670	
1671	function avia_get_object(obj)
1672	{
1673		var sendreturn = obj;
1674		
1675		if(typeof obj == 'object' || typeof obj == 'array')
1676		{
1677			for (i in obj)
1678			{
1679				sendreturn += "'"+i+"': "+obj[i] + "<br/>";
1680			}
1681		}
1682		
1683		return sendreturn;
1684	}
1685}
1686
1687
1688
1689

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.