PageSourceSearch

https://jeffmowatt.com/wp-content/uploads/bb-plugin/cache/742ad9e5…688d6ea51-layout-bundle.js?ver=2.11.1-1.6.1

js jeffmowatt.com collected 2026-09-26 14:57:10 UTC 88,177 bytes, 2,629 lines download raw bytes

1(function($) {
2	if ( $('.fl-node-5bb374de5ed48 .pp-photo-rollover').length > 0 ) {
3		$('body').on( 'mouseenter.pp-rollover', '.fl-node-5bb374de5ed48 .pp-photo-rollover .pp-photo-content', function() {
4			$(this).addClass( 'is-hover' );
5		} ).on( 'mouseleave.pp-rollover', '.fl-node-5bb374de5ed48 .pp-photo-rollover .pp-photo-content', function() {
6			$(this).removeClass( 'is-hover' );
7		} );
8	}
9})(jQuery);
10;(function($) {
11
12	PPAdvancedMenu = function( settings ) {
13
14		// set params
15		this.settingsId 		 = settings.id;
16		this.nodeClass           = '.fl-node-' + settings.id;
17		this.wrapperClass        = this.nodeClass + ' .pp-advanced-menu';
18		this.type				 = settings.type;
19		this.mobileToggle		 = settings.mobile;
20		this.mobileBelowRow		 = 'below' === settings.menuPosition;
21		this.breakpoints         = settings.breakpoints;
22		this.mobileBreakpoint	 = settings.mobileBreakpoint;
23		this.mediaBreakpoint	 = settings.mediaBreakpoint;
24		this.mobileMenuType	 	 = settings.mobileMenuType;
25		this.offCanvasDirection	 = settings.offCanvasDirection;
26		this.postId 			 = bb_powerpack.post_id;
27		this.isBuilderActive	 = settings.isBuilderActive;
28		this.currentBrowserWidth = window.innerWidth;
29		this.fullScreenMenu 	= null;
30		this.offCanvasMenu 		= null;
31		this.$submenus 			= null;
32
33		// initialize the menu
34		$( this._initMenu.bind( this ) );
35
36		// check if viewport is resizing
37		$( window ).on( 'resize', function( e ) {
38
39			var width = window.innerWidth;
40
41			// if screen width is resized, reload the menu
42		    if( width != this.currentBrowserWidth ) {
43
44				this._initMenu();
45 				this._clickOrHover();
46		    	this.currentBrowserWidth = width;
47			}
48
49		}.bind( this ) );
50
51		$( 'body' ).on( 'click', function( e ) {
52			if ( 'undefined' !== typeof FLBuilderConfig ){
53				return;
54			}
55
56			if ( $( this.wrapperClass ).find( '.pp-advanced-menu-mobile-toggle' ).hasClass( 'pp-active' ) && ( 'expanded' !== this.mobileToggle ) ) {
57				if ( $( e.target ).parents('.fl-module-pp-advanced-menu').length > 0 ) {
58					return;
59				}
60				if ( $( e.target ).is( 'input' ) && $( e.target ).parents('.pp-advanced-menu').length > 0 ) {
61					return;
62				}
63				if ( $( e.target ).hasClass( 'pp-menu-close-btn' ) ) {
64					return;
65				}
66				$( this.wrapperClass ).find( '.pp-advanced-menu-mobile-toggle' ).trigger( 'click' );
67			}
68
69			$( this.wrapperClass ).find( '.pp-has-submenu' ).each( function() {
70				if ( ! $( this ).find( '> .sub-menu' ).is( ':visible' ) ) {
71					$( this ).removeClass( 'pp-active' );
72				}
73			} );
74			$( this.wrapperClass ).find( '.pp-has-submenu' ).removeClass( 'focus' );
75			$( this.wrapperClass ).find( '.pp-has-submenu .sub-menu' ).removeClass( 'focus' );
76			$( this.wrapperClass ).find( '.pp-has-submenu-container' ).removeClass( 'focus' );
77			$( this.wrapperClass ).find( '.pp-menu-toggle' ).attr( 'aria-expanded', false );
78
79		}.bind( this ) );
80
81		// Esc key to close the submenu.
82		$( document ).on( 'keyup', function( e ) {
83			if ( 27 == e.which ) {
84				$( this.wrapperClass ).find( '.pp-has-submenu' ).each( function() {
85					if ( ! $( this ).find( '> .sub-menu' ).is( ':visible' ) ) {
86						$( this ).removeClass( 'pp-active' );
87					}
88				} );
89				$( this.wrapperClass ).find( '.pp-has-submenu' ).removeClass( 'focus' );
90				$( this.wrapperClass ).find( '.pp-has-submenu .sub-menu' ).removeClass( 'focus' );
91				$( this.wrapperClass ).find( '.pp-has-submenu-container' ).removeClass( 'focus' );
92				$( this.wrapperClass ).find( '.pp-menu-toggle' ).attr( 'aria-expanded', false );
93				if ( $( this.wrapperClass ).find( '.pp-menu-toggle.focus' ).is( ':visible' ) ) {
94					$( this.wrapperClass ).find( '.pp-menu-toggle.focus' ).delay(100).trigger( 'focus' );
95				}
96			}
97		}.bind( this ) );
98
99	};
100
101	PPAdvancedMenu.prototype = {
102		nodeClass               : '',
103		wrapperClass            : '',
104		type 	                : '',
105		breakpoints 			: {},
106		$submenus				: null,
107		fullScreenMenu			: null,
108		offCanvasMenu			: null,
109
110		/**
111		 * Check if the screen size fits a mobile viewport.
112		 *
113		 * @since  1.6.1
114		 * @return bool
115		 */
116		_isMobile: function() {
117			return window.innerWidth <= this.breakpoints.small ? true : false;
118		},
119
120		/**
121		 * Check if the screen size fits a medium viewport.
122		 *
123		 * @since  1.10.5
124		 * @return bool
125		 */
126		_isMedium: function() {
127			return window.innerWidth <= this.breakpoints.medium ? true : false;
128		},
129
130		/**
131		 * Check if the screen size fits a large viewport.
132		 *
133		 * @since  1.10.5
134		 * @return bool
135		 */
136		_isLarge: function() {
137			return window.innerWidth <= this.breakpoints.large ? true : false;
138		},
139
140		/**
141		 * Check if the screen size fits a custom viewport.
142		 *
143		 * @since  1.10.5
144		 * @return bool
145		 */
146		_isCustom: function() {
147			return window.innerWidth <= this.breakpoints.custom ? true : false;
148		},
149
150		_isTouch: function() {
151			var prefixes = ' -webkit- -moz- -o- -ms- '.split(' ');
152			var mq = function(query) {
153			  return window.matchMedia(query).matches;
154			}
155		  
156			if (('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
157			  return true;
158			}
159		  
160			// include the 'heartz' as a way to have a non matching MQ to help terminate the join
161			// https://git.io/vznFH
162			var query = ['(', prefixes.join('touch-enabled),('), 'heartz', ')'].join('');
163			return mq(query);
164		},
165
166		_isIOS: function() {
167			return [
168				'iPad Simulator',
169				'iPhone Simulator',
170				'iPod Simulator',
171				'iPad',
172				'iPhone',
173				'iPod'
174			].includes(navigator.platform) 
175			// This explicitly catches modern iPads mimicking desktop Macs:
176			|| (navigator.userAgent.includes("Mac") && navigator.maxTouchPoints > 1);
177		},
178
179		/**
180		 * Check if the menu should toggle for the current viewport base on the selected breakpoint
181		 *
182		 * @see 	this._isMobile()
183		 * @see 	this._isMedium()
184		 * @since  	1.10.5
185		 * @return bool
186		 */
187		_isMenuToggle: function() {
188			if ( ( 'always' == this.mobileBreakpoint
189				|| ( this._isMobile() && 'mobile' == this.mobileBreakpoint )
190				|| ( this._isMedium() && 'medium-mobile' == this.mobileBreakpoint )
191				|| ( this._isCustom() && 'custom' == this.mobileBreakpoint )
192				) && ( $( this.nodeClass ).find( '.pp-advanced-menu-mobile-toggle' ).is(':visible') || 'expanded' == this.mobileToggle ) ) {
193				return true;
194			}
195
196			return false;
197		},
198
199		_bindSettingsFormEvents: function()
200		{
201			// $('body').on( 'change', '.fl-builder-settings select[name="offcanvas_direction"]', function() {
202			// 	$('html').removeClass('pp-off-canvas-menu-open');
203			// } );
204		},
205
206		/**
207		 * Initialize the toggle logic for the menu.
208		 *
209		 * @see    this._isMobile()
210		 * @see    this._menuOnCLick()
211		 * @see    this._clickOrHover()
212		 * @see    this._submenuOnRight()
213		 * @see    this._submenuRowZindexFix()
214		 * @see    this._toggleForMobile()
215		 * @since  1.6.1
216		 * @return void
217		 */
218		_initMenu: function() {
219			if ( this.mobileToggle != 'expanded' ) {
220				this._initOffCanvas();
221				this._initFullScreen();
222			}
223
224			this._setupSubmenu();
225			this._menuOnHover();
226			this._menuOnFocus();
227			this._submenuOnClick();
228
229			if ( $( this.nodeClass ).length && this.type == 'horizontal' ) {
230				this._initMegaMenus();
231			}
232
233			if ( this.type == 'horizontal' || this.type == 'vertical' ) {
234				var self = this;
235				$( this.wrapperClass ).find('.pp-has-submenu-container').on( 'click', function( e ) {
236					if ( self.mobileMenuType !== 'off-canvas' && self.mobileMenuType !== 'full-screen' ) {
237						if ( self._isTouch() ) {
238							if ( ! $(this).hasClass('first-click') ) {
239								e.preventDefault();
240								$(this).addClass('first-click');
241							}
242						}
243					}
244				} );
245
246				// Keyboard nav support for submenu toggle.
247				$( this.wrapperClass ).on( 'keydown.pp-menu', 'a, .pp-has-submenu-container > .pp-menu-toggle', function(e) {
248					var $current = $(e.target);
249
250					var key = e.key || e.which;
251
252					// Normalize keys
253					var KEYS = {
254						LEFT: 'ArrowLeft',
255						RIGHT: 'ArrowRight',
256						UP: 'ArrowUp',
257						DOWN: 'ArrowDown',
258						ENTER: 'Enter',
259						SPACE: ' ',
260					};
261
262					function isKey(match) {
263						return key === match || key === {
264							ArrowLeft: 37,
265							ArrowUp: 38,
266							ArrowRight: 39,
267							ArrowDown: 40,
268							Enter: 13,
269							' ': 32
270						}[match];
271					}
272
273					var $item = $current.closest('li');
274					var $parentItem = $current.closest('li.pp-has-submenu');
275					var $submenu = $current.closest('ul.sub-menu');
276					var isTopLevel = $current.closest('.sub-menu').length === 0;
277
278					/* =========================
279					TOGGLE HANDLING
280					========================= */
281
282					function toggleSubmenu($el) {
283						var $li = $el.closest('li.pp-has-submenu');
284						var $btn = $li.find('> .pp-has-submenu-container > .pp-menu-toggle');
285
286						$li.toggleClass('pp-active');
287
288						var isOpen = $li.hasClass('pp-active');
289
290						if ($btn.length) {
291							$btn.attr('aria-expanded', isOpen);
292						}
293					}
294
295					// Button toggle
296					if ($current.hasClass('pp-menu-toggle')) {
297						if (isKey(KEYS.ENTER) || isKey(KEYS.SPACE)) {
298							e.preventDefault();
299							e.stopPropagation();
300							toggleSubmenu($current);
301							return;
302						}
303					}
304
305					/* =========================
306					TOP LEVEL NAV (← →)
307					========================= */
308
309					if (isTopLevel && (isKey(KEYS.LEFT) || isKey(KEYS.RIGHT))) {
310						e.preventDefault();
311						e.stopPropagation();
312
313						if (isKey(KEYS.LEFT)) {
314							if ( $current.is( '.pp-menu-toggle' ) ) {
315								$current.prev('a').focus();
316							} else {
317								var $prev = $item.prev();
318								if ($prev.length) {
319									var $target = $prev.find('> .pp-has-submenu-container > .pp-menu-toggle:visible');
320									($target.length ? $target : $prev.find('a')).first().focus();
321								}
322							}
323						}
324
325						if (isKey(KEYS.RIGHT)) {
326							if ( $current.next().is( '.pp-menu-toggle:visible' ) ) {
327								$current.next().focus();
328							} else {
329								var $next = $item.next();
330								if ($next.length) {
331									$next.find('a').first().focus();
332								}
333							}
334						}
335
336						return;
337					}
338
339					// NESTED submenu navigation (LEFT / RIGHT)
340					if (!isTopLevel && (isKey(KEYS.RIGHT) || isKey(KEYS.LEFT))) {
341
342						var $parentItem = $current.closest('li.pp-has-submenu');
343
344						// RIGHT → go into child submenu
345						if (isKey(KEYS.RIGHT)) {
346							var $childSubmenu = $parentItem.children('.sub-menu');
347
348							if ($childSubmenu.length) {
349								e.preventDefault();
350								e.stopPropagation();
351
352								// Ensure open state
353								$parentItem.addClass('pp-active');
354
355								var $toggle = $parentItem.find('> .pp-has-submenu-container > .pp-menu-toggle:visible');
356								if ($toggle.length) {
357									$toggle.attr('aria-expanded', true);
358								} else {
359									$parentItem.find('> .pp-has-submenu-container > a').attr('aria-expanded', true);
360								}
361
362								// Focus first item in child submenu
363								$childSubmenu.find('a, .pp-menu-toggle:visible').first().focus();
364							}
365							return;
366						}
367
368						// LEFT ← go back to parent menu item
369						if (isKey(KEYS.LEFT)) {
370							var $currentSubmenu = $current.closest('ul.sub-menu');
371							var $parentItem = $currentSubmenu.parent('li');
372
373							if ($parentItem.length) {
374								e.preventDefault();
375								e.stopPropagation();
376
377								// CLOSE submenu
378								$parentItem.removeClass('pp-active');
379
380								var $toggle = $parentItem.find('> .pp-has-submenu-container > .pp-menu-toggle:visible');
381
382								if ($toggle.length) {
383									$toggle.attr('aria-expanded', false);
384									$toggle.focus();
385								} else {
386									$parentItem.find('> .pp-has-submenu-container > a').attr('aria-expanded', false).focus();
387								}
388							}
389							return;
390						}
391					}
392
393					/* =========================
394					SUBMENU NAV (↑ ↓)
395					========================= */
396
397					// DOWN from toggle → first submenu item
398					if (isKey(KEYS.DOWN) && isTopLevel && $parentItem.length) {
399						e.preventDefault();
400    					e.stopPropagation();
401
402						var $submenu = $parentItem.children('.sub-menu');
403
404						if ($submenu.length) {
405							// ensure open state
406							if (!$parentItem.hasClass('pp-active')) {
407								$parentItem.addClass('pp-active');
408
409								var $toggle = $parentItem.find('> .pp-has-submenu-container > .pp-menu-toggle:visible');
410								if ($toggle.length) {
411									$toggle.attr('aria-expanded', true);
412								} else {
413									$parentItem.find('> .pp-has-submenu-container > a').attr('aria-expanded', true);
414								}
415							}
416
417							// move focus into submenu
418							$submenu.find('a, .pp-menu-toggle:visible').first().focus();
419						}
420
421						return;
422					}
423
424					if (!$submenu.length) {
425						return;
426					}
427
428					var $items = $submenu.find('a, .pp-menu-toggle').filter(':visible');
429					var index = $items.index($current);
430
431					if (index === -1) return;
432
433					// DOWN ↓
434					if (isKey(KEYS.DOWN)) {
435						e.preventDefault();
436						e.stopPropagation();
437
438						var next = index + 1; 
439						if (next < $items.length) {
440							$items.eq(next).focus();
441						}
442						return;
443					}
444
445					// UP ↑
446					if (isKey(KEYS.UP)) {
447						e.preventDefault();
448						e.stopPropagation();
449
450						if (index === 0 && ! $current.closest('.sub-menu').parents('.sub-menu').length) {
451							var $currentSubmenu = $current.closest('ul.sub-menu');
452							var $parentItem = $currentSubmenu.parent('li');
453							var $toggle = $parentItem.find('> .pp-has-submenu-container > .pp-menu-toggle:visible');
454							if ($toggle.length) {
455								$toggle.focus();
456							} else {
457								$parentItem.find('> .pp-has-submenu-container > a').focus();
458							}
459							return;
460						}
461
462						// Don't loop back to the last item if we're on the first item of a submenu
463						if ( index === 0 ) {
464							$items.eq(index).focus();
465							return;
466						}
467
468						$items.eq(index - 1).focus();
469						return;
470					}
471
472				}.bind( this ) );
473			}
474
475			if ( this._isMenuToggle() || this.type == 'accordion' ) {
476				$( this.wrapperClass ).off( 'mouseenter mouseleave' );
477				this._menuOnClick();
478				this._clickOrHover();
479			} else {
480				$( this.wrapperClass ).off( 'click' );
481				this._submenuOnRight();
482				this._submenuRowZindexFix();
483			}
484
485			if ( this.mobileToggle != 'expanded' ) {
486				this._toggleForMobile();
487			}
488
489			$(this.wrapperClass).find('li:not(.menu-item-has-children)').on('click', 'a', function (e) {
490				if ( $(e.target).closest( '.pp-menu-search-item' ).length > 0 ) {
491					return;
492				}
493
494				$(this.nodeClass).find('.pp-advanced-menu').removeClass('menu-open');
495				$(this.nodeClass).find('.pp-advanced-menu').addClass('menu-close');
496				$('html').removeClass('pp-off-canvas-menu-open');
497				$('html').removeClass('pp-full-screen-menu-open');
498
499			}.bind( this ) );
500
501			if ( $( this.wrapperClass ).find( '.pp-menu-search-item' ).length ) {
502				this._toggleMenuSearch();
503			}
504
505			if ( $( this.wrapperClass ).find( '.pp-menu-cart-item').length ) {
506				this._wooUpdateParams();
507			}
508		},
509
510		/**
511		 * Initializes submenu dropdowns.
512		 *
513		 * @since 2.33.x
514		 * @return void
515		 */
516		_setupSubmenu: function() {
517			// $( this.wrapperClass + ' ul.sub-menu' ).each( function(){
518			// 	$( this ).closest( 'li' ).attr( 'aria-haspopup', 'true' );
519			// });
520		},
521
522		_menuOnHover: function() {
523			$( this.wrapperClass ).on( 'mouseenter', 'li.menu-item', function() {
524				$(this).addClass( 'hover' );
525			} ).on( 'mouseleave', 'li.menu-item', function() {
526				$(this).removeClass( 'hover' );
527			} );
528		},
529
530		/**
531		 * Adds a focus class to menu elements similar to be used similar to CSS :hover psuedo event
532		 *
533		 * @since  1.9.0
534		 * @return void
535		 */
536		_menuOnFocus: function() {
537			$( this.nodeClass ).off('focus', 'a').on( 'focus', 'a', function( e ) {
538				var $menuItem	= $( e.target ).parents( '.menu-item' ).first(),
539					$parents	= $( e.target ).parentsUntil( this.wrapperClass );
540
541				$('.pp-advanced-menu .focus:not(.pp-menu-toggle)').removeClass('focus');
542
543				$menuItem.addClass('focus');
544				$parents.addClass('focus');
545
546			}.bind( this ) ).on( 'focusout', 'a', function( e ) {
547				if ( $('.pp-advanced-menu .focus').hasClass('pp-has-submenu') ) {
548					$( e.target ).parentsUntil( this.wrapperClass ).find('.pp-has-submenu-container').removeClass('first-click');
549				}
550			}.bind( this ) );
551
552			$( this.nodeClass ).off('focus', '.pp-menu-toggle').on( 'focus', '.pp-menu-toggle', function( e ) {
553				$(e.target).addClass( 'focus' );
554			}.bind( this ) ).off('blur', '.pp-menu-toggle').on( 'blur', '.pp-menu-toggle', function( e ) {
555				if ( $(e.target).parents( 'li.pp-has-submenu.pp-active' ).length === 0 || $(e.target).parents( 'li.pp-has-submenu.pp-active' ).parent( 'ul.menu' ).length === 0 ) {
556					$(e.target).removeClass( 'focus' );
557				}
558			}.bind( this ) );
559		},
560
561		/**
562		 * Logic for submenu toggling on accordions or mobile menus (vertical, horizontal)
563		 *
564		 * @since  1.6.1
565		 * @return void
566		 */
567		_menuOnClick: function() {
568			var self = this;
569			var $mainItem = '';
570
571			$( this.wrapperClass )
572				.off( 'click.pp-advanced-menu keyup', '.pp-has-submenu-container' )
573				.on( 'click.pp-advanced-menu keyup', '.pp-has-submenu-container', function( e ) {
574				var isValidEvent = e.which == 1 || e.which == 13 || e.which == undefined; // click or enter key press.
575				if ( ! isValidEvent ) {
576					return;
577				}
578				if ( e.which == 13 && ! $(e.target).hasClass( 'pp-menu-toggle' ) ) { // prevent event bubbling.
579					return;
580				}
581				if ( self._isTouch() ) {
582					if ( ! $(this).hasClass('first-click') ) {
583						e.preventDefault();
584						$(this).addClass('first-click');
585					}
586				}
587
588				e.stopPropagation();
589
590				var isMainEl = $(e.target).parents('.menu-item').parent().parent().hasClass('pp-advanced-menu');
591
592				if (isMainEl && $mainItem === '') {
593					$mainItem = $(e.target).parents('.menu-item');
594				}
595
596				var $link			= $( e.target ).parents( '.pp-has-submenu' ).first(),
597					$subMenu 		= $link.children( '.sub-menu' ).first(),
598					$href	 		= $link.children('.pp-has-submenu-container').first().find('> a').attr('href'),
599					$subMenuParents = $( e.target ).parents( '.sub-menu' ),
600					$activeParent 	= $( e.target ).closest( '.pp-has-submenu.pp-active' );
601
602					if ( $activeParent.length > 0 ) {
603						$activeParent.find( '.pp-menu-toggle' ).first().attr('aria-expanded', true);
604					} else {
605						$activeParent.find( '.pp-menu-toggle' ).first().attr('aria-expanded', false);
606					}
607
608				if( !$subMenu.is(':visible') || $(e.target).hasClass('pp-menu-toggle')
609					|| ($subMenu.is(':visible') && (typeof $href === 'undefined' || $href == '#')) ) {
610					if ( ! $(this.wrapperClass).hasClass('pp-advanced-menu-accordion-collapse') ) {
611						e.preventDefault();
612					}
613					if ( $(e.target).hasClass('pp-menu-toggle') ) {
614						e.stopPropagation();
615						e.preventDefault();
616					}
617				}
618				else {
619					e.stopPropagation();
620					window.location.href = $href;
621					return;
622				}
623
624				if ($(this.wrapperClass).hasClass('pp-advanced-menu-accordion-collapse')) {
625
626					if ( $link.parents('.menu-item').length && !$link.parents('.menu-item').hasClass('pp-active') ) {
627						$('.menu .pp-active', this.wrapperClass).not($link).removeClass('pp-active');
628					}
629					else if ($link.parents('.menu-item').hasClass('pp-active') && $link.parent('.sub-menu').length) {
630						$('.menu .pp-active', this.wrapperClass).not($link).not($activeParent).removeClass('pp-active');
631					}
632
633					$('.sub-menu', this.wrapperClass).not($subMenu).not($subMenuParents).slideUp('normal');
634				}
635
636				// Parent menu toggle icon was being reversed on collapsing its submenu,
637				// so here is the workaround to fix this behavior.
638				if ($(self.wrapperClass).find('.sub-menu:visible').length > 0) {
639					$(self.wrapperClass).find('.sub-menu:visible').parent().addClass('pp-active');
640				}
641				$subMenu.slideToggle(400, function() {
642					// Reset previously opened sub-menu toggle icon.
643					$(e.target).parents('.pp-has-submenu-container').parent().parent().find('> .menu-item.pp-active').removeClass('pp-active');
644					
645					if ($mainItem !== '') {
646						$mainItem.parent().find('.menu-item.pp-active').removeClass('pp-active');
647						$(self.wrapperClass).find('.sub-menu').parent().removeClass('pp-active');
648
649						if ($(self.wrapperClass).find('.sub-menu:visible').length > 0) {
650							$(self.wrapperClass).find('.sub-menu:visible').parent().addClass('pp-active');
651						} else {
652							$link.toggleClass('pp-active');
653							$mainItem.removeClass('pp-active');
654						}
655					} else {
656						$link.toggleClass('pp-active');
657					}
658					if (!$subMenu.is(':visible')) {
659						$subMenu.parent().removeClass('pp-active');
660						$subMenu.parent().find('> .p
660p-has-submenu-container .pp-menu-toggle').attr('aria-expanded', false);
661					} else {
662						$subMenu.parent().find('> .pp-has-submenu-container .pp-menu-toggle').attr('aria-expanded', true);
663					}
664				});
665
666			}.bind( this ) );
667
668		},
669
670		/**
671		 * Logic for submenu items click event
672		 *
673		 * @since  1.3.1
674		 * @return void
675		 */
676		_submenuOnClick: function(){
677			$( 'body' ).off( 'click', this.wrapperClass + ' .sub-menu a' ).on( 'click', this.wrapperClass + ' .sub-menu a', function( e ){
678				if ( $( e.target ).parent().hasClass('focus') ) {
679					$( e.target ).parentsUntil( this.wrapperClass ).removeClass( 'focus' );
680				}
681			}.bind( this ) );
682		},
683
684		/**
685		 * Changes general styling and behavior of menus based on mobile / desktop viewport.
686		 *
687		 * @see    this._isMobile()
688		 * @since  1.6.1
689		 * @return void
690		 */
691		_clickOrHover: function() {
692			this.$submenus = this.$submenus || $( this.wrapperClass ).find( '.sub-menu' );
693			var $wrapper   = $( this.wrapperClass ),
694				$menu      = $wrapper.find( '.menu' );
695				$li        = $wrapper.find( '.pp-has-submenu' );
696
697			if( this._isMenuToggle() ) {
698				$li.each( function() {
699					if( !$(this).hasClass('pp-active') ) {
700						$(this).find( '.sub-menu' ).fadeOut();
701					}
702				} );
703			} else {
704				$li.each( function() {
705					if( !$(this).hasClass('pp-active') ) {
706						$(this).find( '.sub-menu' ).css( {
707							'display' : '',
708							'opacity' : ''
709						} );
710					}
711				} );
712			}
713		},
714
715		/**
716		 * Logic to prevent submenus to go outside viewport boundaries.
717		 *
718		 * @since  1.6.1
719		 * @return void
720		 */
721		_submenuOnRight: function() {
722
723			$( this.wrapperClass )
724				.on( 'mouseenter focus', '.pp-has-submenu', function( e ) {
725
726					if( $ ( e.currentTarget ).find('.sub-menu').length === 0 ) {
727						return;
728					}
729
730					var $link           = $( e.currentTarget ),
731						$parent         = $link.parent(),
732						$subMenu        = $link.find( '.sub-menu' ),
733						subMenuWidth    = $subMenu.width(),
734						subMenuPos      = 0,
735						winWidth        = window.innerWidth;
736
737					if( $link.closest( '.pp-menu-submenu-right' ).length !== 0) {
738
739						$link.addClass( 'pp-menu-submenu-right' );
740
741					} else if( $( 'body' ).hasClass( 'rtl' ) ) {
742
743						subMenuPos = $parent.is( '.sub-menu' ) ?
744									 $parent.offset().left - subMenuWidth:
745									 $link.offset().left - subMenuWidth;
746
747						if( subMenuPos <= 0 ) {
748							$link.addClass( 'pp-menu-submenu-right' );
749						}
750
751					} else {
752
753						subMenuPos = $parent.is( '.sub-menu' ) ?
754									 $parent.offset().left + $parent.width() + subMenuWidth :
755									 $link.offset().left + subMenuWidth;
756
757						if( subMenuPos > winWidth ) {
758							$link.addClass('pp-menu-submenu-right');
759						}
760					}
761				}.bind( this ) )
762				.on( 'mouseleave', '.pp-has-submenu', function( e ) {
763					$( e.currentTarget ).removeClass( 'pp-menu-submenu-right' );
764				}.bind( this ) );
765
766		},
767
768		/**
769		 * Logic to prevent submenus to go behind the next overlay row.
770		 *
771		 * @since  2.2
772		 * @return void
773		 */
774		_submenuRowZindexFix: function (e) {
775
776			$(this.wrapperClass)
777				.on('mouseenter', 'ul.menu > .pp-has-submenu', function (e) {
778
779					if ($(e.currentTarget).find('.sub-menu').length === 0) {
780						return;
781					}
782
783					$(this.nodeClass)
784						.closest('.fl-row')
785						.find('.fl-row-content')
786						.css('z-index', '10');
787
788				}.bind( this ) )
789				.on('mouseleave', 'ul.menu > .pp-has-submenu', function (e) {
790
791					$(this.nodeClass)
792						.closest('.fl-row')
793						.find('.fl-row-content')
794						.css('z-index', '');
795
796				}.bind( this ) );
797		},
798
799		/**
800		 * Logic for the mobile menu button.
801		 *
802		 * @since  1.6.1
803		 * @return void
804		 */
805		_toggleForMobile: function() {
806
807			var $wrapper = null,
808				$menu    = null,
809				self 	 = this;
810
811			if ( this._isMenuToggle() ) {
812				$wrapper = $(this.wrapperClass);
813				if ( this._isMobileBelowRowEnabled() ) {
814					this._placeMobileMenuBelowRow();
815					$menu = $(this.nodeClass + '-clone');
816					$menu.find('ul.menu').show();
817				} else {
818					$menu = $wrapper.find('.menu');
819				}
820
821				if( !$wrapper.find( '.pp-advanced-menu-mobile-toggle' ).hasClass( 'pp-active' ) && this.mobileMenuType === 'default' ) {
822					$menu.css({ display: 'none' });
823				}
824
825				$wrapper
826					.off( 'click.pp-mobile-menu-toggle', '.pp-advanced-menu-mobile-toggle' )
827					.on( 'click.pp-mobile-menu-toggle', '.pp-advanced-menu-mobile-toggle', function( e ) {
828						e.stopPropagation();
829						$(this).toggleClass( 'pp-active' );
830						if ( $(this).hasClass('pp-active') ) {
831							$(this).attr('aria-expanded', 'true');
832							$menu.addClass( 'pp-menu-visible' );
833						} else {
834							$(this).attr('aria-expanded', 'false');
835							$menu.removeClass( 'pp-menu-visible' );
836						}
837						$menu.slideToggle();
838				} );
839
840				$menu.on( 'click', '.menu-item > a[href*="#"]', function(e) {
841					var $href = $(this).attr('href'),
842						$targetID = '';
843
844					if ( $href !== '#' ) {
845						$targetID = $href.split('#')[1];
846
847						if ( $('body').find('#'+  $targetID).length > 0 ) {
848							e.preventDefault();
849							$( this ).toggleClass( 'pp-active' );
850							setTimeout(function() {
851								$('html, body').animate({
852									scrollTop: $('#'+ $targetID).offset().top
853								}, 1000, function() {
854									window.location.hash = $targetID;
855								});
856							}, 500);
857
858							if ( ! self._isMenuToggle() ) {
859								$menu.slideToggle();
860							}
861						}
862					}
863				});
864			}
865			else {
866
867				if ( this._isMobileBelowRowEnabled() ) {
868					this._removeMenuFromBelowRow();
869				}
870
871				$wrapper = $( this.wrapperClass ),
872				$menu    = $wrapper.children( '.menu' );
873				$wrapper.find( '.pp-advanced-menu-mobile-toggle' ).removeClass( 'pp-active' );
874				$menu.css({ display: '' });
875			}
876		},
877
878		/**
879		 * Init any mega menus that exist.
880		 *
881		 * @see 	this._isMenuToggle()
882		 * @since  	1.10.4
883		 * @return void
884		 */
885		_initMegaMenus: function() {
886
887			var module     = $( this.nodeClass ),
888				rowContent = module.closest( '.fl-row-content' ),
889				rowWidth   = rowContent.width(),
890				megas      = module.find( '.mega-menu' ),
891				disabled   = module.find( '.mega-menu-disabled' ),
892				isToggle   = this._isMenuToggle();
893
894			if ( isToggle ) {
895				megas.removeClass( 'mega-menu' ).addClass( 'mega-menu-disabled' );
896				module.find( 'li.mega-menu-disabled > ul.sub-menu' ).css( 'width', '' );
897				rowContent.css( 'position', '' );
898			} else {
899				disabled.removeClass( 'mega-menu-disabled' ).addClass( 'mega-menu' );
900				module.find( 'li.mega-menu > ul.sub-menu' ).css( 'width', rowWidth + 'px' );
901				rowContent.css( 'position', 'relative' );
902			}
903		},
904
905		/**
906		 * Init off-canvas menu.
907		 *
908		 * @since  	1.2.8
909		 * @return void
910		 */
911		_initOffCanvas: function() {
912			if ( this.mobileMenuType !== 'off-canvas' ) {
913				return;
914			}
915			$('html').addClass('pp-off-canvas-menu-module');
916			$('html').addClass('pp-off-canvas-menu-' + this.offCanvasDirection);
917
918			if ( $(this.nodeClass).find( '#pp-menu-' + this.settingsId ).length === 0 ) {
919				return;
920			}
921
922			var menuHTML = $(this.nodeClass).find( '#pp-menu-' + this.settingsId ).html();
923
924			if ( null === this.offCanvasMenu ) {
925				this.offCanvasMenu = $('<div id="pp-advanced-menu-off-canvas-'+this.settingsId+'" class="fl-node-'+this.settingsId+' pp-menu-off-canvas" />').html( menuHTML );
926			}
927			if ( $('#pp-advanced-menu-off-canvas-'+this.settingsId).length === 0 && null !== this.offCanvasMenu && ! this.isBuilderActive ) {
928				this.offCanvasMenu.appendTo( 'body' );
929			}
930
931			$(this.nodeClass).trigger('pp-advanced-menu-off-canvas-init', [this.offCanvasMenu]);
932
933			this._toggleMenu();
934		},
935
936		/**
937		 * Init full-screen overlay menu.
938		 *
939		 * @since  	1.2.8
940		 * @return void
941		 */
942		_initFullScreen: function() {
943			if ( this.mobileMenuType !== 'full-screen' ) {
944				return;
945			}
946
947			$('html').addClass('pp-full-screen-menu-module');
948
949			if ( $(this.nodeClass).find( '#pp-menu-' + this.settingsId ).length === 0 ) {
950				return;
951			}
952
953			var menuHTML = $(this.nodeClass).find( '#pp-menu-' + this.settingsId ).html();
954
955			if ( null === this.fullScreenMenu ) {
956				this.fullScreenMenu = $('<div id="pp-advanced-menu-full-screen-'+this.settingsId+'" class="fl-node-'+this.settingsId+' pp-menu-full-screen" />').html( menuHTML );
957			}
958			if ( $('#pp-advanced-menu-full-screen-'+this.settingsId).length === 0 && null !== this.fullScreenMenu && ! this.isBuilderActive ) {
959				this.fullScreenMenu.appendTo( 'body' );
960			}
961
962			$(this.nodeClass).trigger('pp-advanced-menu-full-screen-init', [this.fullScreenMenu]);
963
964			this._toggleMenu();
965		},
966
967		/**
968		 * Trigger the toggle event for off-canvas
969		 * and full-screen overlay menus.
970		 *
971		 * @since  	1.2.8
972		 * @return void
973		 */
974		_toggleMenu: function() {
975			var self = this;
976			var singleInstance = true;
977			if( self.mobileMenuType === 'full-screen' ) {
978				var winHeight = window.innerHeight;
979				$(self.nodeClass).find('.pp-menu-overlay').css('height', winHeight + 'px');
980				$(window).on('resize', function() {
981					winHeight = window.innerHeight;
982					$(self.nodeClass).find('.pp-menu-overlay').css('height', winHeight + 'px');
983				});
984			}
985
986			// Toggle Click
987			var toggleEvent = ('ontouchend' in window) && this._isIOS() ? 'touchend' : 'click';
988			$(self.nodeClass).find('.pp-advanced-menu-mobile-toggle' ).off(toggleEvent).on( toggleEvent, function() {
989				if ( singleInstance ) {
990					if ( $('.pp-advanced-menu.menu-open').length > 0 ) {
991						$('.pp-advanced-menu').removeClass('menu-open');
992						$('html').removeClass('pp-full-screen-menu-open');
993					}
994				}
995				if( $(self.nodeClass).find('.pp-advanced-menu').hasClass('menu-open') ) {
996					$(self.nodeClass).find('.pp-advanced-menu').removeClass('menu-open');
997					$(self.nodeClass).find('.pp-advanced-menu').addClass('menu-close');
998					$('html').removeClass('pp-off-canvas-menu-open');
999					$('html').removeClass('pp-full-screen-menu-open');
1000				} else {
1001					$(self.nodeClass).find('.pp-advanced-menu').addClass('menu-open');
1002					if( self.mobileMenuType === 'off-canvas' ) {
1003						$('html').addClass('pp-off-canvas-menu-open');
1004						self.offCanvasMenu.find('nav').attr('tabindex', '0').trigger( 'focus' );
1005						$(this).attr( 'tabindex', '-1' ).trigger( 'blur' );
1006					}
1007					if( self.mobileMenuType === 'full-screen' ) {
1008						$('html').addClass('pp-full-screen-menu-open');
1009						self.fullScreenMenu.find('nav').attr('tabindex', '0').trigger( 'focus' );
1010						$(this).attr( 'tabindex', '-1' ).trigger( 'blur' );
1011					}
1012				}
1013
1014				if ( '0' == $(this).attr('tabindex') ) {
1015					$(this).attr('aria-expanded', 'false');
1016				} else {
1017					$(this).attr('aria-expanded', 'true');
1018				}
1019			} );
1020
1021			// iOS Safari "hover" fix.
1022			// This is needed to ensure the click event works properly on iOS devices since they treat the first tap as a hover event,
1023			// which can interfere with the intended toggle behavior of the menu.
1024			// $(self.nodeClass).find('.pp-advanced-menu-mobile-toggle' ).on( 'touchstart', function(e) {
1025			// 	e.preventDefault();
1026			// 	e.stopPropagation();
1027			// 	$(this).trigger('click');
1028			// } );
1029
1030			// Keyboard navigation.
1031			$(self.nodeClass).find('.pp-advanced-menu-mobile-toggle').on('keyup', function(e) {
1032				if ( 13 === e.keyCode || 13 === e.which ) {
1033					$(this).trigger('click');
1034				}
1035			});
1036
1037			// Close button click
1038			$(self.nodeClass).find('.pp-advanced-menu .pp-menu-close-btn, .pp-clear').on( 'click', function() {
1039				$(self.nodeClass).find('.pp-advanced-menu').removeClass('menu-open');
1040				$(self.nodeClass).find('.pp-advanced-menu').addClass('menu-close');
1041				$('html').removeClass('pp-off-canvas-menu-open');
1042				$('html').removeClass('pp-full-screen-menu-open');
1043
1044				if ( $(self.nodeClass).find('.pp-advanced-menu-mobile-toggle' ).is( ':visible' ) ) {
1045					setTimeout(function() {
1046						$(self.nodeClass).find('.pp-advanced-menu-mobile-toggle' )
1047							.attr( 'tabindex', 0 )
1048							.attr( 'aria-expanded', 'false' )
1049							.trigger( 'focus' );
1050					}, 120);
1051				}
1052
1053				if ( self.offCanvasMenu && self.offCanvasMenu.length > 0 ) {
1054					self.offCanvasMenu.find('nav').attr('tabindex', '-1').trigger( 'blur' );
1055				}
1056				if ( self.fullScreenMenu && self.fullScreenMenu.length > 0 ) {
1057					self.fullScreenMenu.find('nav').attr('tabindex', '-1').trigger( 'blur' );
1058				}
1059			} );
1060
1061			if ( this.isBuilderActive ) {
1062				setTimeout(function() {
1063					if ( $('.fl-builder-settings[data-node="'+self.settingsId+'"]').length > 0 ) {
1064						$('.pp-advanced-menu').removeClass('menu-open');
1065						$(self.nodeClass).find('.pp-advanced-menu-mobile-toggle').trigger('click');
1066					}
1067				}, 600);
1068
1069				FLBuilder.addHook('settings-form-init', function() {
1070					if ( ! $('.fl-builder-settings[data-node="'+self.settingsId+'"]').length > 0 ) {
1071						return;
1072					}
1073					if ( ! $(self.nodeClass).find('.pp-advanced-menu').hasClass('menu-open') ) {
1074						$('.pp-advanced-menu').removeClass('menu-open');
1075						$(self.nodeClass).find('.pp-advanced-menu-mobile-toggle').trigger('click');
1076					}
1077				});
1078
1079				if ( $('html').hasClass('pp-full-screen-menu-open') && ! $(self.nodeClass).find('.pp-advanced-menu').hasClass('menu-open') ) {
1080					$('html').removeClass('pp-full-screen-menu-open');
1081				}
1082				if ( $('html').hasClass('pp-off-canvas-menu-open') && ! $(self.nodeClass).find('.pp-advanced-menu').hasClass('menu-open') ) {
1083					$('html').removeClass('pp-off-canvas-menu-open');
1084				}
1085			}
1086		},
1087
1088		/**
1089		 * Check to see if Below Row should be enabled.
1090		 *
1091		 * @since  	2.8.0
1092		 * @return boolean
1093		 */
1094		_isMobileBelowRowEnabled: function() {
1095			if (this.mobileMenuType === 'default') {
1096				return this.mobileBelowRow && $( this.nodeClass ).closest( '.fl-col' ).length;
1097			}
1098			return false;
1099		},
1100
1101		/**
1102		 * Logic for putting the mobile menu below the menu's
1103		 * column so it spans the full width of the page.
1104		 *
1105		 * @since  2.2
1106		 * @return void
1107		 */
1108		_placeMobileMenuBelowRow: function () {
1109
1110			if ($(this.nodeClass + '-clone').length) {
1111				return;
1112			}
1113			// if ( $('html').hasClass( 'fl-builder-edit' ) ) {
1114			// 	return;
1115			// }
1116
1117			var module = $(this.nodeClass),
1118				clone = null,
1119				row = module.closest('.fl-row-content');
1120
1121			if ( module.length < 1 ) {
1122				return;
1123			}
1124
1125			clone = ( module.length > 1 ) ? $( module[0] ).clone() : module.clone();
1126			module.find('.pp-menu-nav').remove();
1127			clone.addClass((this.nodeClass + '-clone').replace('.', ''));
1128			clone.addClass('pp-menu-mobile-clone');
1129			clone.find('.pp-advanced-menu-mobile').remove();
1130			row.append(clone);
1131
1132			// Removes animation when enabled.
1133			if ( module.hasClass( 'fl-animation' ) ) {
1134				clone.removeClass( 'fl-animation' );
1135			}
1136
1137			this._menuOnClick();
1138		},
1139
1140		/**
1141		 * Logic for removing the mobile menu from below the menu's
1142		 * column and putting it back in the main wrapper.
1143		 *
1144		 * @since  2.2
1145		 * @return void
1146		 */
1147		_removeMenuFromBelowRow: function () {
1148
1149			if (!$(this.nodeClass + '-clone').length) {
1150				return;
1151			}
1152
1153			var module = $(this.nodeClass),
1154				clone = $(this.nodeClass + '-clone'),
1155				menu = clone.find('.pp-menu-nav');
1156
1157			module.find('.pp-advanced-menu-mobile').after(menu);
1158			module.find('.pp-advanced-menu-mobile-toggle').attr( 'aria-expanded', false );
1159			clone.remove();
1160		},
1161
1162		_toggleMenuSearch: function() {
1163			var items =  $( this.wrapperClass ).find( '.pp-menu-search-item' ),
1164				self  = this;
1165
1166			items.each( function() {
1167				var item = $(this);
1168				var button = item.find( '> a' ),
1169					form = item.find( '.pp-search-form' ),
1170					input = item.find('.pp-search-form__input');
1171
1172				button.on( 'click', function(e) {
1173					e.preventDefault();
1174					item.toggleClass( 'pp-search-active' );
1175					if ( item.hasClass( 'pp-search-active' ) ) {
1176						setTimeout( function() {
1177							input.focus();
1178							self._focusMenuSearch( input );
1179						}, 100 );
1180					}
1181
1182					$('body').on( 'click.pp-menu-search', self._hideMenuSearch.bind( self ) );
1183				} );
1184
1185				input.on( 'focus', function() {
1186					form.addClass( 'pp-search-form--focus' );
1187				} ).on( 'blur', function() {
1188					form.removeClass( 'pp-search-form--focus' );
1189				} );
1190
1191				// Close search form on ESC key press.
1192				input.on( 'keyup', function(e) {
1193					if ( e.key === 'Escape' || e.keyCode === 27 ) {
1194						item.removeClass( 'pp-search-active' );
1195						$('body').off('click.pp-menu-search');
1196						button.delay(100).focus();
1197					}
1198				} );
1199			} );
1200		},
1201
1202		_hideMenuSearch: function(e) {
1203			if (e !== undefined) {
1204				if ($(e.target).closest('.pp-menu-search-item').length > 0) {
1205					return;
1206				}
1207			}
1208
1209			$( this.wrapperClass ).find( '.pp-menu-search-item' ).removeClass( 'pp-search-active' );
1210			$('body').off('click.pp-menu-search');
1211		},
1212
1213		_focusMenuSearch: function( $el ) {
1214			// If this function exists... (IE 9+)
1215			if ( $el[0].setSelectionRange ) {
1216				// Double the length because Opera is inconsistent about whether a carriage return is one character or tw
1216o.
1217				var len = $el.val().length * 2;
1218
1219				// Timeout seems to be required for Blink
1220				setTimeout(function() {
1221					$el[0].setSelectionRange( len, len );
1222				}, 1);
1223			} else {
1224				// As a fallback, replace the contents with itself
1225				// Doesn't work in Chrome, but Chrome supports setSelectionRange
1226				$el.val( $el.val() );
1227			}
1228		},
1229
1230		/**
1231		 * Adds menu node and post ID to WooCommerce ajax URL requests.
1232		 *
1233		 * @since  2.20
1234		 * @return void
1235		 */
1236		 _wooUpdateParams: function() {
1237			if ( 'undefined' !== typeof wc_cart_fragments_params ) {
1238				wc_cart_fragments_params.wc_ajax_url += '&pp-advanced-menu-node='+ this.settingsId +'&post-id='+ this.postId;
1239			}
1240			if ( 'undefined' !== typeof wc_add_to_cart_params ) {
1241				wc_add_to_cart_params.wc_ajax_url += '&pp-advanced-menu-node='+ this.settingsId +'&post-id='+ this.postId;
1242			}
1243		},
1244
1245		_validClick: function(e) {
1246			return (e.which == 1 || e.which == 13 || e.which == 32 || e.which == undefined) ? true : false;
1247		}
1248
1249	};
1250
1251})(jQuery);
1252
1253var pp_menu_5bb37a7673668;
1254(function($) {
1255
1256    pp_menu_5bb37a7673668 = new PPAdvancedMenu({
1257    	id: '5bb37a7673668',
1258    	type: 'horizontal',
1259		mobile: 'hamburger',
1260		menuPosition: 'below',
1261		breakpoints: {
1262			large: 1200,
1263			medium: 992,
1264			small: 768,
1265			custom: 768		},
1266		mobileBreakpoint: 'mobile',
1267		mediaBreakpoint: '768',
1268		mobileMenuType: 'default',
1269		offCanvasDirection: 'left',
1270		fullScreenAnimation: '',
1271		isBuilderActive: false    });
1272
1273})(jQuery);
1274
1275var pp_menu_5bdc4763e0624;
1276(function($) {
1277
1278    pp_menu_5bdc4763e0624 = new PPAdvancedMenu({
1279    	id: '5bdc4763e0624',
1280    	type: 'horizontal',
1281		mobile: 'expanded',
1282		menuPosition: 'below',
1283		breakpoints: {
1284			large: 1200,
1285			medium: 992,
1286			small: 768,
1287			custom: 768		},
1288		mobileBreakpoint: 'mobile',
1289		mediaBreakpoint: '768',
1290		mobileMenuType: 'default',
1291		offCanvasDirection: 'left',
1292		fullScreenAnimation: '',
1293		isBuilderActive: false    });
1294
1295})(jQuery);
1296
1297var pp_menu_5bfc6b2579057;
1298(function($) {
1299
1300    pp_menu_5bfc6b2579057 = new PPAdvancedMenu({
1301    	id: '5bfc6b2579057',
1302    	type: 'horizontal',
1303		mobile: 'expanded',
1304		menuPosition: 'below',
1305		breakpoints: {
1306			large: 1200,
1307			medium: 992,
1308			small: 768,
1309			custom: 768		},
1310		mobileBreakpoint: 'always',
1311		mediaBreakpoint: '768',
1312		mobileMenuType: 'default',
1313		offCanvasDirection: 'left',
1314		fullScreenAnimation: '',
1315		isBuilderActive: false    });
1316
1317})(jQuery);
1318
1319var pp_menu_5bfc720b1dca2;
1320(function($) {
1321
1322    pp_menu_5bfc720b1dca2 = new PPAdvancedMenu({
1323    	id: '5bfc720b1dca2',
1324    	type: 'horizontal',
1325		mobile: 'hamburger',
1326		menuPosition: 'below',
1327		breakpoints: {
1328			large: 1200,
1329			medium: 992,
1330			small: 768,
1331			custom: 768		},
1332		mobileBreakpoint: 'always',
1333		mediaBreakpoint: 'always',
1334		mobileMenuType: 'default',
1335		offCanvasDirection: 'left',
1336		fullScreenAnimation: '',
1337		isBuilderActive: false    });
1338
1339})(jQuery);
1340(function($) {
1341	if ( $('.fl-node-5be3309a4d310 .pp-photo-rollover').length > 0 ) {
1342		$('body').on( 'mouseenter.pp-rollover', '.fl-node-5be3309a4d310 .pp-photo-rollover .pp-photo-content', function() {
1343			$(this).addClass( 'is-hover' );
1344		} ).on( 'mouseleave.pp-rollover', '.fl-node-5be3309a4d310 .pp-photo-rollover .pp-photo-content', function() {
1345			$(this).removeClass( 'is-hover' );
1346		} );
1347	}
1348})(jQuery);
1349/* Start Layout Custom JS */
1350
1351/* End Layout Custom JS */
1352
1353(function($){
1354
1355	/**
1356	 * Helper class for header layout logic.
1357	 *
1358	 * @since 1.0
1359	 * @class FLThemeBuilderHeaderLayout
1360	 */
1361	FLThemeBuilderHeaderLayout = {
1362
1363		/**
1364		 * A reference to the window object for this page.
1365		 *
1366		 * @since 1.0
1367		 * @property {Object} win
1368		 */
1369		win : null,
1370
1371		/**
1372		 * A reference to the body object for this page.
1373		 *
1374		 * @since 1.0
1375		 * @property {Object} body
1376		 */
1377		body : null,
1378
1379		/**
1380		 * A reference to the header object for this page.
1381		 *
1382		 * @since 1.0
1383		 * @property {Object} header
1384		 */
1385		header : null,
1386
1387		/**
1388		 * Whether this header overlays the content or not.
1389		 *
1390		 * @since 1.0
1391		 * @property {Boolean} overlay
1392		 */
1393		overlay : false,
1394
1395		/**
1396		 * Whether the page has the WP admin bar or not.
1397		 *
1398		 * @since 1.0
1399		 * @property {Boolean} hasAdminBar
1400		 */
1401		hasAdminBar : false,
1402
1403		/**
1404		 * Breakpoint for when the sticky header should apply.
1405		 *
1406		 * @since 1.4
1407		 * @property {String} stickyOn
1408		 */
1409		stickyOn: '',
1410
1411		/**
1412		 * A reference of the sticky and shrink header breakpoint.
1413		 *
1414		 * @since 1.2.5
1415		 * @property {Number} breakpointWidth
1416		 */
1417		breakpointWidth: 0,
1418
1419		/**
1420		 * Whether this header can be pinned from page load.
1421		 *
1422		 * @since 1.6.1
1423		 * @property {Boolean} pinnable
1424		 */
1425		pinnable : false,
1426
1427		/**
1428		 * Initializes header layout logic.
1429		 *
1430		 * @since 1.0
1431		 * @method init
1432		 */
1433		init: function()
1434		{
1435			var editing          = $( 'html.fl-builder-edit' ).length,
1436				header           = $( '.fl-builder-content[data-type=header]' ),
1437				menuModule       = header.find( '.fl-module-menu' ),
1438				breakpoint       = null,
1439				adminBarHeight   = 0;
1440
1441			if ( ! editing && header.length ) {
1442
1443				header.imagesLoaded( $.proxy( function() {
1444
1445					this.win         = $( window );
1446					this.body        = $( 'body' );
1447					this.header      = header.eq( 0 );
1448					this.overlay     = !! Number( header.attr( 'data-overlay' ) );
1449					this.hasAdminBar = !! $( 'body.admin-bar' ).length;
1450					this.stickyOn    = this.header.data( 'sticky-on' );
1451					breakpoint       = this.header.data( 'sticky-breakpoint' );
1452
1453					if ( '' == this.stickyOn ) {
1454						if ( typeof FLBuilderLayoutConfig.breakpoints[ breakpoint ] !== undefined ) {
1455							this.breakpointWidth = FLBuilderLayoutConfig.breakpoints[ breakpoint ];
1456						}
1457						else {
1458							this.breakpointWidth = FLBuilderLayoutConfig.breakpoints.medium;
1459						}
1460					}
1461
1462					if ( Number( header.attr( 'data-sticky' ) ) ) {
1463
1464						this.header.data( 'original-top', this.header.offset().top );
1465
1466						// The pin decision is made once here, while the header offset and the admin bar height are read from the same layout.
1467						adminBarHeight = $( '#wpadminbar' ).length ? $( '#wpadminbar' ).outerHeight() : 0;
1468						this.pinnable  = this.overlay && this.header.data( 'original-top' ) <= adminBarHeight;
1469
1470						this.win.on( 'resize', $.throttle( 500, $.proxy( this._initSticky, this ) ) );
1471						this._initSticky();
1472
1473					}
1474
1475				}, this ) );
1476			}
1477		},
1478
1479		/**
1480		 * Initializes sticky logic for a header.
1481		 *
1482		 * @since 1.0
1483		 * @access private
1484		 * @method _initSticky
1485		 */
1486		_initSticky: function( e )
1487		{
1488			var header     = $('.fl-builder-content[data-type=header]'),
1489				windowSize = this.win.width(),
1490				makeSticky = false;
1491
1492			makeSticky = this._makeWindowSticky( windowSize );
1493			if ( makeSticky || ( this.breakpointWidth > 0 && windowSize >= this.breakpointWidth ) ) {
1494				this.win.on( 'scroll.fl-theme-builder-header-sticky', $.proxy( this._doSticky, this ) );
1495				this._initPin();
1496
1497				// Apply the sticky state on initial load when the page is
1498				// already scrolled past the header — e.g. when the browser
1499				// restores the scroll position on refresh. Overlay headers are
1500				// out of scope here; this mirrors the shrink-on-load behavior
1501				// in _initShrink().
1502				if ( ! e && ! this.overlay && ! this.header.hasClass( 'fl-theme-builder-header-sticky' ) ) {
1503					var loadWinTop    = this.win.scrollTop(),
1504						loadHeaderTop = Math.floor( this.header.data( 'original-top' ) );
1505
1506					if ( this.hasAdminBar && windowSize > 600 ) {
1507						loadWinTop += Math.floor( $( '#wpadminbar' ).outerHeight() );
1508					}
1509
1510					if ( loadWinTop > loadHeaderTop ) {
1511						this.header.addClass( 'fl-theme-builder-header-sticky' );
1512						this.header.addClass( 'fl-theme-builder-header-scrolled' );
1513						this._adjustHeaderHeight();
1514						this._adjustStickyHeaderWidth();
1515					}
1516				}
1517
1518				//
1519				// Check if Event Type is 'resize' then invoke this._doSticky()
1520				// only if the 'fl-theme-builder-header-sticky' class is already present.
1521				//
1522				if ( e && 'resize' === e.type ) {
1523					if ( this.header.hasClass( 'fl-theme-builder-header-sticky' ) ) {
1524						this._doSticky( e );
1525					}
1526					this._adjustStickyHeaderWidth();
1527				}
1528
1529				if ( Number( header.attr( 'data-shrink' ) ) ) {
1530					this.header.data( 'original-height', this.header.outerHeight() );
1531					this.win.on( 'resize', $.throttle( 500, $.proxy( this._initShrink, this ) ) );
1532					this._initShrink();
1533				}
1534
1535				this._initFlyoutMenuFix( e );
1536			} else {
1537				this.win.off( 'scroll.fl-theme-builder-header-sticky' );
1538				this.win.off( 'resize.fl-theme-builder-header-sticky' );
1539
1540				this.header.removeClass( 'fl-theme-builder-header-sticky' );
1541				this.header.removeClass( 'fl-theme-builder-header-pinned' );
1542				this.header.removeAttr( 'style' );
1543				this.header.parent().css( 'padding-top', '0' );
1544			}
1545		},
1546
1547		/**
1548		 * Pins an overlay header with fixed positioning from page load, avoiding a position change that a scroll handler cannot apply before the compositor paints.
1549		 *
1550		 * @since 1.6.1
1551		 * @access private
1552		 * @method _initPin
1553		 */
1554		_initPin: function()
1555		{
1556			this.header.toggleClass( 'fl-theme-builder-header-pinned', this.pinnable );
1557
1558			if ( ! this.pinnable ) {
1559				return;
1560			}
1561
1562			// Fixed positioning resolves the width against the viewport, so boxed layouts require their maximum width immediately.
1563			this._adjustStickyHeaderWidth();
1564
1565			// The header is visible from the first paint, so the scrolled state must reflect any restored scroll position.
1566			if ( this.win.scrollTop() > Math.floor( this.header.data( 'original-top' ) ) ) {
1567				this.header.addClass( 'fl-theme-builder-header-scrolled' );
1568			}
1569		},
1570
1571		/**
1572		 * Check if Header should be sticky at a particular Window size.
1573		 *
1574		 * @since 1.4
1575		 * @access private
1576		 * @param  widowSize
1577		 * @method _makeWindowSticky
1578		 */
1579		_makeWindowSticky: function ( windowSize )
1580		{
1581			var makeSticky = false;
1582
1583			switch (this.stickyOn) {
1584				case 'xl':
1585					makeSticky = windowSize > FLBuilderLayoutConfig.breakpoints['large'];
1586					break;
1587				case '': // Default
1588				case 'desktop':
1589					makeSticky = windowSize >= FLBuilderLayoutConfig.breakpoints['medium'];
1590					break;
1591				case 'desktop-medium':
1592					makeSticky = windowSize > FLBuilderLayoutConfig.breakpoints['small'];
1593					break;
1594				case 'large':
1595					makeSticky = windowSize > FLBuilderLayoutConfig.breakpoints['medium'] && windowSize <= FLBuilderLayoutConfig.breakpoints['large'];
1596					break;
1597				case 'large-medium':
1598					makeSticky = windowSize > FLBuilderLayoutConfig.breakpoints['small'] && windowSize <= FLBuilderLayoutConfig.breakpoints['large'];
1599					break;
1600				case 'medium':
1601					makeSticky = ( windowSize <= FLBuilderLayoutConfig.breakpoints['medium'] && windowSize > FLBuilderLayoutConfig.breakpoints['small'] );
1602					break;
1603				case 'medium-mobile':
1604					makeSticky = (windowSize <= FLBuilderLayoutConfig.breakpoints['medium']);
1605					break;
1606				case 'mobile':
1607					makeSticky = (windowSize <= FLBuilderLayoutConfig.breakpoints['small']);
1608					break;
1609				case 'all':
1610					makeSticky = true;
1611					break;
1612			}
1613
1614			return makeSticky;
1615		},
1616
1617		/**
1618		 * Sticks the header when the page is scrolled.
1619		 *
1620		 * @since 1.0
1621		 * @access private
1622		 * @method _doSticky
1623		 */
1624		_doSticky: function( e )
1625		{
1626			var winTop    		  = Math.floor( this.win.scrollTop() ),
1627				headerTop 		  = Math.floor( this.header.data( 'original-top' ) ),
1628				hasStickyClass    = this.header.hasClass( 'fl-theme-builder-header-sticky' ),
1629				hasScrolledClass  = this.header.hasClass( 'fl-theme-builder-header-scrolled' ),
1630				beforeHeader      = this.header.prevAll( '.fl-builder-content' ),
1631				bodyTopPadding    = parseInt( jQuery('body').css('padding-top') ),
1632				winBarHeight      = $('#wpadminbar').length ? $('#wpadminbar').outerHeight() : 0,
1633				headerHeight      = 0;
1634
1635			if ( isNaN( bodyTopPadding ) ) {
1636				bodyTopPadding = 0;
1637			}
1638
1639			if ( this.hasAdminBar && this.win.width() > 600 ) {
1640				winTop += Math.floor( winBarHeight );
1641			}
1642
1643			if ( winTop > headerTop ) {
1644				if ( ! hasStickyClass ) {
1645					if ( e && ( 'scroll' === e.type || 'smartscroll' === e.type ) ) {
1646					 	this.header.addClass( 'fl-theme-builder-header-sticky' );
1647						if ( this.overlay && beforeHeader.length ) {
1648							this.header.css( 'top', winBarHeight);
1649						}
1650					}
1651
1652					if ( ! this.overlay ) {
1653						this._adjustHeaderHeight();
1654					}
1655				}
1656			}
1657			else if ( hasStickyClass ) {
1658				this.header.removeClass( 'fl-theme-builder-header-sticky' );
1659				this.header.removeAttr( 'style' );
1660				this.header.parent().css( 'padding-top', '0' );
1661			}
1662
1663			this._adjustStickyHeaderWidth();
1664
1665			if ( winTop > headerTop ) {
1666				if ( ! hasScrolledClass ) {
1667					this.header.addClass( 'fl-theme-builder-header-scrolled' );
1668				}
1669			} else if ( hasScrolledClass ) {
1670				this.header.removeClass( 'fl-theme-builder-header-scrolled' );
1671			}
1672
1673			this._flyoutMenuFix( e );
1674		},
1675
1676		/**
1677		 * Initializes flyout menu fixes on sticky header.
1678		 *
1679		 * @since 1.4.1
1680		 * @method _initFlyoutMenuFix
1681		 */
1682		_initFlyoutMenuFix: function( e ) {
1683			var header       = this.header,
1684				menuModule   = header.closest( '.fl-menu' ),
1685				flyoutMenu   = menuModule.find( '.fl-menu-mobile-flyout' ),
1686				isPushMenu   = menuModule.hasClass( 'fl-menu-responsive-flyout-push' ) || menuModule.hasClass( 'fl-menu-responsive-flyout-push-opacity' ),
1687				isOverlay    = menuModule.hasClass( 'fl-menu-responsive-flyout-overlay' ),
1688				flyoutPos    = menuModule.hasClass( 'fl-flyout-right' ) ? 'right' : 'left',
1689				flyoutParent = header.parent().is( 'header' ) ? header.parent().parent() : header.parent();
1690				isFullWidth  = this.win.width() === header.width(),
1691				flyoutLayout = '',
1692				activePos    = 250,
1693				headerPos    = 0;
1694
1695			if ( ! flyoutMenu.length ) {
1696				return;
1697			}
1698
1699			if ( this.win.width() > header.parent().width() ) {
1700				headerPos = ( this.win.width() - header.width() ) / 2;
1701			}
1702
1703			if ( isOverlay ) {
1704				activePos = headerPos;
1705			}
1706			else if ( isPushMenu ) {
1707				activePos = activePos + headerPos;
1708			}
1709			flyoutMenu.data( 'activePos', activePos );
1710
1711			if ( isPushMenu ) {
1712				flyoutLayout = 'push-' + flyoutPos;
1713			}
1714			else if ( isOverlay ) {
1715				flyoutLayout = 'overlay-' + flyoutPos;
1716			}
1717
1718			if ( isPushMenu && ! $( 'html' ).hasClass( 'fl-theme-builder-has-flyout-menu' ) ) {
1719				$( 'html' ).addClass( 'fl-theme-builder-has-flyout-menu' );
1720			}
1721
1722			if ( ! flyoutParent.hasClass( 'fl-theme-builder-flyout-menu-' + flyoutLayout ) ) {
1723				flyoutParent.addClass( 'fl-theme-builder-flyout-menu-' + flyoutLayout );
1724			}
1725
1726			if ( ! header.hasClass( 'fl-theme-builder-flyout-menu-overlay' ) && isOverlay ) {
1727				header.addClass( 'fl-theme-builder-flyout-menu-overlay' );
1728			}
1729
1730			if ( ! header.hasClass( 'fl-theme-builder-header-full-width' ) && isFullWidth ) {
1731			   header.addClass( 'fl-theme-builder-header-full-width' );
1732		    }
1733			else if ( ! isFullWidth ) {
1734				header.removeClass( 'fl-theme-builder-header-full-width' );
1735			}
1736
1737			menuModule.on( 'click', '.fl-menu-mobile-toggle', $.proxy( function( event ){
1738				if ( menuModule.find( '.fl-menu-mobile-toggle.fl-active' ).length ) {
1739					$( 'html' ).addClass( 'fl-theme-builder-flyout-menu-active' );
1740					event.stopImmediatePropagation();
1741				}
1742				else {
1743					$( 'html' ).removeClass( 'fl-theme-builder-flyout-menu-active' );
1744				}
1745
1746				this._flyoutMenuFix( event );
1747			}, this ) );
1748		},
1749
1750		/**
1751		 * Fix flyout menu inside the sticky header.
1752		 *
1753		 * @since 1.4.1
1754		 * @method _flyoutMenuFix
1755		 */
1756		_flyoutMenuFix: function( e ){
1757			var header      = this.header,
1758			    menuModule  = $( e.target ).closest( '.fl-menu' ),
1759				flyoutMenu  = menuModule.find( '.fl-menu-mobile-flyout' ),
1760				flyoutPos   = menuModule.hasClass( 'fl-flyout-right' ) ? 'right' : 'left',
1761				menuOpacity = menuModule.find( '.fl-menu-mobile-opacity' ),
1762				isScroll    = 'undefined' !== typeof e && 'scroll' === e.handleObj.type,
1763				activePos   = 'undefined' !== typeof flyoutMenu.data( 'activePos' ) ? flyoutMenu.data( 'activePos' ) : 0,
1764				headerPos   = ( this.win.width() - header.width() ) / 2,
1765				inactivePos = headerPos > 0 ? activePos + 4 : 254;
1766
1767			if ( ! flyoutMenu.length ) {
1768				return;
1769			}
1770
1771			if ( this.overlay ) {
1772				return;
1773			}
1774
1775			if( $( '.fl-theme-builder-flyout-menu-active' ).length ) {
1776
1777				if ( isScroll && ! flyoutMenu.hasClass( 'fl-menu-disable-transition' ) ) {
1778					flyoutMenu.addClass( 'fl-menu-disable-transition' );
1779				}
1780
1781				if ( header.hasClass( 'fl-theme-builder-header-sticky' ) ) {
1782					if ( ! isScroll ) {
1783						setTimeout( $.proxy( function(){
1784							flyoutMenu.css( flyoutPos, '-' + activePos + 'px' );
1785						}, this ), 1 );
1786					}
1787					else {
1788						flyoutMenu.css( flyoutPos, '-' + activePos + 'px' );
1789					}
1790				}
1791				else {
1792					flyoutMenu.css( flyoutPos, '0px' );
1793				}
1794			}
1795			else {
1796				if ( flyoutMenu.hasClass( 'fl-menu-disable-transition' ) ) {
1797					flyoutMenu.removeClass( 'fl-menu-disable-transition' );
1798				}
1799
1800				if ( header.hasClass( 'fl-theme-builder-flyout-menu-overlay' ) && headerPos > 0 && headerPos < 250 ) {
1801					if ( header.hasClass( 'fl-theme-builder-header-sticky' ) ) {
1802						inactivePos = headerPos + 254;
1803					}
1804					else {
1805						inactivePos = 254;
1806					}
1807				}
1808
1809				if ( e && e.type === 'resize' ) {
1810					inactivePos = headerPos + 254;
1811				}
1812
1813				flyoutMenu.css( flyoutPos, '-' + inactivePos + 'px' );
1814			}
1815
1816			if ( e && menuModule.is('.fl-menu-responsive-flyout-overlay') && $.infinitescroll ) {
1817				e.stopImmediatePropagation();
1818			}
1819
1820			if( menuOpacity.length ) {
1821				if ( header.hasClass( 'fl-theme-builder-header-sticky' ) ) {
1822					if ( '0px' === menuOpacity.css( 'left' ) ) {
1823						menuOpacity.css( 'left', '-' + headerPos + 'px' );
1824					}
1825				}
1826				else {
1827					menuOpacity.css( 'left', '' );
1828				}
1829			}
1830		},
1831
1832		/**
1833		 * Adjust sticky header width if BB Theme Boxed Layout is used.
1834		 *
1835		 * @since 1.4
1836		 * @access private
1837		 * @method _adjustStickyHeaderWidth
1838		 */
1839		_adjustStickyHeaderWidth: function () {
1840			if ( $('body').hasClass( 'fl-fixed-width' ) ) {
1841				var parentWidth = this.header.parent().width();
1842
1843				// Better if this is set in the stylesheet file.
1844				if ( this.win.width() >= 992 ) {
1845					this.header.css({
1846						'margin': '0 auto',
1847						'max-width': parentWidth,
1848					});
1849				}
1850				else {
1851					this.header.css({
1852						'margin': '',
1853						'max-width': '',
1854					});
1855				}
1856			}
1857		},
1858
1859		/**
1860		 * Adjust Sticky Header Height
1861		 *
1862		 * @since 1.4
1863		 * @access private
1864		 * @method _adjustHeaderHeight
1865		 */
1866		_adjustHeaderHeight: function () {
1867			var beforeHeader = this.header.prevAll('.fl-builder-content'),
1868				beforeHeaderHeight = 0,
1869				beforeHeaderFix = 0,
1870				headerHeight = Math.floor( this.header.outerHeight() ),
1871				bodyTopPadding = parseInt( $( 'body' ).css( 'padding-top' ) ),
1872				wpAdminBarHeight = 0,
1873				totalHeaderHeight = 0;
1874
1875			if ( isNaN( bodyTopPadding ) ) {
1876				bodyTopPadding = 0;
1877			}
1878
1879			if ( beforeHeader.length ) {
1880				$.each( beforeHeader, function() {
1881					beforeHeaderHeight += Math.floor( $(this).outerHeight() );
1882				});
1883				// Subtract this value from the header parent's top padding.
1884				beforeHeaderFix = 2;
1885			}
1886
1887			if ( this.hasAdminBar && this.win.width() <= 600 ) {
1888				wpAdminBarHeight = Math.floor( $('#wpadminbar').outerHeight() );
1889			}
1890
1891			totalHeaderHeight = Math.floor( beforeHeaderHeight + headerHeight);
1892
1893			if ( headerHeight > 0 ) {
1894				var headerParent = this.header.parent(),
1895					headerParentTopPadding = 0;
1896
1897				// If the header's parent container is the BODY tag ignore its top padding.
1898				if ( $( headerParent ).is('body') ) {
1899					headerParentTopPadding = Math.floor( headerHeight - wpAdminBarHeight );
1900				} else {
1901					headerParentTopPadding = Math.floor( headerHeight - bodyTopPadding - wpAdminBarHeight );
1902				}
1903
1904				$( headerParent ).css( 'padding-top',  ( headerParentTopPadding - beforeHeaderFix ) + 'px' );
1905
1906				this.header.css({
1907					'-webkit-transform': 'translate(0px, -' + totalHeaderHeight + 'px)',
1908					'-ms-transform': 'translate(0px, -' + totalHeaderHeight + 'px)',
1909					'transform': 'translate(0px, -' + totalHeaderHeight + 'px)'
1910				});
1911
1912			}
1913
1914		},
1915
1916		/**
1917		 * Initializes shrink logic for a header.
1918		 *
1919		 * @since 1.0
1920		 * @access private
1921		 * @method _initShrink
1922		 */
1923		_initShrink: function( e )
1924		{
1925			if ( this.win.width() >= this.breakpointWidth ) {
1926				this.win.on( 'scroll.fl-theme-builder-header-shrink', $.proxy( this._doShrink, this ) );
1927				this._setImageMaxHeight();
1928
1929				if ( this.win.scrollTop() > 0 ){
1930					this._doShrink();
1931				}
1932
1933			} else {
1934				this.header.parent().css( 'padding-top', '0' );
1935				this.win.off( 'scroll.fl-theme-builder-header-shrink' );
1936				this._removeShrink();
1937				this._removeImageMaxHeight();
1938			}
1939		},
1940
1941		/**
1942		 * Shrinks the header when the page is scrolled.
1943		 *
1944		 * @since 1.0
1945		 * @access private
1946		 * @method _doShrink
1947		 */
1948		_doShrink: function( e )
1949		{
1950			var winTop 			  = this.win.scrollTop(),
1951				headerTop 		  = this.header.data('original-top'),
1952				headerHeight 	  = this.header.data('original-height'),
1953				shrinkImageHeight = this.header.data('shrink-image-height'),
1954				windowSize   	  = this.win.width(),
1955				makeSticky   	  = this._makeWindowSticky( windowSize ),
1956				hasClass     	  = this.header.hasClass( 'fl-theme-builder-header-shrink' );
1957
1958
1959			if ( this.hasAdminBar ) {
1960				winTop += 32;
1961			}
1962
1963			if ( makeSticky && ( winTop > headerTop + headerHeight ) ) {
1964				if ( ! hasClass ) {
1965
1966					this.header.addClass( 'fl-theme-builder-header-shrink' );
1967
1968					// Shrink images but don't include lightbox and menu images.
1969					this.header.find('img').each( function( i ) {
1970						var image           = $( this ),
1971							maxMegaMenu     = image.closest( '.max-mega-menu' ).length,
1972							imageInLightbox = image.closest( '.fl-button-lightbox-content' ).length,
1973							imageInNavMenu  = image.closest( 'li.menu-item' ).length;
1974
1975						if ( ! ( imageInLightbox || imageInNavMenu || maxMegaMenu ) ) {
1976							image.css( 'max-height', shrinkImageHeight );
1977						}
1978
1979					});
1980
1981					this.header.find( '.fl-row-content-wrap' ).each( function() {
1982
1983						var row = $( this );
1984
1985						if ( parseInt( row.css( 'padding-bottom' ) ) > 5 ) {
1986							row.addClass( 'fl-theme-builder-header-shrink-row-bottom' );
1987						}
1988
1989						if ( parseInt( row.css( 'padding-top' ) ) > 5 ) {
1990							row.addClass( 'fl-theme-builder-header-shrink-row-top' );
1991						}
1992					} );
1993
1994					this.header.find( '.fl-module' ).each( function() {
1995
1996						var module = $( this ).find( '.fl-module-content' ).length ? $( this ).find( '.fl-module-content' ) : $( this );
1997
1998						if ( parseInt( module.css( 'margin-bottom' ) ) > 5 ) {
1999							module.addClass( 'fl-theme-builder-header-shrink-module-bottom' );
2000						}
2001
2002						if ( parseInt( module.css( 'margin-top' ) ) > 5 ) {
2003							module.addClass( 'fl-theme-builder-header-shrink-module-top' );
2004						}
2005					} );
2006				}
2007			} else if (hasClass) {
2008				this.header.find( 'img' ).css( 'max-height', '' );
2009				this._removeShrink();
2010			}
2011
2012			// Fixes Shrink header issue with BB Theme when window is scrolled then resized and back.
2013			if ( 'undefined' === typeof( e ) && $('body').hasClass( 'fl-fixed-width' ) ) {
2014				if ( ! this.overlay ) {
2015					this._adjustHeaderHeight();
2016				}
2017			}
2018
2019		},
2020
2021		/**
2022		 * Removes the header shrink effect.
2023		 *
2024		 * @since 1.0
2025		 * @access private
2026		 * @method _removeShrink
2027		 */
2028		_removeShrink: function()
2029		{
2030			var rows    = this.header.find( '.fl-row-content-wrap' ),
2031				modules = this.header.find('.fl-module, .fl-module-content');
2032
2033			rows.removeClass( 'fl-theme-builder-header-shrink-row-bottom' );
2034			rows.removeClass( 'fl-theme-builder-header-shrink-row-top' );
2035			modules.removeClass( 'fl-theme-builder-header-shrink-module-bottom' );
2036			modules.removeClass( 'fl-theme-builder-header-shrink-module-top' );
2037			this.header.removeClass( 'fl-theme-builder-header-shrink' );
2038		},
2039
2040		/**
2041		 * Adds max height to images in modules for smooth scrolling.
2042		 *
2043		 * @since 1.1.1
2044		 * @access private
2045		 * @method _setImageMaxHeight
2046		 */
2047		_setImageMaxHeight: function()
2048		{
2049			var head = $( 'head' ),
2050				stylesId = 'fl-header-styles-' + this.header.data( 'post-id' ),
2051				styles = '',
2052				images = this.header.find( '.fl-module img' );
2053
2054			if ( $( '#' + stylesId ).length ) {
2055				return;
2056			}
2057
2058			images.each( function( i ) {
2059				var image           = $( this ),
2060					height          = image.height(),
2061					node            = image.closest( '.fl-module' ).data( 'node' ),
2062					className       = 'fl-node-' + node + '-img-' + i,
2063					maxMegaMenu     = image.closest( '.max-mega-menu' ).length,
2064					imageInLightbox = image.closest( '.fl-button-lightbox-content' ).length,
2065					imageInNavMenu  = image.closest( 'li.menu-item' ).length;
2066
2067				if ( ! ( imageInLightbox || imageInNavMenu || maxMegaMenu  ) ) {
2068					image.addClass( className );
2069					styles += '.' + className + ' { max-height: ' + ( height ? height : image[0].height )  + 'px }';
2070				}
2071
2072			} );
2073
2074			if ( '' !== styles ) {
2075				head.append( '<style id="' + stylesId + '">' + styles + '</style>' );
2076			}
2077		},
2078
2079		/**
2080		 * Removes max height on images in modules for smooth scrolling.
2081		 *
2082		 * @since 1.1.1
2083		 * @access private
2084		 * @method _removeImageMaxHeight
2085		 */
2086		_removeImageMaxHeight: function()
2087		{
2088			$( '#fl-header-styles-' + this.header.data( 'post-id' ) ).remove();
2089		},
2090	};
2091
2092	$( function() { FLThemeBuilderHeaderLayout.init(); } );
2093
2094})(jQuery);
2095
2096(function($) {
2097
2098    if($(window).width() <= 768 && $(window).width() >= 481 ) {
2099        $('.fl-node-5be0ca0d57063 .pp-heading-separator, .fl-node-5be0ca0d57063 .pp-heading').removeClass('pp-center');
2100        $('.fl-node-5be0ca0d57063 .pp-heading-separator, .fl-node-5be0ca0d57063 .pp-heading').addClass('pp-tablet-center');
2101    }
2102
2103    if( $(window).width() <= 480 ) {
2104        $('.fl-node-5be0ca0d57063 .pp-heading-separator, .fl-node-5be0ca0d57063 .pp-heading').removeClass('pp-center');
2105        $('.fl-node-5be0ca0d57063 .pp-heading-separator, .fl-node-5be0ca0d57063 .pp-heading').addClass('pp-mobile-center');
2106    }
2107
2108})(jQuery);
2109(function($) {
2110
2111    if($(window).width() <= 768 && $(window).width() >= 481 ) {
2112        $('.fl-node-3nfs6l98p5jo .pp-heading-separator, .fl-node-3nfs6l98p5jo .pp-heading').removeClass('pp-center');
2113        $('.fl-node-3nfs6l98p5jo .pp-heading-separator, .fl-node-3nfs6l98p5jo .pp-heading').addClass('pp-tablet-');
2114    }
2115
2116    if( $(window).width() <= 480 ) {
2117        $('.fl-node-3nfs6l98p5jo .pp-heading-separator, .fl-node-3nfs6l98p5jo .pp-heading').removeClass('pp-center');
2118        $('.fl-node-3nfs6l98p5jo .pp-heading-separator, .fl-node-3nfs6l98p5jo .pp-heading').addClass('pp-mobile-');
2119    }
2120
2121})(jQuery);
2122(function($){
2123	})(jQuery);
2124(function($){
2125	})(jQuery);
2126
2127;/**
2128 * This file should contain frontend logic for 
2129 * all module instances.
2130 */
2131/* Start Layout Custom JS */
2132jQuery(document).ready(function($){
2133    var element_position = $('#inner-banner-text').offset().top;
2134    var screen_height = $(window).height();
2135    var activation_offset = 0.5;//determines how far up the the page the element needs to be before triggering the function
2136    var activation_point = element_position - (screen_height * activation_offset);
2137    var max_scroll_height = $('body').height() - screen_height - 5;//-5 for a little bit of buffer
2138    
2139    //Does something when user scrolls to it OR
2140    //Does it when user has reached the bottom of the page and hasn't triggered the function yet
2141    $(window).on('scroll', function() {
2142        var y_scroll_pos = window.pageYOffset;
2143    
2144        var element_in_view = y_scroll_pos > activation_point;
2145        var has_reached_bottom_of_page = max_scroll_height <= y_scroll_pos && !element_in_view;
2146    
2147        if(element_in_view || has_reached_bottom_of_page) {
2148            $("header").addClass("fl-theme-builder-header-scrolled");
2149        }
2150        if(jQuery(window).scrollTop() == 0) {
2151           $("header").removeClass("fl-theme-builder-header-scrolled");
2152       }
2153    });
2154});
2155/* End Layout Custom JS */
2156
2157
2158
2159var pp_menu_ikswe84c16zd;
2160(function($) {
2161
2162    pp_menu_ikswe84c16zd = new PPAdvancedMenu({
2163    	id: 'ikswe84c16zd',
2164    	type: 'vertical',
2165		mobile: 'expanded',
2166		menuPosition: 'below',
2167		breakpoints: {
2168			large: 1200,
2169			medium: 992,
2170			small: 768,
2171			custom: 768		},
2172		mobileBreakpoint: 'mobile',
2173		mediaBreakpoint: '768',
2174		mobileMenuType: 'default',
2175		offCanvasDirection: 'left',
2176		fullScreenAnimation: '',
2177		isBuilderActive: false    });
2178
2179})(jQuery);
2180(function($) {
2181
2182    if($(window).width() <= 768 && $(window).width() >= 481 ) {
2183        $('.fl-node-5hf13raen7bs .pp-heading-separator, .fl-node-5hf13raen7bs .pp-heading').removeClass('pp-left');
2184        $('.fl-node-5hf13raen7bs .pp-heading-separator, .fl-node-5hf13raen7bs .pp-heading').addClass('pp-tablet-center');
2185    }
2186
2187    if( $(window).width() <= 480 ) {
2188        $('.fl-node-5hf13raen7bs .pp-heading-separator, .fl-node-5hf13raen7bs .pp-heading').removeClass('pp-left');
2189        $('.fl-node-5hf13raen7bs .pp-heading-separator, .fl-node-5hf13raen7bs .pp-heading').addClass('pp-mobile-center');
2190    }
2191
2192})(jQuery);
2193
2194;(function($) {
2195	PPGallery = function(settings)
2196	{
2197		this.settings       	= settings;
2198		this.id					= settings.id;
2199		this.nodeClass      	= '.fl-node-' + settings.id;
2200		this.wrapperClass   	= this.nodeClass + ' .pp-photo-gallery';
2201		this.itemClass      	= this.wrapperClass + ' .pp-photo-gallery-item';
2202		this.cachedItems		= false;
2203		this.lightboxAnimation 	= settings.lightboxAnimation,
2204		this.transitionEffect 	= settings.transitionEffect,
2205		this.photosIds 			= settings.settings.gallery_photos,
2206		this.cachedIds			= [];
2207		this.isBuilderActive 	= settings.isBuilderActive;
2208
2209		// Check if the module instance is in loop.
2210		if ( $( this.nodeClass ).length > 1 ) {
2211			var count = 1;
2212			$( this.nodeClass ).each( function() {
2213				$( this ).attr( 'data-pp-gallery-id', count );
2214				count++;
2215			} );
2216		}
2217
2218		if ( this._hasItem() ) {
2219			this._initLayout();
2220		}
2221	};
2222
2223	PPGallery.prototype = {
2224
2225		settings        : {},
2226		nodeClass       : '',
2227		wrapperClass    : '',
2228		itemClass       : '',
2229		gallery         : null,
2230		cachedItems		: false,
2231		cachedIds		: [],
2232		isBuilderActive : false,
2233
2234		_hasItem: function()
2235		{
2236			return $(this.itemClass).length > 0;
2237		},
2238
2239		_initLayout: function()
2240		{
2241			if ( this.settings.layout === 'masonry' ) {
2242				this._masonryLayout();
2243			}
2244
2245			if ( this.settings.layout === 'justified' ) {
2246				this._justifiedLayout();
2247			}
2248
2249			if ( this.settings.lightbox ) {
2250				this._initLightbox();
2251			}
2252
2253			if ( this.settings.pagination && 'none' !== this.settings.pagination ) {
2254				this._initPagination();
2255			}
2256
2257			$(this.itemClass).css('visibility', 'visible');
2258		},
2259
2260		_masonryLayout: function()
2261		{
2262			var wrap = $(this.wrapperClass);
2263
2264			var isotopeData = {
2265				itemSelector: '.pp-gallery-masonry-item',
2266				percentPosition: true,
2267				transitionDuration: '0.6s',
2268				masonry: {
2269					columnWidth: '.pp-gallery-masonry-item',
2270					gutter: '.pp-photo-space'
2271				},
2272				originLeft: $('body').hasClass( 'rtl' ) ? false : true
2273			};
2274
2275			wrap.imagesLoaded( function() {
2276				wrap.isotope(isotopeData);
2277				$( this.wrapperClass ).css( "opacity", 1 );
2278			}.bind( this ) );
2279		},
2280
2281		_justifiedLayout: function()
2282		{
2283			var wrap = $(this.wrapperClass);
2284			var opts = {
2285				margins: this.settings.spacing,
2286				rowHeight: this.settings.rowHeight,
2287				maxRowHeight: this.settings.maxRowHeight,
2288				lastRow: this.settings.lastRow
2289			};
2290
2291			wrap.imagesLoaded( function () {
2292				$(this.wrapperClass).justifiedGallery(opts).on('jg.complete jg.resize', function(e) {
2293					var controller = $(this).data('jg.controller');
2294					if ( controller.rows === 0 && controller.settings.lastRow === 'hide' ){
2295						opts.lastRow = 'justify';
2296
2297						$(this).justifiedGallery(opts);
2298						// Workaround for Beaver Builder node animation that does not work when
2299						// the gallery has justified layout.
2300						$(window).trigger('resize');
2301					} 
2302				});
2303				$( this.wrapperClass ).css( "opacity", 1 );
2304			}.bind( this ) );
2305		},
2306
2307		_initLightbox: function()
2308		{
2309			if ( ! this.settings.lightbox ) {
2310				return;
2311			}
2312
2313			var id = this.id;
2314			var axis = 'default' === this.settings.lightboxThumbsPosition ? 'y' : 'x';
2315			var options = {
2316				modal			: false,
2317				baseClass		: 'fancybox-' + id + ' pp-gallery-fancybox pp-gallery-fancybox-axis-' + axis,
2318				buttons			: this.settings.lightboxToolbarButtons.split(','),
2319				wheel			: false,
2320				afterLoad		: function(current, previous) {
2321					$('.fancybox-' + id).find('.fancybox-bg').addClass('fancybox-' + id + '-overlay');
2322
2323					$(document).trigger( 'pp_gallery_lightbox_after_load', [$('.fancybox-' + id), id] );
2324				},
2325				animationEffect: this.lightboxAnimation,
2326				transitionEffect: this.transitionEffect,
2327				thumbs: {
2328					autoStart: this.settings.lightboxThumbs, // Display thumbnails on opening
2329					hideOnClose: true, // Hide thumbnail grid when closing animation starts
2330					parentEl: ".fancybox-container", // Container is injected into this element
2331					axis: axis // Vertical (y) or horizontal (x) scrolling
2332				},
2333				mobile: {
2334					clickOutside : 'close',
2335					clickSlide: function (current, event) {
2336						return "close";
2337					}
2338				},
2339			};
2340
2341			if ( this.settings.lightboxCaption ) {
2342				var source = this.settings.lightboxCaptionSource;
2343                options.caption = function(instance, item) {
2344                    var caption = 'title' === source ? $(this).attr('title') : $(this).data('caption') || '';
2345                    var desc = $(this).data('description') || '';
2346                    if (desc !== '') {
2347                        caption += '<div class="pp-fancybox-desc">' + desc + '</div>';
2348                    }
2349                    return caption;
2350                };
2351			} else {
2352				options.caption = '';
2353			}
2354
2355			$(this.nodeClass).trigger( 'pp_gallery_lightbox_before_load', [options] );
2356
2357			$(this.nodeClass).each( function() {
2358				$(this).find('a[data-fancybox="images"]').fancybox( options );
2359			} );
2360		},
2361
2362		_initPagination: function()
2363		{
2364			var self = this;
2365			
2366			$(this.itemClass).each(function() {
2367				self.cachedIds.push( $(this).data('item-id') );
2368			});
2369
2370			if ( 'load_more' === this.settings.pagination ) {
2371				this._initLoadMore();
2372			}
2373			if ( 'scroll' === this.settings.pagination && ! this.isBuilderActive ) {
2374				this._initScroll();
2375			}
2376		},
2377
2378		_initLoadMore: function()
2379		{
2380			var self = this;
2381
2382			$(this.nodeClass).find( '.pp-gallery-load-more' ).off('click').on('click', function(e) {
2383				e.preventDefault();
2384
2385				var $this = $(this);
2386				$this.addClass('disabled loading');
2387
2388				if ( self.cachedItems.length === self.photosIds.length ) {
2389					self._renderItems();
2390				} else {
2391					self._getAjaxPhotos();
2392				}
2393			});
2394		},
2395
2396		_initScroll: function() {
2397			var self 			= this,
2398				galleryOffset 	= $(this.wrapperClass).offset(),
2399				galleryHeight 	= $(this.wrapperClass).height(),
2400				winHeight		= $(window).height(),
2401				loaded			= false;
2402
2403			$(window).on('scroll', function() {
2404				if ( loaded ) {
2405					return;
2406				}
2407				var scrollPos = $(window).scrollTop();
2408
2409				if ( scrollPos >= galleryOffset.top - ( winHeight - galleryHeight ) ) {
2410					if ( $(self.nodeClass).find('.pp-gallery-pagination.loaded').length > 0 ) {
2411						loaded = true;
2412						$(self.nodeClass).find('.pp-gallery-loader').hide();
2413					} else {
2414						loaded = true;
2415						$(self.wrapperClass).imagesLoaded(function() {
2416							setTimeout(function() {
2417								//$(self.nodeClass).find('.pp-gallery-loader').show();
2418								if ( self.cachedItems.length === self.photosIds.length ) {
2419									self._renderItems();
2420									galleryHeight = $(self.wrapperClass).height();
2421								} else {
2422									self._getAjaxPhotos(function() {
2423										galleryHeight = $(self.wrapperClass).height();
2424									});
2425								}
2426							}, 600);
2427						});
2428					}
2429				}
2430			});
2431
2432			$(this.wrapperClass).on('gallery.rendered', function() {
2433				if ( $(self.nodeClass).find('.pp-gallery-pagination.loaded').length === 0 ) {
2434					loaded = false;
2435					galleryHeight = $(self.wrapperClass).height();
2436				}
2437			});
2438		},
2439
2440		_getAjaxPhotos: function(callback) {
2441			var self = this;
2442
2443			var data = {
2444				pp_action: 'pp_gallery_get_photos',
2445				node_id: self.settings.id,
2446				images_per_page: self.settings.perPage,
2447				cached_ids: self.cachedIds,
2448				settings: self.settings.settings
2449			};
2450
2451			if ( self.settings.templateId ) {
2452				data['template_id'] = self.settings.templateId;
2453			}
2454			if ( self.settings.templateNodeId ) {
2455				data['template_node_id'] = self.settings.template_node_id;
2456			}
2457
2458			$(this.nodeClass).find('.pp-gallery-loader').show();
2459
2460			$.ajax({
2461				type: 'post',
2462				url: window.location.href.split( '#' ).shift(),
2463				data: data,
2464				async: true,
2465				success: function(response) {
2466					response = JSON.parse(response);
2467					
2468					if ( ! response.error ) {
2469						self.cachedItems = response.data;
2470						self._renderItems();
2471						if ( 'function' === typeof callback ) {
2472							callback();
2473						}
2474						$(self.nodeClass).find('.pp-gallery-loader').hide();
2475					}
2476				}
2477			});
2478		},
2479
2480		_renderItems: function()
2481		{
2482			$(this.nodeClass).find( '.pp-gallery-load-more' ).removeClass('disabled loading');
2483			$(this.nodeClass).find('.pp-gallery-loader').show();
2484
2485			var self = this,
2486				wrap = $(self.wrapperClass);
2487
2488			if ( self.cachedItems ) {
2489				var count = 1;
2490				var items = [];
2491
2492				$(self.cachedItems).each(function() {
2493					var id = $(this).data('item-id');
2494
2495					if ( -1 === $.inArray( id, self.cachedIds ) ) {
2496						if ( count <= self.settings.perPage ) {
2497							self.cachedIds.push( id );
2498							items.push( this );
2499							count++;
2500						}
2501					}
2502				});
2503
2504				if ( items.length > 0 ) {
2505					items = $(items).hide();
2506					
2507					// Grid layout.
2508					if ( self.settings.layout === 'grid' ) {
2509						wrap.append( items.fadeIn() );
2510					}
2511					
2512					// Justified layout.
2513					if ( self.settings.layout === 'justified' ) {
2514						wrap.append( items.fadeIn() );
2515						self._justifiedLayout();
2516					}
2517
2518					// Masonry layout.
2519					if ( self.settings.layout === 'masonry' ) {
2520						items = items.show();
2521						wrap.isotope('insert', items);
2522						wrap.find('.pp-photo-space').remove();
2523						wrap.append('<div class="pp-photo-space"></div>');
2524						wrap.imagesLoaded( function () {
2525							setTimeout(function () {
2526								wrap.isotope('layout');
2527							}, 500);
2528						}.bind( this ) );
2529					}
2530
2531					this._initLightbox();
2532
2533					wrap.trigger('gallery.rendered');
2534				}
2535
2536				if ( self.cachedIds.length === self.photosIds.length ) {
2537					$(self.nodeClass).find('.pp-gallery-pagination').addClass('loaded').hide();
2538					$(self.nodeClass).find('.pp-gallery-loader').hide();
2539				}
2540			}
2541		}
2542	};
2543
2544})(jQuery);
2545(function($) {
2546	
2547	$('.fl-node-e3xm0c7twk4z .pp-photo-gallery-item').find('.pp-photo-gallery-caption-below').parent().addClass('has-caption');
2548
2549	var options = {
2550		id: 'e3xm0c7twk4z',
2551		layout: 'grid',
2552		gutter: 5,
2553		spacing: 5,
2554		columns: 5,
2555				rowHeight: 120,
2556						lastRow: 'nojustify',
2557		lightbox: false,
2558		lightboxToolbarButtons:	'zoom,slideShow,fullScreen,close',
2559		lightboxThumbs: false,
2560		lightboxThumbsPosition:	'default',
2561		lightboxCaption: true,
2562		lightboxCaptionSource: 'title',
2563		lightboxAnimation: 'zoom',
2564		transitionEffect: 'fade',
2565				pagination: 'none',
2566		perPage: 6,
2567						settings: {"gallery_layout":"grid","gallery_photos":[14176,12434],"photo_size":"full","photo_order":"normal","align_items":"no","show_captions":"no","click_action":"none","custom_link_target":"_self","custom_link_nofollow":"yes","hover_effects":"none","image_animation_speed":"300","overlay_effects":"none","overlay_animation_speed":"300","icon":"0","overlay_icon":"","photo_grid_count":"5","photo_grid_count_large":"","photo_grid_count_medium":"","photo_grid_count_responsive":"","photo_spacing":"5","justified_spacing":"5","row_height":"120","max_row_height":"0","last_row":"nojustify","lightbox_animation":"zoom","transition_effect":"fade","lightbox_image_size":"full","lightbox_caption":"yes","lightbox_caption_source":"title","lightbox_description":"yes","toolbar_buttons":["zoom","slideShow","fullScreen","close"],"show_lightbox_thumb":"no","thumbs_position":"default","photo_border_group":{"style":"none","color":"","width":{"top":"1","right":"1","bottom":"1","left":"1"}
2567,"radius":{"top_left":"0","top_right":"0","bottom_left":"0","bottom_right":"0"},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"photo_border_group_large":{"style":"","color":"","width":{"top":"","right":"","bottom":"","left":""},"radius":{"top_left":"","top_right":"","bottom_left":"","bottom_right":""},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"photo_border_group_medium":{"style":"","color":"","width":{"top":"","right":"","bottom":"","left":""},"radius":{"top_left":"","top_right":"","bottom_left":"","bottom_right":""},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"photo_border_group_responsive":{"style":"","color":"","width":{"top":"","right":"","bottom":"","left":""},"radius":{"top_left":"","top_right":"","bottom_left":"","bottom_right":""},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"photo_padding":"","photo_padding_large":"","photo_padding_medium":"","photo_padding_responsive":"","show_image_shadow_hover":"no","image_shadow_hover":{"vertical":"0","horizontal":"2","blur":"15","spread":"0"},"image_shadow_color_hover":"rgba(0, 0, 0, 0.5)","image_shadow_hover_speed":"300","overlay_type":"solid","overlay_color":"","overlay_primary_color":"","overlay_secondary_color":"","overlay_color_opacity":"70","overlay_border_width":"","overlay_border_color":"","overlay_spacing":"","overlay_icon_size":"30","overlay_icon_bg_color":"","overlay_icon_color":"","overlay_icon_radius":"","overlay_icon_horizotal_padding":"","overlay_icon_vertical_padding":"","lightbox_overlay_color":"rgba(0,0,0,0.5)","caption_bg_color":"","caption_alignment":"center","caption_typography":{"font_family":"Default","font_weight":"default","font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"caption_typography_large":{"font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"caption_typography_medium":{"font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"caption_typography_responsive":{"font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"caption_color":"","pagination":"none","images_per_page":"6","load_more_text":"Load More","load_more_bg_color":"eee","load_more_bg_hover_color":"","load_more_text_color":"","load_more_text_hover_color":"","load_more_typography":{"font_family":"Default","font_weight":"default","font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"load_more_typography_large":{"font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"load_more_typography_medium":{"font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"load_more_typography_responsive":{"font_size":{"length":"","unit":"px"},"line_height":{"length":"","unit":""},"text_align":"","letter_spacing":{"length":"","unit":"px"},"text_transform":"","text_decoration":"","font_style":"","font_variant":"","text_shadow":{"color":"","horizontal":"","vertical":"","blur":""}},"load_more_border":{"style":"none","color":"","width":{"top":"","right":"","bottom":"","left":""}
2567,"radius":{"top_left":"","top_right":"","bottom_left":"","bottom_right":""},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"load_more_border_large":{"style":"","color":"","width":{"top":"","right":"","bottom":"","left":""},"radius":{"top_left":"","top_right":"","bottom_left":"","bottom_right":""},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"load_more_border_medium":{"style":"","color":"","width":{"top":"","right":"","bottom":"","left":""},"radius":{"top_left":"","top_right":"","bottom_left":"","bottom_right":""},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"load_more_border_responsive":{"style":"","color":"","width":{"top":"","right":"","bottom":"","left":""},"radius":{"top_left":"","top_right":"","bottom_left":"","bottom_right":""},"shadow":{"color":"","horizontal":"","vertical":"","blur":"","spread":""}},"load_more_border_hover_color":"","load_more_margin_top":"","load_more_margin_top_large":"","load_more_margin_top_medium":"","load_more_margin_top_responsive":"","load_more_width":"","load_more_width_unit":"px","load_more_width_large":"","load_more_width_large_unit":"px","load_more_width_medium":"","load_more_width_medium_unit":"px","load_more_width_responsive":"","load_more_width_responsive_unit":"px","load_more_alignment":"left","load_more_alignment_large":"","load_more_alignment_medium":"","load_more_alignment_responsive":"","responsive_display":"desktop,large,medium,mobile","visibility_display":"","visibility_user_capability":"","visibility_logic":"[]","animation":{"style":"","delay":"0.0","duration":"1"},"container_element":"div","id":"footer-logo-row","class":"","node_label":"","custom_attributes":[{"key":"","value":"","target":"wrapper","selector":"","0":""}],"export":"","import":"","caption_padding_top":"0","caption_padding_top_large":"","caption_padding_top_medium":"","caption_padding_top_responsive":"","caption_padding_right":"0","caption_padding_right_large":"","caption_padding_right_medium":"","caption_padding_right_responsive":"","caption_padding_bottom":"0","caption_padding_bottom_large":"","caption_padding_bottom_medium":"","caption_padding_bottom_responsive":"","caption_padding_left":"0","caption_padding_left_large":"","caption_padding_left_medium":"","caption_padding_left_responsive":"","load_more_padding_top":"10","load_more_padding_top_large":"","load_more_padding_top_medium":"","load_more_padding_top_responsive":"","load_more_padding_right":"10","load_more_padding_right_large":"","load_more_padding_right_medium":"","load_more_padding_right_responsive":"","load_more_padding_bottom":"10","load_more_padding_bottom_large":"","load_more_padding_bottom_medium":"","load_more_padding_bottom_responsive":"","load_more_padding_left":"10","load_more_padding_left_large":"","load_more_padding_left_medium":"","load_more_padding_left_responsive":"","margin_top":"5","margin_unit":"px","margin_top_large":"","margin_large_unit":"px","margin_top_medium":"","margin_medium_unit":"px","margin_top_responsive":"","margin_responsive_unit":"px","margin_right":"","margin_right_large":"","margin_right_medium":"","margin_right_responsive":"","margin_bottom":"5","margin_bottom_large":"","margin_bottom_medium":"","margin_bottom_responsive":"","margin_left":"","margin_left_large":"","margin_left_medium":"","margin_left_responsive":"","type":"pp-gallery","bb_css_code":"","bb_js_code":"","show_image_shadow":"no","image_shadow":{"vertical":"0","horizontal":"2","blur":"8","spread":"0"},"image_shadow_color":"000000","image_shadow_opacity":"30","caption_font_size_toggle":"default","caption_custom_font_size":"","caption_custom_font_size_medium":"","caption_custom_font_size_responsive":"","photo_data":{"14176":{"id":14176,"alt":"","caption":"","description":"","title":"30-Year-Anniv","sizes":{"height":54,"width":141},"src":"https:\/\/jeffmowatt.com\/wp-content\/uploads\/2018\/10\/30-Year-Anniv.png","link":"https:\/\/jeffmowatt.com\/wp-content\/uploads\/2018\/10\/30-Year-Anniv.png","srcset":false},"12434":{"id":12434,"alt":"","caption":"","description":"","title":"jeff-mowatt-pure_colored","sizes":{"height":100,"width":479},"src":"https:\/\/jeffmowatt.com\/wp-content\/uploads\/2018\/10\/jeff-mowatt-pure_colored.png","link":"https:\/\/jeffmowatt.com\/wp-content\/uploads\/2018\/10\/jeff-mowatt-pure_colored.png","srcset":"https:\/\/jeffmowatt.com\/wp-content\/uploads\/2018\/10\/jeff-mowatt-pure_colored.png 479w, https:\/\/jeffmowatt.com\/wp-content\/uploads\/2018\/10\/jeff-mowatt-pure_colored-300x63.png 300w, https:\/\/jeffmowatt.com\/wp-content\/uploads\/2018\/10\/jeff-mowatt-pure_colored-150x31.png 150w"}},"connections":{"gallery_photos":"","image_shadow_color_hover":"","overlay_color":"","overlay_primary_color":"","overlay_secondary_color":"","overlay_border_color":"","overlay_icon_bg_color":"","overlay_icon_color":"","lightbox_overlay_color":"","caption_bg_color":"","caption_color":""},"responsive_display_filtered":true},
2568		isBuilderActive: false	};
2569
2570	window['pp_gallery_' + options.id] = new PPGallery(options);
2571
2572	// expandable row fix.
2573	var state = 0;
2574	$(document).on('pp_expandable_row_toggle', function(e, selector) {
2575		if ( selector.is('.pp-er-open') && state === 0 && selector.parent().find( '.fl-node-e3xm0c7twk4z' ).length > 0 ) {
2576			new PPGallery(options);
2577			state = 1;
2578		}
2579	});
2580
2581	// accordion fix
2582	var accordion_state = false;
2583	$(document).on('pp-accordion-toggle-complete', function(e, selector) {
2584		if ( ! accordion_state ) {
2585			new PPGallery(options);
2586			accordion_state = true;
2587		}
2588	});
2589
2590	// tabs fix
2591	$(document).on('pp-tabs-switched', function(e, selector) {
2592		if ( selector.find('.pp-photo-gallery-content').length > 0 ) {
2593			if ( selector.find('.pp-photo-gallery').data('isotope') ) {
2594				selector.find('.pp-photo-gallery').isotope('layout');
2595			} else {
2596				new PPGallery(options);
2597				tabs_state = true;
2598			}
2599		}
2600	});
2601})(jQuery);
2602
2603var pp_menu_azjuc9hpm8o4;
2604(function($) {
2605
2606    pp_menu_azjuc9hpm8o4 = new PPAdvancedMenu({
2607    	id: 'azjuc9hpm8o4',
2608    	type: 'vertical',
2609		mobile: 'expanded',
2610		menuPosition: 'below',
2611		breakpoints: {
2612			large: 1200,
2613			medium: 992,
2614			small: 768,
2615			custom: 768		},
2616		mobileBreakpoint: 'mobile',
2617		mediaBreakpoint: '768',
2618		mobileMenuType: 'default',
2619		offCanvasDirection: 'left',
2620		fullScreenAnimation: '',
2621		isBuilderActive: false    });
2622
2623})(jQuery);
2624
2625/* Start Layout Custom JS */
2626
2627/* End Layout Custom JS */
2628
2629

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.