File "app-20241022145111-20241022184633.js"

Full Path: /srv/www/www.cadoro.it/app/www/js/app-20241022145111-20241022184633.js
File size: 79.56 KB
MIME-type: text/plain
Charset: utf-8

angular.module("app",["app.config","app.auth","app.app","app.templates","ImgCache","LocalStorageModule","ngCordova.plugins.nativeStorage","ngCordova.plugins.statusbar","ion-gallery"]).config(["$ionicConfigProvider","localStorageServiceProvider",function(e,t){e.navBar.alignTitle("center"),e.backButton.text("").icon("ion-chevron-left"),e.views.swipeBackEnabled(!1),e.tabs.position("top")}]).config(["$compileProvider",function(e){e.debugInfoEnabled(!1),e.imgSrcSanitizationWhitelist(/^\s*.*:/)}]).config(["$stateProvider","$urlRouterProvider",function(e,t){e.state("welcome",{cache:!1,url:"/welcome",templateUrl:"templates/auth-welcome.html",controller:"AuthWelcomeController"}).state("welcome_registrazione",{cache:!1,url:"/welcome/registrazione",templateUrl:"templates/auth-welcome-registrazione.html",controller:"AuthWelcomeRegistrazioneController"}).state("app",{cache:!0,url:"/app","abstract":!0,templateUrl:"templates/app.html",controller:"AppController"}).state("app.home",{cache:!0,url:"/home",views:{content:{templateUrl:"templates/app-home.html",controller:"AppHomeController"}}}).state("app.lista_spesa",{cache:!0,url:"/lista-spesa",views:{content:{templateUrl:"templates/app-lista-spesa.html",controller:"AppListaSpesaController"}}}).state("app.offerte",{cache:!0,url:"/offerte",views:{content:{templateUrl:"templates/app-offerte.html",controller:"AppOfferteController"}}}).state("app.preferiti",{cache:!0,url:"/preferiti",views:{content:{templateUrl:"templates/app-preferiti.html",controller:"AppPreferitiController"}}}).state("app.impostazioni",{cache:!0,url:"/impostazioni",views:{content:{templateUrl:"templates/app-impostazioni.html",controller:"AppImpostazioniController"}}}).state("app.assistenza",{cache:!0,url:"/assistenza",views:{content:{templateUrl:"templates/app-assistenza.html",controller:"AppAssistenzaController"}}}).state("app.assistenza_tour",{cache:!0,url:"/assistenza/tour",views:{content:{templateUrl:"templates/app-assistenza-tour.html",controller:"AppAssistenzaTourController"}}}).state("app.pagina",{cache:!0,url:"/pagina/:pageId",views:{content:{templateUrl:"templates/app-pagina.html",controller:"AppPaginaController"}}}).state("app.punti_vendita",{cache:!0,url:"/punti-vendita",views:{content:{templateUrl:"templates/app-punti-vendita.html",controller:"AppPuntiVenditaController"}}}).state("app.punti_vendita_dettaglio",{cache:!0,url:"/punti-vendita/:id",views:{content:{templateUrl:"templates/app-punti-vendita-dettaglio.html",controller:"AppPuntiVenditaDettaglioController"}}}).state("app.profilo",{cache:!0,url:"/profilo",views:{content:{templateUrl:"templates/app-profilo.html",controller:"AppProfiloController"}}}).state("app.profilo_modifica",{cache:!0,url:"/profilo/modifica",views:{content:{templateUrl:"templates/app-profilo-modifica.html",controller:"AppProfiloModificaController"}}}).state("app.notifiche",{cache:!0,url:"/notifiche",views:{content:{templateUrl:"templates/app-notifiche.html",controller:"AppNotificheController"}}}).state("app.magazine",{cache:!0,url:"/magazine",views:{content:{templateUrl:"templates/app-magazine.html",controller:"AppMagazineController"}}}).state("app.landing",{cache:!0,url:"/landing/:id",views:{content:{templateUrl:"templates/app-landing.html",controller:"AppLandingController"}}}),t.otherwise("/welcome")}]).config(["ImgCacheProvider","DEBUG",function(e,t){e.setOptions({debug:!!t,usePersistentCache:!0}),e.manualInit=!0}]).config(["$provide",function(e){e.decorator("$exceptionHandler",["$delegate",function(e){return function(t,a){e(t,a);var o={type:"angular",url:window.location.hash,localtime:Date.now()};a&&(o.cause=a),t&&(t.message&&(o.message=t.message),t.name&&(o.name=t.name),t.stack&&(o.stack=t.stack)),console.log("Exception "+JSON.stringify(o))}}])}]).config(["ionGalleryConfigProvider",function(e){e.setGalleryConfig({action_label:"Chiudi",toggle:!0,row_size:3,fixed_row_size:!0})}]).run(["$ionicHistory","$ionicPlatform","$cordovaNativeStorage","ImgCache","$rootScope","$location","$timeout","DEBUG",function(e,t,a,o,l,n,r,i){t.ready(function(){window.cordova&&window.cordova.plugins.Keyboard&&(cordova.plugins.Keyboard.hideKeyboardAccessoryBar(!0),cordova.plugins.Keyboard.disableScroll(!0)),window.navigationbar&&window.navigationbar.hide&&window.navigationbar.hide(),o.$init(),universalLinks.subscribe("landing",function(e){console.log("Did launch application from the link: "+e.url);var t=e.path.split("/");if(t.shift(),l.user){var a=t[1].split("?")[0];n.path("/app/landing/"+a)}})}),t.registerBackButtonAction(function(t){e.goBack(-1)},100)}]).filter("mformat",function(){return function(e,t){return moment(e).format(t)}}),$("body").on("click","a[rel=external]",function(e){e.preventDefault(),e.stopPropagation();var t=$(e.target).closest("a").attr("href");t||(t=$(e.target).closest("a").data("href")),window.open(t,"_system")}),$("body").on("click","a[rel=inappbrowser]",function(e){e.preventDefault(),e.stopPropagation();var t=$(e.target).closest("a").attr("href");t||(t=$(e.target).closest("a").data("href")),cordova&&cordova.InAppBrowser?cordova.InAppBrowser.open(t,"_blank","closebuttoncaption=Chiudi"):window.open(t,"_system")});
angular.module("app.auth.controllers",["app.config","ngCordova.plugins.nativeStorage","ionic"]).controller("AuthWelcomeController",["$rootScope","$scope","$http","$ionicHistory","$ionicLoading","$ionicPlatform","$ionicPopup","$location","$timeout","$cordovaNativeStorage","API_END_POINT",function(e,t,i,o,a,r,n,s,l,c,p){t.$on("$ionicView.beforeEnter",function(){t.user={},r.ready(function(){var t=!1;console.log("CA27_get"),c.getItem("user").then(function(i){console.log("CA27_get OK"),t=i,t?(o.nextViewOptions({disableAnimate:!0,disableBack:!0}),e.user=t,s.path("/app/home")):(window.FirebasePlugin.setScreenName("auth.welcome"),window.FirebasePlugin.logEvent("page_view",{page:"auth.welcome"}),navigator.splashscreen&&navigator.splashscreen.hide())},function(e){console.log("CA27_get ERROR"),console.log(JSON.stringify(e)),window.FirebasePlugin.setScreenName("auth.welcome"),window.FirebasePlugin.logEvent("page_view",{page:"auth.welcome"}),navigator.splashscreen&&navigator.splashscreen.hide()})})}),t.$on("$ionicView.enter",function(){l(function(){navigator.splashscreen&&navigator.splashscreen.hide()},1e3)}),t.doLogin=function(t,r){t.preventDefault(),t.stopPropagation(),a.show({template:"Attendere, invio dati in corso..."}),i({url:p+"/login",method:"POST",timeout:1e4,data:JSON.stringify(r),headers:{"Content-Type":"application/json"}}).success(function(t,i,l,p){a.hide(),t&&t.user?(e.user=t.user,console.log("CA83_set"),c.setItem("user",t.user).then(function(e){console.log("CA83_set OK")},function(e){console.log("CA83_set ERROR"),console.log(JSON.stringify(e))}),o.nextViewOptions({disableAnimate:!1,disableBack:!0}),s.path("/app/home")):t&&t.error&&2==t.error?(r.password="",n.alert({title:"ERRORE",template:'<p class="text-center">Non hai confermato la tua registrazione. Controlla la tua casella di posta e clicca nella mail che ti abbiamo appena inviato per confermare la registrazione (verifica anche nella cartella di spam).</p>'})):(r.password="",n.alert({title:"ERRORE",template:'<p class="text-center">Autenticazione fallita, si prega di riprovare.</p>'}))}).error(function(e,t,i,o){a.hide(),n.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})},t.doPassword=function(){n.show({template:'<input type="text" ng-model="user.email">',title:"Recupero password",subTitle:"Inserisci la tua email oppure il tuo numero di tessera e ti invieremo un'email per reimpostae la tua password:",scope:t,buttons:[{text:"Annulla"},{text:"<b>Invia</b>",type:"button-positive",onTap:function(e){return t.user.email?t.user.email:void e.preventDefault()}}]}).then(function(e){e&&(a.show({template:"Attendere, invio dati in corso..."}),i({url:p+"/password",method:"POST",data:JSON.stringify({email:e}),timeout:1e4,headers:{"Content-Type":"application/json"}}).success(function(e,t,i,o){a.hide(),e.user?n.alert({title:"CONFERMA",template:'<p class="text-center">Ti abbiamo inviato un\'email con le istruzioni per reimpostae la tua password!</p>'}):n.alert({title:"CONFERMA",template:'<p class="text-center">L\'indirizzo email o il numero di tessera inserito non risultano registrati!</p>'})}).error(function(e,t,i,o){a.hide(),n.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})}))})},t.openBrowser=function(e,t){e.preventDefault(),e.stopPropagation(),window.cordova&&window.cordova.InAppBrowser?window.cordova.InAppBrowser.open(t,"_blank","closebuttoncaption=Chiudi"):window.open(t,"_system")}}]).controller("AuthWelcomeRegistrazioneController",["$rootScope","$scope","$http","$ionicHistory","$ionicLoading","$ionicPlatform","$ionicPopup","$location","$timeout","$cordovaNativeStorage","API_END_POINT",function(e,t,i,o,a,r,n,s,l,c,p){t.$on("$ionicView.enter",function(){t.user={},window.FirebasePlugin.setScreenName("auth.welcome_registrazione"),window.FirebasePlugin.logEvent("page_view",{page:"auth.welcome_registrazione"})}),t.registration=function(e){e.firstname&&e.lastname&&e.card&&e.email&&e.email2&&e.password&&e.password2&&e.privacy?e.email!=e.email2?n.alert({title:"ATTENZIONE",template:'<p class="text-center">Gli indirizzi email inseriti non corrispondono!</p>'}):e.password!=e.password2?n.alert({title:"ATTENZIONE",template:'<p class="text-center">Le password inserite non corrispondono!</p>'}):(a.show({template:"Attendere, invio dati in corso..."}),i({url:p+"/registrazione",method:"POST",timeout:1e4,data:JSON.stringify(e),headers:{"Content-Type":"application/json"}}).success(function(e,t,i,r){a.hide(),e&&e.user?(n.alert({title:"CONFERMA",template:'<p class="text-center">Ti abbiamo inviato un\'email per confermare la tua registrazione!</p>'}),o.goBack(-1)):e.error&&"email"==e.error?n.alert({title:"ERRORE",template:'<p class="text-center">Impossibile procedere con la registrazione: l\'indirizzo email specificato risulta già registrato.</p>'}):e.error&&"card"==e.error?n.alert({title:"ERRORE",template:'<p class="text-center">Impossibile procedere con la registrazione: il numero tessera specificato risulta già registrato.</p>'}):e.error&&"check"==e.error?n.alert({title:"ERRORE",template:'<p class="text-center">Impossibile procedere con la registrazione: il nome e cognome specificati non corrispondono a quelli della tessera.</p>'}):n.alert({title:"ERRORE",template:'<p class="text-center">Impossibile procedere con la registrazione.</p>'})}).error(function(e,t,i,o){a.hide(),n.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})):n.alert({title:"ATTENZIONE",template:'<p class="text-center">Tutti i campi sono obbligatori, si prega di riprovare.</p>'})},t.back=function(){o.goBack(-1)}}]);
angular.module("app.auth",["app.auth.controllers"]);
angular.module("app.app.controllers",["ionic","ngCordova.plugins.beacon","ngCordova.plugins.nativeStorage"]).controller("AppController",["$rootScope","$scope","$http","$ionicActionSheet","$ionicHistory","$ionicLoading","$ionicModal","$ionicPlatform","$ionicPopup","$location","$timeout","$cordovaNativeStorage","notifications","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l,u,p,g,d,f){var m=!1;r.ready(function(){console.log("C28_get"),p.getItem("user").then(function(o){console.log("C28_get OK"),m=o,e.user=m},function(e){console.log("C28_get ERROR"),console.log(JSON.stringify(e))})}),o.doLogout=function(){var e=c.confirm({title:"Logout",template:"Sei sicuro di voler uscire?",okText:"Sì",cancelText:"No"});e.then(function(e){e&&(i.nextViewOptions({disableAnimate:!1,disableBack:!0}),console.log("C50_rm"),p.remove("user").then(function(e){console.log("C50_rm OK"),l.path("/welcome")},function(e){console.log("C50_rm ERROR"),console.log(JSON.stringify(e)),l.path("/welcome")}))})};var v=function(){a.show({template:"Attendere, aggiornamento dati in corso..."}),t({url:d+"/state",method:"GET",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(o,t,n,i){a.hide(),o.user&&(e.user=o.user,console.log("C78_set"),p.setItem("user",o.user).then(function(e){console.log("C78_set OK")},function(e){console.log("C78_set ERROR"),console.log(JSON.stringify(e))}),delete o.user),o&&o.push&&(e.push=o.push),o&&o.beacons&&(e.beacons=o.beacons,R()),console.log("C94_set"),p.setItem("state",o).then(function(o){console.log("C94_set OK"),e.$broadcast("ali:state")},function(e){console.log("C94_set ERROR"),console.log(JSON.stringify(e))})}).error(function(e,o,t,n){a.hide()})};e.$on("ali:state",function(){var o={},t=[];console.log("C109_get"),p.getItem("state").then(function(n){console.log("C109_get OK"),o=n,console.log("C116_get"),p.getItem("read_notifications").then(function(n){console.log("C116_get OK"),t=n,e.menu_pages=o.pages||[],e.notifications_count=_.filter(o.notifications,function(e){return _.indexOf(t,e.id)==-1}).length},function(e){console.log("C116_get ERROR"),console.log(JSON.stringify(e))})},function(o){console.log("C109_get ERROR"),console.log(JSON.stringify(o)),e.menu_pages=[]})}),r.ready(function(){u(function(){v()},300)});var h;s.fromTemplateUrl("templates/carta.html",{scope:o,animation:"slide-in-up"}).then(function(e){h=e}),o.hideCarta=function(){h.hide()},o.showCarta=function(){window.FirebasePlugin.setScreenName("app.carta"),window.FirebasePlugin.logEvent("page_view",{page:"app.carta"}),o.data={card:e.user.card,points:e.user.points,points_pending:e.user.points_pending},h.show(),o.data.card&&$("#barcode").barcode(o.data.card,"ean13",{barWidth:2,barHeight:50,bgColor:"#fff",fontSize:24,marginHRI:12})};var w;s.fromTemplateUrl("templates/welcome.html",{scope:o,animation:"slide-in-up"}).then(function(e){w=e}),o.hideWelcome=function(){w.hide()},o.showWelcome=function(){window.FirebasePlugin.setScreenName("app.welcome"),window.FirebasePlugin.logEvent("page_view",{page:"app.welcome"}),w.show()},r.ready(function(){if(ionic.Platform.isWebView()&&ionic.Platform.isIOS()){var e=0;console.log("C183_get"),p.getItem("push").then(function(t){if(console.log("C183_get OK"),e=t)g.initialize(),g.register();else{var n="Vuoi ricevere le notifiche dell’app Cadoro in tempo reale?<br><br>Così resterai sempre aggiornato sulle nuove offerte.";m.first_app&&(n="Vuoi ricevere le notifiche dell’app Cadoro in tempo reale?<br><br>Se dai il tuo consenso riceverai 100 punti di benvenuto, e resterai sempre aggiornato sulle nuove offerte.");var i=c.confirm({title:"Notifiche in tempo reale",template:n,okText:"Sì!",cancelText:"No, grazie."});i.then(function(e){e&&(g.initialize(),g.register(function(e){console.log("C204_set"),p.setItem("push",1).then(function(e){console.log("C204_set OK")},function(e){console.log("C204_set ERROR"),console.log(JSON.stringify(e))}),m.first_app&&o.showWelcome()}))})}},function(e){console.log("C183_get ERROR"),console.log(JSON.stringify(e)),g.initialize(),g.register()})}else g.initialize(),g.register(function(e){var t=0;console.log("C231_get"),p.getItem("push").then(function(e){console.log("C231_get OK"),t=e,t||(console.log("C238_set"),p.setItem("push",1).then(function(e){console.log("C238_set OK")},function(e){console.log("C238_set ERROR"),console.log(JSON.stringify(e))}),m.first_app&&o.showWelcome())},function(e){console.log("C231_get ERROR"),console.log(JSON.stringify(e)),console.log("C252_set"),p.setItem("push",1).then(function(e){console.log("C252_set OK")},function(e){console.log("C252_set ERROR"),console.log(JSON.stringify(e))}),m.first_app&&o.showWelcome()})})});var C=!0,O=!1;r.on("resume",function(e){C=!0,v()}),r.on("pause",function(e){C=!1}),e.beacons=[];var R=function(){!O&&window.cordova&&window.cordova.plugins&&window.cordova.plugins.locationManager&&(O=!0,r.ready(function(){var o={},t=new cordova.plugins.locationManager.Delegate;t.didDetermineStateForRegion=function(t){"didDetermineStateForRegion"==t.eventType&&"CLRegionStateInside"==t.state?"inside"!=o[t.region.uuid.toUpperCase()].state&&(console.log("didEnterRegion: "+JSON.stringify(t.region)),o[t.region.uuid.toUpperCase()].state="inside",cordova.plugins.locationManager.startRangingBeaconsInRegion(o[t.region.uuid.toUpperCase()].beaconRegion).fail(function(e){console.error(e)}).done(),_.each(e.push||[],function(e){if(2==e.target&&_.find(o[t.region.uuid.toUpperCase()].beacons,function(o){return o.id==e.target_beacon_id})){var n={title:e.title,message:e.message,data:e.data};cordova.plugins.notification.local.schedule(n),C&&S(n)}})):"didDetermineStateForRegion"==t.eventType&&"CLRegionStateOutside"==t.state&&"inside"==o[t.region.uuid.toUpperCase()].state&&(console.log("didExitRegion: "+JSON.stringify(t.region)),o[t.region.uuid.toUpperCase()].devices={},o[t.region.uuid.toUpperCase()].state="outside",cordova.plugins.locationManager.stopRangingBeaconsInRegion(o[t.region.uuid.toUpperCase()].beaconRegion).fail(function(e){console.error(e)}).done(),_.each(e.push||[],function(e){if(3==e.target&&_.find(o[t.region.uuid.toUpperCase()].beacons,function(o){return o.id==e.target_beacon_id})){var n={title:e.title,message:e.message,data:e.data};cordova.plugins.notification.local.schedule(n),C&&S(n)}}))},t.didRangeBeaconsInRegion=function(t){console.log("didRangeBeaconsInRegion:"+JSON.stringify(t)),cordova.plugins.locationManager.appendToDeviceLog("didRangeBeaconsInRegion: "+JSON.stringify(t)),"didRangeBeaconsInRegion"==t.eventType&&_.each(t.beacons,function(n){var i=n.uuid.toUpperCase()+"/"+n.major.toString()+"/"+n.minor.toString(),a={accuracy:n.accuracy,rssi:n.rssi,proximity:n.proximity};if(o[t.region.uuid.toUpperCase()].devices[i]&&a.proximity!=o[t.region.uuid.toUpperCase()].devices[i].proximity){var s=null;"ProximityImmediate"==a.proximity?s=4:"ProximityNear"==a.proximity?s=5:"ProximityFar"==a.proximity&&(s=6),s&&_.each(e.push||[],function(e){_.each(o[t.region.uuid.toUpperCase()].beacons,function(o){if(e.target==s&&e.target_beacon_id==o.id&&o.uuid.toUpperCase()==n.uuid.toUpperCase()&&o.major==n.major&&o.minor==n.minor){var t={title:e.title,message:e.message,data:e.data};cordova.plugins.notification.local.schedule(t),C&&S(t)}})})}o[t.region.uuid.toUpperCase()].devices[i]=a})},cordova.plugins.locationManager.setDelegate(t),cordova.plugins.locationManager.requestAlwaysAuthorization(),_.each(e.beacons,function(e){e.uuid.toUpperCase(),e.identifier,e.major,e.minor;if(o[e.uuid.toUpperCase()])o[e.uuid.toUpperCase()].beacons.push(e);else{var t=new cordova.plugins.locationManager.BeaconRegion(e.identifier,e.uuid.toUpperCase());o[e.uuid.toUpperCase()]={beacons:[e],beaconRegion:t,state:null,devices:{}},cordova.plugins.locationManager.startMonitoringForRegion(t).fail(function(e){console.error(e)}).done()}})}))};r.ready(function(){ionic.Platform.isWebView()&&ionic.Platform.isAndroid()&&window.cordova&&window.cordova.plugins&&window.cordova.plugins.permissions&&cordova.plugins.permissions.hasPermission(cordova.plugins.permissions.ACCESS_COARSE_LOCATION,function(e){e.hasPermission||cordova.plugins.permissions.requestPermission(cordova.plugins.permissions.ACCESS_COARSE_LOCATION,function(e){e.hasPermission||(O=!0)},null)},null)});var S=function(e){if(f&&console.log("Local notification",JSON.stringify(e)),"string"==typeof e.data&&(e.data=JSON.parse(e.data)),e.data&&e.data.popup_title){var o=[];e.data.popup_button&&(o=[{text:(e.data.popup_button_icon?'<i class="'+e.data.popup_button_icon+'"></i> ':"")+e.data.popup_button}]),hideSheet=n.show({titleText:e.data.popup_title,cancelText:'<i class="fa fa-times red"></i> Close',cancel:function(){hideSheet()},buttons:o,buttonClicked:function(o){"string"==typeof e.data&&(e.data=JSON.parse(e.data)),0===o&&e.data.location&&u(function(){e.data.location.indexOf("cadoro.it")!=-1?window.open(e.data.location,"_blank"):0===e.data.location.indexOf("http")?window.open(e.data.location,"_system","location=yes"):l.path(e.data.location)},10)}})}else e.data&&e.data.location&&(e.data.location.indexOf("cadoro.it")!=-1?window.open(e.data.location,"_blank"):0===e.data.location.indexOf("http")?window.open(e.data.location,"_system","location=yes"):l.path(e.data.location))};r.ready(function(){window.cordova&&(cordova.plugins.notification.local.on("click",function(e,o){S(e)}),e.openQrReader=function(){cordova.plugins.barcodeScanner.scan(function(o){t({url:d+"/landing/",method:"POST",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"},data:JSON.stringify({link:o.text})}).success(function(e,t,n,i){e&&e.landing?l.path("/app/landing/"+e.landing):window.open(o.text,"_system")}).error(function(e,o,t,n){console.log("error")})},function(e){console.log("Scanning failed: "+e)},{prompt:"Inquadra il QRcode"})})})}]).controller("AppHomeController",["$rootScope","$scope","$http","$ionicLoading","$ionicPopup","$ionicScrollDelegate","$cordovaNativeStorage","$timeout","$location","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l,u){var p={},g=function(){p={},console.log("C528_get"),s.getItem("state").then(function(t){console.log("C528_get OK"),p=t,o.magazine=p.magazine,o.store=_.find(p.stores||[],function(o){return o.id==e.user.store})},function(e){console.log("C528_get ERROR"),console.log(JSON.stringify(e)),o.magazine=[],o.store=[]}),t({url:l+"/punti-vendita/"+e.user.store,method:"GET",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,i,a){n.hide(),o.store=e.store}).error(function(e,o,t,i){n.hide()})};o.$on("$ionicView.beforeEnter",function(){g()}),o.$on("ali:state",function(){g()}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.home"),window.FirebasePlugin.logEvent("page_view",{page:"app.home"}),r(function(){navigator.splashscreen&&navigator.splashscreen.hide()},50)}),o.noSondaggi=function(){i.alert({title:"AVVISO",template:'<p class="text-center">Al momento non ci sono sondaggi disponibili, ritorna presto per rispondere ad alcune domande sui nostri prodotti e attività. Potrai accedere a tanti vantaggi che Cadoro ti ha riservato.</p>'})}}]).controller("AppListaSpesaController",["$rootScope","$scope","$http","$ionicLoading","$ionicPopup","$location","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c){o.$on("$ionicView.beforeEnter",function(){o.lists=[],console.log("C643_get"),s.getItem("lists").then(function(e){console.log("C643_get OK"),o.lists=e},function(e){console.log("C643_get ERROR"),console.log(JSON.stringify(e))}),n.show({template:"Attendere, aggiornamento dati in corso..."}),t({url:r+"/lista-spesa",method:"GET",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,i,a){console.log("C666_set"),s.setItem("lists",e.lists).then(function(e){console.log("C666_set OK")},function(e){console.log("C666_set ERROR"),console.log(JSON.stringify(e))}),o.lists=e.lists,n.hide()}).error(function(e,o,t,i){n.hide()})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.lista_spesa"),window.FirebasePlugin.logEvent("page_view",{page:"app.lista_spesa"})}),o.createList=function(){o.data={};i.show({template:'<input type="text" ng-model="data.name">',title:"Aggiungi un ingrediente...",scope:o,buttons:[{text:"Annulla"},{text:"<b>AGGIUNGI</b>",type:"button-positive",onTap:function(e){return o.data.name?o.data.name:void e.preventDefault()}}]}).then(function(a){a&&(n.show({template:"Attendere, invio dati in corso..."}),t({url:r+"/lista-spesa",method:"POST",data:JSON.stringify({name:a}),timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,i,a){n.hide(),e.list&&(o.lists.splice(0,0,e.list),console.log("C723_set"),s.setItem("lists",o.lists).then(function(e){console.log("C723_set OK")},function(e){console.log("C723_set ERROR"),console.log(JSON.stringify(e))}))}).error(function(e,o,t,a){n.hide(),i.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})}))})},o.sendList=function(){n.show({template:"Attendere, aggiornamento dati in corso..."}),t({url:r+"/lista-spesa",data:{email:1},method:"POST",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,o,t,a){n.hide(),i.alert({title:"CONFERMA",template:'<p class="text-center">La lista della spesa è stata inviata alla tua email!</p>'})}).error(function(e,o,t,a){n.hide(),i.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})},o.pdfList=function(){n.show({template:"Attendere, aggiornamento dati in corso..."}),t({url:r+"/lista-spesa",data:{pdf:1},method:"POST",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,o,t,i){n.hide(),e.pdf&&window.open(e.pdf,"_system")}).error(function(e,o,t,a){n.hide(),i.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})},o.deleteList=function(a){i.confirm({title:"CONFERMA ELIMINAZIONE",template:a?'<p class="text-center">Sei sicuro di voler eliminare la riga selezionata?</p>':'<p class="text-center">Sei sicuro di voler eliminare la lista della spesa?</p>'}).then(function(c){c&&(n.show({template:"Attendere, aggiornamento dati in corso..."}),t({url:r+"/lista-spesa/"+(a?a.toString():""),method:"DELETE",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,i,r){a?o.lists=_.filter(o.lists,function(e){return e.id!=a}):o.lists=[],console.log("C826_set"),s.setItem("lists",o.lists).then(function(e){console.log("C826_set OK")},function(e){console.log("C826_set ERROR"),console.log(JSON.stringify(e))}),n.hide()}).error(function(e,o,t,a){n.hide(),i.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})}))})}}]).controller("AppOfferteController",["$rootScope","$scope","$stateParams","$http","$ionicLoading","$ionicPopup","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c){o.$on("$ionicView.beforeEnter",function(){o.points=0,o.categories=[],o.products=[],i.show({template:"Attendere, aggiornamento dati in corso..."}),n({url:r+"/offerte",method:"GET",timeout:3e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,n,a){o.points=e.points,o.products=e.products,o.categories=_.map(e.categories,function(t){return t.products=o.paginate(_.filter(e.products,function(e){return e.category_id==t.id}),2),t}),i.hide()}).error(function(e,o,t,n){i.hide()})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.offerte"),window.FirebasePlugin.logEvent("page_view",{page:"app.offerte"})}),o.paginate=function(e,o){var t=[];for(o=o||this.length;e.length;)t.push(e.splice(0,o));return t}}]).controller("AppPreferitiController",["$rootScope","$scope","$stateParams","$http","$ionicLoading","$ionicPopup","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c){o.$on("$ionicView.beforeEnter",function(){o.favourites=[],i.show({template:"Attendere, aggiornamento dati in corso..."}),n({url:r+"/preferiti",method:"GET",timeout:3e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,n,a){o.favourites=e.favourites,i.hide()}).error(function(e,o,t,n){i.hide()})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.preferiti"),window.FirebasePlugin.logEvent("page_view",{page:"app.preferiti"})})}]).controller("AppPaginaController",["$rootScope","$scope","$stateParams","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a){o.$on("$ionicView.beforeEnter",function(){var e={};console.log("C957_get"),n.getItem("state").then(function(n){console.log("C957_get OK"),e=n,o.page=_.find(e.pages||[],function(e){return e.id==t.pageId})},function(e){console.log("C957_get ERROR"),console.log(JSON.stringify(e)),o.page=[]})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.pagina."+o.page.id.toString()),window.FirebasePlugin.logEvent("page_view",{page:"app.pagina."+o.page.id.toString()})})}]).controller("AppImpostazioniController",["$rootScope","$scope","$http","$ionicLoading","$ionicPopup","$ionicScrollDelegate","$timeout","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l){o.$on("$ionicView.beforeEnter",function(){o.notifications={value:!!e.user.app_notifications};var t={};o.privacy_intro="",o.privacy_text="",console.log("C999_get"),r.getItem("state").then(function(e){console.log("C999_get OK"),t=e,o.privacy_intro=t.privacy_intro||"",o.privacy_text=t.privacy_text||""},function(e){console.log("C999_get ERROR"),console.log(JSON.stringify(e))})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.impostazioni"),window.FirebasePlugin.logEvent("page_view",{page:"app.impostazioni"})}),o.toggleExpand=function(){o.expand=!o.expand,s(function(){a.resize()},50)},o.$watch("notifications",function(o,a){if(o.value!=e.user.app_notifications){n.show({template:"Attendere, aggiornamento dati in corso..."});var s={};console.log("C1029_get"),r.getItem("notifications").then(function(a){console.log("C1029_get OK"),s=a,s.app_notifications=o.value,t({url:c+"/token",method:"POST",data:JSON.stringify(s),timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(t,i,a,s){n.hide(),e.user.app_notifications=o.value,console.log("C1049_set"),r.setItem("user",e.user).then(function(e){console.log("C1049_set OK")},function(e){console.log("C1049_set ERROR"),console.log(JSON.stringify(e))})}).error(function(e,o,t,a){n.hide(),i.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})},function(e){console.log("C1029_get ERROR"),console.log(JSON.stringify(e)),n.hide()})}},!0)}]).controller("AppAssistenzaController",["$rootScope","$scope","$http","$ionicLoading","$ionicPopup","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r){o.$on("$ionicView.beforeEnter",function(){var t={};console.log("C1088_get"),a.getItem("state").then(function(e){console.log("C1088_get OK"),t=e,o.subjects=t.subjects},function(e){console.log("C1088_get ERROR"),console.log(JSON.stringify(e)),o.subjects=[]}),o.data={subject:null,message:null,card:e.user.card,email:e.user.email,firstname:e.user.firstname,lastname:e.user.lastname}}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.assistenza"),window.FirebasePlugin.logEvent("page_view",{page:"app.assistenza"})}),o.send=function(a){n.show({template:"Attendere, invio dati in corso..."}),t({url:s+"/assistenza",method:"POST",data:JSON.stringify(a),timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,a,s){n.hide(),i.alert({title:"CONFERMA",template:'<p class="text-center">Il messaggio è stato inviato correttamente, ti contatteremo il prima possibile!</p>'}),o.data.subject=null,o.data.message=null,o.data.email=!1}).error(function(e,o,t,a){n.hide(),i.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})}}]).controller("AppAssistenzaTourController",["$rootScope","$scope","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i){o.$on("$ionicView.beforeEnter",function(){var e={};o.banners=[],console.log("C1159_get"),t.getItem("state").then(function(t){console.log("C1159_get OK"),e=t,o.banners=e.tour},function(e){console.log("C1159_get ERROR"),console.log(JSON.stringify(e))})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.assistenza.tour"),window.FirebasePlugin.logEvent("page_view",{page:"app.assistenza.tour"})})}]).controller("AppProfiloController",["$rootScope","$scope","$http","$ionicLoading","$ionicPopup","$ionicScrollDelegate","$timeout","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l){o.$on("$ionicView.beforeEnter",function(){}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.profilo"),window.FirebasePlugin.logEvent("page_view",{page:"app.profilo"})})}]).controller("AppProfiloModificaController",["$rootScope","$scope","$http","$ionicHistory","$ionicLoading","$ionicPopup","$timeout","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l){o.$on("$ionicView.beforeEnter",function(){o.user=_.clone(e.user)}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.profilo_modifica"),window.FirebasePlugin.logEvent("page_view",{page:"app.profilo_modifica"})}),o.update=function(o){t({url:c+"/profilo",method:"PUT",data:JSON.stringify(o),timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,o,t,a){i.hide(),n.goBack(-1)}).error(function(e,o,t,n){i.hide(),a.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})}}]).controller("AppNotificheController",["$rootScope","$scope","$http","$ionicLoading","$ionicPopup","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r){o.$on("$ionicView.beforeEnter",function(){o.notifications=[],n.show({template:"Attendere, aggiornamento dati in corso..."}),t({url:s+"/notifiche",method:"GET",timeout:3e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,i,s){var r=[];o.notifications=[],console.log("C1272_get"),a.getItem("read_notifications").then(function(t){console.log("C1272_get OK"),r=t,o.notifications=_.map(e.notifications,function(e){return e.read=_.indexOf(r,e.id)!=-1,e})},function(e){console.log("C1272_get ERROR"),console.log(JSON.stringify(e))}),n.hide()}).error(function(e,o,t,i){n.hide()})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.notifiche"),window.FirebasePlugin.logEvent("page_view",{page:"app.notifiche"})}),o.read=function(o){var t=[];console.log("C1298_get"),a.getItem("read_notifications").then(function(e){console.log("C1298_get OK"),t=e,_.indexOf(t,o.id)==-1&&(t.push(o.id),console.log("C1306_set"),a.setItem("read_notifications",t).then(function(e){console.log("C1306_set OK")},function(e){console.log("C1306_set ERROR"),console.log(JSON.stringify(e))}))},function(e){console.log("C1298_get ERROR"),console.log(JSON.stringify(e))}),e.$broadcast("ali:state"),window.open(o.url,"_system")}}]).controller("AppPuntiVenditaController",["$rootScope","$scope","$http","$ionicLoading","$ionicPopup","$timeout","$cordovaNativeStorage","API_END_POINT","DEBUG","utilities",function(e,o,t,n,i,a,s,r,c,l){o.$on("$ionicView.beforeEnter",function(){var c={};console.log("C1340_get"),s.getItem("state").then(function(e){console.log("C1340_get OK"),c=e,o.stores=c.stores||[]},function(e){console.log("C1340_get ERROR"),console.log(JSON.stringify(e)),o.stores=[]}),o.stores_results=[],o.provinces=[],o.cities=[],o.data={province:null,city:null},t({url:r+"/punti-vendita",method:"GET",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(t,r,u,p){n.hide(),o.stores=c.stores=t.stores,o.filter(),console.log("C1373_set"),s.setItem("state",c).then(function(e){console.log("C1373_set OK")},function(e){console.log("C1373_set ERROR"),console.log(JSON.stringify(e))});var g=function(){navigator.geolocation.getCurrentPosition(function(e,t){var n=_.map(o.stores,function(o){var t=e?l.geodistance(o.lat,o.lng,e.coords.latitude,e.coords.longitude):null;return o.distance=parseInt(t),o});a(function(e){return function(){o.stores=_.sortBy(e,function(e){return e.distance}),o.filter()}}(n))},function(o){1!=o.code||e.punti_vendita_nogeo||(e.punti_vendita_nogeo=1,i.alert({title:"AVVISO",template:'<p class="text-center">Per trovare il supermercato più vicino a te, abilita la localizzazione nelle impostazioni del tuo smartphone.</p>'}))},{timeout:1e4,enableHighAccuracy:!1,maximumAge:6e5})};ionic.Platform.isWebView()&&ionic.Platform.isAndroid()&&window.cordova&&window.cordova.plugins&&window.cordova.plugins.permissions?cordova.plugins.permissions.hasPermission(cordova.plugins.permissions.ACCESS_FINE_LOCATION,function(e){e.hasPermission?g():cordova.plugins.permissions.requestPermission(cordova.plugins.permissions.ACCESS_FINE_LOCATION,function(e){g()},null)},null):g()}).error(function(e,o,t,a){n.hide(),i.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.punti_vendita"),window.FirebasePlugin.logEvent("page_view",{page:"app.punti_vendita"})}),o.filter=function(){o.stores_results=[],o.provinces=[],o.cities=[],_.each(o.stores,function(e){_.find(o.provinces,function(o){return o==e.province})||o.provinces.push(e.province),o.data.province&&o.data.province!=e.province||o.data.city&&o.data.city!=e.city||(o.stores_results.push(e),_.find(o.cities,function(o){return o==e.city})||o.cities.push(e.city))})},o.$watch("data",function(e,t){o.filter()},!0)}]).controller("AppPuntiVenditaDettaglioController",["$rootScope","$scope","$http","$ionicLoading","$ionicHistory","$ionicNavBarDelegate","$ionicPopup","$ionicScrollDelegate","$ionicPlatform","$state","$stateParams","$timeout","$cordovaNativeStorage","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l,u,p,g,d,f){o.$on("$ionicView.beforeEnter",function(){var i={};c.ready(function(){console.log("C1318_get"),g.getItem("state").then(function(e){console.log("C1318_get OK"),i=e,o.store=_.find(i.stores||[],function(e){return e.id==u.id})},function(e){console.log("C1318_get ERROR"),console.log(JSON.stringify(e))}),o.view=1,p(function(){t({url:d+"/punti-vendita/"+u.id,method:"GET",timeout:1e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,a,s){n.hide(),o.store=e.store,console.log("C1343_set"),g.setItem("state",i).then(function(e){console.log("C1343_set OK")},function(e){console.log("C1343_set ERROR"),console.log(JSON.stringify(e))})}).error(function(e,o,t,i){n.hide(),s.alert({title:"ERRORE",template:'<p class="text-center">Il server non è raggiungibile, verifica la tua connessione di rete prima di riprovare!</p>'})})},1e3),a.showBackButton(!1)})}),o.$on("$ionicView.enter",function(){c.ready(function(){window.FirebasePlugin.setScreenName("app.punti_vendita_dettaglio"),window.FirebasePlugin.logEvent("page_view",{page:"app.punti_vendita_dettaglio"})})}),o.$on("$ionicView.leave",function(){a.showBackButton(!1)}),o.setView=function(e){o.view=e,p(function(){if(2==e){var t=o.store,n={zoom:13,mapTypeId:google.maps.MapTypeId.ROADMAP,disableDefaultUI:!0,zoomControl:!0},i=new google.maps.Map(document.getElementById("gmap-"+o.store.id.toString()),n);new google.maps.Marker({position:new google.maps.LatLng(t.lat,t.lng),map:i,title:t.title});i.setCenter(new google.maps.LatLng(t.lat,t.lng)),i.setZoom(13)}r.resize()},100)},o.goBack=function(){i.backView()?i.goBack():(i.nextViewOptions({disableBack:!0}),o.store&&o.store.id!=e.user.store?l.go("app.punti_vendita"):l.go("app.home"))}}]).controller("AppMagazineController",["$rootScope","$scope","$http","$ionicLoading","$ionicHistory","$ionicNavBarDelegate","$ionicPopup","$ionicScrollDelegate","$state","$stateParams","$timeout","$cordovaNativeStorage","$sce","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l,u,p,g,d,f){o.$on("$ionicView.beforeEnter",function(){var e={};o.magazine=[],console.log("C1585_get"),p.getItem("state").then(function(t){console.log("C1585_get OK"),e=t,o.magazine=e.magazine},function(e){console.log("C1585_get ERROR"),console.log(JSON.stringify(e))})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.magazine"),window.FirebasePlugin.logEvent("page_view",{page:"app.magazine"})}),o.trustAsHtml=function(e){return g.trustAsHtml(e)}}]).controller("AppLandingController",["$rootScope","$scope","$http","$ionicLoading","$ionicHistory","$ionicNavBarDelegate","$ionicPopup","$ionicScrollDelegate","$state","$stateParams","$timeout","$cordovaNativeStorage","$location","$sce","API_END_POINT","DEBUG",function(e,o,t,n,i,a,s,r,c,l,u,p,g,d,f,m){var v=l.id;console.log("id: "+v),o.$on("$ionicView.beforeEnter",function(){t({url:f+"/landing/"+v,method:"GET",timeout:3e4,headers:{Authorization:"Basic "+btoa(e.user.id+":"+e.user.card),"Content-Type":"application/json"}}).success(function(e,t,i,a){o.landing=e.landing,n.hide()}).error(function(e,o,t,i){n.hide()})}),o.$on("$ionicView.enter",function(){window.FirebasePlugin.setScreenName("app.landing"),window.FirebasePlugin.logEvent("page_view",{page:"app.landing"}),navigator.splashscreen&&navigator.splashscreen.hide()}),o.trustAsHtml=function(e){return d.trustAsHtml(e)}}]);
angular.module("app.app",["app.app.controllers","app.app.services"]);
angular.module("app.app.services",["ionic","ngCordova.plugins.nativeStorage","ngCordova.plugins.appVersion"]).factory("_",function(){return window._.paginate=function(i,t){for(var o=[];i.length;)o.push(i.splice(0,t));return o},window._}).service("utilities",function(){this.geodistance=function(i,t,o,n){var a=6378.137,e=(o-i)*Math.PI/180,d=(n-t)*Math.PI/180,c=Math.sin(e/2)*Math.sin(e/2)+Math.cos(i*Math.PI/180)*Math.cos(o*Math.PI/180)*Math.sin(d/2)*Math.sin(d/2),l=2*Math.atan2(Math.sqrt(c),Math.sqrt(1-c)),s=a*l;return s}}).service("notifications",["$rootScope","$cordovaAppVersion","$http","$location","$ionicActionSheet","$timeout","$cordovaNativeStorage","API_END_POINT",function(i,t,o,n,a,e,d,c){var l=this;this.registered=!1,this.register=function(n){var a=!1;ionic.Platform.isWebView()&&t.getVersionNumber().then(function(t){i.user.app_version&&i.user.app_version==t||(a=!0)}),!ionic.Platform.isWebView()||l.registered&&!a||window.FirebasePlugin.getToken(function(a){t.getVersionNumber().then(function(t){var e={app_token:a,app_notifications:1,app:t,guid:window.device?window.device.uuid:null,platform:window.device?window.device.platform:null,version:window.device?window.device.version:null,model:window.device?window.device.model:null,name:window.device?window.device.name:null,uuid:window.device?window.device.uuid:null};console.log("S71_set"),d.setItem("notifications",e).then(function(i){console.log("S71_set OK")},function(i){console.log("S71_set ERROR"),console.log(JSON.stringify(i))}),o({url:c+"/token",method:"POST",data:e,headers:{Authorization:"Basic "+btoa(i.user.id+":"+i.user.card),"Content-Type":"application/json"},timeout:1e4}).success(function(i,t,o,e){l.registered=!0,n&&n(a)})})},function(i){console.error("$cordovaPushV5:REGISTER_ERROR",i)})},this.initialized=!1,this.initialize=function(){ionic.Platform.isWebView()&&!l.initialized&&(ionic.Platform.isWebView()&&ionic.Platform.isIOS()&&window.FirebasePlugin.grantPermission(),l.initialized=!0,window.FirebasePlugin.onNotificationOpen(function(i){if(console.log("notifica: "+JSON.stringify(i)),i.additionalData&&i.additionalData.popup_title){var t=[];i.additionalData.popup_button&&(t=[{text:(i.additionalData.popup_button_icon?'<i class="'+i.additionalData.popup_button_icon+'"></i> ':"")+i.additionalData.popup_button}]),hideSheet=a.show({titleText:i.additionalData.popup_title,cancelText:'<i class="fa fa-times red"></i> Annulla',cancel:function(){hideSheet()},buttons:t,buttonClicked:function(t){0===t&&i.additionalData.location&&e(function(){0===i.additionalData.location.indexOf("cadoro.it")?window.open(i.additionalData.location,"_blank"):0===i.additionalData.location.indexOf("http")?window.open(i.additionalData.location,"_system","location=yes"):n.path(i.additionalData.location)},10)}})}else i.additionalData&&i.additionalData.location&&n.path(i.additionalData.location)},function(i){console.error(i)}))}}]);
angular.module("app.templates",[]).run(["$templateCache",function(n){n.put("templates/app-assistenza-tour.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false" class="bg-light">\n    <h1 class="bg-legno-scuro">\n      COME FUNZIONA\n    </h1>\n    <ion-slide-box ng-if="banners.length">\n      <ion-slide ng-repeat="banner in banners">\n        <div class="box banner-1">\n          <img img-cache ic-src="{{banner.image}}" alt="" class="img-responsive">\n        </div>\n      </ion-slide>\n    </ion-slide-box>\n  </ion-content>\n</ion-view>\n'),n.put("templates/app-assistenza.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <h1 class="bg-orange text-center">\n      Richiesta informazioni\n    </h1>\n    <div class="list mt20 mb0">\n      <div class="item item-input item-stacked-label">\n        <strong>NOME</strong>\n        <div class="mt10 mb20">{{user.firstname}}</div>\n        <strong>COGNOME</strong>\n        <div class="mt10 mb20">{{user.lastname}}</div>\n        <strong>EMAIL</strong>\n        <div class="mt10 mb20">{{user.email}}</div>\n      </div>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Messaggio*</span>\n        <textarea name="message" rows="5" style="resize: none;" ng-model="data.message"></textarea>\n      </label>\n      <ion-checkbox ng-model="data.send_email" ng-value="1">\n        Invia una copia del messaggio alla mia email.\n      </ion-checkbox>\n    </div>\n    <div class="padding mt0">\n      <button class="button button-block button-balanced" ng-click="send(data)">INVIA</button>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-home.html",'<ion-view>\n  <ion-nav-title>\n    <img src="img/logo.png">\n  </ion-nav-title>\n  <ion-content padding="false">\n    <div class="home-points" ng-class="{\'dipendente\': user.dipendente == true}">\n      <img src="img/home-cardoro.png" alt="" ng-if="user.dipendente != true">\n      <img src="img/home-cardoro-team.png" alt="" ng-if="user.dipendente == true">\n      Ciao {{user.firstname}}<br>\n      IL TUO SALDO PUNTI È<br>\n      <strong>{{user.points?user.points:0}}</strong>\n      <div class="home-points-bottom" ng-if="user.points_pending > 0">\n        di cui <strong>{{user.points_pending}}</strong> verranno cancellati il primo di febbraio\n      </div>\n    </div>\n    <div class="padding">\n      <div ng-if="store.flyers && store.flyers.length">\n        <div class="row mt10 p0" ng-repeat="flyer in store.flyers">\n          <div class="col-40" ng-if="flyer.thumb">\n            <img ng-src="{{flyer.thumb}}" class="img-responsive" style="width: 80%">\n          </div>\n          <div class="col-60">\n            <a href="{{flyer.link}}" ng-if="flyer.link" rel="external">\n              SCARICA IL VOLANTINO\n            </a>\n            <a href="{{flyer.pdf}}" ng-if="!flyer.link && flyer.pdf" rel="external">\n              SCARICA IL PDF\n            </a>\n            <h4><strong ng-bind-html="flyer.title"></strong></h4>\n            Dal {{flyer.date_begin|mformat:\'DD/MM/YY\'}} al {{flyer.date_end|mformat:\'DD/MM/YY\'}}<br>\n          </div>\n        </div>\n      </div>\n      <div class="well well-white mt10" ui-sref="app.punti_vendita_dettaglio({id: user.store})">\n        <span class="red">APRI LA SCHEDA DEL TUO PUNTO VENDITA</span>\n        <div><strong>{{store.title}}</strong></div>\n      </div>\n      <div class="row" style="margin-left: -10px; margin-right: -10px; width: auto; max-width: inherit;">\n        <div class="col">\n          <span class="home-scontioro" ui-sref="app.offerte">\n            Sconti <strong>ORO</strong>\n          </span>\n        </div>\n        <div class="col">\n          <a href="http://www.cadoro.it/magazine" rel="external" class="home-magazine">\n            Magazine\n          </a>\n        </div>\n      </div>\n      <div class="row" style="margin-left: -10px; margin-right: -10px; width: auto; max-width: inherit;">\n        <div class="col">\n          <a href="" ng-click="openQrReader()" class="home-qrcode">\n            Lettore<br>\n            QRcode\n          </a>\n        </div>\n        <div class="col">\n          <a href="#/app/preferiti" class="home-preferiti">\n            Contenuti<br>\n            Preferiti\n          </a>\n        </div>\n        <div class="col">\n          <a href="#/app/lista-spesa" class="home-lista-spesa">\n            Lista della<br>\n            spesa\n          </a>\n        </div>\n      </div>\n      <div class="row" style="margin-left: -10px; margin-right: -10px; width: auto; max-width: inherit;">\n        <div class="col">\n          <a href="#/app/magazine">\n            <img ng-src="{{magazine.img_home}}" style="width: 100%;" />\n          </a>\n        </div>\n      </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-impostazioni.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="true">\n    <ion-toggle ng-model="notifications.value" ng-value="true" class="mt10">\n      <strong class="font-oswald">NOTIFICHE PUSH</strong><br>\n      <small>Attiva o disattiva le notifiche delle app</small>\n    </ion-toggle>\n    <div class="list mt10">\n      <div class="item item-text-wrap" ng-click="toggleExpand()">\n        <strong class="font-oswald">\n          INFORMATIVA SULLA PRIVACY\n          <i class="fa fa-chevron-down pull-right" style="margin-top: -2px;" ng-if="!expand"></i>\n          <i class="fa fa-chevron-up pull-right" style="margin-top: -2px;" ng-if="expand"></i>\n        </strong>\n        <p class="mt5" ng-bind-html="privacy_intro"></p></p>\n      </div>\n      <div class="item item-text-wrap" ng-if="expand" ng-bind-html="privacy_text"></div>\n    </div>\n  </ion-content>\n</ion-view>\n'),n.put("templates/app-landing.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <div class="landing">\n      <h1 class="text-left" style="padding: 5px 15px;">\n        {{landing.title}}\n      </h1>\n      <div ng-if="landing.image" style="padding: 5px 15px;">\n        <img ng-src="{{landing.image}}" style="width: 100%;" />\n      </div>\n      <div class="padding" ng-bind-html="trustAsHtml(landing.testo)"></div>\n    </div>\n    <div ng-if="landing.gallery.length" class="padding">\n      <ion-gallery ion-gallery-items="landing.gallery"></ion-gallery>\n    </div>\n    <div class="padding landing-correlati magazine-article-related mt20" ng-if="landing.correlati.length">\n      <div class="h4 mt20">Leggi anche: </div>\n      <a ng-repeat="item in landing.correlati" href="{{item.url}}" class="magazine-item magazine-item-{{item.category_slug}} magazine-item-related mb20"\n         style="background-image: url({{item.image}});" rel="external">\n        <img ng-src="{{item.category_image}}" alt="{{item.category_title}}" class="magazine-item__category">\n        <span class="magazine-item__title" style="font-family: Hind,HelveticaNeue-Light,sans-serif-light; font-weight: bold;" ng-bind-html="item.title"></span>\n      </a>\n\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-lista-spesa.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <h1 class="bg-green">\n      LISTA DELLA SPESA\n    </h1>\n    <h2>\n      La tua lista della spesa\n    </h2>\n    <div class="padding" style="padding-top: 0;">\n      <table class="table table-striped">\n        <thead>\n          <tr>\n            <th width="100%" colspan="2">\n              Articoli\n            </th>\n          </tr>\n        </thead>\n        <tbody>\n          <tr ng-repeat="list in lists">\n            <td>\n              {{list.title}}\n            </td>\n            <td width="30%" class="text-right">\n              <a href="" ng-click="deleteList(list.id)">\n                elimina\n              </a>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n      <div class="text-right mt20">\n        <button class="button button-balanced" ng-click="createList()">AGGIUNGI...</button>\n      </div>\n    </div>\n    <hr class="mt10 mb0">\n    <div class="row" ng-if="lists.length">\n      <div class="col">\n        <button class="button button-block button-balanced" ng-click="sendList()">INVIA EMAIL</button>\n      </div>\n      <div class="col">\n        <button class="button button-block button-balanced" ng-click="pdfList()">STAMPA PDF</button>\n      </div>\n      <div class="col">\n        <button class="button button-block button-positive" ng-click="deleteList()">ELIMINA LISTA </button>\n      </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-magazine.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <div class="magazine">\n      <div class="padding">\n        <img ng-src="{{magazine.img_full}}" style="width: 100%;" />\n      </div>\n      <div class="padding pt0 pb0">\n        <small>{{magazine.date}}</small>\n      </div>\n      <h1 class="text-left">\n        {{magazine.title}}\n      </h1>\n      <div class="padding" ng-bind-html="trustAsHtml(magazine.testo)"></div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-notifiche.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="true">\n    <div ng-class="{\'well well-white mb10\': true, \'unread\': !notification.read}"\n         ng-repeat="notification in notifications">\n      <div class="mb5" ng-if="notification.date">\n        <strong>{{notification.date|mformat:\'DD/MM/YYYY\'}}</strong>\n      </div>\n      <img ng-src="{{notification.image}}" alt="" class="img-responsive" ng-if="notification.image">\n      <h4 class="mt5">\n        {{notification.title}}\n      </h4>\n      <div class="mt5" ng-if="notification.description" ng-bind-html="notification.description"></div>\n      <div class="mt10">\n        <span class="button" ng-click="read(notification)">LEGGI</span>\n      </div>\n    </div>\n    <p class="mt20 text-center" ng-if="notifications.length == 0">\n      Non ci sono notifiche.\n    </p>\n  </ion-content>\n</ion-view>\n'),n.put("templates/app-offerte.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <h1 class="bg-orange-light text-center">\n      Sconti ORO\n    </h1>\n    <div class="padding">\n      <div class="well well-white">\n        <h4>IL TUO BUONO SCONTO SULLA SPESA</h4>\n        <p class="mt10">\n          Ogni 1.000 punti accumulati, puoi avere un buono\n          di 10,00€ da utilizzare sulla tua prossima spesa.\n        </p>\n        <p class="mt20 red" style="font-size: 18px;">\n          SALDO PUNTI <strong class="red">{{points}}</strong>\n        </p>\n        <div class="progressbar mt40 mb0">\n          <div class="value" style="width: {{points/10}}%;"></div>\n          <div class="value-bg">&nbsp;</div>\n          <div class="value-max"><strong>10</strong>&euro;</div>\n        </div>\n      </div>\n      <div ng-repeat="category in categories">\n        <div class="mt30 mb30 text-center">\n          {{category.title}}\n        </div>\n        <div class="row" ng-repeat="row in category.products">\n          <div class="col-50 text-center mb20" ng-repeat="product in row">\n            <img ng-src="{{product.image}}" class="img-responsive">\n            <p class="mt5">\n              {{product.title}}\n            </p>\n            <p class="mt5" ng-if="product.description" ng-bind-html="product.description"></p>\n          </div>\n        </div>\n      </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-pagina.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false" class="bg-light">\n    <h1 class="bg-legno-scuro">\n      {{page.title}}\n    </h1>\n    <img img-cache ic-src="{{page.cover}}" class="img-responsive" ng-if="page.cover">\n    <div ng-if="page.body" ng-bind-html="page.body" class="padding text-paragraphs"></div>\n  </ion-content>\n</ion-view>\n'),n.put("templates/app-preferiti.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <style>@import url(http://fonts.googleapis.com/css?family=Sue+Ellen+Francisco);</style>\n    <h1 class="bg-red-heart text-center">\n      Contenuti preferiti\n    </h1>\n    <div class="padding">\n      <a ng-repeat="favourite in favourites" href="{{favourite.url}}" rel="external"\n         ng-class="{\'magazine-item\': true, \'mb10\': true, \'magazine-item-ricette\': favourite.recipe}"\n         style="background-image: url({{favourite.image}});">\n        <img ng-src="{{favourite.category}}" alt="" class="magazine-item__category">\n        <span class="magazine-item__title">\n          {{favourite.title}}\n        </span>\n      </a>\n    </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-profilo-modifica.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <h1 class="bg-brown bg-brown-user" ui-sref="app.profilo">\n      Il tuo profilo <i class="fa fa-chevron-up pull-right"></i>\n      <small>Modifica i tuoi dati</small>\n    </h1>\n    <div class="list mt20">\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Nome</span>\n        <input type="text" name="firstname" ng-model="user.firstname" readonly>\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Cognome</span>\n        <input type="text" name="lastname" ng-model="user.lastname" readonly>\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Tessera</span>\n        <input type="text" name="card" ng-model="user.card" readonly>\n      </label>\n      <label class="item item-input item-stacked-label mt30">\n        <span class="input-label">Indirizzo</span>\n        <input type="text" name="address" ng-model="user.address">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Numero Civico</span>\n        <input type="text" name="address_no" ng-model="user.address_no">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Città</span>\n        <input type="text" name="city" ng-model="user.city">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Provincia</span>\n        <input type="text" name="province" ng-model="user.province">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">CAP</span>\n        <input type="text" name="zipcode" ng-model="user.zipcode">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Cellulare</span>\n        <input type="text" name="mobile" ng-model="user.mobile">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Telefono</span>\n        <input type="text" name="phone" ng-model="user.phone">\n      </label>\n      <label class="item item-input item-stacked-label mt30">\n        <span class="input-label">Email</span>\n        <input type="email" name="email" ng-model="user.email">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Nuova Password</span>\n        <input type="password" name="password1" ng-model="user.password1">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Conferma Password</span>\n        <input type="password" name="password2" ng-model="user.password2">\n      </label>\n      <div class="item item-button mt20 text-center">\n        <button class="button button-block button-balanced" ng-click="update(user)">SALVA</button>\n      </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-profilo.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="false">\n    <h1 class="bg-brown bg-brown-user" ui-sref="app.profilo_modifica">\n      Il tuo profilo <i class="fa fa-chevron-down pull-right"></i>\n    </h1>\n    <div class="list mt20">\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Nome</strong></div>\n          <div class="col-60">{{user.firstname}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Cognome</strong></div>\n          <div class="col-60">{{user.lastname}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Tessera</strong></div>\n          <div class="col-60">{{user.card}}</div>\n        </div>\n      </div>\n      <div class="item item-input mt30">\n        <div class="row">\n          <div class="col-40"><strong>Indirizzo</strong></div>\n          <div class="col-60">{{user.address}} {{user.address_no}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Città</strong></div>\n          <div class="col-60">{{user.city}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Provincia</strong></div>\n          <div class="col-60">{{user.province}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>CAP</strong></div>\n          <div class="col-60">{{user.zipcode}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Cellulare</strong></div>\n          <div class="col-60">{{user.mobile}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Telefono</strong></div>\n          <div class="col-60">{{user.phone}}</div>\n        </div>\n      </div>\n      <div class="item item-input mt30">\n        <div class="row">\n          <div class="col-40"><strong>Data di nascita</strong></div>\n          <div class="col-60">{{user.birthday|mformat:"DD/MM/YYYY"}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Sesso</strong></div>\n          <div class="col-60">{{user.gender}}</div>\n        </div>\n      </div>\n      <div class="item item-input mt30">\n        <div class="row">\n          <div class="col-40"><strong>Email</strong></div>\n          <div class="col-60">{{user.email}}</div>\n        </div>\n      </div>\n      <div class="item item-input">\n        <div class="row">\n          <div class="col-40"><strong>Password</strong></div>\n          <div class="col-60">************</div>\n        </div>\n      </div>\n      <div class="item item-button mt20 text-center">\n        <button class="button button-block button-positive" ui-sref="app.profilo_modifica">MODIFICA</button>\n      </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-punti-vendita-dettaglio.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-nav-buttons side="left">\n    <button nav-direction="back" ng-click="goBack()" class="button back-button buttons button-clear header-item">\n      <i class="icon ion-chevron-left"></i>\n    </button>\n  </ion-nav-buttons>\n  <ion-content padding="true">\n    <div class="well">\n      <a href="" class="btn-store" ng-if="view == 1" ng-click="setView(2)">\n        <img src="img/btn-store-2.png" alt="" width="60">\n      </a>\n      <a href="" class="btn-store" ng-if="view == 2" ng-click="setView(1)">\n        <img src="img/btn-store-1.png" alt="" width="60">\n      </a>\n      <a href="http://maps.apple.com/?q={{store.lat}},{{store.lng}}" class="btn-store" style="top:60px;right: -2px;border-left: 2px solid #fff;border-bottom: 2px solid #fff;">\n        <img src="img/naviga-icona.png" alt="" width="60">\n      </a>\n      <strong>{{store.title}}</strong><br>\n      {{store.address}}<br>\n      {{store.zipcode}} {{store.city}} ({{store.province}})<br>\n      Tel. <a href="tel:{{store.phone}}" class="no-decoration"><strong>{{store.phone}}</strong></a>\n      <div class="mt40 ng-hide" id="gmap-{{store.id}}" ng-show="view == 2" style="min-height: 320px;"></div>\n      <div class="mt40" ng-show="view == 1 && store.openings">\n        <strong>ORARI DI APERTURA</strong>\n        <table width="100%" class="mt10">\n          <tr ng-repeat="opening in store.openings">\n            <td width="40%"><strong>{{opening.date|mformat:\'DD/MM/YYYY\'}}</strong></td>\n            <td width="60%">\n              <span ng-if="opening.h1">{{opening.h1}}-{{opening.h2}}</span>\n              <span ng-if="opening.h3">- {{opening.h3}}-{{opening.h4}}</span>\n              <span ng-if="opening.type">{{opening.type.toLowercase()}}</span>\n            </td>\n          </tr>\n        </table>\n      </div>\n    </div>\n    <div class="well well-orange mt10" ng-if="store.flyers && store.flyers.length">\n      <strong>PROMOZIONI E CATALOGO</strong>\n      <div class="row mt10" ng-repeat="flyer in store.flyers">\n        <div class="col-40" ng-if="flyer.thumb">\n          <img ng-src="{{flyer.thumb}}" class="img-responsive" style="width: 80%">\n        </div>\n        <div class="col-60">\n          <a href="{{flyer.link}}" ng-if="flyer.link" rel="external">\n            SCARICA IL VOLANTINO\n          </a>\n          <a href="{{flyer.pdf}}" ng-if="!flyer.link && flyer.pdf" rel="external">\n            SCARICA IL VOLANTINO\n          </a>\n          <h4><strong>{{flyer.title}}</strong></h4>\n          Dal {{flyer.date_begin|mformat:\'DD/MM/YY\'}} al {{flyer.date_end|mformat:\'DD/MM/YY\'}}<br>\n        </div>\n      </div>\n    </div>\n    <div class="mt30" ng-if="store.services_1.length">\n      <strong>REPARTI</strong>\n      <div class="row mt5 p0">\n        <div class="col p0">\n          <div class="mt5" ng-repeat="s in store.services_1 | limitTo: store.services_1.length /2: 0">\n            <img ng-src="{{s.i}}" alt="{{s.l}}" style="margin-right: 6px; vertical-align: -13px; width: 40px;"> {{s.l}}\n          </div>\n        </div>\n        <div class="col p0">\n          <div class="mt5" ng-repeat="s in store.services_1 | limitTo: store.services_1.length /2: store.services_1.length /2">\n            <img ng-src="{{s.i}}" alt="{{s.l}}" style="margin-right: 6px; vertical-align: -13px; width: 40px;"> {{s.l}}\n          </div>\n        </div>\n      </div>\n    </div>\n    <div class="mt30" ng-if="store.services_2.length">\n      <strong>SERVIZI</strong>\n      <div class="mt10" ng-repeat="s in store.services_2">\n        <img ng-src="{{s.i}}" alt="{{s.l}}" style="margin-right: 6px; vertical-align: -13px; width: 40px;"> {{s.l}}\n      </div>\n    </div>\n    <div class="mt30 text-center" ng-if="store.buoni">\n      <strong>BUONI PASTO ACCETTATI</strong><br><br>\n      <div ng-repeat="b in store.buoni" style="width: 80px; height: 80px; line-height: 80px; text-align: center; display: inline-block; border: 1px solid #eee; margin: 10px;">\n        <img ng-src="{{b.i}}" alt="{{b.t}}" class="img-responsive" style="vertical-align: middle; max-width: 60px; max-height: 60px;" ng-if="b.i">\n        <span style="vertical-align: middle; max-width: 60px; max-height: 60px; display: inline-block; line-height: 16px; font-size: 12px;" ng-if="!b.i">{{b.t}}</span>\n      </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app-punti-vendita.html",'<ion-view>\n  <ion-nav-title>\n    <a href="#/app/home" nav-clear menu-close><img src="img/logo.png"></a>\n  </ion-nav-title>\n  <ion-content padding="true">\n    <h2 class="text-left">\n      CERCA IL PUNTO VENDITA<br>\n      PIÙ VICINO A TE\n    </h2>\n    <div class="list mt20">\n      <label class="item item-input item-select" style="padding-left: 5px;border: 1px solid #ccc;">\n        <div class="input-label">\n          PROVINCIA\n        </div>\n        <select ng-model="data.province">\n          <option ng-repeat="province in provinces">{{province}}</option>\n        </select>\n      </label>\n      <label class="item item-input item-select mt5" style="padding-left: 5px;border: 1px solid #ccc;">\n        <div class="input-label">\n          COMUNE\n        </div>\n        <select ng-model="data.city">\n          <option ng-repeat="city in cities">{{city}}</option>\n        <select>\n      </label>\n    </div>\n    <div class="list list-inset">\n      <div class="item item-icon-right item-store" ng-repeat="store in stores_results" ui-sref="app.punti_vendita_dettaglio({id: store.id})">\n        <h2>{{store.city}}</h2>\n        <p>{{store.address}}</p>\n        <i class="icon ion-chevron-right"></i>\n      </div>\n    </div>\n  </ion-content>\n  <ion-footer-bar align-title="left" class="bar-light" ng-show="menu != \'carta\'">\n    <div nav-clear ng-click="showCarta()">\n      La tua <span class="gold">Card\'Oro</span> <i class="ion-chevron-up"></i>\n    </div>\n  </ion-footer-bar>\n</ion-view>\n'),n.put("templates/app.html",'<ion-side-menus enable-menu-with-back-views="false">\n  <ion-side-menu-content>\n    <ion-nav-bar class="bar-light">\n      <ion-nav-back-button></ion-nav-back-button>\n      <ion-nav-buttons side="left">\n        <button class="button button-icon button-clear ion-navicon" menu-toggle="left">\n          <span class="badge ng-hide" ng-show="notifications_count">{{notifications_count}}</span>\n        </button>\n      </ion-nav-buttons>\n    </ion-nav-bar>\n    <ion-nav-view name="content"></ion-nav-view>\n  </ion-side-menu-content>\n  <ion-side-menu side="left">\n    <ion-content>\n      <ul class="list mb20 mt10">\n        <a href="#/app/home" class="item" nav-clear menu-close>\n          HOME\n        </a>\n        <a href="" ng-click="showCarta()" class="item" nav-clear menu-close>\n          LA TUA CARD\'ORO\n        </a>\n        <a href="#/app/punti-vendita/{{user.store}}" class="item" nav-clear menu-close>\n          IL MIO PUNTO VENDITA\n        </a>\n        <a href="#/app/punti-vendita" class="item" nav-clear menu-close>\n          STORE LOCATOR\n        </a>\n        <a href="#/app/offerte" class="item" nav-clear menu-close>\n          SCONTI ORO\n        </a>\n        <a href="#/app/lista-spesa" class="item" nav-clear menu-close>\n          LISTA DELLA SPESA\n        </a>\n        <a href="#/app/preferiti" class="item" nav-clear menu-close>\n          CONTENUTI PREFERITI\n        </a>\n        <a href="" class="item" nav-clear menu-close ng-click="openQrReader()">\n          LETTORE QRCODE\n        </a>\n        <a href="#/app/pagina/{{p.id}}" class="item disabled" nav-clear menu-close ng-repeat="p in menu_pages">\n          {{p.menu}}\n        </a>\n        <a href="#/app/notifiche" class="item" nav-clear menu-close>\n          NOTIFICHE <span class="badge" ng-if="notifications_count">{{notifications_count}}</span>\n        </a>\n        <a href="#/app/impostazioni" class="item" nav-clear menu-close>\n          IMPOSTAZIONI\n        </a>\n        <a href="#/app/assistenza" class="item" nav-clear menu-close>\n          AIUTO\n        </a>\n        <a href="" class="item" nav-clear menu-close ng-click="doLogout()">\n          LOGOUT\n        </a>\n      </ul>\n    </ion-content>\n  </ion-side-menu>\n</ion-side-menus>\n'),n.put("templates/auth-welcome-registrazione.html",'<ion-view has-header-bar="false">\n  <ion-content padding="false">\n    <h1 class="bg-legno-scuro">\n      <a href="" class="pull-left" ng-click="back()"><i class="fa fa-arrow-left"></i></a>\n      REGISTRAZIONE\n    </h1>\n    <div class="list mt20">\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Nome</span>\n        <input type="text" name="firstname" ng-model="user.firstname">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Cognome</span>\n        <input type="text" name="lastname" ng-model="user.lastname">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Tessera</span>\n        <input type="text" name="card" ng-model="user.card">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Email</span>\n        <input type="email" name="email" ng-model="user.email">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Conferma Email</span>\n        <input type="email" name="email2" ng-model="user.email2">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Password</span>\n        <input type="password" name="password" ng-model="user.password">\n      </label>\n      <label class="item item-input item-stacked-label">\n        <span class="input-label">Conferma password</span>\n        <input type="password" name="password2" ng-model="user.password2">\n      </label>\n      <ion-checkbox ng-model="user.privacy" ng-value="1">\n        Letta l\'informativa dichiaro di averne compreso il contenuto, di\n        accettare integralmente il regolamento della Carta Fedeltà e acconsento\n        al trattamento dei dati personali finalizzato al rilascio della tessera\n        fedeltà - Finalità (a).\n      </ion-checkbox>\n      <div class="item item-button mt20 text-center">\n        <button class="button button-block button-positive" ng-click="registration(user)">REGISTRATI <i class="ion-chevron-right"></i></button>\n      </div>\n    </div>\n  </ion-content>\n</ion-view>\n'),
n.put("templates/auth-welcome.html",'<ion-view has-header-bar="false">\n  <ion-content padding="false" class="bg-red">\n    <div class="text-center mt40">\n      <img src="img/logo.png" alt="CADORO" style="width:130px;">\n    </div>\n    <div class="list mt40">\n      <form ng-submit="doLogin($event, user)">\n        <label class="item item-input item-stacked-label">\n          <span class="input-label">EMAIL</span>\n          <input type="email" name="email" ng-model="user.email" placeholder="EMAIL">\n        </label>\n        <label class="item item-input item-stacked-label">\n          <span class="input-label">PASSWORD</span>\n          <input type="password" name="password" ng-model="user.password" placeholder="PASSWORD">\n        </label>\n        <div class="item item-button mt20">\n          <a href="" ng-click="doPassword()">PASSWORD DIMENTICATA &gt;</a>\n        </div>\n        <div class="item item-button">\n          <button type="submit" class="button button-block button-positive">\n            ACCEDI\n          </button>\n        </div>\n      </form>\n      <div class="item item-button text-center">\n        oppure accedi al sito e\n        <a class="button button-block button-default" data-href="https://www.cadoro.it/registrazione" target="external" ng-click="openBrowser($event, \'https://www.cadoro.it/registrazione\')">\n          REGISTRATI\n        </a>\n      </div>\n    </div>\n  </ion-content>\n</ion-view>\n'),n.put("templates/carta.html",'<ion-modal-view view-title="La tua Card\'Oro">\n  <ion-header-bar class="bar-energized" ng-click="hideCarta()">\n    <h1 class="title" style="font-family: Hind; font-size: 20px; font-weight: bold; text-align: left; margin-left: -32px;">\n      La tua Card\'Oro\n    </h1>\n    <div class="buttons" style="top: auto;">\n      <i class="icon ion-chevron-down" style="font-size: 18px; padding: 8px 12px;"></i>\n    </div>\n  </ion-header-bar>\n  <ion-content padding="false" style="background-color: #cb9809;">\n    <div class="padding">\n      <div class="card-points">\n        IL TUO SALDO PUNTI È<br>\n        <strong>{{data.points?user.points:0}}</strong>\n        <div class="card-points-bottom" ng-if="user.points_pending > 0">\n          di cui <strong>{{data.points_pending}}</strong> verranno cancellati il primo di febbraio\n        </div>\n        <img src="img/home-cardoro.png" alt="" ng-if="user.dipendente != true">\n      </div>\n      <div class="text-center mt20" style="background-color: #fff; padding-top: 20px; margin: 0 19px;">\n        <div id="barcode" style="display: inline-block;min-height: 90px;"></div>\n      </div>\n      <div class="text-center mt20">\n        <img src="img/card.png" ng-if="user.dipendente != true" class="img-responsive" style="max-width: 90%">\n        <img src="img/card-team.png" ng-if="user.dipendente == true" class="img-responsive" style="max-width: 90%">\n      </div>\n    </div>\n  </ion-content>\n</ion-modal-view>\n'),n.put("templates/welcome.html",'<ion-modal-view view-title="Benvenuto">\n  <ion-header-bar class="bar-assertive" ng-click="hideWelcome()">\n    <h1 class="title" style="font-family: Hind; font-size: 20px; font-weight: bold; text-align: left; margin-left: -32px;">\n\n    </h1>\n    <div class="buttons" style="top: auto;">\n      <i class="icon ion-close" style="font-size: 18px; padding: 8px 12px;"></i>\n    </div>\n  </ion-header-bar>\n  <ion-content padding="false" style="background-color: #e10f21;">\n    <div class="padding">\n      <img src="img/popup-welcome.png" alt="" class="img-responsive">\n    </div>\n  </ion-content>\n</ion-modal-view>\n')}]);