1/* 2 3 Copyright 2006-2020 Kiubi SAS. 4 5 Composants specifiques au theme Kiubi pour Bootstrap v3.3.7 (http://getbootstrap.com) 6 7 Theme sous licence Beerware (https://fr.wikipedia.org/wiki/Beerware) 8 9 ---------------------------------------------------------------------------- 10 "THE BEER-WARE LICENSE" (Revision 42): 11 <[email protected]> wrote this file. As long as you retain this notice you 12 can do whatever you want with this stuff. If we meet some day, and you think 13 this stuff is worth it, you can buy us a beer in return. Kiubi 14 ---------------------------------------------------------------------------- 15 16*/ 17$(document).ready(function() { 18 $("body").addClass("script"); 19 $("body").removeClass("noscript"); 20}); 21 22$(function() { 23 $('[data-toggle="tooltip"]').tooltip(); 24}); 25 26$(function() { 27 $("#returnTop").click(function() { 28 $("html,body").animate({ scrollTop: 0 }, "fast"); 29 }); 30}); 31 32// $(function() { 33// //scroll doux 34// $('.scroll, a[href^="#"]:not([data-toggle],a[href="#tarteaucitron"])').on('click', function() { // Au clic sur un élément 35// var page = $(this).attr('href'); // Page cible 36// var speed = 300; // Durée de l'animation (en ms) 37// var headerHeight = $('#header').height(); 38// console.log(headerHeight); 39// var marge = 32; 40 41// if ($(window).width() <= 751) { 42// headerHeight = 90; 43// } 44// headerHeight = headerHeight + marge; 45// $('html, body').animate({ scrollTop: $(page).offset().top - headerHeight }, speed); // Go 46// return false; 47// }); 48// }); 49 50// Scroll vers formulaire bas de page 51$(function() { 52 var hash= window.location.hash 53 if ( hash == '' || hash == '#' || hash == undefined ) return false; 54 var target = $(hash); 55 console.log(target); 56 console.log(target.offset().top) 57 var speed = 300; 58 var headerHeight = $('#header').height(); 59 console.log(headerHeight); 60 var marge = 32; 61 62 headerHeight = headerHeight + marge; 63 console.log(headerHeight); 64 target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 65 66 if (target.length) { 67 $('html,body').stop().animate({scrollTop: target.offset().top - headerHeight }, speed); 68 } 69}); 70 71// Lightbox 72$(document).on("click", '[data-toggle="lightbox"]', function(event) { 73 event.preventDefault(); 74 $(this).ekkoLightbox(); 75}); 76 77// Galerie compl?t?e par API 78$(function() { 79 // attribut data-remote-gallery pr?sent et non vide 80 $( 81 '[data-remote-gallery][data-remote-gallery!=""][data-remote-gallery-enable="true"]' 82 ).each(function() { 83 new KiubiComponent.remoteGallery({ 84 folder_id: $(this).data("remote-gallery"), 85 uiTpl: $('script[type="text/x-template"]', this), 86 containerEl: $(".row", this), 87 }); 88 }); 89}); 90 91// Documents compl?t?s par API 92$(function() { 93 function recuperationMedia() { 94 $(".composant-telechargement .document-container").each(function() { 95 // R?cup?ration des infos d'un m?dia 96 var media_id = $(this).data("media-id").split("/").pop(); 97 var $this = $(this); 98 var query = kiubi.media.getFile(media_id).done(function(meta, data) { 99 var url = data.url; 100 var poids = data.weight; 101 var name = data.name; 102 var description = data.description; 103 $this 104 .find(".document-description") 105 .append( 106 '<a class="document-link-js" href="' + 107 url + 108 '">' + 109 name + 110 " (" + 111 poids + 112 "octets)</a>" 113 ); 114 }); 115 }); 116 } 117}); 118 119// Owl Carousel Timeline 120$(function() { 121 var sizes = [0, 768, 992, 1200]; 122 123 $(".owl-timeline").each(function() { 124 var $el = $(this); 125 126 var margin = $el.data("owl-margin") || 0; 127 var nav = $el.data("owl-nav") !== false; 128 var dots = $el.data("owl-dots") === true; 129 var animateOut = $el.data("owl-animateout") || false; // classique usage : 'fadeOut' 130 var resp_data = ($el.data("owl-responsive") || "1-2-4").split("-"); 131 var responsive = {}; 132 for (var i = 0; i < resp_data.length; i++) { 133 if (i >= sizes.length) continue; 134 responsive[sizes[i]] = { items: parseInt(resp_data[i]) }; 135 } 136 $el.owlCarousel({ 137 loop: false, 138 margin: margin, 139 nav: nav, 140 dots: dots, 141 autoHeight: false, 142 autoplay: false, 143 autoplayTimeout: 1000, 144 navText: [ 145 '<span class="material-icons" aria-hidden="true">keyboard_arrow_left</span>', 146 '<span class="material-icons" aria-hidden="true">keyboard_arrow_right</span>', 147 ], 148 animateOut: animateOut, 149 responsive: responsive, 150 }); 151 152 }); 153 154 // // Carrousel accueil 155 // var homeCarousel = $("#banner .composant-carrousel"); 156 // var playToggle = homeCarousel.find('.carousel-nav-btn'); 157 // var owlCarousel = homeCarousel.find('.owl-carousel'); 158 // console.log(owlCarousel.owlCarousel.loop); 159 // owlCarousel.owlCarousel({ 160 // loop:true, 161 // autoplay: true 162 // }) 163 // console.log(owlCarousel.owlCarousel.loop); 164 // // owlCarousel.trigger('play.owl.autoplay', [1000]); 165 // playToggle.show(); 166 167}); 168 169//Owl Carousel Banner 170$(function() { 171 var sizes = [0, 768, 992, 1200]; 172 173 $(".owl-banner").each(function() { 174 var $el = $(this); 175 176 var margin = $el.data("owl-margin") || 0; 177 var nav = $el.data("owl-nav") !== false; 178 var dots = $el.data("owl-dots") === true; 179 var animateOut = $el.data("owl-animateout") || false; // classique usage : 'fadeOut' 180 var resp_data = ($el.data("owl-responsive") || "1-2-4").split("-"); 181 var responsive = {}; 182 for (var i = 0; i < resp_data.length; i++) { 183 if (i >= sizes.length) continue; 184 responsive[sizes[i]] = { items: parseInt(resp_data[i]) }; 185 } 186 $el.owlCarousel({ 187 loop: true, 188 margin: margin, 189 nav: nav, 190 dots: dots, 191 autoHeight: false, 192 autoplay: true, 193 autoplayTimeout: 5000, 194 navText: [ 195 '<span class="material-icons" aria-hidden="true">keyboard_arrow_left</span>', 196 '<span class="material-icons" aria-hidden="true">keyboard_arrow_right</span>', 197 ], 198 animateOut: animateOut, 199 responsive: responsive, 200 }); 201 202 var homeCarousel = $("#banner .composant-carrousel"); 203 var playBtn = homeCarousel.find('.carousel-nav-btn.play'); 204 var stopBtn = homeCarousel.find('.carousel-nav-btn.stop'); 205 stopBtn.show(); 206 playBtn.hide(); 207 208 $(stopBtn).on('click',function(){ 209 console.log('Play to pause'); 210 $el.trigger('stop.owl.autoplay'); 211 stopBtn.hide(); 212 playBtn.show(); 213 }); 214 $(playBtn).on('click',function(){ 215 console.log('Pause to play'); 216 $el.trigger('play.owl.autoplay'); 217 stopBtn.show(); 218 playBtn.hide(); 219 }); 220 }); 221 222}) 223 224// Owl Carousel composant timeline 225// $(function () { 226// var sizes = [0, 768, 992, 1200]; 227 228// $(".timeline .owl-carousel").each(function () { 229// var $el = $(this); 230 231// var margin = $el.data("owl-margin") || 0; 232// var nav = $el.data("owl-nav") !== false; 233// var dots = $el.data("owl-dots") === true; 234// var animateOut = $el.data("owl-animateout") || false; // classique usage : 'fadeOut' 235// var resp_data = ($el.data("owl-responsive") || "1-2-4").split("-"); 236// var responsive = {}; 237// for (var i = 0; i < resp_data.length; i++) { 238// if (i >= sizes.length) continue; 239// responsive[sizes[i]] = { items: parseInt(resp_data[i]) }; 240// } 241// $el.owlCarousel({ 242// loop: true, 243// margin: margin, 244// nav: nav, 245// dots: dots, 246// autoHeight: false, 247// autoplay: false, 248// autoplayTimeout: 3000, 249// navText: [ 250// '<span class="material-icons" aria-hidden="true">keyboard_arrow_left</span>', 251// '<span class="material-icons" aria-hidden="true">keyboard_arrow_right</span>', 252// ], 253// animateOut: animateOut, 254// responsive: responsive, 255// }); 256// }); 257// }); 258 259// Datepicker 260$(function() { 261 $("input.datepicker").datetimepicker({ 262 locale: "fr", 263 format: "DD/MM/YYYY", 264 }); 265 266 $("input.datetimepicker").datetimepicker({ 267 locale: "fr", 268 format: "DD/MM/YYYY HH:mm", 269 }); 270}); 271 272// EasyZoom 273$(function() { 274 var $easyzoom = $(".easyzoom").easyZoom(); 275 276 var thumbnails = $easyzoom 277 .filter(".easyzoom-with-thumbnails") 278 .data("easyZoom"); 279 280 $(".listing-images").on("click", "a", function(e) { 281 var $this = $(this); 282 e.preventDefault(); 283 thumbnails.swap($this.data("standard"), $this.attr("href")); 284 }); 285 286 // Selection des images des variantes 287 $('select[name="vid"]').on("change", function(e) { 288 var option = $("option:selected", this); 289 console.log(option); 290 if (!option.data("standard") || !option.data("zoom")) return; 291 thumbnails.swap(option.data("standard"), option.data("zoom")); 292 }); 293}); 294 295// Animate On Scroll Library 296$(function() { 297 AOS.init({ 298 duration: 500, 299 offset: 150, 300 delay: 0, 301 once: true, 302 }); 303}); 304 305// Custom dynamic file input 306$(function() { 307 bsCustomFileInput.init(); 308}); 309 310// Countdown 311$(function() { 312 var t = document.querySelectorAll("[data-countdown]"); 313 314 function o(t, e) { 315 var a = t - new Date().getTime(), 316 o = Math.floor(a / 864e5); 317 o = o < 10 ? "0" + o : o; 318 var n = Math.floor((a % 864e5) / 36e5); 319 n = n < 10 ? "0" + n : n; 320 var l = Math.floor((a % 36e5) / 6e4); 321 l = l < 10 ? "0" + l : l; 322 var i = Math.floor((a % 6e4) / 1e3); 323 (i = i < 10 ? "0" + i : i), 324 (e.querySelector("[data-days]").innerHTML = o), 325 (e.querySelector("[data-hours]").innerHTML = n), 326 (e.querySelector("[data-minutes]").innerHTML = l), 327 (e.querySelector("[data-seconds]").innerHTML = i); 328 } 329 t.length && [].forEach.call(t, function(t) { 330 !(function(t) { 331 var d = t.dataset.date.split(/:+|\s+|-+|\/+/); 332 d[1] = parseInt(d[1]) - 1; 333 var a = new Date(d[2], d[1], d[0], d[3], d[4], d[5]).getTime(); 334 o(a, t), 335 setInterval(function() { 336 o(a, t); 337 }, 1e3); 338 })(t); 339 }); 340}); 341 342// Modal Call to action 343$(function() { 344 var modal = $(".kiubi-modal"); 345 if (modal.length == 0) return; 346
347 var delay = Math.round(modal.data("modal-delay")); 348 var expires = Math.round(modal.data("modal-expires")); 349 var affichage = modal.data("affichage"); 350 351 !delay ? (delay = 0) : ""; 352 !expires ? (expires = 0) : ""; 353 354 var cookieName = modal.data("cookie"); 355 var modalCookies = Cookies.get(cookieName); 356 357 console.log(delay + "\n" + expires + "\n Cookies:" + modalCookies); 358 359 if ((modalCookies != "true") && (affichage == true)) { 360 setTimeout(function() { 361 modal.modal("show"); 362 Cookies.set(cookieName, "true", { 363 expires: expires, 364 path: "/", 365 }); 366 }, delay); 367 } 368}); 369 370//bandeau bas de page 371$(function() { 372 var bandeau = $(".bandeau"); 373 if (bandeau.length == 0) return; 374 375 var delay = Math.round(bandeau.data("modal-delay")); 376 var expires = Math.round(bandeau.data("modal-expires")); 377 378 !delay ? (delay = 0) : ""; 379 !expires ? (expires = 0) : ""; 380 381 var cookieName = bandeau.data("cookie"); 382 var bandeauCookies = Cookies.get(cookieName); 383 384 if (bandeauCookies != "true") { 385 setTimeout(function() { 386 bandeau.addClass("bandeau-show"); 387 $(".bandeau-close").click(function() { 388 bandeau.removeClass("bandeau-show"); 389 Cookies.set(cookieName, "true", { 390 expires: expires, 391 path: "/", 392 }); 393 }); 394 }, delay); 395 } 396}); 397 398(function($) { 399 if ($(window).width() < 1183) { 400 $(" ul.navbar-nav > li").has("div").addClass("has-child"); 401 $(" ul.navbar-nav > li.has-child").append( 402 '<span class="btn-sub-menu"><span class="material-icons">keyboard_arrow_right</span></span>' 403 ); 404 $(" ul.navbar-nav > li.has-child > .btn-sub-menu").each(function() { 405 $(this).click(function() { 406 $(this).parent().toggleClass("expand"); 407 }); 408 }); 409 $("#navbar-collapse .navbar-nav").prepend($(".header-top form")); 410 } 411 412 function isIE() { 413 ua = navigator.userAgent; 414 /* MSIE used to detect old browsers and Trident used to newer ones*/ 415 var is_ie = ua.indexOf("MSIE ") > -1 || ua.indexOf("Trident/") > -1; 416 417 return is_ie; 418 } 419 /* Create an alert to show if the browser is IE or not */ 420 if (isIE()) { 421 $("body").addClass("internet_explorer"); 422 } 423})(jQuery); 424 425// Logo site format mobile 426 427$(window).resize(function() { 428 if ($(window).width() < 992) { 429 $(".navbar-translate").prepend($(".logo-site")); 430 } else if ($(window).width() >= 992) { 431 $(".menu-principal").prepend($(".logo-site")); 432 } 433}); 434 435$(document).ready(function() { 436 if ($(window).width() < 992) { 437 $(".navbar-translate").prepend($(".logo-site")); 438 } else if ($(window).width() >= 992) { 439 $(".menu-principal").prepend($(".logo-site")); 440 } 441}); 442 443/* Navigation menu principal */ 444 445//calculPaddingMenu 446function debounce(func, wait, immediate) { 447 var timeout; 448 return function() { 449 var context = this, 450 args = arguments; 451 var later = function() { 452 timeout = null; 453 if (!immediate) func.apply(context, args); 454 }; 455 var callNow = immediate && !timeout; 456 clearTimeout(timeout); 457 timeout = setTimeout(later, wait); 458 if (callNow) func.apply(context, args); 459 }; 460} 461 462function scrollBehavior() { 463 // Hide Header on on scroll down 464 var didScroll; 465 var lastScrollTop = 0; 466 var delta = 1; 467 var navbarHeight = $(".header-top").outerHeight(); 468 // var navbarHeight = 20; 469 470 $(window).scroll(function(event) { 471 didScroll = true; 472 }); 473 474 setInterval(function() { 475 if (didScroll) { 476 hasScrolled(); 477 didScroll = false; 478 } 479 }, 50); 480 481 var scrolltop = $(window).scrollTop(); 482 var windowwidth = $(window).width(); 483 484 if (scrolltop >= navbarHeight) { 485 $("body").addClass("body-scrolled"); 486 } 487 488 if (scrolltop <= navbarHeight) { 489 $("body").removeClass("body-scrolled"); 490 } 491 492 function hasScrolled() { 493 var st = $(this).scrollTop(); 494 495 // Make sure they scroll more than delta 496 if (Math.abs(lastScrollTop - st) <= delta) return; 497 498 // If they scrolled down and are past the navbar, add class .nav-up. 499 // This is necessary so you never see what is "behind" the navbar. 500 if ( 501 st > lastScrollTop && 502 st > navbarHeight && 503 !$("body").hasClass("user-is-tabbing") 504 ) { 505 // Scroll Down 506 $("header").removeClass("nav-down").addClass("nav-up"); 507 $(".bandeau").removeClass("bandeau-down").addClass("bandeau-up"); 508 } else { 509 // Scroll Up 510 if (st + $(window).height() < $(document).height()) { 511 $("header").removeClass("nav-up").addClass("nav-down"); 512 $(".bandeau").removeClass("bandeau-up") 513 } 514 } 515 516 lastScrollTop = st; 517 } 518} 519 520scrollBehavior(); 521$(window).scroll(debounce(scrollBehavior, 100)); 522$(window).resize(debounce(scrollBehavior, 100)); 523
524/* Menu mobile */ 525 526$(document).ready(function() { 527 if ($(window).width() < 992) { 528 $(".header-top-menu").appendTo(".navbar-collapse"); 529 $(".menu-principal") 530 .find(".search-modal-btn") 531 .prepend("<span>Rechercher</span>"); 532 } 533 534 // r?cup?rer la r?f?rence d'une offre 535 if (window.location.href.indexOf("/postuler.html") > -1) { 536 // var ref = $(location).attr("href").split('?').pop(); 537 var ref = window.location.search.substring(1); 538 $("#multi_form362").val("#" + ref); 539 $("#multi_form362").parent().addClass("is-filled is-disabled"); 540 } 541}); 542 543// Extranet : masquer menu non accessible 544$(function() { 545 if ($(".sommaire-extranet").length) { 546 var lienExtranet = $(".sommaire-extranet .lien-item-extranet"); 547 var itemExtranet = $(".sommaire-extranet .titre-item-extranet"); 548 var itemMenuExtranet = $(".menu-sidebar ul ul a"); 549 var pageEnCours = window.location.pathname; 550 551 lienExtranet.each(function() { 552 var lienItemExtranet = $(this).text(); 553 554 if (lienItemExtranet == pageEnCours) { 555 $(this).parents(".col-md-6.col-lg").remove(); 556 } 557 if ( 558 $(".sommaire-extranet:not(.d-none) .row .col-md-6.col-lg").length == 0 559 ) { 560 $(".sommaire-extranet:not(.d-none)").hide(); 561 } 562 563 itemMenuExtranet.each(function() { 564 var titreItemMenuExtranet = $(this).attr("href"); 565 566 if (titreItemMenuExtranet == lienItemExtranet) { 567 $(this).addClass("menu-visible"); 568 } 569 }); 570 }); 571 itemMenuExtranet.filter(":not(.menu-visible)").parent().hide(); 572 } 573}); 574 575//detect tabulation 576function handleFirstTab(e) { 577 if (e.keyCode === 9) { 578 // the "I am a keyboard user" key 579 document.body.classList.add("user-is-tabbing"); 580 $("header").removeClass("nav-up").addClass("nav-down"); 581 window.removeEventListener("keydown", handleFirstTab); 582 } 583} 584window.addEventListener("keydown", handleFirstTab); 585 586$(function() { 587 var plusInfoParent = $(".plus-info").parent().children(); 588 var plusInfo = $(".plus-info"); 589 590 if (plusInfoParent.length == 1) { 591 plusInfo.remove(); 592 } 593}); 594 595/* Modal owl-carousel */ 596 597$(function() { 598 var owlModal = $(".composant-timeline .owl-item .timeline-modal"); 599 $("body").append($(owlModal)); 600}); 601 602/* Pagination */ 603 604$(document).ready(function() { $("#pagination-basse").clone().appendTo("#pagination-haute"); });
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.