PageSourceSearch

https://www.foxhalldental.co.uk/js/jetmenu.js

js foxhalldental.co.uk collected 2026-09-29 05:24:12 UTC 6,251 bytes, 215 lines download raw bytes

1/*
2NAME: Jet Responsive Megamenu 
3AUTHOR PAGE: http://codecanyon.net/user/marcoarib
4ITEM PAGE: http://codecanyon.net/item/jet-responsive-megamenu/5719593
5*/
6
7jQuery.fn.jetmenu = function(options){
8	var settings = {
9		 indicator	 		:true     			// indicator that indicates a submenu
10		,speed	 			:300     			// submenu speed
11		,delay				:0					// submenu show delay
12		,hideClickOut		:true     			// hide submenus when click outside menu
13		,align				:"left"				// menu alignment (left/right)
14		,submenuTrigger		:"hover"			// defines if submenu appears after hover/click
15	}
16	$.extend( settings, options );
17	
18	var menu = $(".jetmenu");
19	var lastScreenWidth = window.outerWidth;
20	var bigScreen = false;
21	
22	$(menu).prepend("<li class='showhide'><span class='title'>MENU</span><span class='icon'><em></em><em></em><em></em><em></em></span></li>");
23	
24	if(settings.indicator == true){
25		$(menu).find("a").each(function(){
26			if($(this).siblings(".dropdown, .megamenu").length > 0){
27				$(this).append("<span class='indicator'>+</span>");
28			}
29		});
30	}
31		
32	screenSize();
33	
34	$(window).resize(function() {
35		if(lastScreenWidth <= 768 && window.outerWidth > 768){
36			unbindEvents();
37			hideCollapse();
38			bindHover();
39			if(settings.align == "right" && bigScreen == false){
40				rightAlignMenu();
41				bigScreen = true;
42			}
43		}
44		if(lastScreenWidth > 768 && window.outerWidth <= 768){
45			unbindEvents();
46			showCollapse();
47			bindClick();
48			if(bigScreen == true){
49				rightAlignMenu();
50				bigScreen = false;
51			}
52		}
53		if(settings.align == "right"){
54			if(lastScreenWidth > 768 && window.outerWidth > 768)
55				fixSubmenuRight();
56		}
57		else{
58			if(lastScreenWidth > 768 && window.outerWidth > 768)
59				fixSubmenuLeft();
60		}
61		lastScreenWidth = window.outerWidth;
62	});
63	
64	function screenSize(){
65		if(window.outerWidth <= 768){
66			showCollapse();
67			bindClick();
68			if(bigScreen == true){
69				rightAlignMenu();
70				bigScreen = false;
71			}
72		}
73		else{
74			hideCollapse();
75			bindHover();
76			if(settings.align == "right"){
77				rightAlignMenu();
78				bigScreen = true;
79			}
80			else{
81				fixSubmenuLeft();
82			}
83		}
84	}
85	
86	function bindHover(){
87		if (navigator.userAgent.match(/Mobi/i) || window.navigator.msMaxTouchPoints > 0 || settings.submenuTrigger == "click"){						
88			$(menu).find("a").on("click touchstart", function(e){
89				e.stopPropagation(); 
90				e.preventDefault();
91				$(this).parent("li").siblings("li").find(".dropdown, .megamenu").stop(true, true).fadeOut(settings.speed);
92				if($(this).siblings(".dropdown, .megamenu").css("display") == "none"){
93					$(this).siblings(".dropdown, .megamenu").stop(true, true).delay(settings.delay).fadeIn(settings.speed);
94					return false; 
95				}
96				else{
97					$(this).siblings(".dropdown, .megamenu").stop(true, true).fadeOut(settings.speed);
98					$(this).siblings(".dropdown").find(".dropdown").stop(true, true).fadeOut(settings.speed);
99				}
100				window.location.href = $(this).attr("href");
101			});
102			
103			$(menu).find("li").bind("mouseleave", function(){
104				$(this).children(".dropdown, .megamenu").stop(true, true).fadeOut(settings.speed);
105			});
106			
107			if(settings.hideClickOut == true){
108				$(document).bind("click.menu touchstart.menu", function(ev){
109					if($(ev.target).closest(menu).length == 0){
110						$(menu).find(".dropdown, .megamenu").fadeOut(settings.speed);
111					}
112				});
113			}
114		}
115		else{
116			$(menu).find("li").bind("mouseenter", function(){
117				$(this).children(".dropdown, .megamenu").stop(true, true).delay(settings.delay).fadeIn(settings.speed);
118			}).bind("mouseleave", function(){
119				$(this).children(".dropdown, .megamenu").stop(true, true).fadeOut(settings.speed);
120			});
121		}
122	}
123	
124	function bindClick(){
125		$(menu).find("li:not(.showhide)").each(function(){
126			if($(this).children(".dropdown, .megamenu").length > 0){
127				$(this).children("a").bind("click", function(e){
128					if($(this).siblings(".dropdown, .megamenu").css("display") == "none"){
129						$(this).siblings(".dropdown, .megamenu").delay(settings.delay).slideDown(settings.speed).focus();
130						$(this).parent("li").siblings("li").find(".dropdown, .megamenu").slideUp(settings.speed);
131						return false;
132					}
133					else{
134						$(this).siblings(".dropdown, .megamenu").slideUp(settings.speed).focus();
135						firstItemClick = 1;
136					}
137				});
138			}
139		});
140	}
141	
142	function showCollapse(){
143		$(menu).children("li:not(.showhide)").hide(0);
144		$(menu).children("li.showhide").show(0);
145		$(menu).children("li.showhide").bind("click", function(){
146			if($(menu).children("li").is(":hidden")){
147				$(menu).children("li").slideDown(settings.speed);
148			}
149			else{
150				$(menu).children("li:not(.showhide)").slideUp(settings.speed);
151				$(menu).children("li.showhide").show(0);
152				$(menu).find(".dropdown, .megamenu").hide(settings.speed);
153			}
154		});
155	}
156	
157	function hideCollapse(){
158		$(menu).children("li").show(0);
159		$(menu).children("li.showhide").hide(0);
160	}	
161	
162	function rightAlignMenu(){
163		$(menu).children("li").addClass("jsright");
164		var items = $(menu).children("li");
165		$(menu).children("li:not(.showhide)").detach();
166		for(var i = items.length; i >= 1; i--){
167			$(menu).append(items[i]);
168		}			
169		fixSubmenuRight();
170	}
171	
172	function fixSubmenuRight(){
173		$(menu).children("li").removeClass("last");
174		var items = $(menu).children("li");
175		for(var i = 1; i <= items.length; i++){
176			if($(items[i]).children(".dropdown, .megamenu").length > 0){
177				var lastItemsWidth = 0;
178				for(var y = 1; y <= i; y++){
179					lastItemsWidth = lastItemsWidth + $(items[y]).outerWidth();
180				}
181				if($(items[i]).children(".dropdown, .megamenu").outerWidth() > lastItemsWidth){
182					$(items[i]).addClass("last");
183				}
184			}
185		}
186	}
187	
188	function fixSubmenuLeft(){
189		$(menu).children("li").removeClass("fix-sub");
190		var items = $(menu).children("li");
191		var menuWidth = $(menu).outerWidth();
192		var itemsWidth = 0;
193		for(var i = 1; i <= items.length; i++){
194			if($(items[i]).children(".dropdown, .megamenu").length > 0){
195				if($(items[i]).position().left + $(items[i]).children(".dropdown, .megamenu").outerWidth() > menuWidth){
196					$(items[i]).addClass("fix-sub");
197				}
198			}
199		}
200	}
201	
202	function unbindEvents(){
203		$(menu).find("li, a").unbind();
204		$(document).unbind("click.menu touchstart.menu");
205		$(menu).find(".dropdown, .megamenu").hide(0);
206	}
207}
208
209
210
211
212
213
214
215

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.