. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AnonSec Shell
AnonSec Shell
Server IP : 52.223.31.75  /  Your IP : 172.31.32.98   [ Reverse IP ]
Web Server : Apache/2.4.66 () OpenSSL/1.0.2k-fips PHP/7.4.33
System : Linux ip-172-31-14-81.eu-central-1.compute.internal 4.14.281-212.502.amzn2.x86_64 #1 SMP Thu May 26 09:52:17 UTC 2022 x86_64
User : apache ( 48)
PHP Version : 7.4.33
Disable Function : NONE
Domains : 4 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www_local/cosabutto/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www_local/cosabutto/app.js
try{
    //controllo se esistono template altrimenti creo un template vuoto
    angular.module('app.templates');
}catch(e){
    angular.module('app.templates',[]);
}

String.prototype.capitalize = function() {
  return this.charAt(0).toUpperCase() + this.slice(1)
}

var app = angular.module("cosabutto",['app.templates','localytics.directives','ui.bootstrap', 'moment-picker','ui.router','ngMap']);
var basePath = "";//http://www.cosabutto.it/";

app.constant('googleMapsKey',"https://maps.googleapis.com/maps/api/js?key=AIzaSyA2Dx-F4FrIVDAjaH4xPm6q-Y1Nt2J3pUw");

    // =========================================================================
    // Malihu Scroll - Custom Scroll bars
    // =========================================================================
app.service('scrollService', function() {
    var ss = {};
    ss.malihuScroll = function scrollBar(selector, theme, mousewheelaxis) {
        $(selector).mCustomScrollbar({
            theme: theme,
            scrollInertia: 100,
            axis:'yx',
            mouseWheel: {
                enable: true,
                axis: mousewheelaxis,
                preventDefault: true
            }
        });
    }
    
    return ss;
})

app.directive('myEnter', function () {
    return function (scope, element, attrs) {
        element.bind("keydown keypress", function (event) {
            if(event.which === 13) {
                scope.$apply(function (){
                    scope.$eval(attrs.myEnter);
                });

                event.preventDefault();
            }
        });
    };
});
//==============================================
// BOOTSTRAP GROWL
//==============================================

app.service('growlService', function(){
    var gs = {};
    gs.growl = function(message, type) {
        $.growl({
            message: message
        },{
            type: type,
            allow_dismiss: false,
            label: 'Cancel',
            className: 'btn-xs btn-inverse',
            placement: {
                from: 'top',
                align: 'right'
            },
            delay: 2500,
            animate: {
                    enter: 'animated bounceIn',
                    exit: 'animated bounceOut'
            },
            offset: {
                x: 20,
                y: 85
            }
        });
    }
    
    return gs;
})

app.config(['momentPickerProvider', function (momentPickerProvider) {
        momentPickerProvider.options({
            /* Picker properties */
            locale:        'it',
        /*    format:        'L LTS',
            minView:       'decade',
            maxView:       'minute',
            startView:     'year',
            autoclose:     true,
            today:         false,
            keyboard:      false,*/
            
            /* Extra: Views properties */
     /*       leftArrow:     '←',
            rightArrow:    '→',
            yearsFormat:   'YYYY',
            monthsFormat:  'MMM',
            daysFormat:    'D',*/
            hoursFormat:   'HH:[00]',
            minutesFormat: moment.localeData().longDateFormat('LT').replace(/[aA]/, ''),
            secondsFormat: 'ss',
            minutesStep:   5,
            secondsStep:   1
        });
    }]);

app.config(["$stateProvider", "$urlRouterProvider", "$compileProvider", function ($stateProvider, $urlRouterProvider, $compileProvider){
        $urlRouterProvider.otherwise("/home");
                
        $compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
        $stateProvider

            .state ('howto', {
                url: '/howto',
                templateUrl: 'template/howto.html',
                controller: "howtoCtrl",
                controllerAs: "howctrl"
            })
            .state ('calendario', {
                url: '/caledar',
                templateUrl: 'template/calenadio.html',
                controller: "calendarCtrl",
                controllerAs: "calctrl"
            })
           
            .state ('social', {
                url: '/social',
                templateUrl: 'template/social.html',
                controller: "socialCtrl",
                controllerAs: "soctrl"
            })

            .state ('social.inserimento', {
                url: '/insert',
                templateUrl: 'template/social/inserimento.html'
            })

            .state ('social.colori', {
                url: '/color',
                templateUrl: 'template/social/colori.html'
            })

            .state ('social.orari', {
                url: '/time',
                templateUrl: 'template/social/orari.html'
            })

            .state ('home', {
                url: '/home',
                templateUrl: 'template/home.html',
                controller: "homeCtrl",
                controllerAs: "hctrl"/*,
                resolve: {
                  /*  loadPlugin: function($ocLazyLoad) {
                        return $ocLazyLoad.load ([
                            {
                                name: 'css',
                                insertBefore: '#app-level',
                                files: [
                                    'vendors/bower_components/fullcalendar/dist/fullcalendar.min.css',
                                ]
                            },
                            {
                                name: 'vendors',
                                insertBefore: '#app-level-js',
                                files: [
                                    'vendors/sparklines/jquery.sparkline.min.js',
                                    'vendors/bower_components/jquery.easy-pie-chart/dist/jquery.easypiechart.min.js',
                                    'vendors/bower_components/simpleWeather/jquery.simpleWeather.min.js'
                                ]
                            }
                        ])
                    },*/
                  /*  JWTValidationResolve: function(IAM, $state,$rootScope){
                        $rootScope.$on('$stateChangeStart', function (event, toState) {      
                            if("id" in toState && toState.id > 0){
                                if(!IAM.JWTValidation(toState.id, "R").status){
                                    event.preventDefault();
                                    debugger;
                                    if(!("token" in localStorage && localStorage.token)){
                                        location.href="index.html";
                                    }else{
                                        $state.go("jam.nopermessi");
                                        console.log("Permessi non validi!");
                                    }
                                    
                                }else{
                                    $rootScope.IAM = IAM;                                        
                                }
                            }
                        });
                    }
                },*/

            })

    }]);

app.controller("homeCtrl", function($scope, $window, cosabuttoService,growlService, $rootScope, $compile, $q){ 

	var lingua = window.navigator.language;
	moment.locale(lingua);

	$rootScope.oggi = {};
	$scope.dataOrdierna = moment(moment().format("YYYY-MM-DD")).valueOf();
	
	this.getCssPerQuantita = function(x){
		switch(x){
			case 1: 
				return 'left: 65px;top: -50px;';
			break;
			case 1: 
				return 'left: 65px;top: -50px;';
			break;
			case 1: 
				return 'left: 65px;top: -50px;';
			break;
			case 1: 
				return 'left: 65px;top: -50px;';
			break;
			case 1: 
				return 'left: 65px;top: -50px;';
			break;
		}
	}
	
	// Swal.getQueueStep()	Get the index of current modal in queue. When there's no active queue, null will be returned.
	// Swal.insertQueueStep()	Insert a modal to queue, you can specify modal positioning with second parameter. By default a modal will be added to the end of a queue.
	// Swal.deleteQueueStep(index)	Delete a modal at index from queue.
	// Swal.getProgressSteps()	Progress steps getter.
	// Swal.setProgressSteps([])	Progress steps setter.
	// Swal.showProgressSteps()	Show progress steps.
	// Swal.hideProgressSteps()	Hide progress steps.
	// Swal.isValidParameter(param)	Determine if parameter name is valid.




	$scope.intro = async function(){
		if($scope.cittaSelezionata.istat>-1){
			return;
		}
		swal.fire({
			title: 'Benvenuto in Cosa Butto Oggi?',
		    imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
  			imageHeight: 300,
	      	showCancelButton: false,
	      	confirmButtonText: 'Avanti',
  			imageAlt: 'Cosa butto oggi?',
  			html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><br><b>Seleziona una città per continuare</b> <div id="includimihome"></div>',
  			onOpen: (el) => {
            		var ht=	'<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!"  group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
                        '<option></option>'+
                        '</select>';
                    var html = $compile(ht)($scope);
                    angular.element(document.getElementById("includimihome")).append(html);
            }
		}).then(function(val){

			if($scope.cittaSelezionata.istat > -1){
				
				if($scope.cittaSelezionata.zone.length > 1){
						swal.fire({
						title: 'Seleziona una zona della tua citta',
					    imageUrl: 'img/italia_0.png',
			  			imageHeight: 300,
				      	showCancelButton: true,
				      	cancelButtonText: 'Indietro',
				      	confirmButtonText: 'Fine',
				      	reverseButtons: true, 
			  			imageAlt: 'Seleziona una zona della tua citta',
			  			html: '<div id="includimihome2"></div>',
			  			onOpen: (el) => {
			            		var hta=	'<div scelta-zonehome citta-selezionata="cittaSelezionata" hctrl="hctrl"></div>';
		                    	var htmla = $compile(hta)($scope);
		                    	angular.element(document.getElementById("includimihome2")).append(htmla);	
			            }
						}).then(function(val){
							 // alert(JSON.stringify($scope.cittaSelezionata.zona))
							if("dismiss" in val && val.dismiss == "cancel"){
								//bottone indietro
								$scope.intro();
								return;
							}
							// if("value" in val && val.value){
								
							// 	return;
							// }
							
							return;
						});
				}

				// if($scope.cittaSelezionata.zona != "" && $scope.cittaSelezionata.zona != "Nuova Zona"){

				// }


			}else{
				Swal.fire({
				  type: 'info',
				  title: 'Non hai selezionato una città',
				  text: 'Puoi selezionare successivamente la città desiderata tramite il menù il alto a destra!',
				  // footer: '<a href>Why do I have this issue?</a>'
				})
				return;
			}
			


			// if("dismiss" in val && val.dismiss=="backdrop"){
			// 	//se è uscito senza selezionare la città
				

				

				
			// }

		})
		// 	swal.fire({
		// 	title: 'Seleziona una città',
		//     imageUrl: 'img/italia.png',
  // 			imageHeight: 300,
	 //      	showCancelButton: false,
	 //      	confirmButtonText: 'Avanti',
  // 			imageAlt: 'Seleziona una città',
  // 			html: '<div id="includimihome"></div>',
  // 			onOpen: (el) => {
  //           		var ht=	'<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!"  group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
  //                       '<option></option>'+
  //                       '</select>';
  //                   var html = $compile(ht)($scope);
  //                   angular.element(document.getElementById("includimihome")).append(html);
  //           }
		// 	}).then(function(val){

		// 		if("value" in val && val.value){
		// 			deferred.resolve(val.value);
		// 			return;
		// 		}
		// 		deferred.resolve("dismiss");
		// 		return;
		// 	});

		// 	//fine swal principale
		// });
		// var res = deferred.promise;

		// if(res != "dismiss"){
		// 	/*non ha selezionato il paese*/
		// }else if(se ha le zone e ne ha più di una){
		// 	swal.fire({
		// 	title: 'Seleziona una città',
		//     imageUrl: 'img/italia.png',
  // 			imageHeight: 300,
	 //      	showCancelButton: false,
	 //      	confirmButtonText: 'Avanti',
  // 			imageAlt: 'Seleziona una città',
  // 			html: '<div id="includimihome2"></div>',
	 //  			onOpen: (el) => {
	 //            		var hta=	'<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';
  //                   	var htmla = $compile(hta)($scope);
  //                   	angular.element(document.getElementById("includimihome2")).append(htmla);	
	 //            }
		// 	}).then(function(val){

		// 		if("value" in val && val.value){
		// 			deferred.resolve(val.value);
		// 			return;
		// 		}
		// 		deferred.resolve("dismiss");
		// 		return;
		// 	});
		// }

		/*var steps = ['1', '2', '3']
		var swalQueueStep = Swal.mixin({
		  confirmButtonText: 'Forward',
		  cancelButtonText: 'Back',
		  progressSteps: steps,
		  input: 'text',
		})
		var deferred = $q.defer();
		var step0 = await swalQueueStep.fire({
			    title: 'Benvenuto in Cosa Butto Oggi?',
			    imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
	  			imageHeight: 300,
	  			inputValue: 1,
		      	showCancelButton: false,
	  			imageAlt: 'Cosa butto oggi?',
	  			currentProgressStep: 0,
	  			html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><div id="includimihome"></div><style>.swal2-input{opacity:0 !important;}</style>',
	  			onOpen: (el) => {
	            		// var ht=	'<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!"  group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
	              //           '<option></option>'+
	              //           '</select>';
	              //       var html = $compile(ht)($scope);
	              //       angular.element(document.getElementById("includimihome")).append(html);


	     //                var container = $(el);
						// var originalBackButton = container.find('.swal2-cancel');
						// originalBackButton.html("Chiudi");
						// originalBackButton.hide();
	            }
			  })
		deferred.resolve(step0);
		//quando chiude fuori dal panaro
		//{"$$state":{"status":1,"value":{"dismiss":"backdrop"}}}


		if(deferred.promise["$$state"] && "" )
			//boottone avanti
			// {"$$state":{"status":1,"value":{"value":"1"}}}

		alert(JSON.stringify(deferred.promise));
		return;

		async function backAndForth () {
		  const values = []
		  let currentStep
		  var result
		  for (currentStep = 0; currentStep < steps.length;) {

		  	if(currentStep==0){
		    	 result = await swalQueueStep.fire({
			    title: 'Benvenuto in Cosa Butto Oggi?',
			    imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
	  			imageHeight: 300,
	  			inputValue: 0,
		      	showCancelButton: currentStep > 0,
	      		currentProgressStep: currentStep,
	  			imageAlt: 'Cosa butto oggi?',
	  			currentProgressStep: 0,
	  			html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><div id="includimihome"></div><style>.swal2-input{opacity:0 !important;}</style>',
	  			onOpen: (el) => {
	            		// var ht=	'<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!"  group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
	              //           '<option></option>'+
	              //           '</select>';
	              //       var html = $compile(ht)($scope);
	              //       angular.element(document.getElementById("includimihome")).append(html);


	     //                var container = $(el);
						// var originalBackButton = container.find('.swal2-cancel');
						// originalBackButton.html("Chiudi");
						// originalBackButton.hide();
	            }
			  })
			}
			if(currentStep==1){
		        const result = await swalQueueStep.fire({
	  			inputValue: values[currentStep],
		      	showCancelButton: currentStep > 0,
	      		currentProgressStep: currentStep,
	  			title: 'Seleziona una città?',
			    imageUrl: 'img/italia.png',
	  			imageWidth: 170,
	  			currentProgressStep: 2,
	  			imageAlt: 'Seleziona una città?',
			    html: '<div id="includimihome"></div><style>.swal2-input{visibility:hidden !important}</style>',
	            onOpen: (el) => {
	            		var ht=	'<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!"  group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
	                        '<option></option>'+
	                        '</select>';
	                    var html = $compile(ht)($scope);
	                    angular.element(document.getElementById("includimihome")).append(html);


	                    var container = $(el);
						  // var originalBackButton = container.find('.swal2-cancel');
						  // var clonedBackButton = originalBackButton.clone();

						  // originalBackButton.hide();
						  // clonedBackButton.insertAfter(originalBackButton);

						  // clonedBackButton.on('click', function() {
						  //   	if (confirm('Are you sure?')) originalBackButton.click();
						  // });
	            },
			  })
			}
			if(currentStep==2){
		        const result = await swalQueueStep.fire({
			    title: 'Seleziona la zona della tua città',
			    imageUrl: 'img/italia_1.png',
	  			imageHeight: 300,
	  			inputValue: values[currentStep],
		      	showCancelButton: currentStep > 0,
	      		currentProgressStep: currentStep,
	  			imageAlt: 'Cosa butto oggi?',
	  			html: '<div id="includimihome2"></div><style>.swal2-input{visibility:hidden !important;}</style>',
	  			onOpen: (el) => {
	            		var hta=	'<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';
                    	var htmla = $compile(hta)($scope);
                    	angular.element(document.getElementById("includimihome2")).append(htmla);	


	                    //var container = $(el);
						// var originalBackButton = container.find('.swal2-cancel');
						// originalBackButton.html("Chiudi");
						// originalBackButton.hide();
	            },
	            // html: '<div id="includimihome2"></div><style>.swal2-input{display:none !important}</style>',
	            // onOpen: (el) => {
	            // 		var hta=	'<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';

	            // 				// '<div ng-repeat="x in cittaSelezionata.zone track by $index" ng-click="cittaSelezionata.zona = x; hctrl.getColoriFront();" class="col-md-2 col-xs-4 col-lx-2 {{(cittaSelezionata.zone.length<6 && $first)?\'col-md-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<3 && $first)?\'col-xs-offset-\'+(intVal((3-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<6 && $first)?\'col-xl-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} zone-div {{(cittaSelezionata.zona == x)?\'zone-div-active\':\'\'}}" >'+
	            //     //             '<img ng-src="img/pin.gif" style="width: 55%;"><br>{{x}}</div>';
	            			
	            //         var htmla = $compile(hta)($scope);
	            //         angular.element(document.getElementById("includimihome2")).append(htmla);	
	            // },
			  })
			}
			
			if (result.value) {
		      values[currentStep] = result.value
		      currentStep++
		    } else if (result.dismiss === 'cancel') {
		      currentStep--
		    } else {
		      break
		    }



		    
		  }

		  if (currentStep === steps.length) {
		    Swal.fire(JSON.stringify(values))
		  }
		}

		backAndForth()
	
		/*
		Swal.mixin({
		  input: 'text',
		  confirmButtonText: 'Avanti &rarr;',
		  cancelButtonText: 'Indietro',
		  reverseButtons: true,
		  showCloseButton: true,
		  showCancelButton: true,
		  progressSteps: ['1', '2', '3']
		}).queue([
		  {
		    title: 'Benvenuto in Cosa Butto Oggi?',
		    imageUrl: 'img/logo-cosa-butto-oggi-apisoft.png',
  			imageHeight: 300,
  			imageAlt: 'Cosa butto oggi?',
  			currentProgressStep: 1,
  			html: 'Cosa Butto Oggi ti ricorda cosa buttare oggi per rispettare la raccolta differenziata nel tuo paese.<br><div id="includimihome"></div><style>.swal2-input{display:none !important;}</style>',
  			onOpen: (el) => {
            		var ht=	'<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!"  group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
                        '<option></option>'+
                        '</select>';
                    var html = $compile(ht)($scope);
                    angular.element(document.getElementById("includimihome")).append(html);


                    var container = $(el);
					var originalBackButton = container.find('.swal2-cancel');
					originalBackButton.html("Chiudi");
					originalBackButton.hide();
            },
		  },
		  {
		    title: 'Seleziona una città?',
		    imageUrl: 'img/italia.png',
  			imageWidth: 170,
  			currentProgressStep: 2,
  			imageAlt: 'Seleziona una città?',
		    html: '<div id="includimihome"></div><style>.swal2-input{display:none !important}</style>',
            onOpen: (el) => {
            		var ht=	'<select chosen style="padding: 0px !important;" class="w-100 localytics-chosen" options="comuni" ng-model="cittaSelezionata.istat" ng-options="comune.istat as comune.comune group by comune.regione for comune in comuni" ng-change="hctrl.getGiorno()" data-placeholder="Scrivi qui il tuo comune!"  group_search="false" search_contains="false" enable-split-word-search="false" no-results-text="\'Non è stato trovato nessun risultato :(\'" max_shown_results="100">'+
                        '<option></option>'+
                        '</select>';
                    var html = $compile(ht)($scope);
                    angular.element(document.getElementById("includimihome")).append(html);


                    var container = $(el);
					  var originalBackButton = container.find('.swal2-cancel');
					  var clonedBackButton = originalBackButton.clone();

					  originalBackButton.hide();
					  clonedBackButton.insertAfter(originalBackButton);

					  clonedBackButton.on('click', function() {
					    	if (confirm('Are you sure?')) originalBackButton.click();
					  });
            },
		    // preConfirm: () => {	  } //prima di premere avanti

		  },
		  {
		    title: 'Seleziona una zona?',
		    imageUrl: 'img/italia_1.png',
  			imageWidth: 170,
  			currentProgressStep: 3,
  			imageAlt: 'Seleziona una zona?',
		    html: '<div id="includimihome2"></div><style>.swal2-input{display:none !important}</style>',
            onOpen: () => {
            		var hta=	'<div scelta-zonehome citta-selezionata="cittaSelezionata"></div>';

            				// '<div ng-repeat="x in cittaSelezionata.zone track by $index" ng-click="cittaSelezionata.zona = x; hctrl.getColoriFront();" class="col-md-2 col-xs-4 col-lx-2 {{(cittaSelezionata.zone.length<6 && $first)?\'col-md-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<3 && $first)?\'col-xs-offset-\'+(intVal((3-cittaSelezionata.zone.length))):\'\'}} {{(cittaSelezionata.zone.length<6 && $first)?\'col-xl-offset-\'+(intVal((6-cittaSelezionata.zone.length))):\'\'}} zone-div {{(cittaSelezionata.zona == x)?\'zone-div-active\':\'\'}}" >'+
                //             '<img ng-src="img/pin.gif" style="width: 55%;"><br>{{x}}</div>';
            			
                    var htmla = $compile(hta)($scope);
                    angular.element(document.getElementById("includimihome2")).append(htmla);	
            },
		    // preConfirm: () => {	  } //prima di premere avanti

		  },
		]).then((result) => {
			debugger;
		  if (result.value) {
		    Swal.fire({
		      title: 'All done!',
		      html:
		        'Your answers: <pre><code>' +
		          JSON.stringify(result.value) +
		        '</code></pre>',
		      confirmButtonText: 'Lovely!'
		    })
		  }
		})*/
	}
	$scope.intro();

	// {
 //  title: 'Your public IP',
 //  confirmButtonText: 'Show my public IP',
 //  text:
 //    'Your public IP will be received ' +
 //    'via AJAX request',
 //  showLoaderOnConfirm: true,
 //  preConfirm: () => {
	//     return fetch(ipAPI)
	//       .then(response => response.json())
	//       .then(data => Swal.insertQueueStep(data.ip))
	//       .catch(() => {
	//         Swal.insertQueueStep({
	//           type: 'error',
	//           title: 'Unable to get your public IP'
	//         })
	//       })
	//   }
	// }

	this.getColoriFront = function(){
		cosabuttoService.getColoriFront($rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona).then(function successCallback(response) {
            //alert(response.data);
            //console.log("Aggiornato");
            	
            if(response.data){
            	$rootScope.tipologie = angular.copy($rootScope.tipologieDefault);
	            for (var i = response.data.length - 1; i >= 0; i--) {
	            	for (var ik = $rootScope.tipologie.length - 1; ik >= 0; ik--) {
	            		if(response.data[i].tipologia==$rootScope.tipologie[ik].id){
	            			$rootScope.tipologie[ik].colore = response.data[i].colore;
	            			$rootScope.tipologie[ik].orainizio = response.data[i].orainizio;
	            			$rootScope.tipologie[ik].orafine = response.data[i].orafine;
	            			//$rootScope.tipologie[ik]= angular.copy(response.data[i]);
	            			
	            		}//else{
	            		//	$rootScope.tipologie[ik].colore = $rootScope.tipologieDefault[ik].colore
	            		//}
	            	}
	            }
            //	growlService.growl("Dati aggiornati con successo!", 'success')
            	
            }else{
            	//growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
            }

           
            
	    }, function errorCallback(response) {
	       // growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
	    });

	}

	

	this.getTipologia = function(id){
		for (var i = $rootScope.tipologie.length - 1; i >= 0; i--) {
			if($rootScope.tipologie[i].id ==id){
				return $rootScope.tipologie[i];
			}
		}
	}


	this.getGiorno = function(){
		
		cosabuttoService.getGiorno(moment().format("YYYY-MM-DD"),$rootScope.cittaSelezionata.istat).then(function successCallback(response) {     
			$rootScope.oggi = response.data;
			
			$rootScope.cittaSelezionata.zona = "";
			$rootScope.cittaSelezionata.zone = [];
			var first=true;
			for (var k in $rootScope.oggi.zone) {
				if(first){
					first=false;
					$rootScope.cittaSelezionata.zona = k;
				}
        		if($rootScope.cittaSelezionata.zone.indexOf(k) == -1){
        			$rootScope.cittaSelezionata.zone.push(k);	
        		}
        	}        	
        	 cosabuttoService.getGiornoNoStat(moment().format("YYYY-MM-DD"),$rootScope.cittaSelezionata.istat).then(function successCallback(resp) {     
        		$scope.tipologiaOggiMax = resp.data.dati[$rootScope.cittaSelezionata.zona];
        	}, function errorCallback(response){
	    	});


			$scope.hctrl.getColoriFront();
        	

	    }, function errorCallback(response){
	    	
	    });
	}

	this.avanzata = false;
	this.avanzataChange = function () {
		this.avanzata = !this.avanzata;
	}

	this.init = function(){
		
		if (navigator.geolocation) {
			navigator.geolocation.getCurrentPosition(function(position){
				if(position.coords.latitude && position.coords.longitude){
					$rootScope.utente.user_lat = position.coords.latitude;
					$rootScope.utente.user_lng = position.coords.longitude;
					cosabuttoService.geoLatLngToCity(position.coords.latitude,position.coords.longitude).then(function successCallback(response) {
			            if("data" in response && response.data){
			            	$rootScope.cittaSelezionata.istat =response.data[0].istat;
			            	$scope.hctrl.getGiorno();
			            }
				    }, function errorCallback(response) {
				       
			            	
				    });
				}else{
					$rootScope.utente.user_lat = null;
					$rootScope.utente.user_lng = null;
				}
				
				
			})
		}

		if($scope.cittaSelezionata.istat>-1){
        	this.getGiorno()
        	if($scope.cittaSelezionata.zona != "" && $scope.cittaSelezionata.zona != "Nuova Zona"){
	        	this.getColoriFront()
	        }
        }

        

        if($scope.cittaSelezionata.zona == "Nuova Zona"){
        	$scope.cittaSelezionata.zona = $scope.cittaSelezionata.zone[0];
        }

        
	
	}

	
	this.init();


	


});

app.controller("sceltaZonehomeCtrl", function($scope, cosabuttoService,cosabuttoServiceSocial,growlService,$rootScope, $state){ 
	//aggiorna la vista
	cosabuttoService.up().then(function successCallback(response) {}, function errorCallback(response) {});	
})
app.factory('facebookService', function($q) {
    return {
        getData: function() {
            var deferred = $q.defer();
            try{
	            FB.api('/me', {
	                fields: 'email,name,picture'
	            }, function(response) {
	                if (!response || response.error) {
	                    deferred.reject('Error occured');
	                } else {
	                    deferred.resolve(response);
	                }
	            });
	        }catch(e){
	        	deferred.reject(e);
	        }
            return deferred.promise;
        },
        getStatus: function(){
        	var deferred = $q.defer();
        	FB.getLoginStatus(function(response) {
        		
			  
			  if (response.status === 'connected') {
			    // The user is logged in and has authenticated your
			    // app, and response.authResponse supplies
			    // the user's ID, a valid access token, a signed
			    // request, and the time the access token 
			    // and signed request each expire.
			    deferred.resolve(true);
			    var uid = response.authResponse.userID;
			    var accessToken = response.authResponse.accessToken;
			  } else if (response.status === 'not_authorized') {
			    // The user hasn't authorized your application.  They
			    // must click the Login button, or you must call FB.login
			    // in response to a user gesture, to launch a login dialog.
			    deferred.resolve(false);
			  } else {
			  	deferred.resolve(false);
			    // The user isn't logged in to Facebook. You can launch a
			    // login dialog with a user gesture, but the user may have
			    // to log in to Facebook before authorizing your application.
			  }
			 });
        	return deferred.promise;
        
        },
        login: function(){
        	var deferred = $q.defer();
        	FB.login(function(response) {
			    if (response.authResponse) {
			     console.log('Welcome!  Fetching your information.... ');
			     
			     deferred.resolve(response);

			    } else {
			     console.log('User cancelled login or did not fully authorize.');
			     deferred.reject('Error occured');
			    }
			    
			}, {scope: 'email'});
			return deferred.promise;
        },
        logout: function(){

        	FB.getLoginStatus(function(resp){
        		FB.logout(function(aresp){});
        	})
        }
    }
});

app.directive('sceltaZonehome', function($rootScope, $compile){
    return {
    	restrict: "A",
    	scope: {
    		cittaSelezionata: "=",
    		hctrl: "="
    	},
    	// controller: function ( $scope, $element ) {
    		
     // 		for (var k in $scope.cittaSelezionata.zone) {
     // 			var x = $scope.cittaSelezionata.zone[k];
		   //      var el = '<div ng-click="cittaSelezionata.zona = \''+x+'\'; hctrl.getColoriFront();"><img ng-src="img/pin.gif" style="width: 55%;"><br>'+x+'</div>';
		   //      $element.append( el );
		   //  } 
		    
	      
	    // },
	    controller: "sceltaZonehomeCtrl",
	    template: '<div ng-repeat="x in cittaSelezionata.zone track by $index" ng-click="cittaSelezionata.zona = x; hctrl.getColoriFront();" class="col-md-4 col-xs-4 col-lx-4 {{(cittaSelezionata.zone.length==1 && $index==0)?\'col-md-offset-4 col-xs-offset-4 col-xl-offset-4\':\'\'}} {{($index==0 && cittaSelezionata.zone.length==2)?\'col-md-offset-2 col-xs-offset-2 col-xl-offset-2\':\'\'}} zone-div {{(cittaSelezionata.zona == x)?\'zone-div-active\':\'\'}}" >'+
                 '<img ng-src="img/pin.gif" style="width: 55%;"><br>{{x}}</div>'
  	};
  			
})

app.factory('googleService', function($q) {
    return {
        getData: function() {
        	if (auth2 && auth2.isSignedIn.get()) {
  				var profile = auth2.currentUser.get().getBasicProfile();
           		//var profile = googleUser.getBasicProfile();
        		return {
        			name: profile.getName(),
        			picture: profile.getImageUrl(),
        			email: profile.getEmail()
        		};
        	}else{
        		return false;
        	}
        },
        getStatus: function(){
        	
        },
        login: function(){
        	var deferred = $q.defer();
        	gapi.load('auth2', function() {
			  auth2 = gapi.auth2.init({
			    "client_id":"1049448224889-1s5iv286kq8r0h0j42khuc9ie1g6ajdc.apps.googleusercontent.com"
			  });

			  // Sign the user in, and then retrieve their ID.
			  auth2.signIn().then(function() {
			  	var profile= auth2.currentUser.get();
			    console.log(profile.getId());
			    var toRet= {
	        		"name": profile.getBasicProfile().getName(),
	        		"picture": {"data" : {"url" : profile.getBasicProfile().getImageUrl() } },
	        		"email": profile.getBasicProfile().getEmail(),
	        		"token": profile.getAuthResponse().id_token
	        	}
	        	deferred.resolve(toRet);
			  });
			});

			return deferred.promise;
/*

        	gapi.auth2.init(
        		{
				  "client_id":"1049448224889-1s5iv286kq8r0h0j42khuc9ie1g6ajdc.apps.googleusercontent.com"
				}
        	);
        	var profile = googleUser.getBasicProfile();
        	return {
        		name: profile.getName(),
        		picture: profile.getImageUrl(),
        		email: profile.getEmail()
        	};*/
        },
        logout: function(){
        	var auth2 = gapi.auth2.getAuthInstance();
		    auth2.signOut().then(function () {
		      console.log('User signed out.');
		    });
        }
    }
});

//google = {"web":{"client_id":"1049448224889-1s5iv286kq8r0h0j42khuc9ie1g6ajdc.apps.googleusercontent.com","project_id":"cosabutto","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"6KtlNOBVSZ7kEJlbL8OBccKw","javascript_origins":["https://www.cosabutto.it"]}}
function onSignIn(googleUser) {
  var profile = googleUser.getBasicProfile();
  
}

app.factory("cosabuttoServiceSocial", function($http){ 
	
	var toReturn={

				getStat: function(userinfo)
				{
        
	                var param = [
	                	{name: "userinfo", value: JSON.stringify(userinfo) }	                	
	                ];
	               


	                var sendData = {
	                    url: basePath + 'api/my/statuser.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: param
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
            	zoneUpsert: function(userinfo,istatcode,zone)
				{
        
	                var param = [
	                	{name: "userinfo", value: JSON.stringify(userinfo) }, 
	                	{name: "istatcode", value:istatcode},
	                	{name: "zone", value:zone}
	                ];
	               


	                var sendData = {
	                    url: basePath + 'api/my/zoneupsert.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: param
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
            	/*
				cambiaOrariInizio: function(idtipo,orainizio,email,istatcode,zone)
				{
        
	                var param = [
	                	{name: "email", value: email }, 
	                	{name: "istatcode", value:istatcode},
	                	{name: "zone", value:zone},
	                	{name: "orainizio", value:orainizio},
	                	{name: "idtipo", value:idtipo},
	                ];
	               


	                var sendData = {
	                    url: basePath + 'api/my/orarioupsert.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: param
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
            	cambiaOrariInizio: function(idtipo,orafine,email,istatcode,zone)
				{
        
	                var param = [
	                	{name: "email", value: email }, 
	                	{name: "istatcode", value:istatcode},
	                	{name: "zone", value:zone},
	                	{name: "orafine", value:orafine},
	                	{name: "idtipo", value:idtipo},
	                ];
	               


	                var sendData = {
	                    url: basePath + 'api/my/orarioupsert.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: param
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},*/
				cambiaTipologia: function(idtipo,colore,userinfo,istatcode,zone,orainizio, orafine)
				{
        
	                var param = [
	                	{name: "userinfo", value: JSON.stringify(userinfo) }, 
	                	{name: "istatcode", value:istatcode},
	                	{name: "zone", value:zone},
	                	{name: "colore", value:colore},
	                	{name: "idtipo", value:idtipo},
	                	{name: "orainizio", value:orainizio},
	                	{name: "orafine", value:orafine},
	                ];
	               


	                var sendData = {
	                    url: basePath + 'api/my/coloreupsert.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: param
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
            	inserisciDifferenziata: function(multipla,idtipo,data,userinfo,istatcode,zone)
				{
       
	                var param = [
	                	{name: "userinfo", value: JSON.stringify(userinfo) }, 
	                	{name: "istatcode", value:istatcode},
	                	{name: "zone", value:zone},
	                	{name: "data", value:data},
	                	{name: "tipo", value:idtipo},
	                	{name: "multipla", value:multipla}
	                ];
	               


	                var sendData = {
	                    url: basePath + 'api/my/giornoupsert.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: param
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	}
			};
	return toReturn;
});

app.factory("cosabuttoService", function($http, $q){ 
	
	var toReturn={
				up: function(){
					var deferred = $q.defer();
            		deferred.resolve(true);
            		return deferred.promise;
					
				},
				zoneGet: function(istatcode)
				{
        
	                var param = [
	                	{name: "istatcode", value:istatcode}
	                ];
	               


	                var sendData = {
	                    url: basePath + 'api/zoneget.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: param
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
				geoLatLngToCity: function(lat,lng){

					
	               
	                var sendData = {
	                    url: basePath + 'api/geoget.php?lat='+lat+"&lng="+lng,
	                    method: 'GET',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'}
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);


					/*return "Paternopoli";
					//TODO API
					var googleKey ="";
	                var sendData = {
	                    url: "https://maps.googleapis.com/maps/api/geocode/json?latlng="+lat+","+lng+"&key="+googleKey,
	                    method: 'GET',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'}
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData).then(function successCallback(response) {
			                var data= response.data;
			                if("status" in data && data.status == "OK" && "results" in data && data.results.length>0 && "formatted_address" in data.results && data.results.formatted_address){
								return data.results.formatted_address;
							}
			        }, function errorCallback(response) {
			                return response.data;
	                });

					
					var url="https://maps.googleapis.com/maps/api/geocode/json?latlng="+position.coords.latitude+","+position.coords.longitude+"&key=YOUR_API_KEY";
					*/
				},
				
				
				getColore: function(istatcode,zone,userinfo)
				{
					if(!zone){
						zone = "Default";
					}
					var data =[
						{name: "istatcode", value:istatcode},
						{name: "zone", value: zone},
						{name: "userinfo", value: JSON.stringify(userinfo)}
					];

	                var sendData = {
	                    url: basePath + 'api/my/coloreget.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: data
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	}
				,
				
				getGiorno: function(giorno, istatcode) 
            	{
        
	                var sendData = {
	                    url: basePath + 'api/giornoget.php?giorno='+giorno+"&istatcode="+istatcode,
	                    method: 'GET',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'}
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
            	getGiornoNoStat: function(giorno, istatcode) 
            	{
        
	                var sendData = {
	                    url: basePath + 'api/giornogetnostat.php?giorno='+giorno+"&istatcode="+istatcode,
	                    method: 'GET',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'}
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
				getSettimana: function(week,year,istatcode,userinfo) 
            	{
            		var data =[
						{name: "week", value:week},
						{name: "year", value: year},
						{name: "istatcode", value: istatcode},
						{name: "userinfo", value: JSON.stringify(userinfo)}
					];
        
	                var sendData = {
	                    url: basePath + 'api/my/settimanaget.php',
	                    method: 'POST',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'},
	                    data: data
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
            	getComuni: function() 
            	{
        
	                var sendData = {
	                    url: 'json/italia_autocomplete.json',
	                    method: 'GET',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'}
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	},
            	getColoriFront: function(istatcode,zone)
				{
					if(!zone){
						zone = "Default";
					}
	                var sendData = {
	                    url: basePath + 'api/coloreget.php?istatcode='+istatcode+"&zone="+zone,
	                    method: 'GET',
	                    headers : {'Content-Type': 'application/json;charset=utf-8'}
	                }
	                // $http returns a promise, which has a then function, which also returns a promise
	                return $http(sendData);
            	}


            	//http://localhost/cosabuttooggiwebsite/cosabutto/api/settimanaget.php?week=20&year=2019&istatcode=1001

			};
			return toReturn;	
})



app.controller("socialCtrl", function($scope, cosabuttoService,cosabuttoServiceSocial,growlService,$rootScope, $state){ 

	var lingua = window.navigator.language;
	moment.locale(lingua);

	$scope.today = moment();
	$scope.calendar = {};
	$scope.dataOrdierna = moment(moment().format("YYYY-MM-DD")).valueOf();
	

	//RECUPERO COLORI DEFAULT DA DB
	this.getColore = function(){

		//solo se loggato
		cosabuttoService.getColore($rootScope.cittaSelezionata.istat, $rootScope.cittaSelezionata.zona, $rootScope.utente).then(function successCallback(response) {
            
			if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
				localStorage.removeItem('utente');
				growlService.growl('Devi effettuare il login per continuare!', 'danger');
        		$rootScope.utente = {login_status: false};  
			}else if("status" in response.data && response.data.status == false){
				growlService.growl("Errore in fase di recupero dei dati!", 'alert')
			}else{
				$rootScope.tipologie = angular.copy($rootScope.tipologieDefault);
	            for (var i = response.data.length - 1; i >= 0; i--) {
	            	for (var ik = $rootScope.tipologie.length - 1; ik >= 0; ik--) {
	            		if(response.data[i].tipologia==$rootScope.tipologie[ik].id){
	            			$rootScope.tipologie[ik].colore = response.data[i].colore;
	            			$rootScope.tipologie[ik].orainizio = response.data[i].orainizio;
	            			$rootScope.tipologie[ik].orafine = response.data[i].orafine;
	            			
	            		}//else{
	            		//	$rootScope.tipologie[ik].colore = $rootScope.tipologieDefault[ik].colore
	            		//}
	            	}
	            }
	        }

	    }, function errorCallback(response) {
	            
	            growlService.growl("Errore in fase di recupero dei dati!", 'alert')
	    });
	}

	

	
	this.zoneGet = function(){

		
		cosabuttoService.zoneGet($rootScope.cittaSelezionata.istat)
			.then(function successCallback(response) {
	            
	            $rootScope.cittaSelezionata.tuttezone = response.data;
	            $rootScope.cittaSelezionata.zonaCheck = '';
	            
		    }, function errorCallback(response) {
		        growlService.growl("Non è stato possibile recuperare i dati!", 'alert')
		    });	

	}
	


	this.zoneUpsert = function(zona){
		$rootScope.cittaSelezionata.zona = zona;
		

			if($rootScope.cittaSelezionata.tuttezone.indexOf(zona) > -1){
				$rootScope.cittaSelezionata.zonaCheck=$rootScope.cittaSelezionata.zona; 
            	$scope.soctrl.getDatiSettimanaAttuale();
            	$scope.soctrl.getColore(); 
            	//$scope.getOrari();
			}else if($rootScope.cittaSelezionata.zona!= "Nuova Zona"){
				cosabuttoServiceSocial.zoneUpsert($rootScope.utente,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona)
				.then(function successCallback(response) {
		            if(response.data.status){
		            	$scope.soctrl.zoneGet();
		            	$rootScope.cittaSelezionata.zonaCheck=$rootScope.cittaSelezionata.zona; 
		            	$scope.soctrl.getDatiSettimanaAttuale();
		            	$scope.soctrl.getColore(); 
		            	//$scope.getOrari();

		            	growlService.growl("La nuova zona è stata aggiunta con successo!", 'success')
		            }else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
						localStorage.removeItem('utente');
						growlService.growl('Devi effettuare il login per continuare!', 'danger');
		        		$rootScope.utente = {login_status: false};  
					}
		            
			    }, function errorCallback(response) {
			        growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
			    });	
			}else{
				
			}

			
		
	    return;

	}
/*
	$scope.cambiaOrariInizio = function(tipo, orainizio){
		debugger;
		$rootScope.tipologieBackup = angular.copy($rootScope.tipologie);
		for (var i = 0; i < $rootScope.tipologie.length; i++) {
			if($rootScope.tipologie[i].nome == tipo){
				cosabuttoServiceSocial.cambiaOrariInizio($rootScope.tipologie[i].id,orainizio,$scope.email,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona)
				.then(function successCallback(response) {
		            if(response.data.status){
		            	$rootScope.tipologie[i].orainizio=orainizio;
		            	growlService.growl("Dati aggiornati con successo!", 'success')
		            }else{
		            	growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
		            }
		            
			    }, function errorCallback(response) {
			        growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
			    });
			    return;
			}
		}
	}

	$scope.cambiaOrariFine = function(tipo, orafine){
		$rootScope.tipologieBackup = angular.copy($rootScope.tipologie);
		for (var i = 0; i < $rootScope.tipologie.length; i++) {
			if($rootScope.tipologie[i].nome == tipo){
				cosabuttoServiceSocial.cambiaOrariFine($rootScope.tipologie[i].id,orafine,$scope.email,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona)
				.then(function successCallback(response) {
		            if(response.data.status){
		            	$rootScope.tipologie[i].orafine=orafine;
		            	growlService.growl("Dati aggiornati con successo!", 'success')
		            }else{
		            	growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
		            }
		            
			    }, function errorCallback(response) {
			        growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
			    });
			    return;
			}
		}
	}
*/
    this.cambiaTipologia = function(tipo, colore, orainizio, orafine){
    	if(tipo){
			$rootScope.tipologieBackup = angular.copy($rootScope.tipologie);
			for (var i = 0; i < $rootScope.tipologie.length; i++) {
				if($rootScope.tipologie[i].nome == tipo){
					if(!colore){
						colore = $rootScope.tipologie[i].colore;
					}
					cosabuttoServiceSocial.cambiaTipologia($rootScope.tipologie[i].id,colore,$rootScope.utente,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona,orainizio, orafine)
					.then(function successCallback(response) {
			            if(response.data.status){
			            	$rootScope.tipologie[i].colore=colore;
			            	growlService.growl("Dati aggiornati con successo!", 'success')
			            }else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
							localStorage.removeItem('utente');
							growlService.growl('Devi effettuare il login per continuare!', 'danger');
			        		$rootScope.utente = {login_status: false};  
						}else{
			            	growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
			            }
			            
				    }, function errorCallback(response) {
				        growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
				    });
				    return;
				}
			}
		}
	}

	this.getDatiSettimanaAttuale =function(){
		if(!("week" in $scope.calendar)){
			$scope.calendar.week = $scope.today.format("ww/YYYY");
		}

		var tmp =$scope.calendar.week.split("/");
		
    	var settimanaAttuale = tmp[0];
    	var annoAttuale =tmp[1];
    	var istatcode = $rootScope.cittaSelezionata.istat;

		if(istatcode>-1){
			cosabuttoService.getSettimana(settimanaAttuale,annoAttuale,istatcode,$rootScope.utente).then(function successCallback(response) {
	        
		        $scope.soctrl.setCalendarWeekAfter(response.data);

		    }, function errorCallback(response) {
		        $scope.soctrl.setCalendarWeekAfter();
	   		});	
		}else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
			localStorage.removeItem('utente');
			growlService.growl('Devi effettuare il login per continuare!', 'danger');
    		$rootScope.utente = {login_status: false};  
		}else{
			$scope.soctrl.setCalendarWeekAfter();
		}
	}

	this.inserisciDifferenziata = function(multipla,idtipo,data){

		cosabuttoServiceSocial.inserisciDifferenziata(multipla,idtipo,data.esteso,$rootScope.utente,$rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona).then(function successCallback(response) {
            //alert(response.data);
            //console.log("Aggiornato");
            	
            if("status" in response.data && response.data.status){
            	$scope.soctrl.getDatiSettimanaAttuale();
            	growlService.growl("Dati aggiornati con successo!", 'success')
            	
            }else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
				localStorage.removeItem('utente');
				growlService.growl('Devi effettuare il login per continuare!', 'danger');
        		$rootScope.utente = {login_status: false};  
			}else{
            	growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
            }
            
	    }, function errorCallback(response) {
	        growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
	    });
	}

	

	

	//AZIONI CALENDARIO
	this.nextWeek = function(){
		$scope.soctrl.setCalendarWeek("6","add");
	}
	this.prevWeek = function(){
		$scope.soctrl.setCalendarWeek("7","remove");
	}
	this.nowWeek = function(){
		$scope.soctrl.setCalendarWeek();
	}

	


	this.getColoriFront = function(){
		cosabuttoService.getColoriFront($rootScope.cittaSelezionata.istat,$rootScope.cittaSelezionata.zona).then(function successCallback(response) {
            //alert(response.data);
            //console.log("Aggiornato");
            	
            if("status" in response.data && response.data.status){
            	$scope.soctrl.getDatiSettimanaAttuale();
            	growlService.growl("Dati aggiornati con successo!", 'success')
            	
            }else{
            	growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
            }
            
	    }, function errorCallback(response) {
	        growlService.growl("Non è stato possibile aggiornare i dati!", 'alert')
	    });
	}


	this.setCalendarWeekAfter = function(dadb){
		


		$scope.calendar.week = $scope.today.format("ww/YYYY");
		$scope.calendar.from_date = $scope.today.startOf('week').format("DD-MM-YYYY");
		$scope.calendar.to_date = $scope.today.endOf('week').format("DD-MM-YYYY");
		$scope.calendar.days = [];
		var tmpDate = moment($scope.today);
		for (var i = 0; i < 7; i++) {
			
			var giorno_moment = tmpDate.startOf('week').add(i, 'day');
			var giorno = { 
							nome: giorno_moment.format("dddd").capitalize(),
							numero: giorno_moment.format("DD"),
							esteso: giorno_moment.format("YYYY-MM-DD"),
							tipologia: []
						};
			for(var asd in dadb){
				var giorno_data = moment(parseInt(dadb[asd].date)); //timestamp
	
        		if($rootScope.cittaSelezionata.zone.indexOf(dadb[asd].zone)==-1){
        			$rootScope.cittaSelezionata.zone.push(dadb[asd].zone);	
        		}
        	

				if(giorno_moment.format("YYYY-MM-DD") == giorno_data.format("YYYY-MM-DD") && dadb[asd].zone==$rootScope.cittaSelezionata.zona){
					giorno.tipologia = dadb[asd].tipologia;
					giorno.orainizio = dadb[asd].orainizio;
					giorno.orafine = dadb[asd].orafine;
					giorno.multipla = dadb[asd].multipla;
				}

		
			}
			$scope.calendar.days.push(giorno);
		}

	}

	this.setCalendarWeek = function(newweek, tipo){
		if(tipo == "add"){
			$scope.today.add(newweek, 'day');
		}else if(tipo == "remove"){
			$scope.today.subtract(newweek, 'day');
		}else{
			$scope.today = moment();
		}

		var week = $scope.today.format("ww");
		var year = $scope.today.format("YYYY");
		var istatcode = $rootScope.cittaSelezionata.istat;

		if(istatcode>-1){
			cosabuttoService.getSettimana(week,year,istatcode,$rootScope.utente).then(function successCallback(response) {
	        
		        $scope.soctrl.setCalendarWeekAfter(response.data);

		    }, function errorCallback(response) {
		        $scope.soctrl.setCalendarWeekAfter();
	   		});	
		}else if("status" in response.data && response.data.status==false && response.data.error== "Token utente non valido"){
			localStorage.removeItem('utente');
			growlService.growl('Devi effettuare il login per continuare!', 'danger');
    		$rootScope.utente = {login_status: false};  
		}else{
			$scope.soctrl.setCalendarWeekAfter();
		}
		
	//	$('#table_insert_cosabutto').hide("slide", {direction: "left" }, 1000);
	//	$('#table_insert_cosabutto').show("slide", { direction: "right" }, 1000);
		
	}

	this.init = function(){
		if($rootScope.utente && "login_status" in $rootScope.utente && $rootScope.utente.login_status){
			if($scope.cittaSelezionata.istat>-1){
				this.zoneGet();
				this.getColore(); 
				if($rootScope.cittaSelezionata.zona){
			      	  //$rootScope.cittaSelezionata.zonaCheck=$rootScope.cittaSelezionata.zona; 
			      	  //this.zoneUpsert($scope.cittaSelezionata.zonaCheck);
			    }
			} 

			
		 }	
	}

	this.init();

	var self = this;

	$rootScope.$watch("utente.login_status", function(newV,oldV){
		if(newV){
			self.init();
		}
	})
	

});
app.controller('templateCtrl', function($window, $timeout, $scope, $http, growlService, facebookService, googleService, $rootScope, cosabuttoService, cosabuttoServiceSocial, $q, $state){
        
        $rootScope.cittaSelezionata = {
            istat: -1,
            zona: "",
            zone: [],
            tuttezone: []
        };

         //logout
        $scope.logout = function(){
            switch($rootScope.utente.social_network){
                case 'facebook':
                    facebookService.logout();
                    break;
                case 'amazon':
                    $rootScope.logoutAmazon();
                    break
                case 'google':
                    googleService.logout();
                    break;

            }
            $rootScope.utente.login_status = false;
            $rootScope.utente.social_network = "";
        };

        //informazioni utente
        $scope.logoutLS =function(){
            localStorage.removeItem('utente');
            $scope.loadLS();
        }
        $scope.loadLS =function(){
            if(localStorage.getItem("utente")){
                $rootScope.utente = JSON.parse(localStorage.getItem("utente"));
                cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
                    $rootScope.utente.stats = dat.data;
                },function(err){});
                growlService.growl('Bentornato '+$rootScope.utente.info.name+'!', 'info')

            }else{
                $rootScope.utente = {login_status: false, social_network: ''};    
            }
        }
        $scope.loadLS();
        
        cosabuttoService.getComuni().then(function successCallback(response) {
                $rootScope.comuni= response.data;
        }, function errorCallback(response) {
                $rootScope.comuni=[];
        });

        $rootScope.colori = [
            "marrone",
            "giallo",
            "blu",
            "turchese",
            "verde",
            "grigio",
            "rosso"
        ];

        $scope.intVal = function(x){
            //return parseInt(x);
            return Math.round(x);
        }

        //default
        $rootScope.tipologie = [
            {"id": -2, "nome": "Non Trovato", "colore": "bianco"},
            {"id": -1, "nome": "Nessuno", "colore": "x"},
            {"id": 1, "nome": "Organico", "colore": "marrone", "orainizio": "06:00", "orafine": "9:00"},
            {"id": 2, "nome": "Plastica", "colore": "giallo", "orainizio": "06:00", "orafine": "9:00"},
            {"id": 3, "nome": "Carta", "colore": "blu", "orainizio": "06:00", "orafine": "9:00"},
            {"id": 4, "nome": "Metalli", "colore": "turchese", "orainizio": "06:00", "orafine": "9:00"},
            {"id": 5, "nome": "Vetro", "colore": "verde", "orainizio": "06:00", "orafine": "9:00"},
            {"id": 6, "nome": "Indifferenziato", "colore": "grigio", "orainizio": "06:00", "orafine": "9:00"},
            {"id": 7, "nome": "Speciali", "colore": "rosso", "orainizio": "06:00", "orafine": "9:00"}
        ];
        //backup
        $rootScope.tipologieDefault = angular.copy($rootScope.tipologie);

        //facebook
        $rootScope.loginFacebook = function() {

           var login = facebookService.login()
           login.then(
               function(da){
                    $rootScope.utente.data =da;
                    $rootScope.utente.accessToken =da.authResponse.accessToken;
                    $rootScope.utente.login_status = true;
                    $rootScope.utente.social_network = "facebook";
                    $rootScope.getDataFacebook();
               },function(err){
                    $rootScope.utente.login_status = false;
                    $rootScope.utente.social_network = "facebook";
                    $scope.logoutLS();
               }
            );  
           
        };


    $scope.checkIntro = function(){
        
    }


         $rootScope.loginGoogle = function () {
           var login = googleService.login();  
           login.then(
               function(da){
                    $rootScope.utente.info =da;
                    $rootScope.utente.data = {"token":da.token, "id_token":da.id_token};
                    //$rootScope.utente.accessToken =da.data.data.accessToken;
                    $rootScope.utente.login_status = true;
                    $rootScope.utente.social_network = "google";
                    localStorage.setItem("utente",JSON.stringify($rootScope.utente));
                    
                    cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
                        $rootScope.utente.stats = dat.data;
                    },function(err){});

                    growlService.growl('Bentornato '+da.name+'!', 'info');
             
               },function(err){
                    $rootScope.utente.login_status = false;
                    $rootScope.utente.social_network = "google";
                    $scope.logoutLS();
               }
            );  
        }


        $rootScope.loginAmazon = function(){
            options = { scope : 'profile' };
         //   amazon.Login.authorize(options, 'https://www.example.com/handle_login.php');
            amazon.Login.authorize(options, function(response) {
                if ( response.error ) {
                    //alert('oauth error ' + response.error);
                    $rootScope.utente.login_status = false;
                    $rootScope.utente.social_network = "amazon";
                    $scope.logoutLS();
                    return;
                }
                $rootScope.utente.data =response;
                $rootScope.utente.accessToken =response.access_token;
                $rootScope.utente.login_status = true;
                $rootScope.utente.social_network = "amazon";
                $rootScope.getDataAmazon();
                
            });

            return false;
        }

        $rootScope.logoutAmazon=function(){
            amazon.Login.logout();
            return;
        }


        $rootScope.fakelogin = function () {
            $rootScope.utente = {"login_status":true,"social_network":"facebook","data":{"data":{"accessToken":"EAAE6Sqa9xtIBAHb0yagRq9TmocTDhBzIVJFkoHNDV6KvF878DE1jdMjUUyKHC8fJ0wtGZCNFitvqscKK1LiC3P4Uu7ItyhlJRLUGG2LxGPm1c5iD1Tn6cmZAzUeVxxrCDZAtMBZAVr31UUv27v7jCOVcFPhGWQvmg8b3cIn8hrGRcWR0UIcZCUHW6wGZCgtcQZD","userID":"10156498194658790","expiresIn":5242,"signedRequest":"6c8EfMifnoTGNzIWzJvlKPP0xNan9PHYz-qdnn93bwU.eyJ1c2VyX2lkIjoiMTAxNTY0OTgxOTQ2NTg3OTAiLCJjb2RlIjoiQVFESEs3VjctektaZzhBYmlSNTUzSndwc2ZzM0xyOHQ4WUxiaVBrdDZyN3JoejN6a0xJVjZrZ3QxSFd2NTh3d1EwckE4cndOdWp4YklCd052Wkp2QW9QN0dYM1k4SEVsclkwbGZza3JZcGx3N05PbFpaUklPWTZ2UWRKZmFidTFMeUNncnFzd3g5T2c0ano3UnRHRzhTLUxEZGhzcTE0SlFybzNlQ1FReVV5QXpjLVZKYWEzb0FVLWh4V2RhTGI0cjl2cm5UZDBiRFRlN21obUpPMGFWam85a1lFWUNZTVFscHMzaV9IM2ZOUnQ2S3N5UkhKNE55RU9UZGVOR29haW9ScEM2ZDQxMFRKRW40anJfLXZHWndDVnF3Z2ZEVGN4UU9kNVhBS2tjNHJjdi1VZzU3cXFpNU9VVmhWaWhrZWQ1Vk0yY0FVYWtHMmNlLWNmLWRadkNfMUIiLCJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTU1OTMwOTU1OH0","reauthorize_required_in":7776000,"data_access_expiration_time":1567085558},"status":"connected"},"info":{"email":"mauro.pescatore@me.com","name":"Angelo Pescatore","picture":{"data":{"height":50,"is_silhouette":false,"url":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=10156498194658790&height=50&width=50&ext=1561901560&hash=AeR8YYxldYb9_4Cz","width":50}},"id":"10156498194658790"}};
        }

        //Utente Facebook OK: {"login_status":true,"social_network":"facebook","data":{"authResponse":{"accessToken":"EAAE6Sqa9xtIBAHb0yagRq9TmocTDhBzIVJFkoHNDV6KvF878DE1jdMjUUyKHC8fJ0wtGZCNFitvqscKK1LiC3P4Uu7ItyhlJRLUGG2LxGPm1c5iD1Tn6cmZAzUeVxxrCDZAtMBZAVr31UUv27v7jCOVcFPhGWQvmg8b3cIn8hrGRcWR0UIcZCUHW6wGZCgtcQZD","userID":"10156498194658790","expiresIn":5242,"signedRequest":"6c8EfMifnoTGNzIWzJvlKPP0xNan9PHYz-qdnn93bwU.eyJ1c2VyX2lkIjoiMTAxNTY0OTgxOTQ2NTg3OTAiLCJjb2RlIjoiQVFESEs3VjctektaZzhBYmlSNTUzSndwc2ZzM0xyOHQ4WUxiaVBrdDZyN3JoejN6a0xJVjZrZ3QxSFd2NTh3d1EwckE4cndOdWp4YklCd052Wkp2QW9QN0dYM1k4SEVsclkwbGZza3JZcGx3N05PbFpaUklPWTZ2UWRKZmFidTFMeUNncnFzd3g5T2c0ano3UnRHRzhTLUxEZGhzcTE0SlFybzNlQ1FReVV5QXpjLVZKYWEzb0FVLWh4V2RhTGI0cjl2cm5UZDBiRFRlN21obUpPMGFWam85a1lFWUNZTVFscHMzaV9IM2ZOUnQ2S3N5UkhKNE55RU9UZGVOR29haW9ScEM2ZDQxMFRKRW40anJfLXZHWndDVnF3Z2ZEVGN4UU9kNVhBS2tjNHJjdi1VZzU3cXFpNU9VVmhWaWhrZWQ1Vk0yY0FVYWtHMmNlLWNmLWRadkNfMUIiLCJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTU1OTMwOTU1OH0","reauthorize_required_in":7776000,"data_access_expiration_time":1567085558},"status":"connected"},"info":{"email":"angelo.pescatore@me.com","name":"Angelo Pescatore","picture":{"data":{"height":50,"is_silhouette":false,"url":"https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=10156498194658790&height=50&width=50&ext=1561901560&hash=AeR8YYxldYb9_4Cz","width":50}},"id":"10156498194658790"}}
        //Utente Facebook NO: {"login_status":false}


        $rootScope.getDataFacebook = function() {

           var datiutente = facebookService.getData()
           datiutente.then(
               function(da){
                    $rootScope.utente.info =da;
                    localStorage.setItem("utente",JSON.stringify($rootScope.utente));
                    cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
                        $rootScope.utente.stats = dat.data;
                    },function(err){});
                    growlService.growl('Bentornato '+da.name+'!', 'info')
               },function(err){
                    $rootScope.utente.login_status = false;
                    $rootScope.utente.social_network = "facebook";
                    $scope.logoutLS();
               }
            );  
           
        };

      
        $rootScope.getDataAmazon = function() {
            
            var deferred = $q.defer();

            amazon.Login.retrieveProfile($rootScope.utente.accessToken, function(response) {
                deferred.resolve(response);                
            });

            deferred.promise.then(
               function(response){
                    $rootScope.utente.info ={
                        id: response.profile.CustomerId,
                        name: response.profile.Name,
                        email: response.profile.PrimaryEmail,
                        picture: { "data": { "url": "img/amazon-logo.png" } }
                    };
                    localStorage.setItem("utente",JSON.stringify($rootScope.utente));
                    cosabuttoServiceSocial.getStat($rootScope.utente).then(function(dat){
                        $rootScope.utente.stats = dat.data;
                    },function(err){});
                    growlService.growl('Bentornato '+response.profile.Name+'!', 'info')
               },function(err){
                    $rootScope.utente.login_status = false;
                    $rootScope.utente.social_network = "amazon";
                    $scope.logoutLS();
               }
            );  
        }



        $rootScope.goState = function(d){
            if(d){
                $state.go(d);
            }
        }
       
        $rootScope.reState = function(){
            $state.go($state.current.name);
        }

        // $rootScope.loginGoogle();


        $rootScope.inArray = function (needle, haystack) {
            var length = haystack.length;
            for(var i = 0; i < length; i++) {
                if(haystack[i] == needle) return true;
            }
            return false;
        }

        
        // Detact Mobile Browser
        if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
           angular.element('html').addClass('ismobile');
        }

        // By default Sidbars are hidden in boxed layout and in wide layout only the right sidebar is hidden.
        this.sidebarToggle = {
            left: false,
            right: false
        }

        


       

        // By default template has a boxed layout
        this.layoutType = localStorage.getItem('ma-layout-status');
        
        
        //Close sidebar on click
        this.sidebarStat = function(event) {
            if (!angular.element(event.target).parent().hasClass('active')) {
                this.sidebarToggle.left = false;
            }
        }
        
        //Listview Search (Check listview pages)
        this.listviewSearchStat = false;
        
        this.lvSearch = function() {
            this.listviewSearchStat = true; 
        }
        
        //Listview menu toggle in small screens
        this.lvMenuStat = false;
        
        //Blog
        this.wallCommenting = [];
        
        this.wallImage = false;
        this.wallVideo = false;
        this.wallLink = false;

        //Skin Switch
        this.currentSkin = 'blue';

        this.skinList = [
            'lightblue',
            'bluegray',
            'cyan',
            'teal',
            'green',
            'orange',
            'blue',
            'purple'
        ]

        this.skinSwitch = function (color) {
            this.currentSkin = color;
        }
    
    })


    // =========================================================================
    // Header
    // =========================================================================
    .controller('headerCtrl', function($timeout,$window, growlService, $scope){

        if(window.location.host=='localhost'){
            $scope.localhost = true;
        }else{
            $scope.localhost = false;
        }
        



        // Top Search
        this.openSearch = function(){
            angular.element('#header').addClass('search-toggled');
            angular.element('#top-search-wrap').find('input').focus();
        }

        this.closeSearch = function(){
            angular.element('#header').removeClass('search-toggled');
        }
        

        //Clear Notification
        this.clearNotification = function($event) {
            $event.preventDefault();
            
            var x = angular.element($event.target).closest('.listview');
            var y = x.find('.lv-item');
            var z = y.size();
            
            angular.element($event.target).parent().fadeOut();
            
            x.find('.list-group').prepend('<i class="grid-loading hide-it"></i>');
            x.find('.grid-loading').fadeIn(1500);
            var w = 0;
            
            y.each(function(){
                var z = $(this);
                $timeout(function(){
                    z.addClass('animated fadeOutRightBig').delay(1000).queue(function(){
                        z.remove();
                    });
                }, w+=150);
            })
            $timeout(function(){
                angular.element('#notifications').addClass('empty');
                 //setto true su visualizzato in mogno
                APIService.async({method: "falseallarmigenerati"}).then(function(adata) {});

                $scope.hctrl.messageResult = [];

            }, (z*150)+200);
            
           

            
        }
        
        // Clear Local Storage
        this.clearLocalStorage = function() {
            
            //Get confirmation, if confirmed clear the localStorage
            swal({   
                title: "Sei sicuro?",   
                text: "Tutti i tuoi dati salvati nel localStorage saranno rimossi!",   
                type: "warning",   
                showCancelButton: true,   
                confirmButtonColor: "#F44336",   
                confirmButtonText: "Si, cancellalo!",   
                closeOnConfirm: false 
            }, function(){
                localStorage.clear();
                swal("Completato!", "localStorage ripulito", "success"); 
            });
            
        }
        
        //Fullscreen View
        this.fullScreen = function() {
            //Launch
            function launchIntoFullscreen(element) {
                if(element.requestFullscreen) {
                    element.requestFullscreen();
                } else if(element.mozRequestFullScreen) {
                    element.mozRequestFullScreen();
                } else if(element.webkitRequestFullscreen) {
                    element.webkitRequestFullscreen();
                } else if(element.msRequestFullscreen) {
                    element.msRequestFullscreen();
                }
            }

            //Exit
            function exitFullscreen() {
                if(document.exitFullscreen) {
                    document.exitFullscreen();
                } else if(document.mozCancelFullScreen) {
                    document.mozCancelFullScreen();
                } else if(document.webkitExitFullscreen) {
                    document.webkitExitFullscreen();
                }
            }

            if (exitFullscreen()) {
                launchIntoFullscreen(document.documentElement);
            }
            else {
                launchIntoFullscreen(document.documentElement);
            }
        }
    
    })


    //=================================================
    // LOGIN
    //=================================================

    .controller('loginCtrl', function(){
        
        //Status
    
        this.login = 1;
        this.register = 0;
        this.forgot = 0;
    })


    // =========================================================================
    // ANIMATIONS DEMO
    // =========================================================================
    .controller('animCtrl', function($timeout){
        
        //Animation List
        this.attentionSeekers = [
            { animation: 'bounce', target: 'attentionSeeker' },
            { animation: 'flash', target: 'attentionSeeker' },
            { animation: 'pulse', target: 'attentionSeeker' },
            { animation: 'rubberBand', target: 'attentionSeeker' },
            { animation: 'shake', target: 'attentionSeeker' },
            { animation: 'swing', target: 'attentionSeeker' },
            { animation: 'tada', target: 'attentionSeeker' },
            { animation: 'wobble', target: 'attentionSeeker' }
        ]
        this.flippers = [
            { animation: 'flip', target: 'flippers' },
            { animation: 'flipInX', target: 'flippers' },
            { animation: 'flipInY', target: 'flippers' },
            { animation: 'flipOutX', target: 'flippers' },
            { animation: 'flipOutY', target: 'flippers'  }
        ]
         this.lightSpeed = [
            { animation: 'lightSpeedIn', target: 'lightSpeed' },
            { animation: 'lightSpeedOut', target: 'lightSpeed' }
        ]
        this.special = [
            { animation: 'hinge', target: 'special' },
            { animation: 'rollIn', target: 'special' },
            { animation: 'rollOut', target: 'special' }
        ]
        this.bouncingEntrance = [
            { animation: 'bounceIn', target: 'bouncingEntrance' },
            { animation: 'bounceInDown', target: 'bouncingEntrance' },
            { animation: 'bounceInLeft', target: 'bouncingEntrance' },
            { animation: 'bounceInRight', target: 'bouncingEntrance' },
            { animation: 'bounceInUp', target: 'bouncingEntrance'  }
        ]
        this.bouncingExits = [
            { animation: 'bounceOut', target: 'bouncingExits' },
            { animation: 'bounceOutDown', target: 'bouncingExits' },
            { animation: 'bounceOutLeft', target: 'bouncingExits' },
            { animation: 'bounceOutRight', target: 'bouncingExits' },
            { animation: 'bounceOutUp', target: 'bouncingExits'  }
        ]
        this.rotatingEntrances = [
            { animation: 'rotateIn', target: 'rotatingEntrances' },
            { animation: 'rotateInDownLeft', target: 'rotatingEntrances' },
            { animation: 'rotateInDownRight', target: 'rotatingEntrances' },
            { animation: 'rotateInUpLeft', target: 'rotatingEntrances' },
            { animation: 'rotateInUpRight', target: 'rotatingEntrances'  }
        ]
        this.rotatingExits = [
            { animation: 'rotateOut', target: 'rotatingExits' },
            { animation: 'rotateOutDownLeft', target: 'rotatingExits' },
            { animation: 'rotateOutDownRight', target: 'rotatingExits' },
            { animation: 'rotateOutUpLeft', target: 'rotatingExits' },
            { animation: 'rotateOutUpRight', target: 'rotatingExits'  }
        ]
        this.fadeingEntrances = [
            { animation: 'fadeIn', target: 'fadeingEntrances' },
            { animation: 'fadeInDown', target: 'fadeingEntrances' },
            { animation: 'fadeInDownBig', target: 'fadeingEntrances' },
            { animation: 'fadeInLeft', target: 'fadeingEntrances' },
            { animation: 'fadeInLeftBig', target: 'fadeingEntrances'  },
            { animation: 'fadeInRight', target: 'fadeingEntrances'  },
            { animation: 'fadeInRightBig', target: 'fadeingEntrances'  },
            { animation: 'fadeInUp', target: 'fadeingEntrances'  },
            { animation: 'fadeInBig', target: 'fadeingEntrances'  }
        ]
        this.fadeingExits = [
            { animation: 'fadeOut', target: 'fadeingExits' },
            { animation: 'fadeOutDown', target: 'fadeingExits' },
            { animation: 'fadeOutDownBig', target: 'fadeingExits' },
            { animation: 'fadeOutLeft', target: 'fadeingExits' },
            { animation: 'fadeOutLeftBig', target: 'fadeingExits'  },
            { animation: 'fadeOutRight', target: 'fadeingExits'  },
            { animation: 'fadeOutRightBig', target: 'fadeingExits'  },
            { animation: 'fadeOutUp', target: 'fadeingExits'  },
            { animation: 'fadeOutUpBig', target: 'fadeingExits'  }
        ]
        this.zoomEntrances = [
            { animation: 'zoomIn', target: 'zoomEntrances' },
            { animation: 'zoomInDown', target: 'zoomEntrances' },
            { animation: 'zoomInLeft', target: 'zoomEntrances' },
            { animation: 'zoomInRight', target: 'zoomEntrances' },
            { animation: 'zoomInUp', target: 'zoomEntrances'  }
        ]
        this.zoomExits = [
            { animation: 'zoomOut', target: 'zoomExits' },
            { animation: 'zoomOutDown', target: 'zoomExits' },
            { animation: 'zoomOutLeft', target: 'zoomExits' },
            { animation: 'zoomOutRight', target: 'zoomExits' },
            { animation: 'zoomOutUp', target: 'zoomExits'  }
        ]

        //Animate    
        this.ca = '';
    
        this.setAnimation = function(animation, target) {
            if (animation === "hinge") {
                animationDuration = 2100;
            }
            else {
                animationDuration = 1200;
            }
            
            angular.element('#'+target).addClass(animation);
            
            $timeout(function(){
                angular.element('#'+target).removeClass(animation);
            }, animationDuration);
        }

          this.setAnimationJam = function(animation, target, hidden) {
            if (animation === "hinge") {
                animationDuration = 2100;
            }
            else {
                animationDuration = 1200;
            }
            if(!hidden){
                angular.element('#'+target).removeClass("hidden");
            }
            angular.element('#'+target).addClass(animation);
            
            $timeout(function(){
                angular.element('#'+target).removeClass(animation);
                
                if(hidden){
                    angular.element('#'+target).addClass("hidden");
                }
            }, animationDuration,
            function(){

            });
        }
    
    })


Anon7 - 2022
AnonSec Team