PageSourceSearch

https://ortobene.net/wp-content/themes/ortobene/js/all.js?ver=20260925090845

js ortobene.net collected 2026-09-25 09:09:18 UTC 69,764 bytes, 1,929 lines download raw bytes

1/*
2========== init
3*/
4
5var body,
6    swup,
7    audioInit = false,
8    audioID = 0,
9    audioObj,
10    audioDuration,
11    audioIsPlaying = false,
12    headerHeight = 0,
13    playerHeight = 0,
14    deltaScroll = 0,
15    responsiveVoice,
16    autocompleteEventAddress,
17    enableSwup = false,
18    siteUrl = 'https://ortobene.net';
19
20document.addEventListener('DOMContentLoaded', function () {
21    body = document.querySelector('body');
22    document.querySelectorAll('[target="_blank"]').forEach((el) => {
23        el.setAttribute('data-no-swup', '');
24    });
25    document.querySelectorAll('.ihc-locker-wrap ~ *').forEach((el) => {
26        el.remove();
27    });
28    /*
29    ========== swup
30    */
31    if (enableSwup) {
32        swup = new Swup({
33            containers: ['#swup-contents'],
34            animateHistoryBrowsing: true,
35            cache: false,
36            plugins: [new SwupGtagPlugin({
37                gaMeasurementId: "UA-62815676-41"
38            })]
39        });
40        swup.on('clickLink', function () {
41            body.classList.add('preload');
42            document.querySelector('html').classList.remove('smooth');
43            document.querySelector('#loader').classList.add('show');
44            menuMobileInfo(false);
45            menuMobile(false);
46            if (document.getElementById('text-reader')) {
47                textReaderAudio.pause();
48            }
49        });
50        swup.on('popState', function () {
51            body.classList.add('preload');
52            document.querySelector('html').classList.remove('smooth');
53            document.querySelector('#loader').classList.add('show');
54            menuMobileInfo(false);
55            menuMobile(false);
56        });
57        swup.on('samePage', function () {
58            body.classList.remove('preload');
59            document.querySelector('html').classList.add('smooth');
60            document.querySelector('#loader').classList.remove('show');
61            menuMobileInfo(false);
62            menuMobile(false);
63        });
64        swup.on('samePageWithHash', function () {
65            body.classList.remove('preload');
66            document.querySelector('html').classList.add('smooth');
67            document.querySelector('#loader').classList.remove('show');
68            menuMobileInfo(false);
69            menuMobile(false);
70        });
71        swup.on('contentReplaced', function () {
72            window.scrollTo(0, 0);
73            document.querySelector('body').classList.remove('header-up');
74            document.querySelector('body').classList.remove('logo-resize');
75            document.querySelector('#loader').classList.remove('show');
76            pageInit();
77        });
78    }
79    /*
80    ========== page init
81    */
82    recalcDOM();
83    pageInit();
84    setTimeout(() => {
85        if (document.querySelector('.adsbygoogle.adsbygoogle-noablate')) {
86            document.querySelector('.adsbygoogle.adsbygoogle-noablate').remove();
87        }
88    }, 1000);
89});
90
91window.addEventListener('resize', function () {
92    recalcDOM();
93});
94
95window.addEventListener('scroll', function () {
96    recalcDOM();
97});
98
99window.onscroll = function () {
100    if (this.oldScroll > this.scrollY) {
101        // up
102        deltaScroll += Math.abs(this.oldScroll - this.scrollY);
103        if (deltaScroll > window.outerHeight) {
104            document.querySelector('body').classList.remove('header-up');
105        }
106    } else {
107        //down
108        deltaScroll = 0;
109        if (this.scrollY > headerHeight) {
110            document.querySelector('body').classList.add('header-up');
111        }
112    }
113    if (this.scrollY > headerHeight * 1.5) {
114        document.querySelector('body').classList.add('logo-resize');
115    } else {
116        document.querySelector('body').classList.remove('header-up');
117        document.querySelector('body').classList.remove('logo-resize');
118    }
119    this.oldScroll = this.scrollY;
120}
121
122/*
123========== DOM
124*/
125
126function recalcDOM() {
127    'use strict';
128    headerHeight = document.querySelector('header').clientHeight;
129    if (document.querySelector('#audio-player')) {
130        playerHeight = document.querySelector('#audio-player').clientHeight;
131    }
132    document.documentElement.style.setProperty('--header-height', headerHeight + 'px');
133    document.documentElement.style.setProperty('--player-height', playerHeight + 'px');
134}
135
136/*
137========== page init
138*/
139
140function pageInit() {
141    'use strict';
142    //gapi.load('client');
143    setTimeout(function () {
144        body.classList.remove('preload');
145        document.querySelector('html').classList.add('smooth');
146    }, 1000);
147    document.querySelectorAll('a[href="#"]').forEach(link => {
148        link.href = 'javascript:;';
149    });
150    if (document.querySelector('.heateor_sss_button_facebook_messenger')) {
151        document.querySelector('.heateor_sss_button_facebook_messenger').setAttribute('title', 'Messenger');
152    }
153    gpsPosition();
154    if (audioInit) {
155        var percent = audioObj.currentTime / audioObj.duration * 100;
156        if (document.querySelector('.widget-podcast')) {
157            document.querySelector('#song-' + audioID + ' span.progress').style.width = percent + '%';
158            if (audioIsPlaying) {
159                document.querySelector('#song-' + audioID + ' a.song-play').style.display = 'none';
160                document.querySelector('#song-' + audioID + ' a.song-pause').style.display = 'block';
161            }
162        }
163    }
164    var menuItemActive = document.querySelector('#swup-contents>div.contents').getAttribute('data-menu-active');
165    if (menuItemActive !== null) {
166        document.querySelector(menuItemActive).classList.add('current-menu-item');
167    }
168    if (document.querySelector('#paypal-button-container')) {
169        initPayPalButton();
170    }
171    /*
172    ========== widget podcast
173    */
174    if (document.querySelector('.widget-podcast')) {
175        document.querySelectorAll('.widget-podcast .item').forEach(function (item) {
176            var url = item.getAttribute('data-url');
177            var audio = new Audio(url);
178            audio.addEventListener('canplay', function () {
179                var duration = audio.duration;
180                item.querySelector('div.status div.timer div.total').innerHTML = audioTimeTransform(duration);
181            });
182            item.querySelector('.bar').onmousemove = function (e) {
183                var rect = e.target.getBoundingClientRect();
184                var x = e.clientX - rect.left;
185                var y = e.clientY - rect.top;
186                var p = x / rect.width * 100;
187                item.querySelector('.cursor').style.left = p + '%';
188            }
189            item.querySelector('.bar').onclick = function (e) {
190                var rect = e.target.getBoundingClientRect();
191                var x = e.clientX - rect.left;
192                var seek = x / rect.width * 100;
193                var id = parseInt(item.getAttribute('data-id'));
194                var url = item.getAttribute('data-url');
195                if (audioInit) {
196                    if (id !== audioID) {
197                        audioObj.pause();
198                        audioPlay(id, url, seek);
199                    } else {
200                        audioObj.currentTime = audioDuration * seek / 100;
201                    }
202                } else {
203                    audioPlay(id, url, seek);
204                }
205            }
206        })
207    }
208    /*
209    ========== audio player
210    */
211    if (document.querySelector('div#audio-player')) {
212        document.querySelector('div#audio-player div.bar').onmousemove = function (e) {
213            var rect = e.target.getBoundingClientRect();
214            var x = e.clientX - rect.left;
215            var y = e.clientY - rect.top;
216            var p = x / rect.width * 100;
217            document.querySelector('div#audio-player div.bar span.cursor').style.left = p + '%';
218        }
219        document.querySelector('div#audio-player div.bar').onclick = function (e) {
220            var rect = e.target.getBoundingClientRect();
221            var x = e.clientX - rect.left;
222            var seek = x / rect.width * 100;
223            audioObj.currentTime = audioDuration * seek / 100;
224            audioObj.play();
225            document.querySelector('div#audio-player div.btns a.play').style.display = 'none';
226            document.querySelector('div#audio-player div.btns a.pause').style.display = 'block';
227        }
228    }
229    /*
230    ========== marquee
231    */
232    if (document.querySelector('.home-fe-lastnews')) {
233        Marquee('.home-fe-lastnews', .35);
234    }
235    /*
236    ========== text to speach
237    */
238    if (document.getElementById('text-to-speak-txt')) {
239        setTimeout(() => {
240            //txtSpeachLoadClient();
241        }, 2500);
242        setTimeout(() => {
243            //txtSpeachLoadSound();
244        }, 5000);
245    }
246    /*
247    ========== slider vita ecclesiale
248    */
249    if (document.querySelector('.home-ve')) {
250        new Swiper('.home-ve .swiper', {
251            breakpoints: {
252                0: {
253                    speed: 1000,
254                    slidesPerView: 1.25,
255                    spaceBetween: 20,
256                    enabled: true
257                },
258                768: {
259                    speed: 1250,
260                    slidesPerView: 2.25,
261                    spaceBetween: 20,
262                    enabled: true
263                },
264                1023: {
265                    speed: 1250,
266                    slidesPerView: 2.25,
267                    spaceBetween: 20,
268                    enabled: true
269                },
270                1024: {
271                    speed: 0,
272                    slidesPerView: 4,
273                    spaceBetween: 20,
274                    enabled: false
275                }
276            }
277        });
278    }
279    /*
280    ========== slider eventi
281    */
282    if (document.querySelector('.home-events')) {
283        new Swiper('.home-events .swiper', {
284            pagination: {
285                el: '.swiper-pagination',
286                type: 'bullets',
287            },
288            breakpoints: {
289                0: {
290                    speed: 1000,
291                    slidesPerView: 1.25,
292                    spaceBetween: 20,
293                    enabled: true
294                },
295                768: {
296                    speed: 1250,
297                    slidesPerView: 2.25,
298                    spaceBetween: 20,
299                    enabled: true
300                },
301                1023: {
302                    speed: 1250,
303                    slidesPerView: 2.25,
304                    spaceBetween: 20,
305                    enabled: true
306                },
307                1024: {
308                    speed: 0,
309                    slidesPerView: 4,
310                    spaceBetween: 20,
311                    enabled: false
312                }
313            }
314        });
315    }
316    /*
317    ========== necrologi
318    */
319    if (document.querySelector('#necro-city-button')) {
320        document.querySelector('#necro-city-button').onclick = function () {
321            var m = document.querySelector('.top-city-list');
322            if (m.classList.contains('show')) {
323                m.classList.remove('show');
324            } else {
325                m.classList.add('show');
326            }
327        };
328        //necroMassonery();
329    }
330    /*
331    ========== mega calendario
332    */
333    if (document.querySelector('#mega-calendar')) {
334        $.getJSON('/wp-json/wp/v2/eventi/?per_page=100', function (events) {
335            var eventsList = [];
336            if (events.length > 0) {
337                events.forEach((item) => {
338                    eventsList.push({
339                        title: htmlentities.decode(item.title.rendered),
340                        start: item.acf.data_ora,
341                        end: item.acf.data_ora_fine,
342                        url: `javascript: showEvent(${item.id})`
343                    });
344                });
345            }
346            var calendar = new FullCalendar.Calendar(document.getElementById('mega-calendar'), {
347                initialView: 'dayGridWeek',
348                locale: 'it',
349                firstDay: 1,
350                customButtons: {
351                    myCloseButton: {
352                        text: 'Chiudi',
353                        click: function () {
354                            eventCalendarClose();
355                        }
356                    }
357                },
358                headerToolbar: {
359                    start: 'title',
360                    center: '',
361                    end: 'today dayGridMonth,dayGridWeek prev,next myCloseButton'
362                },
363                titleFormat: {
364                    year: 'numeric',
365                    month: 'long'
366                },
367                events: eventsList
368            });
369            calendar.render();
370        });
371    }
372    /*
373    ========== bacheca eventi utente
374    */
375    if (document.querySelector('#ee-google-address')) {
376        autocompleteEventAddressInit();
377    }
378    /*
379    ========== archivio generale
380    */
381    if (document.querySelector('.archive-filters')) {
382        var firstYear = $('.archive-filters-year a.active').parent().index();
383        new Swiper('.archive-filters-year .list', {
384            centeredSlides: true,
385            slidesPerView: 7,
386            initialSlide: firstYear,
387            breakpoints: {
388                640: {
389                    centeredSlides: false,
390                    slidesPerView: 12,
391                    initialSlide: firstYear,
392                }
393            }
394        });
395        var firstMonth = $('.archive-filters-month a.active').parent().index();
396        new Swiper('.archive-filters-month .list', {
397            centeredSlides: true,
398            slidesPerView: 3.5,
399            initialSlide: firstMonth,
400            breakpoints: {
401                640: {
402                    centeredSlides: false,
403                    slidesPerView: 8,
404                    initialSlide: firstMonth,
405                },
406                1440: {
407                    centeredSlides: false,
408                    slidesPerView: 12,
409                    initialSlide: firstMonth,
410                }
411            }
412        });
413    }
414    /*
415    ========== iubenda
416    */
417    (function (w, d) {
418        var loader = function () {
419            var s = d.createElement("script"),
420                tag = d.getElementsByTagName("script")[0];
421            s.src = "https://cdn.iubenda.com/iubenda.js";
422            tag.parentNode.insertBefore(s, tag);
423        };
424        if (w.addEventListener) {
425            w.addEventListener("load", loader, false);
426        } else if (w.attachEvent) {
427            w.attachEvent("onload", loader);
428        } else {
429            w.onload = loader;
430        }
431    })(window, document);
432}
433
434/*
435========== email validation
436*/
437
438function validateEmail(email) {
439    'use strict';
440    var re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
441    return re.test(email);
442}
443
444/*
445========== player audio
446*/
447
448function audioPlay(id, url, start) {
449    'use strict';
450    if (!start) {
451        start = 0;
452    } else {
453        document.querySelector('#song-' + id + ' span.progress').style.width = start + '%';
454    }
455    if (audioInit) {
456        audioObj.pause();
457        audioIsPlaying = false;
458    }
459    if (audioID !== id) {
460        var seek = 0;
461        document.querySelector('div#audio-player div.title').innerHTML = document.querySelector('div.widget-podcast div.item#song-' + id).getAttribute('data-title');
462        audioID = id;
463        audioObj = new Audio(url);
464        audioObj.addEventListener('canplay', function () {
465            audioDuration = audioObj.duration;
466            if (document.querySelector('.widget-podcast')) {
467                seek = document.querySelector('#song-' + audioID + ' span.progress').style.width;
468                seek = parseFloat(seek.replace('%', '')) / 100;
469                if (seek === undefined) {
470                    seek = 0;
471                }
472            } else {
473                seek = 0;
474            }
475            audioObj.play();
476            if (!audioIsPlaying) {
477                audioObj.currentTime = audioDuration * seek;
478            }
479            audioIsPlaying = true;
480        });
481        audioObj.addEventListener('timeupdate', function () {
482            var percent = audioObj.currentTime / audioObj.duration * 100;
483            document.querySelector('div#audio-player div.bar span.progress').style.width = percent + '%';
484            document.querySelector('#audio-player-current-time').innerHTML = audioTimeTransform(audioObj.currentTime);
485            document.querySelector('#audio-player-total-time').innerHTML = audioTimeTransform(audioDuration);
486            if (document.querySelector('.widget-podcast')) {
487                document.querySelector('#song-' + audioID + ' span.progress').style.width = percent + '%';
488                document.querySelector('#song-' + audioID + ' div.status div.timer div.current').innerHTML = audioTimeTransform(audioObj.currentTime);
489                document.querySelector('#song-' + audioID + ' div.status div.timer div.total').innerHTML = audioTimeTransform(audioDuration);
490            }
491        });
492        audioObj.addEventListener('playing', function () {
493            document.querySelector('body').classList.add('player-on');
494            document.querySelector('#audio-player').classList.add('show');
495        });
496        audioObj.addEventListener('ended', function () {
497            document.querySelector('div#audio-player div.bar span.progress').style.width = '0%';
498            if (document.querySelector('.widget-podcast')) {
499                document.querySelector('#song-' + audioID + ' span.progress').style.width = '0%';
500            }
501            audioPause(audioID);
502            //audioPlayerClose();
503        });
504    } else {
505        audioObj.play();
506        audioIsPlaying = true;
507    }
508    document.querySelectorAll('a.song-play').forEach(function (el) {
509        el.style.display = 'block';
510    });
511    document.querySelectorAll('a.song-pause').forEach(function (el) {
512        el.style.display = 'none';
513    });
514    if (document.querySelector('.widget-podcast')) {
515        document.querySelector('#song-' + id + ' a.song-play').style.display = 'none';
516        document.querySelector('#song-' + id + ' a.song-pause').style.display = 'block';
517    }
518    document.querySelector('div#audio-player div.btns a.play').style.display = 'none';
519    document.querySelector('div#audio-player div.btns a.pause').style.display = 'block';
520    audioInit = true;
521}
522
523function audioPause(id) {
524    'use strict';
525    if (audioInit) {
526        audioObj.pause();
527    }
528    if (document.querySelector('.widget-podcast')) {
529        document.querySelector('#song-' + id + ' a.song-play').style.display = 'block';
530        document.querySelector('#song-' + id + ' a.song-pause').style.display = 'none';
531    }
532    document.querySelector('div#audio-player div.btns a.play').style.display = 'block';
533    document.querySelector('div#audio-player div.btns a.pause').style.display = 'none';
534    audioIsPlaying = false;
535}
536
537function audioSeek(id, seek) {
538    'use strict';
539    if (audioInit && audioID === id) {
540        audioObj.currentTime = audioObj.currentTime + seek;
541        if (document.querySelector('.widget-podcast')) {
542            document.querySelector('#song-' + id + ' a.song-play').style.display = 'none';
543            document.querySelector('#song-' + id + ' a.song-pause').style.display = 'block';
544        }
545        document.querySelector('div#audio-player div.btns a.play').style.display = 'none';
546        document.querySelector('div#audio-player div.btns a.pause').style.display = 'block';
547    } else {
548        if (audioInit) {
549            audioPause(audioID);
550        }
551        var url = document.querySelector('.item#song-' + id).getAttribute('data-url');
552        audioPlay(id, url);
553    }
554}
555
556function audioPlayerClose() {
557    'use strict';
558    audioPause(audioID);
559    document.querySelector('body').classList.remove('player-on');
560    document.querySelector('#audio-player').classList.remove('show');
561}
562
563function audioTimeTransform(time) {
564    'use strict';
565    time = Math.ceil(time);
566    var minutes = Math.floor(time / 60);
567    var seconds = time - (minutes * 60);
568    if (seconds < 10) {
569        seconds = '0' + seconds;
570    }
571    return minutes + ':' + seconds;
572}
573
574/*
575========== light/dark mode
576*/
577
578function lightDarkMode() {
579    menuMobile(false);
580    if (body.classList.contains('dark-mode')) {
581        body.classList.remove('dark-mode');
582        setCookie('site-mode', '', 365);
583    } else {
584        body.classList.add('dark-mode');
585        setCookie('site-mode', 'dark-mode', 365);
586    }
587}
588
589/*
590========== cookies
591*/
592
593// create
594function setCookie(name, value, days) {
595    'use strict';
596    var exdate = new Date();
597    exdate.setDate(exdate.getDate() + days);
598    document.cookie = name + '=' + value + '; expires=' + exdate + '; path=/';
599}
600
601// read
602function getCookie(name) {
603    'use strict';
604    var i, x, y, ARRcookies = document.cookie.split(";");
605    for (i = 0; i < ARRcookies.length; i++) {
606        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
607        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
608        x = x.replace(/^\s+|\s+$/g, "");
609        if (x === name) {
610            return decodeURI(y);
611        }
612    }
613    return '';
614}
615
616// delete
617function deleteCookie(name) {
618    'use strict';
619    document.cookie = name + '=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
620}
621
622/*
623========== gps
624*/
625
626function gpsPosition() {
627    var city = 'Nuoro';
628    setupMeteo(city);
629    return;
630    if (navigator.geolocation) {
631        navigator.geolocation.getCurrentPosition(function (location) {
632            if (location.coords.accuracy <= 5000) {
633                var xmlhttp = new XMLHttpRequest();
634                xmlhttp.onreadystatechange = function () {
635                    if (xmlhttp.readyState == XMLHttpRequest.DONE) {
636                        if (xmlhttp.status == 200) {
637                            var geolocal = JSON.parse(xmlhttp.responseText);
638                            if (geolocal.address.city) {
639                                city = geolocal.address.city;
640                            } else if (geolocal.address.village) {
641                                city = geolocal.address.village;
642                            }
643                            setupMeteo(city);
644                        } else if (xmlhttp.status == 400) {
645                            setupMeteo(city);
646                        } else {
647                            setupMeteo(city);
648                        }
649                    }
650                };
651                xmlhttp.open('GET', 'https://nominatim.openstreetmap.org/reverse?format=json&lat=' + location.coords.latitude + '&lon=' + location.coords.longitude + '&zoom=27&addressdetails=1', true);
652                xmlhttp.send();
653            } else {
654                setupMeteo(city);
655            }
656        });
657    } else {
658        setupMeteo(city);
659    }
660}
661
662/*
663========== meteo
664*/
665
666function setupMeteo(city) {
667    'use strict';
668    document.querySelector('#meteo-city').innerHTML = city;
669    var xmlhttp = new XMLHttpRequest();
670    xmlhttp.onreadystatechange = function () {
671        if (xmlhttp.readyState == XMLHttpRequest.DONE) {
672            if (xmlhttp.status == 200) {
673                var geolocal = JSON.parse(xmlhttp.responseText);
674                if (geolocal.description !== null) {
675                    document.querySelector('#meteo-temp').innerHTML = `${geolocal.max}° / ${geolocal.min}°`;
676                    document.querySelector('#meteo-icon img').setAttribute('src', `${siteUrl}/meteo/${geolocal.icon}.png`);
677                    document.querySelector('#meteo-icon img').setAttribute('alt', geolocal.description);
678                    document.querySelector('#meteo-icon img').setAttribute('title', geolocal.description);
679                    setTimeout(() => {
680                        document.querySelector('#meteo-city').style.display = 'block';
681                        document.querySelector('#meteo-temp').style.display = 'block';
682                        document.querySelector('#meteo-icon').style.display = 'block';
683                    }, 1000);
684                }
685            } else if (xmlhttp.status == 400) {
686                //console.log(geolocal);
687            } else {
688                //console.log(geolocal);
689            }
690        }
691    };
692    xmlhttp.open('GET', `${siteUrl}/ajax/meteo.php?city=${city}`, true);
693    xmlhttp.send();
694}
695
696/*
697========== marquee
698*/
699
700function Marquee(selector, speed) {
701    const parentSelector = document.querySelector(selector);
702    const clone = parentSelector.innerHTML;
703    const firstElement = parentSelector.children[0];
704    var i = 0;
705    parentSelector.insertAdjacentHTML('beforeend', clone);
706    parentSelector.insertAdjacentHTML('beforeend', clone);
707    setInterval(function () {
708        firstElement.style.marginLeft = `-${i}px`;
709        if (i > firstElement.clientWidth) {
710            i = 0;
711        }
712        i = i + speed;
713    }, 0);
714}
715
716/*
717========== scroll to
718*/
719
720function scrollToElement(selector, yOffset) {
721    'use strict';
722    if (!yOffset) {
723        yOffset = 0;
724    }
725    var el = document.querySelector(selector);
726    var y = el.getBoundingClientRect().top + window.pageYOffset + yOffset;
727    window.scrollTo({
728        top: y,
729        behavior: 'smooth'
730    });
731}
732
733/*
734========== share popup
735*/
736
737function sharePopup(status) {
738    'use strict';
739    if (status) {
740        body.classList.add('scroll-lock');
741        document.querySelector('div#sss-popup').classList.add('show');
742    } else {
743        body.classList.remove('scroll-lock');
744        document.querySelector('div#sss-popup').classList.remove('show');
745    }
746}
747
748/*
749========== menu mobile
750*/
751
752function menuMobile(status) {
753    'use strict';
754    if (status) {
755        body.classList.add('scroll-lock');
756        document.querySelector('div#menu-mobile').classList.add('show');
757    } else {
758        body.classList.remove('scroll-lock');
759        document.querySelector('div#menu-mobile').classList.remove('show');
760    }
761}
762
763function menuMobileInfo(status) {
764    'use strict';
765    if (status) {
766        document.querySelector('div#menu-mobile').classList.add('show');
767        document.querySelector('div#menu-mobile').classList.add('info');
768    } else {
769        document.querySelector('div#menu-mobile').classList.remove('info');
770    }
771}
772
773/*
774========== strip html
775*/
776
777function stripHtml(html) {
778    'use strict';
779    var tmp = document.createElement("DIV");
780    tmp.innerHTML = html;
781    return tmp.textContent || tmp.innerText || "";
782}
783
784/*
785========== text to speach
786*/
787
788function txtSpeachLoadClient() {
789    'use strict';
790    return;
791    //gapi.client.setApiKey("AIzaSyAT8NGuWIg91klX42Va1e-miuH58IYO0KI");
792    gapi.client.setApiKey("000");
793    return gapi.client.load("https://texttospeech.googleapis.com/$discovery/rest?version=v1")
794        .then(function () {
795                console.log("GAPI client loaded for API");
796            },
797            function (err) {
798                console.error("Error loading GAPI client for API", err);
799            });
800}
801
802function txtSpeachLoadSound() {
803    'use strict';
804    return;
805    let text = document.getElementById('text-to-speak-txt').value;
806    //console.log(text);
807    return gapi.client.texttospeech.text.synthesize({
808            "resource": {
809                "audioConfig": {
810                    "audioEncoding": "MP3",
811                    "pitch": 1,
812                    "speakingRate": 1.1,
813                    "volumeGainDb": 10
814                },
815                "input": {
816                    "text": text
817                },
818                "voice": {
819                    "languageCode": "it-IT",
820                    //"name": "Google italiano",
821                    "ssmlGender": "FEMALE"
822                }
823            }
824        })
825        .then(
826            function (response) {
827                audioObj = new Audio("data:audio/wav;base64," + response.result.audioContent);
828                document.getElementById('player').setAttribute('src', "data:audio/wav;base64," + response.result.audioContent);
829                document.getElementById('player').style.display = 'block';
830                document.querySelector('p.speak').classList.add('ready');
831                $.ajax({
832                    type: "POST",
833                    url: `/ajax/mp3save.php`,
834                    data: {
835                        id: document.querySelector('#post-id').value,
836                        sound: response.result.audioContent
837                    }
838                });
839            },
840            function (err) {
841                console.error("Execute error", err);
842            }
843        );
844}
845
846/*
847========== archives goto page
848*/
849
850function archiveGotoPage(root, section, slug) {
851    'use strict';
852    var page = parseInt(document.getElementById('page-goto').value);
853    var url = root + '/' + section + '/';
854    if (slug) {
855        url = url + slug + '/';
856    }
857    if (page > 1) {
858        url = url + 'page/' + page + '/';
859    }
860    window.location.href = url;
861}
862
863/*
864========== search goto page
865*/
866
867function searchGotoPage(root, search) {
868    'use strict';
869    var page = parseInt(document.getElementById('page-goto').value);
870    var url = root + '/';
871    if (page > 1) {
872        url = url + 'page/' + page + '/';
873    }
874    url = url + '?s=' + search;
875    window.location.href = url;
876}
877
878/*
879========== necro city filter
880*/
881
882function necroCity(city) {
883    'use strict';
884    document.querySelectorAll('div.contents div.list div.item').forEach((el) => {
885        if (el.getAttribute('data-city') === city) {
886            el.classList.remove('hide');
887        } else {
888            el.classList.add('hide');
889        }
890    });
891    /*document.querySelectorAll('div.contents div.list').forEach((el) => {
892        var count = 0;
893        el.querySelectorAll('.item').forEach((item) => {
894            if (!item.classList.contains('hide')) {
895                count++;
896            }
897        });
898        if (count == 0) {
899            el.style.display = 'none';
900        } else {
901            el.style.display = 'gtid';
902        }
903    });*/
904    document.querySelector('.top-city-list').classList.remove('show');
905}
906
907function necroCityReset() {
908    'use strict';
909    document.querySelectorAll('div.contents div.list div.item').forEach((el) => {
910        el.classList.remove('hide');
911    });
912    /*document.querySelectorAll('div.contents div.list').forEach((el) => {
913        el.style.display = 'grid';
914    });*/
915    document.querySelector('.top-city-list').classList.remove('show');
916    //necroMassonery();
917}
918
919/*
920========== necro massonery
921*/
922
923function necroMassonery() {
924    /*$('div.contents div.list.single').masonry({
925        itemSelector: 'div.contents div.list.single div.item:not(.hide)',
926        gutter: 40,
927        horizontalOrder: true,
928    });*/
929}
930
931/*
932========== show/hide event detail
933*/
934
935function showEvent(id) {
936    'use strict';
937    moment.locale('it');
938    document.querySelector('body').classList.add('scroll-lock');
939    document.querySelector('div#event-detail').classList.add('show');
940    $.getJSON('/wp-json/wp/v2/eventi/' + id, function (event) {
941        var data = event.acf.data_ora.split(' ');
942        var data_fine = event.acf.data_ora_fine.split(' ');
943        var info = `<span class="artist">${event.acf.artisti}</span><span class="local">${event.acf.locale}</span><span class="city">${event.acf.paese}</span>`
944        var address = `<a href="${event.acf.posizione}" target="_blank" data-no-swup>${event.acf.indirizzo}</a>`;
945        var prezzo_biglietto = '';
946        if (event.acf.prezzo_biglietto !== '' && event.acf.prezzo_biglietto !== undefined) {
947            prezzo_biglietto = event.acf.prezzo_biglietto;
948        }
949        /*var download = '';
950        if (event.acf.allegati.length > 0) {
951            download = `<a href="${event.acf.allegati[0].file}" target="_blank" data-no-swup>${event.acf.allegati[0].nome}</a>`
952        }*/
953        var website = '';
954        if (event.acf.sito_web !== '') {
955            website = `<a href="${event.acf.sito_web}" target="_blank" data-no-swup>Sito web</a>`
956        }
957        document.querySelector('div#event-detail div.box div.date span.day').innerHTML = moment(data[0]).format('dddd D MMMM');
958        document.querySelector('div#event-detail div.box div.date span.time').innerHTML = data[1];
959        document.querySelector('div#event-detail div.box div.category').innerHTML = event.acf.tipologia_evento;
960        document.querySelector('div#event-detail div.box div.title').innerHTML = event.title.rendered;
961        document.querySelector('div#event-detail div.box div.info').innerHTML = info;
962        document.querySelector('div#event-detail div.box li.address').innerHTML = address;
963        document.querySelector('div#event-detail div.box li.entrance span.type span').innerHTML = event.acf.ingresso;
964        document.querySelector('div#event-detail div.box li.entrance span.price').innerHTML = prezzo_biglietto;
965        document.querySelector('div#event-detail div.box li.booking').innerHTML = event.acf.prenotazione;
966        document.querySelector('div#event-detail div.box li.detail').innerHTML = event.acf.informazioni;
967        document.querySelector('div#event-detail div.box li.website').innerHTML = website;
968        //document.querySelector('div#event-detail div.box li.download').innerHTML = download;
969        document.querySelector('div#event-detail div.box').classList.add('show');
970        var old_element = document.querySelector('div#event-detail div.box div.tools div.add-to-calendar a');
971        var new_element = old_element.cloneNode(true);
972        old_element.parentNode.replaceChild(new_element, old_element);
973        document.querySelector('div#event-detail div.box div.tools div.add-to-calendar a').addEventListener('click', () => {
974            atcb_action({
975                name: event.title.rendered,
976                description: event.acf.informazioni,
977                location: `${event.acf.posizione.lat},${event.acf.posizione.lng}`,
978                startDate: data[0],
979                endDate: data_fine[0],
980                startTime: data[1],
981                endTime: data_fine[1],
982                options: ["Apple", "Google", "iCal", "Microsoft365", "Outlook.com", "MicrosoftTeams", "Yahoo"],
983                timeZone: "Europe/Berlin",
984                trigger: "click",
985                iCalFileName: "Ortobene-Eventi"
986            });
987        });
988    });
989}
990
991function closeEvent() {
992    'use strict';
993    document.querySelector('div#event-detail').classList.remove('show');
994    document.querySelector('div#event-detail div.box').classList.remove('show');
995    if (!document.querySelector('div.events-calendar').classList.contains('show')) {
996        document.querySelector('body').classList.remove('scroll-lock');
997    }
998}
999
1000/*
1001========== events filter
1002*/
1003
1004var event_filters = {
1005    month: '',
1006    city: ''
1007}
1008
1009function eventsFilter() {
1010    'use strict';
1011    var divMonth = document.querySelectorAll('div.events-archive div.month');
1012    var divItem = document.querySelectorAll('div.events-archive div.list div.item');
1013    divMonth.forEach((item) => {
1014        item.classList.remove('event-hide');
1015    });
1016    divItem.forEach((item) => {
1017        item.classList.remove('event-hide');
1018    });
1019    if (event_filters.month !== '' && event_filters.city !== '') {
1020        divMonth.forEach((el) => {
1021            if (el.getAttribute('data-month') === event_filters.month && el.getAttribute('data-city').includes(event_filters.city)) {
1022                el.classList.remove('event-hide');
1023            } else {
1024                el.classList.add('event-hide');
1025            }
1026        });
1027        divItem.forEach((el) => {
1028            if (el.getAttribute('data-month') === event_filters.month && el.getAttribute('data-city').includes(event_filters.city)) {
1029                el.classList.remove('event-hide');
1030            } else {
1031                el.classList.add('event-hide');
1032            }
1033        });
1034    }
1035    if (event_filters.month !== '' && event_filters.city === '') {
1036        divMonth.forEach((el) => {
1037            if (el.getAttribute('data-month') === event_filters.month) {
1038                el.classList.remove('event-hide');
1039            } else {
1040                el.classList.add('event-hide');
1041            }
1042        });
1043        divItem.forEach((el) => {
1044            if (el.getAttribute('data-month') === event_filters.month) {
1045                el.classList.remove('event-hide');
1046            } else {
1047                el.classList.add('event-hide');
1048            }
1049        });
1050    }
1051    if (event_filters.month === '' && event_filters.city !== '') {
1052        divMonth.forEach((el) => {
1053            if (el.getAttribute('data-city').includes(event_filters.city)) {
1054                el.classList.remove('event-hide');
1055            } else {
1056                el.classList.add('event-hide');
1057            }
1058        });
1059        divItem.forEach((el) => {
1060            if (el.getAttribute('data-city').includes(event_filters.city)) {
1061                el.classList.remove('event-hide');
1062            } else {
1063                el.classList.add('event-hide');
1064            }
1065        });
1066    }
1067    if (document.querySelectorAll('div.events-archive div.list div.item:not(.event-hide)').length === 0) {
1068        document.querySelector('div.no-events').style.display = 'block';
1069    } else {
1070        document.querySelector('div.no-events').style.display = 'none';
1071    }
1072    if (event_filters.month === '') {
1073        document.querySelector('#filter-date span.all').style.display = 'block';
1074        document.querySelector('#filter-date span.active').style.display = 'none';
1075    } else {
1076        document.querySelector('#filter-date span.all').style.display = 'none';
1077        document.querySelector('#filter-date span.active').innerHTML = moment(`1900-${event_filters.month}-01`).format('MMMM');
1078        document.querySelector('#filter-date span.active').style.display = 'block';
1079    }
1080    if (event_filters.city === '') {
1081        document.querySelector('#filter-city span.all').style.display = 'block';
1082        document.querySelector('#filter-city span.active').style.display = 'none';
1083    } else {
1084        document.querySelector('#filter-city span.all').style.display = 'none';
1085        document.querySelector('#filter-city span.active').innerHTML = event_filters.city;
1086        document.querySelector('#filter-city span.active').style.display = 'block';
1087    }
1088    document.querySelectorAll('div.events-archive div.tools div.filters span.dropdown a').forEach((el) => {
1089        el.blur();
1090    });
1091}
1092
1093/*
1094========== show/hide event calendar
1095*/
1096
1097function eventCalendarShow() {
1098    'use strict';
1099    document.querySelector('body').classList.add('scroll-lock');
1100    document.querySelector('div.events-calendar').classList.add('show');
1101    document.querySelector('div.events-calendar div#mega-calendar').classList.add('show');
1102}
1103
1104function eventCalendarClose() {
1105    'use strict';
1106    document.querySelector('body').classList.remove('scroll-lock');
1107    document.querySelector('div.events-calendar').classList.remove('show');
1108    document.querySelector('div.events-calendar div#mega-calendar').classList.remove('show');
1109}
1110
1111/*
1112========== event form
1113*/
1114
1115var eventsFormSection = 'login';
1116var eventsFormSend = false;
1117
1118function eventsUserFormOpen() {
1119    'use strict';
1120    eventsUserFormSwitch('login');
1121    document.querySelector('div#events-form').classList.add('show');
1122}
1123
1124function eventsUserFormClose() {
1125    'use strict';
1126    document.querySelector('div#events-form').classList.remove('show');
1127    setTimeout(() => {
1128        eventsUserFormReset();
1129    }, 500);
1130}
1131
1132function eventsUserFormSwitch(section) {
1133    'use strict';
1134    document.querySelectorAll('div#events-form div.registration div.col').forEach((el) => {
1135        el.classList.add('hide');
1136    });
1137    document.querySelectorAll('div#events-form div.registration div.msg').forEach((el) => {
1138        el.innerHTML = '';
1139    });
1140    document.querySelector(`div#events-form div.registration div.col-${section}`).classList.remove('hide');
1141    if (section === 'new') {
1142        document.querySelector('div#events-form div.registration').classList.add('wide');
1143    } else {
1144        document.querySelector('div#events-form div.registration').classList.remove('wide');
1145    }
1146    eventsFormSection = section;
1147}
1148
1149function eventsUserNew() {
1150    'use strict';
1151    if (!eventsFormSend) {
1152        var name = document.querySelector('#new-name');
1153        var surname = document.querySelector('#new-surname');
1154        var mail = document.querySelector('#new-mail');
1155        var phone = document.querySelector('#new-phone');
1156        var pwd = document.querySelector('#new-pwd');
1157        var privacy = document.querySelector('#new-privacy');
1158        var msg = document.querySelector(`div#events-form div.registration div.col-${eventsFormSection} div.msg`);
1159        msg.innerHTML = '';
1160        msg.classList.remove('success');
1161        msg.classList.remove('error');
1162        var errors = 0;
1163        if (name.value === '') {
1164            name.classList.add('error');
1165            errors++;
1166        } else {
1167            name.classList.remove('error');
1168        }
1169        if (surname.value === '') {
1170            surname.classList.add('error');
1171            errors++;
1172        } else {
1173            surname.classList.remove('error');
1174        }
1175        if (mail.value === '') {
1176            mail.classList.add('error');
1177            errors++;
1178        } else {
1179            mail.classList.remove('error');
1180        }
1181        if (phone.value === '') {
1182            phone.classList.add('error');
1183            errors++;
1184        } else {
1185            phone.classList.remove('error');
1186        }
1187        if (pwd.value === '') {
1188            pwd.classList.add('error');
1189            errors++;
1190        } else {
1191            pwd.classList.remove('error');
1192        }
1193        if (errors > 0) {
1194            msg.innerHTML = 'Compilare tutti i campi obbligatori';
1195            msg.classList.add('error');
1196            return;
1197        }
1198        if (!validateEmail(mail.value)) {
1199            msg.innerHTML = 'Indirizzo mail non valido';
1200            msg.classList.add('error');
1201            return;
1202        }
1203        if (!privacy.checked) {
1204            msg.innerHTML = `È necessario accettare l'informativa sulla privacy.`;
1205            msg.classList.add('error');
1206            return;
1207        }
1208        eventsFormSend = true;
1209        msg.innerHTML = 'Registrazione in corso...';
1210        msg.classList.remove('error');
1211        var postData = {
1212            action: eventsFormSection,
1213            name: name.value,
1214            surname: surname.value,
1215            mail: mail.value,
1216            phone: phone.value,
1217            pwd: pwd.value
1218
1219        };
1220        $.post({
1221            url: '/ajax/events.php',
1222            data: postData,
1223            success: function (response) {
1224                setTimeout(() => {
1225                    switch (response) {
1226                        case 'exist':
1227                            msg.innerHTML = `L'indirizzo mail inserito è già registrato.<br />Puoi <a href="javascript:;" onclick="eventsUserFormSwitch('recover')">recuperare la tua password</a> nel caso sia stata smarrita o dimenticata.`;
1228                            msg.classList.remove('success');
1229                            msg.classList.add('error');
1230                            eventsFormSend = false;
1231                            break;
1232                        case 'success':
1233                            eventsUserFormReset();
1234                            msg.innerHTML = `La registrazione è andata a buon fine.<br />Controlla la tua casella di posta per attivare il nuovo account e iniziare a pubblicare gli eventi.`;
1235                            msg.classList.add('success');
1236                            msg.classList.remove('error');
1237                            eventsFormSend = false;
1238                            break;
1239                        default:
1240                            msg.innerHTML = `Si è verifica un errore.<br/>Si prega di riprovare più tardi.`;
1241                            msg.classList.remove('success');
1242                            msg.classList.add('error');
1243                            eventsFormSend = false;
1244                            break;
1245                    }
1246                }, 2000);
1247            },
1248        });
1249    }
1250}
1251
1252function eventsUserRecover() {
1253    'use strict';
1254    if (!eventsFormSend) {
1255        var user = document.querySelector('#recover-usr');
1256        var msg = document.querySelector(`div#events-form div.registration div.col-${eventsFormSection} div.msg`);
1257        msg.innerHTML = '';
1258        msg.classList.remove('success');
1259        msg.classList.remove('error');
1260        var errors = 0;
1261        if (user.value === '') {
1262            user.classList.add('error');
1263            errors++;
1264        } else {
1265            user.classList.remove('error');
1266        }
1267        if (errors > 0) {
1268            msg.innerHTML = 'Compilare tutti i campi obbligatori';
1269            msg.classList.add('error');
1270            return;
1271        }
1272        if (!validateEmail(user.value)) {
1273            user.innerHTML = 'Indirizzo mail non valido';
1274            user.classList.add('error');
1275            return;
1276        }
1277        eventsFormSend = true;
1278        msg.innerHTML = 'Invio richiesta in corso...';
1279        msg.classList.remove('error');
1280        var postData = {
1281            action: eventsFormSection,
1282            user: user.value
1283
1284        };
1285        $.post({
1286            url: '/ajax/events.php',
1287            data: postData,
1288            success: function (response) {
1289                setTimeout(() => {
1290                    switch (response) {
1291                        case 'unknow':
1292                            eventsUserFormReset();
1293                            msg.innerHTML = `La mail digitata non è registrata.`;
1294                            msg.classList.remove('success');
1295                            msg.classList.add('error');
1296                            eventsFormSend = false;
1297                            break;
1298                        case 'success':
1299                            eventsUserFormReset();
1300                            msg.innerHTML = `La password è stata correttamente inviata alla tua casella di posta elettronica.`;
1301                            msg.classList.add('success');
1302                            msg.classList.remove('error');
1303                            eventsFormSend = false;
1304                            break;
1305                        default:
1306                            msg.innerHTML = `Si è verifica un errore.<br/>Si prega di riprovare più tardi.`;
1307                            msg.classList.remove('success');
1308                            msg.classList.add('error');
1309                            eventsFormSend = false;
1310                            break;
1311                    }
1312                }, 2000);
1313            },
1314        });
1315    }
1316}
1317
1318function eventsUserLogin() {
1319    'use strict';
1320    if (!eventsFormSend) {
1321        var user = document.querySelector('#login-usr');
1322        var pwd = document.querySelector('#login-pwd');
1323        var msg = document.querySelector(`div#events-form div.registration div.col-${eventsFormSection} div.msg`);
1324        msg.innerHTML = '';
1325        msg.classList.remove('success');
1326        msg.classList.remove('error');
1327        var errors = 0;
1328        if (user.value === '') {
1329            user.classList.add('error');
1330            errors++;
1331        } else {
1332            user.classList.remove('error');
1333        }
1334        if (pwd.value === '') {
1335            pwd.classList.add('error');
1336            errors++;
1337        } else {
1338            pwd.classList.remove('error');
1339        }
1340        if (errors > 0) {
1341            msg.innerHTML = 'Compilare tutti i campi obbligatori';
1342            msg.classList.add('error');
1343            return;
1344        }
1345        if (!validateEmail(user.value)) {
1346            msg.innerHTML = 'Indirizzo mail non valido';
1347            user.classList.add('error');
1348            return;
1349        }
1350        eventsFormSend = true;
1351        msg.innerHTML = 'Richiesta di accesso in corso...';
1352        msg.classList.remove('error');
1353        var postData = {
1354            action: eventsFormSection,
1355            user: user.value,
1356            pwd: pwd.value
1357
1358        };
1359        $.post({
1360            url: '/ajax/events.php',
1361            data: postData,
1362            success: function (response) {
1363                setTimeout(() => {
1364                    switch (response) {
1365                        case 'unknow':
1366                            eventsUserFormReset();
1367                            msg.innerHTML = `Le credenziali digitate non sono corrette.`;
1368                            msg.classList.remove('success');
1369                            msg.classList.add('error');
1370                            eventsFormSend = false;
1371                            break;
1372                        case 'inactive':
1373                            eventsUserFormReset();
1374                            msg.innerHTML = `L'account non è ancora attivo.<br/>È necessario utilizzare il link di attivazione ricevuto via mail. Per richiedere nuovamente il link utilizza la funzione di recupero password.`;
1375                            msg.classList.remove('success');
1376                            msg.classList.add('error');
1377                            eventsFormSend = false;
1378                            break;
1379                        case 'success':
1380                            eventsUserFormReset();
1381                            msg.innerHTML = `Accesso eseguito.<br/>Stai per essere reindirizzato al pannello eventi...`;
1382                            msg.classList.add('success');
1383                            msg.classList.remove('error');
1384                            setTimeout(() => {
1385                                document.location.href = '/eventi/bacheca/';
1386                            }, 1000);
1387                            break;
1388                        default:
1389                            msg.innerHTML = `Si è verifica un errore.<br/>Si prega di riprovare più tardi.`;
1390                            msg.classList.remove('success');
1391                            msg.classList.add('error');
1392                            eventsFormSend = false;
1393                            break;
1394                    }
1395                    eventsFormSend = false;
1396                }, 500);
1397            },
1398        });
1399    }
1400}
1401
1402function eventsUserFormReset() {
1403    'use strict';
1404    document.querySelector('#new-name').value = '';
1405    document.querySelector('#new-surname').value = '';
1406    document.querySelector('#new-mail').value = '';
1407    document.querySelector('#new-phone').value = '';
1408    document.querySelector('#new-pwd').value = '';
1409    document.querySelector('#login-usr').value = '';
1410    document.querySelector('#login-pwd').value = '';
1411    document.querySelector('#recover-usr').value = '';
1412    document.querySelector('#new-privacy').checked = false;
1413    document.querySelectorAll('div#events-form div.registration div.col div.msg').forEach((item) => {
1414        item.innerHTML = '';
1415        item.classList.remove('error');
1416        item.classList.remove('success');
1417    });
1418}
1419
1420var user_event_edit_model = {
1421    id: 0,
1422    post_title: '',
1423    pubblica: true,
1424    annulla_evento: false,
1425    data_ora: '',
1426    data_ora_fine: '',
1427    paese: '',
1428    indirizzo: '',
1429    locale: '',
1430    sito_web: '',
1431    artisti: '',
1432    prenotazione: '',
1433    ingresso: '',
1434    prezzo_biglietto: '',
1435    informazioni: '',
1436    allegati: '',
1437    indirizzo_google_maps: '',
1438    posizione: '',
1439    informazioni: '',
1440    tipologia_evento: '',
1441    action: '',
1442    utente: ''
1443}
1444
1445var user_event_edit;
1446var user_event_send = false;
1447
1448function eventsEdit(id) {
1449    'use strict';
1450    user_event_edit = JSON.parse(JSON.stringify(user_event_edit_model));
1451    document.querySelector('body').classList.add('scroll-lock');
1452    document.querySelector('div#ee').classList.add('show');
1453    user_event_edit.utente = parseInt(document.querySelector('#user_id').value);
1454    if (id === 0) {
1455        eventsEditReset();
1456        user_event_edit.action = 'new_event';
1457        document.querySelector('div.ee-box').classList.add('show');
1458        document.querySelector('div.ee-box-title').innerHTML = 'Inserisci un nuovo evento';
1459        document.querySelector('div.ee-box').classList.add('show');
1460    } else {
1461        document.querySelector('div.ee-box-title').innerHTML = 'Modifica il tuo evento';
1462        $.getJSON(`/wp-json/wp/v2/eventi/${id}`, function (event) {
1463            var start = moment(event.acf.data_ora).format('YYYY-MM-DDTHH:mm');
1464            var end = moment(event.acf.data_ora_fine).format('YYYY-MM-DDTHH:mm');
1465            // 
1466            document.querySelector('#ee-title').value = event.title.rendered;
1467            document.querySelector('#ee-type').value = event.acf.tipologia_evento;
1468            document.querySelector('#ee-date-start').value = start;
1469            document.querySelector('#ee-date-end').value = end;
1470            document.querySelector('#ee-description').value = event.acf.informazioni;
1471            document.querySelector('#ee-local').value = event.acf.locale;
1472            document.querySelector('#ee-artists').value = event.acf.artisti;
1473            document.querySelector('#ee-website').value = event.acf.sito_web;
1474            document.querySelector('#ee-booking').value = event.acf.prenotazione;
1475            document.querySelector('#ee-entrance').value = event.acf.ingresso;
1476            document.querySelector('#ee-price').value = event.acf.prezzo_biglietto;
1477            document.querySelector('#ee-google-address').value = event.acf.indirizzo_google_maps;
1478            document.querySelector('div.ee-box').classList.add('show');
1479            //
1480            user_event_edit.id = id;
1481            user_event_edit.action = 'update_event';
1482            user_event_edit.post_title = event.title.rendered;
1483            user_event_edit.data_ora = event.acf.data_ora
1484            user_event_edit.data_ora_fine = event.acf.data_ora_fine
1485            user_event_edit.paese = event.acf.paese;
1486            user_event_edit.indirizzo = event.acf.indirizzo;
1487            user_event_edit.locale = event.acf.locale;
1488            user_event_edit.sito_web = event.acf.sito_web;
1489            user_event_edit.artisti = event.acf.artisti;
1490            user_event_edit.prenotazione = event.acf.prenotazione;
1491            user_event_edit.ingresso = event.acf.ingresso;
1492            user_event_edit.prezzo_biglietto = event.acf.prezzo_biglietto;
1493            user_event_edit.informazioni = event.acf.informazioni;
1494            user_event_edit.allegati = event.acf.allegati;
1495            user_event_edit.indirizzo_google_maps = event.acf.indirizzo_google_maps;
1496            user_event_edit.posizione = event.acf.posizione;
1497            user_event_edit.informazioni = event.acf.informazioni;
1498            user_event_edit.tipologia_evento = event.acf.tipologia_evento;
1499            user_event_edit.annulla_evento = event.acf.annulla_evento;
1500            //
1501            eventsEditEntrance();
1502        });
1503    }
1504}
1505
1506function eventsEditEntrance() {
1507    'use strict';
1508    switch (document.querySelector('#ee-entrance').value) {
1509        case 'A pagamento':
1510            document.querySelector('div.price').classList.add('show');
1511            document.querySelector('#ee-price').setAttribute('required', '');
1512            break;
1513        default:
1514            document.querySelector('div.price').value = '';
1515            document.querySelector('div.price').classList.remove('show');
1516            document.querySelector('#ee-price').removeAttribute('required');
1517            break;
1518    }
1519}
1520
1521function eventsEditClose() {
1522    'use strict';
1523    document.querySelector('body').classList.remove('scroll-lock');
1524    document.querySelector('div#ee').classList.remove('show');
1525    document.querySelector('div.ee-box').classList.remove('show');
1526    setTimeout(() => {
1527        eventsEditReset();
1528        document.querySelector('div#ee').classList.remove('ok');
1529    }, 500);
1530}
1531
1532function eventsEditReset() {
1533    'use strict';
1534    user_event_edit = JSON.parse(JSON.stringify(user_event_edit_model));
1535    var msg = document.querySelector('span.ee-box-send-msg');
1536    msg.classList.remove('error');
1537    msg.classList.remove('success');
1538    msg.innerHTML = '* campi obbligatori';
1539    document.querySelectorAll('div#ee input').forEach((el) => {
1540        el.classList.remove('error');
1541        el.value = '';
1542    });
1543    document.querySelectorAll('div#ee select').forEach((el) => {
1544        el.classList.remove('error');
1545        el.value = '';
1546    });
1547    document.querySelectorAll('div#ee textarea').forEach((el) => {
1548        el.classList.remove('error');
1549        el.value = '';
1550    });
1551    eventsEditEntrance();
1552}
1553
1554function eventsEditSend() {
1555    'use strict';
1556    if (!user_event_send) {
1557        user_event_send = true;
1558        var errors = 0;
1559        var msg = document.querySelector('span.ee-box-send-msg');
1560        msg.classList.remove('error');
1561        msg.innerHTML = '';
1562        document.querySelectorAll('div#ee input').forEach((el) => {
1563            if (el.required && el.value === '') {
1564                el.classList.add('error');
1565                errors++;
1566            } else {
1567                el.classList.remove('error');
1568            }
1569        });
1570        document.querySelectorAll('div#ee select').forEach((el) => {
1571            if (el.required && el.value === '') {
1572                el.classList.add('error');
1573                errors++;
1574            } else {
1575                el.classList.remove('error');
1576            }
1577        });
1578        document.querySelectorAll('div#ee textarea').forEach((el) => {
1579            if (el.required && el.value === '') {
1580                el.classList.add('error');
1581                errors++;
1582            } else {
1583                el.classList.remove('error');
1584            }
1585        });
1586        if (errors > 0) {
1587            msg.classList.add('error');
1588            msg.innerHTML = 'Compilare i campi obbligatori';
1589            user_event_send = false;
1590            return;
1591        }
1592        user_event_edit.data_ora = user_event_edit.data_ora.replace('T', ' ');
1593        user_event_edit.data_ora_fine = user_event_edit.data_ora_fine.replace('T', ' ');
1594        user_event_edit.utente = parseInt(document.querySelector('#user_id').value);
1595        msg.innerHTML = 'Invio in corso...';
1596        $.post({
1597            url: '/ajax/events.php',
1598            data: user_event_edit,
1599            success: function (response) {
1600                setTimeout(() => {
1601                    switch (response) {
1602                        case 'success':
1603                            switch (user_event_edit.action) {
1604                                case 'new_event':
1605                                    msg.innerHTML = `Evento inviato correttamente.`;
1606                                    break;
1607                                case 'update_event':
1608                                    msg.innerHTML = `Evento aggiornato correttamente.`;
1609                                    break;
1610                            }
1611                            msg.classList.add('success');
1612                            document.querySelector('div#ee').classList.add('ok');
1613                            setTimeout(() => {
1614                                document.location.href = '/eventi/bacheca/';
1615                            }, 2000);
1616                            break;
1617                        default:
1618                            msg.innerHTML = `Si è verifica un errore. Si prega di riprovare più tardi.`;
1619                            msg.classList.add('error');
1620                            break;
1621                    }
1622                    user_event_send = false;
1623                }, 500);
1624            },
1625        });
1626    }
1627}
1628
1629var event_cancel_popup = {
1630    action: 'cancel_event',
1631    id: false
1632};
1633
1634function eventsCancelPopup(id) {
1635    'use strict';
1636    event_cancel_popup.id = id;
1637    document.querySelector('#event-cancel').classList.remove('execute');
1638    document.querySelector('#event-cancel').classList.remove('success');
1639    document.querySelector('#event-cancel').classList.remove('error');
1640    document.querySelector('#event-cancel').classList.add('show');
1641}
1642
1643function eventsCancelPopupClose() {
1644    'use strict';
1645    event_cancel_popup.id = false;
1646    document.querySelector('#event-cancel').classList.remove('show');
1647    setTimeout(() => {
1648        document.querySelector('#event-cancel').classList.remove('execute');
1649        document.querySelector('#event-cancel').classList.remove('success');
1650        document.querySelector('#event-cancel').classList.remove('error');
1651    }, 500);
1652}
1653
1654function eventsCancelConfirm() {
1655    'use strict';
1656    document.querySelector('#event-cancel').classList.add('execute');
1657    $.post({
1658        url: '/ajax/events.php',
1659        data: event_cancel_popup,
1660        success: function (response) {
1661            setTimeout(() => {
1662                switch (response) {
1663                    case 'success':
1664                        document.querySelector('#event-cancel').classList.remove('execute');
1665                        document.querySelector('#event-cancel').classList.add('success');
1666                        setTimeout(() => {
1667                            document.location.href = '/eventi/bacheca/';
1668                        }, 2000);
1669                        break;
1670                    default:
1671                        document.querySelector('#event-cancel').classList.remove('execute');
1672                        document.querySelector('#event-cancel').classList.add('error');
1673                        setTimeout(() => {
1674                            document.location.href = '/eventi/bacheca/';
1675                        }, 2000);
1676                        break;
1677                }
1678                user_event_send = false;
1679            }, 500);
1680        },
1681    });
1682}
1683
1684var event_restore_popup = {
1685    action: 'restore_event',
1686    id: false
1687};
1688
1689function eventsRestorePopup(id) {
1690    'use strict';
1691    event_restore_popup.id = id;
1692    document.querySelector('#event-restore').classList.remove('execute');
1693    document.querySelector('#event-restore').classList.remove('success');
1694    document.querySelector('#event-restore').classList.remove('error');
1695    document.querySelector('#event-restore').classList.add('show');
1696}
1697
1698function eventsRestorePopupClose() {
1699    'use strict';
1700    event_restore_popup.id = false;
1701    document.querySelector('#event-restore').classList.remove('show');
1702    setTimeout(() => {
1703        document.querySelector('#event-restore').classList.remove('execute');
1704        document.querySelector('#event-restore').classList.remove('success');
1705        document.querySelector('#event-restore').classList.remove('error');
1706    }, 500);
1707}
1708
1709function eventsRestoreConfirm() {
1710    'use strict';
1711    document.querySelector('#event-restore').classList.add('execute');
1712    $.post({
1713        url: '/ajax/events.php',
1714        data: event_restore_popup,
1715        success: function (response) {
1716            setTimeout(() => {
1717                switch (response) {
1718                    case 'success':
1719                        document.querySelector('#event-restore').classList.remove('execute');
1720                        document.querySelector('#event-restore').classList.add('success');
1721                        setTimeout(() => {
1722                            document.location.href = '/eventi/bacheca/';
1723                        }, 2000);
1724                        break;
1725                    default:
1726                        document.querySelector('#event-restore').classList.remove('execute');
1727                        document.querySelector('#event-restore').classList.add('error');
1728                        setTimeout(() => {
1729                            document.location.href = '/eventi/bacheca/';
1730                        }, 2000);
1731                        break;
1732                }
1733                user_event_send = false;
1734            }, 500);
1735        },
1736    });
1737}
1738
1739
1740function autocompleteEventAddressInit() {
1741    setTimeout(function () {
1742        autocompleteEventAddress = new google.maps.places.Autocomplete(document.getElementById('ee-google-address'));
1743        autocompleteEventAddress.addListener('place_changed', autocompleteEventAddressPlaceChanged);
1744        document.querySelector('#ee-google-address').attributes.autocomplete = false;
1745    }, 1000);
1746}
1747
1748function autocompleteEventAddressPlaceChanged() {
1749    var place = autocompleteEventAddress.getPlace();
1750    //console.log(place);
1751    var paese = '';
1752    var indirizzo = '';
1753    var civico = '';
1754    place['address_components'].forEach(element => {
1755        let type = element['types'][0];
1756        switch (type) {
1757            case 'administrative_area_level_3':
1758                paese = element['long_name'];
1759                break;
1760            case 'route':
1761                indirizzo = element['long_name'];
1762                break;
1763            case 'street_number':
1764                civico = element['long_name'];
1765                break;
1766        }
1767    });
1768    user_event_edit.paese = paese;
1769    user_event_edit.indirizzo = `${indirizzo}, ${civico}`;
1770    user_event_edit.indirizzo_google_maps = place.formatted_address;
1771    user_event_edit.posizione = place.url;
1772}
1773
1774/* archive */
1775
1776function archiveOpenFilters() {
1777    'use strict';
1778    document.querySelector('div.archive-filters-checks').classList.add('open');
1779}
1780
1781function archiveCloseFilters() {
1782    'use strict';
1783    document.querySelector('div.archive-filters-checks').classList.remove('open');
1784}
1785
1786function archiveCategoriesAll() {
1787    'use strict';
1788    if (document.querySelector('input#tutte').checked) {
1789        document.querySelectorAll('.category-check').forEach((el) => {
1790            el.checked = true;
1791        });
1792    } else {
1793        document.querySelectorAll('.category-check').forEach((el) => {
1794            el.checked = false;
1795        });
1796    }
1797}
1798
1799function archiveCategoriesCheck() {
1800    'use strict';
1801    var checks = document.querySelectorAll('.category-check');
1802    var count = 0;
1803    checks.forEach((el) => {
1804        if (el.checked) {
1805            count++;
1806        }
1807    });
1808    if (count === checks.length) {
1809        document.querySelector('input#tutte').checked = true;
1810    } else {
1811        document.querySelector('input#tutte').checked = false;
1812    }
1813}
1814
1815function archiveCheckDates() {
1816    var now = moment();
1817    var date_start = moment(document.getElementById('date-start').value);
1818    var date_end = moment(document.getElementById('date-end').value);
1819    if (date_start > now) {
1820        document.getElementById('date-start').value = moment().format('YYYY-MM-DD');
1821    }
1822    if (date_end > now) {
1823        document.getElementById('date-end').value = moment().format('YYYY-MM-DD');
1824    }
1825    if (date_start > date_end) {
1826        document.getElementById('date-start').value = moment(date_end).format('YYYY-MM-DD');
1827    }
1828    document.getElementById('date-start').setAttribute('max', moment(date_end).format('YYYY-MM-DD'));
1829}
1830
1831function archiveSearch() {
1832    'use strict';
1833    var date_start = document.getElementById('date-start').value;
1834    var date_end = document.getElementById('date-end').value;
1835    var checks = document.querySelectorAll('.category-check');
1836    var categories = [];
1837    checks.forEach((el) => {
1838        if (el.checked) {
1839            categories.push(el.value);
1840        }
1841    });
1842    var url = '/archivio/?dal=' + date_start + '&al=' + date_end;
1843    if (categories.length > 0 && categories.length < checks.length) {
1844        url = url + '&cat=' + categories;
1845    }
1846    document.location.href = url;
1847}
1848
1849/* htmlentities */
1850
1851(function (window) {
1852    window.htmlentities = {
1853        encode: function (str) {
1854            var buf = [];
1855            for (var i = str.length - 1; i >= 0; i--) {
1856                buf.unshift(['&#', str[i].charCodeAt(), ';'].join(''));
1857            }
1858            return buf.join('');
1859        },
1860        decode: function (str) {
1861            return str.replace(/&#(\d+);/g, function (match, dec) {
1862                return String.fromCharCode(dec);
1863            });
1864        }
1865    };
1866})(window);
1867
1868/*
1869========== PAYPAL BUTTON
1870*/
1871
1872function initPayPalButton() {
1873    paypal.Buttons({
1874        style: {
1875            shape: 'pill',
1876            color: 'gold',
1877            layout: 'horizontal',
1878            label: 'pay',
1879
1880        },
1881        createOrder: function (data, actions) {
1882            return actions.order.create({
1883                purchase_units: [{
1884                    "description": "L'Ortobene - Abbonamento Cartaceo - 1 anno",
1885                    "amount": {
1886                        "currency_code": "EUR",
1887                        "value": 30
1888                    }
1889                }]
1890            });
1891        },
1892        onApprove: function (data, actions) {
1893            return actions.order.capture().then(function (orderData) {
1894                console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
1895                const element = document.getElementById('paypal-button-container');
1896                element.innerHTML = '';
1897                element.innerHTML = '<h3>Grazie per aver sottoscritto l\'abbonamento annaule.</h3>';
1898            });
1899        },
1900        onError: function (err) {
1901            console.log(err);
1902        }
1903    }).render('#paypal-button-container');
1904}
1905
1906/*
1907========== EDIZIONI DIGITALI
1908*/
1909
1910function edArchiveYears(year) {
1911    document.querySelector('div.de-years a.active').classList.remove('active');
1912    document.querySelector('div.de-years a.y-' + year).classList.add('active');
1913    document.querySelectorAll('div.de-list div.de-item').forEach((item) => {
1914        item.classList.remove('active');
1915    });
1916    document.querySelectorAll('div.de-list div.de-item.y-' + year).forEach((item) => {
1917        item.classList.add('active');
1918    });
1919}
1920
1921function yumpuShow() {
1922    document.querySelector('body').classList.add('scroll-lock');
1923    document.querySelector('div#yumpu').classList.add('show');
1924}
1925
1926function yumpuClose() {
1927    document.querySelector('body').classList.remove('scroll-lock');
1928    document.querySelector('div#yumpu').classList.remove('show');
1929}

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.