var map;
var geocoder = null;
var baseIcon;

google.load("maps", "2.x");	// Call this function when the page has been loaded  

function getIcon(_path) {
	var icon = new GIcon();
	icon.image =_path;
	icon.iconAnchor = new GPoint(16, 16);
	icon.infoWindowAnchor = new GPoint(16, 0);
	icon.iconSize = new GSize(32, 32);
	icon.shadowSize = new GSize(59, 32);
  return icon;
}

var markers = new Array();
var count_markers = 0;

function buildBaloon(obj_point){
	var buff='<div class="baloon" style="width:250px;height:220px;overflow-y:auto;">';
		buff +='<table>';
			buff +='<tr><td colspan="2"><strong>'+obj_point.title+'</strong></td></tr>';
			buff +='<tr>';
				if(obj_point.image!="")
					buff +='<td '+((obj_point.description=="")?'colspan="2"':'')+'><img src="'+APPLICATION_PATH+obj_point.image+'" width="120" border="0" align="left"></td>';
				if(obj_point.description!="")
					buff +='<td '+((obj_point.image=="")?'colspan="2"':'')+'>'+obj_point.description+'</td>';
			buff +='</tr>';
			if(obj_point.url!="" && obj_point.url!="http://")
				buff +='<tr><td colspan="2"><a href="'+obj_point.url+'" target="_blank">'+obj_point.url+'</a></td></tr>';
			if(obj_point.point_attach_01!="")
				buff +='<tr><td colspan="2"><a href="'+obj_point.point_attach_01+'" target="_docs"><img src="img/pdf.gif" align="absmiddle" border="0">Allegato 01</a></td></tr>';
			if(obj_point.point_attach_02!="")
				buff +='<tr><td colspan="2"><a href="'+obj_point.point_attach_02+'" target="_docs"><img src="img/pdf.gif" align="absmiddle" border="0">Allegato 02</a></td></tr>';
			if(obj_point.point_attach_03!="")
				buff +='<tr><td colspan="2"><a href="'+obj_point.point_attach_03+'" target="_docs"><img src="img/pdf.gif" align="absmiddle" border="0">Allegato 03</a></td></tr>';
			if(obj_point.point_attach_04!="")
				buff +='<tr><td colspan="2"><a href="'+obj_point.point_attach_04+'" target="_docs"><img src="img/pdf.gif" align="absmiddle" border="0">Allegato 04</a></td></tr>';
		buff +='</table>';
	buff +='</div>';
	
	return buff;
}


function MapPointsRedraw(){
	var bounds = map.getBounds();
	var sW = bounds.getSouthWest();
	var nE = bounds.getNorthEast();
	var minLat = sW.lat();
	var maxLat = nE.lat();
	var minLng = sW.lng();
	var maxLng = nE.lng();
	var curZoom = map.getZoom();
	
	map.clearOverlays();
	
	for(var i=0;i<points.length;i++){
		if(points[i].lat>=minLat && points[i].lat<=maxLat && points[i].lng>=minLng && points[i].lng<=maxLng && points[i].zoomMin<=curZoom && points[i].zoomMax>=curZoom){
			MarkerAdd(points[i])
		}
	}
}

function MarkerAdd(point){
	var obj_point = point;
	var point = new GLatLng(obj_point.lat,obj_point.lng);
	markerOptions = { icon:getIcon(obj_point.urlimage) };
	var marker = new GMarker(point, markerOptions);
	map.addOverlay(marker);
	var Info_contents = buildBaloon(obj_point);
	GEvent.addListener(marker, "click", function() {			
		marker.openInfoWindowHtml(Info_contents);
		document.getElementById('debug').value = Info_contents;
	});
}






function gotoPoint(lat, lng, zoomlevel, maptype){
	map.setCenter(new google.maps.LatLng(lat,lng), zoomlevel);  
	map.setMapType(maptype);
}

function evalMapType(obj_map_type){
			switch(obj_map_type){ 
				case G_NORMAL_MAP:{return "G_NORMAL_MAP";}
				case G_SATELLITE_MAP:{return "G_SATELLITE_MAP";}
				case G_HYBRID_MAP:{return "G_HYBRID_MAP";}
				case G_PHYSICAL_MAP:{return "G_PHYSICAL_MAP";}
				default:{return "G_NORMAL_MAP";}
			}
		}
		
function showAddress(address) {
		address+= " Italia";
	      if (geocoder) {
	        geocoder.getLatLng(
	          address,
	          function(point) {
	            if (!point) {
	              alert(address + "\nNon trovato");
	            } else {
		            map.setCenter(point);
	            }
	          }
	        );
	      }
	    }
		
var INIT_LAT = 45.8448252802557;
var INIT_LNG = 9.393310546875;
var INIT_ZOOM = 13;
	
function initialize() {    

	map = new google.maps.Map2(document.getElementById("map"));    
	geocoder = new GClientGeocoder();
	
	GEvent.addListener(map, "zoomend", MapPointsRedraw);
	GEvent.addListener(map, "moveend", MapPointsRedraw);

	map.setCenter(new google.maps.LatLng(INIT_LAT,INIT_LNG), INIT_ZOOM);  
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addMapType(G_PHYSICAL_MAP); 
	map.enableScrollWheelZoom();
	
	map.addOverlay(new GMarker(new GPoint(INIT_LAT,INIT_LNG)));
	
	baseIcon = new GIcon();
	baseIcon.iconSize = new GSize(32, 32);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);
}

function initialize_add() {    

	
	map = new google.maps.Map2(document.getElementById("map"));    
	geocoder = new GClientGeocoder();
	
	GEvent.addListener(map, "zoomend", function(oldLevel, newLevel) {setFormValue("zoomlevel", newLevel);});
	GEvent.addListener(map, "moveend", function() {  var center = map.getCenter(); setFormValue("viewlat", center.lat()); setFormValue("viewlong", center.lng()); });
	GEvent.addListener(map, "maptypechanged", function() { var map_type = map.getCurrentMapType(); setFormValue("point_maptype", evalMapType(map_type));  });

	map.setCenter(new google.maps.LatLng(INIT_LAT,INIT_LNG), INIT_ZOOM);  
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addMapType(G_PHYSICAL_MAP); 
	
	map.addOverlay(new GMarker(new GPoint(INIT_LAT,INIT_LNG)));
	setFormValue("viewlat", INIT_LAT);
	setFormValue("viewlong", INIT_LNG);
	setFormValue("zoomlevel", INIT_ZOOM);
	
	GEvent.addListener(map, "click", function(overlay, point) {
		map.clearOverlays();
		var icon = new GIcon();
		map.addOverlay(new GMarker(point));
		setFormValue("lat", point.lat());
		setFormValue("lng", point.lng());
	  });
	
}


