PageSourceSearch

https://museimpresa.com/wp-content/themes/wpcustomtheme/js/main.js?ver=6.5.12

js museimpresa.com collected 2026-09-24 21:28:37 UTC 46,834 bytes, 1,519 lines download raw bytes

1(function ($) {
2  $(document).ready(function () {
3    $(".accordion-el").click(function () {
4      if ($(".accordion-el", this).hasClass("collapsed")) {
5        $("i.fas", this).toggleClass("fa-chevron-down")
6      } else {
7        $("i.fas", this).toggleClass("fa-chevron-up")
8      }
9    })
10
11    $(".home_slider").slick({
12      dots: true,
13      prevArrow: false,
14      nextArrow: false,
15      infinite: true,
16      autoplay: true,
17      autoplaySpeed: 4000,
18      fade: true,
19      cssEase: "linear",
20    })
21    
22    /*
23        Per le scuole filter
24    */
25    
26    var f_reg_pls = ""
27    var f_set_pls = ""
28    var f_tip_pls = ""
29    var f_alf_pls = ""
30    
31    $('#filter-regione-per-le-scuole').on('change', function() {
32        f_reg_pls = this.value
33        filterPerLeScuole()
34    });
35    
36    $('#filter-settori-per-le-scuole').on('change', function() {
37        f_set_pls = this.value
38        filterPerLeScuole()
39    });
40    
41    $('#filter-tipologie-per-le-scuole').on('change', function() {
42        f_tip_pls = this.value
43        filterPerLeScuole()
44    });
45    
46    $('#filter-alfabetico-per-le-scuole').on('change', function() {
47        f_alf_pls = this.value
48        filterPerLeScuole()
49    });
50    
51    $("#per-le-scuole-input").on("keyup", function() {
52        var inputText = $(this).val().toUpperCase();
53        
54        if(inputText !== ''){
55            $("#risultati").css("display","block")
56        } else {
57            $("#risultati").css("display","none")
58        }
59
60        $("#risultati > [data-title]").each(function() {
61          var title = $(this).attr("data-title");
62          if (title.toUpperCase().indexOf(inputText) > -1) {
63            $(this).show();
64          } else {
65            $(this).hide();
66          }
67        });
68      });
69    
70    function filterPerLeScuole(){
71        $.ajax({
72        url: siteUrl + "/api/filter-per-le-scuole.php",
73        type: "POST",
74        data: {
75          regione: f_reg_pls,
76          settore: f_set_pls,
77          tipologia: f_tip_pls,
78          lettera: f_alf_pls,
79        },
80        dataType: "html",
81        success: function (data) {
82          $("#per-le-scuole-container").html(data)
83        },
84        error: function (request, error) {
85          alert("Errore imprevisto")
86          console.log(error)
87          console.log(request)
88        },
89      })
90    }
91     
92    // end per le scuole filter
93
94    // **** INIZIATIVE **** //
95    // Tipologia
96    var type = ""
97    setType = (passedType) => {
98      type = passedType
99      let dropReplace = ''
100      if(language == 'it_IT'){
101        dropReplace = 'TIPOLOGIA '
102      } else if(language == 'en_GB') {
103        dropReplace = 'TYPE '
104      }
105      if (type == "tutte") {
106        $("#dropdown-tipologia").html(dropReplace)
107      } else {
108        $("#dropdown-tipologia").html(type)
109      }
110      ajaxRequest()
111    }
112
113    // Anno
114    var year = ""
115    setYear = (passedYear) => {
116      year = passedYear
117      let dropReplace = ''
118      if(language == 'it_IT'){
119        dropReplace = 'ANNO '
120      } else if(language == 'en_GB') {
121        dropReplace = 'YEAR '
122      }
123      if (year == "tutti") {
124        $("#dropdown-anno").html(dropReplace)
125      } else {
126        $("#dropdown-anno").html(year)
127      }
128      ajaxRequest()
129    }
130
131    // Ricerca testuale
132    var search = ""
133    $("#iniziative-input").on("input", () => {
134      search = $("#iniziative-input").val()
135    })
136    $("#iniziative-input").bind("enterKey", (e) => {
137      search = e.target.value
138      ajaxRequest()
139    })
140    $("#iniziative-input").keydown(function (e) {
141      if (e.keyCode == 13) {
142        $(this).trigger("enterKey")
143      }
144    })
145
146    var ppp = 4 // Post per page
147    var pageNumber = 1
148
149    var typeForPag = ""
150    // Fetch con AJAX
151    function ajaxRequest() {
152      typeForPag = type
153      pageNumber = 1
154      $.ajax({
155        url: siteUrl + "/api/filter-iniziative.php",
156        type: "POST",
157        data: {
158          type: type.length > 0 ? type : "tutte",
159          year: year.length > 0 ? year : "tutti",
160          search: search,
161          addButton: true,
162        },
163        dataType: "html",
164        success: function (data) {
165          $("#iniziative-container").html(data)
166        },
167        error: function (request, error) {
168          alert("Errore imprevisto")
169          console.log(error)
170          console.log(request)
171        },
172      })
173    }
174
175    // Paginazione
176
177    $("body").on("click", "#more_posts", function () {
178      // Pulsante mostra di più premuto
179      $("#more_posts").attr("disabled", true) // Disabilito pulsante
180      var cat = $("#more_posts").data("cat")
181      iniziativeLoadPosts(cat)
182    })
183
184    function iniziativeLoadPosts(cat) {
185      pageNumber++
186      $.ajax({
187        type: "POST",
188        dataType: "html",
189        url: siteUrl + "/api/filter-iniziative.php",
190        data: {
191          type: typeForPag.length > 0 ? typeForPag : "tutte",
192          year: year.length > 0 ? year : "tutti",
193          search: search,
194          ppp: ppp,
195          pageNumber: pageNumber,
196          doNotPrint: true,
197        },
198        success: function (data) {
199          if (data.length) {
200            $(data).insertBefore("#load-container")
201            if(data.length > 40){
202                $("#more_posts").attr("disabled", false)
203            } else {
204                $("#more_posts").addClass('d-none')
205            }
206          } else {
207            $("#more_posts").attr("disabled", true)
208            $("#more_posts").addClass('d-none')
209          }
210        },
211        error: function (jqXHR, textStatus, errorThrown) {
212          $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown)
213        },
214      })
215      return false
216    }
217
218    // **** RASSEGNA **** //
219    // Calendario
220    $("#rassegna-cal-button").click(() => {
221      $("#rassegna-calendar").toggleClass("d-none")
222    })
223    var rassegnaStartDate = null
224    var rassegnaEndDate = null
225    var calendarID = document.getElementById("rassegna-calendar")
226    if (calendarID != null) {
227        var calendar = jsCalendar.new({
228            target: calendarID,
229        })
230        var clickNumber = 0
231        calendar.onDateClick((event, date) => {
232            if(clickNumber == 0){
233                // Primo click
234                rassegnaStartDate = date
235                calendar.select(date)
236                clickNumber = 1
237            } else if(clickNumber == 1) {
238                // Secondo click, controllo maggiore/minore
239                if(date.getTime() < rassegnaStartDate.getTime()){
240                    let tmp = rassegnaStartDate
241                    rassegnaStartDate = date
242                    rassegnaEndDate = tmp
243                } else {
244                    rassegnaEndDate = date
245                }
246                // Calcolo differenza e seleziono range
247                let diff = (rassegnaEndDate.getTime() - rassegnaStartDate.getTime()) / (1000 * 3600 * 24)
248                for(var i = 0; i < diff; i++){
249                    let tmp = new Date()
250                    tmp.setDate(rassegnaStartDate.getDate() + i)
251                    tmp.setMonth(rassegnaStartDate.getMonth())
252                    tmp.setFullYear(rassegnaStartDate.getFullYear())
253                    calendar.select(tmp)
254                }
255                calendar.select(rassegnaEndDate)
256                clickNumber = 2
257                $('#rassegna-calendar').addClass('d-none')
258                ajaxRequestRassegna()
259            } else if(clickNumber == 2) {
260                let diff = (rassegnaEndDate.getTime() - rassegnaStartDate.getTime()) / (1000 * 3600 * 24)
261                for(var i = 0; i < diff; i++){
262                    let tmp = new Date()
263                    tmp.setDate(rassegnaStartDate.getDate() + i)
264                    tmp.setMonth(rassegnaStartDate.getMonth())
265                    tmp.setFullYear(rassegnaStartDate.getFullYear())
266                    calendar.unselect(tmp)
267                }
268                calendar.unselect(rassegnaEndDate)
269                rassegnaStartDate = null
270                rassegnaEndDate = null
271                clickNumber = 0
272                ajaxRequestRassegna()
273            }
274        })
275    }
276
277    // Ricerca testuale
278    var rassegnaSearch = ""
279    $("#rassegna-input").on("input", () => {
280      rassegnaSearch = $("#rassegna-input").val()
281    })
282    $("#rassegna-input").bind("enterKey", (e) => {
283      rassegnaSearch = e.target.value
284      ajaxRequestRassegna()
285    })
286    $("#rassegna-input").keydown(function (e) {
287      if (e.keyCode == 13) {
288        $(this).trigger("enterKey")
289      }
290    })
291
292    var rassegnaPpp = 5 // Post per page
293    var rassegnaPageNumber = 1
294
295    // Fetch con AJAX
296    function ajaxRequestRassegna() {
297      rassegnaPageNumber = 1
298      let APIstart = ''
299      let APIend = ''
300      if(rassegnaStartDate != null && rassegnaEndDate != null){
301        APIstart = rassegnaStartDate.getDate() + '/' + (rassegnaStartDate.getMonth() + 1) + '/' + rassegnaStartDate.getFullYear()
302        APIend = rassegnaEndDate.getDate() + '/' + (rassegnaEndDate.getMonth() + 1) + '/' + rassegnaEndDate.getFullYear()
303      }
304      $.ajax({
305        url: siteUrl + "/api/filter-rassegna.php",
306        type: "POST",
307        data: {
308          startDate: APIstart,
309          endDate: APIend,
310          search: rassegnaSearch,
311          addButton: true,
312        },
313        dataType: "html",
314        success: function (data) {
315          $("#rassegna-container").html(data)
316        },
317        error: function (request, error) {
318          alert("Errore imprevisto")
319          console.log(error)
320          console.log(request)
321        },
322      })
323    }
324
325    // Paginazione
326    $("body").on("click", "#rassegna_more_posts", function () {
327      // Pulsante mostra di più premuto
328      $("#rassegna_more_posts").attr("disabled", true) // Disabilito pulsante
329      var cat = $("#rassegna_more_posts").data("cat")
330      rassegnaLoadPosts(cat)
331    })
332
333    function rassegnaLoadPosts(cat) {
334      rassegnaPageNumber++
335      let APIstart = ''
336      let APIend = ''
337      if(rassegnaStartDate != null && rassegnaEndDate != null){
338        APIstart = rassegnaStartDate.getDate() + '/' + (rassegnaStartDate.getMonth() + 1) + '/' + rassegnaStartDate.getFullYear()
339        APIend = rassegnaEndDate.getDate() + '/' + (rassegnaEndDate.getMonth() + 1) + '/' + rassegnaEndDate.getFullYear()
340      }
341      $.ajax({
342        type: "POST",
343        dataType: "html",
344        url: siteUrl + "/api/filter-rassegna.php",
345        data: {
346          startDate: APIstart,
347          endDate: APIend,
348          search: rassegnaSearch,
349          ppp: rassegnaPpp,
350          pageNumber: rassegnaPageNumber,
351          doNotPrint: true,
352        },
353        success: function (data) {
354          if (data.length) {
355            $(data).insertBefore("#rassegna-load-container")
356            $("#rassegna_more_posts").attr("disabled", false)
357            if(data.length > 40){
358                $("#rassegna_more_posts").attr("disabled", false)
359            } else {
360                $("#rassegna_more_posts").addClass('d-none')
361            }
362          } else {
363            $("#rassegna_more_posts").attr("disabled", true)
364            $("#rassegna_more_posts").addClass('d-none')
365          }
366        },
367        error: function (jqXHR, textStatus, errorThrown) {
368          $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown)
369        },
370      })
371      return false
372    }
373
374    // **** ASSOCIATI **** //
375
376    // Tipologia
377    var typeMuseo = ""
378    setTypeMuseo = (passedType) => {
379      typeMuseo = passedType
380      let dropReplace = ''
381      if(language == 'it_IT'){
382        dropReplace = 'TIPOLOGIA '
383      } else if(language == 'en_GB') {
384        dropReplace = 'TYPE '
385      }
386      if (typeMuseo == "tutte") {
387        $("#dropdown-tipologia-museo").html(dropReplace)
388      } else {
389        $("#dropdown-tipologia-museo").html(typeMuseo)
390      }
391      museiPageNumber = 0
392      filterMusei()
393    }
394
395    // Regione
396    var regioneMuseo = ""
397    setRegioneMuseo = (passedType, passedName) => {
398      regioneMuseo = passedType
399      if(language == 'it_IT'){
400        dropReplace = 'REGIONE '
401      } else if(language == 'en_GB') {
402        dropReplace = 'REGION '
403      }
404      if (regioneMuseo == "tutte") {
405        $("#dropdown-regione-musei").html(dropReplace)
406      } else {
407        $("#dropdown-regione-musei").html(passedName)
408      }
409      museiPageNumber = 0
410      filterMusei()
411    }
412
413    // Ricerca per lettera
414    var museoLettera = ""
415    setAlfabeticoArchivio = (passedType) => {
416      museoLettera = passedType
417      let dropReplace = ''
418      if(language == 'it_IT'){
419        dropReplace = 'ALFABETICO '
420      } else if(language == 'en_GB') {
421        dropReplace = 'ALPHABETICAL '
422      }
423      if (museoLettera == "tutte") {
424        $("#dropdown-alfabetico-museo-archive").html(dropReplace)
425      } else {
426        $("#dropdown-alfabetico-museo-archive").html(museoLettera)
427      }
428      museiPageNumberArchive = 0
429      filterMuseiArchivio()
430    }
431
432    //Tipologia archivio
433    var typeMuseoArchivio = ""
434    setTypeMuseoArchivio = (passedType) => {
435      typeMuseoArchivio = passedType
436      let dropReplace = ''
437      if(language == 'it_IT'){
438        dropReplace = 'TIPOLOGIA '
439      } else if(language == 'en_GB') {
440        dropReplace = 'TYPE '
441      }
442      if (typeMuseoArchivio == "tutte") {
443        $("#dropdown-tipologia-museo-archive").html(dropReplace)
444      } else {
445        $("#dropdown-tipologia-museo-archive").html(typeMuseoArchivio)
446      }
447      museiPageNumberArchive = 0
448      filterMuseiArchivio()
449    }
450
451    //Tipologia regione
452    var regioneMuseoArchivio = ""
453    setRegioneMuseoArchivio = (passedType, passedName) => {
454      regioneMuseoArchivio = passedType
455      let dropReplace = ''
456      if(language == 'it_IT'){
457        dropReplace = 'REGIONE '
458      } else if(language == 'en_GB') {
459        dropReplace = 'REGION '
460      }
461      if (regioneMuseoArchivio == "tutte") {
462        $("#dropdown-regione-musei-archive").html(dropReplace)
463      } else {
464        $("#dropdown-regione-musei-archive").html(passedName)
465      }
466      museiPageNumberArchive = 0
467      filterMuseiArchivio()
468    }
469
470    // Ricerca testuale - Archivio
471    var associatiSearchInput = ""
472    $("#musei-input").on("input", () => {
473      associatiSearchInput = $("#musei-input").val()
474      if(associatiSearchInput.length > 0){
475        fetchTags()
476      } else {
477        setTimeout(() => $('#associati-search-drop').removeClass('d-block'), 500)
478      }
479    })
480    $("#musei-input").bind("enterKey", (e) => {
481      associatiSearchInput = e.target.value
482      // filterMusei()
483    })
484    $("#musei-input").keydown(function (e) {
485      if (e.keyCode == 13) {
486        $(this).trigger("enterKey")
487      }
488    })
489
490    // Ricerca testuale - Home
491    var homeSearchInput = ""
492    $("#home-musei-input").on("input", () => {
493      homeSearchInput = $("#home-musei-input").val()
494      if(homeSearchInput.length > 0){
495        homeTags()
496      } else {
497        setTimeout(() => $('#associati-search-drop').removeClass('d-block'), 500)
498      }
499    })
500
501    var museiPpp = 9 // Post per page
502    var museiPageNumber = 1
503    var museiPageNumberArchive = 1
504    var museiPppArchive = 18 // Post per page
505
506    // Fetch tags - Archivio
507    fetchTags = () => {
508      $.ajax({
509        type: 'POST',
510        dataType: 'HTML',
511        url: siteUrl + '/api/fetch-tags.php',
512        data: {
513          input: associatiSearchInput
514        },
515        success: data => {
516          $('#associati-search-drop').html(data)
517          if(!$('#associati-search-drop').hasClass('d-block')){
518            $('#associati-search-drop').addClass('d-block')
519          }
520        },
521        error: (request, error) => {
522          // alert('Si è verificato un errore, riprova.')
523          console.log("Request:", request)
524          console.log("Error occurred:", error)
525        }
526      })
527    }
528
529    // Fetch tags - Home
530    homeTags = () => {
531      $.ajax({
532        type: 'POST',
533        dataType: 'HTML',
534        url: siteUrl + '/api/fetch-tags.php',
535        data: {
536          input: homeSearchInput,
537          pageType : 'home'
538        },
539        success: data => {
540          $('#associati-search-drop').html(data)
541          if(!$('#associati-search-drop').hasClass('d-block')){
542            $('#associati-search-drop').addClass('d-block')
543          }
544        },
545        error: (request, error) => {
546          alert('Si è verificato un errore, riprova.')
547          console.log("Request:", request)
548          console.log("Error occurred:", error)
549        }
550      })
551    }
552
553    var associatiTag = ""
554    // Home
555    homeSetTag = (passedType, passedName) => {
556      associatiTag = passedType
557      museiPageNumber = 0
558      $('#associati-search-drop').removeClass('d-block')
559      $('#associati-search-drop').addClass('d-none')
560      filterMusei()
561    }
562
563    /**
564     * Attiva e disattiva il submit della newsletter
565     * @param {boolean} check true/false se abilitare o meno il pulsante
566     */
567    acceptNewsletterToc = check => {
568      if(check){
569        document.getElementById('newsletter-sub-btn').classList.remove('disabled')
570      } else {
571        document.getElementById('newsletter-sub-btn').classList.add('disabled')
572      }
573    }
574
575    /**
576     * Valida il form della newsletter
577     * @param {HTMLFormElement} form il form da validare
578     */
579    newsletterValidation = form => {
580      let errors = ''
581      // Nome
582      if(form.sub_name.value.length == 0){
583        errors += '- Il campo "Nome" è obbligatorio\n'
584        form.sub_name.focus()
585      }
586
587      // Cognome
588      if(form.last_name.value.length == 0){
589        errors += '- Il campo "Cognome" è obbligatorio\n'
590      }
591
592      // E-Mail
593      if(form.email.value.length == 0){
594        errors += '- Il campo "Indirizzo E-Mail" è obbligatorio\n'
595      }
596
597      // Validazione
598      if(errors.length > 0){
599        alert('Attenzione:\n' + errors)
600        return false
601      } else {
602        return true
603      }
604    }
605
606    // Archivio
607    associatiSetTag = (passedType, passedName) => {
608      associatiTag = passedType
609      museiPageNumberArchive = 0
610      $('#associati-search-drop').removeClass('d-block')
611      $('#associati-search-drop').addClass('d-none')
612      filterMuseiArchivio()
613    }
614
615    // Paginazione
616    $("body").on("click", "#more_posts_musei", function () {
617      // Pulsante mostra di più premuto
618      $("#more_posts_musei").attr("disabled", true) // Disabilito pulsante
619      //var cat = $("#more_posts_musei").data("cat")
620      //var regione = $("#more_posts_musei").data("regione")
621      museiLoadPosts()
622    })
623
624    // Paginazione
625    $("body").on("click", "#more_posts_musei_archive", function () {
626      // Pulsante mostra di più premuto
627      $("#more_posts_musei_archive").attr("disabled", true) // Disabilito pulsante
628      museiLoadPostsArchive()
629    })
630
631    $("body").on("click", "#more_posts_musei_filtered", function () {
632      // Pulsante mostra di più premuto
633      $("#more_posts_musei_filtered").attr("disabled", true) // Disabilito pulsante
634      var cat = $("#more_posts_musei_filtered").data("cat")
635      var regione = $("#more_posts_musei_filtered").data("regione")
636      regioneMuseo = regione
637      typeMuseo = cat
638      filterMuseiMore()
639    })
640
641    $("body").on("click", "#more_posts_musei_filtered_archive", function () {
642      // Pulsante mostra di più premuto
643      $("#more_posts_musei_filtered_archive").attr("disabled", true) // Disabilito pulsante
644      var cat = $("#more_posts_musei_filtered_archive").data("cat")
645      var regione = $("#more_posts_musei_filtered_archive").data("regione")
646      regioneMuseoArchivio = regione
647      typeMuseoArchivio = cat
648      filterMuseiMoreArchivio()
649    })
650
651    function museiLoadPosts() {
652      museiPageNumber++
653      $.ajax({
654        type: "POST",
655        dataType: "html",
656        url: siteUrl + "/api/filter-musei.php",
657        data: {
658          ppp: museiPpp,
659          pageNumber: museiPageNumber,
660          //cat: cat,
661          //regione: regione,
662        },
663        success: function (data) {
664          if (data.length) {
665            console.log(data)
666            $(data).insertBefore("#load-container-musei")
667            if(data.length > 40){
668                $("#more_posts_musei").attr("disabled", false)
669            } else {
670                $('#more_posts_musei').addClass('d-none')
671            }
672          } else {
673            $("#more_posts_musei").attr("disabled", true)
674            $('#more_posts_musei').addClass('d-none')
675          }
676        },
677        error: function (jqXHR, textStatus, errorThrown) {
678          console.log(jqXHR + " :: " + textStatus + " :: " + errorThrown)
679        },
680      })
681    }
682
683    function museiLoadPostsArchive() {
684      museiPageNumberArchive++
685      $.ajax({
686        type: "POST",
687        dataType: "html",
688        url: siteUrl + "/api/filter-musei-archive.php",
689        data: {
690          ppp: museiPppArchive,
691          pageNumber: museiPageNumberArchive,
692        },
693        success: function (data) {
694          if (data.length) {
695            console.log(data)
696            $(data).insertBefore("#load-container-musei-archive")
697            if(data.length > 40){
698                $("#more_posts_musei_archive").attr("disabled", false)
699            } else {
700                $('#more_posts_musei_archive').addClass('d-none')
701            }
702          } else {
703            $("#more_posts_musei_archive").attr("disabled", true)
704            $('#more_posts_musei_archive').addClass('d-none')
705          }
706        },
707        error: function (jqXHR, textStatus, errorThrown) {
708          console.log(jqXHR + " :: " + textStatus + " :: " + errorThrown)
709        },
710      })
711    }
712
713    // Fetch con AJAX - Homepage
714    function filterMusei() {
715      museiPageNumber++
716      console.log(museiPageNumber)
717      $.ajax({
718        url: siteUrl + "/api/filter-musei-ordered.php",
719        type: "POST",
720        data: {
721          cat: typeMuseo.length > 0 ? typeMuseo : "tutte",
722          regione: regioneMuseo.length > 0 ? regioneMuseo : "tutte",
723          ppp: museiPpp,
724          pageNumber: museiPageNumber,
725          search: associatiTag.length > 0 ? associatiTag : 'tutte',
726          addButton: true,
727        },
728        dataType: "html",
729        success: function (data) {
730          $("#associati-home-container").html(data)
731        },
732        error: function (request, error) {
733          alert("Errore imprevisto")
734          console.log(error)
735          console.log(request)
736        },
737      })
738    }
739
740    // Fetch con AJAX - Musei e Archivi
741    function filterMuseiArchivio() {
742      museiPageNumberArchive++
743      $.ajax({
744        url: siteUrl + "/api/filter-musei-archive-ordered.php",
745        type: "POST",
746        data: {
747          museiLettera: museoLettera.length > 0 ? museoLettera : 'tutte',
748          cat: typeMuseoArchivio.length > 0 ? typeMuseoArchivio : "tutte",
749          regione: regioneMuseoArchivio.length > 0 ? regioneMuseoArchivio : "tutte",
750          ppp: museiPppArchive,
751          pageNumber: museiPageNumberArchive,
752          search: associatiTag.length > 0 ? associatiTag : 'tutte',
753          addButton: true,
754        },
755        dataType: "html",
756        success: function (data) {
757          $("#associati-archivio-container").html(data)
758        },
759        error: function (request, error) {
760          console.log(error)
761          console.log(request)
762        },
763      })
764    }
765
766    function filterMuseiMoreArchivio() {
767      museiPageNumberArchive++
768      $.ajax({
769        url: siteUrl + "/api/filter-musei-more-archive.php",
770        type: "POST",
771        data: {
772          museiLettera: museoLettera.length > 0 ? museoLettera : 'tutte',
773          cat: typeMuseoArchivio.length > 0 ? typeMuseoArchivio : "tutte",
774          regione: regioneMuseoArchivio.length > 0 ? regioneMuseoArchivio : "tutte",
775          ppp: museiPppArchive,
776          pageNumber: museiPageNumberArchive,
777          search: associatiTag.length > 0 ? associatiTag : 'tutte',
778        },
779        dataType: "html",
780        success: function (data) {
781          if (data.length) {
782            $(data).insertBefore("#load-container-musei-archive")
783            if(data.length > 40){
784                $("#more_posts_musei_filtered_archive").attr("disabled", false)
785            } else {
786                $('#more_posts_musei_filtered_archive').addClass('d-none')
787            }
788          } else {
789            $("#more_posts_musei_filtered_archive").attr("disabled", true)
790            $('#more_posts_musei_filtered_archive').addClass('d-none')
791          }
792        },
793        error: function (request, error) {
794          alert("Errore imprevisto")
795          console.log(error)
796          console.log(request)
797        },
798      })
799    }
800
801    function filterMuseiMore() {
802      museiPageNumber++
803      $.ajax({
804        url: siteUrl + "/api/filter-musei-more.php",
805        type: "POST",
806        data: {
807          cat: typeMuseo.length > 0 ? typeMuseo : "tutte",
808          regione: regioneMuseo.length > 0 ? regioneMuseo : "tutte",
809          ppp: museiPpp,
810          pageNumber: museiPageNumber,
811          search: associatiTag.length > 0 ? associatiTag : 'tutte',
812        },
813        dataType: "html",
814        success: function (data) {
815          if (data.length) {
816            $(data).insertBefore("#load-container-musei")
817            if(data.length > 40){
818                $("#more_posts_musei_filtered").attr("disabled", false)
819            } else {
820                $("#more_posts_musei_filtered").addClass('d-none')
821            }
822          } else {
823            $("#more_posts_musei_filtered").attr("disabled", true)
824            $("#more_posts_musei_filtered").addClass('d-none')
825          }
826        },
827        error: function (request, error) {
828          alert("Errore imprevisto")
829          console.log(error)
830          console.log(request)
831        },
832      })
833    }
834
835    // *** SINGLE MUSEO *** //
836    $("#s-ass-gallery").slick({
837      infinite: false,
838      slidesToShow: 3,
839      slidesToScroll: 1,
840      arrows: false,
841      dots: true,
842      responsive: [
843        // md
844        {
845          breakpoint: 992,
846          settings: {
847            slidesToShow: 2,
848          },
849        },
850        // xs
851        {
852          breakpoint: 576,
853          settings: {
854            slidesToShow: 1,
855          },
856        },
857      ],
858    })
859
860    // *** SINGLE ITINERARI *** //
861    if(document.getElementsByClassName('tappa-gallery')){
862      [...document.getElementsByClassName('tappa-gallery')].forEach(gallery => {
863        console.log("Gallery:", gallery)
864        $(gallery).slick({
865          infinite: false,
866          slidesToShow: 3,
867          slidesToScroll: 1,
868          arrows: false,
869          dots: true,
870          responsive: [
871            // md
872            {
873              breakpoint: 992,
874              settings: {
875                slidesToShow: 2,
876              },
877            },
878            // xs
879            {
880              breakpoint: 576,
881              settings: {
882                slidesToShow: 1,
883              },
884            },
885          ],
886        })
887      })
888    }
889
890    lightbox.option({
891      showImageNumberLabel: false,
892    })
893
894    // *** ARCHIVE APPROFONDIMENTI *** //
895    // Paginazione
896    $("body").on("click", "#approfondimenti_more_posts", function () {
897      // Pulsante mostra di più premuto
898      $("#approfondimenti_more_posts").attr("disabled", true) // Disabilito pulsante
899      var cat = $("#approfondimenti_more_posts").data("cat")
900      approfondimentiLoadPosts(cat)
901    })
902
903    var approfondimentiPpp = 4 // Post per page
904    var approfondimentiPageNumber = 1
905
906    function approfondimentiLoadPosts(cat) {
907      approfondimentiPageNumber++
908      $.ajax({
909        type: "POST",
910        dataType: "html",
911        url: siteUrl + "/api/load-approfondimenti.php",
912        data: {
913          ppp: approfondimentiPpp,
914          pageNumber: approfondimentiPageNumber,
915          doNotPrint: true,
916        },
917        success: function (data) {
918          if (data.length) {
919            $(data).insertBefore("#approfondimenti-load-container")
920            if(data.length > 40){
921                $("#approfondimenti_more_posts").attr("disabled", false)
922            } else {
923                $("#approfondimenti_more_posts").addClass('d-none')
924            }
925          } else {
926            $("#approfondimenti_more_posts").attr("disabled", true)
927            $("#approfondimenti_more_posts").addClass('d-none')
928          }
929        },
930        error: function (jqXHR, textStatus, errorThrown) {
931          $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown)
932        },
933      })
934      return false
935    }
936
937    // *** SINGLE ASSOCIATI *** //
938    setVideoID = (passedID) => {
939      $("#ytplayer").attr("src", "https://www.youtube.com/embed/" + passedID)
940    }
941
942    // *** NEWS *** //
943    var newsType = ""
944    newsSetType = (passedType) => {
945      newsType = passedType
946      if (newsType == "tutte") {
947        $("#dropdown-tipologia").html("Tipologia")
948      } else {
949        $("#dropdown-tipologia").html(newsType)
950      }
951      newsAjaxRequest()
952    }
953
954    // Calendario
955    $("#news-cal-button").click(() => {
956      $("#news-calendar").toggleClass("d-none")
957    })
958    var newsStartDate = null
959    var newsEndDate = null
960    var newsCalendarID = document.getElementById("news-calendar")
961    if (newsCalendarID != null) {
962      var calendar = jsCalendar.new({
963        target: newsCalendarID,
964      })
965      var clickNumber = 0
966      calendar.onDateClick((event, date) => {
967        if(clickNumber == 0){
968            // Primo click
969            newsStartDate = date
970            calendar.select(date)
971            clickNumber = 1
972        } else if(clickNumber == 1) {
973            // Secondo click, controllo maggiore/minore
974            if(date.getTime() < newsStartDate.getTime()){
975                let tmp = newsStartDate
976                newsStartDate = date
977                newsEndDate = tmp
978            } else {
979                newsEndDate = date
980            }
981            // Calcolo differenza e seleziono range
982            let diff = (newsEndDate.getTime() - newsStartDate.getTime()) / (1000 * 3600 * 24)
983            for(var i = 0; i < diff; i++){
984                let tmp = new Date()
985                tmp.setDate(newsStartDate.getDate() + i)
986                tmp.setMonth(newsStartDate.getMonth())
987                tmp.setFullYear(newsStartDate.getFullYear())
988                calendar.select(tmp)
989            }
990            calendar.select(newsEndDate)
991            clickNumber = 2
992            $('#news-calendar').addClass('d-none')
993            newsAjaxRequest()
994        } else if(clickNumber == 2) {
995            // Reset calendario
996            let diff = (newsEndDate.getTime() - newsStartDate.getTime()) / (1000 * 3600 * 24)
997            for(var i = 0; i < diff; i++){
998                let tmp = new Date()
999                tmp.setDate(newsStartDate.getDate() + i)
1000                tmp.setMonth(newsStartDate.getMonth())
1001                tmp.setFullYear(newsStartDate.getFullYear())
1002                calendar.unselect(tmp)
1003            }
1004            calendar.unselect(newsEndDate)
1005            newsStartDate = null
1006            newsEndDate = null
1007            clickNumber = 0
1008            newsAjaxRequest()
1009        }
1010      })
1011    }
1012
1013    // Ricerca testuale
1014    var newsSearch = ""
1015    $("#news-input").on("input", () => {
1016      newsSearch = $("#news-input").val()
1017    })
1018    $("#news-input").bind("enterKey", (e) => {
1019      newsSearch = e.target.value
1020      newsAjaxRequest()
1021    })
1022    $("#news-input").keydown(function (e) {
1023      if (e.keyCode == 13) {
1024        $(this).trigger("enterKey")
1025      }
1026    })
1027
1028    var newsPpp = 6 // Post per page
1029    var newsPageNumber = 1
1030
1031    var typeForPag = ""
1032    // Fetch con AJAX
1033    function newsAjaxRequest() {
1034      typeForPag = newsType
1035      pageNumber = 1
1036      let APIstart = ''
1037      let APIend = ''
1038      if(newsStartDate != null && newsEndDate != null){
1039        APIstart = newsStartDate.getDate() + '/' + (newsStartDate.getMonth() + 1) + '/' + newsStartDate.getFullYear()
1040        APIend = newsEndDate.getDate() + '/' + (newsEndDate.getMonth() + 1) + '/' + newsEndDate.getFullYear()
1041      }
1042      $.ajax({
1043        url: siteUrl + "/api/filter-news.php",
1044        type: "POST",
1045        data: {
1046          type: newsType.length > 0 ? newsType : "tutte",
1047          startDate: APIstart,
1048          endDate: APIend,
1049          search: newsSearch,
1050          addButton: true,
1051        },
1052        dataType: "html",
1053        success: function (data) {
1054          $("#news-container").html(data)
1055        },
1056        error: function (request, error) {
1057          console.log(error)
1058          console.log(request)
1059        },
1060      })
1061    }
1062
1063    // Paginazione
1064    $("body").on("click", "#news_more_posts", function () {
1065      // Pulsante mostra di più premuto
1066      $("#news_more_posts").attr("disabled", true) // Disabilito pulsante
1067      var cat = $("#news_more_posts").data("cat")
1068      newsLoadPosts(cat)
1069    })
1070
1071    function newsLoadPosts(cat) {
1072      newsPageNumber++
1073      let APIstart = ''
1074      let APIend = ''
1075      if(newsStartDate != null && newsEndDate != null){
1076        APIstart = newsStartDate.getDate() + '/' + (newsStartDate.getMonth() + 1) + '/' + newsStartDate.getFullYear()
1077        APIend = newsEndDate.getDate() + '/' + (newsEndDate.getMonth() + 1) + '/' + newsEndDate.getFullYear()
1078      }
1079      $.ajax({
1080        type: "POST",
1081        dataType: "html",
1082        url: siteUrl + "/api/filter-news.php",
1083        data: {
1084          type: typeForPag.length > 0 ? typeForPag : "tutte",
1085          startDate: APIstart,
1086          endDate: APIend,
1087          search: search,
1088          ppp: newsPpp,
1089          pageNumber: newsPageNumber,
1090          doNotPrint: true,
1091        },
1092        success: function (data) {
1093          if (data.length) {
1094            $(data).insertBefore("#news-load-container")
1095            if(data.length > 40){
1096                $("#news_more_posts").attr("disabled", false)
1097            } else {
1098                $("#news_more_posts").addClass('d-none')
1099            }
1100          } else {
1101            $("#news_more_posts").attr("disabled", true)
1102            $("#news_more_posts").addClass('d-none')
1103          }
1104        },
1105        error: function (jqXHR, textStatus, errorThrown) {
1106          $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown)
1107        },
1108      })
1109      return false
1110    }
1111
1112    // *** ARCHIVE ITINERARI *** //
1113    var itinerariType = ""
1114    itinerariSetRegion = (passedType) => {
1115      itinerariType = passedType
1116      let dropReplace = ''
1117      if(language == 'it_IT'){
1118        dropReplace = 'REGIONE'
1119      } else if(language == 'en_GB') {
1120        dropReplace = 'REGION'
1121      }
1122      if (itinerariType == "tutte") {
1123        $("#dropdown-tipologia").html(dropReplace)
1124      } else {
1125        $("#dropdown-tipologia").html(itinerariType)
1126      }
1127      itinerariAjaxRequest()
1128    }
1129
1130    // Ricerca testuale
1131    var itinerariSearch = ""
1132    $("#itinerari-input").on("input", () => {
1133      itinerariSearch = $("#itinerari-input").val()
1134    })
1135    $("#itinerari-input").bind("enterKey", (e) => {
1136      itinerariSearch = e.target.value
1137      itinerariAjaxRequest()
1138    })
1139    $("#itinerari-input").keydown(function (e) {
1140      if (e.keyCode == 13) {
1141        $(this).trigger("enterKey")
1142      }
1143    })
1144
1145    var itinerariPpp = 5 // Post per page
1146    var itinerariPageNumber = 1
1147
1148    var itinerariTypeForPag = ""
1149    // Fetch con AJAX
1150    function itinerariAjaxRequest() {
1151      itinerariTypeForPag = itinerariType
1152      itinerariPageNumber = 1
1153      $.ajax({
1154        url: siteUrl + "/api/filter-itinerari.php",
1155        type: "POST",
1156        data: {
1157          type: itinerariType.length > 0 ? itinerariType : "tutte",
1158          search: itinerariSearch,
1159          addButton: true,
1160        },
1161        dataType: "html",
1162        success: function (data) {
1163          $("#itinerari-container").html(data)
1164        },
1165        error: function (request, error) {
1166          console.log(error)
1167          console.log(request)
1168        },
1169      })
1170    }
1171
1172    // Paginazione
1173    $("body").on("click", "#itinerari_more_posts", function () {
1174      // Pulsante mostra di più premuto
1175      $("#itinerari_more_posts").attr("disabled", true) // Disabilito pulsante
1176      var cat = $("#itinerari_more_posts").data("cat")
1177      itinerariLoadPosts(cat)
1178    })
1179
1180    function itinerariLoadPosts(cat) {
1181      itinerariPageNumber++
1182      $.ajax({
1183        type: "POST",
1184        dataType: "html",
1185        url: siteUrl + "/api/filter-itinerari.php",
1186        data: {
1187          type: itinerariTypeForPag.length > 0 ? itinerariTypeForPag : "tutte",
1188          search: itinerariSearch,
1189          ppp: itinerariPpp,
1190          pageNumber: itinerariPageNumber,
1191          doNotPrint: true,
1192        },
1193        success: function (data) {
1194          if (data.length) {
1195            $(data).insertBefore("#itinerari-load-container")
1196            if(data.length > 40){
1197                $("#itinerari_more_posts").attr("disabled", false)
1198            } else {
1199                $("#itinerari_more_posts").addClass('d-none')
1200            }
1201          } else {
1202            $("#itinerari_more_posts").attr("disabled", true)
1203            $("#itinerari_more_posts").addClass('d-none')
1204          }
1205        },
1206        error: function (jqXHR, textStatus, errorThrown) {
1207          $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown)
1208        },
1209      })
1210      return false
1211    }
1212
1213    // *** AREA RISERVATA *** //
1214
1215    var areaPageNumber = 1
1216
1217    // Paginazione
1218    $("body").on("click", "#area_more_posts", function () {
1219      // Pulsante mostra di più premuto
1220      $("#area_more_posts").attr("disabled", true) // Disabilito pulsante
1221      var cat = $("#area_more_posts").data("cat")
1222      areaLoadPosts(cat)
1223    })
1224
1225    function areaLoadPosts(cat) {
1226      areaPageNumber++
1227      $.ajax({
1228        type: "POST",
1229        dataType: "html",
1230        url: siteUrl + "/api/filter-area.php",
1231        data: {
1232          type: cat,
1233          ppp: 5,
1234          pageNumber: areaPageNumber,
1235        },
1236        success: function (data) {
1237          if (data.length) {
1238            $(data).insertBefore("#area-load-container")
1239            $("#area-load-container").attr("disabled", false)
1240          } else {
1241            $("#area-load-container").attr("disabled", true)
1242          }
1243        },
1244        error: function (jqXHR, textStatus, errorThrown) {
1245          $loader.html(jqXHR + " :: " + textStatus + " :: " + errorThrown)
1246        },
1247      })
1248      return false
1249    }
1250
1251    // *** HEADER *** //
1252    // Ricerca testuale
1253    var headerSearch = ""
1254    $("#header-input").on("input", () => {
1255      headerSearch = $("#header-input").val()
1256    })
1257    $("#header-input").bind("enterKey", (e) => {
1258      headerSearch = e.target.value
1259      if(headerSearch.length >= 3){
1260        headerAjaxRequest()
1261      } else {
1262          alert("Inserisci almeno tre caratteri per cominciare la ricerca.")
1263      }
1264    })
1265    $("#header-input").keydown(function (e) {
1266      if (e.keyCode == 13) {
1267        $(this).trigger("enterKey")
1268      }
1269    })
1270
1271    function headerAjaxRequest() {
1272      $.ajax({
1273        url: siteUrl + "/api/search.php",
1274        type: "POST",
1275        data: {
1276          search: headerSearch,
1277        },
1278        dataType: "html",
1279        success: function (data) {
1280          $("#header-search-results").html(data)
1281        },
1282        error: function (request, error) {
1283          console.log(error)
1284          console.log(request)
1285        },
1286      })
1287    }
1288
1289    // *** ¿ DONDE ESTA LA BIBLIOTECA ? *** //
1290    // Ricerca testuale
1291    let bookSearch = ''
1292    let bookPage = 1
1293    let prevBookSearch = ''
1294
1295    if(document.getElementById('libri-input')){
1296      // Listner per tasto Enter
1297      document.getElementById('libri-input').onkeypress = e => {
1298        if(!e){
1299          e = window.event
1300        }
1301        let keyCode = e.code || e.key
1302        if(keyCode == 'Enter'){
1303          searchBook()
1304        }
1305      }
1306    }
1307    
1308    // Ricerca biblioteca, funzione per impostare il settore
1309    var bookSector = 'Tutti'
1310    setBookSector = value => {
1311        if(value != 'Tutti'){
1312            bookSector = value
1313            document.getElementById('biblioteca-drop-sect').innerHTML = value
1314        } else {
1315            bookSector = 'Tutti'
1316            document.getElementById('biblioteca-drop-sect').innerHTML = 'Settore'
1317        }
1318        
1319    }
1320    
1321    // Check seleziona tutto
1322    bookSelectAllChecks = allBooksCheckbox => {
1323        let check = allBooksCheckbox.checked
1324        let checkboxes = document.querySelectorAll('.filter')
1325        for (let checkbox of checkboxes) {
1326            checkbox.checked = check
1327        }
1328    }
1329    
1330
1331    // Ricerca biblioteca
1332    searchBook = () => {
1333      bookSearch = document.getElementById('libri-input').value
1334      annoFrom = document.getElementById('anno-from').value
1335      annoTo = document.getElementById('anno-to').value
1336
1337      bookPage = 1
1338      
1339      document.getElementById('libri-load-button').classList.remove('d-none')
1340
1341        // calc filters
1342        var filters = []
1343        var checkboxes = document.querySelectorAll('.filter:checked')
1344    
1345        for (var i = 0; i < checkboxes.length; i++) {
1346          filters.push(checkboxes[i].value)
1347        }
1348          
1349        $.ajax({
1350          url: siteUrl + '/api/search-book.php',
1351          type: 'POST',
1352          data: {
1353            search: bookSearch,
1354            page: bookPage,
1355            filters: filters,
1356            bookSector: bookSector,
1357            anno_from: annoFrom,
1358            anno_to: annoTo
1359          },
1360          dataType: 'html',
1361          success: data => {
1362            if(data == '-1'){
1363              $('#libri-content').html('Nessun libro trovato.')
1364              $("#libri-load-button").attr("disabled", true)
1365            } else {
1366              $('#libri-content').html(data)
1367              $("#libri-load-button").attr("disabled", false)
1368            }
1369            $('#libri-reset').removeClass('d-none')
1370            prevBookSearch = bookSearch
1371          },
1372          error: (request, error) => {
1373            alert('Si è verificato un errore durante la ricerca. Riprova.')
1374            console.log("Error in searchBook:", error)
1375            console.log("Request:", request)
1376          }
1377        })
1378      
1379    }
1380
1381    // Tasto Reset
1382    resetBooks = () => {
1383      $.ajax({
1384        url: siteUrl + '/api/search-book.php',
1385        type: 'POST',
1386        data: {
1387          reset: true
1388        },
1389        dataType: 'html',
1390        success: data => {
1391          $('#libri-content').html(data)
1392          $('#libri-reset').addClass('d-none')
1393          $("#libri-load-button").attr("disabled", false)
1394          $(".filter").each(function(){
1395              $(this).prop("checked", false)
1396          })
1397          bookSearch = ''
1398          bookPage = 1
1399          bookSector = 'Tutti'
1400          document.getElementById('libri-input').value = ''
1401          document.getElementById('anno-from').value = ''
1402          document.getElementById('anno-to').value = ''
1403          document.getElementById('biblioteca-drop-sect').innerHTML = 'Settore'
1404          document.getElementById('libri-load-button').classList.remove('d-none')
1405        },
1406        error: (request, error) => {
1407          alert('Si è verificato un errore durante la ricerca. Riprova.')
1408          console.log("Error in searchBook:", error)
1409          console.log("Request:", request)
1410        }
1411      })
1412    }
1413
1414    // Tasto carica altro
1415    loadMoreBook = () => {
1416        
1417        // calc filters
1418        var filters = []
1419        var checkboxes = document.querySelectorAll('.filter:checked')
1420
1421        for (var i = 0; i < checkboxes.length; i++) {
1422          filters.push(checkboxes[i].value)
1423        }
1424        
1425        annoFrom = document.getElementById('anno-from').value
1426        annoTo = document.getElementById('anno-to').value
1427        
1428      bookPage++
1429      $.ajax({
1430        url: siteUrl + '/api/search-book.php',
1431        type: 'POST',
1432        data: {
1433          search: bookSearch,
1434          page: bookPage,
1435          filters: filters,
1436          anno_from: annoFrom,
1437          anno_to: annoTo
1438        },
1439        dataType: 'html',
1440        success: data => {
1441          if (data.length > 0 && data != "-1") {
1442            $('#libri-content').append(data)
1443            $("#libri-load-button").attr("disabled", false)
1444          } else {
1445            $("#libri-load-button").attr("disabled", true)
1446            $("#libri-load-button").addClass('d-none')
1447          }
1448        },
1449        error: (request, error) => {
1450          alert('Si è verificato un errore durante il caricamento. Riprova.')
1451          console.log("Error in loadMoreBook:", error)
1452          console.log("Request:", request)
1453        }
1454      })
1455    }
1456
1457    /**
1458     * Modifica il pulsante di caricameno mettendo uno spinner
1459     */
1460    switchEditBooksToSpinner = () => {
1461      // Sostituisco pulsante con spinner, quindi mostro scritta di caricamento
1462      document.getElementById('bibl-edit-btn').classList.add('d-none')
1463      document.getElementById('bibl-edit-wait').classList.remove('d-none')
1464      document.getElementById('bibl-edit-wait').classList.add('d-flex')
1465      document.getElementById('bibl-edit-wait-desc').classList.remove('d-none')
1466
1467      document.querySelector('#bibl-upload-button').disabled = true
1468      document.querySelector('#bibl-download').disabled = true
1469    }
1470
1471    /**
1472     * Scarica i libri
1473     */
1474    downloadBooks = async () => {
1475      // Disabilito i pulsanti delle altre funzioni
1476      document.querySelector('#bibl-upload-button').disabled = true
1477      document.querySelector('#bibl-edit-btn').disabled = true
1478
1479      // Sostituisco pulsante download con uno spinner
1480      document.getElementById('bibl-download').classList.add('d-none')
1481      document.getElementById('bibl-download-wait').classList.remove('d-none')
1482      try {
1483        const url = siteUrl + '/api/download-libri.php'
1484        fetch(url, {
1485          method: 'GET'
1486        })
1487        .then(response => response.json())
1488        .then(data => {
1489          if(data.file){
1490            let file = document.createElement('a')
1491            file.href = data.file
1492            file.download = 'Libreria.xlsx'
1493            file.click()
1494            // Riabilito tutt i pulsanti
1495            document.getElementById('bibl-download').classList.remove('d-none')
1496            document.getElementById('bibl-download-wait').classList.add('d-none')
1497
1498            document.querySelector('#bibl-upload-button').disabled = false
1499            document.querySelector('#bibl-edit-btn').disabled = false
1500          } else {
1501            throw data
1502          }
1503        })
1504      } catch (error) {
1505        console.log("Error in main.downloadBooks:", error)
1506        alert('Si è verificato un errore')
1507      }
1508    }
1509
1510	$(document).ready(function(){
1511		var path = window.location.pathname.split("/")
1512		path = path.filter(item => item != '')
1513		if(path.length === 1 && path[0] == 'biblioteca'){
1514			searchBook()
1515		}
1516	})
1517	
1518  })
1519})(jQuery)

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.