const Utility = {

    alertAttenzione(testo) {
        app.dialog.alert(testo, '<i class="icon f7-icons" style="color:red;">exclamationmark_triangle_fill</i>');
    },

    gestisciMessaggioErrore(erroreWS) {
        try {

            // Controllo che nell'erroe ci sia il messaggio genarato dai webservices,
            // altrimenti restituisco un errore generico
            if (!erroreWS.hasOwnProperty('xhr') || erroreWS.xhr.responseText == '')
                throw 'Si è verificato un errore';

            let strErrore = erroreWS.xhr.responseText;
            let strInizioTaglio = '<p>Message: ';
            let strFineTaglio = '</p>';


            if (strErrore.indexOf(strInizioTaglio) == -1) {
                // Non c'è il il paragrafo di errore della pagina HTML di CodeIgniter,
                // potrebbe essere un'eccezione personalizzata,
                // restituisco l'errore così com'è.
                this.alertAttenzione(strErrore);
                return;
            }

            // Ricavo dall'errore solo la sezione relativa al messaggio
            strErrore = strErrore.substring(strErrore.indexOf(strInizioTaglio) + strInizioTaglio.length);
            strErrore = strErrore.substring(0, strErrore.indexOf(strFineTaglio));

            this.alertAttenzione(strErrore);

        } catch (error) {
            this.alertAttenzione(error.message);
        }
    },

    checkStampantePredefinita() {
        // attualmente non utilizzata

        let stampatePredefinitaSettata = localStorage.getItem("stampantePredefinita") !== null;

        if (!stampatePredefinitaSettata)
            Utility.alertAttenzione(`Nessuna stampante predefinita!`);

        return stampatePredefinitaSettata;
    },

    toggleStileButton(idTagButton, classToToggle, classToRestore) {
        var isActive = $$(idTagButton).hasClass(classToToggle);

        if (!isActive) {
            $$("." + classToToggle).addClass(classToRestore);
            $$("." + classToToggle).removeClass(classToToggle);
            $$(idTagButton).addClass(classToToggle);
            $$(idTagButton).removeClass(classToRestore);
        }
    },

    resetDateCalendar() {
        $$('#data_revisione_libera_input').val('');
        $$('#data_scadenza_revisione_libera_input').val('');
        $$('#data_scadenza_collaudo_libera_input').val('');
        $$('#data_collaudo_libera_input').val('');
        $$('#numero_etichette_input').val('1');
    },

    caricaAutocomplete(applicazione, id, codice, descrizione, funzione) {
        applicazione.autocomplete.create({
            inputEl: '#' + id,
            openIn: 'dropdown',
            preloader: true,
            valueProperty: codice,
            textProperty: descrizione,
            limit: 100,
            typeahead: true,

            source: function (query, render) {
                if (query.trim().toUpperCase() != queryEtichette.trim()) {
                    queryEtichette = query.trim().toUpperCase();
                    var results = [];
                    if (query.length < 1) {
                        render(results);
                        return;
                    }
                    app.preloader.show();
                    applicazione.request({
                        url: app.data.url + funzione,
                        method: 'POST',
                        dataType: 'json',
                        data: {
                            query: query,
                        },
                        success: function (data) {
                            app.preloader.hide();
                            render(data);
                        }
                    });
                }
            }
        });
    }



}

