var geocoder = null;
var map = null;
var mgr = null;
var baseIcon = null;
	
function loadGoogleMap(sitelang) {

	//lang variables (Sara)
	if (sitelang == "fi") {
		var LANG_CUSTOMERSERVICE = "Asiakaspalvelu";
		var BROWSER_SUPPORT= "Käyttämäsi selain ei ole yhteensopiva Google Mapsin kanssa.";
		var LOCATION_NOT_FOUND ="Antamaasi lähtöosoitetta ei löytynyt. Osoite voi olla suhteellisen uusi tai virheellinen";
		var ROUTE_NOT_FOUND = "Reittiä ei löytynyt.";
    }
    else {
		var LANG_CUSTOMERSERVICE = "Customer service";
		var BROWSER_SUPPORT= "Your browser does not support Google Maps.";
		var LOCATION_NOT_FOUND ="No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.";
		var ROUTE_NOT_FOUND = "The GDirections object could not compute directions between the points mentioned in the query. This is usually because there is no route available between the two points, or because we do not have data for routing in that region.";
	}
    
    
    
	if (!GBrowserIsCompatible()) {
		document.getElementById("map").innerHTML = '<center><h3>' + BROWSER_SUPPORT + '</h3></center>';
	}
	else if(map == null) {
		log('Creating map...');		
		
		// mapOptions = { mapTypes: [ G_SATELLITE_MAP ] };
		// var mapOptions = {  };
		map = new GMap2(document.getElementById("map"), { });

		map.addControl(new ReallyZoomControl());
		// map.addControl(new ReallyMapTypeControl());
		map.enableDoubleClickZoom();

		//map.enableScrollWheelZoom();
		//map.enableContinuousZoom();

		map.setCenter(new GLatLng(60.1986119, 24.9258661), 11);

		log('Creating geocoder...');
		geocoder = new GClientGeocoder();
		geocoder.setBaseCountryCode('FI');

		log('Creating baseicon...');
		baseIcon =	new GIcon();
		baseIcon.image = "http://savrahoitus-fe.toimivanet.com/style/images/gmap/img_gm_marker.png"
		baseIcon.iconSize = new GSize(19, 19);
		// baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
		// baseIcon.shadowSize = new GSize(37, 34);
		baseIcon.iconAnchor = new GPoint(9, 34);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);


		var mgrOptions = { borderPadding: 50, maxZoom: 17, trackMarkers: false };

		log('Creating marker manager...');
		mgr = new GMarkerManager(map, mgrOptions);

		log('Getting markers...');
		GDownloadUrl("/markers.php", function(data, responseCode) {
			if(responseCode != 200) {
				log('Error while trying to get markers. Server returned: ' + responseCode);
				return;
			}

			log('Parsing XML...');
			var xml = GXml.parse(data);
	
			var locationSelect = document.getElementById('location');
			if(locationSelect != null) {
				log('Enumerating areas...');
				var areas = xml.documentElement.getElementsByTagName("area");
				for (var i = 0; i < areas.length; i++) {
					/*
					var marker = createAreaMarker(
						areas[i].getAttribute("name"),
						parseFloat(areas[i].getAttribute("lat")),
						parseFloat(areas[i].getAttribute("lon")));
	
					mgr.addMarker(marker, 3, 8);
					*/
					
					locationSelect.options[locationSelect.length] = new Option(areas[i].getAttribute("name"), areas[i].getAttribute("lat") + ',' + areas[i].getAttribute("lon"));
				}
			}

			log('Enumerating markers...');
			var markers = xml.documentElement.getElementsByTagName("marker");
			for (var i = 0; i < markers.length; i++) {
				var marker = createPlaceMarker(markers[i]);
				mgr.addMarker(marker, 9, 17);
			}

			log('Markers ready.');

			mgr.refresh();

			log('MarkerManager refreshed.');
		});
		
	}
}

function createPlaceMarker(node) {
	var lat = parseFloat(node.getAttribute("lat"));
	var lon = parseFloat(node.getAttribute("lon"));
	var point = new GLatLng(lat, lon);
	var marker = new GMarker(point, { icon: baseIcon });				
	var street = node.getAttribute("street");
	var postarea = node.getAttribute("postarea");
	var postcode = node.getAttribute("postcode");
	var area = node.getAttribute("area");

	GEvent.addListener(marker, "click", function() {
		var windowOptions = { maxWidth: 517 };
		marker.openInfoWindowHtml(GXml.value(node), windowOptions);
	});

	return marker;
}

function createAreaMarker(area, lat, lon){
	log('Creating area marker: ' + area + ' at ' + lat + ', ' + lon);
	var point = new GLatLng(lat,lon);
	var markerOptions = { icon:LabeledMarker.ICON, labelText:area, labelClass:'labelArea', labelOffset:new GSize(-20,-10) };
	var marker = new LabeledMarker(point, markerOptions);
	
	GEvent.addListener(marker, "click", function() {
		map.setCenter(point, 11);
	});
	
	return marker;
}

function showLocation(latlon) {
	var latlonv = latlon.split(',');
	map.setCenter(new GLatLng(latlonv[0], latlonv[1]));
}

function log(msg) {
	// GLog.write(msg);
}

