var shownames=new CAJAX("shownames");
var fulltext=new CAJAX("fulltext");
var mapLoadGeoPos=new CAJAX("mapLoadGeoPos");
var mapLoadOrte=new CAJAX("mapLoadOrte");
var mapLoadOrt=new CAJAX("mapLoadOrt");
var savehidesearchmapstate=new CAJAX("savehidesearchmapstate");
var showMapNames=null;
var mapChangeEndRunning=false;
var usercontrols=null;
var map=null;
var icon=null;
var iconSkigebiet=null;
var showNamesCalls={commands: null, timeoutHandle: null};
var loadedOrteCalls={commands: null, timeoutHandle: null};
var markers=new Array();
var textMarkers=new Array();
var startSearchFromMap=false;
var umkreisObject=null;

var mapProperties={landregionLinks: true, ortLinks: true, viewSearchItems: true};

var yellowMarker=null;

var lastSearchStartObject=null;
var firstVolltextCall=true;

var skigebietMarker=null;

// Stuttgart, Deutschland
var latSD=51.29025466863941;
var lngSD=6.794695258140564;

var givenAddressObject=null;
var hideSearchMap=false;

function fncLoad(vAddressObject)
{
	// Übergebenes AdressObject speichern
	givenAddressObject=vAddressObject;

	// Karte initialisieren
	if (!hideSearchMap && GBrowserIsCompatible())
	{
		// Icon für Orte erstellen
		icon=new GIcon();

		//icon.image="search_europakarte_haus.gif";
		icon.image="../grafix/img_maport.png";
		//icon.image="search_europakarte_genTextPic.php?text=Test-Text";
		icon.iconSize=new GSize(17, 17);

		icon.iconAnchor=new GPoint(13, 13);
		icon.infoWindowAnchor=new GPoint(13, 13);


		map=new GMap2(document.getElementById("map"));

		userControls=new CIdMapControl(map);
		
		userControls.Add("positionskartezooming", {align: G_ANCHOR_TOP_LEFT} );
		document.getElementById("positionskartezooming").style.display="block";
		
		userControls.Add("idSwitchMapDisplayCloser", {align: G_ANCHOR_TOP_RIGHT} );
		document.getElementById("idSwitchMapDisplayCloser").style.display="block";


		//map.addControl(new GSmallZoomControl());
		//map.addControl(new GLargeMapControl());
		map.enableContinuousZoom();
		map.enableDoubleClickZoom();
		
		//enableMouseWheelZoom(document.getElementById("map"), map);

		showMapNames=new CShowMapNames("showMapNames", map);
		showMapNames.eventBeforeShowFunction="event_beforeShowMapNames";
		showMapNames.eventAfterShowFunction="event_afterShowMapNames";
		showMapNames.onlyShowMapNames=true;
		//showMapNames.rasterizeNames=true;
		showMapNames.anzahl=true;
		showMapNames.useCountMarker=true;

		GEvent.addListener(map, "zoomend", event_mapChangeEnd);
		GEvent.addListener(map, "moveend", event_mapChangeEnd);
		
		map.setMapType(G_HYBRID_MAP);
		
		/* Erstpositionierung auf Stuttgart, Deutschland oder AddressObject */
		// Suttgart, Deutschland

		// Möglichkeit des LatLng-Rahmens
		if (vAddressObject!=null && typeof vAddressObject.geoRect!="undefined")
		{
			mapChangeEndRunning=true;
			
			// Vorpositionieren, Map quasi initialisieren
			//map.setCenter(new GLatLng(latSD, lngSD), 5, G_SATELLITE_MAP);
			map.setCenter(new GLatLng(latSD, lngSD), 5, G_HYBRID_MAP);

			// LatLng-Rect setzen			
			setLatLngRect(map, vAddressObject.geoRect);

			// Unterregionen anzeigen
			if (typeof vAddressObject.region!="undefined" && vAddressObject.region!="")
			{showMapNames.showSubregionNames(vAddressObject.land, vAddressObject.region);
			}
			else
			{
				// Regionen anzeigen
				if (typeof vAddressObject.land!="undefined" && vAddressObject.land!="")
				{showMapNames.showRegionNames(vAddressObject.land);
				}
				else
				{
					// Ländern anzeigen
					showMapNames.showCountryNames();
				}
			}			

			/*fncLoadedOrte(
				(typeof vAddressObject.land!="undefined"?vAddressObject.land:""),
				(typeof vAddressObject.region!="undefined"?vAddressObject.region:""),
				(typeof vAddressObject.unterregion!="undefined"?vAddressObject.unterregion:"")
			);*/
			
			if (vAddressObject!=null && vAddressObject.ort!="")
			{changeOrt({value: vAddressObject.ort});
			}
			else
			{
				setUmkreisObject();
			}

			return;
		}
		else
		{
			showAddress((vAddressObject==null || typeof vAddressObject=="undefined" || (typeof vAddressObject!="undefined" && typeof vAddressObject.googleAddress=="undefined")?"Stuttgart, DE":vAddressObject.googleAddress), lngSD, latSD);
		}

		if (vAddressObject==null) {
			window.setTimeout("showMapNames.showCountryNames();", 1000);
		} else {
			window.setTimeout("showMapNames.showRegionNames('"+vAddressObject.land+"');", 1000);
		}

	}
}

function fncUnload()
{
	if (typeof GUnload!="undefined")
	{GUnload();
	}
}

function event_mapChangeEnd(oldZoomLevel, newZoomLevel)
{
	if (mapChangeEndRunning) // Laufende Operationen abbrechen
	{
		/*if (showNamesCalls.timeoutHandle!=null)
		{window.clearTimeout(showNamesCalls.timeoutHandle);
		}
		showNamesCalls={commands: null, timeoutHandle: null};

		if (loadedOrteCalls.timeoutHandle!=null)
		{window.clearTimeout(loadedOrteCalls.timeoutHandle);
		}
		loadedOrteCalls={commands: null, timeoutHandle: null};
		*/

		return;
	}

	mapChangeEndRunning=true;
	
	// Fenster ausblenden
	fncKeyPress({keyCode: 27});
	
	tmpZoomLevel=map.getZoom();
	
	if (tmpZoomLevel<2) // Einen ZoomLevel kleiner 2 nicht zulassen
	{
		tmpZoomLevel=2;
		map.setZoom(tmpZoomLevel);
	}

	map.clearOverlays();

	// Aufrufe und Änderungen durchführen
	if (map!=null)
	{
		//alert(tmpZoomLevel);

		// Map-Typ anhand des Zoom-Faktors setzen
		if (tmpZoomLevel<=6)
		{
			//map.setMapType(G_SATELLITE_MAP);
			map.setMapType(G_HYBRID_MAP);
		}
		if (tmpZoomLevel>=7)
		{map.setMapType(G_HYBRID_MAP);
		}
		
		// Nur in Karte ...
		if (document.getElementById("nurinkarteDiv"))
		{
			if (tmpZoomLevel<=8)
			{			
				document.getElementById("nurinkarteDiv").style.visibility="hidden";
				document.getElementById("nurinkarteDiv").style.display="none";
				fncSwitchCheckboxState("nurinkarte", "empty");
			}
			else
			{
				document.getElementById("nurinkarteDiv").style.visibility="visible";
				document.getElementById("nurinkarteDiv").style.display="block";
			}
		}

		// Orte anzeigen
		clearLoadedOrteCalls();
		fncLoadedOrte("", "", "");

		// Skigebiet anzeigen, falls vorhanden
		if (skigebietMarker!=null)
		{map.addOverlay(skigebietMarker);
		}

		// Ggfs. Umkreis anzeigen
		setUmkreisObject();
		
		if (tmpZoomLevel<5) // Bei einem Zoom-Level kleiner 5, die Landnamen einblenden
		{
			window.setTimeout("showMapNames.showCountryNames();", 10);
			return;
		}
		if (tmpZoomLevel>=5 && tmpZoomLevel<=7) // Zoom-Level zwischen 5 und 9, die Regionname der Map-Maße einblenden
		{
			window.setTimeout("showMapNames.showRegionNames('mapview');", 10);
			return;
		}

	}

	mapChangeEndRunning=false;
}

function changeToLRUO() {
	document.getElementById("expOptionsVolltext").style.display = "none";
	document.getElementById("expOptionsVolltext").style.visibility = "hidden";

	document.suchform.volltext.value = (langtexte.volltextinfo ? langtexte.volltextinfo : "");
	document.suchform.volltext.style.color = volltextcolor;

	document.getElementById("expOptionsLRUO").style.display = "block";
	document.getElementById("expOptionsLRUO").style.visibility = "visible";

	document.body.focus();
}  // end function

function event_beforeShowMapNames()
{
	//alert(showMapNames.land+", "+showMapNames.region+", "+showMapNames.unterregion);

	//alert("mapChangeEndRunning: "+(mapChangeEndRunning?"true":"false"));
	
	if (mapChangeEndRunning)
	{return;
	}

	// Wenn Land-Box ein hidden-Feld ist, dann sind die Einträge Links, dann
	// direkt weiterleiten, auf www.atraveo.[...]/[...]
	if (document.suchform.land.type=="hidden")
	{
		var linkText="";
		if (showMapNames.nameInfoObject.landText!="") {linkText=showMapNames.nameInfoObject.landText;}
		if (showMapNames.nameInfoObject.regionText!="") {linkText=showMapNames.nameInfoObject.regionText;}
		if (showMapNames.nameInfoObject.unterregionText!="") {linkText=showMapNames.nameInfoObject.unterregionText;}
		
		//alert(JSON.stringify(showMapNames.nameInfoObject)+"\n\n"+linkText);
		if (typeof linkText!="undefined" && linkText!="")
		{
			fncPlainUrlCall("../"+(document.location.href.indexOf("server/")!=-1?"allgemein/":"")+(doHTMLLoadCatName?doHTMLLoadCatName+" ":"")+linkText);
			return;
		}
	}
	
	//alert(showMapNames.land+", "+showMapNames.region+", "+showMapNames.unterregion);

	// Wenn Volltext-art über Parameter reinkommt und nicht erster Aufruf
	//if (document.location.search.indexOf("volltext")!=-1 && !firstVolltextCall)
	if (showMapNames.land != "")
	{
		changeToLRUO();
	}
	// firstVolltextCall=false;

	if (showMapNames.land!="" && document.suchform.land.value!=showMapNames.land)
	{
		// Land
		CDropDownBox_SetDefaultValue("land", showMapNames.land);

		// Neue Regionen einladen
		clearComboBox(document.suchform.region);
		fillComboBox(document.suchform.region, "../ajax/getinfo.php?infotype=region&land="+escape(showMapNames.land), true);
		
		clearComboBox(document.suchform.unterregion);
		clearComboBox(document.suchform.ort);
	}
	
	if (showMapNames.land!="" && showMapNames.region!="")
	{
		clearComboBox(document.suchform.unterregion);
		fillComboBox(document.suchform.unterregion, "../ajax/getinfo.php?infotype=unterregion&land="+escape(showMapNames.land)+"&region="+escape(showMapNames.region), true);
		CDropDownBox_SetDefaultValue("region", showMapNames.region);

		CDropDownBox_SetDefaultValue("unterregion", showMapNames.unterregion);

		// Neue Orte einladen
		clearComboBox(document.suchform.ort);
		fillComboBox(document.suchform.ort, "../ajax/getinfo.php?infotype=ort&land="+escape(showMapNames.land)+"&region="+escape(showMapNames.region)+"&unterregion="+escape(document.suchform.unterregion.value), true);
		CDropDownBox_SetDefaultValue("ort", showMapNames.ort);
	}

	mapChangeEndRunning=true;

	map.clearOverlays();
	//map.setMapType((showMapNames.region==''?G_SATELLITE_MAP:G_HYBRID_MAP));
	map.setMapType(G_HYBRID_MAP);
	setLatLngRect(map, showMapNames.nameInfoObject.latLngRect);

 	//clearLoadedOrteCalls();
	//fncLoadedOrte(showMapNames.land, showMapNames.region, showMapNames.unterregion);

	// Suche starten, wenn keine Reisebeginn und Dauer ausgewählt wurde
	if (document.suchform.day.value=="" && document.suchform.month.value=="" && document.suchform.days.value=="" && showMapNames.land!="")
	{
		//alert("suche starten ?");
		startSearchFromMap=true;
		startSearch(false);
		startSearchFromMap=false;
	}

}

function event_afterShowMapNames()
{
	mapChangeEndRunning=false;
	firstVolltextCall=false;

	//alert(showMapNames.AJAXObject.Data);

	if (showMapNames.AJAXObject.Data.indexOf("setNameByPosition")==-1 || document.suchform.region.value!="")
	{
		//alert("Keine mapNames vorhanden");
		clearLoadedOrteCalls();
		fncLoadedOrte(showMapNames.land, showMapNames.region, showMapNames.unterregion);
	}		
}


function showAddress(address, vLongitude, vLatitude)
{
	//alert("showaddress");

	map.clearOverlays();
	//alert(address);

 if (vLongitude!="" && vLatitude!="")
 {var point=new GLatLng(vLatitude*1, vLongitude*1);
  callback_showAddressPoint(address, point);
 }
 else
 {var geocoder=new GClientGeocoder();
   geocoder.getLatLng(address,
   function (point)
   {if (point!=null)
    {callback_showAddressPoint(address, point);
    }
   }
  );
 }
}

function callback_showAddressPoint(address, point)
{
	var addressParts=address.match(/,/g);
	
	var mapZoom=(address=="Stuttgart, DE"?4:6);
	//var mapType=G_SATELLITE_MAP;
	var mapType=G_HYBRID_MAP;

	if (addressParts && address!="Stuttgart, DE")
	{
		mapZoom=10;
		mapType=G_HYBRID_MAP;
	}

	if (map.getZoom()!=mapZoom || map.getCurrentMapType()!=mapType)
	{map.setCenter(point, mapZoom, mapType);
	}
	else if (point)
	{map.panTo(new GLatLng(point.y, point.x));
	}

	mapChangeEndRunning=false;

	// Namen und Orte einblenden
	clearLoadedOrteCalls();
	fncLoadedOrte("", "", "");
}


function searchFullText(vFullText) {
	//map.clearOverlays();

	if (vFullText != "") {
		document.getElementById("volltextWaiter").style.visibility="visible";

		fulltext.URL = "../global/search_europakarte_fulltext.php";
		fulltext.SendRequestData = "fulltext=" + escape(vFullText);  // + "&pid=" + pid + "&lang=" + lang;
		fulltext.CallbackFunction = "callback_fncFullText";
		fulltext.Call();
	}  // end if
}  // end function

function callback_fncFullText() {
	var tmpFullTextResult=eval("("+fulltext.Data+")");

	if (tmpFullTextResult)
	{
		if (typeof tmpFullTextResult.geoRect!="undefined") // Geo-Maße setzen
		{
			setLatLngRect(map, tmpFullTextResult.geoRect);

			if (tmpFullTextResult.latitude!=0 && tmpFullTextResult.latitude!=0)
			{//map.panTo(new GLatLng(tmpFullTextResult.latitude, tmpFullTextResult.longitude));
			}
		}
		else
		{
			if (typeof tmpFullTextResult.googleAddress!="undefined") // Addresse anzeigen
			{showAddress(tmpFullTextResult.googleAddress, tmpFullTextResult.longitude, tmpFullTextResult.latitude);
			}
		}
	}

	// Waiter ausblenden
	document.getElementById("volltextWaiter").style.visibility="hidden";
}

function fncCreateTextMarker(vPosition, vText, vLink)
{
 if (vPosition.x=="" && vPosition.y=="") // Positionierung per vorhandener Daten
 {mapLoadGeoPos.URL="../global/search_europakarte_loadgeopos.php";
	mapLoadGeoPos.SendRequestData="land="+vPosition.land+"&region="+vPosition.region+"&unterregion="+vPosition.unterregion+"&ort="+vPosition.ort;  // pid="+pid+"&lang="+lang+"&
  tmpGeoData=mapLoadGeoPos.Call();
  eval(tmpGeoData);

  if (typeof tmpGeoPoint!="undefined") // Alternativer GeoPoint gefunden, anhand geo_land/region/ort-Tabellen
  {fncSetTextMarker({x: tmpGeoPoint.x, y: tmpGeoPoint.y}, vText, vLink);
  }
  else
  {var geocoder=new GClientGeocoder();
   geocoder.getLatLng(vPosition.googleAddress,
    function (point)
    {if (point!=null)
     {fncSetTextMarker({x: point.x, y: point.y}, vText, vLink);
     }
    }
   );
  }
 }
 else // Direkte Positionierung per x, y
 {fncSetTextMarker(vPosition, vText, vLink);
 }
}

function fncSetTextMarker(vPoint, vText, vLink)
{var textIcon=new GIcon();
 textIcon.image="../global/search_europakarte_genTextPic.php?text="+vText;

 var textIconSize=(vText.length*7);
 textIcon.iconSize=new GSize(textIconSize, 11);
 textIcon.iconAnchor=new GPoint(textIconSize/2, 5);

 var tmpMarker=new GMarker(new GPoint(vPoint.x, vPoint.y), {icon: textIcon, clickable: true, title: vText} );

 GEvent.addListener(tmpMarker, "click",
  function()
  {document.location.href=vLink;
  }
 );
 map.addOverlay(tmpMarker);
}

function fncCreateMarker(vPosObject, vOrtText)
{
 var tmpId=vOrtText.text;

	markers[tmpId]=new Array();

	if ((vOrtText.anzahlOrte*1)==1) // Nur ein Ort im Raster, als Ort anzeigen
	{
		var textIcon=new GIcon();
		var textIconSize=0;

		var anzahlFerienhaeuserLen=vOrtText.anzahlFerienhaeuser.replace(/,\./, "");
		anzahlFerienhaeuserLen=anzahlFerienhaeuserLen.length;
		
		if (anzahlFerienhaeuserLen<=2) {textIconSize=22;}
		if (anzahlFerienhaeuserLen==3) {textIconSize=32;}
		if (anzahlFerienhaeuserLen>=4) {textIconSize=42;}

		textIcon.image="../global/search_europakarte_genBallPic.php?text="+vOrtText.anzahlFerienhaeuser+(navigator.userAgent.indexOf("MSIE 6")!=-1?"&indexedPalette=true":"")+"&orteImage=true";		

		textIcon.iconSize=new GSize(textIconSize, textIconSize);	
		textIcon.iconAnchor=new GPoint(textIconSize/2, textIconSize/2);

		markers[tmpId]["Marker"]=new GMarker(new GLatLng(vPosObject.lat, vPosObject.lng), {icon: textIcon, clickable: true, title: vOrtText.text+" ("+vOrtText.anzahlFerienhaeuser+" "+(vOrtText.anzahlFerienhaeuser==1?langtexte.objekt:langtexte.objekte)+")"} );
	}
	else // Mehrere Orte im Raster, als Anzahl-Ball anzeigen
	{
		var textIcon=new GIcon();
		var textIconSize=0;
		
		var anzahlFerienhaeuserLen=vOrtText.anzahlFerienhaeuser.replace(/,\./, "");
		anzahlFerienhaeuserLen=anzahlFerienhaeuserLen.length;
		
		if (anzahlFerienhaeuserLen<=2) {textIconSize=22;}
		if (anzahlFerienhaeuserLen==3) {textIconSize=32;}
		if (anzahlFerienhaeuserLen>=4) {textIconSize=42;}		
		
		textIcon.image="../global/search_europakarte_genBallPic.php?text="+vOrtText.anzahlFerienhaeuser+(navigator.userAgent.indexOf("MSIE 6")!=-1?"&indexedPalette=true":"");		

		textIcon.iconSize=new GSize(textIconSize, textIconSize);	
		textIcon.iconAnchor=new GPoint(textIconSize/2, textIconSize/2);
		
		markers[tmpId]["Marker"]=new GMarker(new GLatLng(vPosObject.lat, vPosObject.lng), {icon: textIcon, clickable: true, title: langtexte.orteum.replace(/%s/, vOrtText.text)+" ("+vOrtText.anzahlFerienhaeuser+" "+(vOrtText.anzahlFerienhaeuser==1?langtexte.objekt:langtexte.objekte)+")"} );
	}

 GEvent.addListener(markers[tmpId]["Marker"], "click",
	 function() 
		{
			if (vOrtText.anzahlOrte>1 && map.getZoom()<=15)
			{map.zoomIn();
			}
			
			//map.panTo(new GLatLng(vPosObject.lat, vPosObject.lng));
			
			// Suche für Ort starten
			if (vOrtText.anzahlOrte==1)
			{
				// Wenn Land-Box ein hidden-Feld ist, dann sind die Einträge Links, dann
				// direkt weiterleiten, auf www.atraveo.[...]/[...]
				
				if (document.suchform.land.type=="hidden")
				{
					fncPlainUrlCall("../"+(document.location.href.indexOf("server/")!=-1?"allgemein/":"")+(doHTMLLoadCatName?doHTMLLoadCatName+"_":"")+vOrtText.text);
					return;
				}
				
				changeToLRUO();
				
				fncLoadBoxes(vPosObject, vOrtText.text);
				
				startSearchFromMap=true;
				startSearch(false);
				startSearchFromMap=false;
				
				enableUmkreis();
				//setUmkreisObject();
			}

			//alert("Momentan nicht verfügbar.");
		}
	);


	if (yellowMarker!=null && tmpId==yellowMarker.key)
	{map.addOverlay(yellowMarker.marker);
	}
	else
	{map.addOverlay(markers[tmpId]["Marker"]);
	}	

}


function fncLoadedOrte(vLand, vRegion, vUnterregion)
{
	// Karte nicht sichrbar ?, dann abbrechen
	if (hideSearchMap)
	{return;
	}
	
	if (map.getZoom()<6) // kleiner Zoom, keine Ort-Ebene
	{return;
	}

	if (loadedOrteCalls.timeoutHandle!=null)
	{
		return;
		//window.clearTimeout(loadedOrteCalls.timeoutHandle);
		//loadedOrteCalls.timeoutHandle=null;
	}

	loadedOrteCalls.commands="";
	loadedOrteCalls.timeoutHandle=null;

	mapLoadOrte.URL="../global/search_europakarte_loadorte.php";
  mapLoadOrte.SendRequestData="land="+escape(vLand)+"&region="+escape(vRegion)+"&unterregion="+escape(vUnterregion)+"&"+getMapDimensionParameterString(map);

  mapLoadOrte.CallbackFunction="callback_fncLoadedOrte";
  mapLoadOrte.Call();
	
	// Linke Box doHTMLLoad (Suchemaschinen-Inhalte) nachladen
	fncLoadDoHTMLLoadBox()
}

function fncLoadedOrteCall()
{
	if (loadedOrteCalls.commands!=null && loadedOrteCalls.commands.length>0)
	{
		var tmpCommandString=loadedOrteCalls.commands[loadedOrteCalls.commands.length-1];
		loadedOrteCalls.commands.pop();

		if (tmpCommandString.substr(tmpCommandString.length-1, 1)==";")
		{eval(tmpCommandString);
		}
		else
		{//alert("nicht ausgeführt: "+tmpCommandString);
		}

		loadedOrteCalls.timeoutHandle=window.setTimeout("fncLoadedOrteCall()", 0);
		return;
	}

	loadedOrteCalls.timeoutHandle=null;
	loadedOrteCalls.commands=null;

	mapChangeEndRunning=false;
}

function callback_fncLoadedOrte()
{
	loadedOrteCalls.commands=new Array();
	loadedOrteCalls.commands=mapLoadOrte.Data.split("\n");

	if (loadedOrteCalls.commands.length>3)
	{loadedOrteCalls.timeoutHandle=window.setTimeout("fncLoadedOrteCall()", 0);
	}
}

function clearLoadedOrteCalls()
{
	if (loadedOrteCalls.timeoutHandle!=null)
	{window.clearTimeout(loadedOrteCalls.timeoutHandle);
	}
	loadedOrteCalls.timeoutHandle=null;
	loadedOrteCalls.commands=null;
}

/* MapSearch-State */
function fncSwitchMapDisplay()
{
	if (document.getElementById("googlemap").style.display=="block") // Sichtbar ?, einklappen
	{
		document.getElementById("idSwitchMapDisplayCloser").style.display="none";
		document.getElementById("googlemap").style.display="none";
		document.getElementById("googlemaplegende").style.display="none";

		document.getElementById("expOptions").style.width="98%";

		document.getElementById("idSwitchMapDisplayOpener").style.display="block";

		fncSaveSearchMapState("1");
		hideSearchMap=true;
		mapChangeEndRunning=false;
	}
	else // Nicht sichtbar ?, ausklappen
	{
		document.getElementById("idSwitchMapDisplayOpener").style.display="none";
		document.getElementById("googlemap").style.display="block";
		document.getElementById("googlemaplegende").style.display="block";

		if (document.getElementById("map").style.width!="98%")
		{document.getElementById("expOptions").style.width="350px";
		}

		document.getElementById("idSwitchMapDisplayCloser").style.display="block";

		fncSaveSearchMapState("");
		hideSearchMap=false;
		mapChangeEndRunning=false;
		
		// Wenn Karte noch nicht initialisiert wurde...
		if (map==null)
		{
			fncLoad(givenAddressObject);
			window.setTimeout("fncChangeMapAfterHide();", 1000);
		}
		else
		{fncChangeMapAfterHide();
		}
	}
}

function fncChangeMapAfterHide()
{
	if (document.suchform.unterregion.value!="")
	{changeUnterregion({value: document.suchform.unterregion.value});
	}
	else if (document.suchform.region.value!="")
	{changeRegion({value: document.suchform.region.value});
	}
	else if (document.suchform.land.value!="")
	{changeLand({value: document.suchform.land.value});
	}
}

function fncSaveSearchMapState(vValue)
{
	savehidesearchmapstate.URL="../ajax/saveHideSearchMapState.php";
	savehidesearchmapstate.SendRequestData="hsm="+vValue;
	savehidesearchmapstate.CallbackFunction="callback_fncSaveSearchMapState";
	savehidesearchmapstate.Call();
}

function callback_fncSaveSearchMapState() 
{
	//alert(savehidesearchmapstate.Data);
}

function nurinkarteKlick(vObject)
{
	if (!document.getElementById("nurinkarteDiv"))
	{return;
	}
	
	if (vObject.status=="checked")
	{
		closeSoundlikeWindow();
		document.getElementById("expOptionsLRUO").style.display="none";
		document.getElementById("nurinkarteBox").style.display="block";
	}
	if (vObject.status=="unchecked")
	{
		document.getElementById("nurinkarteBox").style.display="none";
		document.getElementById("expOptionsLRUO").style.display="block";
	}
}

function suchergebnisinkarteKlick(vObject)
{
	// Ob die URL bereits geladen wurde, wird in loadJsUrl gespeichert
	loadJsUrl("../js/suchergebnisseinkarte.js");
	
	// Wert setzen, ob Karte die Suchergebnisse enthält
	mapProperties.viewSearchItems=(vObject.status=="checked"?true:false);
}

function landregionLinkKlick(vObject)
{
	// Wert setzen, ob Karte die Land-/Region-Bälle enthält
	mapProperties.landregionLinks=(vObject.status=="checked"?true:false);
	
	if (mapProperties.landregionLinks==true)
	{showMapNames.showMarkers();
	}
	if (mapProperties.landregionLinks==false)
	{showMapNames.hideMarkers();
	}
}

function ortLinkKlick(vObject)
{
	// Wert setzen, ob Karte die Ort-Bälle enthält
	mapProperties.ortLinks=(vObject.status=="checked"?true:false);
}



function setUmkreisObject(vObject)
{
	// Karte nicht sichrbar ?, dann abbrechen
	if (hideSearchMap)
	{return;
	}

	if (document.suchform.wohnortLatitude.value != 0 && document.suchform.wohnortLongitude.value != 0) {
		var point = new GPoint(document.suchform.wohnortLatitude.value, document.suchform.wohnortLongitude.value);

		var tmpMinUmkreis = (document.suchform.minumkreis.value > 0 ? document.suchform.minumkreis.value : 0);
		var tmpMaxUmkreis = (document.suchform.maxumkreis.value > 0 ? document.suchform.maxumkreis.value : 0);
	} else {
		var ortMarker=markers[document.suchform.ort.value];
		
		if (typeof ortMarker=="undefined")
		{
			if (umkreisObject!=null)
			{umkreisObject.HidePolyObject();
			}
			return;
		}

		// Marker holen
		ortMarker=ortMarker["Marker"];
		
		// Punkt holen
		var point=ortMarker.getPoint();

		// Umkreis
		var tmpMinUmkreis = 0;
		var tmpMaxUmkreis = (document.suchform.umkreis.value > 0 ? document.suchform.umkreis.value : 0);
	}  // end if
	
	
	if (umkreisObject==null)
	{
		// CPolyObject nachladen
		//loadJsUrl("../js/CPolyObject.js");
		
		umkreisObject=new CPolyObject(map, "umkreisObject");
		umkreisObject.useObjects.polyObjects=true;
		umkreisObject.useObjects.markers=false;
		umkreisObject.style={borderWeight: 1, borderColor: "#FFC600", borderOpacity: 0.35, backgroundColor: "#FFC600", backgroundOpacity: 0.25};
	}

	if (tmpMaxUmkreis > 0)
	{
		if (typeof point.lat == "function") {
			umkreisObject.Circle({lat: point.lat(), lng: point.lng()}, tmpMaxUmkreis, tmpMinUmkreis);
		} else {
			umkreisObject.Circle({lat: point.x, lng: point.y}, tmpMaxUmkreis, tmpMinUmkreis);
		}  // end if
		umkreisObject.ShowPolyObject();
	}
	else
	{
		umkreisObject.HidePolyObject();
	}
}

