	
	var map;
	var vorschlagDump = "vorschlagdump_5.php";
	var vorschlagDirectZoomID = 0;
	var vorschlagDirectZoomMarker = 0;
	var slideshowOverlay = 0;
	
    function load() {
      if (GBrowserIsCompatible()) {
		
		//jsDebug('START');
		
     	map = new GMap2(document.getElementById("goomap"));
        map.setCenter(new GLatLng(letztelat+anfangsLatVerschiebung,letztelong), anfangszoomwert, G_SATELLITE_MAP);
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		//map.addControl(new GOverviewMapControl());
		
		// VARIABLEN ////////////
		var alterzoomLevel;
		var kartezoomed = 0; //wird gesetzt bei zoom, sonst springt moveend nach zoom an
		var altesminLat;
		var altesmaxLat;
		var altesminLng;
		var altesmaxLng;
		var requestSchwelle_lng = 0;
		var requestSchwelle_lat = 0;
		var requestSchwelle_wert_lng = 3.5;
		var requestSchwelle_wert_lat = 2.3;
		var infowindowopen= 0;
		var requestNachFensterzu = 0;
		
		
		// MEINE ICONS //////////
		var baseIcon = new GIcon();
		baseIcon.image = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		baseIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
		baseIcon.iconSize = new GSize(12, 20);
		baseIcon.shadowSize = new GSize(22, 20);
		baseIcon.iconAnchor = new GPoint(6, 20);
		baseIcon.infoWindowAnchor = new GPoint(5, 1);
		var icon_green = new GIcon(baseIcon);
		icon_green.image = "http://labs.google.com/ridefinder/images/mm_20_green.png";
		var icon_white = new GIcon(baseIcon);
		icon_white.image = "http://labs.google.com/ridefinder/images/mm_20_white.png";
		var icon_yellow = new GIcon(baseIcon);
		icon_yellow.image = "http://labs.google.com/ridefinder/images/mm_20_yellow.png";
		
		// DIE REQUEST FUNKTION ////////////////////////////////////
		function mapserverrequest(){
			
			var GLatLngBoundsObj = map.getBounds();
			altesminLat = GLatLngBoundsObj.getSouthWest().lat();
			altesminLng = GLatLngBoundsObj.getSouthWest().lng();
			altesmaxLat = GLatLngBoundsObj.getNorthEast().lat();
			altesmaxLng = GLatLngBoundsObj.getNorthEast().lng();
			alterzoomLevel = 19 - map.getZoom();
			requestSchwelle_lng = (altesmaxLng - altesminLng) / requestSchwelle_wert_lng;
			requestSchwelle_lat = (altesmaxLat - altesminLat) / requestSchwelle_wert_lat;
			
			var wordltripdumpDat = "worldtripdump_24.php?minX="+altesminLng+"&maxX="+altesmaxLng+"&minY="+altesminLat+"&maxY="+altesmaxLat+"&mapWidth="+map.getSize().width+"&zoomlev="+alterzoomLevel+"&projektid="+projektid+"&r=" + Math.random();
			//debug(wordltripdumpDat);
			
			GDownloadUrl(wordltripdumpDat, function(data, responseCode) {
				var xml = GXml.parse(data);
				var medienliste = xml.documentElement.getElementsByTagName("media");
				for (var i = 0; i < medienliste.length; i++) {
					var point = new GLatLng(parseFloat(medienliste[i].getAttribute("media_lat")),
											parseFloat(medienliste[i].getAttribute("media_lng")));
					if(medienliste[i].getAttribute("mimety") == "avi"){
						map.addOverlay(createMediaMarker(point, medienliste[i].getAttribute("mediaxml"), icon_yellow));
					}else{
						map.addOverlay(createMediaMarker(point, medienliste[i].getAttribute("mediaxml"), icon_green));
					}
				}
				
				var vorschlagliste = xml.documentElement.getElementsByTagName("vorschlag");
				for (var i = 0; i < vorschlagliste.length; i++) {
					var point = new GLatLng(parseFloat(vorschlagliste[i].getAttribute("vor_lat")),
											parseFloat(vorschlagliste[i].getAttribute("vor_lng")));
					map.addOverlay(createVorschlagMarker(point, vorschlagliste[i].getAttribute("tblheader"), vorschlagliste[i].getAttribute("vorschID"), vorschlagliste[i].getAttribute("ortID"), icon_white));
					// ORT WURDE DIREKT GEZOOMT /////////
					if(vorschlagDirectZoomMarker != 0){
						//jsDebug("ja");
						GEvent.trigger(vorschlagDirectZoomMarker,'click'); 
						vorschlagDirectZoomID = 0;
						vorschlagDirectZoomMarker = 0;
					}
				}
				
				var points = [];
				var trackliste = xml.documentElement.getElementsByTagName("trackpoint");
				for (var i = 0; i < trackliste.length; i++) {
					points.push(new GLatLng(parseFloat(trackliste[i].getAttribute("lat")),
											parseFloat(trackliste[i].getAttribute("lng"))));
				}
				if(points.length > 1){ // sonst bug, macht keinen zoomevent mehr
					map.addOverlay(new GPolyline(points,"#ffffff",2,0.5));
				}
				
							
			});
		}
		
		// EVENT HANDLER //////////////////////////////////////////
	  	GEvent.addListener(map, "moveend", function() {
			
			if(19 - map.getZoom() == alterzoomLevel && kartezoomed == 0){
		  		var GLatLngBoundsObj = map.getBounds();
				var minLat = GLatLngBoundsObj.getSouthWest().lat();
				var minLng = GLatLngBoundsObj.getSouthWest().lng();
				var maxLat = GLatLngBoundsObj.getNorthEast().lat();
				var maxLng = GLatLngBoundsObj.getNorthEast().lng();
				
				if(minLng < (altesminLng - requestSchwelle_lng) || minLng > (altesminLng + requestSchwelle_lng) || minLat < (altesminLat - requestSchwelle_lat) || minLat > (altesminLat + requestSchwelle_lat)){
					if(infowindowopen == 0){ // Geöffnets Fenster würde sonst geschlossen werden
						//jsDebug("request durch move");
						map.clearOverlays();
						slideshowOverlay = 0;
						mapserverrequest(map);
					}else{
						requestNachFensterzu = 1;
					}
				}
		  		
			}
			if(kartezoomed == 1){
				kartezoomed = 0; // kartezoomed auf null nach zoom
			}
		});
		
		GEvent.addListener(map, "zoomend", function() {
			//jsDebug("zoomend");
			map.clearOverlays();
			kartezoomed = 1;
			mapserverrequest();
			if(backendExtras == 1){
				divInhalt("AKTUELLER ZOOM = " + (19 - map.getZoom()), 'zoomfeld')
			}
		});
		
		GEvent.addListener(map, "infowindowopen", function() {
			infowindowopen = 1;
		});
		
		GEvent.addListener(map, "infowindowclose", function() {
			infowindowopen = 0;
			if(requestNachFensterzu == 1){
				requestNachFensterzu = 0;
				map.clearOverlays();
				mapserverrequest();
			}
		});
	  
	  	
		mapserverrequest();
		
	  }else{
		alert('Ihr Browser ist leider zu alt fuer diese Anwendung');  
	  }
    }
	
	////////////////////////////////////////////////////////////////////////////////////////////////
	// FUNKTIONEN //////////////////////////////////////////////////////////////////////////////////
		
	// Creates a marker at the given point with the given number label
	function createMediaMarker(point, mediaxmlfile, icon) {
	  var marker = new GMarker(point, icon);
	  GEvent.addListener(marker, "click", function() {
			mediaTable(marker, mediaxmlfile)
	  });
	  return marker;
	}
	
	
	function createVorschlagMarker(point, vorschlagheader, vorschID, ortID, icon) {
		var marker = new GMarker(point, icon);
		if(vorschID){var directZoomCheckID = vorschID;}
		if(ortID){var directZoomCheckID = ortID;}
		if(vorschlagDirectZoomID && vorschlagDirectZoomID == directZoomCheckID){
			vorschlagDirectZoomMarker = marker;
		}
		GEvent.addListener(marker, "click", function () {
			// ES GIBT EINEN ORT MIT EINEM VORSCHLAG ///
			if(vorschID){ 
				//debug(vorschlagDump+"?id="+vorschID);
				GDownloadUrl(vorschlagDump+"?id="+vorschID, function(data, responseCode) {
					var xml = GXml.parse(data);
					var userTag = xml.documentElement.getElementsByTagName("user");
					var username = userTag[0].getAttribute("name");
					var vorschlag = userTag[0].getAttribute("vorschlag");
					var threadid = userTag[0].getAttribute("threadid");
					var html = "<table style='width:240px;' height='112'><tr><td valign=\"top\">"+vorschlagheader+"</td></tr><tr><td>von: "+username+"</td></tr><tr><td><textarea cols=45 rows=5 class='inputbox' readonly>"+vorschlag+"</textarea></td></tr><tr><td><a href=\"../forum/viewtopic.php?id="+threadid+"\" class=\"miniMarkerFont\">ZUR DISKUSSION DIESES VORSCHLAGS &gt;&gt;&gt;</a></td></tr></table>";
					marker.openInfoWindowHtml(html); 
				});
			// ES GIBT EINEN ORT MIT MEHREREN VORSCHLAEGEN ///
			}else if(ortID){
				var html = "<table id='vorschtable' style='width:240px;' height='112'><tr><td valign=\"top\">"+vorschlagheader+"</td></tr><tr><td valign=\"top\">&nbsp;</td></tr><tr><td valign=\"top\"><textarea cols=45 rows=5 class='inputbox' readonly>&nbsp;</textarea></td></tr></table>";
				marker.openInfoWindowHtml(html);
			}else{
				var html = "<table style='width:240px;' height='112'><tr><td valign=\"top\">"+vorschlagheader+"</td></tr></table>";
				marker.openInfoWindowHtml(html);
			}
		});
		return marker;
	}
	

	function debug(requesturl){
		if(jsDebugAn == 1){ document.getElementById("message").innerHTML = "<a href=\""+requesturl+"\">"+requesturl+"</a>"; }
	}
	
	
	function imagedirectzoom(lng,lat,bildordner,bild,mimety,zoomstufe){
		
		var dasbild = bild;
		if(mimety == "JPG"){
			var fullpfad = "<img src="+bildordner+"/"+bild+" border=0>";
			var html = "<table width=\"160\" height=\"120\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><td>";
			html += "<a href=\"javascript:fullmedia(\'"+fullpfad+"\')\"><img src="+bildordner+"thumbs/"+bild+" border=0></a><br>";
			html += "<a href=\"javascript:fullmedia(\'"+fullpfad+"\')\"><nobr>IM GROSSFORMAT</nobr></a>";
			html += "</td></table>";
		}
		if(mimety == "AVI"){
			// Endungspatch ////////
			var videoname = videoname_patch(dasbild);
			var fullpfad = "<img src="+bildordner+"/"+bild+" border=0>";
			var html = "<div style='width:95px;height:130px;' align='left'>";
			html += "<a href=\"javascript:fullvideo(\'"+bildordner+"videos/"+videoname+"\')\"><img src="+bildordner+"thumbs/"+bild+" border=0></a><br>";
			html += "<a href=\"javascript:fullvideo(\'"+bildordner+"videos/"+videoname+"\')\"><nobr>VIDEO-CLIP ANZEIGEN</nobr></a>";
			html += "</div>";
		}
		map.clearOverlays();
		map.setCenter(new GLatLng(lat,lng),  14);
		map.openInfoWindowHtml(new GLatLng(lat,lng), html);
	}
			
	function jsDebug(message){
		if(jsDebugAn == 1){ GLog.write(message);}	
	}
	
	function mediaTable(marker, mediaxmlfile){
		
		//GLog.write(seitenrootUrl+"/clusterfiles/media_"+projektid+"/"+mediaxmlfile);
		//debug(seitenrootUrl+"/clusterfiles/media_"+projektid+"/"+mediaxmlfile);
		GDownloadUrl(seitenrootUrl+"/clusterfiles/media_"+projektid+"/"+mediaxmlfile+".xml", function(data, responseCode) {
		  	
			var xml = GXml.parse(data);
			var markerwindowTable = xml.documentElement.getElementsByTagName("mediatable");
		  	marker.openInfoWindowHtml(markerwindowTable[0].getAttribute("table")); 
			
		});
	}
	
	function slidemarker_set(lng,lat,zoomstufe){
		var zommstufe_v2 = 17 - zoomstufe;
		map.setCenter(new GLatLng(lat,lng), zommstufe_v2);
		var point = new GLatLng(lat,lng);
		if (slideshowOverlay == 1){
			slidemarker_remove();
		}
		slidemarker = new GMarker(point);
		map.addOverlay(slidemarker);
		slideshowOverlay = 1;
	}
	
	function slidemarker_move(lng,lat){
		map.panTo(new GLatLng(lat, lng));
		if(!slideshowOverlay){ // wurde durch move event geloescht
			var point = new GLatLng(lat,lng);
			slidemarker = new GMarker(point);;
			map.addOverlay(slidemarker);
			slideshowOverlay = 1;
		}else{
			slidemarker.setPoint(new GLatLng(lat, lng));
		}
	}
	
	function vorschlagAuswahl(vorschID){
		debug(vorschlagDump+"?id="+vorschID);
		GDownloadUrl(vorschlagDump+"?id="+vorschID, function(data, responseCode) {
			var xml = GXml.parse(data);
			var userTag = xml.documentElement.getElementsByTagName("user");
			var username = userTag[0].getAttribute("name");
			var vorschlag = userTag[0].getAttribute("vorschlag");
			var threadid = userTag[0].getAttribute("threadid");
			var tbl = document.getElementById("vorschtable");
			tbl.rows[1].cells[0].innerHTML = "von: "+username;
			tbl.rows[2].cells[0].innerHTML = "<textarea cols=45 rows=5 class='inputbox' readonly>"+vorschlag+"</textarea><br><a href=\"../forum/viewtopic.php?id="+threadid+"\" class=\"miniMarkerFont\">ZUR DISKUSSION DIESES VORSCHLAGS &gt;&gt;&gt;</a>";
		});
	}
		
	function vorschlagzoom(latlngId){
		var latlngIdArry = latlngId.split(",");
		map.clearOverlays();
		vorschlagDirectZoomID = latlngIdArry[2];
		//jsDebug(vorschlagDirectZoomID);
		map.setCenter(new GLatLng(latlngIdArry[0],latlngIdArry[1]), 12);
		//map.openInfoWindowHtml(new GLatLng(lat,lng), html);
	}
	
 
 
 
 