//<![CDATA[
var map;
var marker;
var infoWindow;


var l_lat;
var l_lng;
var l_zoom;
var l_type;
var l_name;
var l_address;
var l_telefono;

var locationSelect;
var map_id;
var markers = [];


function load_map(l_lat, l_lng, l_zoom, l_type, l_name, l_address, l_telefono) {
   var latlng = new google.maps.LatLng(l_lat, l_lng); //Udine
    var myOptions = {
      backgroundColor: "#FFFFFF",
      zoom: l_zoom,			//zoom: 5=nazione / 9=regione / 15=via
      center: latlng,	// uso la variabile a cui ho associato latit. e longit.
      mapTypeId: google.maps.MapTypeId.ROADMAP,/*  ROADMAP / SATELLITE / HYBRID / TERRAIN */
      mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
    };

    	switch(l_type){
    		case 'SATELLITE':
	    		map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
	    	break;
    		case 'HYBRID':
	    		map.setMapTypeId(google.maps.MapTypeId.HYBRID);
	    	break;
    		case 'TERRAIN':
	    		map.setMapTypeId(google.maps.MapTypeId.TERRAIN);
	    	break;
    	}

    	map = new google.maps.Map(document.getElementById("map"), myOptions);
    	infoWindow = new google.maps.InfoWindow();

    	createMarker(latlng, l_name, l_address, l_telefono, "2");

}//end load_map



	function createMarker(latlng, name, address, telefono, icona) {

    	var image;
    	var html = "<div style='text-color:#000000'><b>" + name + "</b> <br/>" + address;
    	if(telefono != '') {
    		html = html + "<br/>Tel.: " + telefono;
    	}
    	html = html +"</div>"
/*
	switch(icona){
		case "2":
			image = new google.maps.MarkerImage('img_struttura/beachflag.png',
		    new google.maps.Size(20, 32),   // This marker is 20 pixels wide by 32 pixels tall.
		    new google.maps.Point(0,0),     // The origin for this image is 0,0.
		    new google.maps.Point(0, 32));  // The anchor for this image is the base of the flagpole at 0,32.
		 break;
    	default:
			image = new google.maps.MarkerImage('img_struttura/beachflag2.png',
		    new google.maps.Size(20, 32),   // This marker is 20 pixels wide by 32 pixels tall.
		    new google.maps.Point(0,0),     // The origin for this image is 0,0.
		    new google.maps.Point(0, 32));  // The anchor for this image is the base of the flagpole at 0,32.
    	break;
	}//end switch

    var shadow = new google.maps.MarkerImage('img_struttura/beachflag_shadow.png',
      new google.maps.Size(37, 32), // The shadow image is larger in the horizontal dimension
      new google.maps.Point(0,0),   // while the position and offset are the same as for the main image.
      new google.maps.Point(0, 32));
*/

    	var marker = new google.maps.Marker({
    		map: map,
    		position: latlng
    		/*icon: image,
        	shadow: shadow*/
    	});

    	google.maps.event.addListener(marker, 'click', function() {
    		infoWindow.setContent(html);
    		infoWindow.open(map, marker);
    	});

    }




/* ================================ */
/* == MAPPA CON TUTTE LE AZIENDE == */
/* ================================ */
function load_all_map(l_lat, l_lng){
	map = new google.maps.Map(document.getElementById("map"), {
		center: new google.maps.LatLng(l_lat, l_lng),
		zoom: 15,
		mapTypeId: 'roadmap',
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
	});
	infoWindow = new google.maps.InfoWindow();
	searchLocationsNear();
}

function searchLocationsNear() {
	var searchUrl = 'gmaps_xml.php';
	downloadUrl(searchUrl, function(data) {
		var xml = parseXml(data);
		var markerNodes = xml.documentElement.getElementsByTagName("marker");
		var bounds = new google.maps.LatLngBounds();
		if(markerNodes.length == 0) {
			alert('Nessuno in zona.\nProva ad estendere la tua ricerca.');
			return;
		}
		for (var i = 0; i < markerNodes.length; i++) {
			var name = markerNodes[i].getAttribute("name");
			var address = markerNodes[i].getAttribute("address");
			var telefono = markerNodes[i].getAttribute("telefono");
			var categoria = markerNodes[i].getAttribute("categoria");
			var distance = parseFloat(markerNodes[i].getAttribute("distance"));
			var latlng = new google.maps.LatLng(
			parseFloat(markerNodes[i].getAttribute("lat")),
			parseFloat(markerNodes[i].getAttribute("lng")));

			//createOption(name, distance, i);
			createMarker(latlng, name, address, telefono, categoria);
			bounds.extend(latlng);
		}
		map.fitBounds(bounds);

	});
}

function doNothing() {}

function downloadUrl(url, callback) {
	var request = window.ActiveXObject ?
	new ActiveXObject('Microsoft.XMLHTTP') :
	new XMLHttpRequest;

	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			request.onreadystatechange = doNothing;
			callback(request.responseText, request.status);
		}
	};

	request.open('GET', url, true);
	request.send(null);
}

function parseXml(str) {
	if (window.ActiveXObject) {
		var doc = new ActiveXObject('Microsoft.XMLDOM');
		doc.loadXML(str);
		return doc;
	} else if (window.DOMParser) {
		return (new DOMParser).parseFromString(str, 'text/xml');
	}
}
