1$ = jQuery; 2 3// Navigation persistante 4$(document).scroll(function(){ 5 if ($(this).scrollTop() > $('.smallnav').outerHeight()+$('#main-menu-nav').outerHeight()){ 6 $('body').addClass('sticky'); 7 } 8 else{ 9 $('body').removeClass('sticky'); 10 } 11}); 12 13//Fonction nécéssitant la fin de chargement de la page pour s'activer 14$(window).load(function(){ 15 16 //Perfect scrollbar des contenu avec scrollbar customisé (domaines d'application) 17 $('.list .slider').perfectScrollbar(); 18 19 /***HOME PAGE SLICK***/ 20 $('.main-sliders').slick({ 21 accessibility: false, 22 adaptiveHeight: false, 23 autoplay: true, 24 autoplaySpeed: 5000, 25 arrows: false, 26 dots: true, 27 draggable: true, 28 infinite: true, 29 pauseOnHover: true, 30 pauseOnDotsHover: true, 31 responsive: [ 32 { 33 breakpoint: 670, 34 settings: { 35 slidesToShow: 1, 36 slidesToScroll: 1, 37 dots: false, 38 autoplay: true 39 } 40 } 41 ] 42 }); 43 44 //testMarkerPosition(); 45}); 46 47//Fonction pouvant être activé de façon ponctuel dès la disponibilité des éléments du document 48$(document).ready(function () { 49 50 // Cookies 51 $.cookiesDirective({ 52 explicitConsent: false, 53 privacyPolicyUri: BASE_URL+'/mentions-legales/', 54 position: 'bottom', 55 fontSize: '12px' 56 }); 57 58 //Search Box 59 $('.search-form button').click(function () { 60 61 //Si une valeur saisie 62 if($('#search-words').val()) 63 { 64 $('.search-form .search-error').hide(); 65 $('.search-form form').submit(); 66 }else{ 67 $('.search-form .search-error').fadeIn(function(){ 68 $('body').click(function(){ 69 if($('.search-form .search-error').is(':visible')) 70 { 71 $('body').unbind('click'); 72 $('.search-form .search-error').fadeOut(); 73 } 74 }); 75 }).click(function(){ 76 $(this).fadeOut(); 77 }); 78 } 79 }); 80 81 //Page produits : menu permanent contenu 82 var $productsMenuTabs = $('ul.tabs'); 83 84 //Actif que si l'objet est trouvé 85 if($productsMenuTabs.length) 86 { 87 var $baseElementWidth = $productsMenuTabs.width(); 88 var $element_top_position = $productsMenuTabs.offset().top; 89 90 //Si la page est chargé et que le scroll est déjà dépassé 91 setMenuPosition(); 92 93 //On scroll de la page 94 $(window).bind('scroll', function() { 95 setMenuPosition(); 96 }); 97 } 98 99 //Function qui fixe ou non le menu 100 function setMenuPosition() 101 { 102 if ($(window).scrollTop() > $element_top_position) { 103 104 //N'agis que si le menu n'as pas encore subit la class FIXED (pour l'animation) 105 if(!$productsMenuTabs.hasClass('fixed-menu-tabs')) 106 { 107 $productsMenuTabs.addClass('fixed-menu-tabs'); 108 109 110 $productsMenuTabs.css({ 111 top: -$productsMenuTabs.outerHeight()+'px' 112 }); 113 114 //Fix l'element width 115 $productsMenuTabs.css({ 116 maxWidth: $baseElementWidth+'px', 117 left: $('.custom-zones').offset().left+'px' 118 }); 119 120 $productsMenuTabs.animate({ 121 top: $('.sticky-nav').outerHeight()+'px' 122 }); 123 } 124 } else { 125 //On remet le top du menu à sa position initiale 126 $element_top_position = $productsMenuTabs.offset().top; 127 //On retire le fixed class 128 $productsMenuTabs.removeClass('fixed-menu-tabs'); 129 $productsMenuTabs.css({ 130 left: 0 131 }); 132 } 133 } 134 135 //Page produits : Action de click sur les boutons du menu permanent 136 var $productsMenuTabs = $('ul.tabs'); 137 //Li actif 138 var $currentActiveLi = $productsMenuTabs.find('li.active'); 139 140 var markersTable = new Array(); 141 var markersTableName = new Array(); 142 var markerFunctionActive = true; 143 144 //Pour chaque LI du menu 145 $productsMenuTabs.children('li').each(function(){ 146 147 //Récupère l'URL hash du lien 148 var full_url = $(this).children('a').attr('href'); 149 150 //Explode 151 var parts = full_url.split('#'); 152 //Ne récupère que le nom qui a subit un sanitize_title() 153 var trgt = parts[1]; 154 155 // Créer un tableau associatif pour les markers class="content-marker" 156 markersTable.push($(this)); 157 markersTableName.push(trgt); 158 159 //Lorsque l'on clic dessus 160 $(this).click(function(e){ 161 //On interdit l'action native du lien 162 e.preventDefault(); 163 markerFunctionActive = false;
164 165 //Si il n'as pas encore la class active 166 if(!$(this).hasClass('active')){ 167 $(this).addClass('active'); 168 169 //Si un currentLI était déjà spécifié autre que lui même 170 $currentActiveLi.removeClass('active'); 171 $currentActiveLi = $(this); 172 } 173 174 //Récupère la position du target par rapport à la position 0 de la fenêtre 175 var target_offset = $('#' + trgt).offset(); 176 //Calcul la position finale du scroll 177 178 // Plus la hauteur du menu tabs car il est en position fixed hauteur non déductible du scroll 179 // Moins la hauteur de la petite fleche de 10px 180 // moins la hauteur du margin top de 10px 181 var target_top = target_offset.top+($('ul.tabs').outerHeight()-10-10); 182 183 if(!$productsMenuTabs.hasClass('fixed-menu-tabs')) 184 { 185 target_top = target_offset.top-20; 186 } 187 188 // Retire la hauteur du menu principal de la distance a scroll ainsi que la hauteur du menu tabs Plus la hauteur de la fleche 189 target_top = target_top-($('.sticky-nav').outerHeight()*2)-$('ul.tabs').outerHeight(); 190 191 //Animation du scroll vers la position finale 192 $('html, body').animate({scrollTop: target_top}, 1000, function(){ 193 markerFunctionActive = true; 194 }); 195 196 }); 197 }); 198 199 //Lorsque l'ont resize la fenetre 200 $(window).resize(function(){ 201 if($productsMenuTabs.hasClass('fixed-menu-tabs')) 202 { 203 $productsMenuTabs.css({ 204 left: $('.custom-zones').offset().left+'px' 205 }); 206 } 207 }); 208 209 // Lorsque l'ont scroll la page, change la classe des onglets TABS lorsque la barre de tabs touche un marker class="content-marker" 210 211// console.log(markersTable); 212// console.log(markersTable.length); 213 214 $(window).scroll(function(){ 215 if($('ul.tabs').length) 216 { 217 testMarkerPosition(); 218 } 219 }); 220 221 function testMarkerPosition() 222 { 223 if(markerFunctionActive) 224 { 225 var currentTabTopOffset = $('ul.tabs').offset().top + $('ul.tabs').outerHeight() + $('.main-menu-nav-cont .subcont').outerHeight(); 226 //console.log(currentTabTopOffset); 227 228 // Pour chaque marker, est-ce que l'offset de la tab est supérieur au marker 229 $(markersTable).each(function(i){ 230 var markerTop = $('#' + markersTableName[i]).offset().top; 231 232// console.log('currentTabTopOffset ' + currentTabTopOffset); 233// console.log('Marker ' + i + ' : ' + markerTop); 234 if(currentTabTopOffset >= markerTop) 235 { 236 // Reset tous les autres onglet 237 $('ul.tabs li').each(function(){ 238 $(this).removeClass('active'); 239 }); 240 // Puis ajoute la class à l'onget actif 241 $(this).addClass('active'); 242 } 243 }); 244 } 245 } 246 247 //MENU ARBORESCENCE DE GAUCHE (PRODUITS / DOMAINES) 248 $('.products-tree ul li').each(function(){ 249 var currentLi = $(this); 250 var currentAfter = $(this).find('div.expand-arr'); 251 252 $(currentAfter).click(function(e){ 253 e.preventDefault(); 254 255 var nextUL = $(currentLi).children('ul'); 256 257 if($(nextUL).is(':visible')){ 258 $(nextUL).slideUp(); 259 $(currentAfter).addClass('inactive'); 260 $(currentAfter).removeClass('active'); 261 }else{ 262 $(nextUL).slideDown(); 263 $(currentAfter).addClass('active'); 264 $(currentAfter).removeClass('inactive'); 265 } 266 }); 267 }); 268}); 269
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.