/*
########################################
########################################
##									  ##
## F5 - Content Management System 	  ##
##									  ##
## Copyright © 2009					  ##
## 	Reload - Laboratorio Multimediale ##
## 	(http://www.reloadlab.it -		  ##
## 	info@reloadlab.it)				  ##
##									  ## 
## author:							  ##
## 	Domenico Gigante				  ##
## 	(domenico@reloadlab.it)			  ##
## 	Alessio Attanasio				  ##
##  (aatt@reloadlab.it)				  ##
##									  ##
########################################
########################################
*/

var googleLoad = function(){
	var map;
	var geocoder;
	
	var findLocation = function() {
		geocoder.getLocations($("#indirizzo").val(), addAddressToMap);
	}
	
	var setZoomAccuracy = function(acc){
		if(acc == '8' || acc == '7' || acc == '6'){
			return 16;
		} else if(acc == '5' || acc == '4'){
			return 12;
		} else if(acc == '3' || acc == '2'){
			return 8;
		} else if(acc == '1'){
			return 4;
		}
	}
	
	var addAddressToMap = function(response){
		map.clearOverlays();
		if (!response || response.Status.code != 200) {
			alert("Indirizzo non trovato. Prova a cambiare alcuni dati.");
		} else {
			var place = response.Placemark[0];
			var point = new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]);
			var lat = $("#latitudine");
			var lon = $("#longitudine");
			
			lat.val(place.Point.coordinates[1]);
			lon.val(place.Point.coordinates[0]);  
			
			map.setCenter(new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]), setZoomAccuracy(place.AddressDetails.Accuracy));
			
			var marker = new GMarker(point);
			map.addOverlay(marker);
			marker.openInfoWindowHtml('<p><br><b>Indirizzo</b>: ' + place.address + '<br>' + '<b>Coordinate:</b> ' + place.Point.coordinates[1] + ' ' + place.Point.coordinates[0] + '</p>');
			
			$("#indirizzo").val(place.address);
		}
	}
	   
	var showLocation = function(title, address, date, lat, lon){
		map.setCenter(new GLatLng(lat, lon), 13);
		var marker = new GMarker(new GLatLng(lat, lon));
		map.addOverlay(marker);
		marker.openInfoWindowHtml('<p><br><b>' + title + '</b><br>' + date + ' - ' + address + '</p>');
	}
	
	if (GBrowserIsCompatible()) {
		if(!$("#GMap")[0]) return;
		map = new GMap2($("#GMap")[0]);
		map.setCenter(new GLatLng(41.86, 12.479479), 10);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		geocoder = new GClientGeocoder();
	} else {
		alert("Spiacente, il tuo browser non è compatibile con Google Maps API");
	}
	
	return {
		show: showLocation,
		'find': findLocation
	};
}
