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.