PageSourceSearch

https://www.eu9.com/wp-content/themes/enfold/js/shortcodes.js?ver=8.2

js eu9.com collected 2026-10-09 23:00:20 UTC 46,331 bytes, 1,626 lines download raw bytes

1(function($)
2{
3	"use strict";
4
5	$( function()
6	{
7		//global variables that are used on several ocassions
8		$.avia_utilities = $.avia_utilities || {};
9
10		if( 'undefined' == typeof $.avia_utilities.isMobile )
11		{
12			if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) && 'ontouchstart' in document.documentElement)
13			{
14				$.avia_utilities.isMobile = true;
15			}
16			else
17			{
18				$.avia_utilities.isMobile = false;
19			}
20		}
21
22		//activate fixed bg fallback for mobile
23		if( $.fn.avia_mobile_fixed )
24		{
25			$( '.avia-bg-style-fixed' ).avia_mobile_fixed();
26		}
27
28		//calculate the browser height and append a css rule to the head
29		if( $.fn.avia_browser_height )
30		{
31			$( '.av-minimum-height, .avia-fullscreen-slider, .av-cell-min-height' ).avia_browser_height();
32		}
33
34		//calculate the element height in a layout container
35		if( $.fn.avia_container_height )
36		{
37			$( '.av-column-min-height-pc' ).avia_container_height();
38		}
39
40		//calculate the height of each video section
41		if( $.fn.avia_video_section )
42		{
43			$( '.av-section-with-video-bg' ).avia_video_section();
44		}
45
46		//creates team social icon tooltip
47		new $.AviaTooltip({'class': "avia-tooltip", data: "avia-tooltip", delay:0, scope: "body"});
48
49		//creates icon element tooltip
50		new $.AviaTooltip({'class': "avia-tooltip avia-icon-tooltip", data: "avia-icon-tooltip", delay:0, scope: "body"});
51
52		$.avia_utilities.activate_shortcode_scripts();
53
54		//layer slider height helper
55		if( $.fn.layer_slider_height_helper )
56		{
57			$( '.avia-layerslider' ).layer_slider_height_helper();
58		}
59
60		//"ajax" portfolio
61		if( $.fn.avia_portfolio_preview )
62		{
63			$( '.grid-links-ajax' ).avia_portfolio_preview();
64		}
65
66		// activate the masonry script: sorting/loading/etc
67		if( $.fn.avia_masonry )
68		{
69			$( '.av-masonry' ).avia_masonry();
70		}
71
72		//activate the accordion
73		if( $.fn.aviaccordion )
74		{
75			$( '.aviaccordion' ).aviaccordion();
76		}
77
78
79		//activate the accordion
80		if( $.fn.avia_textrotator )
81		{
82			$( '.av-rotator-container' ).avia_textrotator();
83		}
84
85		//activates the tab section and slideshow section shortcode
86		if( $.fn.avia_sc_tab_section )
87		{
88			$( '.av-tab-section-container' ).avia_sc_tab_section();
89		}
90
91		//activates the hor gallery  shortcode
92		if( $.fn.avia_hor_gallery )
93		{
94			$( '.av-horizontal-gallery' ).avia_hor_gallery();
95		}
96
97		//	activate columns and cells with a link
98		if( $.fn.avia_link_column )
99		{
100			$( '.avia-link-column' ).avia_link_column();
101		}
102
103		if( $.fn.avia_delayed_animation_in_container )
104		{
105			$( '.av-animation-delay-container' ).avia_delayed_animation_in_container();
106		}
107	});
108
109
110// -------------------------------------------------------------------------------------------
111// ACTIVATE ALL SHORTCODES
112// -------------------------------------------------------------------------------------------
113
114	$.avia_utilities = $.avia_utilities || {};
115	$.avia_utilities.activate_shortcode_scripts = function( container )
116	{
117		if( typeof container == 'undefined' )
118		{
119			container = 'body';
120		}
121
122		//activates the form shortcode
123		if( $.fn.avia_ajax_form )
124		{
125			$( '.avia_ajax_form:not( .avia-disable-default-ajax )', container ).avia_ajax_form();
126		}
127
128		activate_waypoints( container );
129
130		//activate the video api
131		if( $.fn.aviaVideoApi )
132		{
133			$( '.avia-slideshow iframe[src*="youtube.com"], .av_youtube_frame, .av_vimeo_frame, .avia-slideshow video' ).aviaVideoApi({}, 'li');
134		}
135
136	    //activates the toggle shortcode
137		if( $.fn.avia_sc_toggle )
138		{
139			$( '.togglecontainer', container ).avia_sc_toggle();
140		}
141
142		//activates the tabs shortcode
143		if( $.fn.avia_sc_tabs )
144		{
145			$( '.top_tab', container ).avia_sc_tabs();
146			$( '.sidebar_tab', container ).avia_sc_tabs({sidebar:true});
147		}
148
149		//activates behavior and animation for gallery
150		if( $.fn.avia_sc_gallery )
151		{
152			$( '.avia-gallery', container ).avia_sc_gallery();
153		}
154
155		//activates animated number shortcode
156		if( $.fn.avia_sc_animated_number )
157		{
158			$( '.avia-animated-number', container ).avia_sc_animated_number();
159		}
160
161		//animation for elements that are not connected like icon shortcode
162		if( $.fn.avia_sc_animation_delayed )
163		{
164			$( '.av_font_icon', container ).avia_sc_animation_delayed({delay:100});
165			$( '.avia-image-container', container ).avia_sc_animation_delayed({delay:100});
166			$( '.av-hotspot-image-container', container ).avia_sc_animation_delayed({delay:100});
167			$( '.av-animated-generic', container ).avia_sc_animation_delayed({delay:100});
168
169			//	@since 5.0 - avoid conflict with already existing classes
170			$( '.av-animated-when-visible', container ).avia_sc_animation_delayed({delay:100});
171			$( '.av-animated-when-almost-visible', container ).avia_sc_animation_delayed({delay:100});
172			$( '.av-animated-when-visible-95', container ).avia_sc_animation_delayed({delay:100});
173		}
174
175		//activates animation for iconlist
176		if( $.fn.avia_sc_iconlist )
177		{
178			$( '.avia-icon-list.av-iconlist-big.avia-iconlist-animate', container ).avia_sc_iconlist();
179		}
180
181		//activates animation for progress bar
182		if( $.fn.avia_sc_progressbar )
183		{
184			$( '.avia-progress-bar-container', container ).avia_sc_progressbar();
185		}
186
187		//activates animation for testimonial
188		if( $.fn.avia_sc_testimonial )
189		{
190			$( '.avia-testimonial-wrapper', container ).avia_sc_testimonial();
191		}
192
193		//activate the fullscreen slider
194		if( $.fn.aviaFullscreenSlider )
195		{
196			$( '.avia-slideshow.av_fullscreen', container ).aviaFullscreenSlider();
197		}
198
199		//activate the aviaslider
200		if( $.fn.aviaSlider )
201		{
202			$( '.avia-slideshow:not(.av_fullscreen)', container ).aviaSlider();
203
204			//content slider
205        	$( '.avia-content-slider-active', container ).aviaSlider({wrapElement: '.avia-content-slider-inner', slideElement: '.slide-entry-wrap', fullfade: true});
206
207			//testimonial slider
208			$( '.avia-slider-testimonials', container ).aviaSlider({wrapElement: '.avia-testimonial-row', slideElement: '.avia-testimonial', fullfade: true});
209        }
210
211		//load magazine sorting
212		if( $.fn.aviaMagazine )
213		{
214			$( '.av-magazine-tabs-active', container ).aviaMagazine();
215		}
216
217		//load image hotspot
218		if( $.fn.aviaHotspots )
219		{
220			$( '.av-hotspot-image-container', container ).aviaHotspots();
221		}
222
223		//load countdown
224		if( $.fn.aviaCountdown )
225		{
226			$( '.av-countdown-timer', container ).aviaCountdown();
227		}
228
229		//load headings that stretch to the width of their container
230		if( $.fn.aviaFitText )
231		{
232			$( '.av-fit-width', container ).aviaFitText();
233		}
234
235		//load audio player
236		if( $.fn.aviaPlayer )
237		{
238			$( '.av-player', container ).aviaPlayer();
239		}
240
241		//	load icon circles
242		if( $.fn.aviaIconCircles )
243		{
244			$('.av-icon-circles-container').aviaIconCircles();
245		}
246
247		//	load icon grid
248		if( $.fn.avia_sc_icongrid )
249		{
250			$('.avia-icon-grid-container').avia_sc_icongrid();
251		}
252
253    };
254
255
256	function activate_waypoints( container )
257	{
258		//activates simple css animations of the content once the user scrolls to an elements
259		if( $.fn.avia_waypoints )
260		{
261			if( typeof container == 'undefined' )
262			{
263				container = 'body';
264			}
265
266			$( '.avia_animate_when_visible', container ).avia_waypoints();			//  'bottom-in-view'
267			$( '.avia_animate_when_almost_visible', container ).avia_waypoints( { offset: '80%'} );
268
269			//	@since 5.0 - avoid conflict with already existing classes
270			$( '.av-animated-when-visible', container ).avia_waypoints();
271			$( '.av-animated-when-almost-visible', container ).avia_waypoints( { offset: '80%'} );
272			$( '.av-animated-when-visible-95', container ).avia_waypoints( { offset: '95%'} );
273
274			//	@since 5.3 - new offsets added to support filter 'avf_alb_element_animation'
275			//	@since 5.3.1 - changed to dynamic % values und changed class because av-
275animated-when-visible-95 does not work with filter
276			var custom_animated = $( '*[class*="av-custom-animated-top-"]', container );
277
278			custom_animated.each( function()
279			{
280				var element = $( this ),
281					classArray = element[ 0 ].className.split(/\s+/);
282
283				for( var i = 0; i < classArray.length; i++ )
284				{
285					if( classArray[i].indexOf( 'av-custom-animated-top-' ) == 0 )
286					{
287						var pct = parseInt( classArray[i].replace( 'av-custom-animated-top-', '' ) );
288
289						if( ! isNaN( pct ) && pct < 100 )
290						{
291							element.avia_waypoints( { offset: pct + '%'} );
292						}
293					}
294				}
295			});
296
297			var disable_mobile = $( 'body' ).hasClass( 'avia-mobile-no-animations' );
298
299			if( container == 'body' && disable_mobile )
300			{
301				container = '.avia_desktop body';
302			}
303
304			$( '.av-animated-generic', container ).avia_waypoints( { offset: '95%'} );
305		}
306	};
307
308
309// -------------------------------------------------------------------------------------------
310
311
312
313	// -------------------------------------------------------------------------------------------
314	// Helper to allow fixed bgs on mobile
315	// -------------------------------------------------------------------------------------------
316	$.fn.avia_mobile_fixed = function(options)
317	{
318		var isMobile = $.avia_utilities.isMobile;
319
320		if( ! isMobile )
321		{
322			return;
323		}
324
325		return this.each( function()
326		{
327			var current				= $(this).addClass('av-parallax-section'),
328				$background 		= current.attr('style'),
329				$attachment_class 	= current.data('section-bg-repeat'),
330				template			= "";
331
332				if($attachment_class == 'stretch' || $attachment_class == 'no-repeat' )
333				{
334					$attachment_class = " avia-full-stretch";
335				}
336				else
337				{
338					$attachment_class = "";
339				}
340
341				template = "<div class='av-parallax " + $attachment_class + "' data-avia-parallax-ratio='0.0' style = '" + $background + "' ></div>";
342
343				current.prepend(template);
344				current.attr('style','');
345		});
346	};
347
348
349
350	// -------------------------------------------------------------------------------------------
351	//  shortcode javascript for delayed animation even when non connected elements are used
352	// -------------------------------------------------------------------------------------------
353	$.fn.avia_sc_animation_delayed = function(options)
354	{
355		var global_timer = 0,
356			delay = options.delay || 50,
357			max_timer = 10,
358			new_max = setTimeout( function(){ max_timer = 20; }, 500);
359
360		return this.each(function()
361		{
362			var elements = $(this);
363
364			//trigger displaying of thumbnails
365			elements.on( 'avia_start_animation', function()
366			{
367				var element = $(this);
368
369				if( global_timer < max_timer )
370				{
371					global_timer ++;
372				}
373
374				setTimeout( function()
375				{
376					element.addClass('avia_start_delayed_animation');
377					if( global_timer > 0 )
378					{
379						global_timer --;
380					}
381
382				}, ( global_timer * delay ) );
383
384			});
385		});
386	};
387
388	/*delayd animations when used within tab sections or similar elements. this way they get animated each new time a tab is shown*/
389	$.fn.avia_delayed_animation_in_container = function( options )
390	{
391		return this.each( function()
392		{
393			var elements = $(this);
394
395			elements.on( 'avia_start_animation_if_current_slide_is_active', function()
396			{
397				var current = $(this),
398					animate = current.find( '.avia_start_animation_when_active' );
399
400				animate.addClass( 'avia_start_animation' ).trigger( 'avia_start_animation' );
401			});
402
403			elements.on( 'avia_remove_animation', function()
404			{
405				var current = $(this),
406					animate = current.find( '.avia_start_animation_when_active, .avia_start_animation' );
407
408				animate.removeClass( 'avia_start_animation avia_start_delayed_animation' );
409			});
410		});
411	};
412
413
414	// -------------------------------------------------------------------------------------------
415	// Section Height Helper
416	// -------------------------------------------------------------------------------------------
417	$.fn.avia_browser_height = function()
418	{
419		if( ! this.length )
420		{
421			return this;
422		}
423
424		//	5.6.3 modified to use vh and vw and support minimum container width - also improves animation when resize of window
425
426		var win			= $(window),
427			html_el		= $('html'),
428			headFirst	= $( 'head' ).first(),
429			subtract	= $('#wpadminbar, #header.av_header_top:not(.html_header_transparency #header), #main>.title_container'),
430			css_block	= $("<style type='text/css' id='av-browser-height'></style>").appendTo( headFirst ),
431			sidebar_menu= $('.html_header_sidebar #top #header_main'),
432			full_slider	= $('.html_header_sidebar .avia-fullscreen-slider.avia-builder-el-0.avia-builder-el-no-sibling').addClass('av-solo-full'),
433			pc_heights	= [ 25, 50, 75 ],
434			calc_height = function()
435			{
436				let css			= '',
437					wh100 		= win.height(),
438					ww100 		= win.width(),
439					wh100_mod 	= wh100,
440					whCover		= (wh100 / 9) * 16,
441					wwCover		= (ww100 / 16) * 9,
442					solo		= 0;
443
444				if( sidebar_menu.length )
445				{
446					solo = sidebar_menu.height();
447				}
448
449				subtract.each( function()
450				{
451					wh100_mod -= this.offsetHeight - 1;
452				});
453
454				let whCoverMod = ( wh100_mod / 9 ) * 16;
455
456				// since 5.6.3  added minimum height depending on browser width (we ignore this for slidehows to avoid breaking of layout)
457//				let new_wh100 = height_opt == 'height' ? wh100 : ww100;
458//				let unit = height_opt == 'height' ? 'vh' : 'vw';
459
460
461				//fade in of section content with minimum height once the height has been calculated
462				css += ".avia-section.av-minimum-height .container{opacity: 1; }\n";
463
464				//various section heights (100-25% as well as 100% - header/adminbar in case its the first builder element)
465//				css += ".av-minimum-height-100:not(.av-slideshow-section) .container, .avia-fullscreen-slider .avia-slideshow, #top.avia-blank .av-minimum-height-100 .container, .av-cell-min-height-100 > .flex_cell{height:" + new_wh100 + "px;}\n";
466				css += ".av-minimum-height-100:not(.av-slideshow-section) .container, .avia-fullscreen-slider .avia-slideshow, #top.avia-blank .av-minimum-height-100 .container, .av-cell-min-height-100 > .flex_cell{height: 100vh;}\n";
467				css += ".av-minimum-height-100vw:not(.av-slideshow-section) .container, #top.avia-blank .av-minimum-height-100vw .container, .av-cell-min-height-100vw > .flex_cell{height: 100vw;}\n";
468
469				css += ".av-minimum-height-100.av-slideshow-section .container { height:unset; }\n";
470				css += ".av-minimum-height-100vw.av-slideshow-section .container { height:unset; }\n";
471
472//				css += ".av-minimum-height-100.av-slideshow-section {min-height:" + new_wh100 + "px;}\n";
473				css += ".av-minimum-height-100.av-slideshow-section {min-height: 100vh;}\n";
474				css += ".av-minimum-height-100vw.av-slideshow-section {min-height: 100vw;}\n";
475
476
477				$.each( pc_heights, function( index, value )
478				{
479//					var wh = Math.round( new_wh100 * ( value / 100.0 ) );
480//					css += ".av-minimum-height-" + value + ":not(.av-slideshow-section) .container, .av-cell-min-height-" + value + " > .flex_cell	{height:" + wh + "px;}\n";
481//					css += ".av-minimum-height-" + value + ".av-slideshow-section {min-height:" + wh + "px;}\n";
482
483					css += ".av-minimum-height-" + value + ":not(.av-slideshow-section) .container, .av-cell-min-height-" + value + " > .flex_cell	{height:" + value + "vh;}\n";
484					css += ".av-minimum-height-" + value + ".av-slideshow-section {min-height:" + value + "vh;}\n";
485
486					css += ".av-minimum-height-" + value + "vw:not(.av-slideshow-section) .container, .av-cell-min-height-" + value + "vw > .flex_cell	{height:" + value + "vw;}\n";
487					css += ".av-minimum-height-" + value + "vw.av-slideshow-section {min-height:" + value + "vw;}\n";
488				});
489
490
491
492				css += ".avia-builder-el-0.av-minimum-height-100:not(.av-slideshow-section) .container, .avia-builder-el-0.avia-fullscreen-slider .avia-slideshow, .avia-builder-el-0.av-cell-min-height-100 > .flex_cell{height:" + wh100_mod + "px;}\n";
493
494				css += "#top .av-solo-full .avia-slideshow {min-height:" + solo + "px;}\n";
495
496				//fullscreen video calculations
497				if( ww100 / wh100 < 16 / 9 )
498				{
499					css += "#top .av-element-cover iframe, #top .av-element-cover embed, #top .av-element-cover object, #top .av-element-cover video{width:" + whCover + "px; left: -" + ( whCover - ww100 ) / 2 + "px;}\n";
500				}
501				else
502				{
503					css += "#top .av-element-cover iframe, #top .av-element-cover embed, #top .av-element-cover object, #top .av-element-cover video{he
503ight:" + wwCover + "px; top: -"+( wwCover - wh100 ) / 2 + "px;}\n";
504				}
505
506				if( ww100 / wh100_mod < 16 / 9 )
507				{
508					css += "#top .avia-builder-el-0 .av-element-cover iframe, #top .avia-builder-el-0 .av-element-cover embed, #top .avia-builder-el-0 .av-element-cover object, #top .avia-builder-el-0 .av-element-cover video{width:" + whCoverMod + "px; left: -" + ( whCoverMod - ww100 ) / 2 + "px;}\n";
509				}
510				else
511				{
512					css += "#top .avia-builder-el-0 .av-element-cover iframe, #top .avia-builder-el-0 .av-element-cover embed, #top .avia-builder-el-0 .av-element-cover object, #top .avia-builder-el-0 .av-element-cover video{height:" + wwCover + "px; top: -" + ( wwCover - wh100_mod ) / 2 + "px;}\n";
513				}
514
515				//ie8 needs different insert method
516				try
517				{
518					css_block.text( css );
519				}
520				catch(err)
521				{
522					css_block.remove();
523					css_block = $( "<style type='text/css' id='av-browser-height'>" + css + "</style>" ).appendTo( headFirst );
524				}
525
526				setTimeout(function()
527				{
528					win.trigger( 'av-height-change' ); /*broadcast the height change*/
529				}, 100 );
530			};
531
532		this.each( function( index )
533		{
534			let container = $( this ),
535				height = container.data( 'av_minimum_height_pc' );
536
537			if( 'number' != typeof height )
538			{
539				return this;
540			}
541
542			height = parseInt( height );
543
544			if( ( -1 == $.inArray( height, pc_heights ) ) && ( height != 100 ) )
545			{
546				pc_heights.push( height );
547			}
548
549			return this;
550		});
551
552		win.on( 'debouncedresize', calc_height );
553		calc_height();
554	};
555
556	// -------------------------------------------------------------------------------------------
557	// Layout container height helper
558	// -------------------------------------------------------------------------------------------
559	$.fn.avia_container_height = function()
560	{
561		if( ! this.length )
562		{
563			return this;
564		}
565
566		var win = $( window ),
567			calc_height = function()
568			{
569				var column = $( this ),
570					jsonHeight = column.data( 'av-column-min-height' ),
571					minHeight = parseInt( jsonHeight['column-min-pc'], 10 ),
572					container = null,
573					containerHeight = 0,
574					columMinHeight = 0;
575
576				if( isNaN( minHeight ) || minHeight == 0 )
577				{
578					return;
579				}
580
581				//	try to find a layout container, else take browser height
582				container = column.closest( '.avia-section' );
583				if( ! container.length )
584				{
585					container = column.closest( '.av-gridrow-cell' );
586				}
587				if( ! container.length )
588				{
589					//	tab section and slideshow section
590					container = column.closest( '.av-layout-tab' );
591				}
592
593				containerHeight = container.length ? container.outerHeight() : win.height();
594
595				columMinHeight = containerHeight * ( minHeight / 100.0 );
596
597				if( ! jsonHeight['column-equal-height'] )
598				{
599					column.css( 'min-height', columMinHeight + 'px');
600					column.css( 'height', 'auto');
601				}
602				else
603				{
604					column.css( 'height', columMinHeight + 'px');
605				}
606
607				setTimeout( function()
608				{
609					win.trigger( 'av-height-change' ); /*broadcast the height change*/
610				}, 100 );
611			};
612
613		this.each( function( index )
614		{
615			var column = $( this ),
616				jsonHeight = column.data( 'av-column-min-height' );
617
618			if( 'object' != typeof jsonHeight )
619			{
620				return this;
621			}
622
623			win.on( 'debouncedresize', calc_height.bind( column ) );
624			calc_height.call( column );
625
626			return this;
627		});
628
629	};
630
631	// -------------------------------------------------------------------------------------------
632	// Video Section helper
633	// -------------------------------------------------------------------------------------------
634	$.fn.avia_video_section = function()
635	{
636		if(!this.length) return;
637
638		var elements	= this.length, content = "",
639			win			= $(window),
640			headFirst	= $( 'head' ).first(),
641			css_block	= $("<style type='text/css' id='av-section-height'></style>").appendTo( headFirst ),
642			calc_height = function(section, counter)
643			{
644				if(counter === 0) { content = "";}
645
646				var css			= "",
647					the_id		= '#' +section.attr('id'),
648					wh100 		= section.height(),
649					ww100 		= section.width(),
650					aspect		= section.data('sectionVideoRatio').split(':'),
651					video_w		= aspect[0],
652					video_h		= aspect[1],
653					whCover		= (wh100 / video_h ) * video_w,
654					wwCover		= (ww100 / video_w ) * video_h;
655
656				//fullscreen video calculations
657				if(ww100/wh100 < video_w/video_h)
658				{
659					css += "#top "+the_id+" .av-section-video-bg iframe, #top "+the_id+" .av-section-video-bg embed, #top "+the_id+" .av-section-video-bg object, #top "+the_id+" .av-section-video-bg video{width:"+whCover+"px; left: -"+(whCover - ww100)/2+"px;}\n";
660				}
661				else
662				{
663					css += "#top "+the_id+" .av-section-video-bg iframe, #top "+the_id+" .av-section-video-bg embed, #top "+the_id+" .av-section-video-bg object, #top "+the_id+" .av-section-video-bg video{height:"+wwCover+"px; top: -"+(wwCover - wh100)/2+"px;}\n";
664				}
665
666				content = content + css;
667
668				if(elements == counter + 1)
669				{
670					//ie8 needs different insert method
671					try{
672						css_block.text(content);
673					}
674					catch(err){
675						css_block.remove();
676						css_block = $("<style type='text/css' id='av-section-height'>"+content+"</style>").appendTo( headFirst );
677					}
678				}
679			};
680
681
682		return this.each(function(i)
683		{
684			var self = $(this);
685
686			win.on( 'debouncedresize', function(){ calc_height(self, i); });
687			calc_height(self, i);
688		});
689
690	};
691
692
693	/**
694	 * Column or cell with a link
695	 *
696	 * @returns {jQuery}
697	 */
698	$.fn.avia_link_column = function()
699	{
700		return this.each( function()
701		{
702			$(this).on( 'click', function(e)
703			{
704				//	if event is bubbled from an <a> link, do not activate link of column/cell
705				if( 'undefined' !== typeof e.target && 'undefined' !== typeof e.target.href )
706				{
707					return;
708				}
709
710				var	column = $(this),
711					url = column.data('link-column-url'),
712					target = column.data('link-column-target'),
713					link = window.location.hostname+window.location.pathname;
714
715				if( 'undefined' === typeof url || 'string' !== typeof url )
716				{
717					return;
718				}
719
720				if( 'undefined' !== typeof target || '_blank' == target )
721				{
722//					in FF and other browsers this opens a new window and not only a new tab
723//					window.open( url, '_blank', 'noopener noreferrer' );
724					var a = document.createElement('a');
725					a.href = url;
726					a.target = '_blank';
727					a.rel = 'noopener noreferrer';
728					a.click();
729					return false;
730				}
731				else
732				{
733					//	allow smoothscroll feature when on same page and hash exists - trigger only works for current page
734					if( column.hasClass('av-cell-link') || column.hasClass('av-column-link') )
735					{
736						var reader = column.hasClass('av-cell-link') ? column.prev('a.av-screen-reader-only').first() : column.find('a.av-screen-reader-only').first();
737
738						url = url.trim();
739						if( ( 0 == url.indexOf("#") ) || ( ( url.indexOf( link ) >= 0 ) && ( url.indexOf("#") > 0 ) ) )
740						{
741							reader.trigger('click');
742
743							//	fix a bug with tabsection not changeing tab
744							if( 'undefined' == typeof target || '_blank' != target )
745							{
746								window.location.href = url;
747							}
748
749							return;
750						}
751					}
752
753					window.location.href = url;
754				}
755
756				e.preventDefault();
757				return;
758			});
759		});
760	};
761
762
763	// -------------------------------------------------------------------------------------------
764	// HELPER FUNCTIONS
765	// -------------------------------------------------------------------------------------------
766
767
768	//waipoint script when something comes into viewport
769	$.fn.avia_waypoints = function( options_passed )
770	{
771		if( ! $('html').is('.avia_transform') )
772		{
773			return;
774		}
775
776		var defaults = {
777					offset: 'bottom-in-view',
778					triggerOnce: true
779				},
780			options  = $.extend( {}, defaults, options_passed ),
781			isMobile = $.avia_utilities.isMobile;
782
783		return this.each( function()
784		{
785			var element = $(this),
786				force_animate = element.hasClass( 'animate-all-devices' ),
787				mobile_no_animations = $( 'body' ).hasClass( 'avia-mobile-no-animations' );
788
789			setTimeout( function()
790			{
791				if( isMobile && mobile_no_animations && ! force_animate )
792				{
793					element.addClass( 'avia_start_animation' ).trigger('avia_start_animation');
794				}
795				else
796				{
797					element.waypoint( function( direction )
798					{
799						var current = $(this.element),
800							parent = current.parents('.av-animation-delay-container').eq( 0 );
801
802						if( parent.length )
803						{
804							current.addClass( 'avia_start_animation_when_active' ).trigger( 'avia_start_animation_when_active' );
805						}
806
807						if( ! parent.length || ( parent.length && parent.is( '.__av_init_open' ) ) || ( parent.length && parent.is( '.av-active-tab-content' ) ) )
808						{
809							current.addClass( 'avia_start_animation' ).trigger( 'avia_start_animation' );
810						}
811					}, options );
812				}
813			}, 100 );
814
815		});
816	};
817
818
819	// window resize script
820	var $event = $.event, $special, resizeTimeout;
821
822	$special = $event.special.debouncedresize = {
823		setup: function() {
824			$( this ).on( "resize", $special.handler );
825		},
826		teardown: function() {
827			$( this ).off( "resize", $special.handler );
828		},
829		handler: function( event, execAsap ) {
830			// Save the context
831			var context = this,
832				args = arguments,
833				dispatch = function() {
834					// set correct event type
835					event.type = "debouncedresize";
836					$event.dispatch.apply( context, args );
837				};
838
839			if ( resizeTimeout ) {
840				clearTimeout( resizeTimeout );
841			}
842
843			execAsap ?
844				dispatch() :
845				resizeTimeout = setTimeout( dispatch, $special.threshold );
846		},
847		threshold: 150
848	};
849
850})( jQuery );
851
852
853
854/*utility functions*/
855
856
857(function($)
858{
859	"use strict";
860
861	$.avia_utilities = $.avia_utilities || {};
862
863	/************************************************************************
864	gloabl loading function
865	*************************************************************************/
866	$.avia_utilities.loading = function(attach_to, delay){
867
868		var loader = {
869
870			active: false,
871
872			show: function()
873			{
874				if(loader.active === false)
875				{
876					loader.active = true;
877					loader.loading_item.css({display:'block', opacity:0}
877);
878				}
879
880				loader.loading_item.stop().animate({opacity:1});
881			},
882
883			hide: function()
884			{
885				if(typeof delay === 'undefined'){ delay = 600; }
886
887				loader.loading_item.stop().delay( delay ).animate({opacity:0}, function()
888				{
889					loader.loading_item.css({display:'none'});
890					loader.active = false;
891				});
892			},
893
894			attach: function()
895			{
896				if(typeof attach_to === 'undefined'){ attach_to = 'body';}
897
898				loader.loading_item = $('<div class="avia_loading_icon"><div class="av-siteloader"></div></div>').css({display:"none"}).appendTo(attach_to);
899			}
900		};
901
902		loader.attach();
903		return loader;
904	};
905
906	/************************************************************************
907	gloabl play/pause visualizer function
908	*************************************************************************/
909	$.avia_utilities.playpause = function(attach_to, delay){
910
911		var pp = {
912
913			active: false,
914			to1: "",
915			to2: "",
916			set: function(status)
917			{
918				pp.loading_item.removeClass('av-play av-pause');
919				pp.to1 = setTimeout(function(){ pp.loading_item.addClass('av-' + status); },10);
920				pp.to2 = setTimeout(function(){ pp.loading_item.removeClass('av-' + status); },1500);
921			},
922
923			attach: function()
924			{
925				if(typeof attach_to === 'undefined'){ attach_to = 'body';}
926
927				pp.loading_item = $('<div class="avia_playpause_icon"></div>').css({display:"none"}).appendTo(attach_to);
928			}
929		};
930
931		pp.attach();
932		return pp;
933	};
934
935
936
937	/************************************************************************
938	preload images, as soon as all are loaded trigger a special load ready event
939	*************************************************************************/
940	$.avia_utilities.preload = function(options_passed)
941	{
942		new $.AviaPreloader(options_passed);
943	};
944
945	$.AviaPreloader  =  function(options)
946	{
947	    this.win 		= $(window);
948	    this.defaults	=
949		{
950			container:			'body',
951			maxLoops:			10,
952			trigger_single:		true,
953			single_callback:	function(){},
954			global_callback:	function(){}
955
956		};
957		this.options 	= $.extend({}, this.defaults, options);
958		this.preload_images = 0;
959
960		this.load_images();
961	};
962
963	$.AviaPreloader.prototype  =
964	{
965		load_images: function()
966		{
967			var _self = this;
968
969			if(typeof _self.options.container === 'string'){ _self.options.container = $(_self.options.container); }
970
971			_self.options.container.each(function()
972			{
973				var container		= $(this);
974
975				container.images	= container.find('img');
976				container.allImages	= container.images;
977
978				_self.preload_images += container.images.length;
979				setTimeout(function(){ _self.checkImage(container); }, 10);
980			});
981		},
982
983		checkImage: function(container)
984		{
985			var _self = this;
986
987			container.images.each(function()
988			{
989				if(this.complete === true)
990				{
991					container.images = container.images.not(this);
992					_self.preload_images -= 1;
993				}
994			});
995
996			if(container.images.length && _self.options.maxLoops >= 0)
997			{
998				_self.options.maxLoops-=1;
999				setTimeout( function(){ _self.checkImage( container ); }, 500 );
1000			}
1001			else
1002			{
1003				_self.preload_images = _self.preload_images - container.images.length;
1004				_self.trigger_loaded(container);
1005			}
1006		},
1007
1008		trigger_loaded: function(container)
1009		{
1010			var _self = this;
1011
1012			if(_self.options.trigger_single !== false)
1013			{
1014				_self.win.trigger('avia_images_loaded_single', [container]);
1015				_self.options.single_callback.call(container);
1016			}
1017
1018			if(_self.preload_images === 0)
1019			{
1020				_self.win.trigger('avia_images_loaded');
1021				_self.options.global_callback.call();
1022			}
1023
1024		}
1025	};
1026
1027	/************************************************************************
1028	CSS Easing transformation table
1029	*************************************************************************/
1030	/*
1031	Easing transform table from jquery.animate-enhanced plugin
1032	http://github.com/benbarnett/jQuery-Animate-Enhanced
1033	*/
1034	$.avia_utilities.css_easings = {
1035			linear:			'linear',
1036			swing:			'ease-in-out',
1037			bounce:			'cubic-bezier(0.0, 0.35, .5, 1.3)',
1038			easeInQuad:     'cubic-bezier(0.550, 0.085, 0.680, 0.530)' ,
1039			easeInCubic:    'cubic-bezier(0.550, 0.055, 0.675, 0.190)' ,
1040			easeInQuart:    'cubic-bezier(0.895, 0.030, 0.685, 0.220)' ,
1041			easeInQuint:    'cubic-bezier(0.755, 0.050, 0.855, 0.060)' ,
1042			easeInSine:     'cubic-bezier(0.470, 0.000, 0.745, 0.715)' ,
1043			easeInExpo:     'cubic-bezier(0.950, 0.050, 0.795, 0.035)' ,
1044			easeInCirc:     'cubic-bezier(0.600, 0.040, 0.980, 0.335)' ,
1045			easeInBack:     'cubic-bezier(0.600, -0.280, 0.735, 0.04)' ,
1046			easeOutQuad:    'cubic-bezier(0.250, 0.460, 0.450, 0.940)' ,
1047			easeOutCubic:   'cubic-bezier(0.215, 0.610, 0.355, 1.000)' ,
1048			easeOutQuart:   'cubic-bezier(0.165, 0.840, 0.440, 1.000)' ,
1049			easeOutQuint:   'cubic-bezier(0.230, 1.000, 0.320, 1.000)' ,
1050			easeOutSine:    'cubic-bezier(0.390, 0.575, 0.565, 1.000)' ,
1051			easeOutExpo:    'cubic-bezier(0.190, 1.000, 0.220, 1.000)' ,
1052			easeOutCirc:    'cubic-bezier(0.075, 0.820, 0.165, 1.000)' ,
1053			easeOutBack:    'cubic-bezier(0.175, 0.885, 0.320, 1.275)' ,
1054			easeInOutQuad:  'cubic-bezier(0.455, 0.030, 0.515, 0.955)' ,
1055			easeInOutCubic: 'cubic-bezier(0.645, 0.045, 0.355, 1.000)' ,
1056			easeInOutQuart: 'cubic-bezier(0.770, 0.000, 0.175, 1.000)' ,
1057			easeInOutQuint: 'cubic-bezier(0.860, 0.000, 0.070, 1.000)' ,
1058			easeInOutSine:  'cubic-bezier(0.445, 0.050, 0.550, 0.950)' ,
1059			easeInOutExpo:  'cubic-bezier(1.000, 0.000, 0.000, 1.000)' ,
1060			easeInOutCirc:  'cubic-bezier(0.785, 0.135, 0.150, 0.860)' ,
1061			easeInOutBack:  'cubic-bezier(0.680, -0.550, 0.265, 1.55)' ,
1062			easeInOutBounce:'cubic-bezier(0.580, -0.365, 0.490, 1.365)',
1063			easeOutBounce:	'cubic-bezier(0.760, 0.085, 0.490, 1.365)'
1064		};
1065
1066	/************************************************************************
1067	check if a css feature is supported and save it to the supported array
1068	*************************************************************************/
1069	$.avia_utilities.supported	= {};
1070	$.avia_utilities.supports	= (function()
1071	{
1072		var div		= document.createElement('div'),
1073			vendors	= ['Khtml', 'Ms','Moz','Webkit'];  // vendors	= ['Khtml', 'Ms','Moz','Webkit','O'];
1074
1075		return function(prop, vendor_overwrite)
1076		{
1077			if ( div.style[prop] !== undefined  ) { return ""; }
1078			if (vendor_overwrite !== undefined) { vendors = vendor_overwrite; }
1079
1080			prop = prop.replace(/^[a-z]/, function(val)
1081			{
1082				return val.toUpperCase();
1083			});
1084
1085			var len	= vendors.length;
1086			while(len--)
1087			{
1088				if ( div.style[vendors[len] + prop] !== undefined )
1089				{
1090					return "-" + vendors[len].toLowerCase() + "-";
1091				}
1092			}
1093
1094			return false;
1095		};
1096
1097	}());
1098
1099	/************************************************************************
1100	animation function
1101	*************************************************************************/
1102	$.fn.avia_animate = function(prop, speed, easing, callback)
1103	{
1104		if(typeof speed === 'function') {callback = speed; speed = false; }
1105		if(typeof easing === 'function'){callback = easing; easing = false;}
1106		if(typeof speed === 'string'){easing = speed; speed = false;}
1107
1108		if(callback === undefined || callback === false){ callback = function(){}; }
1109		if(easing === undefined || easing === false)	{ easing = 'easeInQuad'; }
1110		if(speed === undefined || speed === false)		{ speed = 400; }
1111
1112		if($.avia_utilities.supported.transition === undefined)
1113		{
1114			$.avia_utilities.supported.transition = $.avia_utilities.supports('transition');
1115		}
1116
1117
1118
1119		if($.avia_utilities.supported.transition !== false )
1120		{
1121			var prefix		= $.avia_utilities.supported.transition + 'transition',
1122				cssRule		= {},
1123				cssProp		= {},
1124				thisStyle	= document.body.style,
1125				end			= (thisStyle.WebkitTransition !== undefined) ? 'webkitTransitionEnd' : (thisStyle.OTransition !== undefined) ? 'oTransitionEnd' : 'transitionend';
1126
1127			//translate easing into css easing
1128			easing = $.avia_utilities.css_easings[easing];
1129
1130			//create css transformation rule
1131			cssRule[prefix]	=  'all '+(speed/1000)+'s '+easing;
1132			//add namespace to the transition end trigger
1133			end = end + ".avia_animate";
1134
1135			//since jquery 1.10 the items passed need to be {} and not [] so make sure they are converted properly
1136			for (var rule in prop)
1137			{
1138				if (prop.hasOwnProperty(rule)) { cssProp[rule] = prop[rule]; }
1139			}
1140			prop = cssProp;
1141
1142
1143
1144			this.each(function()
1145			{
1146				var element	= $(this), css_difference = false, rule, current_css;
1147
1148				for (rule in prop)
1149				{
1150					if (prop.hasOwnProperty(rule))
1151					{
1152						current_css = element.css(rule);
1153
1154						if(prop[rule] != current_css && prop[rule] != current_css.replace(/px|%/g,""))
1155						{
1156							css_difference = true;
1157							break;
1158						}
1159					}
1160				}
1161
1162				if(css_difference)
1163				{
1164					//if no transform property is set set a 3d translate to enable hardware acceleration
1165					if(!($.avia_utilities.supported.transition+"transform" in prop))
1166					{
1167						prop[$.avia_utilities.supported.transition+"transform"] = "translateZ(0)";
1168					}
1169
1170					var endTriggered = false;
1171
1172					element.on(end,  function(event)
1173					{
1174						if(event.target != event.currentTarget) return false;
1175
1176						if(endTriggered == true) return false;
1177						endTriggered = true;
1178
1179						cssRule[prefix] = "none";
1180
1181						element.off(end);
1182						element.css(cssRule);
1183						setTimeout(function(){ callback.call(element); });
1184					});
1185
1186
1187					//desktop safari fallback if we are in another tab to trigger the end event
1188					setTimeout(function(){
1189						if(!endTriggered && !avia_is_mobile && $('html').is('.avia-safari') ) {
1190							element.trigger(end);
1191							$.avia_utilities.log('Safari Fallback '+end+' trigger');
1192						}
1193					}, speed + 100);
1194
1195					setTimeout(function(){ element.css(cssRule);},10);
1196					setTimeout(function(){ element.css(prop);	},20);
1197				}
1198				else
1199				{
1200					setTimeout(function(){ callback.call(element); });
1201				}
1202
1203			});
1204		}
1205		else // if css animation is not available use default JS animation
1206		{
1207			this.animate(prop, speed, easing, callback);
1208		}
1209
1210		return this;
1211	};
1212
1213})( jQuery );
1214
1215
1216
1217// -------------------------------------------------------------------------------------------
1218// keyboard controls
1219// -------------------------------------------------------------------------------------------
1220
1221(function($)
1222{
1223	"use strict";
1224
1225	/************************************************************************
1226	keyboard arrow nav
1227	*************************************************************************/
1228	$.fn.avia_keyboard_controls = function(options_passed)
1229	{
1230		var defaults	=
1231		{
1232			37: '.prev-slide',	// prev
1233			39: '.next-slide'	// next
1234		},
1235
1236		methods		= {
1237
1238			mousebind: function(slider)
1239			{
1240				slider.on('mouseenter', function(){
1241					slider.mouseover	= true;  })
1242				.on('mouseleave', function(){
1243					slider.mouseover	= false; }
1244				);
1245			},
1246
1247			keybind: function(slider)
1248			{
1249				$(document).on('keydown', function(e)
1250				{
1251					if(slider.mouseover && typeof slider.options[e.keyCode] !== 'undefined')
1252					{
1253						var item;
1254
1255						if(typeof slider.options[e.keyCode] === 'string')
1256						{
1257							item = slider.find(slider.options[e.keyCode]);
1258						}
1259						else
1260						{
1261							item = slider.options[e.keyCode];
1262						}
1263
1264						if(item.length)
1265						{
1266							item.trigger('click', ['keypress']);
1267							return false;
1268						}
1269					}
1270				});
1271			}
1272		};
1273
1274
1275		return this.each(function()
1276		{
1277			var slider			= $(this);
1278			slider.options		= $.extend({}, defaults, options_passed);
1279			slider.mouseover	= false;
1280
1281			methods.mousebind(slider);
1282			methods.keybind(slider);
1283
1284		});
1285	};
1286
1287
1288	/************************************************************************
1289	swipe nav
1290	*************************************************************************/
1291	$.fn.avia_swipe_trigger = function( passed_options )
1292	{
1293		var win = $(window),
1294			isMobile = $.avia_utilities.isMobile,
1295			isTouchDevice = $.avia_utilities.isTouchDevice,
1296			body = $( 'body' ),
1297			defaults =
1298			{
1299				prev: '.prev-slide',				//	selector | jQuery object | DOM element
1300				next: '.next-slide',
1301				delay_trigger: false,				//	currently only implemented for native function call
1302				event: {
1303						prev: 'click',					//	use e.g. native_click to use native function call element.click()
1304						next: 'click'
1305					},
1306				beforeTrigger: null,
1307				afterTrigger: null,				//	callback when swipe trigger done (when delayed only timeout started)
1308				afterDelayedTrigger: null
1309			},
1310
1311			methods =
1312			{
1313				activate_touch_control: function(slider)
1314				{
1315					var i,
1316						differenceX,
1317						differenceY;
1318
1319					slider.touchPos = {};
1320					slider.hasMoved = false;
1321
1322					slider.on( 'touchstart', function(event)
1323					{
1324						slider.touchPos.X = event.originalEvent.touches[0].clientX;
1325						slider.touchPos.Y = event.originalEvent.touches[0].clientY;
1326					});
1327
1328					slider.on( 'touchend', function(event)
1329					{
1330						slider.touchPos = {};
1331
1332						if( slider.hasMoved )
1333						{
1334							event.preventDefault();
1335						}
1336
1337						slider.hasMoved = false;
1338					});
1339
1340					slider.on( 'touchmove', function(event)
1341					{
1342						//	skip if a slider has been moved
1343						if( body.hasClass( 'avia-swipe-executed' ) )
1344						{
1345							return;
1346						}
1347
1348						if( ! slider.touchPos.X )
1349						{
1350							slider.touchPos.X = event.originalEvent.touches[0].clientX;
1351							slider.touchPos.Y = event.originalEvent.touches[0].clientY;
1352						}
1353						else
1354						{
1355							differenceX = event.originalEvent.touches[0].clientX - slider.touchPos.X;
1356							differenceY = event.originalEvent.touches[0].clientY - slider.touchPos.Y;
1357
1358							//check if user is scrolling the window or moving the slider
1359							if( Math.abs( differenceX ) > Math.abs( differenceY ) )
1360							{
1361								if( slider.touchPos !== event.originalEvent.touches[0].clientX )
1362								{
1363									if( Math.abs(differenceX) > 50 )
1364									{
1365										i = differenceX > 0 ? 'prev' : 'next';
1366
1367										let element = slider.options[i];
1368										if( element == null )
1369										{
1370											return;
1371										}
1372
1373										if( typeof slider.options.beforeTrigger == 'function' )
1374										{
1375											slider.options.beforeTrigger( slider, i );
1376										}
1377
1378										if( typeof slider.options[i] === 'string' )
1379										{
1380											slider.find( slider.options[i] ).trigger( slider.options.event[i], ['swipe'] );
1381										}
1382										else
1383										{
1384											if( typeof element.jquery == 'string' )
1385											{
1386												element.trigger( slider.options.event[i], ['swipe'] );
1387											}
1388											else
1389											{
1390												let action = slider.options.event[i];
1391
1392												if( action.indexOf( 'native_' ) < 0 )
1393												{
1394													element.dispatchEvent( new Event( action ) );
1395												}
1396												else
1397												{
1398													let func_action = action.replace( 'native_', '' );
1399
1400													if( typeof element[ func_action ] == 'function' )
1401													{
1402														if( slider.options.delay_trigger )
1403														{
1404															setTimeout( function()
1405															{
1406																element[ func_action ]();
1407
1408																if( typeof slider.options.afterDelayedTrigger == 'function' )
1409																{
1410																	slider.options.afterDelayedTrigger( slider, i );
1411																}
1412															}, 50 );
1413														}
1414														else
1415														{
1416															element[ func_action ]();
1417														}
1418													}
1419													else
1420													{
1421														element.dispatchEvent( new Event( action ) );
1422													}
1423												}
1424											}
1425										}
1426
1427										if( typeof slider.options.afterTrigger == 'function' )
1428										{
1429											slider.options.afterTrigger( slider, i );
1430										}
1431
1432										event.preventDefault();
1433										event.stopImmediatePropagation();
1434
1435										//	set a class to block swipe when a slider has been moved (avoid post nav slides)
1436										body.addClass( 'avia-swipe-executed' );
1437										setTimeout( function()
1438										{
1439											body.removeClass( 'avia-swipe-executed' );
1440										}, 300 );
1441
1442										slider.hasMoved = true;
1443										slider.touchPos = {};
1444										return false;
vendor: 4,359 bytes, lines 1445-1626
1445									}
1446								}
1447							}
1448						}
1449					});
1450
1451				}
1452			};
1453
1454		return this.each( function()
1455		{
1456			if( isMobile || isTouchDevice )
1457			{
1458				var slider = $(this);
1459				slider.options = $.extend( {}, defaults, passed_options );
1460				methods.activate_touch_control( slider );
1461			}
1462		});
1463	};
1464
1465}(jQuery));
1466
1467/**
1468 * jQuery 3.x:  JQMIGRATE: easing function “jQuery.easing.swing” should use only first argument
1469 * https://stackoverflow.com/questions/39355019/jqmigrate-easing-function-jquery-easing-swing-should-use-only-first-argument
1470 * https://github.com/gdsmith/jquery.easing/blob/master/jquery.easing.js
1471 *
1472 * @since 4.8.4
1473 * @param {jQuery} $
1474 */
1475(function($)
1476{
1477	// Preserve the original jQuery "swing" easing as "jswing"
1478	if( typeof $.easing !== 'undefined' )
1479	{
1480		$.easing['jswing'] = $.easing['swing'];
1481	}
1482
1483	var pow = Math.pow,
1484		sqrt = Math.sqrt,
1485		sin = Math.sin,
1486		cos = Math.cos,
1487		PI = Math.PI,
1488		c1 = 1.70158,
1489		c2 = c1 * 1.525,
1490		c3 = c1 + 1,
1491		c4 = ( 2 * PI ) / 3,
1492		c5 = ( 2 * PI ) / 4.5;
1493
1494	// x is the fraction of animation progress, in the range 0..1
1495	function bounceOut(x)
1496	{
1497		var n1 = 7.5625,
1498			d1 = 2.75;
1499		if ( x < 1/d1 ) {
1500			return n1*x*x;
1501		} else if ( x < 2/d1 ) {
1502			return n1*(x-=(1.5/d1))*x + .75;
1503		} else if ( x < 2.5/d1 ) {
1504			return n1*(x-=(2.25/d1))*x + .9375;
1505		} else {
1506			return n1*(x-=(2.625/d1))*x + .984375;
1507		}
1508	}
1509
1510	$.extend( $.easing,
1511	{
1512		def: 'easeOutQuad',
1513		swing: function (x) {
1514			return $.easing[$.easing.def](x);
1515		},
1516		easeInQuad: function (x) {
1517			return x * x;
1518		},
1519		easeOutQuad: function (x) {
1520			return 1 - ( 1 - x ) * ( 1 - x );
1521		},
1522		easeInOutQuad: function (x) {
1523			return x < 0.5 ?
1524				2 * x * x :
1525				1 - pow( -2 * x + 2, 2 ) / 2;
1526		},
1527		easeInCubic: function (x) {
1528			return x * x * x;
1529		},
1530		easeOutCubic: function (x) {
1531			return 1 - pow( 1 - x, 3 );
1532		},
1533		easeInOutCubic: function (x) {
1534			return x < 0.5 ?
1535				4 * x * x * x :
1536				1 - pow( -2 * x + 2, 3 ) / 2;
1537		},
1538		easeInQuart: function (x) {
1539			return x * x * x * x;
1540		},
1541		easeOutQuart: function (x) {
1542			return 1 - pow( 1 - x, 4 );
1543		},
1544		easeInOutQuart: function (x) {
1545			return x < 0.5 ?
1546				8 * x * x * x * x :
1547				1 - pow( -2 * x + 2, 4 ) / 2;
1548		},
1549		easeInQuint: function (x) {
1550			return x * x * x * x * x;
1551		},
1552		easeOutQuint: function (x) {
1553			return 1 - pow( 1 - x, 5 );
1554		},
1555		easeInOutQuint: function (x) {
1556			return x < 0.5 ?
1557				16 * x * x * x * x * x :
1558				1 - pow( -2 * x + 2, 5 ) / 2;
1559		},
1560		easeInSine: function (x) {
1561			return 1 - cos( x * PI/2 );
1562		},
1563		easeOutSine: function (x) {
1564			return sin( x * PI/2 );
1565		},
1566		easeInOutSine: function (x) {
1567			return -( cos( PI * x ) - 1 ) / 2;
1568		},
1569		easeInExpo: function (x) {
1570			return x === 0 ? 0 : pow( 2, 10 * x - 10 );
1571		},
1572		easeOutExpo: function (x) {
1573			return x === 1 ? 1 : 1 - pow( 2, -10 * x );
1574		},
1575		easeInOutExpo: function (x) {
1576			return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
1577				pow( 2, 20 * x - 10 ) / 2 :
1578				( 2 - pow( 2, -20 * x + 10 ) ) / 2;
1579		},
1580		easeInCirc: function (x) {
1581			return 1 - sqrt( 1 - pow( x, 2 ) );
1582		},
1583		easeOutCirc: function (x) {
1584			return sqrt( 1 - pow( x - 1, 2 ) );
1585		},
1586		easeInOutCirc: function (x) {
1587			return x < 0.5 ?
1588				( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 :
1589				( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2;
1590		},
1591		easeInElastic: function (x) {
1592			return x === 0 ? 0 : x === 1 ? 1 :
1593				-pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 );
1594		},
1595		easeOutElastic: function (x) {
1596			return x === 0 ? 0 : x === 1 ? 1 :
1597				pow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1;
1598		},
1599		easeInOutElastic: function (x) {
1600			return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ?
1601				-( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 :
1602				pow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1;
1603		},
1604		easeInBack: function (x) {
1605			return c3 * x * x * x - c1 * x * x;
1606		},
1607		easeOutBack: function (x) {
1608			return 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 );
1609		},
1610		easeInOutBack: function (x) {
1611			return x < 0.5 ?
1612				( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 :
1613				( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2;
1614		},
1615		easeInBounce: function (x) {
1616			return 1 - bounceOut( 1 - x );
1617		},
1618		easeOutBounce: bounceOut,
1619		easeInOutBounce: function (x) {
1620			return x < 0.5 ?
1621				( 1 - bounceOut( 1 - 2 * x ) ) / 2 :
1622				( 1 + bounceOut( 2 * x - 1 ) ) / 2;
1623		}
1624	});
1625
1626}(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.