/**
 * Applica un effetto di animazione dello sfondo ad un dato oggetto
 * @param obj id o classe dell'oggetto
 * @param time tempo di transizione al colore definito
 * @param color colore di arrivo
 * @return null
 */
function highlight(obj,time,color){		
		$(obj).animate({
			'background-color':'#fdface'
		},2000);			
		setTimeout(function(){
			$(obj).stop().animate({'background-color': color},2000);
		},time);
}

//google map function

function mapInitialize(address,marker,latlng,geoloc){
	if(!latlng)
		var latlng = new google.maps.LatLng(0,0);	
    var myOptions = {
        zoom: 10,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }	
    var map = new google.maps.Map(document.getElementById("map"), myOptions);
    if(!geoloc)
    	goTo(address,map);
    else{
    	 if(marker){
    	mark = new google.maps.Marker({
            map: map, 
            position: latlng,
            title:marker.titolo
        });
		
		info = new google.maps.InfoWindow({
			 position: latlng,
			 content: marker.messaggio
		});
		info.open(map,mark);
    	}
    }
    	
    return map;
}

function goTo(indirizzo,map){
	 
	geocoder = new google.maps.Geocoder();		
	geocoder.geocode({
            'address': indirizzo
    },
	function(results, status){
            if (status == google.maps.GeocoderStatus.OK) {					
               pos = results[0].geometry.location;
			   map.setCenter(pos);
			   if(marker){
					mark = new google.maps.Marker({
			            map: map, 
			            position: results[0].geometry.location,
			            title:marker.titolo
			        });
					
					info = new google.maps.InfoWindow({
						 position: results[0].geometry.location,
						 content: marker.messaggio
					});
					info.open(map,mark);

			    }
            }
            else {
            	arr_indirizzo = indirizzo.split(",");
                goTo(arr_indirizzo[1],map);
            }
    });		
	
}

//calcola latlng di un indirizzo
var geoindirizzo;
function geoCode(indirizzo){

	geocoder = new google.maps.Geocoder();		
	geocoder.geocode({
            'address': indirizzo
    },
	function(results, status){
            if (status == google.maps.GeocoderStatus.OK) {					               
            	geoindirizzo = results[0].geometry.location;
            }
            else {
            	geoindirizzo = false;
            }
    });
	
	return geoindirizzo;
	
}


/**
 * Validazione dei campi
 * @param classe selettore del campo da validare
 * @return	true se non ci sono errori / false ci sono errori
 */
function valid(classe){


	//se la funzione restituisce false : campo con errore
	var error = true;

	
	$.each($(classe),function(i,obj){
		var classi = $(this).attr('class');			
		var index = classi.indexOf('[')+1;
		var end = classi.indexOf(']');
		var attributi  = classi.substring(index,end);
		msg = '';	
		attributi = attributi.split(",");
		
		if(error){
			$.each(attributi,function(n,attributo){
				 //alert(attributo);
				 error = control(attributo,obj);
			});
			
			avviso(obj,msg);
		}
	});	
	
		function control(op,obj){
			
			var val= $(obj).val();
			
			switch (op){
			
				//campo ricchiesto
				case 'require':
					//alert('Campo richiesto');
					if(val.trim()==''){
						msg+='Campo richiesto; ';					
						return false;
					}				
				break;
				
				//campo mail
				case 'mail':				
					var espressione = /^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$/;
					if (!espressione.test(val))
					{
					    msg+='Mail non valida; ';
					    return false;
					}
				break;
			}
			
			//se non ci sono errori ritorno true
			if(error){
				return error;
				
			}
		}
		
		function avviso(obj,msg){
			
			var y = $(obj).height();
			var x = $(obj).width();			
			var offset = $(obj).offset();
			
			if (msg){
				$(obj).animate({'background-color':'#ffdfdf','border':'1px solid #ff9797'},2000);
				
				var div = '<div class="error-valid ui-state-highlight ui-corner-all">'+msg+'</div>';
				$('body').prepend(div);
				var divstyle = $('.error-valid:first');		
				divstyle.css({
					'position':'absolute',
					'top':offset.top+'px',
					'left':offset.left+x+5+'px',
					'z-index':'1000',
					'font-size':'0.7em',
					'padding':'1px'
				});
				
				$(obj).focus(function(){
					$(divstyle).fadeOut(500);
				});
				divstyle.click(function(){
					$(this).fadeOut(500);
				});
				
				setTimeout(function(){
					divstyle.fadeOut('1000');
				},3000)
			}else
				$(obj).animate({'background-color':'#f0fff0','border':'1px solid #d2ffd2'},2000);
		}
	
	return error;
};
