


var zeigeAdresse;
window.addEvent('domready', function() {
if (GBrowserIsCompatible()) { 
      var karte = new GMap($("contentM_map"));
      karte.addControl(new GLargeMapControl());
      karte.addControl(new GMapTypeControl());


	  var praxis_pos = new GLatLng(49.652685, 6.447416);
      karte.setCenter(praxis_pos,15);

      var bounds = new GLatLngBounds();
      
      // ====== Create a Client Geocoder ======
      var geo = new GClientGeocoder(new GGeocodeCache()); 

      // ====== Array for decoding the failure codes ======
      var gruende=[];
      gruende[G_GEO_SUCCESS]            = "erfolgreich";
      gruende[G_GEO_MISSING_ADDRESS]    = "Adresse fehlt: Entweder fehlt die Adresse oder hat keinen zugeordneten Wert";
      gruende[G_GEO_UNKNOWN_ADDRESS]    = "Unbekannte Addresse: Für die eingestellte Adresse konnte keine entsprechende geografische Lage gefunden werden";
      gruende[G_GEO_UNAVAILABLE_ADDRESS]= "Nicht verfügbare Adresse: Die geografische Lage für die angegebene Adresse kann aufgrund rechtlicher Probleme nicht dargestellt werden.";
      gruende[G_GEO_BAD_KEY]            = "Ungültiger Schlüssel: Der Google Maps API schlüssel ist entweder ungültig, oder passt nicht mit der Website - Domain zusammen";
      gruende[G_GEO_TOO_MANY_QUERIES]   = "Zu viele Anfragen: Die tägliche Quote der Google Maps Anfragen wurden für diese Seite überschritten";
      gruende[G_GEO_SERVER_ERROR]       = "Server Fehler: Die geografische Anfrage konnte leider nicht verarbeitet werden";
      gruende[G_GEO_BAD_REQUEST]        = "Die Routenfunktion konnte leider nicht erfogreich durchgeführt werden.";
      gruende[G_GEO_MISSING_QUERY]      = "Es wurde keine Anfrage in das Eingabefeld eingegeben.";
      gruende[G_GEO_UNKNOWN_DIRECTIONS] = "Die Routezwischen den 2 angegebenen Punkten konnte leider nicht erfogreich durchgeführt werden.";







		// ====== Geocoding ======
	zeigeAdresse = function () {
		if(zst > 0){
			$('contentR_info').tween('opacity','0');
			var suche = document.getElementById("suche2").value;
			adressen[1] = suche;
			geo.getLatLng(suche, function (point){		
				if (point) {
					doEnd(point);
				}
				//fehlerbhandlung
				else {
					var result=geo.getCache().get(suche);
					if (result) {
						var reason="Code "+result.Status.code;
						if (gruende[result.Status.code]) {
							reason = gruende[result.Status.code]
						}
					} else {
						var reason = "";
					} 
					alert('Could not find "'+suche+ '" ' + reason);
				}
			});
		}
		}

      var baseIcon = new GIcon(G_DEFAULT_ICON);
      baseIcon.iconSize=new GSize(24,38);

      var icon1 = G_START_ICON;
      var icon2 = G_END_ICON;


      function createMarker(point,i,icon, popinfo) {
	  if(zst == 0){
		 var marker = new GMarker(point, {draggable:false,icon:icon});
	  }else{
        var marker = new GMarker(point, {draggable:true,icon:icon});
	  }
        gmarkers[i]=marker;
        GEvent.addListener(marker, "dragend", function() {
          pfad[i] = marker.getPoint();
          adressen[i] = "";
		  doEnd(pfad[i]);
        });
        karte.addOverlay(marker);
		if(popinfo){
			marker.openInfoWindowHtml(popinfo);
		}
      }
      

      // ===== Array to contain the points of the pfad =====
      var pfad = [];
      var gmarkers = [];
      var adressen = [];

      // ===== zst Driven Processing =====
      var zst = 0;

      GEvent.addListener(karte, "click", function(overlay,point) {
        if (point) {
          if (zst == 1) { doEnd(point) }
        }
      });


// Start und Enpunkt generieren
      function doStart(point, popinfo) {
        createMarker(point,0,icon1, popinfo);
        pfad[0] = point;
        zst = 1;
      }

      function doEnd(point) {
		if(zst==1){
        	createMarker(point,1,icon2);
			
		}else{
			gmarkers[1].setPoint(point)
		}
        pfad[1] = point;
        zst = 2;
        bounds.extend(pfad[0]);
        bounds.extend(pfad[1]);
        karte.setZoom(karte.getBoundsZoomLevel(bounds));
        karte.setCenter(bounds.getCenter());
		directions()
      }

      
 	  var gdir=new GDirections(null, $("contentR_routeOutput"));

      GEvent.addListener(gdir,"error", function() {
        var code = gdir.getStatus().code;
        var reason="Code "+code;
        if (gruende[code]) {
          reason = "Code "+code +" : "+gruende[code]
        } 
        alert("Failed to obtain directions, "+reason);
      });

      var poly;
      GEvent.addListener(gdir, "load", function() {
        if (poly) karte.removeOverlay(poly);
        poly = gdir.getPolyline();
        karte.addOverlay(poly);
      });
        

      function directions() {
        if (adressen[0]) {var a = adressen[0] + "@" + pfad[0].toUrlValue(6)}
          else {var a = pfad[0].toUrlValue(6)} 
        if (adressen[1]) {var b = adressen[1] + "@" + pfad[1].toUrlValue(6)}
          else {var b = pfad[1].toUrlValue(6)} 
        var a = "from: "+b + " to: " + a;
        gdir.load(a, {getPolyline:true});
      }
	  
	  
		$('rechne').addEvent('click', zeigeAdresse);
	
	  
	  doStart(praxis_pos, '<p><strong>Moselhotel Nitteler Hof</strong><br />Weinstr. 42, 54453 Nittel</p>')


  

}


	
    
    // display a warning if the browser was not compatible
    else {
      alert("Leider ist die Google Maps API nicht kompatibel mit diesem Browser");
    }



});
