// variabili per posizione altre informazioni
var locationhost = location.host;
//locationhost = 'public.bibionecom.ipertrade.com';

var toggleState = 0;
//var geoXml = new GGeoXml("http://" + locationhost + "/include/xml/mapsgoogle/Piste_ciclabili.kml"); 
var toggleStateInfo = 0;
//var geoXmlInfo = new GGeoXml("http://" + locationhost + "/include/xml/mapsgoogle/Info.kml"); 

var mgr

var baseIcon = new GIcon();
baseIcon.iconSize = new GSize(32, 32);
baseIcon.shadowSize = new GSize(56, 32);
baseIcon.iconAnchor = new GPoint(16, 32);
baseIcon.infoWindowAnchor = new GPoint(16, 0);

// recupera tutte le informazioni da un url
function getUrlMarker(url, tMap) {
	// definizione dell'icona di base
	baseIcon.iconSize = new GSize(32, 32);
	baseIcon.shadowSize = new GSize(56, 32);
	baseIcon.iconAnchor = new GPoint(16, 32);
	baseIcon.infoWindowAnchor = new GPoint(16, 0);
	var gicons = [];

	//definisco le icone possibili
	gicons["unit"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon28.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon28s.png");
	gicons["merchant"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon10.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon10s.png");

	mgr = new GMarkerManager(tMap);
	GDownloadUrl(url, function (data, responseCode) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		var batch = [];
		for (var i = 0; i < markers.length; i++) {
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			var urlhtml = markers[i].getAttribute("url");
			var icon = markers[i].getAttribute("icon");

			var marker = createMarkerURL(point, urlhtml, gicons[icon]);
			// icona letto
			if (icon === "merchant") {
				mgr.addMarker(marker, 1, 11);
			}
			batch.push(marker);
			//tMap.addOverlay(marker);
		}
		mgr.addMarkers(batch, 12);
		mgr.refresh();
	});
}

// recupera tutte le informazioni di un merchant
function getMerchantMarker(IDmerchant, tMap) {
	// definizione dell'icona di base
	baseIcon.iconSize = new GSize(32, 32);
	baseIcon.shadowSize = new GSize(56, 32);
	baseIcon.iconAnchor = new GPoint(16, 32);
	baseIcon.infoWindowAnchor = new GPoint(16, 0);
	var gicons = [];

	//definisco le icone possibili
	gicons["unit"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon28.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon28s.png");
	gicons["merchant"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon10.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon10s.png");

	mgr = new GMarkerManager(tMap);
	GDownloadUrl("/searchmapmerchantGoogle.aspx?idmerchant=" + IDmerchant, function (data, responseCode) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		var batch = [];
		for (var i = 0; i < markers.length; i++) {
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			var urlhtml = markers[i].getAttribute("url");
			var icon = markers[i].getAttribute("icon");

			var marker = createMarkerURL(point, urlhtml, gicons[icon]);
			// icona letto
			if (icon === "merchant") {
				mgr.addMarker(marker, 1, 11);
			}
			batch.push(marker);
			//tMap.addOverlay(marker);
		}
		mgr.addMarkers(batch, 12);
		mgr.refresh();
	});
}

// recupera tutte le informazioni di un merchant
function getTipologyMarker(IDtipologia, tMap) {
	// definizione dell'icona di base
	var gicons = [];

	//definisco le icone possibili
	gicons["unit"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon28.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon28s.png");
	gicons["merchant"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon10.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon10s.png");

	mgr = new GMarkerManager(tMap);
	GDownloadUrl("/searchmaptipologiagoogle.aspx?idtipologia=" + IDtipologia, function (data, responseCode) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		var batch = [];
		for (var i = 0; i < markers.length; i++) {
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			var urlhtml = markers[i].getAttribute("url");
			var icon = markers[i].getAttribute("icon");

			var marker = createMarkerURL(point, urlhtml, gicons[icon]);
			batch.push(marker);
		}
		mgr.addMarkers(batch, 12);
		mgr.refresh();
	});
}

// recupera tutte le informazioni di una tipologia
function getTipologyCustomMarker(IDtipologia, tMap) {
	// definizione dell'icona di base
	var gicons = [];

	//definisco le icone possibili
	gicons["unit"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon28.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon28s.png");
	gicons["merchant"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon10.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon10s.png");

	mgr = new GMarkerManager(tMap);
	//alert("/searchmaptipologiagoogleAlt.aspx?idtipologia="+IDtipologia)
	GDownloadUrl("/searchmaptipologiagoogleAlt.aspx?IDzona=0&idtipologia=" + IDtipologia, function (data, responseCode) {
		var xml = GXml.parse(data);
		if (xml.documentElement) {
			var markers = xml.documentElement.getElementsByTagName("marker");
			var batch = [];
			for (var i = 0; i < markers.length; i++) {
				var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
				var urlhtml = markers[i].getAttribute("url");
				var icon = markers[i].getAttribute("icon");

				//		 var marker = createMarkerURL(point,urlhtml,gicons[icon]);
				var marker = createMarkerURLGallery(point, urlhtml, new GIcon(G_DEFAULT_ICON));
				batch.push(marker);
			}
		}
		mgr.addMarkers(batch, 12);
		mgr.refresh();
	});
}
// recupera tutte le informazioni di una tipologia
function getUnitaCustomMarker(IDunita, tMap) {
	// definizione dell'icona di base
	var gicons = [];

	//definisco le icone possibili
	gicons["unit"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon28.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon28s.png");
	gicons["merchant"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon10.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon10s.png");

	mgr = new GMarkerManager(tMap);
	//alert("/searchmaptipologiagoogleAlt.aspx?idtipologia="+IDtipologia)
	GDownloadUrl("/searchmapUnitagoogleAlt.aspx?IDzona=0&IDunita=" + IDunita, function (data, responseCode) {
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		var batch = [];
		for (var i = 0; i < markers.length; i++) {
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			var urlhtml = markers[i].getAttribute("url");
			var icon = markers[i].getAttribute("icon");

			//		 var marker = createMarkerURL(point,urlhtml,gicons[icon]);
			var marker = createMarkerURLGallery(point, urlhtml, new GIcon(G_DEFAULT_ICON));
			batch.push(marker);
		}
		mgr.addMarkers(batch, 12);
		mgr.refresh();
	});
}



// recupera tutti i merchants di un determinato tipo
var gmarkers = [];

function getAllMerchantMarker(tMap) {

	// definizione dell'icona di base
	baseIcon.iconSize = new GSize(16, 16);
	baseIcon.shadowSize = new GSize(28, 16);
	baseIcon.iconAnchor = new GPoint(8, 16);
	baseIcon.infoWindowAnchor = new GPoint(8, 0);
	var gicons = [];

	//definisco le icone possibili
	// HOTEL 1
	gicons["type1"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal5/icon55.png", null, "http://maps.google.com/mapfiles/kml/pal5/icon55s.png");
	// AGENZIA
	gicons["type2"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal5/icon48.png", null, "http://maps.google.com/mapfiles/kml/pal5/icon48s.png");
	// CAMPING
	gicons["type3"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal5/icon58.png", null, "http://maps.google.com/mapfiles/kml/pal5/icon58s.png");
	// RISTORANTI
	gicons["type4"] = new GIcon(baseIcon, "http://maps.google.com/mapfiles/kml/pal2/icon40.png", null, "http://maps.google.com/mapfiles/kml/pal2/icon40s.png");
	GDownloadUrl("/searchMapOnlyMerchantGoogle.aspx", function (data, responseCode) {
		//	 mgr = new GMarkerManager(tMap);
		var xml = GXml.parse(data);
		var markers = xml.documentElement.getElementsByTagName("marker");
		var batch = [];
		for (var i = 0; i < markers.length; i++) {
			var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
			var urlhtml = markers[i].getAttribute("url");
			var icon = markers[i].getAttribute("icon");
			var category = markers[i].getAttribute("category");
			var marker = createMarkerURL(point, urlhtml, gicons[icon]);
			marker.mycategory = category;
			tMap.addOverlay(marker);
			//		 // icona letto
			//		if (icon==="merchant")
			//		{
			//		  mgr.addMarker(marker, 1,11);
			//		}
			gmarkers.push(marker);
		}
		//		mgr.addMarkers(gmarkers, 12);
		//mgr.refresh();
		hideall();
	});

	// test per evento
	GEvent.addListener(tMap, "zoomend", function () {
		//hideall();
		//alert("zoomato!")
	});


}

function createMarker(point, urlhtml, icon) {
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function () {
		marker.openInfoWindowHtml(urlhtml);
	});
	return marker;
}

function createMarkerURL(point, urlhtml, icon) {
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function () {
		var request = GXmlHttp.create();
		request.open("GET", urlhtml.replace("%26", "&"), true);
		request.onreadystatechange = function () {
			if (request.readyState == 4) {
				marker.openInfoWindowHtml('<div style="margin-right:10px;height:260px;width:310px;overflow:auto;">' + request.responseText + '</div>');
			}
		}
		request.send(null);
	});
	return marker;
}

function createMarkerURLGallery(point, urlhtml, icon) {
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, "click", function () {
		var request = GXmlHttp.create();
		request.open("GET", urlhtml.replace("%26", "&"), true);
		request.onreadystatechange = function () {
			if (request.readyState == 4) {
				marker.openInfoWindowHtml('<div style="margin-right:10px;height:260px;width:310px;overflow:auto;">' + request.responseText + '</div>');
				startGallery()
			}
		}
		request.send(null);
	});
	return marker;
}


function showotherdetails() {
	if (toggleState == 1) {
		map.closeInfoWindow();
		map.removeOverlay(geoXml);
		toggleState = 0;
	} else {
		map.addOverlay(geoXml);
		toggleState = 1;
	}
}

function showInfoDetails() {
	if (toggleStateInfo == 1) {
		map.closeInfoWindow();
		map.removeOverlay(geoXmlInfo);
		toggleStateInfo = 0;
	} else {
		map.addOverlay(geoXmlInfo);
		toggleStateInfo = 1;
	}
}
// == shows all markers of a particular category, and ensures the checkbox is checked ==
function showhide(category) {
	for (var i = 0; i < gmarkers.length; i++) {
		if (gmarkers[i].mycategory == category.value) {
			if (category.checked) {
				gmarkers[i].show();
			} else {
				gmarkers[i].hide();
				// == close the info window, in case its open on a marker that we just hid
				map.closeInfoWindow();
			}
		}
	}
}
// == shows all markers of a particular category, and ensures the checkbox is checked ==
function hideall() {
	for (var i = 0; i < gmarkers.length; i++) {
		gmarkers[i].hide();
		// == close the info window, in case its open on a marker that we just hid
		map.closeInfoWindow();
	}
}

function showdetailsmap(bottone) {
	if (bottone.id == "btnshow") {
		document.getElementById("btnshow").style.display = "none"
		document.getElementById("btnhide").style.display = ""
	} else {
		document.getElementById("btnshow").style.display = ""
		document.getElementById("btnhide").style.display = "none"
	}
	showInfoDetails();
}
function showotherdetailsmap(bottone) {
	if (bottone.id == "btnshow") {
		document.getElementById("btnshowotherdetails").style.display = "none"
		document.getElementById("btnhideotherdetails").style.display = ""
	} else {
		document.getElementById("btnshowotherdetails").style.display = ""
		document.getElementById("btnhideotherdetails").style.display = "none"
	}
	showotherdetails();
}

