PageSourceSearch

https://portal.myworkdrive.com/wp-content/themes/enfold/js/shortcodes.js?ver=5.6.8

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