﻿/*******************************************************************************
 * Javascript für twGmap02MarkerUndInfo
 ******************************************************************************/

var elementId = "map_canvas";  // muss im html an ein <div> als id vergeben werden
var lat       = "50.087241";  // Breitengrad (Latitude) z.B: 51.041
var lon       = "8.242868";  // Längengrad (Longitude) z.B: 13.748
var zoom      = 17;         // einen Wert von 1 bis ca 17 (nicht in "" setzen)
var map;
var gdir;
var geocoder = null;
var addressMarker;
var tmpMap;

/**
 * Prüft auf kompatiblen Browser und vorhandene Variablen und ruft die
 * Funktion auf, die die GoogleMap erstellt.
 */
function twGmapLoad() {
	if (GBrowserIsCompatible()) {
		if (!document.getElementById(elementId)) {
			alert("Fehler: das Element mit der id "+ elementId+ " konnte nicht auf dieser Webseite gefunden werden!");
			return false;
		} else {
			if (lat=="" || isNaN(lat)) {
				lat = "50.08729";
				alert("Fehler: Der Breitengrad(lat) wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
			}
			if (lon=="" || isNaN(lon)) {
				lon = "8.242768";
				alert("Fehler: Der Längengrad(lon) wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
			}
			if (typeof zoom == "undefined") {
				zoom = 3;
				alert("Fehler: Die Zoomstufe wurde im Skript nicht korrekt eingetragen!\nEin Defaultwert wird deshalb benutzt!");
			}
			machTwGmap(elementId, lat, lon, zoom);
		}
	}
}

/**
 * Erstellt die GoogleMap in dem <div>-Bereich mit der übergebenen id
 * @param {Object} id   -im div-Bereich mit dieser id wird die Map dargestellt
 * @param {Object} lat  -Breitengrad 
 * @param {Object} lon  -Längengrad
 * @param {Object} zoom -Zoomstufe 1 bis 17 (ganze Welt bis kleiner Ausschnitt)
 */
function machTwGmap(id, lat, lon, zoom) {
	// die Map (für das div mit der id="...")
	var map = new GMap2(document.getElementById(id));
	tmpMap = map;
	// mit Zoom (auch noch: GSmallMapControl, GLargeMapControl, GSmallZoomControl, GScaleControl)
	map.addControl(new GLargeMapControl());
	// mit Typ-Auswahl (auch noch: GMapTypeControl, GHierarchicalMapTypeControl, GOverviewMapControl)
	map.addControl(new GMapTypeControl());
	// ((Breitengrad, Längengrad), Zoomstufe, G_NORMAL_MAP/G_SATELLITE_MAP/G_HYBRID_MAP)
	map.setCenter(new GLatLng(lat, lon), zoom, G_NORMAL_MAP);
	
	// Marker setzen mit eigener Marker-Funktion
	map = setTwMarkers(map);
	
	        gdir = new GDirections(map, document.getElementById("directions"));
        GEvent.addListener(gdir, "load", onGDirectionsLoad);
        GEvent.addListener(gdir, "error", handleErrors);
		map.enableScrollWheelZoom();
}


  
    function setDirections(fromAddress, toAddress, locale) {
	  gdir.load("from: " + fromAddress + " to: " + toAddress,
                { "locale": locale });
    }

    function handleErrors(){
	   if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	     alert("Die von Ihnen angegebene Adresse konnte nicht gefunden werden. Entweder ist die Adresse zu neu oder es handelt sich um einen Eingabefehler.\nError code: " + gdir.getStatus().code);
	   else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
	     alert("Die Geocodierung für die angegebene Adresse konnte nicht durchgeführt werden.\n Error code: " + gdir.getStatus().code);
	   
	   else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	     alert("Es wurde keine Adresse angegeben.\n Error code: " + gdir.getStatus().code);

	//   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
	//     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
	     
	   else if (gdir.getStatus().code == G_GEO_BAD_KEY)
	     alert("Der angegebene API-Schlüssel ist fehlerhaft oder stimmt nicht mit der Domain überein. \n Error code: " + gdir.getStatus().code);

	   else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
	     alert("Ihre Anfrage konnte leider nicht bearbeitet werden.\n Error code: " + gdir.getStatus().code);
	    
	   else alert("Ein unbekannter Fehler ist aufgetreten.");
	   
	}
	
		function onGDirectionsLoad(){ 
          // Use this function to access information about the latest load()
          // results.
			
          // e.g.
	  // document.getElementById("getStatus").innerHTML = gdir.getStatus().code;
	  // and yada yada yada...
	}
	
var switch_direction_2 = 0;
var switch_direction_1 = 0;

var from_ad = "Von: Ihre Strasse, Ort";
var to_ad = "Nach: Ihre Strasse, Ort";
	
function blubb() {
	var dummy3 = $('#fromAddress').val();
	
	if(dummy3 == from_ad) {
		$('#fromAddress').val(to_ad);
	} else if(dummy3 == to_ad){
		$('#fromAddress').val(from_ad);
	}

	if(switch_direction_1==0){
		switch_direction_1 = 1;
	} else {
		switch_direction_1 = 0;
	}
}
  
function set1(form) {
	$("div#directions").html("");
	resize_map();
	if(switch_direction_1==0){
		setDirections(form.from.value, form.to.value, 'de_DE');
	} else {
		setDirections(form.to.value, form.from.value, 'de_DE');
	}
	
	
}

function resize_map(){
	$("div#map_canvas").css({width: '100%'});
	machTwGmap(elementId, lat, lon, zoom);
	$("div#directions").removeClass("hidden");
		
	var infoWindow = tmpMap.closeInfoWindow();
	
}

function setTwMarkers(map) {

  // Erstellt ein Basissymbol für alle Markierungen, das den Schatten, die Symbolabmessungen usw. angibt
  var icon = new GIcon();
  icon.image = "../images/buttons/art.png";
  icon.shadow = "images/icon-shadow.png";
  icon.shadowSize = new GSize(44.0, 39.0);
  icon.iconAnchor = new GPoint(9.0, 31.0);
  
  icon.infoWindowAnchor = new GPoint(12.0, 40.0); 
  
  markerOptions = { icon:icon };
  
  
	var point_1  = new GPoint(8.242868, 50.087241);  //ACHTUNG: (lon, lat) also vertauscht
	var marker_1 = new GMarker(point_1,markerOptions);
	var html_1   = "";
	
	html_1 += "<div class='twGmapInfo'>";
	html_1 += "<img src='../images/buttons/draheim.png' alt='Draheim Kunsthandel Galerie' />";
	html_1 += "<p>";
	html_1 += "<br /><strong>Galerie und Kunsthandel Michael Draheim </strong><br />";
  html_1 += "Taunusstrasse 9<br />";
  html_1 += "65183 Wiesbaden<br />";
  html_1 += "<br style=\"height:0.5em\" />";
  html_1 += "Tel.: +49 (0)611 - 910 30 07 <br />";
  html_1 += "Mobil: +49 (0)171 - 312 49 50 <br />";
  html_1 += "<form action=\"#\" onsubmit=\"set1(this); return false;\"><p>";
  html_1 += "<strong>Routenplaner</strong><br />";
  //html_1 += "<span id=\"pretxt\">Von:</span>";
  html_1 += '<input type="text" size="25" id="fromAddress" name="from" value="'+from_ad+'"  onFocus="if(this.value==from_ad || this.value==to_ad) this.value=\'\'" onBlur="if(this.value==\'\') this.value=\'Von: Ihre Strasse, Ort\'" />';
  html_1 += "<input id=\"sendAdress\" name=\"submit\" type=\"submit\" value=\"\" alt=\"Route planen\" />";  
  html_1 += "<input type=\"hidden\" name=\"to\" id=\"toAddress\" value=\"Taunusstraße 9, 65183 Wiesbaden\" />";
  html_1 += "<br />";
  html_1 += "<a href=\"javascript:blubb();\" id=\"AdressSwitch\" style=\"background: none;\">Start- und Zielpunkt tauschen</a>";
  html_1 += "<br />";
  html_1 += "</p></form>";
  html_1 += "</div>";
	
	
	map.addOverlay(marker_1);
	GEvent.addListener(marker_1, "click", function() {
      marker_1.openInfoWindowHtml(html_1);     
  });
	
	marker_1.openInfoWindowHtml(html_1);

  	
	return map;
}
