PageSourceSearch

https://www.senso5.ch/plugin/menu/js/menu.js?_v=2

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

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.