$(document).ready(function () {
    
    $(".btn-responsive-menu").click(function () {
        $("#menudiservizio").toggleClass("show");
        $(".MenuPushElencoVoci").toggleClass("MenuPushElencoVociAttivo");
        $(".MenuPushOverlay").toggleClass("MenuPushOverlayAttivo");
        $(this).toggleClass("active");
        $(document.body).toggleClass("MenuPushResponsive-push-toright");
        $("#RigaMenuPush").toggleClass("MenuPushResponsive-open");
    });
    $(".MenuPushOverlay").click(function () {
        $("#menudiservizio").toggleClass("show");
        $(".MenuPushElencoVoci").toggleClass("MenuPushElencoVociAttivo");
        $(".MenuPushOverlay").toggleClass("MenuPushOverlayAttivo");
        $(this).toggleClass("active");
        $(document.body).toggleClass("MenuPushResponsive-push-toright");
        $("#RigaMenuPush").toggleClass("MenuPushResponsive-open");
    });

    //massimoCa 05/07/2022
    if (localStorage.getItem("pathFavicon")) {
        $(".icoFavicon").prop("href", localStorage.getItem("pathFavicon"));
    }


    setTimeout(function () {
        wrapper = document.querySelector('.cmp-rating');
        initRatings();

        //codice che serve per far alzare o abbassare la label di suggerimento
        $('form').find('input,textarea').each((index, input) => {
            $(input).on('focusin focusout', () => {
                var label = $(input).parents('form').find('label[for="' + $(input).attr('id') + '"]');
                if ($(label).length > 0) {
                    if (!$(input).is(":focus")) {
                        if (!$(input).val()) {
                            label.removeClass('active');
                        }
                    } else {
                        label.addClass('active');
                    }
                }
            });
            var label = $(input).parents('form').find('label[for="' + $(input).attr('id') + '"]');

            if ($(input).val()) {//se è già valorizzata
                label.addClass('active');
            }
            if ($(input).is(":focus")) { //se ho già il focus
                label.addClass('active');
            }
        });

        //questo script serve per spostare il tiTroviIn da un posto all'altro 
        if ($("#panelTiTroviInOrigine").length > 0) {
            if ($("#panelTiTroviInDestinazione").length > 0) {
                $("#panelTiTroviInDestinazione").append($("#panelTiTroviInOrigine"));
            }
        }

        //questo script serve per spostare il pannello laterale da un posto all'altro 
        if ($("#panelLateraleOrigine").length > 0) {
            if ($("#panelLateraleDestinazione").length > 0) {
                $("#panelLateraleDestinazione").append($("#panelLateraleOrigine"));
            }
        }


        window.onscroll = function () { myFunctionScroll(); };


        var backToTopElement = document.getElementById('backToTop');
        var backToTop = new bootstrap.BackToTop(backToTopElement, {
            scrollLimit: 100
        });

        $('img.enlargeable').addClass('img-enlargeable').click(function () {
            var src = $(this).attr('src');
            var modal;

            function removeModal() {
                modal.remove();
                $('body').off('keyup.modal-close');
            }
            modal = $('<div>').css({
                background: 'RGBA(0,0,0,.5) url(' + src + ') no-repeat center',
                backgroundSize: 'contain',
                width: '100%',
                height: '100%',
                position: 'fixed',
                zIndex: '10000',
                top: '0',
                left: '0',
                cursor: 'zoom-out'
            }).click(function () {
                removeModal();
            }).appendTo('body');
            //handling ESC
            $('body').on('keyup.modal-close', function (e) {
                if (e.key === 'Escape') {
                    removeModal();
                }
            });
        });
    }, 100);

    //nascondo e visualizzo solo i primi 15
    let caricaFinoA = 9;

    visualizzaNascontiPannelli(caricaFinoA);

    $("#btnMostraAltri").click(function () {
        caricaFinoA = caricaFinoA + 9;
        visualizzaNascontiPannelli(caricaFinoA);
        return false;
    });

    $("#txtRicerca1").keyup(function () {
        caricaFinoA = 9;
        visualizzaNascontiPannelli(caricaFinoA);
    });

    handleImageClick();
});

// Funzione per creare dinamicamente il modal
function createImageModal() {
    // Controlla se il modal esiste già, in tal caso rimuovilo
    if ($('#imagemodal').length > 0) {
        $('#imagemodal').remove();
    }

    // Creazione del modal
    var imageModal = $(
        '<div class="modal fade" id="imagemodal" tabindex="-1" role="dialog" aria-hidden="true">' +
        '  <div class="modal-dialog" role="document">' +
        '    <div class="modal-content">' +
        '      <div class="modal-header">' +
        '        <h5 class="modal-title" id="lblTitoloImgPreview"></h5>' +
        '        <button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Chiudi finestra modale" data-focus-mouse="false">' +
        '            <svg class="icon">' +
        '                <use href="assets/bootstrap-italia/dist/svg/sprites.svg#it-close"></use>' +
        '            </svg>' +
        '        </button>' +
        '      </div>' +
        '      <div class="modal-body pb-4">' +
        '        <img class="imagepreview" src="" style="width: 100%;" />' +
        '        <p id="lblDescrImgPreview"></p>' +
        '      </div>' +
        '    </div>' +
        '  </div>' +
        '</div>'
    );

    // Aggiungi il modal al body
    $('body').append(imageModal);
}

// Funzione per gestire il clic sull'immagine
function handleImageClick() {
    $('.ImgModaleClick').on('click', function () {
        // Crea il modal dinamicamente
        createImageModal();

        // Imposta l'immagine e i dati del modal
        var imageSource = $(this).attr('src');
        var title = $(this).parent().find(".LinkTitoloFotoGallerie").text();
        var description = $(this).parent().find(".LinkDescrFotoGallerie").text();

        $('.imagepreview').attr('src', imageSource);
        $("#lblTitoloImgPreview").text(title);
        $("#lblDescrImgPreview").text(description);

        // Mostra il modal
        $('#imagemodal').modal('show');
    });
}


function visualizzaNascontiPannelli(caricaFinoA) {
    var Mostrati = 0;
    var NumRecord = 0;
 
    $(".panelServizi > .DINAMICOROUTINDELMODULO").each(function () {
        if (Mostrati < caricaFinoA) {            
            if ($("#txtRicerca1").val() !== "") {
                if ($(this).find(".card-title").text().toUpperCase().includes($("#txtRicerca1").val().toUpperCase())) {
                    $(this).show();
                    Mostrati++;
                    NumRecord++;
                } else {
                    $(this).hide();
                }
            } else {
                $(this).show();
                Mostrati++;
                NumRecord++;
            }
        } else {
            if ($("#txtRicerca1").val() !== "") {
                if ($(this).find(".card-title").text().toUpperCase().includes($("#txtRicerca1").val().toUpperCase())) {
                    NumRecord++;
                }
                $(this).hide();
            } else {
                NumRecord++;
                $(this).hide();
            }
        }
    });

    $("#lblRicerca").html("<strong>" + NumRecord + "</strong> servizi trovati in ordine alfabetico");

    if (NumRecord > caricaFinoA) {
        $("#btnMostraAltri").show();
    } else {
        $("#btnMostraAltri").hide();
    }
}

/* INIZIO PARTE PER LA VALUTAZIONE DEL SITO */
var wrapper = document.querySelector('.cmp-rating');
var activeStep = 0;

function initRatings() {
    if (!wrapper) return;
    var radios = wrapper.querySelectorAll('.rating input');
    var option = wrapper.querySelectorAll('.radioFeedback input');
    var btnNext = wrapper.querySelector('.btn-next');
    var btnBack = wrapper.querySelector('.btn-back');
    var btnBack2 = wrapper.querySelector('.btn-back2');
    radios.forEach(function (radio) {
        radio.addEventListener('change', function () {
            if (radio.checked) {

                option.forEach(function (radio) {
                    radio.checked = false;
                });

                $("#valueRating").val($(radio).val());
                if (activeStep == 0) {
                    openNextStep();
                } else if (activeStep == 2) {
                    //torno indietro
                    backToPrevious();
                }
                cambiaCaption(radio);
            }
        });
    });
    option.forEach(function (radio) {
        radio.addEventListener('change', function () {
            if (radio.checked) {
                cambiaDescrizione(radio);
            }
        });
    });

    if (btnNext) {
        btnNext.addEventListener('click', function () {
            closePreviousStep();
            openNextStep();
        });
    }

    if (btnBack) {
        btnBack.addEventListener('click', function () {
            closePreviousStep();
            backToPrevious();
        });
    }
    if (btnBack2) {
        btnBack2.addEventListener('click', function () {
            closePreviousStep();
            backToPrevious();
        });
    }
}

function cambiaCaption(radio) {

    if (parseInt($(radio).val()) > 3) {
        $("#fieldset-rating-one").show();
        $("#fieldset-rating-two").hide();
    } else {
        $("#fieldset-rating-one").hide();
        $("#fieldset-rating-two").show();
    }
    
}

function cambiaDescrizione(radio) {

    $("#valueDescrizione").val($(radio).parent().find("label").text());

}

function openNextStep() {
    var steps = wrapper.querySelectorAll('[data-step]');
    var formWrapper = wrapper.querySelector('.form-rating');
    var cardRating = wrapper.querySelector('.cmp-rating__card-first');
    var stepOneWrapper = wrapper.querySelector("[data-step=\"".concat(activeStep + 1, "\"]"));
    formWrapper.classList.remove('d-none');
    stepOneWrapper.classList.remove('d-none');
    stepOneWrapper.classList.add('active');
    activeStep = activeStep + 1;

    if (activeStep == steps.length) {
        formWrapper.classList.add('d-none');
        cardRating.classList.add('d-none');
        var event = new Event('feedback-submit');
        document.dispatchEvent(event);
    }
       
}
function backToPrevious() {
    var steps = wrapper.querySelectorAll('[data-step]');
    var formWrapper = wrapper.querySelector('.form-rating');
    var cardRating = wrapper.querySelector('.cmp-rating__card-first');
    var previousWrapper = wrapper.querySelector("[data-step=\"".concat(activeStep - 1, "\"]"));
    var currentWrapper = wrapper.querySelector("[data-step=\"".concat(activeStep, "\"]"));
    formWrapper.classList.remove('d-none');
    activeStep = activeStep - 1;

    if (activeStep == 0) {
        formWrapper.classList.add('d-none');
        cardRating.classList.remove('d-none');
    } else {
        previousWrapper.classList.remove('d-none');
        previousWrapper.classList.add('active');
        currentWrapper.classList.add('d-none');
        currentWrapper.classList.remove('active');
    }
}
function closePreviousStep() {
    var stepWrapper = wrapper.querySelector('[data-step].active');
    stepWrapper.classList.add('d-none');
    stepWrapper.classList.remove('active');
}
/*FINE PARTE PER LA VALUTAZIONE DEL SITO*/


//questa rountin serve per aprire i social e condividere la pagina
function condividiSocial(b, a, e) {
    if (a == "") {
        a = document.location.href;
    } if (e == "") {
        e = document.title;
    }
    var c = new Array("facebook", "twitter", "googleplus", "linkedin", "whatsapp", "telegram");
    var d = new Array("https://www.facebook.com/sharer.php?u=" + escape(a) + "&amp;t=" + escape(e), "https://twitter.com/share?url=" + escape(a) + "&text=" + e, "https://plus.google.com/share?url=" + escape(a), "https://www.linkedin.com/shareArticle?mini=true&url=" + escape(a) + "&title=" + escape(e) + "&ro=false&summary=&source=", "https://api.whatsapp.com/send?text=" + escape(a), "https://t.me/share/url?url=" + escape(a) + "&text=" + escape(e));
    for (i in c) {
        if (b == c[i]) {
            window.open(d[i]);
        }
    }
}

//questa routin serve per aumentare la progress per indice di lettura della pagina
function myFunctionScroll() {

    if ($("#progressBar").length > 0) {
        var winScroll = document.body.scrollTop || document.documentElement.scrollTop;
        var footerWidth = $("#footer").height();//tolgo anche l'altezza del footer da quello che devi ancora leggere
        var headerWidth = $("header").height();//tolgo anche l'altezza del header da quello che devi ancora leggere
        var height = document.documentElement.scrollHeight - document.documentElement.clientHeight - footerWidth - headerWidth;
        winScroll = winScroll - headerWidth;
        var scrolled = (winScroll / height) * 100;
        document.getElementById("progressBar").style.width = scrolled + "%";

        //adesso scorro tutti gli elementi e vedo dove mettere il segnale dell'indice selezionato, vedo dove sono con lo scroll rispetto alle label 
        $(".pnlIndicePagina >ul > li> .list-item").each(function () {

            const id = $(this).attr("href").replace("#", "");

            if (document.documentElement.scrollTop > $("#" + id).offset().top - 20) {
                //pulisco tutti
                $(".pnlIndicePagina >ul > li> .list-item").removeClass("active");
                $(this).addClass("active");
            }
        });
    }

    if (document.body.scrollTop > 150 || document.documentElement.scrollTop > 150) {
        //document.getElementById("scrollTopButton").style.display = "block";
        $("#intestazione").addClass("intestazioneFissa");
        $("#MenuNavigazione").addClass("menuNavIntestazioneFissa");
        $(".btn-responsive-menu").addClass("btnResponsiveIntestazioneFissa");
    } else {
        //document.getElementById("scrollTopButton").style.display = "none";
        $("#intestazione").removeClass("intestazioneFissa");
        $("#MenuNavigazione").removeClass("menuNavIntestazioneFissa");
        $(".btn-responsive-menu").removeClass("btnResponsiveIntestazioneFissa");
    }

}
// When the user clicks on the button, scroll to the top of the document
function topFunction() {
    $('html,body').animate({ scrollTop: 0 }, 'slow');
}

function CreaMappa(idMappa, lat, lng, zoom) {
    var map = L.map(idMappa).setView([lat, lng], zoom);

    L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
        attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map);

    marker = L.marker([lat, lng]).addTo(map)
        .bindPopup('Luogo a coordinate <br> Lat:' + lat + "<br> Lon:" + lng)
        .openPopup();
}