var map = null;
var bounds = null;
var geocoder;
var showPointAddressArray = new Array();
var showPointAddressArrayRiviera = new Array();
var numGeocoded = 0;
var numGeocodedRiviera = 0;
	
var baseIconSmall = new GIcon();
baseIconSmall.shadow = pathHttp + "immagini/shadow_small.png";
baseIconSmall.iconSize = new GSize(28, 35);
baseIconSmall.shadowSize = new GSize(40, 35);
baseIconSmall.iconAnchor = new GPoint(14, 35);
baseIconSmall.infoWindowAnchor = new GPoint(14, 0);
baseIconSmall.infoShadowAnchor = new GPoint(14, 0);

var baseIconLarge = new GIcon();
baseIconLarge.shadow = pathHttp + "immagini/shadow_large.png";
baseIconLarge.iconSize = new GSize(46, 57);
baseIconLarge.shadowSize = new GSize(60, 57);
baseIconLarge.iconAnchor = new GPoint(23, 57);
baseIconLarge.infoWindowAnchor = new GPoint(23, 0);
baseIconLarge.infoShadowAnchor = new GPoint(23, 0);

//precaricamento immagini
pic1 = new Image(28, 35); 
pic1.src = pathHttp + "immagini/icona_1_stelle.png"; 
pic2 = new Image(28, 35); 
pic2.src = pathHttp + "immagini/icona_2_stelle.png"; 
pic3 = new Image(28, 35); 
pic3.src = pathHttp + "immagini/icona_3_stelle.png";   
pic4 = new Image(28, 35); 
pic4.src = pathHttp + "immagini/icona_4_stelle.png";  
pic5 = new Image(28, 35); 
pic5.src = pathHttp + "immagini/icona_5_stelle.png"; 
pic6 = new Image(28, 35); 
pic6.src = pathHttp + "immagini/icona_6_stelle.png"; 
pic7 = new Image(46, 57); 
pic7.src = pathHttp + "immagini/icona_1_stelle_large.png"; 
pic8 = new Image(46, 57); 
pic8.src = pathHttp + "immagini/icona_2_stelle_large.png"; 
pic9 = new Image(46, 57); 
pic9.src = pathHttp + "immagini/icona_3_stelle_large.png";   
pic10 = new Image(46, 57); 
pic10.src = pathHttp + "immagini/icona_4_stelle_large.png";  
pic11 = new Image(46, 57); 
pic11.src = pathHttp + "immagini/icona_5_stelle_large.png"; 
pic12 = new Image(46, 57); 
pic12.src = pathHttp + "immagini/icona_6_stelle_large.png";
pic13 = new Image(28, 35); 
pic13.src = pathHttp + "immagini/icona_residence.png"; 
pic14 = new Image(46, 57); 
pic14.src = pathHttp + "immagini/icona_residence_large.png"; 
pic15 = new Image(28, 35); 
pic15.src = pathHttp + "immagini/icona_bed_breakfast.png"; 
pic16 = new Image(46, 57); 
pic16.src = pathHttp + "immagini/icona_bed_breakfast_large.png"; 
//fine precaricamento immagini

var icona1Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_1_stelle.png", null, pathHttp + "immagini/shadow_small.png");
var icona2Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_2_stelle.png", null, pathHttp + "immagini/shadow_small.png");
var icona3Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_3_stelle.png", null, pathHttp + "immagini/shadow_small.png");
var icona4Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_4_stelle.png", null, pathHttp + "immagini/shadow_small.png");
var icona5Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_5_stelle.png", null, pathHttp + "immagini/shadow_small.png");
var icona6Stelle = new GIcon(baseIconSmall, pathHttp + "immagini/icona_6_stelle.png", null, pathHttp + "immagini/shadow_small.png");
var iconaResidence = new GIcon(baseIconSmall, pathHttp + "immagini/icona_residence.png", null, pathHttp + "immagini/shadow_small.png");
var iconaBedBreakfast = new GIcon(baseIconSmall, pathHttp + "immagini/icona_bed_breakfast.png", null, pathHttp + "immagini/shadow_small.png");
var icona1StelleLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_1_stelle_large.png", null, pathHttp + "immagini/shadow_large.png");
var icona2StelleLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_2_stelle_large.png", null, pathHttp + "immagini/shadow_large.png");
var icona3StelleLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_3_stelle_large.png", null, pathHttp + "immagini/shadow_large.png");
var icona4StelleLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_4_stelle_large.png", null, pathHttp + "immagini/shadow_large.png");
var icona5StelleLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_5_stelle_large.png", null, pathHttp + "immagini/shadow_large.png");
var icona6StelleLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_6_stelle_large.png", null, pathHttp + "immagini/shadow_large.png");
var iconaResidenceLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_residence_large.png", null, pathHttp + "immagini/shadow_large.png");
var iconaBedBreakfastLarge = new GIcon(baseIconLarge, pathHttp + "immagini/icona_bed_breakfast_large.png", null, pathHttp + "immagini/shadow_large.png");

function showStructure(latitudine, longitudine, icona)
{
	divMappa = $('map');
	var dimensions = divMappa.getDimensions();
	var point = new GLatLng(latitudine, longitudine);
	
	map = new GMap2(divMappa, { size: new GSize(dimensions.width, dimensions.height) } );
	map.setMapType(G_NORMAL_MAP);
	map.setCenter(point, 15);
	map.addControl(new GSmallZoomControl());
	map.addControl(new GMapTypeControl());
	
	markerOptions = { icon: icona };
	var marker = new GMarker(point, markerOptions);
	map.addOverlay(marker);								 
}

function showStructureAddress(indirizzo, icona)
{
	divMappa = $('map');
	var dimensions = divMappa.getDimensions();
	geocoder = new GClientGeocoder();
	
	map = new GMap2(divMappa, { size: new GSize(dimensions.width, dimensions.height) } );
	map.setMapType(G_NORMAL_MAP);
	geocoder.getLatLng(indirizzo, function(point) 
								  {
									if(!point) 
									{
										divMappa.innerHTML = '<img src="' + pathHttp + '/immagini/img_mappa_non_disponibile.png" />';
									} 
									else 
									{
										map.setCenter(point, 15);
										map.addControl(new GSmallZoomControl());
										map.addControl(new GMapTypeControl());
													
										markerOptions = { icon: icona };
										var marker = new GMarker(point, markerOptions);
										map.addOverlay(marker);
									}
								  }
						);
}

function showAddress(address) 
{
	divMappa = document.getElementById('map');
	map = new GMap2(divMappa, { size: new GSize(555, 350) } );
	map.setMapType(G_NORMAL_MAP);
	geocoder = new GClientGeocoder();
	
	geocoder.getLatLng(address, function(point) 
								{
									 if(!point) 
									 {
										 alert(address + ' not found!');
										 divMappa.innerHTML = '<img src="' + pathHttp + '/immagini/img_mappa_non_disponibile.png" />';
									 } 
									 else 
									 {
										 map.setCenter(point, 14);
										 map.addControl(new GLargeMapControl());
										 map.addControl(new GMapTypeControl());
										 map.addControl(new GScaleControl());
										 //map.enableScrollWheelZoom();
										 bounds = map.getBounds();
									 }
								 }
						);
}

function showPoint(latitudine, longitudine, icona, testo, infoOpen) 
{
	var point = new GLatLng(latitudine, longitudine);

	markerOptions = { icon: icona };
		
	var marker = new GMarker(point, markerOptions);
	
	if(infoOpen)
	{
		setTimeout(function() { map.addOverlay(marker); 
								marker.openInfoWindowHtml(testo);
								if(bounds)
								{
									bounds.extend(point);
									var zoom = map.getBoundsZoomLevel(bounds); 
									var center = bounds.getCenter(); 
									map.setCenter(center); 
									map.setZoom(zoom);
								} }, 1000);
	}
	else
	{
		setTimeout(function() { map.addOverlay(marker); 
								if(bounds)
								{			   
									bounds.extend(point);
									var zoom = map.getBoundsZoomLevel(bounds); 
									var center = bounds.getCenter(); 
									map.setCenter(center); 
									map.setZoom(zoom);
								} }, 1000);
		GEvent.addListener(marker, "click", function() 
										{
											marker.openInfoWindowHtml(testo);
										});
	}
}

function geocodeAll() 
{
	if (numGeocoded < showPointAddressArray.length) 
	{
		geocoder.getLocations(showPointAddressArray[numGeocoded].address, function(response)
																		  {
																				var delay = 0;
																				if (response.Status.code == 620) 
																				{
																					// Too fast, try again, with a small pause
																				   	delay = 500;
																				}
																				else 
																				 {
																				   if (response.Status.code == 200) 
																				   {
																					 // Success; do something with the address.
																					 place = response.Placemark[0];
																					 point = new GLatLng(place.Point.coordinates[1],
																										 place.Point.coordinates[0]);
																					 markerOptions = { icon: showPointAddressArray[numGeocoded].icon };
																					 
																					 var marker = new GMarker(point, markerOptions);
																					 if(showPointAddressArray[numGeocoded].infoOpen)
																					 {
																						 map.addOverlay(marker); 
																						 var variable = numGeocoded;
																						 marker.openInfoWindowHtml(showPointAddressArray[variable].content);
																						 if(bounds)
																						 {
																							 bounds.extend(point);
																							 var zoom = map.getBoundsZoomLevel(bounds); 
																							 var center = bounds.getCenter(); 
																							 map.setCenter(center); 
																							 map.setZoom(zoom);
																						 }
																					 }
																					 else
																					 {
																							 map.addOverlay(marker);
																							 var variable = numGeocoded;
																							 GEvent.addListener(marker, "click", function() 
																																 {
																																	marker.openInfoWindowHtml(showPointAddressArray[variable].content);
																																 });
																							 if(bounds)
																							 {
																								 bounds.extend(point);
																								 var zoom = map.getBoundsZoomLevel(bounds); 
																								 var center = bounds.getCenter(); 
																								 map.setCenter(center); 
																								 map.setZoom(zoom);
																							 }
																					}
																				   }
																				   // Move onto the next address; this skips bad addresses, too.
																				   numGeocoded += 1;
																				 }
																				 window.setTimeout(geocodeAll, delay);
																		  });
    }
}

function geocodeAllRiviera() 
{
	if (numGeocodedRiviera < showPointAddressArrayRiviera.length) 
	{
		geocoder.getLocations(showPointAddressArrayRiviera[numGeocodedRiviera].address, function(response)
																		  {
																				var delay = 0;
																				if (response.Status.code == 620) 
																				{
																					// Too fast, try again, with a small pause
																				   	delay = 500;
																				}
																				else 
																				 {
																				   if (response.Status.code == 200) 
																				   {
																					 // Success; do something with the address.
																					 place = response.Placemark[0];
																					 point = new GLatLng(place.Point.coordinates[1],
																										 place.Point.coordinates[0]);
																					 markerOptions = { icon: showPointAddressArrayRiviera[numGeocodedRiviera].icon };
																					 
																					 var marker = new GMarker(point, markerOptions);
																					 if(showPointAddressArrayRiviera[numGeocodedRiviera].infoOpen)
																					 {
																						 map.addOverlay(marker); 
																						 var variable = numGeocodedRiviera;
																						 marker.openInfoWindowHtml(showPointAddressArrayRiviera[variable].content);
																						 if(bounds)
																						 {
																							 bounds.extend(point);
																							 var zoom = map.getBoundsZoomLevel(bounds); 
																							 var center = bounds.getCenter(); 
																							 map.setCenter(center); 
																							 map.setZoom(zoom);
																						 }
																					 }
																					 else
																					 {
																							 map.addOverlay(marker);
																							 var variable = numGeocodedRiviera;
																							 GEvent.addListener(marker, "click", function() 
																																 {
																																	marker.openInfoWindowHtml(showPointAddressArray[variable].content);
																																 });
																							 if(bounds)
																							 {
																								 bounds.extend(point);
																								 var zoom = map.getBoundsZoomLevel(bounds); 
																								 var center = bounds.getCenter(); 
																								 map.setCenter(center); 
																								 map.setZoom(zoom);
																							 }
																					}
																				   }
																				   // Move onto the next address; this skips bad addresses, too.
																				   numGeocodedRiviera += 1;
																				 }
																				 window.setTimeout(geocodeAllRiviera, delay);
																		  });
    }
}

function scrollMap(action)
{
	switch(action)
	{
		case 'scrollDown':
			$('map').style.display = 'block';
			var button = '<a href="#" onclick="scrollMap(\'scrollUp\'); return false;" title="' + testoChiusura + '"><img src="' + pathHttp + 'immagini/scroll_up.png" alt="' + testoChiusura + '" /></a><a href="#" onclick="scrollMap(\'scrollUp\'); return false;" title="' + testoChiusura + '">' + testoMappa + '</a>';
			$('map_command').innerHTML = button;
		break;
		case 'scrollUp':
			$('map').style.display = 'none';
			var button = '<a href="#" onclick="scrollMap(\'scrollDown\'); return false;" title="' + testoApertura + '"><img src="' + pathHttp + 'immagini/scroll_down.png" alt="' + testoApertura + '" /></a><a href="#" onclick="scrollMap(\'scrollDown\'); return false;" title="' + testoApertura + '">' + testoMappa + '</a>';
			$('map_command').innerHTML = button;
		break;
	}
}