PageSourceSearch

https://historicjamestowne.org/wp-content/plugins/mega_main_menu/src/js/frontend.js?ver=6.9.9

js historicjamestowne.org collected 2026-09-24 09:04:30 UTC 12,186 bytes, 322 lines download raw bytes

1/* 
2 * Function for Mega Main Menu.
3 */
4(function( $ ){ 
5	jQuery(document).ready(function(){
6
7		/* 
8		 * Unbinded all previous JS actions with menu.
9		 */
10//		jQuery( '#mega_main_menu, #mega_main_menu *' ).unbind();
11
12		/* 
13		 * INIT
14		 */
15		mmm_reversal_z_index();
16		mmm_smooth_scroll_to_anchor();
17		mmm_sticky_menu();
18		mmm_fullwidth_menu();
19		mmm_keep_open();
20		mmm_height_of_tabs_dropdown();
21		mmm_pushing_content();
22		mmm_mobile_double_tap_to_go();
23		mmm_mobile_toggle_menu();
24
25		/* 
26		 * EVENTS
27		 */
28		jQuery(window).on( 'resize orientationchange', function(){
29			mmm_smooth_scroll_to_anchor();
30			mmm_sticky_menu();
31			mmm_fullwidth_menu();
32			mmm_keep_open();
33			mmm_height_of_tabs_dropdown();
34			mmm_pushing_content();
35//			mmm_mobile_toggle_menu();
36//			mmm_mobile_double_tap_to_go();
37		});
38
39
40		/* 
41		 * Reversal z-index.
42		 */
43		function mmm_reversal_z_index () {
44			var z_index = 1000;
45			function_selector = '.mega_main_menu';
46			jQuery( function_selector ).unbind();
47			jQuery( function_selector ).each(function(index,element){
48				z_index = z_index - 10;
49				jQuery( element ).css({
50					'z-index' : z_index
51				});
52			});
53		}
54
55		/* 
56		 * Mobile toggle menu
57		 */
58		function mmm_mobile_toggle_menu () {
59			function_selector = '.mobile_toggle';
60			jQuery( function_selector ).unbind();
61			jQuery( '.mobile_menu_active' ).removeClass( 'mobile_menu_active' );
62			jQuery( function_selector ).on( 'click', function() {
63				if ( jQuery( this ).parent().hasClass( 'mobile_menu_active' ) ) {
64					jQuery( this ).parent().removeClass( 'mobile_menu_active' );
65					jQuery( '#mega_main_menu .keep_open' ).removeClass('keep_open');
66				} else {					
67					jQuery( this ).parent().addClass( 'mobile_menu_active' );
68				}
69			});
70		}
71
72		/* 
73		 * Mobile Double tap to go
74		 */
75		function mmm_mobile_double_tap_to_go () {
76			function_selector = '#mega_main_menu li:has(.mega_dropdown) > .item_link, #mega_main_menu li:has(.post_details) > .processed_image';
77			jQuery( function_selector ).unbind();
78			if( /iphone|ipad|ipod|android|webos|blackberry|iemobile|opera mini/i.test( navigator.userAgent.toLowerCase() ) ) 
79			{
80				var clicked_item = false;
81				jQuery( function_selector ).on( 'click', function( index )
82				{
83					if ( clicked_item != this) {
84						index.preventDefault();
85						if ( jQuery( this ).parent().parent().parent().hasClass('keep_open') ) {
86
87						} else {
88							jQuery( '#mega_main_menu .keep_open' ).removeClass('keep_open');
89						}
90						jQuery( this ).parent().addClass('keep_open');
91						clicked_item = this;
92					}
93				});
94			}
95		}
96
97		/* 
98		 * Sticky menu
99		 */
100		function mmm_sticky_menu () {
101			function_selector = '#mega_main_menu > .menu_holder';
102			jQuery( function_selector ).unbind();
103			jQuery( function_selector ).each(function(index,element){
104				var stickyoffset = [];
105				var menu_inner_width = [];
106				var menu_inner = [];
107				var style_attr = [];
108				menu_inner[ index ] = jQuery( element ).find( '.menu_inner' );
109				stickyoffset[ index ] = jQuery( element ).data( 'stickyoffset' ) * 1;
110
111				if ( jQuery( element ).attr( 'data-sticky' ) == '1' && stickyoffset[ index ] == 0 ) {
112					menu_inner_width[ index ] = menu_inner[ index ].parents( '.mega_main_menu' ).width();
113					menu_inner[ index ].attr( 'style' , 'width:' + menu_inner_width[ index ] + 'px;' );
114					jQuery( element ).addClass( 'sticky_container' );
115				} else {
116					;jQuery(window).on('scroll', function(){
117						if ( jQuery( element ).attr( 'data-sticky' ) == '1' ) {
118							scrollpath = jQuery(window).scrollTop();
119							if ( scrollpath > stickyoffset[ index ] ) {
120								menu_inner_width[ index ] = menu_inner[ index ].parents( '.mega_main_menu' ).width();
121								jQuery( element ).find( '.menu_inner' ).attr( 'style' , 'width:' + menu_inner_width[ index ] + 'px;' );
122								if ( !jQuery( element ).hasClass( 'sticky_container' ) ) {
123									jQuery( element ).addClass( 'sticky_container' );
124								}
125							} else {
126								mmm_fullwidth_menu();
127								jQuery( element ).removeClass( 'sticky_container' );
128								style_attr[ index ] = jQuery( menu_inner[ index ] ).attr( 'style' );
129								if ( typeof style_attr[ index ] !== 'undefined' && style_attr[ index ] !== false ) {
130									menu_inner[ index ].removeAttr( 'style' );
131								}
132							}
133						} else {
134							jQuery( element ).removeClass( 'sticky_container' );
135						}
136					});
137				}
138			});
139		}
140
141		/* 
142		 * Fullwidth menu container
143		 */
144		function mmm_fullwidth_menu () {
145			function_selector = '.mega_main_menu.direction-horizontal.fullwidth-enable';
146			jQuery( function_selector ).unbind();
147			body_width = jQuery( 'body' ).width();
148			jQuery( function_selector ).each( function( index, element ) {
149				offset_left = jQuery( element ).offset().left;
150				if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) {
151					rules_priority = ' !important';
152				} else {
153					rules_priority = '';
154				}
155				jQuery( element ).find( '.mmm_fullwidth_container' ).attr( 'style' , 'width:' + body_width + 'px' + rules_priority + ';left: -' + offset_left + 'px' + rules_priority + ';right:auto' + rules_priority + ';' );
156			});
157		}
158
159		/*
160		 * Height of .tabs_dropdown
161		 */
162		function mmm_height_of_tabs_dropdown () {
163			function_selector = '.mega_main_menu .tabs_dropdown > .mega_dropdown > li';
164			jQuery( function_selector ).unbind();
165			// to open first tab when tabs are visible
166			jQuery( '.mega_main_menu .tabs_dropdown' ).on( 'hover mouseleave mouseenter', function( event ){
167				my_el = jQuery( this ).find( '.mega_dropdown > li' ).first();
168				jQuery( my_el ).parent().css({
169					"min-height": jQuery( my_el ).find( '.mega_dropdown' ).outerHeight( true )
170				});
171				jQuery( my_el ).find( ' > .mega_dropdown' ).css({
172					"min-height": jQuery( my_el ).closest( '.mega_dropdown' ).outerHeight( true )
173				});
174				jQuery( my_el ).addClass( 'keep_open' );
175			});
176			// For Hover
177			jQuery( '.dropdowns_trigger-hover' + function_selector ).on( 'hover mouseleave mouseenter', function( event ){
178				if ( ( event.type == 'mouseenter' ) || ( event.type == 'hover' )  ) {
179					jQuery( this ).parent().css({
180						"min-height": jQuery( this ).find( '.mega_dropdown' ).outerHeight( true )
181					});
182					jQuery( this ).find( ' > .mega_dropdown' ).css({
183						"min-height": jQuery( this ).closest( '.mega_dropdown' ).outerHeight( true )
184					});
185				} else {
186					jQuery( this ).parent().css({
187						"min-height": '0px'
188					});
189					jQuery( this ).find( ' > .mega_dropdown' ).css({
190						"min-height": '0px'
191					});
192					jQuery( this ).removeClass( 'keep_open' );
193				}
194			});
195			// For Click
196			jQuery( '.dropdowns_trigger-click' + function_selector ).on( 'click', function(){
197				jQuery( this ).parent().parent().find( '.mega_dropdown' ).css({
198					"min-height": '0px'
199				});
200				jQuery( this ).parent().css({
201					"min-height": jQuery( this ).find(' > .mega_dropdown').outerHeight( true )
202				});
203			});
204		}
205
206		/* 
207		 * Pushing the content when dropdowns visible
208		 */
209		function mmm_pushing_content () {
210			function_selector = '.mega_main_menu.direction-horizontal.pushing_content-enable';
211			jQuery( function_selector ).unbind();
212			jQuery( function_selector ).each( function( index, element ) {
213				// rules_priority
214				if ( jQuery( element ).hasClass( 'coercive_styles-enable' ) ) {
215					rules_priority = ' !important';
216				} else {
217					rules_priority = '';
218				}
219				menu_holder_height = jQuery( element ).find( '.menu_holder' ).outerHeight( true );
220				click_item = false;
221				if ( jQuery( element ).hasClass( 'dropdowns_trigger-click' ) ) {
222					// dropdowns_trigger
223					dropdowns_trigger = 'click';
224					// calculations
225					if ( jQuery( '.mega_main_menu .nav_logo.mobile_menu_active' ).length ) {
226					} else {
227						jQuery( 'body' ).on( dropdowns_trigger, function ( body_el ) {
228								menu_item_class = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
229								if ( typeof jQuery( body_el.target ).parents( '.menu-item' ).attr( 'class' ) != 'undefined' ) {
230									jQuery( element ).css({ height: menu_holder_height + jQuery( this ).find( '.mega_main_menu_ul > li.keep_open > .mega_dropdown' ).outerHeight( true ) + rules_priority });
231									if ( click_item == menu_item_class ) {
232										jQuery( element ).css({ height: menu_holder_height });
233										click_item = false;
234									} else {
235										click_item = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
236									}
237								} else {
238									jQuery( element ).css({ height: menu_holder_height });
239									click_item = false;
240								}
241						});
242					}
243				} else {
244					// dropdowns_trigger
245					dropdowns_trigger = 'hover mouseleave';
246					// calculations
247					if ( jQuery( '.mega_main_menu .nav_logo.mobile_menu_active' ).length ) {
248					} else {
249						jQuery( element ).find( 'li' ).on( dropdowns_trigger, function ( body_el ) {
250								jQuery( element ).css({ height: menu_holder_height + jQuery( element ).find( '.mega_main_menu_ul > li:hover > .mega_dropdown' ).outerHeight( true ) + rules_priority });
251						});
252					}
253				}
254			});
255		}
256
257		/* 
258		 * Smooth scroll to anchor link
259		 */
260		function mmm_smooth_scroll_to_anchor () {
261			function_selector = '#mega_main_menu a[href*=\\#]:not([href=\\#])';
262			jQuery( function_selector ).unbind();
263			jQuery( function_selector ).click(function() {
264				if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
265					var target = jQuery(this.hash);
266					target = target.length ? target : jQuery('[name=' + this.hash.slice(1) +'], [id=' + this.hash.slice(1) +']');
267					if (target.length) {
268						jQuery( '#mega_main_menu .current-menu-item' ).removeClass( 'current-menu-item' );
269						jQuery( this ).parent().addClass( 'current-menu-item' );
270						jQuery('html,body').animate({
271							scrollTop: target.offset().top - 90
272						}, 600);
273						return false;
274					}
275				}
276			});
277		};
278
279		/* 
280		 * Keep dropdown open if some inner element has a :focus.
281		 */
282		function mmm_keep_open () {
283/*
284			function_selector = '#mega_main_menu .menu-item *';
285			jQuery( function_selector ).unbind();
286			jQuery( function_selector ).on( 'focus', function( index ){
287				jQuery( this ).parents( '.menu-item, .post_item' ).addClass( 'keep_open' );
288			})
289			jQuery( function_selector ).on( 'hover', function( index ){
290				jQuery( this ).parents( '.menu-item, .post_item' ).removeClass( 'keep_open' );
291			})
292			jQuery( function_selector ).on( 'blur', function( index ){
293				jQuery( this ).parents( '.menu-item, .post_item' ).removeClass( 'keep_open' );
294			})
295*/
296			click_item_2 = false;
297			if( true != /iphone|ipad|ipod|android|webos|blackberry|iemobile|opera mini/i.test( navigator.userAgent.toLowerCase() ) ) 
298			{
299			}
300			jQuery( 'body' ).on( 'click', function ( body_el ) {
301				menu_item_class = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
302				if ( ( click_item_2 != menu_item_class ) && ( typeof jQuery( body_el.target ).parents( '#mega_main_menu.dropdowns_trigger-click .menu-item:has(.mega_dropdown) > .item_link' ).attr( 'class' ) != 'undefined' ) ) {
303					body_el.preventDefault();
304					jQuery( '#mega_main_menu .keep_open' ).removeClass( 'keep_open' );
305					jQuery( body_el.target ).parents( '.menu-item' ).addClass( 'keep_open' );
306					click_item_2 = jQuery( body_el.target ).closest( '.menu-item' ).attr( 'class' );
307				} else if ( jQuery( body_el.target ).is( '#mega_main_menu .mega_dropdown form *:focus' ) ) {
308					jQuery( '#mega_main_menu .keep_open' ).removeClass( 'keep_open' );
309					jQuery( body_el.target ).parents( '.menu-item' ).addClass( 'keep_open' );
310				} else if ( ( click_item_2 == menu_item_class ) ) {
311					jQuery( body_el.target ).closest( '.menu-item' ).removeClass( 'keep_open' );
312					click_item_2 = false;
313				} else {
314					jQuery( '.menu-item' ).removeClass( 'keep_open' );
315					click_item_2 = false;
316				}
317			});
318		}
319
320
321	});
322})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.