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