PageSourceSearch

https://www.jobmeeting.it/wp-content/themes/jobmeeting-theme/js/custom.js?ver=20240918

js jobmeeting.it collected 2026-09-24 19:49:34 UTC 15,951 bytes, 326 lines download raw bytes

1// to enable the enqueue of this optional JS file, 
2// you'll have to uncomment a row in the functions.php file
3// just read the comments in there mate
4
5document.addEventListener('DOMContentLoaded', function () {
6    jQuery(function ($) {
7
8        // SLIDER SCROLL ORIZZONTALE
9        $(document).ready(function () {
10            $("div[draggable='true']").not(".partial-view").each(function (index, item) {
11                bindHorizontalSlider({ $slider: $(item) });
12            });
13
14            centerSlider();
15            setScrollBgPosition();
16
17            $(".search-opener").on("click", function () {
18                $(".search-wrapper").addClass("open");
19                $(".search-wrapper input").focus();
20                $(".search-wrapper .bg-white-to-transparent").on("click", function () {
21                    $(".search-wrapper").removeClass("open");
22                    $(".search-wrapper .bg-white-to-transparent").off("click");
23                });
24            })
25
26            $("a.switch-photo").on("mouseover", function () {
27                $target = $($(this).data("target"));
28                $nextImg = $target.find("img.switch-hidden");
29                $prevImg = $target.find("img").not($nextImg);
30                $nextImg.removeClass("switch-hidden").addClass("switch-visible");
31                $prevImg.removeClass("switch-visible").addClass("switch-hidden");
32            }).on("mouseout", function () {
33                $target = $($(this).data("target"));
34                $prevImg = $target.find("img.switch-hidden");
35                $nextImg = $target.find("img").not($prevImg);
36                $prevImg.removeClass("switch-hidden").addClass("switch-visible");
37                $nextImg.removeClass("switch-visible").addClass("switch-hidden");
38            });
39        });
40
41        var centerTimeout;
42        $(window).on("resize", function () {
43            clearTimeout(centerTimeout);
44            centerTimeout = setTimeout(function () {
45                centerSlider();
46            }, 500);
47        });
48
49        function centerSlider() {
50            $(".centered-slider").each(function () {
51                padding = ($(window).width() - $(".container").width()) / 2;
52                $(this).css("padding", "0 calc(" + padding + "px - var(--bs-gutter-x) * .5)");
53            });
54        }
55
56        function bindHorizontalSlider({
57            navigateButtonClass = "navigate-slider",
58            leftButtonClass = "navigate-left",
59            rightButtonClass = "navigate-right",
60            dotButtonClass = "navigate-dots",
61            itemClass = "slider-item",
62            $slider = $("div[draggable='true']"),
63            step = 1 // non utilizzato
64        }) {
65            navigateButtonClass = $slider.data("navigateclass") != undefined ? $slider.data("navigateclass") : navigateButtonClass;
66            var $leftButton = $slider.parent().find("." + navigateButtonClass + " ." + leftButtonClass);
67            var $rightButton = $slider.parent().find("." + navigateButtonClass + " ." + rightButtonClass);
68            var $navigateDotsContainer = $slider.parent().find("." + navigateButtonClass + " ." + dotButtonClass);
69            if ($slider.data("autoslide") != undefined) {
70                time = $slider.data("autoslide");
71                setInterval(function () {
72                    if ($rightButton.hasClass("invisible")) {
73                        $navigateDotsContainer.find("a").eq(0).trigger("click");
74                    } else {
75                        $rightButton.trigger("click");
76                    }
77                }, time);
78            }
79            $slider.parent().on("click", "." + navigateButtonClass + " a", function (e) {
80                e.preventDefault();
81                e.stopPropagation();
82                if ($(this).hasClass("disabled")) return;
83                $target = $($(this).data("target"));
84                if ($target != undefined) {
85                    var left = parseFloat($target.scrollLeft());
86                    var column_width = $target.find("." + itemClass).eq(0).outerWidth();
87                    if ($(this).hasClass(leftButtonClass)) {
88                        $target.animate({ scrollLeft: left - column_width }, 300, function () {
89                            if (parseInt($target.scrollLeft) >= 0) $leftButton.addClass("disabled");
90                            else $leftButton.removeClass("disabled");
91                            findOverflows($slider.find(" ." + itemClass)); // DA COMPLETARE , $slider.find("." + itemClass).index(this));
92                        });
93                    } else if ($(this).hasClass(rightButtonClass)) {
94                        $rightButton.addClass("disabled");
95                        $target.animate({ scrollLeft: left + column_width }, 300, function () {
96                            $rightButton.removeClass("disabled");
97                            findOverflows($slider.find(" ." + itemClass));
98                        });
99                    } else if ($(this).parent().hasClass(dotButtonClass)) {
100                        index = $navigateDotsContainer.find("a").index(this);
101                        $leftButton.addClass("disabled");
102                        $rightButton.addClass("disabled");
103                        $target.animate({ scrollLeft: column_width * index }, 300, function () {
104                            $leftButton.removeClass("disabled");
105                            $rightButton.removeClass("disabled");
106                            findOverflows($slider.find(" ." + itemClass), index);
107                        });
108                    } else {
109                        location.href = e.target.href; // Click su vedi tutti
110                    }
111                }
112            });
113            $(window).on("resize", function () {
114                findOverflows($slider.find(" ." + itemClass));
115            });
116
117            if ($slider != undefined) {
118                let isDown = false;
119                let startX, startY, scrollLeft, scrollTop, startClickX, startClickY;
120                $slider.on("click", (e) => { e.preventDefault(); });
121                setTimeout(function () { findOverflows($slider.find(" ." + itemClass)); }, 100);
122                ['mousedown', 'touchstart'].forEach((event) => {
123                    $slider[0].addEventListener(event, (e) => {
124                        if (e.type == "mousedown") {
125                            e.preventDefault();
126                            e.stopPropagation();
127                        }
128                        isDown = true;
129                        const pageX = e.pageX != undefined ? e.pageX : e.changedTouches[0].pageX; // su Android non esiste e.pageX
130                        const pageY = e.pageY != undefined ? e.pageY : e.changedTouches[0].pageY; // su Android non esiste e.pageY
131                        startClickX = pageX;
132                        startClickY = pageY;
133                        startX = pageX - $slider[0].offsetLeft;
134                        startY = pageX - $slider[0].offsetLeft;
135                        scrollLeft = $slider[0].scrollLeft;
136                        scrollTop = window.scrollY;
137                    });
138                });
139                ['mouseup', 'touchend', 'mouseleave'].forEach((event) => {
140                    $slider[0].addEventListener(event, (e) => {
141                        if (e.type == "mousedown" || e.type == "mouseleave") {
142                            e.preventDefault();
143                            e.stopPropagation();
144                        }
145                        isDown = false;
146                        const pageX = e.pageX != undefined ? e.pageX : e.changedTouches[0].pageX; // su Android non esiste e.pageX
147                        if (pageX == startClickX) {
148                            // se è un click su un link, "propago" manualmente l'evento
149                            anchor = null;
150                            if (e.target.tagName == "A") {
151                                anchor = e.target;
152                            } else {
153                                anchor = $(e.target).parents("a")[0];
154                            }
155                            if (anchor != undefined) {
156                                if ($(anchor).attr("target") == "_blank")
157                                    window.open(anchor.href, "_blank");
158                                else location.href = anchor.href;
159                            }
160                        }
161                        correctPosition($slider, itemClass, scrollLeft);
162                    });
163                });
164
165                var resizeTimeout;
166                $(window).on("resize", function () {
167                    clearTimeout(resizeTimeout);
168                    resizeTimeout = setTimeout(function () {
169                        correctPosition($slider, itemClass, scrollLeft);
170                    }, 100);
171                });
172
173                ['mousemove', 'touchmove'].forEach((event) => {
174                    $slider[0].addEventListener(event, (e) => {
175                        const pageX = e.pageX != undefined ? e.pageX : e.changedTouches[0].pageX; // su Android non esiste e.pageX
176                        const pageY = e.pageY != undefined ? e.pageY : e.changedTouches[0].pageY; // su Android non esiste e.pageY
177                        const x = pageX - $slider[0].offsetLeft;
178                        const walkX = (x - startX);
179                        if (!isDown) return true;
180                        if (Math.abs(walkX) > 30) {
181                            $slider[0].scrollLeft = scrollLeft - walkX;
182                            e.preventDefault();
183                            e.stopPropagation();
184                        }
185                        return true;
186                    });
187                });
188
189            }
190
191            function correctPosition($slider, itemClass, scrollLeft) {
192                // correggo posizione dello scroll orizzontale
193                $item = $slider[0].querySelectorAll("." + itemClass)[0];
194                if ($item != undefined) {
195                    width = $slider[0].querySelectorAll("." + itemClass)[0].offsetWidth;
196                    var positions = scrollLeft > $slider[0].scrollLeft ? Math.floor($slider[0].scrollLeft / width) : Math.ceil($slider[0].scrollLeft / width);
197                    $slider.animate({ scrollLeft: positions * width }, 300, () => {
198                        overflows = findOverflows($slider.find(" ." + itemClass), positions);
199                    });
200                }
201            }
202
203            // trova quanti elementi sono visibili, quanti precedenti e quanti successivi nello slider
204            function findOverflows($items, dotIndex = null) {
205                const documentWidth = document.documentElement.offsetWidth;
206                var prev = 0;
207                var next = 0;
208                var visible = 0;
209                var parentBox = $items[0].parentElement.getBoundingClientRect();
210
211                $items.each(function (index, element) {
212                    const box = element.getBoundingClientRect();
213                    if (box.left < parentBox.left) {
214                        prev++;
215                    } else if (box.right > parentBox.right) {
216                        next++;
217                    } else {
218                        visible++;
219                    }
220                });
221
222                $leftButton.toggleClass("invisible", prev <= 0);
223                $rightButton.toggleClass("invisible", next <= 0);
224                dot = $navigateDotsContainer.find("a")[0];
225                $(dot).removeClass("active");
226                $navigateDotsContainer.html("");
227                for (i = 1; i <= $items.length; i++) {
228                    $navigateDotsContainer.append($(dot).clone());
229                }
230                $navigateDotsContainer.find("a").eq(dotIndex == null ? Math.ceil(prev / visible) : dotIndex).addClass("active");
231
232                return { prev: prev, next: next, visible: visible };
233            }
234        }
235
236        window.addEventListener('scroll', function () {
237            setScrollBgPosition();
238        });
239
240        $(document).ready(function () {
241            $(document).on("click", "a.photo-carousel-open", function (e) {
242                e.preventDefault();
243                $target = $(this).data("target");
244                $($target + " .carousel-item.active").removeClass("active");
245                $($target + " .carousel-item[data-index='" + $(this).data("index") + "']").addClass("active");
246                $(".photo-carousel-wrapper").removeClass("d-none");
247                $(".photo-carousel-wrapper")[0].addEventListener('slide.bs.carousel', event => {
248                    if ($(".carousel-item.active iframe").length > 0)
249                        $(".carousel-item.active iframe")[0].contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}', '*');
250                });
251            });
252
253            $(document).on("click", "a.photo-carousel-close", function (e) {
254                e.preventDefault();
255                if ($(".carousel-item.active iframe").length > 0) {
256                    $(".carousel-item.active iframe")[0].contentWindow.postMessage('{"event":"command","func":"stopVideo","args":""}', '*');
257                }
258                $(".photo-carousel-wrapper").addClass("d-none");
259            });
260        });
261    });
262    function setScrollBgPosition() {
263        jQuery('.mask-background').each(function (index, element) {
264            var position = element.getBoundingClientRect();
265
266            // checking for partial visibility
267            if (position.top < window.innerHeight && position.bottom >= 0) {
268                jQuery(element).css("top", (- (position.top + position.bottom) / 2 / window.innerHeight * 20) + "%");
269            }
270        });
271    }
272
273});
274
275function lazyBackground($view) {
276    lazyBackgrounds = $view.find(".lazy-bg");
277    if ("IntersectionObserver" in window) {
278        let lazyBackgroundObserver = new IntersectionObserver(function (entries, observer) {
279            entries.forEach(function (entry) {
280                if (entry.isIntersecting) {
281                    entry.target.classList.remove("lazy-bg");
282                    lazyBackgroundObserver.unobserve(entry.target);
283                }
284            });
285        });
286
287        lazyBackgrounds.each(function (index, lazyBackground) {
288            lazyBackgroundObserver.observe(lazyBackground);
289        });
290    }
291}
292
293function unsubscribe() {
294    jQuery(".result").attr("class", "result alert alert-info").html("<i class=\"fa-solid fa-cog fa-spin\"></i> Operazione in corso...");
295    newsletter = document.querySelector("#newsletter").checked;
296    commercial = document.querySelector("#commercial").checked;
297    candidateid = document.querySelector("#CANDIDATEID").value;
298    candidateuniqueidentifier = document.querySelector("#CANDIDATEUNIQUEIDENTIFIER").value;
299    buttonSubmit = document.querySelector("#login-form button[type='submit']");
300    buttonSubmit.disabled = true;
301    jQuery.ajax({
302        url: '/wp-json/newsletter/unsubscribe',
303        method: "POST",
304        dataType: "json",
305        beforeSend: function (xhr) {
306            xhr.setRequestHeader('X-WP-Nonce', wpApiSettings.nonce);
307        },
308        data: {
309            candidateid: candidateid,
310            candidateuniqueidentifier: candidateuniqueidentifier,
311            newsletter: newsletter,
312            commercial: commercial
313        },
314        success: function (data) {
315            if (data == "OK")
316                jQuery(".result").attr("class", "result alert alert-success").html("Disiscrizione avvenuta con successo.");
317            else
318                jQuery(".result").attr("class", "result alert alert-warning").html(data);
319            buttonSubmit.disabled = false;
320        },
321        error: function (data) {
322            jQuery(".result").attr("class", "result alert alert-danger").html(JSON.parse(data.responseText).message);
323            buttonSubmit.disabled = false;
324        }
325    });
326}

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.