// Funzioni fumetto //
Stabilimento = {
	trim: function(stringa){
	    while (stringa.substring(0,1) == ' '){
	        stringa = stringa.substring(1, stringa.length);
	    }
	    while (stringa.substring(stringa.length-1, stringa.length) == ' '){
	        stringa = stringa.substring(0,stringa.length-1);
	    }
	    return stringa;
	},	
	// funzione che cancella il marker (annulla operazione inserisci)
	annulla_inserisci_stabilimento_conferma : function(id){
		Stabilimento.elimina_conferma(id);
		$('#tab_aggiungistab').trigger('click')
	},
	// funzione che cancella il marker (annulla operazione sposta)
	annulla_sposta_stabilimento_conferma: function(id) {
		map.closeInfoWindow();
	},
	// funzione che rimuove/chiude la dialogbox
	close: function (ev) {
		jQuery(".ui-dialog").remove();
	},
	// funzione che inizializza la creazione del marker
	commento : function(id){
		jQuery.ajax({
        	type: "POST",
        	dataType: "json",
        	url: "/mappe/luoghi_produzione/index.php/datawm/commenti_crea",
        data: ({
            id_stabilimento:id
        	}),
	 	success: function(json){
			Stabilimento.modifica(json.id,'/commento');
			}
		});
	},
	// funzione che conta
	contatore : function(id,action){
		var _num = parseInt(jQuery(id).text());
		if(action == '-')
			_num--;
		else
			_num++;

		jQuery(id).text(_num);
	},
	// funzione che inizializza la cancellazione di uno stabilimento
	elimina : function(id){

		var marker = parseInt(jQuery("#counter").attr("data"));
		
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/index.php/formxd/elimina",
            data: ({
                id: id
            }),
            success: function(html){
            	jQuery(html).dialog({
            		resizable:false,
            		draggable:false,
            		close:Stabilimento.close,
            		modal:true,
            		buttons:{
            			'conferma':function(){
            				Stabilimento.elimina_conferma(id,marker);
            				Stabilimento.close();
            			},
            			'annulla':Stabilimento.close
            		}
            	});

            }
		});
	},
	// funzione che effettua la cancellazione di uno stabilimento
	elimina_conferma : function(id,marker){
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/index.php/datawm/stabilimenti_cancella",
            data: ({
                id_stabilimento: id
            }),
            success: function(html){
		        if (marker) {
	            	deleteMarker(marker);
			        clearResult(marker);
			        $('#tab_ricercastab').trigger('click')
		        } else {
		        	map.clearOverlays();
		        }
            }
		});
	},
	// funzione che effettua la cancellazione di un allegato (stabilimento)
	elimina_allegato : function(id_stabilimento,tipo,id_allegato){
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/index.php/datawm/stabilimenti_cancella_allegati",
            data: ({
                id_stabilimento: id_stabilimento,
                tipo: tipo, 
                id_allegato: id_allegato
                  }),
            success: function(html){
            	jQuery('.tr_'+tipo+'_'+id_allegato)
				.animate({
					backgroundColor : 'yellow',
					opacity : 0.1
				},1500,
				function(){
					jQuery(this).remove();
					Stabilimento.contatore('#count'+tipo,'-');
				});
            }
		});
		return false;
	},
	// funzione che effettua la cancellazione di un'immagine (stabilimento)
	elimina_immagine_stabilimento : function(id_stabilimento,tipo,id_immagine) {
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/index.php/datawm/stabilimenti_cancella_immagini",
            data: ({
                id_stabilimento: id_stabilimento,
                id_immagine: id_immagine
                  }),
            success: function(html){
            	jQuery('.tr_'+tipo+'_'+id_immagine)
				.animate({
					backgroundColor : 'yellow',
					opacity : 0.1
				},1500,
				function(){
					jQuery(this).remove();
					Stabilimento.contatore('#count'+tipo,'-');
				});
            }
		});
		return false;
	},
	// funzione che effettua la cancellazione di uno commento
	elimina_commento : function(el,id_stabilimento,id){
			
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/index.php/datawm/commenti_cancella",
            data: {
                id_commento: id,
                id_stabilimento: id_stabilimento
             },
            success: function(html){
            	jQuery(el).parents('.tr_commento:eq(0)').remove();
					Stabilimento.contatore('#countcommenti','-');
	            }
		});
		return false;
	},
	// funzione che effettua la cancellazione di un allegato (Commento)
	elimina_allegato_commento : function(tipo,id_allegato,id_commento){
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/index.php/datawm/commenti_cancella_allegati",
            data: {
                id_allegato: id_allegato,
            	tipo: tipo,
            	id_commento:id_commento 
                  },
            success: function(html){
            	jQuery('.tr_'+tipo+'_'+id_allegato)
				.animate({
					backgroundColor : 'yellow',
					opacity : 0.1
				},1500,
				function(){
					jQuery(this).remove();
					Stabilimento.contatore('#count'+tipo,'-');
				});
            }
		});
		return false;
	},
	// funzione che effettua la cancellazione di un'immagine (Commento)
	elimina_immagine_commento : function(tipo,id_stabilimento,id_commento,id_immagine) {
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/index.php/datawm/commenti_cancella_immagini",
            data: ({
                id_stabilimento: id_stabilimento,
                id_immagine: id_immagine,
                id_commento: id_commento
                  }),
            success: function(html){
            	jQuery('.tr_'+tipo+'_'+id_immagine)
				.animate({
					backgroundColor : 'yellow',
					opacity : 0.1
				},1500,
				function(){
					jQuery(this).remove();
					Stabilimento.contatore('#count'+tipo,'-');
				});
            }
		});
		return false;
	},	
	// funzione che effettua l'inserimento di uno stabilimento (partendo dal conferma del fumetto)
	inserisci_stabilimento_conferma : function(){
			Stabilimento.stabilimento_conferma_controller('inserisci_stabilimento_conferma_comune');
	},
	// funzione che effettua l'inserimento di uno stabilimento (partendo dal conferma del comune)
	inserisci_stabilimento_conferma_comune : function(latitudine,longitudine,indirizzo,id_stabilimento,id_comune) {
		jQuery.ajax({
        	type: "POST",
        	dataType: "json",
        	url: "/mappe/luoghi_produzione/index.php/datawm/stabilimenti_crea",
        data: ({
            id_comune: id_comune,
            latitudine: latitudine,
            longitudine: longitudine,
            indirizzo: indirizzo
        	}),
	 	success: function(json){
			MARKERS[0].disableDragging();
			recallMarker(MARKERS[0]);
	 		Stabilimento.modifica(json.id);
			}
		});
	},
	// funzione che effettua l'inserimento di uno stabilimento (pulsante salva)
	inserimento_conferma_finale: function(id) {
		nascondiTimeline();
		var _form = $("#frm_modifica");

		var ico='_u';
		if( jQuery('#id_autore').val()=='Redazione') {
			var ico='_r';
		}
			
		var settore = jQuery("#id_settore option:selected",_form).text().toLowerCase();
		var pos=settore.search(/ /i); 
		var  icona = settore;
		if (pos>0) {
			var  icona = settore.substring(0,pos);
		}
		counter = 1;
		try{
			//MARKERS[0].disableDragging();
			MARKERS[0].setImage("/css/mappe/luoghi_produzione/im/marker/"+icona+ico+"/image.png");
			recallMarker(MARKERS[0]);
		} catch(e) {
			MARKERS[id].setImage("/css/mappe/luoghi_produzione/im/marker/"+icona+ico+"/image.png");
		}
	},	
	// funzione che inizializza la modifica di uno stabilimento
	modifica : function(id,metodo){
		if (!metodo) {
			var _metodo="";
		} else {
			var _metodo=metodo;
		}
		nascondiTimeline();
		jQuery('#map_contr_a').trigger('click');
		jQuery("#tabs").tabs('select', 1);
		jQuery.ajax({
            type: "POST",
            url: "/mappe/luoghi_produzione/formxd"+_metodo,
            data: ({
                id: id
            }),
            success: function(html){
            	jQuery(".stind_dialog").remove();
            	
            	jQuery("#tabs").find("#inseriscistab").hide();
        		jQuery("#tabs").find("#gestiscistab").empty().append(html).attachdialog();
        		jQuery("#tabs").find('#action').val("1")
       		    if ($.browser.msie==false) {
	        		jQuery('.rounded').corners();
				    jQuery('.rounded-n').corners("top 10px");
				    jQuery('.rounded-w').corners("left 10px");
				    jQuery('.rounded-nw').corners("top-left");
				    jQuery('.rounded-ne').corners("top-right");
				    jQuery('.rounded-s').corners("bottom 10px");
				    jQuery('.rounded-se').corners("bottom-left");
				    jQuery('.rounded-sw').corners("bottom-right");
				    jQuery('.rounded-ne-s').corners("top-right bottom");
       		    }
       		    
				jQuery("#tabs").find("#gestiscistab").show();
				
        		// nasconde comune se uguale ad indirizzo
				var _form = $("#frm_modifica");
				var _indirizzo = $("#indirizzo",_form).text();
				var _comune = $("#comune",_form).text();
				var _provincia = $("#provincia",_form).text();
				var _cap = _indirizzo.substring(0,5);
				var espressione_cap = RegExp("[0-9]");
					
				if (espressione_cap.test(_cap)) {
					var _indirizzo = _indirizzo.substring(6);
				}
				var _len_ind = _indirizzo.length;
				var _indirizzo = _indirizzo.substring(0,_len_ind);
				
				if (_indirizzo == _comune) {
					$("#comune").hide();
				}
        		
        		var _azione = jQuery('input#azione').val();
				var _form = jQuery("#frm_modifica");
				
				if(_azione=='inserisci') {
					jQuery("#id_settore option:selected",_form).remove+("selected");
					jQuery("#id_settore",_form).val("");
				} else if (!_azione)  {
					var ico='_u';
					if(( jQuery('#id_autore').val()=='Redazione') || (jQuery('#proprietario').val()=='Storiaindustria.it')) {
						var ico='_r';
					}
					var icona = jQuery("#response_id_settore").text().toLowerCase();
					icona = jQuery.trim(icona);
					
					switch (icona) {
						case 'automobili e veicoli':
						var icona = "automobili";
						break;
						
						case 'alimentare e tabacco':
						var icona = "alimentare";
						break;
						
						case 'editoria e tipografia':
						var icona = "editoria";
						break;
						
						case 'energia e telecomunicazioni':
						var icona = "energia";
						break;
												
						
						case 'chimica e farmaceutica':
						var icona = "chimica";
						break;
						
						case 'scrittura e calcolo':
						var icona = "scrittura";
						break;
						
						case 'meccanicaed elettrotecnica':
						var icona = "meccaica";
						break;
						 
						case 'tessile e abbigliamento':
						var icona = "tessile";
						break;

						case 'trasporti ferroviari':
						var icona = "trasporti";
						break;
					}
					try {
						MARKERS[0].setImage("/css/mappe/luoghi_produzione/im/marker/"+icona+ico+"/image.png")
						MARKERS[0].disableDragging();
						recallMarker(MARKERS[0]);
					} catch (e) {}
				} else {
					nascondiTimeline();
				}
            }
		});
	},
	// funzione che inizializza lo spostamento di uno stabilimento
	sposta : function(id){
		nascondiTimeline();
	
		try {
			var settore = jQuery("#marker_settore").attr("data").toLowerCase();
			
			var pos=settore.search(/ /i); 
			var  icona = settore;
			if (pos>0) {
				var  icona = settore.substring(0,pos);
				if (jQuery('#marker_settore').text()=='') {
					jQuery('#marker_settore').empty().text(icona);
				}
			}
		} catch(e) {
			var settore = jQuery("#response_id_settore").text().toLowerCase();
			var pos=settore.search(/ /i); 
			var icona = jQuery.trim(settore);
			if (pos>0) {
				var  icona = jQuery.trim(settore.substring(0,pos));
				if (jQuery('#marker_settore').text()=='') {
					jQuery('#marker_settore').empty().text(icona);
				}
			}
		}

		if (jQuery('#marker_settore').text()=='') {
			jQuery('#marker_settore').empty().text(icona);
		}
		
		var ext='_u';
		var _autore = $('#nomeutente').text();

		if (_autore=='Storiaindustria.it') var ext = '_r';
		
		MARKERS[id].enableDragging();
		MARKERS[id].setImage("/css/mappe/luoghi_produzione/im/marker/sposta"+ext+"/image.png")
		map.closeInfoWindow();
	},
	// funzione che effettua lo spostamento di uno stabilimento (partendo dal conferma del fumetto)	
	sposta_stabilimento_conferma : function(){
   		Stabilimento.stabilimento_conferma_controller('sposta_stabilimento_conferma_comune');
   	},
	// funzione che effettua lo spostamento di uno stabilimento (partendo dal conferma del comune)	
	sposta_stabilimento_conferma_comune : function(latitudine,longitudine,indirizzo,id_stabilimento,id_comune) {
		
		var id_stabilimento =	jQuery('#id_stabilimento').val();
		
		jQuery.ajax({
        	type: "POST",
        	dataType: "json",
        	url: "/mappe/luoghi_produzione/index.php/datawm/stabilimenti_sposta",
        data: ({
            id_comune: id_comune,
            id_stabilimento : id_stabilimento,
            latitudine: latitudine,
            longitudine: longitudine,
            indirizzo: indirizzo
        	}),
	 	success: function(json){
			Stabilimento.modifica(id_stabilimento,'/sposta_stabilimento');
			}
		});
	},
	// funzione che conclude l'operazione di sposta
	sposta_conferma_finale: function() {
		nascondiTimeline();
	},
	// funzione che dato l'indirizzo restituito da gooolemap ne estrae il comune
	stabilimento_estari_comuni: function(metodo,latitudine,longitudine,array_ind, array_dim,indirizzo,id_stabilimento,comune,prov) {
		jQuery.ajax({
	    	type: "POST",
			dataType: "json",
			url: "/mappe/luoghi_produzione/index.php/comuni/estrai_comune",
			data: ({
    			prov: prov,
    			comune:comune,
    			id_stabilimento: id_stabilimento
			}),
	        success: function(json){
	        	var id_comune = false;
	           	var len = json.length;
	           	if(len == 0){
	           		alert('Comune non trovato o non appartenente alle regioni Piemonte, Liguria o Valle d\'Aosta');
	           		return false;
	           	}else if (len>1) {
	           		var _sel = jQuery("#sel_comune");
	           		_sel.empty();
	           		for(var x = 0; x < len; x++){
						_sel.append('<option value="'+json[x].id+'">'+json[x].nome+'</option>');
	           		}
	           		jQuery("#dialog_scelta_comuni").dialog({
	           			resizable:false,
		           		draggable:false,
		           		modal:true,
		           		close:Stabilimento.close,
	          			buttons:{
		            		'conferma':function(){
		            			id_comune = _sel.val();
		               			Stabilimento[metodo](latitudine,longitudine,indirizzo,id_stabilimento,id_comune);
		            			Stabilimento.close();
		            		},
		            		'annulla': Stabilimento.close
	            		}
	            	});
	            } else {
	            	id_comune = json[0].id;
          			Stabilimento[metodo](latitudine,longitudine,indirizzo, id_stabilimento, id_comune);
        			Stabilimento.close();
	            }
	       }
		});
	},
	// core della funzione di estrazione comune
	stabilimento_conferma_controller : function(metodo, id_stabilimento){
		jQuery("#tabs").tabs('select', 1);
		
		var id_comune = jQuery('#id_comune').val();
		var longitudine = jQuery('#longitudine').val();
		var latitudine = jQuery('#latitudine').val();
		var indirizzo = jQuery('#indirizzo_stab').val();

		var array_ind = indirizzo.split(",");
		
		var espressione_com = RegExp("[0-9]");
		var espressione_naz = new RegExp("Italia");
		
		var array_dim = array_ind.length;
		var indirizzo = array_ind[0];
				
		if (!espressione_naz.test(array_ind[array_dim-1])) {
			alert('Non puoi inserire uno stabilimento fuori Italia!');
			return false;
		} else {
			var prov = array_ind[array_dim-2].substring(array_ind[array_dim-2].length-2);
			switch (array_dim) {
				case 2:
					var prov = array_ind[0].substring(array_ind[0].length-2);
					var comune = array_ind[0].substring(0,array_ind[0].length-2);
					if (espressione_com.test(comune.substring(0,5))) {
						var comune = comune.replace(comune.substring(0,5),'');
						var indirizzo = array_ind[0].replace(prov,'');
					} else {
						var indirizzo = array_ind[0].replace(prov,'');
					}
					var n = 0;
					break;
				case 3:
					var prov = array_ind[1].substring(array_ind[1].length-2);
					var comune = array_ind[1].substring(7,array_ind[1].length-2);
					var indirizzo = array_ind[0].replace(prov,'');
					var n = 1;
					break;
				case 4:
					var prov = array_ind[2].substring(array_ind[2].length-2);
					var comune = array_ind[2].substring(7,array_ind[2].length-2);
					var indirizzo = array_ind[0].replace(prov,'')+','+array_ind[1];
					var n = 2;
				break;
			}
			
			// estrazione comune di Torino
			var pos=array_ind[n].search(/Torino/i); 
			if ((pos==0) && (n==0)) {
				var prov = 'TO';
				var comune = 'Torino';
				var indirizzo = array_ind[0];
			} else {
				var pos=array_ind[n].search(/Torino/i); 
				if (pos>0)  {
					var prov = 'TO';
					var comune = 'Torino';
					if (espressione_com.test(array_ind[n].substring(0,5) || espressione_com.test(array_ind[n].substring(0,6)))) {
						var indirizzo = array_ind[0].replace(prov,'')+','+array_ind[1];
							indirizzzo = indirizzo.replace(prov,'');
					} else {
						if (n==2) {
							var indirizzo = array_ind[0] +','+array_ind[1];
						}
					}
				}	
			}

			// estrazione comune di Genova
			var pos=array_ind[n].search(/Genova/i); 
			if ((pos==0) && (n==0)) {
				var prov = 'GE';
				var comune = 'Genova';
				var indirizzo = array_ind[0];
			} else {
				var pos=array_ind[n].search(/Genova/i); 
				if (pos>0)  {
					var prov = 'GE';
					var comune = 'Genova';
					if (espressione_com.test(array_ind[n].substring(0,5) || espressione_com.test(array_ind[n].substring(0,6)))) {
						var indirizzo = array_ind[0].replace(prov,'')+','+array_ind[1];
							indirizzzo = indirizzo.replace(prov,'');
					} else {
						if (n==2) {
							var indirizzo = array_ind[0] +','+array_ind[1];
						}
					}
				}	
			}

			// estrazione comune di Aosta
			var pos=array_ind[n].search(/Aosta/i); 
			if ((pos==0) && (n==0)) {
				var prov = 'AO';
				var comune = 'Aosta';
				var indirizzo = array_ind[0];
			} else {
				var pos=array_ind[n].search(/Aosta/i); 
				if (pos>0) {
					var prov = 'AO';
					if (espressione_com.test(array_ind[n].substring(0,6))) {
						var comune = array_ind[n].replace(array_ind[n].substring(0,6),'').replace('Aosta','').replace(' ','');
						// controllo se comune nullo -> capita solo con cap + Aosta
						if (!comune) {
							var comune = 'Aosta';
						}
						var indirizzo = array_ind[0].replace('Aosta','');
						if (n==2) {
							var indirizzo = array_ind[0] +','+array_ind[1];
						}
					} else {
						var comune = array_ind[n].replace('Aosta','');
						var indirizzo = array_ind[0].replace('Aosta','');
						if (n==2) {
							var indirizzo = array_ind[0] +','+array_ind[1];
						}
					}
					
				} 									
			}
			
			if (!comune) {
				alert('Comue non valido!');
				return false;
			} else {
				Stabilimento.stabilimento_estari_comuni(metodo,latitudine,longitudine,array_ind,array_dim,indirizzo,id_stabilimento,comune,prov);
			}
		}
	}
};

