/* 
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
var infowindowtxt; //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(multi,address,pointmanlt,pointmanlg,clt,clg,zoom,pointinfo,idmappa,zoomtool,typetool,maptype,descrizioneon,pointlink) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById(idmappa));//inizializzo la mappa
		//centro della mappa
		pointc = new GLatLng(clt, clg);
		map.setCenter(pointc, zoom);
		//controlli zoom + spostamento
		if (zoomtool == 1){
			map.addControl(new GSmallMapControl()); //aggiuge controlli di zoom e pan
		}
		//controlli tipo di mappa
		if (typetool == 1) {
			map.addMapType(G_PHYSICAL_MAP);
			map.addControl(new GHierarchicalMapTypeControl()); //aggiunge la possibilità di cambiare il tipo di mappa         
		}
		map.setMapType(maptype); // attiva 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(pointmanlt.length > 0 &&  pointmanlg.length > 0) { //puntamento manuale, devono essere difinite le coordinate per uso manuale
			//centro della mappa sul multiplo
			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);
				
			}
			else {
				point = new GLatLng(clt, clg);
			} 
			// risetto il centro della mappa
			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);
				markeri = createMarker(point, i, pointinfo, descrizioneon);
				map.addOverlay(markeri);
				if (multi == 0 && descrizioneon[i] == 1){
					markeri.openInfoWindowHtml(pointinfo[i]);
				}
			}
		}
	}
}

function createMarker(point, number, pointinfo, descrizioneon) {
	var markeri = new GMarker(point);
	GEvent.addListener(markeri, "click", function() {
	var infotxt = pointinfo[number]; // + '<br />' + pointlink[number]; da usare per iniettare link all'interno
	if (descrizioneon[number] == 1) {
		markeri.openInfoWindowHtml(infotxt);
	}
	});
  return markeri;
}

