PageSourceSearch

https://www.apsah.asso.fr/theme/fr/assets/js/js.js

js apsah.asso.fr collected 2026-10-04 13:16:28 UTC 18,710 bytes, 604 lines download raw bytes

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.