PageSourceSearch

https://www.whippanong.org/wp-content/plugins/wp-responsive-menu/assets/js/wprmenu.js?ver=3.2.1

js whippanong.org collected 2026-10-02 09:54:43 UTC 9,140 bytes, 321 lines download raw bytes

1( function( window ) {
2
3'use strict';
4
5function classReg( className ) {
6  return new  ("(^|\\s+)" + className + "(\\s+|$)");
7}
8// classList support for class management
9// although to be fair, the api sucks because it won't accept multiple classes at once
10var hasClass, addClass, removeClass;
11
12if ( 'classList' in document.documentElement ) {
13  hasClass = function( elem, c ) {
14    return elem.classList.contains( c );
15  };
16  addClass = function( elem, c ) {
17    elem.classList.add( c );
18  };
19  removeClass = function( elem, c ) {
20    elem.classList.remove( c );
21  };
22}
23else {
24  hasClass = function( elem, c ) {
25    return classReg( c ).test( elem.className );
26  };
27  addClass = function( elem, c ) {
28    if ( !hasClass( elem, c ) ) {
29      elem.className = elem.className + ' ' + c;
30    }
31  };
32  removeClass = function( elem, c ) {
33    elem.className = elem.className.replace( classReg( c ), ' ' );
34  };
35}
36
37function toggleClass( elem, c ) {
38  var fn = hasClass( elem, c ) ? removeClass : addClass;
39  fn( elem, c );
40}
41
42window.classie = {
43  // full names
44  hasClass: hasClass,
45  addClass: addClass,
46  removeClass: removeClass,
47  toggleClass: toggleClass,
48  // short names
49  has: hasClass,
50  add: addClass,
51  remove: removeClass,
52  toggle: toggleClass
53};
54
55})( window );
56
57jQuery( document ).ready( function( $ ) {
58	
59  var	Mgwprm = document.getElementById( 'mg-wprm-wrap' );
60	var	wprm_menuDir = document.getElementById( 'wprMenu' );
61	body = document.body;
62  
63  /**
64  ----------------------------------------
65  * 
66  * Body slide from one side ( left, right or top )
67  *
68  ----------------------------------------
69  **/
70  if( jQuery('.wprmenu_bar').hasClass('bodyslide') )
71    jQuery('body').addClass('cbp-spmenu-push');
72
73	jQuery('.wprmenu_bar').click( function(e) {
74		if( $(e.target).hasClass('bar_logo') )
75			return;
76    
77    
78
79		classie.toggle( this, 'active' );
80		jQuery(this).find('div.hamburger').toggleClass('is-active');
81    
82		if( jQuery(this).hasClass('active') ) {
83		  jQuery('html').addClass('wprmenu-body-fixed');
84      
85			if( wprmenu.enable_overlay == '1' ) {
86			 jQuery('div.wprm-wrapper').find('.wprm-overlay').addClass('active');
87       
88       
89			}
90		}
91		else {
92			jQuery('html').removeClass('wprmenu-body-fixed');
93      
94			if( wprmenu.enable_overlay == '1' ) {
95				jQuery('div.wprm-wrapper').find('.wprm-overlay').removeClass('active');
96			}
97
98      
99		}
100
101    /**
102    ----------------------------------------
103    * 
104    * Right side body push
105    *
106    ----------------------------------------
107    **/
108		if ( !jQuery(this).hasClass('normalslide') && jQuery(this).hasClass('left')) {
109			doc_width = jQuery(document).width() * (wprmenu.menu_width/100);
110			push_width = (wprmenu.push_width != '' && wprmenu.push_width < doc_width) ? wprmenu.push_width : doc_width;
111			classie.toggle(body, 'cbp-spmenu-push-toright');
112			
113      if( jQuery('body').hasClass('cbp-spmenu-push-toright') )
114				jQuery('body').css('left', push_width + 'px');
115			else
116				$('body').css('left','0px');
117		}
118
119		 /**
120    ----------------------------------------
121    * 
122    * Left side body push
123    *
124    ----------------------------------------
125    **/
126		if ( !jQuery(this).hasClass('normalslide') && jQuery(this).hasClass('right')) {
127			doc_width = jQuery(document).width() * (wprmenu.menu_width/100);
128			push_width = (wprmenu.push_width != '' && wprmenu.push_width < doc_width) ? wprmenu.push_width : doc_width;
129			classie.toggle(body, 'cbp-spmenu-push-toleft');
130			
131      if( jQuery('body').hasClass('cbp-spmenu-push-toleft') )
132				jQuery('body').css('left','-'+push_width+'px');
133			else
134				jQuery('body').css('left','0px');
135		}
136    
137		classie.toggle(Mgwprm, 'cbp-spmenu-open');
138
139    var wprmenuDemoId = wprmenu.wprmenuDemoId;
140    
141    if ( wprmenuDemoId ==  15 ) {
142      
143      jQuery('div.wprm-wrapper').addClass('wp-responsive-menu-demo15');
144      
145    }else if ( wprmenuDemoId ==  16 ) {
146
147      jQuery('div.wprm-wrapper').addClass('wp-responsive-menu-demo16');
148      
149    }else if ( wprmenuDemoId ==  17 ) {
150
151      jQuery('div.wprm-wrapper').addClass('wp-responsive-menu-demo17');
152     
153    }
154
155		close_sub_uls();
156
157	});
158
159  /**
160  -------------------------------------------------------------
161  * 
162  * Fix the scaling issue by adding/replacing viewport metatag
163  *
164  -------------------------------------------------------------
165  **/
166  var mt = $('meta[name=viewport]');
167  mt = mt.length ? mt : $('<meta name="viewport" />').appendTo('head');
168  if(wprmenu.zooming == 0) {
169    mt.attr('content', 'user-scalable=no, width=device-width, maximum-scale=1, minimum-scale=1');
170  } else {
171    mt.attr('content', 'user-scalable=yes, width=device-width, initial-scale=1.0, minimum-scale=1');
172  }
173
174	/**
175  ----------------------------------------
176  * 
177  * Click on body to remove the menu
178  *
179  ----------------------------------------
180  **/
181  $('body').click( function( event ) {
182    if ( $( '#wprmenu_bar' ).hasClass( 'active' ) ) {
183      $('#wprmenu_bar .wprmenu_icon').addClass('open');
184    } 
185    else {
186      $('#wprmenu_bar .wprmenu_icon').removeClass('open');
187    }
188  });
189
190	var menu = jQuery('#mg-wprm-wrap');
191	var menu_ul = jQuery('#wprmenu_menu_ul'); //the menu ul
192
193	jQuery(document).mouseup(function (e) {
194		if ( ($(e.target).hasClass('wprmenu_bar') || $(e.target).parents('.wprmenu_bar').length == 0) && 
195			($(e.target).hasClass('cbp-spmenu') || $(e.target).parents('.cbp-spmenu').length == 0)) {
196    		if(menu.is(':visible') ) {
197				$('.hamburger.is-active').trigger('click');
198			}
199		}
200	});
201
202	//add arrow element to the parent li items and chide its child uls
203	menu.find('ul.sub-menu').each(function() {
204		var sub_ul = $(this),
205		parent_a = sub_ul.prev('a'),
206		parent_li = parent_a.parent('li').first();
207
208		parent_a.addClass('wprmenu_parent_item');
209		parent_li.addClass('wprmenu_parent_item_li');
210
211		var expand = parent_a.before('<span class="wprmenu_icon wprmenu_icon_par icon_default"></span> ').find('.wprmenu_icon_par');
212		sub_ul.hide();
213	});
214
215
216	//expand / collapse action (SUBLEVELS)
217	$('.wprmenu_icon_par').on('click',function() {
218		var t = $(this),
219		child_ul = t.parent('li').find('ul.sub-menu').first(); 
220		child_ul.slideToggle('300');
221		t.toggleClass('wprmenu_par_opened');
222		t.parent('li').first().toggleClass('wprmenu_no_border_bottom');
223	});
224
225	//helper - close all submenus when menu is hiding
226	function close_sub_uls() {
227		menu.find('ul.sub-menu').each(function() {
228			var ul = $(this),
229			icon = ul.parent('li').find('.wprmenu_icon_par'),
230			li = ul.parent('li');
231
232			if(ul.is(':visible')) ul.slideUp(300);
233			icon.removeClass('wprmenu_par_opened');
234			li.removeClass('wprmenu_no_border_bottom');
235		});
236	}
237
238	//submenu opened
239	function open_sub_uls() {
240		menu.find('ul.sub-menu').each(function() {
241			var ul = $(this),
242			icon = ul.parent('li').find('.wprmenu_icon_par'),
243			li = ul.parent('li');
244
245			ul.slideDown(300);
246			icon.removeClass('wprmenu_par_opened');
247			icon.addClass('wprmenu_par_opened');
248		});
249	}
250
251	if( menu.hasClass('cbp-spmenu-top') && $('body').hasClass('cbp-spmenu-push') ){
252		$('body').prepend(menu);
253		//show / hide the menu
254		$('#wprmenu_bar,#custom_menu_icon').on('click', function(e) {
255			if( $(e.target).hasClass('bar_logo') )
256				return;
257			//scroll window top
258			$("html, body").animate({ scrollTop: 0 }, 300);
259
260			close_sub_uls();
261			menu.stop(true, false).slideToggle(300);
262		});
263	}
264	if( wprmenu.parent_click == 'yes' ) {
265		$('a.wprmenu_parent_item').on('click', function( event ){
266			event.preventDefault();
267      var t = $(this);
268      // Find the corresponding menu icon and trigger its click
269      t.parent('li').find('.wprmenu_icon_par').first().trigger('click');
270		});
271	}
272	$('#wprmenu_menu_ul a').click(function(){
273		if( wprmenu.parent_click !='yes' || (wprmenu.parent_click == 'yes' && !$(this).hasClass('wprmenu_parent_item')) )
274			$('.hamburger.is-active').trigger('click');
275	});
276
277
278  /**
279  ----------------------------------------
280  * 
281  * Swipe Enable Function
282  *
283  ----------------------------------------
284  **/
285	if( wprmenu.swipe == '1' ) {
286    jQuery('body').swipe({
287      excludedElements: "button, input, select, textarea, .noSwipe",
288      longTapThreshold: 200,
289      swipe:function(event, direction, distance, duration, fingerCount, fingerData) {
290        menu_el = $('.wprmenu_bar .hamburger, .wprmenu_bar .wpr-custom-menu');
291        if( direction =='left' && menu_el.hasClass('is-active') )
292          menu_el.trigger('click');
293        
294        
295        if( direction =='right' && !menu_el.hasClass('is-active') )
296          menu_el.trigger('click');
297        
298        }
299    });
300  }
301
302  function toggle_sub_uls($action) {
303    $('#mg-wprm-wrap').find('ul.sub-menu').each(function() {
304      var ul = $(this),
305      icon = ul.parent('li').find('.wprmenu_icon_par'),
306      li = ul.parent('li');
307
308      if( $action == 'open' ) {
309        ul.slideDown(300);
310        icon.removeClass( wprmenu.submenu_open_icon ).addClass( wprmenu.submenu_close_icon );
311      }
312      else {
313        if(ul.is(':visible')) ul.slideUp(300);
314        icon.removeClass( wprmenu.submenu_close_icon ).addClass( wprmenu.submenu_open_icon );
315        li.removeClass('wprmenu_no_border_bottom');
316      }
317      
318    });
319  }
320
321});

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.