var zeigeAdresse;


function customPanel(map,mapname,gdir,div) {
        var html = "";

        function waypoint(point, type, address) {
		  if (type == "stop") {
		    html += '</table>';
		  }
          var target = '"' + mapname+".showMapBlowup(new GLatLng("+point.toUrlValue(6)+"))"  +'"';
		  html += '<div class="startziel">';
		  html += '	<h3 onclick='+target+'>'+address+'</h3>';
        }

		

        function routeDistance(dist,time) {
		  var entfernung = dist;
		  var mass = " m";
		  if (entfernung >= 1000) { var entfernung = Math.round(entfernung/10)/100; mass = " km";  }
		  html += '	<span>' + entfernung + mass + time + '</span>';
		  html += '</div>';
		  html += '<table class="routetable">';
        }


        function detail(point, num, description, dist) {
          var target = '"' + mapname+".showMapBlowup(new GLatLng("+point.toUrlValue(6)+"))"  +'"';
          
		  var entfernung = dist;
		  var mass = " m";
		  if (entfernung >= 1000) { var entfernung = Math.round(entfernung/10)/100; mass = " km";  }
		  html += '<tr onclick="'+target+'">';
	      html += '	<td class="stepcount">';
		  html += '			<a href="javascript:void(0)"> '+num+'. </a>';
		  html += '		</td>';
		  html += '		<td class="stepdesc">';
		  html +=        description;
		  html += '		</td>';
		  html += '		<td class="stepdist">'
		  html +=        entfernung+mass;
		  html += '</td>';
		  html += '</tr>';
          
        }
        function copyright(text) {
          html += '<span>' + text + "</span>";
		  html += '</div>';
        }

        for (var i=0; i<gdir.getNumRoutes(); i++) {
          if (i==0) {
            var type="play";
          } else {
            var type="pause";
          }
          var route = gdir.getRoute(i);
          var geocode = route.getStartGeocode();
          var point = route.getStep(0).getLatLng();
          waypoint(point, type, geocode.address);
		  routeDistance(route.getDistance().meters," (ca. "+route.getDuration().html+")");
          for (var j=0; j<route.getNumSteps(); j++) {
            var step = route.getStep(j);
            detail(step.getLatLng(), j+1, step.getDescriptionHtml(), step.getDistance().meters);
          }
        }

        var geocode = route.getEndGeocode();
        var point = route.getEndLatLng();
        waypoint(point, "stop", geocode.address);

        copyright(gdir.getCopyrightsHtml());
		div.innerHTML = html;
      }



window.addEvent('domready', function() {
if (GBrowserIsCompatible()) { 
      karte = new GMap($("map"));
		var praxis_pos = new GLatLng(48.1332324, 11.6922217);
		karte.setCenter(praxis_pos, 12);
		karte.addControl(new GLargeMapControl());
		karte.addControl(new GMapTypeControl());
		karte.enableScrollWheelZoom();
		
		// var tinyIcon = new GIcon();
		// tinyIcon.image = "http://digipetsneu.test/DIGIPETS_HTML_08/img/img_gmaps_icon.png";
		// tinyIcon.iconSize = new GSize(59, 21);
		// tinyIcon.iconAnchor = new GPoint(30, 21);
		// tinyIcon.infoWindowAnchor = new GPoint(59, 0);
		// markerOptions = { icon:tinyIcon };

      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 (e) {
	
		new Event(e).stop();
	
		if(zst > 0){
			var suche = document.getElementById("route").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);
	  }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()
      }

      gdir =new GDirections(karte);
	//gdir.load("from: Blackpool to: Preston to: Blackburn", {getSteps:true});
      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, {getSteps:true});
      }
	  
	  
		$('rechne').addEvent('click', zeigeAdresse);
		
	
	  
	  doStart(praxis_pos, '<p><strong>Augusta Technologie AG</strong><br />	Willy-Brandt-Platz 3<br>81829 Trudering-Riem, München</p>')
    }
    
    // display a warning if the browser was not compatible
    else {
      alert("Leider ist die Google Maps API nicht kompatibel mit diesem Browser");
    };


	
	      GEvent.addListener(gdir,"load", function() {
			$('routeOutput').innerHTML = "";
	setTimeout('customPanel(karte,"karte",gdir,document.getElementById("routeOutput"))', 1);
	//setTimeout('customPanel(map,"map",dirn,document.getElementById("contentR_route1"))', 1);
	      });




});
