
var __storageVar = "objiBagnino_001";

cmsMain.controller('paginashop', ['$scope', '$rootScope', '$window', '$http', '$timeout', '$filter', '$location',
function ($scope, $rootScope, $window, $http, $timeout, $filter, $location) {

    $scope.startApp = function () {
        
        _prodottiCarrello = localStorage.getItem(__storageVar);
        if (_prodottiCarrello == null) { 
            _prodottiCarrello = [];
        } else {
            _prodottiCarrello = JSON.parse(_prodottiCarrello);
        }

        //$scope.respNumOrdine = '123abc';


        const queryString = window.location.search;

        const urlParams = new URLSearchParams(queryString);
        
        // si potrebbe mettere la scelta di che lingua aprirlo di default
        // questa la dovremmo legare alle lingue inserite nel gestionale!!!
        
        let langParam = 'it';

        if(urlParams.get('lang') != null && urlParams.get('lang') != ""){
            langParam = urlParams.get('lang');
        }

        $scope.linguaShop = langParam;

        
        $scope.changelanguage = function (lang) {
            let queryString = "shop?lang=" + lang;
            
            if($scope.idCatalogo != ""){
                queryString += "&idcatalogue=" + $scope.idCatalogo; 
            }
            location.href = queryString;
        }

        $scope.arrMenu = [];
        
        $scope.arrTipologie = [];

        $scope.prodottiCarrello = [];

        $scope.spedizionePresente = parseInt(__spedizionePresente);
        
        $scope.necessitaCampiSpedizione = parseInt(__necessitaCampiSpedizione);

        $scope.idIvaSpedizione = 0;

        $scope.ivaPercSped = 0;

        $scope.americaStati = [];
        $scope.americaStati2 = [];

        $scope.prodottoSpedizione = {};

        if($scope.spedizionePresente == 1 ){
            $scope.idIvaSpedizione = parseInt(__idIvaSpedizione);

            let urlIvaSped = "pacifik/client/modules/merkurio/services/readopen/ivaprodsped?ivaSped=" + $scope.idIvaSpedizione;  


            $http.get(urlIvaSped).then(function (resp) {
                $scope.ivaPercSped = parseInt(resp.data);
                $scope.prodottoSpedizione.PercentualeIva = $scope.ivaPercSped;
            });

            $scope.prodottoSpedizione.Descrizione = "Spedizione";
            if($scope.linguaShop == 'en') $scope.prodottoSpedizione.Descrizione = "Shipping";
            $scope.prodottoSpedizione.HasVarianti = 0;
            $scope.prodottoSpedizione.IdIva = $scope.idIvaSpedizione;
            $scope.prodottoSpedizione.Idmenu = "";
            $scope.prodottoSpedizione.Idprodotto = "";
            $scope.prodottoSpedizione.Idtipologiaprod = "";
            $scope.prodottoSpedizione.Nome = "Spedizione";
            $scope.prodottoSpedizione.PercentualeIva = $scope.ivaPercSped;
            $scope.prodottoSpedizione.Prezzo = 0;
            $scope.prodottoSpedizione.Prezzonetto = 0;
            $scope.prodottoSpedizione.Qta = 1;
            $scope.prodottoSpedizione.isVariante = 0;

            
        } 

        let urlStatiAmerica = 'pacifik/client/modules/merkurio/services/readopen/americastati'
        $http.get(urlStatiAmerica).then(function (resp) {
            for (let i=0;i<resp.data.length;i++) {
                let _statoAmerica = {};
                _statoAmerica.Sigla = resp.data[i].Sigla; 
                _statoAmerica.Descrizione = resp.data[i].Descrizione; 
                $scope.americaStati.push(_statoAmerica);
                $scope.americaStati2.push(_statoAmerica);
            }
        });
        
        
        
        let urlProdotti = 'pacifik/client/modules/merkurio/services/readopen/menuprod?language=' + langParam;
        $http.get(urlProdotti).then(function (resp) {
            //console.log(resp.data);

            debugger;

            for (let i=0;i<resp.data.length;i++) {
                let _menu = {};
                // /debugger;
                _menu.Nome = resp.data[i].Nome;
                _menu.Descr = resp.data[i].Descrizione; 
                _menu.Idmenu = resp.data[i].Idmenu; 
                _menu.RichiediCF = resp.data[i].Richiedicf;
                _menu.NecessitaDataConsegna = resp.data[i].Necessitadataconsegna;
                _menu.Tipomenu = resp.data[i].Tipomenu; 
                _menu.NecessitaFirma = resp.data[i].Necessitafirma; 
                _menu.Policyfirma = resp.data[i].Policyfirma;
                _menu.Mkmenuspedizionis = resp.data[i].Mkmenuspedizionis;
                _menu.Calcolospedauto = resp.data[i].Calcolospedauto; 
                _menu.Multiplodi = resp.data[i].Multiplodi; 
                _menu.Mostracamponote = resp.data[i].Mostracamponote;
                _menu.Nascondiprezzoprodwineclub = resp.data[i].Nascondiprezzoprodwineclub;
                _menu.Idlistinowineclub = resp.data[i].Idlistinowineclub;

                _menu.Tipologie = [];

                if (resp.data[i].Icona != undefined &&  resp.data[i].Icona[0] != undefined){
                    _menu.Img = resp.data[i].Icona[0].url;
                }

                if (resp.data[i].Mkmenutipologieprodss != undefined){
                    let menuTipProd = resp.data[i].Mkmenutipologieprodss
                    
                    /* tipologie prodotti */
                    for(let a = 0; a < menuTipProd.length; a++){

                        let _menuTip = {};
                        //debugger;
                        _menuTip.Idtipologiaprod = menuTipProd[a].Mktipologieprod.Idtipologieprod;
                        _menuTip.Nome = menuTipProd[a].Mktipologieprod.Nome;
                        _menuTip.Descr = menuTipProd[a].Mktipologieprod.Descrizione;
                        _menuTip.MaxQta = 99;
                        _menuTip.QtaTot = 0;
                        _menuTip.Prodotti = [];

                        /* immagine tipologie prodotti */
                        if ( menuTipProd[a].Mktipologieprod.Photo != undefined && menuTipProd[a].Mktipologieprod.Photo[0] != undefined ){
                            _menuTip.Img = menuTipProd[a].Mktipologieprod.Photo[0].url; 
                        }

                        let menuProds = menuTipProd[a].Mkmenuprodottis;

                        if ( menuProds != undefined ){

                            for ( let b = 0; b<menuProds.length; b++ ){
                                if (menuProds[b].Mkprodotti != undefined &&
                                    menuProds[b].Mkprodotti.MkivaRelatedByIdiva != undefined) {
                                    let _pro = {}; 

                                    _pro.Idtipologiaprod = _menuTip.Idtipologiaprod;
                                    _pro.Idmenu = _menu.Idmenu
                                    //calcolo prezzo ivato

                                    let _prezzonetto = menuProds[b].Mkprodotti.Prezzonetto;
                                    if (menuProds[b].Idlistino != null && menuProds[b].Idlistino != 1){
                                        let listinocurr = 'Listino' + menuProds[b].Idlistino;
                                        _prezzonetto = menuProds[b].Mkprodotti[listinocurr];
                                    }
                                    let _prezzonettowine = 0;
                                    let _prezzowine =0;
                                    if(_menu.Idlistinowineclub!=null && _menu.Idlistinowineclub!="" ){
                                        let listinowineclub = 'Listino' + _menu.Idlistinowineclub;
                                        _prezzonettowine = menuProds[b].Mkprodotti[listinowineclub] 
                                    }



                                    let _idiva = null;
                                    let _percentuale = null;
                                    _percentuale = menuProds[b].Mkprodotti.MkivaRelatedByIdiva.Percentuale;
                                    _idiva = menuProds[b].Mkprodotti.MkivaRelatedByIdiva.Idiva;
                                    _prezzo = _prezzonetto * (100 + _percentuale);
                                    _prezzo = _prezzo / 100;
                                    _prezzo = Math.round(_prezzo*100)/100;

                                    if (_prezzonettowine > 0){
                                        _prezzowine = _prezzonettowine * (100 + _percentuale);
                                        _prezzowine = _prezzowine / 100;
                                        _prezzowine = Math.round(_prezzowine*100)/100;
                                    }


                                    _pro.Idprodotto = menuProds[b].Mkprodotti.Idprodotto;
                                    _pro.Idtipologiaentrata = menuProds[b].Mkprodotti.Idtipologiaentrata;

                                    if ( menuProds[b].Mkprodotti.Photo != undefined && menuProds[b].Mkprodotti.Photo[0] != undefined ){
                                        _pro.urlImg = menuProds[b].Mkprodotti.Photo[0].url; 
                                    }
                                    
                                    _pro.Nome = menuProds[b].Mkprodotti.Nome
                                    _pro.Descrizione = menuProds[b].Mkprodotti.Descrizione;
                                    _pro.Descrizione = _pro.Descrizione.replace(/\n/g, "<br>");
                                    _pro.Prezzo = _prezzo;
                                    _pro.Prezzonetto = _prezzonetto;
                                    _pro.PrezzoWine = _prezzowine;
                                    _pro.PrezzonettoWine = _prezzonettowine;
                                    _pro.IdIva = _idiva;
                                    _pro.PercentualeIva = _percentuale;
                                    _pro.isVariante = 0;
                                    _pro.HasVarianti = 0;
                                    _pro.Isprodottowineclub = 0; 
                                    
                                    if (typeof(menuProds[b].Mkprodotti.Isprodottowineclub) != undefined){
                                        _pro.Isprodottowineclub = menuProds[b].Mkprodotti.Isprodottowineclub;
                                    }

                                    if(menuProds[b].Mkprodotti.Mkprodottovariantis != undefined){
                                        _pro.HasVarianti = 1;
                                        // creo un prodotto aggiuntivo nato dalla variante 

                                        //TODO controllare la descrizione delle varianti tralasciata per lavorare su vino
                                        for (let c = 0; c<menuProds[b].Mkprodotti.Mkprodottovariantis.length; c++){
                                            let _prodVar = {};
                                            
                                            _prodVar.Idprodotto = menuProds[b].Mkprodotti.Idprodotto;
                                            _prodVar.Idtipologiaentrata = menuProds[b].Mkprodotti.Idtipologiaentrata;
                                            _prodVar.Idvariante = menuProds[b].Mkprodotti.Mkprodottovariantis[c].Idprodottovariante;
                                            _prodVar.NomeProd = menuProds[b].Mkprodotti.Descrizione;
                                            _prodVar.Prezzo = _prezzo;
                                            _prodVar.Prezzonetto = _prezzonetto;
                                            _prodVar.IdIva = _idiva;
                                            _prodVar.PercentualeIva = _percentuale;
                                            _prodVar.Nome = menuProds[b].Mkprodotti.Descrizione + " " + menuProds[b].Mkprodotti.Mkprodottovariantis[c].Descrizione;
                                            _prodVar.Qta = 0;
                                            _prodVar.isVariante = 1;

                                            _prodVar.Isprodottowineclub = 0; 
                                            if (typeof(menuProds[b].Mkprodotti.Isprodottowineclub) != undefined){
                                                _prodVar.Isprodottowineclub = menuProds[b].Mkprodotti.Isprodottowineclub;
                                            }

                                            _menuTip.Prodotti.push(_prodVar);
                                        }
                                        
                                    }
                                    
                                    
                                    
                                    _pro.Qta = 0;
                                    _menuTip.Prodotti.push(_pro);
                                }
                            }

                        }

                        _menu.Tipologie.push(_menuTip);

                    }
                }

                $scope.arrMenu.push(_menu);
            }
            
            for (var i=0;i<$scope.arrTipologie.length;i++) {
                if ($scope.arrTipologie[i].Prodotti != undefined) {
                    for (var a=0;a<$scope.arrTipologie[i].Prodotti.length;a++) {
                        for (var b=0;b<_prodottiCarrello.length;b++) {
                            if ($scope.arrTipologie[i].Prodotti[a].Idprodotto == _prodottiCarrello[b].Idprodotto) {
                                $scope.arrTipologie[i].Prodotti[a].Qta = _prodottiCarrello[b].Qta;
                            }
                        }
                    }
                }
            }        

            $scope.statuspage = "sceltamenu";

            $scope.idCatalogo = "";
            if(urlParams.get('idcatalogue') != null && urlParams.get('idcatalogue') != ""){
                $scope.idCatalogo = urlParams.get('idcatalogue');
    
                for (let i=0; i<$scope.arrMenu.length ; i++){
                    if ($scope.arrMenu[i].Idmenu == $scope.idCatalogo){
                        $scope.clickOnItem($scope.arrMenu[i]);
                    }
                }
    
            } 
            //debugger;
        });

        $scope.datiPren= [];
        $scope.checkPrenResult = [];
        $scope.datiPren['Message'] = "primoAccesso";
        $scope.checkPrenResult['Message'] = "";


        $scope.Nazioni = []; 
        $scope.Nazioni2 = []; 

        let urlNazioni = 'pacifik/client/modules/merkurio/services/readopen/questurasped?language=' + langParam;
        $http.get(urlNazioni).then(function (resp) {
            
            for (let i = 0; i<resp.data.length; i++){

                let _nazione = {};

                _nazione.Sigla = resp.data[i].Sigla;
                _nazione.descrizione = resp.data[i].Descrizione;

                if(langParam == 'en'){
                    _nazione.descrizione = resp.data[i].Descrizioneen;
                }

                $scope.Nazioni.push(_nazione);
                $scope.Nazioni2.push(_nazione);
            }
        });

        let nomeConsDefault = 'Prima possibile';
        if(langParam == 'en'){
            nomeConsDefault = 'As soon as possible';
        }

        $scope.mesiConsegnaPrev = [{valueMese:"1970-01-01", nome:nomeConsDefault}];

        let urlDataServer = 'pacifik/client/modules/common/services/readopen/giornoMeseAnnoServer';
        $http.get(urlDataServer).then(function (resp) {
            let dataServer = new Date(resp.data*1000);
            let meseUniv = dataServer.getMonth() + 1;
            let annoUniv = dataServer.getFullYear();
            

            for (let i = meseUniv+1; i < meseUniv+12; i++) {
                let _meseConsegna = {};
                let dataMonth = new Date(2000, i-1, 1)
                let mese = i;
                let anno = null;
                if( i > 12 ){
                    anno = annoUniv + 1;
                    mese = mese - 12;
                } else {
                    anno = annoUniv;
                }
                if (mese<10){
                    mese = '0'+mese;
                }

                let meseAnno = anno+'-'+mese+'-01';

                _meseConsegna.valueMese = meseAnno;

                nomeMese =  dataMonth.toLocaleString('it-IT', { month: 'long' });

                if(langParam == 'en'){
                    nomeMese =  dataMonth.toLocaleString('en-US', { month: 'long' });
                }

                nomeMese = nomeMese.charAt(0).toUpperCase() + nomeMese.slice(1);

                _meseConsegna.nome = nomeMese + " " + anno.toString().slice(2);

                $scope.mesiConsegnaPrev.push(_meseConsegna);
                
            }
        });
        
    }
    
    $scope.addNumber = function (item) {
        //item.Qta++;

        // inserire qui la logica per il massimo numero di prodotti consentiti
        // non dovrebbe essere più utile perché c'è max qta per tipologia
        //if (item.Qta>99) item.Qta = 99;

        for ( let i=0; i<$scope.arrMenu.length; i++ ) {
            if( $scope.arrMenu[i].Idmenu == item.Idmenu){
                for ( let b=0; b<$scope.arrMenu[i].Tipologie.length; b++ ){
                    if ( $scope.arrMenu[i].Tipologie[b].Idtipologiaprod == item.Idtipologiaprod){
                        if ( $scope.arrMenu[i].Tipologie[b].Prodotti != undefined ) {
                            for ( let a=0; a<$scope.arrMenu[i].Tipologie[b].Prodotti.length; a++ ) {
                                if($scope.arrMenu[i].Tipologie[b].QtaTot<$scope.arrMenu[i].Tipologie[b].MaxQta){

                                    if (item.isVariante == 1){
                                        //ci siamo quasi con qta++ qui dentro
                                        if ($scope.arrMenu[i].Tipologie[b].Prodotti[a].isVariante == 1 && $scope.arrMenu[i].Tipologie[b].Prodotti[a].Idvariante == item.Idvariante) {
                                            item.Qta++;
                                            
                                            $scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta = item.Qta;
                                            $scope.arrMenu[i].Tipologie[b].QtaTot++;
                                        }
                                    } else {
                                        if ($scope.arrMenu[i].Tipologie[b].Prodotti[a].isVariante == 0 && $scope.arrMenu[i].Tipologie[b].Prodotti[a].Idprodotto == item.Idprodotto){
                                            item.Qta++;
                                            
                                            $scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta = item.Qta;
                                            $scope.arrMenu[i].Tipologie[b].QtaTot++;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }


        $scope.saveLocalStorage();
        $scope.popolaCarello();

    }

    $scope.removeNumber = function (item) {


        for ( let i=0; i<$scope.arrMenu.length; i++ ) {
            if( $scope.arrMenu[i].Idmenu == item.Idmenu){
                for ( let b=0; b<$scope.arrMenu[i].Tipologie.length; b++ ){
                    if ( $scope.arrMenu[i].Tipologie[b].Idtipologiaprod == item.Idtipologiaprod){
                        if ( $scope.arrMenu[i].Tipologie[b].Prodotti != undefined ) {
                            for ( let a=0; a<$scope.arrMenu[i].Tipologie[b].Prodotti.length; a++ ) {
                                if($scope.arrMenu[i].Tipologie[b].QtaTot>=0){
                                    if (item.isVariante == 1){
                                        if ($scope.arrMenu[i].Tipologie[b].Prodotti[a].isVariante == 1 && $scope.arrMenu[i].Tipologie[b].Prodotti[a].Idvariante == item.Idvariante) {
                                            if (item.Qta>0) $scope.arrMenu[i].Tipologie[b].QtaTot--;
                                            
                                            item.Qta--;
                                            if (item.Qta<0) item.Qta = 0;
                                            
                                            $scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta = item.Qta;
                                        }
                                    } else {
                                        if ($scope.arrMenu[i].Tipologie[b].Prodotti[a].isVariante == 0 && $scope.arrMenu[i].Tipologie[b].Prodotti[a].Idprodotto == item.Idprodotto){
                                            if (item.Qta>0) $scope.arrMenu[i].Tipologie[b].QtaTot--;
                                         
                                            item.Qta--;
                                            if (item.Qta<0) item.Qta = 0;
                                            
                                            $scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta = item.Qta;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        } 
            

        $scope.saveLocalStorage();
        $scope.popolaCarello();

    }

    $scope.checkprenotazione = function (codpren){
        let codicePren = document.getElementById('codicepren').value;


        // TODO far fare un giro all'apertura della pagina per leggere nei cookie se è presente il codice prenotazione nello switch

        let url = "pacifik/client/modules/merkurio/services/readopen/checkcodicepren?codpren=" + codicePren;  
        
        $http.get(url).then(function (resp) {
            $scope.datiPren = resp.data;
            //debugger;
            //TODO salvare nei cookie il numero prenotazione 
        });
    }

    $scope.clickOnItem = function (item){
        switch ($scope.statuspage) {
            case 'sceltamenu':
                $scope.menuSelezionato = item;

                if($scope.menuSelezionato.Calcolospedauto == 1 && $scope.spedizionePresente == 1){
                    $scope.costiSpedizione = item.Mkmenuspedizionis;
                }
                

                //debugger;
                if ($scope.menuSelezionato.Tipomenu == "PRANZO" || $scope.menuSelezionato.Tipomenu == "CENA"){
                    if($scope.datiPren['Message'] == 'OK'){
                       
                        $scope.statuspage = 'tipologiaprod';
                    } else {
                        $scope.statuspage = "insertcodice";
                    }
                } else {
                    $scope.statuspage = 'tipologiaprod';
                }
            
                break;

            case 'insertcodice':

                let codicePren = document.getElementById('codicepren').value;
                //TODO salvare nei cookie il codice prenotazioni
                $scope.checkprenotazione(codicePren);
                if($scope.datiPren['Message'] == 'OK'){
                    debugger;
                    $scope.recallComanda($scope.datiPren["Idprengruppo"], $scope.menuSelezionato.Idmenu); 
                    let occupazione = $scope.datiPren["Nadulti"] + $scope.datiPren["Nbambini"]; 
                    if( occupazione > 0 ){
                        $scope.addMaxQta($scope.datiPren["Nadulti"],$scope.datiPren["Nbambini"]);
                    }
                    $scope.statuspage = 'tipologiaprod';
                } else {
                    if($scope.datiPren['Message'] == 'Error'){
                        $scope.checkPrenResult['Message'] = 'Error';
                    }
                    $scope.statuspage = "insertcodice";
                }
                
            break;

            case 'tipologiaprod':
                $scope.tipologiaSelezionata = item;
                $scope.statuspage = "elencoprod";
            break;
        }
    }

    $scope.tornaASezioneprecedente = function (){

        switch ($scope.statuspage) {
            case 'sceltamenu':
                $scope.statuspage = 'sceltamenu';
              break;

            case 'insertcodice':
                $scope.statuspage = 'sceltamenu';
              break; 

            case 'tipologiaprod':
                if($scope.idCatalogo != ""){
                    $scope.statuspage = 'tipologiaprod';
                } else {
                    if (confirm('vuoi davvero tornare?')){
                        $scope.statuspage = 'sceltamenu';
                        $scope.azzeraCarrello(); 
                    } else {
                        $scope.statuspage = 'tipologiaprod';
                    }
                }
              break; 

            case 'elencoprod':
                $scope.statuspage = 'tipologiaprod';
              break; 

            case 'viewcarrello':
                $scope.statuspage = $scope.pagePrec;
                $scope.pagePrec = '';
                break

            case 'collectanag':
                $scope.statuspage = 'viewcarrello';
                break; 
        }
    }
    $scope.qtaCarrello = 0;
    
    $scope.getQtaCarrello = function () {
        
        let _ret = 0;
        
        for ( let i=0; i<$scope.arrMenu.length; i++ ) {
            for (let b=0; b<$scope.arrMenu[i].Tipologie.length; b++ ){
                if ( $scope.arrMenu[i].Tipologie[b].Prodotti != undefined ) {
                    for ( let a=0; a<$scope.arrMenu[i].Tipologie[b].Prodotti.length; a++ ) {
                        _ret += parseInt($scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta);
                    }
                }
            }
        }     
        //debugger;
        if($scope.menuSelezionato.Calcolospedauto == 1 && $scope.spedizionePresente == 1){
            $scope.aggiornaSpedizione(_ret);
        }

        $scope.qtaCarrello = _ret;
        return _ret;
    } 

    $scope.totCarrello = 0;
    $scope.totCarrelloNetto = 0;
    $scope.totCarrelloIva = 0;
    
    
    $scope.getTotaleCarrello = function () {
        let _totCarrello = 0;
        let _totCarrelloNetto = 0;
        let _totCarrelloIva = 0;

        for ( let i=0; i<$scope.prodottiCarrello.length; i++ ){
            _totCarrello += $scope.prodottiCarrello[i].Prezzo * $scope.prodottiCarrello[i].Qta;
            _totCarrelloNetto += $scope.prodottiCarrello[i].Prezzonetto * $scope.prodottiCarrello[i].Qta;
        }

        _totCarrelloIva = Math.round((_totCarrello - _totCarrelloNetto)*100)/100;

        $scope.totCarrello = _totCarrello;
        $scope.totCarrelloNetto = _totCarrelloNetto;
        $scope.totCarrelloIva = _totCarrelloIva;
        return _totCarrello;
    }

    $scope.aggiornaSpedizione = function (numeroProdotti) {

        if($scope.menuSelezionato.Calcolospedauto == 1 && $scope.spedizionePresente == 1){

            // Ordina l'array in modo che gli elementi con il numero di bottiglie più basso siano in cima
            $scope.costiSpedizione.sort((a, b) => a.Numerobottiglie - b.Numerobottiglie);
        
            // Trova il primo elemento nell'array dove il numero di bottiglie è maggiore o uguale a quello passato come argomento
            const costo = $scope.costiSpedizione.find(spedizione => spedizione.Numerobottiglie >= numeroProdotti);
        
            // Se non è stato trovato un costo corrispondente, restituisci un messaggio di errore
           /*  if (!costo) {
                return "Costo di spedizione non disponibile per il numero di bottiglie specificato";
            } */
        
            // Restituisci il costo di spedizione trovato
            $scope.prodottoSpedizione.Prezzo = costo.Costospedizione;
        }
    }
    
    $scope.saveLocalStorage = function () {
        let _prodotti = [];


        /* Refactoring */
        for ( let i=0; i<$scope.arrMenu.length; i++ ) {
            for ( let b=0; b<$scope.arrMenu[i].Tipologie.length; b++ ){
                if ( $scope.arrMenu[i].Tipologie[b].Prodotti != undefined ) {
                    for ( let a=0; a<$scope.arrMenu[i].Tipologie[b].Prodotti.length; a++ ) {
                        if ($scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta > 0) { 
                            _prodotti.push($scope.arrMenu[i].Tipologie[b].Prodotti[a]);
                        }
                    }
                }
            }
        }
        
        if($scope.spedizionePresente == 1){
            if($scope.prodottoSpedizione.Prezzo!=0){
                if(typeof($scope.prodottoSpedizione.Prezzo) == 'string') $scope.prodottoSpedizione.Prezzo = $scope.prodottoSpedizione.Prezzo.replace(",",".");
                let prezzo = $scope.prodottoSpedizione.Prezzo * 1;
                let prezzonetto = prezzo / (100 + $scope.prodottoSpedizione.PercentualeIva) * 100;
                prezzonetto = parseFloat(prezzonetto.toFixed(5));
                $scope.prodottoSpedizione.Prezzonetto = prezzonetto;
            }
            _prodotti.push($scope.prodottoSpedizione);
        }
        
        localStorage.setItem(__storageVar, JSON.stringify(_prodotti));
    }

    $scope.popolaCarello = function () {
        $scope.prodottiCarrello = [];
        
        /* Refactoring */
        
        for ( let i=0; i<$scope.arrMenu.length; i++ ) {
            for ( let b=0; b<$scope.arrMenu[i].Tipologie.length; b++ ){
                if ( $scope.arrMenu[i].Tipologie[b].Prodotti != undefined ) {
                    for ( let a=0; a<$scope.arrMenu[i].Tipologie[b].Prodotti.length; a++ ) {
                        if ( $scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta > 0) {
                            $scope.prodottiCarrello.push($scope.arrMenu[i].Tipologie[b].Prodotti[a]); 
                        }
                    }
                }
            }
        }

        if($scope.spedizionePresente == 1){
            if($scope.prodottoSpedizione.Prezzo!=0){
                if(typeof($scope.prodottoSpedizione.Prezzo) == 'string') $scope.prodottoSpedizione.Prezzo = $scope.prodottoSpedizione.Prezzo.replace(",",".");
                let prezzo = $scope.prodottoSpedizione.Prezzo * 1;
                let prezzonetto = prezzo / (100 + $scope.prodottoSpedizione.PercentualeIva) * 100;
                prezzonetto = parseFloat(prezzonetto.toFixed(5));
                $scope.prodottoSpedizione.Prezzonetto = prezzonetto;
            }
            $scope.prodottiCarrello.push($scope.prodottoSpedizione);
        }
    }
    
    $scope.procediOrdine = function () {

        $scope.pagePrec = $scope.statuspage; 
        $scope.popolaCarello();
        
        $scope.statuspage = "viewcarrello";
    }

    $scope.azzeraCarrello = function (){
        $scope.prodottiCarrello = [];
        
        for ( let i=0; i<$scope.arrMenu.length; i++ ) {
            for ( let b=0; b<$scope.arrMenu[i].Tipologie.length; b++ ){
                if ( $scope.arrMenu[i].Tipologie[b].Prodotti != undefined ) {
                    for ( let a=0; a<$scope.arrMenu[i].Tipologie[b].Prodotti.length; a++ ) {
                        if ( $scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta > 0) {
                            $scope.arrMenu[i].Tipologie[b].Prodotti[a].Qta = 0;
                            $scope.prodottiCarrello.push($scope.arrMenu[i].Tipologie[b].Prodotti[a]); 
                        }
                    }
                }
            }
        } 

        if($scope.spedizionePresente == 1){
            $scope.prodottoSpedizione.Prezzo = 0;
            $scope.prodottoSpedizione.Prezzonetto = 0;
        }
    }

    $scope.registraOrdine = function (){

        $scope.popolaCarello();
        $scope.getTotaleCarrello();

        _mess = {};

        _mess.prodottiCarrello = $scope.prodottiCarrello;

        _mess.idmenu = $scope.menuSelezionato.Idmenu;

        if ($scope.statuspage == 'collectanag' ){

            if($scope.menuSelezionato.NecessitaFirma == 1) {
                zkSignature.save();
                let alertFirma = 'Immetti una firma nell\'apposito campo';
                if($scope.linguaShop == 'en') alertFirma =  'Enter a signature in the appropriate field';
                if(emptySignature == true){
                    alert(alertFirma);
                    return
                } else {
                    _mess.firmaOrdine = document.getElementById("saveSignature").src;
                }
            } 

            //_mess.idanagrafica = '16d87ae0acd722c178594871393679aaf745899f9604716be0'; 
            //manca il cf o partita iva chiedere se inserire
            _mess.Nome = document.getElementById("Nome").value;
            _mess.Cognome = document.getElementById("Cognome").value;
            _mess.Telefono = document.getElementById("Telefono").value;
            _mess.Email = document.getElementById("Email").value;
            _mess.Lingua = document.getElementById("Lingua").value;
            _mess.Nazione = document.getElementById("Nazione").value;
            _mess.Provincia = document.getElementById("Provincia").value;
            _mess.Citta = document.getElementById("Citta").value;
            _mess.Indirizzo = document.getElementById("Indirizzo").value;
            _mess.DataSped = document.getElementById("dataSped").value;
            _mess.Cap = document.getElementById("Cap").value;
            _mess.CodFisc = document.getElementById("CodFisc").value;
            _mess.IdAnagTag = document.getElementById("Idanagtag").value;
            _mess.IdTemplateOrdine = document.getElementById("Idtemplateordine").value;
            _mess.Spedizionepresente = document.getElementById("Spedizionepresente").value;
            _mess.Necessitacampispedizione = document.getElementById("Necessitacampispedizione").value;
            _mess.Noteordine = document.getElementById("NoteOrdine").value;

            _mess.Newsletter = 0;
            _mess.TrattamentoDati = 0;
            _mess.TerminiCondizioni = 0; 
            
            if(document.getElementById("newsletter").checked == true) _mess.Newsletter = 1;
            if(document.getElementById("privacyPolicy").checked == true) _mess.TrattamentoDati = 1;
            // quando si attiverà la possibilità di termini e condizioni personalizzati inserire un nuovo if
            
            _mess.NecessitaIndirizzo = 0;

            if ( document.getElementById("necessitaIndirizzo").checked == true){
                _mess.NecessitaIndirizzo = 1;
                _mess.Nazione2 = document.getElementById("Nazione2").value;
                _mess.Provincia2 = document.getElementById("Provincia2").value;
                _mess.Citta2 = document.getElementById("Citta2").value;
                _mess.Indirizzo2 = document.getElementById("Indirizzo2").value;
                _mess.Cap2 = document.getElementById("Cap2").value;
            }

            _mess.totCarrello = $scope.totCarrello;
            _mess.totCarrelloNetto = $scope.totCarrelloNetto;
            _mess.totCarrelloIva = $scope.totCarrelloIva;

            console.log("registra Ordine");
            

            // va messo un if perché non entri in scrittura se non sono assegnati almeno i campi required
            if( _mess.Nome != "" &&
                _mess.Cognome != "" &&
                _mess.Email != "" &&
                _mess.Lingua != ""){
                    
                $http.post("pacifik/client/modules/merkurio/services/writeopen/saveOrdine", _mess).then(function (resp) {
                    console.log("risposta ordine");
                    console.log(resp);
                    $scope.statuspage = 'thankupage'; 
                    $scope.respNumOrdine = resp.data;
                    $scope.azzeraCarrello();

                });

            }
        }

        if($scope.statuspage == 'viewcarrello'){
            if ($scope.menuSelezionato.Tipomenu == "PRANZO" || $scope.menuSelezionato.Tipomenu == "CENA"){
                if($scope.datiPren["Idprengruppo"]!= null && $scope.datiPren["Idprengruppo"] != "") _mess.idprenotazionigruppo = $scope.datiPren["Idprengruppo"];
                if($scope.datiPren["Numprenotazione"]!= null && $scope.datiPren["Numprenotazione"] != "") _mess.numprenotazione = $scope.datiPren["Numprenotazione"];
                if($scope.datiPren["idtaskgruppo"]!= null && $scope.datiPren["idtaskgruppo"] != "") _mess.idtaskgruppo = $scope.datiPren["idtaskgruppo"];
                //debugger;

                    $http.post("pacifik/client/modules/merkurio/services/writeopen/saveComanda", _mess).then(function (resp) {
                        console.log("risposta");
                        console.log(resp); 
                    $scope.statuspage = 'thankupage'; 

                    });
            } else {
                if($scope.menuSelezionato.Multiplodi!=undefined  && $scope.menuSelezionato.Multiplodi!= 0){
                    if($scope.qtaCarrello % $scope.menuSelezionato.Multiplodi === 0){
                        $scope.statuspage = 'collectanag'; 
                    } else {
                        let alertNumProd = 'Il numero totale dei tuoi prodotti deve essere multiplo di ';
                        if($scope.linguaShop == 'en') alertNumProd = 'The total number of your products must be a multiple of ' 
                        alert(alertNumProd +  $scope.menuSelezionato.Multiplodi);
                        return
                    }
                } else {
                    $scope.statuspage = 'collectanag'; 
                }
            }
        }
        
        


            
    }


    $scope.recallComanda = function(idprengruppo, idmenu){
        console.log("dentro recall");
        //debugger;
        _mess = {};
        _mess.idprengruppo = idprengruppo;
        _mess.idmenu = idmenu;
        $http.post("pacifik/client/modules/merkurio/services/readopen/checkComanda", _mess).then(function (resp) {
            console.log("recall comanda");
            console.log(resp); 
        });
    }

    $scope.showvarianti = function (idProd){

        let nomeArrow = '.arrow__varianti.prod__'+idProd;
        let rotateArrow = document.querySelector(nomeArrow);
        rotateArrow.classList.toggle("upside__down");
        
        let nomeWrap = '.prod__varianti__wrapper.prod__'+idProd;
        let variantiWrap = document.querySelector(nomeWrap);

        if (variantiWrap.style.maxHeight) {
            variantiWrap.style.maxHeight = null;
        } else {
            variantiWrap.style.maxHeight = variantiWrap.scrollHeight + "px";
        } 

    }

    $scope.addMaxQta = function (nAdulti, nBambini){
        let totOccupanti = nAdulti+nBambini;
        if (totOccupanti > 0) {
            for(let i = 0; i<$scope.arrMenu.length; i++){
                for(let a = 0; a<$scope.arrMenu[i].Tipologie.length; a++){
                    $scope.arrMenu[i].Tipologie[a].MaxQta = totOccupanti;
                }
            }
        }
    }
    
    $scope.tornaAllaHome = function (){
        let linkBackHome ="shop";
        if($scope.idCatalogo != ""){
            linkBackHome += "&idcatalogue=" + $scope.idCatalogo; 
        }
        location.href = linkBackHome;
    }

    
    $scope.startApp();
}]);


var zkSignature = (function () {

	emptySignature = true;

	return {
		//public functions
		capture: function (){
				var parent = document.getElementById("canvas");
				parent.childNodes[0].nodeValue = "";

				var canvasArea = document.createElement("canvas");
				canvasArea.setAttribute("id", "newSignature");
				parent.appendChild(canvasArea);

				var canvas = document.getElementById("newSignature");
				var context = canvas.getContext("2d");

				if (!context) {
					throw new Error("Failed to get canvas' 2d context");
				}

				screenwidth = screen.width;

				if (screenwidth < 480) {
					canvas.width = screenwidth - 8;
					canvas.height = (screenwidth * 0.63);
				} else {
					canvas.width = 464;
					canvas.height = 304;
				}

				context.fillStyle = "#fff";
				context.strokeStyle = "#444";
				context.lineWidth = 1.8;
				context.lineCap = "round";

				context.fillRect(0, 0, canvas.width, canvas.height);

				context.fillStyle = "#3a87ad";
				context.strokeStyle = "#3a87ad";
				context.lineWidth = 1.9;
				context.moveTo((canvas.width * 0.042), (canvas.height * 0.7));
				context.lineTo((canvas.width * 0.958), (canvas.height * 0.7));
				context.stroke();

				context.fillStyle = "#fff";
				context.strokeStyle = "#444";

				var disableSave = true;
				var pixels = [];
				var cpixels = [];
				var xyLast = {};
				var xyAddLast = {};
				var calculate = false;
				//functions
				{
					function remove_event_listeners() {
						canvas.removeEventListener('mousemove', on_mousemove, false);
						canvas.removeEventListener('mouseup', on_mouseup, false);
						canvas.removeEventListener('touchmove', on_mousemove, false);
						canvas.removeEventListener('touchend', on_mouseup, false);

						document.body.removeEventListener('mouseup', on_mouseup, false);
						document.body.removeEventListener('touchend', on_mouseup, false);
					}

					function get_board_coords(e) {
						var x, y;

						if (e.changedTouches && e.changedTouches[0]) {
							var offsety = canvas.offsetTop || 0;
							var offsetx = canvas.offsetLeft || 0;

							x = e.changedTouches[0].pageX - offsetx - 8;
							y = e.changedTouches[0].pageY - offsety - 60;
						} else if (e.layerX || 0 == e.layerX) {
							x = e.layerX;
							y = e.layerY;
						} else if (e.offsetX || 0 == e.offsetX) {
							x = e.offsetX;
							y = e.offsetY;
						}

						return {
							x : x,
							y : y
						};
					};

					function on_mousedown(e) {
						e.preventDefault();
						e.stopPropagation();

						canvas.addEventListener('mousemove', on_mousemove, false);
						canvas.addEventListener('mouseup', on_mouseup, false);
						canvas.addEventListener('touchmove', on_mousemove, false);
						canvas.addEventListener('touchend', on_mouseup, false);

						document.body.addEventListener('mouseup', on_mouseup, false);
						document.body.addEventListener('touchend', on_mouseup, false);

						emptySignature = false;
						var xy = get_board_coords(e);
						context.beginPath();
						pixels.push('moveStart');
						context.moveTo(xy.x, xy.y);
						pixels.push(xy.x, xy.y);
						xyLast = xy;
					};

					function on_mousemove(e, finish) {
						e.preventDefault();
						e.stopPropagation();

						var xy = get_board_coords(e);
						var xyAdd = {
							x : (xyLast.x + xy.x) / 2,
							y : (xyLast.y + xy.y) / 2
						};

						if (calculate) {
							var xLast = (xyAddLast.x + xyLast.x + xyAdd.x) / 3;
							var yLast = (xyAddLast.y + xyLast.y + xyAdd.y) / 3;
							pixels.push(xLast, yLast);
						} else {
							calculate = true;
						}

						context.quadraticCurveTo(xyLast.x, xyLast.y, xyAdd.x, xyAdd.y);
						pixels.push(xyAdd.x, xyAdd.y);
						context.stroke();
						context.beginPath();
						context.moveTo(xyAdd.x, xyAdd.y);
						xyAddLast = xyAdd;
						xyLast = xy;

					};

					function on_mouseup(e) {
						remove_event_listeners();
						disableSave = false;
						context.stroke();
						pixels.push('e');
						calculate = false;
					};

				}

				canvas.addEventListener('mousedown', on_mousedown, false);
				canvas.addEventListener('touchstart', on_mousedown, false);

		}
		,
		save : function(){

				var canvas = document.getElementById("newSignature");
				// save canvas image as data url (png format by default)
				var dataURL = canvas.toDataURL("image/jpeg");
				document.getElementById("saveSignature").src = dataURL;

		}
		,
		clear : function(){

				var parent = document.getElementById("canvas");
				var child = document.getElementById("newSignature");
				parent.removeChild(child);
				emptySignature = true;
				this.capture();

		}
		,
		send : function(){

				if (emptySignature == false){

				var canvas = document.getElementById("newSignature");
				var dataURL = canvas.toDataURL("image/png");
				document.getElementById("saveSignature").src = dataURL;
				var sendemail = document.getElementById('sendemail').value;
				var replyemail = document.getElementById('replyemail').value;

				var dataform = document.createElement("form");
				document.body.appendChild(dataform);
				//dataform.setAttribute("action","upload_file.php");
				dataform.setAttribute("enctype","multipart/form-data");
				dataform.setAttribute("method","POST");
				dataform.setAttribute("target","_self");
				dataform.innerHTML = '<input type="text" name="image" value="' + dataURL + '"/>' + '<input type="email" name="email" value="' + sendemail + '"/>' + '<input type="email" name="replyemail" value="' + replyemail + '"/>'+'<input type="submit" value="Click me" />';
				dataform.submit();

				}
		}

	}

})()

var zkSignature;