// JavaScript Document
	var analytics=1;
	var analytics_enabled=0;
	var map;
	var gdir;
	var geocoder = null;
	var reversegeocoder = null;

	var baseIcon = null;
	var routedistance = 0;
	var routehandler=0;
	var map_element = "map_partnersuche";
	var directions_element = "directions_partnersuche";

	var route_x	= 0;
	var routy_y 	= 0;

	var page_now	= 0;
	var page_min	= 0;
	var page_max	= 0;

	var mapview 	= null;
	var autoprint	= null;

	var bounds = null;
	window.onunload=GUnload;

	var SYSTEMURL = "http://www.subaru.de/";
//	var SYSTEMURL = "http://46.4.48.76/testsystem/subaru-update/";

	if(typeof pageTracker != 'undefined' && analytics==1)
	{
		analytics_enabled = 1;
	}
	

// ############################################################################################################################################
// ### Benutzereingabe geocodieren ############################################################################################################
// ############################################################################################################################################

	function getPointFromFormular(formular,submit)
	{
		document.getElementById("haendlersuche_output").startort.value=formular.startort.value;
		document.getElementById("haendlersuche_output").action=formular.action;
		
		getPoint(formular.startort.value,submit);
		return false;
	}

	function getPoint(adresse,submit)
	{
		geocoder = new GClientGeocoder();
		geocoder.setBaseCountryCode("de");
		geocoder.getLatLng(adresse,function(point)
		{
			if (point)
			{
//	##############################################################################################################################
//	### Deutschlands Ausdehnung überprüfen (Treffer im Ausland!?) ################################################################
//	##############################################################################################################################
//	### Nord-West: lat: 55.45394132943307 lng: 5.712890625 || Süd-Ost: lat: 47.12995075666307 lng: 15.2490234375 #################
//	##############################################################################################################################

				if( point.lat()>55.45394132943307 || point.lat()<47.12995075666307 || point.lng()<5.712890625 || point.lng() > 15.2490234375 )
				{
//					alert("Fehler bei der Startort-Geocodierung");
					errorprinter(adresse,1,"Ausgangspunkt nicht in Deutschland("+point.lat()+"|"+point.lng()+")","0","0");

					getPointRekursiv(adresse,submit,1);
				}else{
					document.getElementById("haendlersuche_output").x.value = point.lat();
					document.getElementById("haendlersuche_output").y.value = point.lng();
	
//					alert("getCoords: "+point.toString());

					if(submit==1)	document.getElementById("haendlersuche_output").submit();
				}
			}else{
				errorprinter("onClickFailure","1",adresse,"0","1");
			}
		});
		document.getElementById("haendlersuche_output").startort.value = adresse;
	}

	function getPointRekursiv(adresse,submit,errorlevel)
	{
		errorlevel++;
		geocoder = new GClientGeocoder();
		geocoder.setBaseCountryCode("de");
		geocoder.getLatLng(adresse,function(point)
		{
			if (point)
			{
//	##############################################################################################################################
//	### Deutschlands Ausdehnung überprüfen (Treffer im Ausland!?) ################################################################
//	##############################################################################################################################
//	### Nord-West: lat: 55.45394132943307 lng: 5.712890625 || Süd-Ost: lat: 47.12995075666307 lng: 15.2490234375 #################
//	##############################################################################################################################

				if( point.lat()>55.45394132943307 || point.lat()<47.12995075666307 || point.lng()<5.712890625 || point.lng() > 15.2490234375 )
				{
//					alert("Fehler bei der Startort-Geocodierung");
					errorprinter(adresse,errorlevel,"Ausgangspunkt nicht in Deutschland("+point.lat()+"|"+point.lng()+")","0","0");
					if(errorlevel<4)
						getPointRekursiv(adresse,submit,errorlevel);
					else
					{
						$("box-partnersuche-normal").style.display="none";
						$("box-partnersuche-error").style.display="none";
						$("box-partnersuche-notFound").style.display="block";
						if($("box-partnersuche-platzhalter")) $("box-partnersuche-platzhalter").style.display="none";

						$("notFoundStartortOutput").innerHTML = adresse;
						$("partnersuche_loading").style.display="none";
					}
				}else{
					document.getElementById("haendlersuche_output").x.value = point.lat();
					document.getElementById("haendlersuche_output").y.value = point.lng();
	
//					alert("getCoords: "+point.toString());

					if(submit==1)	document.getElementById("haendlersuche_output").submit();
				}
			}else{
				errorprinter("onClickFailure","1",adresse,"0","1");
			}
		});
		document.getElementById("haendlersuche_output").startort.value = adresse;
	}

	function getCoords(point,submit)
	{
		
		if (point)
		{
			document.getElementById("haendlersuche_output").x.value = point.lat();
			document.getElementById("haendlersuche_output").y.value = point.lng();

//			alert("getCoords: "+point.toString());

			if(submit==1)	document.getElementById("haendlersuche_output").submit();

		}else{
			document.getElementById("haendlersuche_output").x.value = "X";
//			alert("Fehler bei der Startort-Geocodierung");
		}
	}

// ############################################################################################################################################


	function createPrint()
	{
		// To see the polyline when you print  
//		var svgs = document.getElementsByTagName('svg'); for (i=0;i<svgs.length;i++){ svgs[i].parentNode.className = 'gmprint'; var dasharray = document.createAttribute("stroke-dasharray"); dasharray.nodeValue = "5, 0"; svgs[i].setAttributeNode(dasharray); } 
		window.print();
	}

// ############################################################################################################################################
// ### Google-Maps Initialisierung ############################################################################################################
// ############################################################################################################################################

	function load(view)
	{
		mapview = view;
		if (GBrowserIsCompatible())
		{
			geocoder = new GClientGeocoder();
			if(document.getElementById(map_element))
			{
				map = new GMap2(document.getElementById(map_element));
				map.enableScrollWheelZoom();
				map.enableContinuousZoom();
				map.addControl(new GLargeMapControl());
				map.addControl(new GMapTypeControl());
//				GEvent.addListener(map, "click", function(overlay,point) {document.getElementById("startort").value=("getCoords: "+point.lat()+"|"+point.lng());});

				reversegeocoder = new GReverseGeocoder(map);
    				GEvent.addListener(reversegeocoder, "load", goodresult);
    				GEvent.addListener(reversegeocoder, "error", badresult);

				createBaseIcon();
				newBounds = new GLatLngBounds();
				drawMap(view);
			}

			if(document.getElementById(map_element) && document.getElementById(directions_element))
			{
				map.disableScrollWheelZoom();
	      			gdir = new GDirections(map, document.getElementById(directions_element));
				gdir.locale="de_DE";
				GEvent.addListener(gdir, "load", onGDirectionsLoad);
				GEvent.addListener(gdir, "addoverlay", onGDirectionsAddOverlay);
				GEvent.addListener(gdir, "error", handleErrors);
			}
		}
		if(view=="mapview")page("init");
		if(view=="directions") drawRoute(coords[1]);
	}

function goodresult(placemark) {
  var html = placemark.address;
//  var postalcodenumber = rg.getPlacemarkProperty(placemark,"PostalCodeNumber");
  //if (postalcodenumber != null) alert("Postal Code Number: " + postalcodenumber);
  //else alert("Postal Code Number Unknown");

alert(html);
}

// is called if the reverse geocode request was unsuccessfull
function badresult(lastpoint) {
  //info.innerHTML = "Unable to reverse geocode point " + lastpoint;
	alert("nix gefunden");
}


	function instantRoute(form,submit)
	{
		getPoint(form,submit);
		drawRoute(coords[1]);
		return false;
	}
// ############################################################################################################################################

// ############################################################################################################################################
// ### Subaru-Icon ############################################################################################################################
// ############################################################################################################################################

	function createBaseIcon()
	{
		// Create a base icon for all of our markers that specifies the
		// shadow, icon dimensions, etc.
		baseIcon = new GIcon();
		baseIcon.image = "fileadmin/images/mapicon_subarulogo.gif";
		baseIcon.shadow = "fileadmin/images/partnersuche/mapicons/logo_shadow2.png";
		baseIcon.iconSize = new GSize(39, 46);
		baseIcon.shadowSize = new GSize(66, 30);
		baseIcon.iconAnchor = new GPoint(19, 46);
		baseIcon.infoWindowAnchor = new GPoint(34, 7);
		//baseIcon.infoShadowAnchor = new GPoint(30, 9);
	}

// ############################################################################################################################################

// ############################################################################################################################################
// ### DirectionsPopup öffnen #################################################################################################################
// ############################################################################################################################################

	function openDir(haendlerNR,heimadresse,x,y,autoprint)
	{	//alert("kontakt/haendlersuche/anfahrtsskizze-haendlersuche.html?partner="+haendlerNR+"&adresse="+heimadresse+"&x="+x+"&y="+y);
		directions = window.open(SYSTEMURL+"kontakt/haendlersuche/anfahrtsskizze-haendlersuche.html?partner="+haendlerNR+"&adresse="+heimadresse+"&x="+x+"&y="+y+"&autoprint="+autoprint, "", "width=720,height=900,left=100,top=200,scrollbars=yes");
		directions.focus();
	}

// ############################################################################################################################################

// ############################################################################################################################################
// ### Routenplanung durchführen ##############################################################################################################
// ############################################################################################################################################

	function drawRoute(haendler)
	{
		x = document.getElementById("x").value;
		y = document.getElementById("y").value;

		if(x && y)
		{
//			alert("drawRoute:"+x+","+y);
			outputstring = "from: "+document.getElementById("startort").value+"@"+x+","+y+" to: "+haendler['ADR_STRASSE']+", "+haendler['ADR_PLZ_STRASSE']+", "+haendler['ADR_ORT']+"@"+haendler['LAT']+", "+haendler['LNG'];
			routehandler=haendler;
//			alert (outputstring);
			gdir.load(outputstring);
		}
	}

// ############################################################################################################################################

// ############################################################################################################################################
// ### Kreispunkte zur maximalen Ausdehnung einzeichnen #######################################################################################
// ############################################################################################################################################

	function drawAusdehnung(point,Clat,Clng)
	{
		// OST
		point2 = new GLatLng(point.lat() + (Clat * Math.sin(0)),point.lng() + (Clng * Math.cos(0)));
		var marker = new GMarker(point2);
		map.addOverlay(marker);

		// WEST
		point2 = new GLatLng(point.lat() + (Clat * Math.sin(Math.PI)),point.lng() + (Clng * Math.cos(Math.PI)));
		var marker = new GMarker(point2);
		map.addOverlay(marker);

		// NORD
		point2 = new GLatLng(point.lat() + (Clat * Math.sin(Math.PI/2)),point.lng() + (Clng * Math.cos(Math.PI/2)));
		var marker = new GMarker(point2);
		map.addOverlay(marker);

		// SÜD
		point2 = new GLatLng(point.lat() + (Clat * Math.sin(Math.PI*1.5)),point.lng() + (Clng * Math.cos(Math.PI*1.5)));
		var marker = new GMarker(point2);
		map.addOverlay(marker);
	}

// ############################################################################################################################################

// ############################################################################################################################################
// ### Quadrateckpunkte zur maximalen Ausdehnung einzeichnen ##################################################################################
// ############################################################################################################################################

	function drawEckpunkte()
	{
		// NORD-OST
		point = new GLatLng(B_nord, L_ost);
		var marker = new GMarker(point);
		map.addOverlay(marker);

		// NORD-WEST
		point = new GLatLng(B_nord, L_west);
		var marker = new GMarker(point);
		map.addOverlay(marker);

		// SÜD-WEST
		point = new GLatLng(B_sued, L_west);
		var marker = new GMarker(point);
		map.addOverlay(marker);

		// SÜD-OST
		point = new GLatLng(B_sued, L_ost);
		var marker = new GMarker(point);
		map.addOverlay(marker);
	}

// ############################################################################################################################################


	function drawMap(view)
	{
	
		point0 = new GLatLng(coords[0]["LAT"], coords[0]["LNG"]);
//		document.getElementById("coords").innerHTML="x: "+point0.x+"|"+point0.lng()+"<br>y: "+point0.y+"|"+point0.lat();
		map.setCenter(point0, coords[0]["ZOOMSTUFE"]);
		var marker0 = new GMarker(point0);



		//### Radius-Punkte ermitteln //###############################################
			var cColor = "#FF3333";
			var cWidth = 5;
			var Cradius = radius;   
			var d2r = Math.PI/180; 
			var r2d = 180/Math.PI; 
			var Clat = (Cradius/6377.83027)*r2d; 
			var Clng = Clat/Math.cos(point0.lat()*d2r); 
			var Cpoints = []; 
			for (var i=0; i < 33; i++) { 
				var theta = Math.PI * (i/16); 
				var CPlng = point0.lng() + (Clng * Math.cos(theta)); 
				var CPlat = point0.lat() + (Clat * Math.sin(theta)); 
				var P = new GLatLng(CPlat,CPlng);
//				newBounds.extend(P);
				Cpoints.push(P); 
			}
		//#############################################################################

		// coords[0]		=> Daten zum vom User angegebenen Ort dar
		// coords[0][0-1]	=> Breitengrad|Längengrad
		// coords[0]["ZOOMSTUFE"]	=> Zoomstufe
		// coords[1-26]	=> Daten der Filialen (Nummerierung A-Z auf der Karte)
		// coords[X][0-1]	=> Breitengrad|Längengrad
		// coords[x][2-19]	=> optionale Daten der Filialen wie Adresse, Kontaktdaten, ect.
		// 			=> letzte Feld: Luftlinie Filiale zum vom User angegebenen Ort
		// coords[X]["INFOTEXT"]	=> HTML-Code für Infobubble
		// coords[X]["ROUTEMARKER"]	=> Marker-Objekt für Routenplanung
		// coords[X]["INFOMARKER"]	=> Marker-Objekt für Infobubble

		for(i=1; i<coords.length; i++)
		{
			point = new GLatLng(coords[i]["LAT"], coords[i]["LNG"]);
			if(document.getElementById(directions_element))
			{
				coords[i]["ROUTEMARKER"] = createMarker(point,i,"route",view);
//				map.addOverlay(coords[i]["ROUTEMARKER"]);
			}
			coords[i]["INFOMARKER"] = createMarker(point,i,"info",view);
			if(view=="mapview" || view=="skizzenview") map.addOverlay(coords[i]["INFOMARKER"]);
//			coords[i]["INFOMARKER"].hide();


			coords[i]["INFOTEXT"] = "<table border=\"0\"><tr valign=\"middle\"><td><div style=\"margin-right:50px;\"><span style=\"font-size:14px; line-height:22px; font-weight:bold;\">";
			if(coords[i]["ADR_NAME_1"]!="") coords[i]["INFOTEXT"] += coords[i]["ADR_NAME_1"]+"<br>";
			if(coords[i]["ADR_NAME_2"]!="") coords[i]["INFOTEXT"] += coords[i]["ADR_NAME_2"]+"<br>";
			if(coords[i]["ADR_NAME_3"]!="") coords[i]["INFOTEXT"] += coords[i]["ADR_NAME_3"]+"<br>";

			coords[i]["INFOTEXT"] += "</span><span style=\"font-size:11px;\">";
			coords[i]["INFOTEXT"] += coords[i]["ADR_STRASSE"]+"<br>";
			coords[i]["INFOTEXT"] += coords[i]["ADR_PLZ_STRASSE"]+" "+coords[i]["ADR_ORT"];
			if(coords[i]["ADR_TELEFON_NR"]!="")
				coords[i]["INFOTEXT"] += "<br>Telefon: "+coords[i]["ADR_TELEFON_NR"];
			if(coords[i]["ADR_FAX_NR"]!="")
				coords[i]["INFOTEXT"] += "<br>Fax: "+coords[i]["ADR_FAX_NR"];
			coords[i]["INFOTEXT"] += "</span></div></td><td style=\"padding-top:22px;\" width=\"30\">";
			coords[i]["INFOTEXT"] += coords[i]["ICONS"];
			coords[i]["INFOTEXT"] += "</td></tr></table>";

			if(view=="mapview")
			{
				if(coords[i]['ADR_E_MAIL']!="" || coords[i]['WEBSITE']!="")
				{
					coords[i]["INFOTEXT"] += '<table border=\"0\"><tr valign=\"middle\"><td><div style="font-size:11px;">';
					coords[i]["INFOTEXT"] += "";
					if(coords[i]['ADR_E_MAIL']!="")
						coords[i]["INFOTEXT"] += '<a class="pfeillink" href="mailto:'+coords[i]["ADR_E_MAIL"]+'">E-Mail senden</a>';
					if(coords[i]['ADR_E_MAIL']!="" && coords[i]['WEBSITE']!="")
						coords[i]["INFOTEXT"] += "<br>";
					if(coords[i]['WEBSITE']!="")
						coords[i]["INFOTEXT"] += '<a class="pfeillink" href="'+coords[i]["WEBSITE"]+'" target="_blank">Webseite besuchen</a>';
					coords[i]["INFOTEXT"] += '</div></td></tr></table>';
				}
				coords[i]["INFOTEXT"] += '<table border=\"0\"><tr valign=\"middle\"><td><div style="font-size:11px;">';
				coords[i]["INFOTEXT"] += '<a class="pfeillink" style="font-weight:bold;" href="javascript:openDir(\''+coords[i]["HAE_HAENDLER_NR"]+'\',\''+coords[0]['STARTORT']+'\',\''+coords[0]['LAT']+'\',\''+coords[0]['LNG']+'\')">Anfahrt berechnen</a>';
				coords[i]["INFOTEXT"] += '</div></td></tr></table>';
			}else if(view=="skizzenview"){
				if(coords[i]['ADR_E_MAIL']!="")
				{
					coords[i]["INFOTEXT"] += '<table border=\"0\"><tr valign=\"middle\"><td><div style="font-size:11px;">';
					coords[i]["INFOTEXT"] += '<a class="pfeillink" href="mailto:'+coords[i]["ADR_E_MAIL"]+'">E-Mail senden</a>';
					coords[i]["INFOTEXT"] += '</div></td></tr></table>';
				}
			}
		}

		if(view=="skizzenview")
		{
			map.setCenter(point,9);
			coords[1]["INFOMARKER"].openInfoWindowHtml(coords[1]["INFOTEXT"]);
		}



		page_max = Math.floor((coords.length-2)/3);

		polygon = new GPolygon(
				[
					new GLatLng(B_nord, L_ost),
					new GLatLng(B_nord, L_west),
					new GLatLng(B_sued, L_west),
					new GLatLng(B_sued, L_ost),
					new GLatLng(B_nord, L_ost),
				],
				"#000000",
				1,
				1,
				"#000000",
				0.2
			)

		//### Radius einzeichnen
//		map.addOverlay(new GPolyline(Cpoints,cColor,cWidth)); 

//		drawAusdehnung(point0,Clat,Clng);
//		drawEckpunkte();

//		map.addOverlay(polygon);
		if(view=="mapview") map.addOverlay(marker0);
	}
// ############################################################################################################################################
// ### Seitenwechsel zwischen den Suchergebnissen #############################################################################################
// ############################################################################################################################################

	function page(richtung)
	{
		for(i=1; i<coords.length; i++)
		{
			document.getElementById("partner_top_"+i).style.display="none";
			document.getElementById("partner_bottom_"+i).style.display="none";
			coords[i]["INFOMARKER"].hide();
			coords[i]["INFOMARKER"].closeInfoWindow();
		}

		switch (richtung)
		{
			case "next":	page_now++;
					if(analytics_enabled==1)
						pageTracker._trackPageview("/kontakt/haendlersuche/ergebnisse-haendelersuche/naechste-seite-"+page_now);
					break;
			case "last":	page_now--;
					if(analytics_enabled==1)
						pageTracker._trackPageview("/kontakt/haendlersuche/ergebnisse-haendelersuche/vorherige-seite-"+page_now);
					break;
		}

		bounds = new GLatLngBounds();
		bounds.extend(new GLatLng(coords[0]["LAT"],coords[0]["LNG"]));
		for(i=1; i<4; i++)
		{
			if(document.getElementById("partner_top_"+((page_now*3)+i)))
			{
				document.getElementById("partner_top_"+((page_now*3)+i)).style.display="";
				document.getElementById("partner_bottom_"+((page_now*3)+i)).style.display="";
				coords[(page_now*3)+i]["INFOMARKER"].show();
				bounds.extend(new GLatLng(coords[(page_now*3)+i]["LAT"],coords[(page_now*3)+i]["LNG"]));
			}
		}

		map.setZoom(map.getBoundsZoomLevel(bounds));
		map.setZoom(map.getZoom()-1);
		map.setCenter(bounds.getCenter());

		if(page_max==0)			document.getElementById("nextpage").innerHTML="";
		else
		{
			if(page_now==page_max)	document.getElementById("page_next").style.display="none";
			else				document.getElementById("page_next").style.display="block";
			if(page_now==page_min)	document.getElementById("page_last").style.display="none";
			else				document.getElementById("page_last").style.display="block";
		}
	}

// ############################################################################################################################################


// ############################################################################################################################################
// ### Erstellen von Markern mit Großbuchstaben inkl. Klickeventlistener ######################################################################
// ############################################################################################################################################

	function createMarker(point, index, clickaction, view)
	{
		// Create a lettered icon for this point using our icon class
		var letter = String.fromCharCode("A".charCodeAt(0) + index-1);
		var letteredIcon = new GIcon(baseIcon);
		baseIcon.image = SYSTEMURL+"fileadmin/images/partnersuche/mapicons/logo_" + index + ".png";


		
		if(view=="skizzenview")
		{
			baseIcon.image = SYSTEMURL+"fileadmin/images/partnersuche/mapicons/logo.png";
			baseIcon.iconSize = new GSize(39, 40);
			baseIcon.iconAnchor = new GPoint(19, 40);
			baseIcon.infoWindowAnchor = new GPoint(34, 7);
		}

		// Set up our GMarkerOptions object
		markerOptions	= { icon:letteredIcon };
		markerOptions	= { icon:baseIcon };
		var marker	= new GMarker(point, markerOptions);


		if(clickaction=="info")
		{
			GEvent.addListener(marker, "click", function()
			{
				if(analytics_enabled==1)
					pageTracker._trackPageview("/kontakt/haendlersuche/ergebnisse-haendelersuche/marker-klick-"+index);

				marker.openInfoWindowHtml(coords[index]["INFOTEXT"]);
//				reversegeocoder.reverseGeocode(new GLatLng(coords[index]["LAT"], coords[index]["LNG"]));

				if(view!="skizzenview")
				{
					map.setCenter(point);
					map.setZoom(15);
				}

			});

			if(view!="skizzenview")
			{
				GEvent.addListener(marker, "infowindowclose", function()
				{
					map.setZoom(map.getBoundsZoomLevel(bounds));
					map.setZoom(map.getZoom()-1);
					map.setCenter(bounds.getCenter());
				});
			}
		}

		return marker;
	}

// ############################################################################################################################################

// ############################################################################################################################################
// ### Anzeigen der Marker innerhalb des Kreises bzw. Quadrats ################################################################################
// ############################################################################################################################################

	function showhideCircle()
	{
		if(document.getElementById("realCircle").value=="Kreis")
		{
			for(i=1; i<coords.length; i++)
			{
				if(coords[i][11]>radius)
				{
					coords[i]["ROUTEMARKER"].hide();
					document.getElementById("visitenkarte_"+coords[i]["LAT"]+"-"+coords[i]["LNG"]).style.display="none";
				}
			}

			document.getElementById("realCircle").value="Quadrat";
		}else{
			for(i=1; i<coords.length; i++)
			{
				if(coords[i][11]>radius)
				{
					coords[i]["ROUTEMARKER"].show();
					document.getElementById("visitenkarte_"+coords[i]["LAT"]+"-"+coords[i]["LNG"]).style.display="block";
				}
			}

			document.getElementById("realCircle").value="Kreis";
		}
		return false;
	}

// ############################################################################################################################################

// ############################################################################################################################################
// ### GoogleMaps-EventHandler ################################################################################################################
// ############################################################################################################################################

	// Handlen der Routenplanung-Fehler
	function handleErrors(){
		if (document.getElementById("startort").value == "")
			alert("Bitte geben Sie eine Startadresse an.");
		else if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
			alert("Die von Ihnen angebebene Adresse konnte leider nicht gefunden werden.");
		else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
			alert("Serverfehler, bitte versuchen Sie es später erneut.");
			
		else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
			alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\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("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
		
		else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
			alert("Die Route konnte leider nicht erstellt werden.");
		
		else alert("Unbekannter Fehler - die Route konnte leider nicht erstellt werden.");
	}

	// Event Routenplanungsdaten fertig berechnet
	function onGDirectionsLoad()
	{ 
		//rdistance=gdir.getDistance();		// Abholen der Autoroute in Meter
		//routedistance=rdistance.meters/1000;	// Umrechnen in km
		// Platzhalter im InfoBubble-HTMLcode mit aktueller Entfernung füllen
		//coords[routehandler]["INFOMARKER"]=coords[routehandler]["INFOMARKER"].replace(/#0#/g, routedistance);
		// InfoBubble anzeigen
		//routehandler["INFOMARKER"].openInfoWindowHtml(routehandler["INFOTEXT"]);
	}

	// Event Routenplanungsdaten fertig eingezeichnet
	function onGDirectionsAddOverlay(){ 
//		alert("Route eingezeichnet...");

		// Ausdehnen des Fahrtanweisungslayers und zum selbigen Scrollen
//		document.getElementById(directions_element).style.height="200px";
//		window.scrollBy(0, 1000);

		// Abfangen der beiden üblichen Start/Ziel-Marker der Routenplanung
		marker1=gdir.getMarker(0);
		marker2=gdir.getMarker(1);

		// Verstecken der beiden üblichen Start/Ziel-Marker der Routenplanung
//		marker1.hide();
//		marker2.hide();


		// Map nach der Routenberechnung wieder auf die Ausgangszoomstufe zurücksetzen, da sonst Zoom auf die Route
//		point = new GLatLng(coords[0]["LAT"], coords[0]["LNG"]);
//		map.setCenter(point, coords[0]["ZOOMSTUFE"]);

		document.getElementById(directions_element).style.padding="0px 0px 0px 0px";

		if(autoprint=="1")
		{
			window.setTimeout("print()", 2000);
			if(analytics_enabled)
				pageTracker._trackPageview('/kontakt/haendlersuche/anfahrtsskizze-haendlersuche/seite-drucken');
		}
		
		// Eintrag in Google-Analytics "Benutzer hat Route berechnet"
//		if (analytics==1)
//			urchinTracker("/anfahrt/route_berechnet");
	}


// ############################################################################################################################################
// ### Formular leeren bei Klick in's Feld ####################################################################################################
// ############################################################################################################################################

	function clearFormular()
	{
		if(document.getElementById("startort").value=="Strasse, Hausnummer, Plz., Ort" || document.getElementById("startort").value=="street, house number, postal code, city")
			document.getElementById("startort").value ="";
	}

// ###########################################################################################################################################


// ############################################################################################################################################
// ### AJAX ####################################################################################################
// ############################################################################################################################################

function errorprinter(city, errorlevel, output, geocodiert, mail)
{
//	$(ajaxoutput).innerHTML = error;
//	alert(error);
	var url = SYSTEMURL+'fileadmin/haendlersuche/errorprint.php';
	new Ajax.Request(url, {
		method: 'get',parameters:{city: city, errorlevel: errorlevel, output: output, geocodiert: geocodiert, mail: mail},
		onSuccess: function(transport)
		{
		}
	});


}


function doRequest(city,errorlevel)
{
//	if(errorlevel=="")	errorlevel=0;

	$("partnersuche_loading").style.display="block";

	$("startort_normal").value=city;
	$("startort_error").value=city;
	$("startort_notFound").value=city;

	var url = SYSTEMURL+'fileadmin/haendlersuche/adresscheck.php';
	// notice the use of a proxy to circumvent the Same Origin Policy.

	new Ajax.Request(url, {
		method: 'get',parameters:{city: city, errorlevel: errorlevel},


		onSuccess: function(transport)
		{
      			var response 		= transport.responseText || "no response text";
			var indikator 	= response.substr(0,1);
			var errorlevel 	= response.substr(1,1);
			var output 		= response.substr(2);

			if(indikator =="0")
			{
				errorprinter(city,errorlevel,output,"0","0");

				$("box-partnersuche-normal").style.display="none";
				$("box-partnersuche-error").style.display="none";
				$("box-partnersuche-notFound").style.display="block";
				if($("box-partnersuche-platzhalter")) $("box-partnersuche-platzhalter").style.display="none";

				$("notFoundStartortOutput").innerHTML = city;
				$("partnersuche_loading").style.display="none";
			}
			else if(indikator =="1")
			{

				geocoder = new GClientGeocoder();
				geocoder.setBaseCountryCode("de");
				geocoder.getLatLng(output,function(point){
					if (point)
					{

//	##############################################################################################################################
//	### Deutschlands Ausdehnung überprüfen (Treffer im Ausland!?) ################################################################
//	##############################################################################################################################
//	### Nord-West: lat: 55.45394132943307 lng: 5.712890625 || Süd-Ost: lat: 47.12995075666307 lng: 15.2490234375 #################
//	##############################################################################################################################

						if( point.lat()>55.45394132943307 || point.lat()<47.12995075666307 || point.lng()<5.712890625 || point.lng() > 15.2490234375 )
						{
//							alert("Fehler bei der Startort-Geocodierung");
							errorprinter(city,errorlevel,"Ausgangspunkt nicht in Deutschland("+point.lat()+"|"+point.lng()+")","0","0");
							if(errorlevel<4)
							{
								doRequest(city,errorlevel);
							}else{
								$("box-partnersuche-normal").style.display="none";
								$("box-partnersuche-error").style.display="none";
								$("box-partnersuche-notFound").style.display="block";
								if($("box-partnersuche-platzhalter")) $("box-partnersuche-platzhalter").style.display="none";

								$("notFoundStartortOutput").innerHTML = city;
								$("partnersuche_loading").style.display="none";
							}
						}else{
							if(errorlevel>0 && city!=output)errorprinter(city,errorlevel,output,"1","0");
							document.getElementById("haendlersuche_output").x.value = point.lat();
							document.getElementById("haendlersuche_output").y.value = point.lng();
							document.getElementById("haendlersuche_output").startort.value = output;

//							alert("getCoords: "+point.toString());

							document.getElementById("haendlersuche_output").submit();
						}
					}else{
//						alert("Fehler bei der Startort-Geocodierung");
						errorprinter(city,errorlevel,output,"0","0");
						if(errorlevel<4)
						{
							doRequest(city,errorlevel);
						}else{
							$("box-partnersuche-normal").style.display="none";
							$("box-partnersuche-error").style.display="none";
							$("box-partnersuche-notFound").style.display="block";
							if($("box-partnersuche-platzhalter")) $("box-partnersuche-platzhalter").style.display="none";

							$("notFoundStartortOutput").innerHTML = city;
							$("partnersuche_loading").style.display="none";
						}
					}
				});
			}	
			else if(indikator =="x")
			{
				$("box-partnersuche-normal").style.display="none";
				$("box-partnersuche-error").style.display="block";
				$("box-partnersuche-notFound").style.display="none";

				$("resultsError").update('<th width="60">PLZ</th><th>Ort</th><th>&nbsp;</th>'+output);
				if($("box-partnersuche-platzhalter")) $("box-partnersuche-platzhalter").style.display="none";

				$("partnersuche_loading").style.display="none";
			}
			else
			{
				error='Die Partnersuche ist derzeit nicht verfügbar. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.';

//				errorprinter(error);
			}
    		},
    		onFailure: function()
		{
			error='Die Partnersuche ist derzeit nicht verfügbar. Bitte versuchen Sie es zu einem späteren Zeitpunkt erneut.';

//			errorprinter(error);
		},
		onComplete: function()
		{
		}
	});
	return false;
}

// ###########################################################################################################################################

  function checkBrowserName(name){  
    var agent = navigator.userAgent.toLowerCase();  
    if (agent.indexOf(name.toLowerCase())>-1) {  
      return true;  
    }  
    return false;  
  }

