// Links headline in bubble
linkkiOtsikko = "Linkki";
//
function displayGmaps() {
	if (GBrowserIsCompatible()) {
		// Geocoding
		geo = new GClientGeocoder();
		
		// status codes
		var status=[];
		status[G_GEO_SUCCESS]            = "Success";
		status[G_GEO_MISSING_ADDRESS]    = "Missing Address";
		status[G_GEO_UNKNOWN_ADDRESS]    = "Unknown Address";
		status[G_GEO_UNAVAILABLE_ADDRESS]= "Unavailable Address";
		status[G_GEO_BAD_KEY]            = "Bad Key";
		status[G_GEO_TOO_MANY_QUERIES]   = "Too Many Queries";
		status[G_GEO_SERVER_ERROR]       = "Server Error"
	  
	  	// create google maps
    	map = new GMap2(document.getElementById("gmaps_div"));
		// set default map center
		map.setCenter(new GLatLng( 61, 24.966431), 2);
		
		map.addControl(new GSmallMapControl());
		map.enableContinuousZoom();
		map.enableDoubleClickZoom();
		//
		//overview
		var ovSize=new GSize(200, 150)
		overV=new GOverviewMapControl(ovSize);
		map.addControl(overV);
		var mini=overV.getOverviewMap();
		overV.hide();
		MapBounds = new GLatLngBounds();
		// run through addresses
		var searchTextLong		= document.getElementById("gmaps_osoite").value;
		var pointerTitleLong	= document.getElementById("gmaps_otsikko").value;
		var pointerIconLong		= document.getElementById("gmaps_toimialue").value;
		var pointerLinkLong		= document.getElementById("gmaps_linkki").value;
		if (searchTextLong){
			var searchTextArray		= searchTextLong.split("|");
			var pointerTitleArray	= pointerTitleLong.split("|");
			var pointerIconArray	= pointerIconLong.split("|");
			var pointerLinkArray	= pointerLinkLong.split("|");
			var jl = searchTextArray.length;
			for (var j=0; j<jl; j++){
				var searchText		= searchTextArray[j];	
				var pointerTitle	= pointerTitleArray[j];	
				var pointerIcon		= pointerIconArray[j];
				var pointerLink		= pointerLinkArray[j];
				showAddress(searchText, pointerTitle, pointerIcon, pointerLink);
			}
		}
	}
}
function createIW(name, pin, title, addr, lat, lng, linkStr){
	GEvent.addListener(pin, "click", function() {
		var closer = "";
		if (linkStr){
			closer += '<a href="'+linkStr+'" class="gmaps_maplink" target="ulkoinen_linkki" >'+linkkiOtsikko+'</a> | ';
		}
		closer += '<a class="gmaps_maplink" target="ajo_ohje" title="Ajo-ohje" href="http://www.google.fi/maps?source=uds&daddr='+escape(addr)+'+%40'+lat+'%2C'+lng+'&iwstate1=dir%3Ato" >Ajo-ohje</a>';
		pin.openInfoWindowHtml('<div class="gmaps_maptextarea"><div class="gmaps_title"><strong>'+title+"</strong></div>"+addr+"<br /><br />"+closer+"</div>");
	})
};

function maxzoom(lat, lng){
	map.closeInfoWindow();
	map.setCenter(new GLatLng( lat, lng), 15);
}

function fittoscreen(){
	map.closeInfoWindow();
	var center = MapBounds.getCenter();
	var zoomLevel = map.getBoundsZoomLevel(MapBounds);
	if (zoomLevel>1){
		map.setZoom(zoomLevel-1);
	}
	map.setCenter(center);
}
function showAddress(searchText,pointerTitle, pointerIcon, pointerLink ) {
			
	var tinyIcon = new GIcon(G_DEFAULT_ICON);
/*
tinyIcon.iconSize = new GSize(36, 56);
	tinyIcon.iconAnchor = new GPoint(18, 54);
	tinyIcon.infoWindowAnchor = new GPoint(25, 1);
	*/
	markerOptions = { icon:tinyIcon, clickable:true };
	var searchTxt = searchText;
	geo.getLocations(searchTxt, function (result){ 
		// show status code
		if (result.Status.code == G_GEO_SUCCESS) {
			// Loop through the results, placing markers
			var il = result.Placemark.length;
			
			// limit results only on one marker
			if (il>1){
				il = 1;
			}
			for (var i=0; i<il; i++) {
				// create empty array for temporary variable
				var dump = Array();
				dump.lat=result.Placemark[i].Point.coordinates[1];
				dump.lng=result.Placemark[i].Point.coordinates[0];
				dump.html=pointerTitle;
				dump.Accu = "";
				if(result.Placemark[i].AddressDetails){
					dump.Accu=result.Placemark[i].AddressDetails.Accuracy;
				}
				dump.precis=3*dump.html.split(",").length;
				var point=new GLatLng(dump.lat,dump.lng);
				dump.marker = new GMarker(point, {title:pointerTitle, icon:tinyIcon});
				map.addOverlay(dump.marker);
				dump.miniMarker=new GMarker(point,tinyIcon);
				var addr=result.Placemark[i].address;
				if(result.Placemark[i].AddressDetails){
					var iso=result.Placemark[i].AddressDetails.Country.CountryNameCode;
				}
				
				createIW(i+1,dump.marker,pointerTitle,addr, dump.lat, dump.lng, pointerLink);
				MapBounds.extend(point);
				var center = MapBounds.getCenter();
				var zoomLevel = map.getBoundsZoomLevel(MapBounds);
				if (zoomLevel>1){
					if (zoomLevel>16){
						zoomLevel = 16;
					}
					map.setZoom(zoomLevel-1);
				}
				map.setCenter(center);
			}
		}
	});
}

