PageSourceSearch

https://www.ca-assurances.com/wp-content/themes/ca-assurances/js/main.js

js ca-assurances.com collected 2026-10-04 02:22:16 UTC 52,438 bytes, 1,485 lines download raw bytes

1const RequestAjax = (data, doneActions) => {
2  $.ajax({
3    url: ajaxurl,
4    type: "POST",
5    data,
6  })
7    .done((data) => {
8      doneActions(data);
9      if (data["debug"] !== undefined) {
10        console.log("DEBUG >>>>", data["debug"]);
11      }
12
13      if (data["_rootUrl"] !== null && $(".link-multilingual").length) {
14        $link = $(".link-multilingual").attr("href");
15        $link = $link.split("?");
16        $(".link-multilingual").attr("href", $link[0] + data["_rootUrl"]);
17      }
18    })
19    .fail((data) => {
20      const $CaAssurancesListing = $(".ca-assurances-listing");
21      const $CaAssurancesResults = $CaAssurancesListing.find(
22        ".ca-assurances-results"
23      );
24      $CaAssurancesListing.removeClass("d-none");
25
26      $CaAssurancesResults.find("#ca-assurances-nav").addClass("d-none");
27      $CaAssurancesResults.find(`.tab-pane`).removeClass("show active");
28      const $SearchParams = $CaAssurancesListing.find(".search-params");
29      $SearchParams.removeClass("d-none").find("#number_posts").html(0);
30      $SearchParams
31        .find("p")
32        .html(
33          data["number_posts"] > 1
34            ? translation_object.results
35            : translation_object.result
36        );
37    });
38};
39
40//-------------------------------------------------------------
41
42const SyncUrl = ({ dateSelected, viewSelected, s, compagnie }) => {
43  const selected = {};
44  if (s) {
45    selected["s"] = [s];
46  }
47  $(".filters").each(function () {
48    const taxonomie = $(this).data("taxonomie");
49    const listTaxonomies = $(this)
50      .find("input:checked")
51      .map((_, checkbox) => $(checkbox).attr("id"))
52      .get();
53    if (listTaxonomies.length > 0) selected[taxonomie] = listTaxonomies;
54  });
55  if (dateSelected && dateSelected != 9999) {
56    selected["date"] = [dateSelected];
57  }
58
59  if (viewSelected) {
60    selected["view"] = [viewSelected];
61  }
62
63  if (compagnie) {
64    selected["compagnie"] = [compagnie];
65  }
66
67  const newUrl =
68    window.location.protocol +
69    "//" +
70    window.location.host +
71    window.location.pathname;
72
73  const queryString = Object.entries(selected)
74    .map(([taxonomie, ids]) => `${taxonomie}=${ids.join("%2C")}`)
75    .join("&");
76
77  window.history.pushState(
78    { path: `${newUrl}${queryString ? `?${queryString}` : queryString}` },
79    "",
80    `${newUrl}${queryString ? `?${queryString}` : queryString}`
81  );
82
83  const decodedString = decodeURIComponent(
84    window.location.search.replace("?", "")
85  );
86
87  const queryObject = decodedString.split("&").reduce(function (obj, item) {
88    const parts = item.split("=");
89    obj[parts[0]] = parts[1];
90    return obj;
91  }, {});
92
93  return queryObject;
94};
95
96//-------------------------------------------------------------
97const resetNavigation = () => {
98  $("#main-nav-and-search .big-menu-wrapper").removeClass(
99    "isClicked isLastClicked"
100  );
101
102  $("#main-nav-and-search li").removeClass("active");
103
104  $(
105    "#main-nav-and-search > .navbar-nav > ul > li > .big-menu-wrapper"
106  ).addClass("isClicked isLastClicked");
107  $("#menu-overlay").removeClass("active");
108
109  $("#main-nav-and-search .navbar-nav a").removeClass("active");
110};
111
112const initNavigation = () => {
113  resetNavigation();
114
115  //menu premier niveau
116  // $(
117  //   "#main-nav-and-search .main-navigation > li.menu-item-has-children > .link-container > a"
118  // ).click(function (e) {
119  //   e.preventDefault();
120  //   $("#main-nav-and-search .navbar-nav a").removeClass("active");
121  //   $(this).addClass("active");
122  // });
123
124  // menu search
125  $("#main-nav-and-search #search-navigation > li > .link-container > a").click(
126    function (e) {
127      e.preventDefault();
128      $("#main-nav-and-search .navbar-nav a").removeClass("active");
129    }
130  );
131
132  //sous-menu
133  // $("#main-nav-and-search .sub-menu .link-container > a").click(function (e) {
134  //   $("#main-nav-and-search .sub-menu .link-container > a").removeClass(
135  //     "active"
136  //   );
137  //   $(this).addClass("active");
138  // });
139
140  //menu switcher de langue
141  $(".menu-item-has-children > a").click(function (e) {
142    $(this).toggleClass("active");
143  });
144
145  $BTN_retour_nav = $(
146    '<a class="retour-nav" title="' +
147    translation_object.retour +
148    '" href="#"><span>' +
149    translation_object.retour +
150    "</span></a>"
151  );
152
153  $BTN_retour_nav.click(function (e) {
154    closeOverlay($(e.currentTarget).closest("li"));
155  });
156
157  function closeOverlay($liParent) {
158    $liParentParent = $liParent.parent().closest("li");
159    $liParent.find(">
159.big-menu-wrapper").removeClass("isClicked isLastClicked");
160    $liParentParent
161      .find(">.big-menu-wrapper")
162      .addClass("isClicked isLastClicked");
163
164    $liParent.removeClass("active");
165    $liParent.find("a").removeClass("active");
166
167    menuOverlay();
168  }
169
170  $(
171    "#main-nav-and-search .big-menu-wrapper .big-menu-wrapper .big-menu-info-page .title"
172  ).prepend($BTN_retour_nav);
173
174  $SPANS = $("#main-nav-and-search li.menu-item > .link-container > a");
175  $SPANS.click(function (e) {
176    const isEmpty = $(e.currentTarget).hasClass("empty");
177    const isActive = $(e.currentTarget).hasClass("active");
178    const isMainNav = $(e.currentTarget)
179      .closest("ul")
180      .hasClass("main-navigation");
181    const isParent = $(e.currentTarget)
182      .closest("li")
183      .hasClass("menu-item-has-children");
184
185    if ((isEmpty || isParent) && (!isActive || !isMainNav)) {
186      e.preventDefault();
187      $("#main-nav-and-search .big-menu-wrapper").removeClass(
188        "isClicked isLastClicked"
189      );
190
191      //rénitialise les actives des liens du menu header
192      if (isMainNav) {
193        $("#main-nav-and-search .navbar-nav a").removeClass("active");
194      }
195      else {
196        //specialemnt pour sous-menu
197        $("#main-nav-and-search .sub-menu .link-container > a").removeClass(
198          "active"
199        );
200      }
201
202      //tous les li parents
203      $(e.currentTarget).addClass("active")
204        .parents("li")
205        .addClass("active")
206        .find("> .big-menu-wrapper")
207        .removeClass("isClicked isLastClicked")
208        .addClass("isClicked");
209
210      //les freres du li parents
211      $(e.currentTarget).closest("li").siblings().removeClass("active");
212
213      //le li parent
214      $(e.currentTarget)
215        .closest("li")
216        .addClass("active")
217        .find("> .big-menu-wrapper")
218        .removeClass("isClicked isLastClicked")
219        .addClass("isClicked isLastClicked");
220
221      //on reinitialise les map eventuelles
222      $(".big-menu-pannel .map").each(function (index, element) {
223        window[$(element).attr("id")].invalidateSize();
224      });
225
226      menuOverlay();
227    } else if (isActive) {
228      e.preventDefault();
229      $("#main-nav-and-search .navbar-nav a").removeClass("active");
230      $("#main-nav-and-search .big-menu-wrapper").removeClass(
231        "isClicked isLastClicked"
232      );
233      $("#main-nav-and-search li").removeClass("active");
234      $("#menu-overlay").removeClass("active");
235    }
236  });
237
238  // A simplifier peut-être
239  $SPANSSEARCH = $(
240    "#main-nav-and-search li#menu-item-search > .link-container > a"
241  );
242  $SPANSSEARCH.click(function (e) {
243    e.preventDefault();
244    $("#main-nav-and-search .big-menu-wrapper").removeClass(
245      "isClicked isLastClicked"
246    );
247
248    //tous les li parents
249    $(e.currentTarget)
250      .parents("li")
251      .addClass("active")
252      .find("> .big-menu-wrapper")
253      .removeClass("isClicked isLastClicked")
254      .addClass("isClicked");
255
256    //les freres du li parents
257    $(e.currentTarget).closest("li").siblings().removeClass("active");
258
259    //le li parent
260    $(e.currentTarget)
261      .closest("li")
262      .addClass("active")
263      .find("> .big-menu-wrapper")
264      .removeClass("isClicked isLastClicked")
265      .addClass("isClicked isLastClicked");
266
267    //on reinitialise les map eventuelles
268    $(".big-menu-pannel .map").each(function (index, element) {
269      window[$(element).attr("id")].invalidateSize();
270    });
271
272    menuOverlay();
273  });
274
275  $("#menu-overlay").click(function () {
276    resetNavigation();
277  });
278
279  menuOverlay();
280};
281
282const menuOverlay = () => {
283  //je check si le menu est ouvert
284  if (
285    $(
286      "#main-nav-and-search > .navbar-nav > ul > li > .big-menu-wrapper > .big-menu-info-page-nav > .big-menu-nav .isClicked"
287    ).length
288  ) {
289    $("#menu-overlay").addClass("active");
290  } else {
291    $("#menu-overlay").removeClass("active");
292  }
293};
294
295//For agendas
296const initLinkEvent = (
297  element,
298  { date_debut, date_fin, lieu, objet, details }
299) => {
300  const icsMSG =
301    "BEGIN:VCALENDAR\n" +
302    "VERSION:2.0\n" +
303    "PRODID:-//Our Company//NONSGML v1.0//EN\n" +
304    "BEGIN:VEVENT\n" +
305    "UID:[email protected]\n" +
306    "DTSTAMP:20120315T170000Z\n" +
307    "ORGANIZER;CN=CA Assurances\n" +
308    "DTSTART:" +
309    date_debut +
310    "\n" +
311    "DTEND:" +
312    date_fin +
313    "\n" +
314    "LOCATION:" +
315    lieu +
316    "\n" +
317    "SUMMARY:" +
318    objet +
319    "\n" +
320    "DESCRIPTION:" +
321    details +
322    "\n" +
323    "END:VEVENT\n" +
324    "END:VCALENDAR";
325
326  $(element).attr(
327    "href",
328    "data:text/calendar;charset=utf8," + encodeURI(icsMSG)
329  );
330};
331
332$(document).ready(function () {
333  initNavigation();
334
335  //----------- CONTACT PAGES ----------------------------------
336
337  if ($(".wpcf7-form").length > 0) {
338    const $caseACocher = $("#dp");
339    if ($caseACocher.length > 0) {
340      const $submitBtn = $(".wpcf7-form-control.wpcf7-submit");
341      const $OTPBtn = $("#send-otp");
342      $submitBtn.prop("disabled", true);
343      $OTPBtn.prop("disabled", true);
344      $('body').on("click", "#dp", function () {
345        if ($(this).is(":checked")) {
346          $submitBtn.prop("disabled", false);
347          $OTPBtn.prop("disabled", false);
348        } else {
349          $submitBtn.prop("disabled", true);
350          $OTPBtn.prop("disabled", true);
351        }
352      });
353    }
354  }
355    // const wpcf7Elm = document.querySelector(".wpcf7");
356
357    // wpcf7Elm.addEventListener(
358    //   "wpcf7mailsent",
359    //   function (event) {
360    //     setTimeout(() => {
361    //       const $output = $(wpcf7Elm).find(".wpcf7-response-output");
362    //       const backHome = $(wpcf7Elm).find("#back-home");
363    //       $output.addClass("validate").attr("aria-hidden", "false").append(backHome);
364    //       const $submitBtn = $(wpcf7Elm).find(".wpcf7-form-control.wpcf7-submit");
365    //       $submitBtn.blur();
366    //       JBResetOtp();
367    //     }, "300");
368    //   },
369    //   false
370    // );
371
372    // wpcf7Elm.addEventListener(
373    //   "wpcf7invalid",
374    //   function (event) {
375    //     const invalidFields = event.detail.apiResponse.invalid_fields;
376    //     if(invalidFields.length == 1 && invalidFields[0].field == "otp-code") {
377    //       JBSetOpt(wpcf7Elm);
378    //     }
379    //   },
380    //   false
381    // );
382  // }
383
384  //----------- START PAGE LISTING -----------------------------
385
386  const $btnMoreFilters = $("#more_filters");
387  const $CaAssurancesListing = $(".ca-assurances-listing");
388  const $SearchParams = $CaAssurancesListing.find(".search-params");
389  const $CaAssurancesResults = $CaAssurancesListing.find(
390    ".ca-assurances-results"
391  );
392  let positionGouvernanceSelected = undefined;
393  let filters = {};
394  let _rootUrl = "";
395
396  if ($CaAssurancesListing.length) {
397    const filters_for = $CaAssurancesListing.data("filters_for");
398    const aff_filters_dates = $CaAssurancesListing.data("aff_filters_dates");
399    const $caAssurancesFilters = $(".ca-assurances-filters");
400    const urlParams = new URLSearchParams(window.location.search);
401    const $GroupFilters = $caAssurancesFilters.find(".filters");
402    let checked = false;
403    let dateSelected = urlParams.get("date") ? urlParams.get("date") : 9999;
404    let viewSelected = urlParams.get("view") ? urlParams.get("view") : "list";
405    let loopPagination = null;
406    let compagnie = urlParams.get("compagnie")
407      ? urlParams.get("compagnie")
408      : undefined;
409    let mapData = [];
410    positionGouvernanceSelected = compagnie;
411    const s = urlParams.get("s") ? urlParams.get("s") : undefined;
412
413    const CaAssurancesFilters = (filters) => {
414      RequestAjax(
415        {
416          action: "dataFilters",
417          filters_for,
418          filters,
419          s: filters_for == "search" ? s : undefined,
420          dateSelected: aff_filters_dates ? dateSelected : undefined,
421          positionGouvernanceSelected,
422          _rootUrl,
423          lang: $("html").attr("lang").split("-")[0],
424        },
425        (data) => {
426          $CaAssurancesListing.removeClass("d-none");
427
428          if (aff_filters_dates) {
429            let navDates = "";
430            let tabByDate = "";
431
432            if (filters_for == "agenda") {
433              const dateFormatee = urlParams.get("date")
434                ? urlParams.get("date")
435                : new Date().toISOString().split("T")[0];
436
437              navDates += `<li class="nav-item" role="presentation">
438              <button ${data["date"] == 9999 ? "tabindex='-1'" : ""
439                } class="nav-link ${data["date"] == 9999 ? "active" : ""
440                } dates" id="tab-0" data-bs-toggle="tab" data-bs-target="#tab-pane-0" type="button" role="tab" aria-controls="tab-pane-9999" aria-selected="true" data-date="9999">${translation_object.upcoming_event
441                }</button>
442            </li>`;
443
444              tabByDate += `<div class="tab-pane fade ${data["date"] == 9999 ? "show active" : ""
445                }" id="tab-pane-0" role="tabpanel" aria-labelledby="tab-9999" tabindex="0"><div role="list"></div></div>`;
446
447              navDates += `<li class="nav-item" role="presentation">
448                      <button ${data["date"] == dateFormatee ? "tabindex='-1'" : ""
449                }
450                      class="nav-link ${data["date"] == dateFormatee ? "active" : ""
451                } dates" id="tab-1" data-bs-toggle="tab" data-bs-target="#tab-pane-1" type="button" role="tab" aria-controls="tab-pane-${dateFormatee}" aria-selected="true" data-date="${dateFormatee}">${translation_object.past_event
452                }</button>
453                    </li>`;
454
455              tabByDate += `<div class="tab-pane fade ${data["date"] == dateFormatee ? "show active" : ""
456                }" id="tab-pane-1" role="tabpanel" aria-labelledby="tab-${dateFormatee}" tabindex="0"><div role="list"></div></div>`;
457            } else {
458              data["dates"].forEach((date, index) => {
459                let activeFilterDate = date == data["date"] ? "active" : "";
460
461                let active = date == data["_date"] ? "show active" : "";
462                let url = new URL(window.location.href);
463                let params = new URLSearchParams(url.search);
464                data["date"] != "9999" && params.set("date", data["date"]);
465                url.search = params.toString();
466                window.history.pushState({}, "", url.toString());
467
468                if (navDates == "") {
469                  navDates += `<li class="nav-item" role="presentation">
470                                <button ${data["date"] == 9999 ? "tabindex='-1'" : ""
471                    } class="nav-link ${data["date"] == 9999 ? "active" : ""
472                    } dates" id="tab-9999" data-bs-toggle="tab" data-bs-target="#tab-pane-${index}" type="button" role="tab" aria-controls="tab-pane-${index}" aria-selected="true" data-date="9999">${translation_object.alldates
473                    }</button>
474                              </li>`;
475
476                  tabByDate += `<div class="tab-pane fade ${data["date"] == 9999 ? "show active" : ""
477                    }" id="tab-pane-${index}" role="tabpanel" aria-labelledby="tab-9999" tabindex="0"><div role="list"></div></div>`;
478                  index++;
479                } else {
480                  index++;
481                }
482
483                navDates += `<li class="nav-item" role="presentation">
484                          <button ${data["date"] == date ? "tabindex='-1'" : ""
485                  } class="nav-link ${activeFilterDate} dates" id="tab-${date}" data-bs-toggle="tab" data-bs-target="#tab-pane-${index}" type="button" role="tab" aria-controls="tab-pane-${index}" aria-selected="false" data-date="${date}">${index < 5 ? date : translation_object.archives
486                  }</button>
487                        </li>`;
488                tabByDate += `<div class="tab-pane fade ${active}" id="tab-pane-${index}" role="tabpanel" aria-labelledby="tab-${date}" tabindex="0"><div role="list"></div></div>`;
489              });
490            }
491
492            $CaAssurancesResults
493              .find("#ca-assurances-nav")
494              .html(navDates)
495              .removeClass("d-none");
496            $CaAssurancesResults.find("#ca-assurances-tabs").html(tabByDate);
497
498            $CaAssurancesResults
499              .find(`div[aria-labelledby="tab-${data["_date"]}"]>div`)
500              .html("");
501            $CaAssurancesResults
502              .find(`div[aria-labelledby="tab-${data["_date"]}"]>div`)
503              .html(data["result"]);
504          } else if (filters_for === "implantation") {
505            const nav = `<li class="nav-item" role="presentation">
506          <button class="nav-link ${viewSelected == "list" && "active"
507              } list-map" id="tab-list" data-bs-toggle="tab" data-bs-target="#tab-pane-0" type="button" role="tab" aria-controls="tab-pane-0" aria-selected="true" data-view="list">Liste</button>
508          </li>
509          <li class="nav-item" role="presentation">
510          <button class="nav-link ${viewSelected == "map" && "active"
511              } list-map" id="tab-map" data-bs-toggle="tab" data-bs-target="#tab-pane-1" type="button" role="tab" aria-controls="tab-pane-1" aria-selected="false" data-view="map">Carte</button>
512          </li>`;
513            const tabs = `<div class="tab-pane fade ${viewSelected == "list" && "show active"
514              }" id="tab-pane-0" role="tabpanel" aria-labelledby="tab-list" tabindex="0"><div></div></div>
515          <div class="tab-pane fade ${viewSelected == "map" && "show active"
516              }" id="tab-pane-1" role="tabpanel" aria-labelledby="tab-map" tabindex="0">
517                                <div id="mapid"></div>
518                            </div>`;
519            $CaAssurancesResults
520              .find("#ca-assurances-nav")
521              .html(nav)
522              .removeClass("d-none")
523              .addClass("toggle");
524            $CaAssurancesResults.find("#ca-assurances-tabs").html(tabs);
525            $CaAssurancesResults
526              .find(`div[aria-labelledby="tab-list"]>div`)
527              .html("");
528            $CaAssurancesResults
529              .find(`div[aria-labelledby="tab-list"]>div`)
530              .html(data["result"]);
531            mapData = data["map"];
532
533            if (viewSelected == "map") {
534              const map = L.map("mapid");
535              let markers = [];
536              L.tileLayer(
537                "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
538                {
539                  maxZoom: 16,
540                }
541              ).addTo(map);
542              mapData.forEach(function (mapItem) {
543                mapItem.markers.forEach(function (marker) {
544                  let newMarker = L.marker([marker.lat, marker.lng])
545                    .addTo(map)
546                    .bindPopup(marker.label);
547                  markers.push(newMarker);
548                });
549              });
550              const group = new L.featureGroup(markers);
551              map.fitBounds(group.getBounds().pad(0.1));
552            }
553          } else {
554            const tabs = `<div class="tab-pane active"><div role="list"></div></div>`;
555            $CaAssurancesResults.find("#ca-assurances-tabs").html(tabs);
556            $CaAssurancesResults.find(`.tab-pane>div`).html("");
557            $CaAssurancesResults.find(`.tab-pane>div`).html(data["result"]);
558
559            //vérifie si compagnie est en paramètre et donc affiché les filtres au chargement de la page
560            if (compagnie) {
561              $caAssurancesFilters.addClass("d-block");
562              if (screen.width < 650) {
563                $ListGouvernance
564                  .find(".ca-assurances-compagnie-governance")
565                  .addClass("d-none");
566                // $btnMoreFilters.addClass("d-block");
567              }
568            }
569          }
570
571          $SearchParams.find("#number_posts").html(data["number_posts"]);
572          $SearchParams
573            .find("p")
574            .html(
575              data["number_posts"] > 1
576                ? translation_object.results
577                : translation_object.result
578            );
579
580          //-------------------------------------------------------------
581
582          loopPagination = () => {
583            const $paginationLinks = $("body").find(".pagination a");
584            $paginationLinks.on("click", function (event) {
585              event.preventDefault();
586              const page =
587                $(this)
588                  .attr("href")
589                  .match(/\/page\/(\d+)\/?/) != undefined
590                  ? $(this)
591                    .attr("href")
592                    .match(/\/page\/(\d+)\/?/)[1]
593                  : 1;
594              RequestAjax(
595                {
596                  action: "dataFilters",
597                  filters_for,
598                  filters,
599                  dateSelected: aff_filters_dates ? dateSelected : undefined,
600                  s: filters_for == "search" ? s : undefined,
601                  page,
602                  _rootUrl,
603                  lang: $("html").attr("lang").split("-")[0],
604                },
605                (data) => {
606                  if (data["_date"]) {
607                    const element =
608                      $CaAssurancesResults.find(".tab-pane.active");
609                    $CaAssurancesResults.find(`.tab-pane>div`).html("");
610                    $(element).find("div").html(data["result"]); //pourquoi c'était commenté ?
611                    $SearchParams
612                      .find("#number_posts")
613                      .html(data["number_posts"]);
614                    $SearchParams
615                      .find("p")
616                      .html(
617                        data["number_posts"] > 1
618                          ? translation_object.results
619                          : translation_object.result
620                      );
621                    loopPagination();
622                  } else {
623                    const tabByDate = `<div class="tab-pane active"><div></div></div>`;
624                    $CaAssurancesResults
625                      .find("#ca-assurances-tabs")
626                      .html(tabByDate);
627                    $CaAssurancesResults.find(`.tab-pane>div`).html("");
628                    $CaAssurancesResults
629                      .find(`.tab-pane>div`)
630                      .html(data["result"]);
631                    loopPagination();
632                  }
633                }
634              );
635            });
636          };
637
638          //-------------------------------------------------------------
639
640          const tabElDate = $CaAssurancesResults.find(
641            'button[data-bs-toggle="tab"].dates'
642          );
643          const tabElListMap = $CaAssurancesResults.find(
644            'button[data-bs-toggle="tab"].list-map'
645          );
646
647          tabElDate.on("shown.bs.tab", function (event) {
648            const elementID = $(event.target).data("bs-target");
649            dateSelected = $(event.target).data("date");
650            //Accessibilité 
651            $(event.target).parents("#ca-assurances-nav").find(".nav-link").attr("tabindex", "0");
652            $(event.target).attr("tabindex", "-1");
653
654            _rootUrl = SyncUrl({ dateSelected });
655
656            RequestAjax(
657              {
658                action: "dataFilters",
659                filters_for,
660                filters,
661                dateSelected: aff_filters_dates ? dateSelected : undefined,
662                _rootUrl,
663                lang: $("html").attr("lang").split("-")[0],
664              },
665              (data) => {
666                $(elementID).find("div").html("");
667                $(elementID).find("div").html(data["result"]);
668                $SearchParams
669                  .removeClass("d-none")
670                  .find("#number_posts")
671                  .html(data["number_posts"]);
672                $SearchParams
673                  .find("p")
674                  .html(
675                    data["number_posts"] > 1
676                      ? translation_object.results
677                      : translation_object.result
678                  );
679                loopPagination();
680              }
681            );
682          });
683
684          tabElListMap.on("shown.bs.tab", function (event) {
685            const elementID = $(event.target).data("bs-target");
686            const viewSelected = $(event.target).data("view");
687
688            _rootUrl = SyncUrl({ dateSelected });
689
690            if (
691              viewSelected == "map" &&
692              !$("#mapid").hasClass("leaflet-container")
693            ) {
694              const map = L.map("mapid");
695              let markers = [];
696              L.tileLayer(
697                "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
698                {
699                  maxZoom: 19,
700                }
701              ).addTo(map);
702              mapData.forEach(function (mapItem) {
703                mapItem.markers.forEach(function (marker) {
704                  let newMarker = L.marker([marker.lat, marker.lng])
705                    .addTo(map)
706                    .bindPopup(marker.label);
707                  markers.push(newMarker);
708                });
709              });
710              const group = new L.featureGroup(markers);
711              map.fitBounds(group.getBounds().pad(0.1));
712            }
713          });
714
715          loopPagination();
716        }
717      );
718    };
719
720    const CheckFilters = () => {
721      $GroupFilters.each((index, element) => {
722        const taxonomie = $(element).data("taxonomie");
723        const terms = $(element)
724          .find("input:checked")
725          .map((_, checkbox) => $(checkbox).val())
726          .get();
727        filters[taxonomie] = terms;
728      });
729    };
730
731    $GroupFilters.find("input").on("click", function () {
732      dateSelected = 9999;
733      $(".accordion-item").each(function () {
734        let parrentTaxons = false;
735        $(this)
736          .find("input.child[type='checkbox']")
737          .each(function () {
738            if ($(this).is(":checked")) {
739              parrentTaxons = true;
740            }
741          });
742
743        if (parrentTaxons) {
744          $($(this).closest(".accordion-item")[0])
745            .find(".accordion-button")
746            .addClass("checked");
747        } else {
748          $($(this).closest(".accordion-item")[0])
749            .find(".accordion-button")
750            .removeClass("checked");
751        }
752      });
753
754      const urlParams = new URLSearchParams(window.location.search);
755      compagnie = urlParams.get("compagnie")
756        ? urlParams.get("compagnie")
757        : undefined;
758      viewSelected = urlParams.get("view") ? urlParams.get("view") : "list";
759      dateSelected = urlParams.get("date") ? urlParams.get("date") : 9999;
760      positionGouvernanceSelected = compagnie;
761      CheckFilters();
762      _rootUrl = SyncUrl({ s, compagnie, viewSelected, dateSelected });
763      CaAssurancesFilters(filters);
764    });
765
766    $GroupFilters.find("input").keypress(function (event) {
767      if (event.which == 13) {
768        $(this).prop("checked", !$(this).prop("checked"));
769        dateSelected = 9999;
770        $(".accordion-item").each(function () {
771          let parrentTaxons = false;
772          $(this)
773            .find("input.child[type='checkbox']")
774            .each(function () {
775              if ($(this).is(":checked")) {
776                parrentTaxons = true;
777              }
778            });
779
780          if (parrentTaxons) {
781            $($(this).closest(".accordion-item")[0])
782              .find(".accordion-button")
783              .addClass("checked");
784          } else {
785            $($(this).closest(".accordion-item")[0])
786              .find(".accordion-button")
787              .removeClass("checked");
788          }
789        });
790        const urlParams = new URLSearchParams(window.location.search);
791        let compagnie = urlParams.get("compagnie")
792          ? urlParams.get("compagnie")
793          : undefined;
794        let viewSelected = urlParams.get("view")
795          ? urlParams.get("view")
796          : "list";
797        positionGouvernanceSelected = compagnie;
798        CheckFilters();
799        _rootUrl = SyncUrl({ s, compagnie, viewSelected });
800        CaAssurancesFilters(filters);
801      }
802    });
803
804    $("#reset").on("click", (e) => {
805      // $("#reset").toggleClass("d-none");
806      // $("#set").toggleClass("d-none");
807      $GroupFilters
808        .find("input")
809        .prop("checked", false)
810        .parents(".accordion-collapse")
811        .collapse("hide");
812      $GroupFilters.find(".accordion-button").removeClass("checked");
813      dateSelected = 9999;
814      viewSelected = "list";
815      const urlParams = new URLSearchParams(window.location.search);
816      let compagnie = urlParams.get("compagnie")
817        ? urlParams.get("compagnie")
818        : undefined;
819      positionGouvernanceSelected = compagnie;
820      _rootUrl = SyncUrl({ s, compagnie });
821      CaAssurancesFilters();
822      $link = $(".link-multilingual").attr("href");
823      $link = $link.split("?");
824      $(".link-multilingual").attr("href", $link[0]);
825    });
826
827    $("#set").on("click", (e) => {
828      // $("#set").toggleClass("d-none");
829      // $("#reset").toggleClass("d-none");
830      $GroupFilters
831        .find("input")
832        .prop("checked", true)
833        .parents(".accordion-collapse")
834        .collapse("show");
835      $GroupFilters.find(".accordion-button").addClass("checked");
836      dateSelected = 9999;
837      viewSelected = "list";
838      const urlParams = new URLSearchParams(window.location.search);
839      let compagnie = urlParams.get("compagnie")
840        ? urlParams.get("compagnie")
841        : undefined;
842      positionGouvernanceSelected = compagnie;
843      CheckFilters();
844      _rootUrl = SyncUrl({ s, compagnie });
845      CaAssurancesFilters(filters);
846    });
847
848    $GroupFilters.each(function () {
849      const filter = $(this);
850      const taxonomy = filter.data("taxonomie");
851      if (urlParams.has(taxonomy)) {
852        const values = urlParams.get(taxonomy).split(",");
853        values.forEach(function (value) {
854          checked = true;
855          filter
856            .find('input[id="' + value + '"]')
857            .prop("checked", true)
858            .closest(".accordion-collapse")
859            .collapse("show");
860        });
861      }
862    });
863    $(".accordion-item.child").each(function () {
864      let parrentTaxons = false;
865      $(this)
866        .find("input.child[type='checkbox']")
867        .each(function () {
868          if ($(this).is(":checked")) {
869            parrentTaxons = true;
870          }
871        });
872
873      if (parrentTaxons) {
874        $($(this).closest(".accordion-item")[0])
875          .closest(".accordion-collapse")
876          .collapse("show")
877          .find(".accordion-button")
878          .addClass("checked");
879      } else {
880        $($(this).closest(".accordion-item")[0])
881          .find(".accordion-button")
882          .removeClass("checked");
883      }
884    });
885
886    if (checked) {
887      CheckFilters();
888    }
889    CaAssurancesFilters(filters);
890
891    const $btnBack = $(".back");
892    if ($btnMoreFilters.length) {
893      $btnMoreFilters.on("click", (e) => {
894        e.preventDefault();
895        $(".ca-assurances-params").toggleClass("d-block");
896        $("body").toggleClass("overflow-hidden");
897      });
898
899      $btnBack.on("click", (e) => {
900        e.preventDefault();
901        $(".ca-assurances-params").toggleClass("d-block");
902        $("body").toggleClass("overflow-hidden");
903      });
904    }
905  }
906
907  //----------- START BLOC OFFRES ------------------------------
908  const $ListOffres = $(".bloc-ca-assurances-list_offers");
909  if ($ListOffres.length) {
910    $ListOffres.find(".compagnie-offers").on("click", function () {
911      const selected = $(this).hasClass("selected");
912      const position = $(this).data("position");
913
914      if (selected) {
915        $ListOffres.find(".compagnie-offers").removeClass("selected");
916        $(".other-distributors").addClass("d-none");
917      } else {
918        $ListOffres.find(".compagnie-offers").removeClass("selected");
919        $(this).toggleClass("selected");
920        $(".other-distributors").addClass("d-none");
921        $(".other-distributors[data-position='" + position + "']").removeClass(
922          "d-none"
923        );
924      }
925    });
926  }
927
928  //------------For page gouvernance-----------------------------
929  const $ListGouvernance = $("section[data-filters_for='gouvernance']");
930  if ($ListGouvernance.length) {
931    $ListGouvernance.on(
932      "click",
933      ".ca-assurances-compagnie-governance",
934      function () {
935        const selected = $(this).hasClass("selected");
936        const position = $(this).data("position");
937        // const taxons = $(this).data("taxons");
938        const $caAssurancesFilters = $(".ca-assurances-filters");
939        const $OtherGovernances = $(
940          ".other-governances[data-position='" + position + "']"
941        );
942        const numberGoverances = $OtherGovernances.find("> div").length;
943
944        if (selected) {
945          $ListGouvernance
946            .find(".ca-assurances-compagnie-governance")
947            .removeClass("selected");
948          // $caAssurancesFilters.removeClass("d-block");
949          positionGouvernanceSelected = undefined;
950          _rootUrl = SyncUrl({ compagnie: null });
951
952          $(".other-governances").addClass("d-none");
953          if (numberGoverances > 3) {
954            $OtherGovernances.addClass("justify-content-between");
955          }
956
957          if (screen.width < 650) {
958            $ListGouvernance
959              .find(".ca-assurances-compagnie-governance")
960              .removeClass("d-none");
961            $(".return-compagnie").prop("disabled", false);
962          } else {
963            $(".return-compagnie").prop("disabled", true);
964          }
965        } else {
966          $ListGouvernance
967            .find(".ca-assurances-compagnie-governance")
968            .removeClass("selected");
969          $caAssurancesFilters.addClass("d-block");
970
971          $(this).toggleClass("selected");
972          positionGouvernanceSelected = $(this).data("position");
973          compagnie = $(this).attr("id");
974          _rootUrl = SyncUrl({ compagnie });
975
976          $(".other-governances").addClass("d-none");
977          $OtherGovernances.removeClass("d-none");
978          if (numberGoverances > 3) {
979            $OtherGovernances.addClass("justify-content-between");
980          }
981
982          if (screen.width < 650) {
983            $ListGouvernance
984              .find(".ca-assurances-compagnie-governance")
985              .addClass("d-none");
986            $(".return-compagnie").prop("disabled", false);
987            $btnMoreFilters.addClass("d-block");
988            $("html, body").scrollTop(0);
989          } else {
990            $(".return-compagnie").prop("disabled", true);
991          }
992        }
993      }
994    );
995
996    $ListGouvernance.on("click", ".return-compagnie", function () {
997      if (screen.width < 650) {
998        const $caAssurancesFilters = $(".ca-assurances-filters");
999        $ListGouvernance
1000          .find(".ca-assurances-compagnie-governance")
1001          .removeClass("selected");
1002        $caAssurancesFilters.removeClass("d-block");
1003        $btnMoreFilters.removeClass("d-block");
1004        positionGouvernanceSelected = undefined;
1005        _rootUrl = SyncUrl({ compagnie: null });
1006
1007        $(".other-governances").addClass("d-none");
1008
1009        $ListGouvernance
1010          .find(".ca-assurances-compagnie-governance")
1011          .removeClass("d-none");
1012      }
1013    });
1014  }
1015
1016  //---------------------------------------------------------------
1017  const $searchform = $(".searchform");
1018  if ($searchform.length) {
1019    $searchform.on("click", ".searchreset", function (event) {
1020      event.preventDefault();
1021      $searchform.find("#s").val("");
1022      $searchform.find(".searchreset").hide();
1023      _rootUrl = SyncUrl({ compagnie });
1024    });
1025
1026    if ($("#s").val() !== "") {
1027      $(".searchreset").show();
1028    } else {
1029      $(".searchreset").hide();
1030    }
1031
1032    // Affichez les boutons lorsque le champ de texte est rempli
1033    $("#s").on("input", function () {
1034      if ($(this).val() !== "") {
1035        $(".searchreset").show();
1036      } else {
1037        $(".searchreset").hide();
1038      }
1039    });
1040  }
1041
1042  const target = window.location.hash;
1043  if (target) {
1044    $(window).on("load", function () {
1045      $("html, body").animate(
1046        {
1047          scrollTop: $(target).offset().top - 90,
1048        },
1049        100
1050      );
1051    });
1052  } else {
1053    if (history.scrollRestoration) {
1054      history.scrollRestoration = "manual";
1055    } else {
1056      $(document).scrollTop(0);
1057    }
1058  }
1059
1060  $(window).scroll(function () {
1061    if ($(this).scrollTop() > 100) {
1062      $("#backToTop").fadeIn();
1063    } else {
1064      $("#backToTop").fadeOut();
1065    }
1066  });
1067  $("#backToTop").on("click", () => {
1068    $("html, body").animate({ scrollTop: 0 }, "slow");
1069  });
1070
1071  const $accordionPeriods = $(".ca-assurances-accordion-periods");
1072  $("main").on("click", 'a[href^="#"]', function (e) {
1073    const target = $(this).attr("href");
1074    $("body").removeClass("overflow-hidden");
1075
1076    if (target != "#") {
1077      let Height = 0;
1078      if ($(this).closest(".bloc-ca-assurances-list_stories").length) {
1079        e.preventDefault();
1080        if ($accordionPeriods.offset().top - $(window).scrollTop() != 0) {
1081          Height = $(".accordion-body").outerHeight();
1082        }
1083        $("html, body").animate(
1084          {
1085            scrollTop: $(target).offset().top - 90 - Height,
1086          },
1087          100
1088        );
1089      } else {
1090        $("html, body").animate(
1091          {
1092            scrollTop: $(target).offset().top - 90,
1093          },
1094          100
1095        );
1096      }
1097    }
1098  });
1099
1100  //Page Stories
1101
1102  if ($accordionPeriods.length) {
1103    if ($accordionPeriods.offset().top - $(window).scrollTop() === 0) {
1104      $("#collapseStories").collapse("hide");
1105      $accordionPeriods.addClass("sticky");
1106    } else {
1107      $accordionPeriods.removeClass("sticky");
1108      $("#collapseStories").collapse("show");
1109    }
1110
1111    $accordionPeriods.find("button").on("click", function () {
1112      $accordionPeriods.toggleClass("collapsedOnClick");
1113      if ($accordionPeriods.offset().top - $(window).scrollTop() === 0) {
1114        $("body").toggleClass("overflow-hidden");
1115      }
1116    });
1117
1118    $(window).scroll(function () {
1119      if ($accordionPeriods.offset().top - $(window).scrollTop() === 0) {
1120        $("#collapseStories").collapse("hide");
1121        $accordionPeriods.addClass("sticky");
1122      } else {
1123        $accordionPeriods.removeClass("sticky");
1124        if (
1125          $accordionPeriods.offset().top - $(window).scrollTop() > 64 &&
1126          !$accordionPeriods.hasClass("collapsedOnClick")
1127        ) {
1128          $("#collapseStories").collapse("show");
1129        }
1130      }
1131    });
1132  }
1133
1134  $(".language-switcher .menu-item-has-children>a").on(
1135    "click",
1136    function (event) {
1137      event.preventDefault();
1138      $(this).parent().find(".sub-menu").toggle();
1139    }
1140  );
1141
1142  //lien privacy center
1143  $A = $("<a>");
1144  $A.attr("href", "#");
1145  $A.click(function (event) {
1146    event.preventDefault();
1147    tC.privacyCenter.showPrivacyCenter();
1148  });
1149  $("#footer-navigation-secondaire li.tagco_privacy_center span").wrap($A);
1150
1151  $(document).on(
1152    "click",
1153    ".ca-assurances-publication .links a",
1154    function (event) {
1155      $CurrentModal = $(event.currentTarget).attr("data-bs-target");
1156      if ($(event.currentTarget).attr("class").includes("icon-download")) {
1157        $($CurrentModal).find(".piano-download").removeClass("d-none");
1158        $($CurrentModal).find(".see-more").addClass("d-none");
1159      } else {
1160        $($CurrentModal).find(".see-more").removeClass("d-none");
1161        $($CurrentModal).find(".piano-download").addClass("d-none");
1162      }
1163    }
1164  );
1165
1166  $(document).on(
1167    "click",
1168    "div.modal .modal-footer .piano-download",
1169    function (event) {
1170      $CurrentModal = $(event.currentTarget).closest(".modal");
1171      $CurrentModal.modal("hide");
1172    }
1173  );
1174
1175
1176
1177  //hit piano sur clique publication
1178  $(document).on("click", ".piano-download", function (event) {
1179    tC.event.click_download(this, {
1180      name: $(event.currentTarget).data("publication-title"),
1181    });
1182  });
1183
1184  const elementTranslated = {
1185    "fr-FR": {},
1186    "en-US": {
1187      Compagnies: translation_object.compagnies,
1188      Thèmes: translation_object.themes,
1189      "Type d'événements": translation_object.type_evenements,
1190      "Types de publications": translation_object.type_publications,
1191      Instances: translation_object.instances,
1192      "Zones Géographiques": translation_object.zones_geographiques,
1193      "Cadres dirigeants": translation_object.cadres_dirigeants,
1194    },
1195  };
1196
1197  //Pour les classes forTranslate
1198  $(".forTranslate").each(function () {
1199    const textForTranslate = $(this).text();
1200    const textTranslated =
1201      elementTranslated[$("html").attr("lang")][textForTranslate];
1202
1203    if (textTranslated != undefined) {
1204      $(this).text(textTranslated);
1205    }
1206
1207    $(this).removeClass("d-none");
1208  });
1209
1210  const $personalisedContact = $(".bloc-ca-assurances-personalised_contact");
1211  if ($personalisedContact.length) {
1212    const $personalisedContactTabs = $personalisedContact.find(".tabs");
1213    const $personalisedContactSteps = $personalisedContact.find(".steps");
1214    let startID = $personalisedContactTabs.find(".active").attr("id");
1215    let road = [];
1216
1217    const CreateForm = (id) => {
1218      $personalisedContactTabs.find(">div").removeClass("active");
1219      const $personalisedContactResponses = $("<div>").addClass("responses").attr("role", "list");
1220      const $personalisedContactTab = $personalisedContactTabs.find(
1221        `>div#${id}`
1222      ).length
1223        ? $personalisedContactTabs.find(`>div#${id}`).addClass("active")
1224        : $("<div>").attr("id", id).addClass("active");
1225      let $personalisedContactStep = "";
1226
1227      road.push(id);
1228
1229      if (contactTree[id] != undefined) {
1230        const $personalisedContactQuestion = $("<h2>").addClass("question");
1231
1232        $personalisedContactTab.append(
1233          $personalisedContactQuestion.html(contactTree[id]["question"])
1234        );
1235
1236        const contactTreeSorted = Object.values(contactTree[id].responses);
1237        contactTreeSorted.sort((a, b) => {
1238          if (a.order === "0" && b.order !== "0") {
1239            return 1;
1240          } else if (a.order !== "0" && b.order === "0") {
1241            return -1;
1242          } else {
1243            return parseInt(a.order) - parseInt(b.order);
1244          }
1245        });
1246
1247        contactTreeSorted.forEach(({ id, label, image }) => {
1248          const $personalisedContactResponse = $("<button>")
1249            .attr("type", "button")
1250            .addClass("response")
1251            .attr("btn-id", id)
1252            .attr("role", "listitem");
1253
1254          if (image != null) {
1255            $personalisedContactTab.append(
1256              $personalisedContactResponses.append(
1257                $personalisedContactResponse
1258                  .addClass("withImg")
1259                  .append($("<div>").html(label))
1260                  .prepend(
1261                    $("<div>").css(
1262                      "background-image",
1263                      `url(${image.sizes.medium}`
1264                    )
1265                  )
1266              )
1267            );
1268          } else {
1269            $personalisedContactTab.append(
1270              $personalisedContactResponses.append(
1271                $personalisedContactResponse.append($("<div>").html(label))
1272              )
1273            );
1274          }
1275        });
1276
1277        $personalisedContactStep = $("<div>")
1278          .addClass("step")
1279          .attr("id", `step-${road.length}`)
1280          .append($("<div>").addClass("stepNumber").html(road.length))
1281          .append(
1282            $("<div>")
1283              .addClass("allInfo")
1284              .append(
1285                $("<div>").addClass("stepLabel").html(contactTree[id]["etape"])
1286              )
1287              .append($("<div>").addClass("stepResponse").html(""))
1288          );
1289
1290        $personalisedContactSteps.append($personalisedContactStep);
1291      } else {
1292        //affiche la fin du parcours soit le contenu d'une page de contact personnalisé
1293        $personalisedContactTab.html(
1294          contactTree[road[road.length - 2]].responses[id]["contact"]
1295        );
1296
1297        const $experienceEvaluation = $(".experience-evaluation");
1298        if ($experienceEvaluation.length > 0) {
1299          $experienceEvaluation.removeClass("d-none");
1300        }
1301      }
1302      $personalisedContactTabs.append($personalisedContactTab);
1303      if ($personalisedContactTab.find(".wpcf7-form").length > 0) {
1304        wpcf7.init(document.querySelector(".wpcf7-form"));
1305
1306        const $caseACocher = $personalisedContactTab.find("#dp");
1307        if ($caseACocher.length > 0) {
1308          const $submitBtn = $personalisedContactTab.find(".wpcf7-form-control.wpcf7-submit");
1309          const $OTPBtn = $personalisedContactTab.find("#send-otp");
1310          $submitBtn.prop("disabled", true);
1311          $OTPBtn.prop("disabled", true);
1312          $('body').on("click", "#dp", function () {
1313            if ($(this).is(":checked")) {
1314              $submitBtn.prop("disabled", false);
1315              $OTPBtn.prop("disabled", false);
1316            } else {
1317              $submitBtn.prop("disabled", true);
1318              $OTPBtn.prop("disabled", true);
1319            }
1320          });
1321        }
1322
1323        setTimeout(() => {
1324          const wpcf7Elm = document.querySelector(".wpcf7");
1325          if (wpcf7Elm) {
1326            wpcf7Elm.addEventListener(
1327              "wpcf7mailsent",
1328              function () {
1329                const $output = $personalisedContactTab.find(".wpcf7-response-output");
1330                $output.addClass("validate").attr("aria-hidden", "false");
1331                const $submitBtn = $personalisedContactTab.find(".wpcf7-form-control.wpcf7-submit");
1332                $submitBtn.blur();
1333              },
1334              false
1335            );
1336
1337            wpcf7Elm.addEventListener(
1338              "wpcf7invalid",
1339              function (event) {
1340                const invalidFields = event.detail.apiResponse.invalid_fields;
1341                if(invalidFields.length == 1 && invalidFields[0].field == "otp-code") {
1342                  JBSetOpt(wpcf7Elm);
1343                }
1344              },
1345              false
1346            );
1347          }
1348        }, 2000);
1349      }
1350    }; 
1351
1352    CreateForm(startID);
1353
1354    const getPianoLibelleClickPersonalisedContact = (road, ajout) => {
1355      let pianoLibelleClickPersonalisedContact = "";
1356
1357      road.forEach((id) => {
1358        if (contactTree[id] != undefined) {
1359          pianoLibelleClickPersonalisedContact +=
1360            pianoLibelleClickPersonalisedContact ? " > " : "";
1361          pianoLibelleClickPersonalisedContact += contactTree[id].label;
1362        } else {
1363          pianoLibelleClickPersonalisedContact +=
1364            pianoLibelleClickPersonalisedContact ? " => " : "";
1365          pianoLibelleClickPersonalisedContact +=
1366            contactTree[road[road.length - 2]].responses[id]["contact_title"];
1367        }
1368      });
1369
1370      if (ajout) {
1371        pianoLibelleClickPersonalisedContact +=
1372          pianoLibelleClickPersonalisedContact ? " > " : "";
1373
1374        pianoLibelleClickPersonalisedContact += ajout;
1375      }
1376      pianoLibelleClickPersonalisedContact =
1377        "contact-perso > " + pianoLibelleClickPersonalisedContact;
1378      return pianoLibelleClickPersonalisedContact;
1379    };
1380
1381    $personalisedContact.on("click", ".responses .response", function () {
1382      $(`#step-${road.length}`)
1383        .addClass("done")
1384        .find(`.stepResponse`)
1385        .html($(this).find("div:last-child").html());
1386
1387      CreateForm($(this).attr("btn-id"));
1388
1389      tC.event.click_download(this, {
1390        name: getPianoLibelleClickPersonalisedContact(road),
1391      });
1392
1393
1394
1395      $(".actions").removeClass("d-none");
1396    });
1397
1398    $("#back").on("click", function () {
1399      if (road.length > 1) {
1400        $personalisedContactTabs.find(">div").removeClass("active");
1401        $personalisedContactTabs
1402          .find(`>div#${road[road.length - 2]}`)
1403          .addClass("active");
1404        $personalisedContactTabs.find(`>div#${road[road.length - 1]}`).remove();
1405        $personalisedContactSteps.find(`>div#step-${road.length}`).remove();
1406        $personalisedContactSteps
1407          .find(`>div#step-${road.length - 1}`)
1408          .removeClass("done")
1409          .find(`.stepResponse`)
1410          .html("");
1411
1412        tC.event.click_download(this, {
1413          name: getPianoLibelleClickPersonalisedContact(
1414            road,
1415            translation_object.retour
1416          ),
1417        });
1418
1419        road.pop();
1420        road.length == 1 && $(this).closest(".actions").addClass("d-none");
1421        const $experienceEvaluation = $(".experience-evaluation");
1422        $experienceEvaluation
1423          .addClass("d-none")
1424          .find(".message")
1425          .addClass("d-none");
1426        $experienceEvaluation.find("a").removeClass("selected d-none");
1427        $(".wpcf7-response-output").removeClass("validate");
1428      }
1429    });
1430
1431    $("#restart").on("click", function () {
1432      if (road.length > 1) {
1433        $personalisedContactTabs.find(">div").removeClass("active");
1434        $personalisedContactTabs.find(`>div#${road[0]}`).addClass("active");
1435        $personalisedContactTabs.find(`>div:not(#${road[0]})`).remove();
1436        $personalisedContactSteps.find(`>div:not(#step-1)`).remove();
1437        $personalisedContactSteps
1438          .find(`>div#step-1`)
1439          .removeClass("done")
1440          .find(`.stepResponse`)
1441          .html("");
1442
1443        tC.event.click_download(this, {
1444          name: getPianoLibelleClickPersonalisedContact(
1445            road,
1446            translation_object.recommencer
1447          ),
1448        });
1449
1450        road.length = 1;
1451        $(this).closest(".actions").addClass("d-none");
1452        const $experienceEvaluation = $(".experience-evaluation");
1453        $experienceEvaluation
1454          .addClass("d-none") 
1455          .find(".message")
1456          .addClass("d-none");
1457        $experienceEvaluation.find("a").removeClass("selected d-none");
1458        $(".wpcf7-response-output").removeClass("validate");
1459      }
1460    });
1461
1462    $("#goodBtn").on("click", function () {
1463      $(this).closest(".actions").find(".message").removeClass("d-none");
1464      $(this).closest(".actions").find("a").addClass("d-none");
1465    });
1466
1467    $("#badBtn").on("click", function () {
1468      $(this).addClass("selected");
1469    });
1470
1471    const wpcf7Elm = document.querySelector(".wpcf7");
1472
1473    wpcf7Elm.addEventListener(
1474      "wpcf7mailsent",
1475      function (event) {
1476        wpcf7.init(document.querySelector(".wpcf7-form"));
1477        $("#CAAModalExperience").modal("hide");
1478        const $experienceEvaluation = $(".experience-evaluation");
1479        $experienceEvaluation.find(".actions .message").removeClass("d-none");
1480        $experienceEvaluation.find(".actions a").addClass("d-none");
1481      },
1482      false
1483    );
1484  }
1485}); // end document

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.