var geocoder = new GClientGeocoder();

function showAddress(address) {
	if (GBrowserIsCompatible()) {
  	var map = new GMap2($('GmapItem'));
		geocoder.getLatLng(
			address[0].indirizzo,
			function(point) {
				if (!point) {
					//alert(address[0].indirizzo, + " non trovato");
				} else {
					var marker = new GMarker(point);
					GEvent.addListener(marker, "click", function() {
						var myHtml = '<b>' + address[0].titolo + '</b><br/>' + address[0].indirizzo;
						map.openInfoWindowHtml(point, myHtml);
 						});
					map.addOverlay(marker);						
				}
			} );
		map.addControl(new GSmallMapControl());
		map.setCenter(new GLatLng(45.055046, 7.68028), 15);
	}
}

function showAddresses(addresses) {
	if (GBrowserIsCompatible()) {
  	var geocoder = new GClientGeocoder();
  	var map = new GMap2($('GmapTerr'));

	  addresses.each( function (addr) {
			geocoder.getLatLng(
				addr.indirizzo,
				function (point) {
					if (!point) {
						//alert(addr.indirizzo, + " non trovato");
					} else {
						var marker = new GMarker(point);
						GEvent.addListener(marker, "click", function() {
							var myHtml = '<b><a href="' + addr.url + '">' + addr.titolo + '</a></b><br/>' + addr.indirizzo;
							map.openInfoWindowHtml(point, myHtml);
 						 });
						map.addOverlay(marker);
					}
				} );
			} );
    map.addControl(new GSmallMapControl());
		map.setCenter(new GLatLng(45.055046, 7.68028), 15);
	}
}

function getAddressAjax(id) {
	var data = $H({
		'tipo': 'territorio',
		'itinerario': 1,
		'action': 'getIndirizzo',
		'id': id
	}).toQueryString();
	new Ajax.Request('ajaxIndirizzi.php', {
		method: 'get',
		parameters: data,
		onSuccess: function(transport) {
			showAddress(eval(transport.responseText));
		}
	});
}

function getAddressesAjax(itinerario) {
	var data = $H({
		'tipo': 'territorio',
		'itinerario': itinerario,
		'action': 'getIndirizzi'
	}).toQueryString();
	new Ajax.Request('ajaxIndirizzi.php', {
		method: 'get',
		parameters: data,
		onSuccess: function(transport) {
			showAddresses(eval(transport.responseText));
		}
	});
}

function registerEvents() {
	var mappaItem = $('GmapItem') || '';
	var mappaTerr = $('GmapTerr') || '';
	if (mappaItem) {
		getAddressAjax(mappaItem.className);
	} else if (mappaTerr) {
		getAddressesAjax(mappaTerr.className);
	}
	
}

Event.observe(window, 'load', registerEvents);
