/* 
Netbe - Internet Solutions
Tutti i diritti riservati
Api vers. 2.0
*/

var map; //nome dell'oggetto
var geocoder; //oggetto per recuperare coordinate da indirizzo
var marker; //oggetto puntatore

// eventi di attivazione dell'applicazione
window.onload = load; //funzione di attivazione
window.unload = GUnload; //scarica le librerie sull'uscita per evitare la confusione del browser in seguito a troppe chiamate ajax

function load() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));//inizializzo la mappa
		map.addControl(new GSmallMapControl()); //aggiuge controlli di zoom e pan
		map.addControl(new GMapTypeControl()); //aggiunge la possibilità di cambiare il tipo di mappa         
		//geocoder da indirizzo a latitudine e longitudine
		if(address != "") {
			geocoder = new GClientGeocoder();
			geocoder.getLatLng(address, addpointmarker);//trova le coordinate dell'indirizzo chiamando la funzione addpointmarker
		 }
		else if(multi == 1) {
			//aggiungo il massimo  e il minimo agli array
			Array.prototype.max = function () {
			if (this.length == 0) return undefined;
			var n = Number(this[0]);
			for (var i=1; i<this.length; i++) {n = Math.max(n, this[i])};
			return n;
			}
			Array.prototype.min = function () {
			if (this.length == 0) return undefined;
			var n = Number(this[0]);
			for (var i=1; i<this.length; i++) {n = Math.min(n, this[i])};
			return n;
			}
			//genero il punto mediano
			var centerlt = (pointmanlt.max() + pointmanlt.min())/2;
			var centerlg = (pointmanlg.max() + pointmanlg.min())/2;
			point = new GLatLng(centerlt, centerlg);
			map.setCenter(point, zoom);
			//genero i punti sulla mappa
			for (i = 0; i < pointmanlt.length ; i++) {
				point = new GLatLng(pointmanlt[i], pointmanlg[i]);
				marker = new GMarker(point);
				map.addOverlay(createMarker(point, i));
			}
		}
		else if(pointmanlt > 0 &&  pointmanlg > 0) { //puntamento manuale, devono essere difinite le coordinate per uso manuale
			point = new GLatLng(pointmanlt, pointmanlg);
			addpointmarker(point);
		 } 
	}
}

function addpointmarker(point) {
	if (!point) {
		alert(address + " non trovato"); //messaggio di avviso indirizzo non trovato
	} else {
		map.setCenter(point, zoom);
		//marker = new GMarker(point,{draggable: true}); //Marker draggabile
		marker = new GMarker(point);
		map.addOverlay(marker);
		//marker.openInfoWindowHtml(infowindowtxt);
		GEvent.addListener(marker, "click", clickmanager); //Evento scatenato sul click sul marker
		//GEvent.addListener(marker, "dragstart", function() { map.closeInfoWindow();});//Evento scatenato allo start del drag se marker draggabile
		//GEvent.addListener(marker, "dragend", function() { /*alert(marker.getPoint())*/ document.getElementById("coord").innerHTML = marker.getPoint() });//Evento scatenato sull'end del drag se marker draggabile
	}
}

function clickmanager() {
		marker.openInfoWindowHtml(infowindowtxt);
}

function createMarker(point, number) {
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
	var infotxt = '<strong>' + pointinfo[number] + '</strong><br /><br />' + pointlink[number];
	marker.openInfoWindowHtml(infotxt);
	});
  return marker;
}
