// JavaScript Document


var map;
var __coordinates = new Array();
var geocoder;

function initMap(target, x, y, z) {
	map = new GMap2(document.getElementById(target));
	x = x == undefined ? 63.25341156651705 : x;
	y = y == undefined ? 26.4990234375 : y;	
	z = z == undefined ? 5 : z;

	
	map.setCenter(new GLatLng(x, y), z);
	map.setMapType(G_NORMAL_MAP);
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	
	geocoder = new GClientGeocoder();
  	geocoder.setBaseCountryCode("fi");
	
	if (__coordinates.length > 0) {
		for (var i=0; i<__coordinates.length; i++){
			addMapLocation(__coordinates[i].x, __coordinates[i].y, __coordinates[i].job);
		}
	}
}

function addInitCoordinates(coordinates)
{
	var coords = coordinates.split("|");
	for (var i=0; i<coords.length; i++) {	
		if (coords[i].length > 0) {
			var c = coords[i].split(",");
			__coordinates.push({x:c[0], y:c[1], job:"<strong>"+c[2] + "</strong>, " + c[3] + "<br/><a href="+c[4]+">Näytä tiedot</a>"});
		}
	}
		
}


function addMapLocation(x, y, job)
{
	
	if (x != undefined && y != undefined) {
		var center = new GLatLng(x,y);
		var pin = new GMarker(center);
		map.addOverlay(pin);	
		GEvent.addListener(pin, "click", function() {
			pin.openInfoWindowHtml(job);
		});
		
	}
}

function displayMap(x, y, addMarker)
{

	if (x != undefined && y != undefined) {
		
		map.setCenter(new GLatLng(x, y), 15);
		
		var center = new GLatLng(x,y);
		if (addMarker == undefined) {
			var pin = new GMarker(center);
			map.addOverlay(pin);		
		}
	}
}

function drivingDirections(to, resultdiv) 
{
  map.clearOverlays();

  var directions = new GDirections(map, document.getElementById(resultdiv)); 
  directions.load("from: "+to+" to: "+map.getCenter().toUrlValue(12));
  

}
function searchMap(addressField, responseField, zoom) 
{
	if (document.getElementById(addressField).value.length <2) {
		return false;
	}
	map.clearOverlays();
	
	if (addressField == "location") {
		document.getElementById("address").value = "";
	}
	var search;
	if (addressField == "location") {
		search = document.getElementById("location").value+ ", Finland";
	} else {
		search = document.getElementById(addressField).value +", Finland";	
	}
	geocoder.getLocations(search, 
						function (response) {
							if (!response || response.Status.code != 200) {
								alert("Haluamaasi osoitetta "+search+" ei valitettavasti löydy");
							} else {
								var place = response.Placemark[0];
								var point = new GLatLng(place.Point.coordinates[1],
													place.Point.coordinates[0]);
								var marker = new GMarker(point);
								map.addOverlay(marker);
								map.setCenter(point, zoom);
								document.getElementById("point").value = place.Point.coordinates[1] + "," +place.Point.coordinates[0];
								
								var city = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
								for (var i=0; i<document.getElementById('location').options.length; i++) {
									if (document.getElementById('location').options[i].value == city) {
										document.getElementById('location').options[i].selected = true;
									}
								}
							}											
						});
}
function addAddressToMap(response) 
{
	map.clearOverlays();
	if (!response || response.Status.code != 200) {
		alert("Haluamaasi osoitetta ei valitettavasti löydy");
	} else {
		var place = response.Placemark[0];
		var point = new GLatLng(place.Point.coordinates[1],
							place.Point.coordinates[0]);
		var marker = new GMarker(point);
		map.addOverlay(marker);
		map.setCenter(point, 15);
		
	}
}

function showLocation(address) 
{
  geocoder.getLocations(address, addAddressToMap);	
	
	
}

// findLocation() is used to enter the sample addresses into the form.
function findLocation(resultdiv, formfield) 
{

	drivingDirections(document.getElementById(formfield).value, resultdiv);
}
