PageSourceSearch

https://www.noble-contree.ch/plugin/menu/js/menu.js?_v=3

js noble-contree.ch collected 2026-10-10 05:12:52 UTC 19,264 bytes, 536 lines download raw bytes

1function changeMenuInstance(cbo)
2{
3	for(i=0;i<cbo.options.length;i++)
4	{
5		var obj = document.getElementById("map_" + cbo.options[i].value);
6		if(obj.id == "map_" + cbo.value)
7			obj.style.display="";
8		else
9			obj.style.display="none";
10	}
11}
12
13/* Fonction anonyme auto appelée pour déclencher le fonctionnement du menu */
14(function() {
15	function workoutCopy()
16	{
17		if(!isMobileSize()) return;
18		
19		$("#leftPanel ul > li > a.copy").each(function(){
20			var $me = $(this);
21			$me.closest("ul").prev("a").css("cursor", "pointer").click(function(evt){ evt.preventDefault(); $me[0].click(); });
22		});
23	}
24	
25	/*function moveMenu() // ici je déplace pas le menu
26	{
27		var $leftPanel = $("#leftPanel");
28    	var $menuHolderInLeftPanel = $(".menuHolder", $leftPanel);
29    	var $menuHolderInMainPanel = $("#mainPanel .menuHolder").not($menuHolderInLeftPanel);
30    	
31    	if($leftPanel.is(":visible"))
32    	{
33    		if($menuHolderInLeftPanel.is(":empty"))
34    		{
35    			$menuHolderInLeftPanel.append($menuHolderInMainPanel.children().remove()).find("ul").removeAttr("style");
36    			neutralizeLeftPanelLink();
37    			workoutCopy();
38    			responsiveMenuOpen();
39    		}
40    	}
41    	else if($menuHolderInMainPanel.is(":empty"))
42    	{	
43    		$menuHolderInMainPanel.append($menuHolderInLeftPanel.children().remove()).find("ul").removeAttr("style");;
44    		setTimeout(function(){  $menuHolderInMainPanel.trigger("runmenuanim"); }, 200);
45    	}
46    };*/
47    
48    function neutralizeLeftPanelLink()
49    {
50    	$("#leftPanel .menuHolder li a[href='#']").click(function(e){ e.preventDefault(); }).css("cursor", "default"); //Empeche les liens avec un "#" de se déclencher
51    }
52    
53    function iconeMenu()
54    {
55    	var $leftPanel = $("#leftPanel");
56    	var $mainPanel = $("#mainPanel");
57    	var $menuIcone = $("#menuIcone");
58    	$menuIcone.click(function(evt){
59    		evt.preventDefault();
60    		if($mainPanel.hasClass("open"))
61    		{
62    			$("html, body").removeClass("nooverflow");
63    			$mainPanel.css("left",0).removeClass("open").find(">.neutralizer").remove();
64    			$leftPanel.removeClass("scrolling");
65//    			unswipe("body");
66    		}
67    		else
68    		{
69    			$("html, body").addClass("nooverflow");
70    			$("<div class=\"neutralizer\"></div>").click(function(){ $menuIcone.trigger("click"); }).appendTo($mainPanel);
71    			$mainPanel.addClass("open").css("left",$leftPanel.width());
72    			$leftPanel.addClass("scrolling");
73//    			if(isMobileSize())
74//    				swipe("body", function(){ $menuIcone.trigger("click"); });
75    		}
76    	});
77    	
78    	$(window).resize(function(){ if($mainPanel.hasClass("open")) $menuIcone.trigger("click"); });
79    };
80    
81    $(window).resize( /*moveMenu*/ ); //je bouge pas le menu
82    $(document).ready( function(){ neutralizeLeftPanelLink(); workoutCopy(); responsiveMenuOpen(); /*moveMenu();*/ iconeMenu();  });
83})();
84
85function isMobileSize()
86{
87	//return !($("#leftPanel").css("position")=="fixed");
88	return !($("#leftPanel").css("z-index")=="1001");
89}
90/*Fonction qui permet de gérer l'ouverture du menu en version responsive*/
91function responsiveMenuOpen() {
92		
93	/*Met un toogle d'ouverture sur tous les a*/
94	$('#leftPanel ul.menu0 a').click(function(){
95		if(!isMobileSize()) return;
96		
97		var lastChar = this.href;
98		lastChar = lastChar.slice(- 1);
99
100		//Rem. Si le UL est déjà ouvert et qu'il y a une URL sur le menu on ne relance pas le toogle
101		if(!($(this).next('ul').is(":visible") && lastChar !="#"))
102			$(this).next('ul').slideToggle();
103	});
104
105	//Réouverture des menus sélectionnés
106	$('#leftPanel a.menuselected').each(function(){
107		$(this).next('ul').css("display","block");
108	});
109}
110
111function fireMenuAnim(psIdMenu, poCallbak)
112{
113	if($(".menuHolder " + psIdMenu).length==1)
114		$(".menuHolder").on("runmenuanim", poCallbak);
115	else
116		poCallbak();
117}
118
119/*------------------------------------------------------------------------------------------------*/
120/*GESTION DU SEPARATOR :																		  */
121/* si on veut supprimer un separator (bordure ou background) du dernier menu                      */
122/* $(nomMenu + " li.menu0:last-child").css("border-right","0px");                                 */
123/* on enlève par style la propriété qui affiche le separator                                      */
124/*------------------------------------------------------------------------------------------------*/
125
126/*--------------------------------------------------------*/
127/*FONCTION POUR L'OUVERTURE DU MENU DEROULANTE VERS LE BAS*/
128/*--------------------------------------------------------*/
129function animeMenu(nomMenu,pi_LevelNot,$pi_nbreLevel)
130{
131	var nomMenu = "#"+nomMenu;
132	var margeDroite = 5;
133	
134	var fAnim = function(){
135		$(nomMenu+" li").hover(function(){
136			
137				$(nomMenu + " #" + this.id + " > a").addClass("menuHover");
138			
139				//Permet de faire dérouler le menu depuis le début du parent, on crée le décalage
140				var hauteurParent = - ($(this).height()) + "px";
141				var largeurParent = $(this).width() + margeDroite + "px";//5= petite marge sur la droite
142				$(this).not(".menu"+ pi_LevelNot).find(">ul").css("margin-top","0px" );
143				$(this).not(".menu"+ pi_LevelNot).find(">ul").css("margin-left",largeurParent );
144				$(this).not(".menu"+ pi_LevelNot).find(">ul").css("top",$(this).position().top);//On ne met pas "$("#ul" + this.id)" car pour le menu horizontal cela ne déroule pas comme on veut
145				
146				//Permet d'afficher le sous-menu au bon endroit. Ex. ne pas dépasser la fenêtre
147				var alevel =  this.className.split(" ");
148				var level = alevel[0].replace("menu","").trim();
149		
150				var tailleFenetre = $(window).width();
151				var positionParent = parseFloat($(this).offset().left);
152				var tailleparent = (level > 0)?$(this).outerWidth() + margeDroite:0;
153				var tailleEnfant = ($(nomMenu + " #ul" + this.id).outerWidth())?parseFloat($(nomMenu + " #ul" + this.id).outerWidth()):0;
154
155				if(positionParent + tailleparent + tailleEnfant > tailleFenetre)
156					{
157						if(level > 0)
158							$(nomMenu + " #ul" + this.id).css("right",largeurParent);
159						else
160							$(nomMenu + " #ul" + this.id).css("right",0);
161					}
162				else
163					$(nomMenu + " #ul" + this.id).css("right","auto");
164				
165				//Decalage du sous-menu pour éviter que ça ne passe plus sur X colonnes
166				if($pi_nbreLevel > 1)
167					{
168					if($(nomMenu + " #ul" + this.id + " > li").length >= $pi_nbreLevel)
169						{
170						var tailleMaxSousMenu = $(nomMenu + " li.menu1:first").width() * $pi_nbreLevel;
171						if($(nomMenu + " #ul" + this.id).width() < tailleMaxSousMenu)
172							$(nomMenu + " #ul" + this.id).css("right",0);
173						}
174						
175					}
176				
177				//Ajout de l'effet déroulant
178				$(nomMenu +" #ul" + this.id).stop(true,true).delay("100").slideDown("slow");			    
179		} , 
180	
181		function(){
182				$(nomMenu + " #ul" + this.id).stop(true,true).delay("200").slideUp("fast");  
183				$(nomMenu + " #" + this.id + " > a").removeClass("menuHover"); 	
184		});
185		
186		//Empeche les liens avec un "#" de se déclencher	
187		$(nomMenu+' li a[href=\'#\']').click(function(e){ e.preventDefault(); }).css("cursor", "default");
188	};
189	
190	fireMenuAnim(nomMenu, fAnim);
191}
192
193/*--------------------------------------------------------*/
194/*FONCTION POUR L'OUVERTURE DU MENU DEROULANTE VERS LE HAUT*/
195/*--------------------------------------------------------*/
196function animeMenuUp(nomMenu,pi_LevelNot,$pi_nbreLevel)
197{
198	var nomMenu = "#"+nomMenu;
199	var margeDroite = 5;
200	
201	var fAnim = function(){
202		//On lance l'animation que sur le premier niveau
203		$(nomMenu+" li.menu0").hover(function(){
204			
205				//Stop l'effet des autres ouvertures
206				$(this).siblings("li").find("ul").stop(true,true);
207			
208				$("#" + this.id + " > a").addClass("menuHover");
209	
210				//Recherche la hauteur du premier niveau pour faire le décalage
211				h =  $(this).find("ul").first().height();		
212				
213				//On enlève les padding de décalage pour faire mouvement, sinon on doit les prendre aussi en compte dans le calcul de la hauteur
214				$("#ul" + this.id).css("top","0" ).css("padding","0").css("margin","0");
215				
216				//Decalage du sous-menu pour éviter que ça ne passe plus sur X colonnes
217				if($pi_nbreLevel > 1)
218					{
219					if($(nomMenu + " #ul" + this.id + " > li").length >= $pi_nbreLevel)
220						{
221						var tailleMaxSousMenu = $(nomMenu + " li.menu1:first").width() * $pi_nbreLevel;
222						if($(nomMenu + " #ul" + this.id).width() < tailleMaxSousMenu)
223							$(nomMenu + " #ul" + this.id).css("right",0);
224						}
225						
226					}
227				
228				//Lancement de l'animation
229				$("#ul" + this.id).stop(true,true).animate(
230					{       
231						height: 'toggle',
232						top:-h 
233					},  1000);					
234		} , 
235	
236		function(){
237				 
238				$("#" + this.id + " > a").removeClass("menuHover");
239				$("#ul" + this.id).stop(true,true).animate({
240				    height:'toggle',
241				    top:0
242				  }, 1000);
243				
244		}	);
245	
246		//Pour les sous-menu, on laisse le fonctionnement normal du déroulant sur la droite.
247		$(nomMenu+" li").not(".menu"+ pi_LevelNot).hover(function(){
248			
249			$("#" + this.id + " > a").addClass("menuHover");
250		
251			//Permet de faire dérouler le menu depuis le début du parent, on crée le décalage
252			var hauteurParent = - ($(this).height()) + "px";
253			var largeurParent = $(this).width() + margeDroite  + "px";//5= petite marge sur la droite
254			$(this).not(".menu"+ pi_LevelNot).find("ul").css("margin-top","0px" );
255			$(this).not(".menu"+ pi_LevelNot).find("ul").css("margin-left",largeurParent );
256			$(this).not(".menu"+ pi_LevelNot).find("ul").css("top",$(this).position().top);//On ne met pas "$("#ul" + this.id)" car pour le menu horizontal cela ne déroule pas comme on veut
257			
258			//Permet d'afficher le sous-menu au bon endroit. Ex. ne pas dépasser la fenêtre
259			var alevel =  this.className.split(" ");
260			var level = alevel[0].replace("menu","").trim();
261	
262			var tailleFenetre = $(window).width();
263			var positionParent = parseFloat($(this).offset().left);
264			var tailleparent = (level > 0)?$(this).outerWidth() + margeDroite:0;
265			var tailleEnfant = ($(nomMenu + " #ul" + this.id).outerWidth())?parseFloat($(nomMenu + " #ul" + this.id).outerWidth()):0;
266
267			if(positionParent + tailleparent + tailleEnfant > tailleFenetre)
268				{
269					if(level > 0)
270						$(nomMenu + " #ul" + this.id).css("right",largeurParent);
271					else
272						$(nomMenu + " #ul" + this.id).css("right",0);
273				}
274			else
275				$(nomMenu + " #ul" + this.id).css("right","auto");
276
277			
278			//Ajout de l'effet déroulant
279			$("#ul" + this.id).stop(true,true).delay("100").slideDown("slow");			    
280		} , 
281		
282		function(){
283				$("#ul" + this.id).stop(true,true).delay("200").slideUp("fast");  
284				$("#" + this.id + " > a").removeClass("menuHover"); 	
285		});
286		//Empeche les liens avec un "#" de se déclencher	
287		$(nomMenu+' li a[href=\'#\']').click(function(e){ e.preventDefault(); }).css("cursor", "default");
288		
289	};
290	
291	fireMenuAnim(nomMenu, fAnim);
292}
293
294/*--------------------------------------*/
295/*FONCTION POUR L'OUVERTURE DU MENU CLIC*/
296/*--------------------------------------*/
297function animeMenuClic(nomMenu,b_fromMenu2Niveaux)
298{
299	var nomMenu = "#"+nomMenu;
300	
301	var fAnim = function(){
302		// On déclare des variables                    
303		var accordion_head = $(nomMenu + ' li a.HeaderClic');            
304		var accordion_body = $(nomMenu + ' li.contentClic');             
305		
306		//On ouvre tous les menus qui sont menuselected. On ouvre rapidement si c'est un menu 2 niveaux pour ne pas avoir l'effet déroulant
307		if(b_fromMenu2Niveaux==true)
308			$(nomMenu + " li a.menuselected").addClass("menuselected").parent().next().css('display',"block");
309		else
310			$(nomMenu + " li a.menuselected").addClass("menuselected").parent().next().slideDown('normal');
311		
312		accordion_head.click(function(event) { 
313			
314			//Si on a un lien on le suit et on n'ouvre pas le sous-menu
315			if($(this).attr('href') != '#')
316				return;
317			
318			//Pour stopper l'effet du clic et donc par remonter au sommet de la page à cause du #
319			event.preventDefault();
320			event.stopPropagation();
321			
322			//Si on n'a pas de lien et pas de sous-menu on ne fait rien, évite un mini effet d'ouverture
323			if($(this).parent().next().html()=="")
324				return;
325			
326			// On annule l'effet naturel du lien   
327			// On vérifie la présence de la classe "menuselected"
328			if ($(this).attr('class').search('menuselected HeaderClic')>0){                    
329					                    
330				// On ouvre celui qui suit directement le lien (.HeaderClic) sur lequel on a cliqué
331				$(this).parent().next().stop(true,true).slideToggle('normal');     
332				
333				// On enlève la classe .menuselected de tous les liens                    
334				accordion_head.removeClass('menuselected');    
335				
336				// On rajoute la classe .menuselected au lien sur lequel on a cliqué                    
337				$(this).addClass('menuselected');                
338				}    
339			else
340				{
341					//Lance l'ouverture d'un menu qui n'a pas de lien et pas selected 
342					$(this).parent().next().slideToggle('normal'); 
343				}
344			
345		});
346		//Change le style des liens avec un "#" 	
347		$(nomMenu+' li a[href=\'#\']').css("cursor", "default");
348	};
349
350	fireMenuAnim(nomMenu, fAnim);
351}
352
353/*----------------------------------------------------------*/
354/*FONCTION POUR L'OUVERTURE DU MENU DEROULANTE 2 NIVEAUX TOP*/
355/*----------------------------------------------------------*/
356
357function animeMenu2NiveauxTop(nomMenu,pi_nbreLevel,nomSousMenu,typeSousMenu,pi_nbreCol)
358{
359	var nomMenu = "#"+nomMenu;
360	var nomSousMenu = "#"+nomSousMenu;
361	var fAnim = function(){
362		$(nomMenu+" li").hover(function(){
363			
364				$(nomMenu + " #" + this.id + " > a").addClass("menuHover");
365			
366				if(pi_nbreLevel > 1 && $(this).hasClass("menu0"))//Indique qu'il n'y a pas de sous-menu
367					{
368						//Decalage du sous-menu pour éviter que ça ne passe plus sur X colonnes
369						if(pi_nbreCol > 1)
370							{
371							if($(nomMenu + " #ul" + this.id + " > li").length >= pi_nbreCol)
372								{
373								var tailleMaxSousMenu = $(nomMenu + " li.menu1:first").width() * pi_nbreCol;
374								
375								if($(nomMenu + " #ul" + this.id).width() < tailleMaxSousMenu)
376									$(nomMenu + " #ul" + this.id).css("right",0);
377								}
378	
379							}
380					
381						//Ajout de l'effet déroulant
382						$(nomMenu + " #ul" + this.id).stop(true,true).delay("100").slideDown("slow");	
383					}		    
384		} , 
385	
386		function(){
387				if(pi_nbreLevel > 1 && $(this).hasClass("menu0"))//Indique qu'il n'y a pas de sous-menu
388					$(nomMenu + " #ul" + this.id).stop(true,true).delay("200").slideUp("fast");  
389				
390				$(nomMenu + " #" + this.id + " > a").removeClass("menuHover"); 	
391		}	);
392	
393		
394		//Gère l'ouverture du sous-menu si il n'y a pas de lien
395		$(nomMenu+' li a[href=\'#\']').click(function(e){
396			
397			var idParentEnCours = $(this).parent().get(0).id;
398			
399			//Recherche le premier lien qui est != # et != de "javascript..." (menu admin)
400			if(!window.isMobile)
401				var newUrl = $(nomSousMenu + " #ul" + idParentEnCours).find("li a[href!='#']:not([href^='javascript'])").first().attr("href");
402			
403			if(newUrl)
404				$(this).attr("href",newUrl);
405			else//Force l'ouverture du sous-menu
406				{
407					//Pour stopper l'effet du clic et donc par remonter au sommet de la page à cause du #
408					e.preventDefault();
409					e.stopPropagation();
410				
411					var nomParentDisplay = idParentEnCours;
412					
413					while(!$("#"+nomParentDisplay).hasClass("menu0") )
414						{
415							var myULid = $("#"+nomParentDisplay).parent().get(0).id;
416							var aKey = myULid.split("_");
417							var id=aKey[1];
418							
419							//recherch du parent de l'élément suivant
420							nomParentDisplay = "mid_"+id;
421						}
422					
423					if(typeSousMenu=="clic")//Version click
424						{
425							$(nomSousMenu +" #"+nomParentDisplay).siblings("ul > li").css("display","none");//cherche les frères et les cache
426							$(nomSousMenu +" #"+nomParentDisplay).next().css('display',"block");//affichage du sous-menu	
427						}
428					else //Version déroulant
429						{
430							
431							//cache les frères et soeurs
432							$(nomSousMenu).find("ul.menu1").css('display',"none");//affichage du sous-menu	
433							//Affiche le sous-menu
434							$(nomSousMenu +" #ul"+nomParentDisplay).css('display',"block");//affichage du sous-menu
435							
436							//Positionnement du menu en haut
437							$(nomSousMenu +" #ul"+nomParentDisplay).css("top",0);
438							$(nomSousMenu +" #ul"+nomParentDisplay).css("margin",0);
439	
440						}
441					
442					
443				}
444	
445		});
446	};
447	
448	fireMenuAnim(nomMenu, fAnim);
449}
450
451/*---------------------------------------------------------------*/
452/*FONCTION POUR L'OUVERTURE DU MENU DEROULANTE 2 NIVEAUX VERTICAL*/
453/*---------------------------------------------------------------*/
454
455function animeMenu2NiveauxDeroulant(nomMenu,pi_LevelNot)
456{
457	var nomMenu = "#"+nomMenu;
458	
459	var fAnim = function(){
460		//On affecte un style pour cacher les ul du premier niveau si ceux-ci on un style, on le voit encore un peu
461		$(nomMenu + " ul.menu0").addClass("hideLevel");
462	
463		
464		//Réouverture du sous-menu
465		if($(nomMenu + " li a.menuselected").parent().length > 0)
466			{
467				var id = " #ul" + $(nomMenu + " li a.menuselected").parent().get(0).id;
468				$(nomMenu + id).css('display',"block");
469				$(nomMenu +id).css("top",0);
470				$(nomMenu +id).css("margin",0);
471			}
472	
473	
474		$(nomMenu+" li").hover(function(){
475			
476			$(nomMenu + " #" + this.id + " > a").addClass("menuHover");
477		
478			//Permet de faire dérouler le menu depuis le début du parent, on crée le décalage
479			var hauteurParent = - ($(this).height()) + "px";
480			var largeurParent = $(this).width() + 5 + "px";//5= petite marge sur la droite
481			$(this).find("ul").not(".menu"+pi_LevelNot).css("margin-top","0px" );
482			$(this).find("ul").not(".menu"+pi_LevelNot).css("margin-left",largeurParent );
483			$(this).find("ul").not(".menu"+pi_LevelNot).css("top",$(this).position().top);//On ne met pas "$("#ul" + this.id)" car pour le menu horizontal cela ne déroule pas comme on veut
484			
485		
486			//Ajout de l'effet déroulant
487			$(nomMenu +" #ul" + this.id).stop(true,true).delay("100").slideDown("slow");			    
488		} , 
489	
490		function(){
491				$(nomMenu + " #ul" + this.id).not(".menu"+ pi_LevelNot).stop(true,true).delay("200").slide
491Up("fast");  
492				$(nomMenu + " #" + this.id + " > a").removeClass("menuHover"); 	
493		});
494		
495		//Empeche les liens avec un "#" de se déclencher	
496		$(nomMenu+' li a[href=\'#\']').click(function(e){ e.preventDefault(); }).css("cursor", "default");
497	};
498		
499	fireMenuAnim(nomMenu, fAnim);
500}
501
502/*------------------------------------------*/
503/*FONCTIONS POUR L'OUVERTURE DU MENU D'ADMIN*/
504/*------------------------------------------*/
505function initAdminMenu()
506{
507	$(".myArrowAdmin").each(function(){
508		
509		var idArrow = this.id;
510		var aKey = idArrow.split("-");
511		var pkey=aKey[1];
512		var pDebutID = aKey[0];
513		var sParent = "";
514		
515		//Utilisé si menu 2 niveaux pour éviter le conflit des id
516		if(pDebutID.indexOf("imgMenu_") != -1)
517			{
518				var aParent = pDebutID.split("_");
519				sParent= "#" + aParent[1] + " ";
520			}
521
522		//Permet de faire dérouler
523		$(sParent + "#"+idArrow+", #"+pkey).hover( function(){ 
524			
525			$(sParent + "#"+pkey).stop(true,true).delay(100);//on attend pour permettre de passer sur le div depuis la flèche
526			$(sParent + "#"+pkey).show("fast")
527			
528			}, 
529			function(){ 
530				$(sParent + "#"+pkey).stop(true,true).delay(200);//on attend pour permettre de passer sur le div depuis la flèche
531				$(sParent + "#"+pkey).hide("fast");
532			});
533		
534	});
535	
536}

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.