var map;
var geocoder;
var gdir;
var address;
var marker;
var infotext;
var adresse;
var fromaddress;
var toaddress;
var myart2;
var point;
var lat;
var lng;

function load(myaddress,text,mylat,mylng,divID) {

      infotext=text;
      adresse=myaddress;

	  if (!mylat) lat=0;
	  if (!mylng) lng=0;
      
      if (mylat>0) lat=mylat; else lat=0;
      if (mylng>0) lng=mylng; else lng=0;
      
	  if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById(divID));
		map.addControl(new GLargeMapControl());
		
		geocoder = new GClientGeocoder();
		gdir = new GDirections(map, document.getElementById("directions"));
			
        GEvent.addListener(gdir, "error", handleErrors);

		showLocation(myaddress);
		}
    }    


function showAddress(response) {
      // map.clearOverlays();
      if (!response || response.Status.code != 200) {
        alert("Die angegebene Adresse konnte leider nicht gefunden werden.");
      } else {
        place = response.Placemark[0];
        if (lat>0) { point = new GLatLng(lat,lng); } 
        else { point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]); }
        
        map.setCenter(point, 14);
		toaddress=place.address;
		// alert(toaddress);
		marker = new GMarker(point);
        map.addOverlay(marker);
        marker.openInfoWindowHtml("<div class='mapinfotext'><strong>"+infotext+"</strong><br>"+adresse+"</div>");
		map.checkResize();
      }
    }


function setFromAddressAndGo(response) {
      if (!response || response.Status.code != 200) {
        alert("Die angegebene Adresse konnte leider nicht gefunden werden.");
      } else {
		myart2=G_TRAVEL_MODE_DRIVING;
		place2 = response.Placemark[0];
		fromaddress=place2.address;
		document.getElementById('fromAddress').value=place2.address;
		/* AJAX CALL ZUM WEGSPEICHERN DER ADRESSE savemapaddress(place2.address);*/ 
		
		map.clearOverlays();
		if (lat>0) gdir.load("from: " + fromaddress + " to: (" + lat + "," + lng + ")", {travelMode:myart2,locale:"de_DE" });
        else gdir.load("from: " + fromaddress + " to: " + toaddress, {travelMode:myart2, locale:"de_DE" });
		document.getElementById('info').style.display='';
	  }
	}


function showLocation(address) {
	geocoder.getLocations(address, showAddress);
    }
	
	
function setDirections() {
	geocoder.getLocations(document.getElementById('fromAddress').value, setFromAddressAndGo);
	}



function handleErrors(){
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	 alert("Die angegebene Adresse konnte leider nicht gefunden werden. Bitte versuchen Sie es erneut!");
	else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
	 alert("Fehler bei der Routenberechnung!");
	else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
	 alert("Fehler bei der Routenberechnung!");
	else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
	 alert("Fehler bei der Routenberechnung!");
	else alert("Fehler bei der Routenberechnung!");
	}



function showmap(address,text,which) {
	infotext=text;
    adresse=address;
	load(address,0,0,which);
	}
	
