		
// MEINE ICONS //////////
/*
var icon_film = new GIcon();
icon_film.image = "../bilder/gmapbilder/mapicon_report_2828.png";
icon_film.iconSize = new GSize(28, 28);
icon_film.iconAnchor = new GPoint(14, 28);
icon_film.infoWindowAnchor = new GPoint(14, 14);

var icon_tipp = new GIcon();
icon_tipp.image = "../bilder/gmapbilder/mapicon_tipp.png";
icon_tipp.iconSize = new GSize(10, 10);
icon_tipp.iconAnchor = new GPoint(5,10);
icon_tipp.infoWindowAnchor = new GPoint(5, 5);

var icon_media = new GIcon();
icon_media.image = "../bilder/gmapbilder/mapicon_notiz.png";
icon_media.iconSize = new GSize(14, 14);
icon_media.iconAnchor = new GPoint(7,14);
icon_media.infoWindowAnchor = new GPoint(7, 7);

var icon_standard = new GIcon();
icon_standard.image = "../bilder/gmapbilder/mapicon_standard_rahmen.png";
//icon_standard.shadow = "../bilder/gmapbilder/mapicon_standard_schatten.png";
icon_standard.iconSize = new GSize(34, 34);
icon_standard.iconAnchor = new GPoint(17, 31);
icon_standard.infoWindowAnchor = new GPoint(14, 14);

var vorschIcon = new GIcon();
	vorschIcon.iconSize = new GSize(12, 20);
	vorschIcon.shadowSize = new GSize(22, 20);
	vorschIcon.iconAnchor = new GPoint(6, 20);
	vorschIcon.infoWindowAnchor = new GPoint(5, 1);
	vorschIcon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
var vorschicon_red = new GIcon(vorschIcon);
	vorschicon_red.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
*/

var icon_film = MapIconMaker.createMarkerIcon({width: 30, height: 30, primaryColor: "#AC000B", cornerColor: "#AC000B", strokeColor: "#000000"});
var icon_tipp = MapIconMaker.createMarkerIcon({width: 17, height: 17, primaryColor: "#dfe078", cornerColor: "#dfe078", strokeColor: "#000000"});
var icon_media = MapIconMaker.createMarkerIcon({width: 20, height: 20, primaryColor: "#e69a21", cornerColor: "#e69a21", strokeColor: "#000000"});
var vorschicon_red = MapIconMaker.createMarkerIcon({width: 28, height: 28, primaryColor: "#F8FF7F", cornerColor: "#F8FF7F", strokeColor: "#000000"});



	function mapinit(){
		//new Effect.Opacity('gooMsg', {duration:0, from:0.9, to:0.9});
		//document.getElementById('gooMsgText').innerHTML = "LADE KARTEN-ELEMENTE";
		
		if (GBrowserIsCompatible()) {
			
			map = new GMap2(document.getElementById("goomap"));						
			//controler
			var mapCntrl_topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(3,50));
			var mapType_topRight = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(3,5));
			var mapOverv_botRight = new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10, 10));
			map.addControl(new GLargeMapControl(),mapCntrl_topRight);
			map.addControl(new GMapTypeControl(), mapType_topRight);
			map.enableDoubleClickZoom();
			map.enableContinuousZoom();
			//map.setMapType(G_SATELLITE_MAP);
			
			addkm42logo();
			mapInited = 1;
			
			if(vorschlagDirectZoomID == 0){
				var longoffset = parseFloat(aktelleGm_long) - 11;
				map.setCenter(new GLatLng(aktelleGm_lat,longoffset), 5,G_SATELLITE_MAP);
				standardMarkerSet(aktelleGm_lat,aktelleGm_long, 5);
			}else{
				map.setCenter(new GLatLng(ortAufrufForumLat,ortAufrufForumLng), 10,G_SATELLITE_MAP);
			}
			
						
			// EVENT HANDLER //////////////////////////////////////////
			GEvent.addListener(map, "load", function() {
				debug('KARTE ANGELEGT');
			});
			
			GEvent.addListener(map, "moveend", function() {
				
				// WURDE GEZOOMT? 
				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();
					
					// WURDE DIE KARTE UM 2/3 VERSCHOBEN?
					if(minLng < (altesminLng - requestSchwelle_lng) || minLng > (altesminLng + requestSchwelle_lng) || minLat < (altesminLat - requestSchwelle_lat) || minLat > (altesminLat + requestSchwelle_lat)){
						// IST EIN FENSTER OFFEN
						if(infowindowopen == 0 && tippProcessRuns == 0 ){ // Ge�ffnets Fenster w�rde sonst geschlossen werden && Suchergebnisse verschwinden
							map.clearOverlays();
							//mapserverrequest(map);
							window.setTimeout(mapserverrequest, 0);
						}else{
							requestNachFensterzu = 1;
						}
					}
					
				}
				if(kartezoomed == 1){
					kartezoomed = 0; // kartezoomed auf null nach zoom
				}
			});
			
			GEvent.addListener(map, "zoomend", function() {
				if(tippProcessRuns == 0){ 
					infowindowopen = 0;
					kartezoomed = 1;
					map.clearOverlays();
					window.setTimeout(mapserverrequest, 0); 
				}
			});
			
			GEvent.addListener(map, "infowindowopen", function() {
				infowindowopen = 1;
			});
			
			GEvent.addListener(map, "clearoverlays", function() {
				addkm42logo();
			});
			
			GEvent.addListener(map, "infowindowclose", function() {
				if (tippProcessRuns == 0) {
					infowindowopen = 0;
					// NACHLADEN
					if (requestNachFensterzu == 1) {
						requestNachFensterzu = 0;
						map.clearOverlays();
						//mapserverrequest();
						window.setTimeout(mapserverrequest, 0);
					}
				}
			});
			
			GEvent.addListener(map, "click", function() {
				fullmedia_downscale();
			});
				
			mapserverrequest();
			
			// Alles geladen, timeout loeschen und Beitrag laden
			window.clearTimeout(beitragInitTimeout);
			
			
		}else{
			alert('Ihr Browser ist leider zu alt fuer diese Anwendung');  
		}
			
	}
	
	function addkm42logo(){
		logo = new GScreenOverlay('../bilder/sitewide/km42_logo.png',
			new GScreenPoint(725, 0),  // screenXY
			new GScreenPoint(0, 0),  // overlayXY
			new GScreenSize(90, 62)  // size on screen
		);
		map.addOverlay(logo);
	}
			
	function allRequestsCheck(allMarkerLoaded,markeranzahl){
		if(allMarkerLoaded >= 3){ 
			document.getElementById('gooMsg').style.visibility = "hidden";
			allMarkerLoaded = 0;
			mapGeladenOffen = 1;
		}
	}
	
	// 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() {
			if(video_mini == 0){ del_fullmedia(); }
			mediaTable(marker, mediaxmlfile)
	  });
	  return marker;
	}
	
	
	function createVorschlagMarker(point, clusterID, vorschID, ortID, icon) {
		
		var marker = new GMarker(point, icon);
		marker.clusterID = clusterID;
		if(vorschID){
			var directZoomCheckID = vorschID;
			marker.vorschID = vorschID;
		}
		if(ortID){
			var directZoomCheckID = ortID;
			marker.ortID = ortID;
		}
		//marker.vorschlagheader = vorschlagheader;
				
		if(vorschlagDirectZoomID && vorschlagDirectZoomID == directZoomCheckID){
			vorschlagDirectZoomMarker = marker;
		}
		GEvent.addListener(marker, "click", function () {
			// Bei Klick auf den Marker
			// Infow Window Nav und Content DIV anlegen
			if(video_mini == 0){ del_fullmedia(); }
			
			aktuellerVorschlagMarker = marker;
			//var markernavi = "<div class=\"miniMarkerFont\"><span id=\"marker_nav_1\" style=\"font-weight:bold;\"><a href=\"javascript:vorschlagMarkerBuild();\">TIPPS</a></span> | <span id=\"marker_nav_2\" style=\"font-weight:normal;\"><a href=\"javascript:showGeoRSS("+point.lat()+","+point.lng()+");\">MELDUNGEN IM UMKREIS</a></span></div>";
			//var html = markernavi+"<div id=\"vorschContentDiv\" class=\"miniMarkerFont\" style=\"height:140px;width:320px;margin-top:5px;line-height:1.2em;\"><img src=\"../bilder/sitewide/loading.gif\" style=\"margin-top:5px;\">&nbsp;LADE TIPPS<div>";
			var html = "<div id=\"vorschContentDiv\" class=\"miniMarkerFont\" style=\"height:170px;width:320px;margin-top:5px;line-height:1.2em;\"><img src=\"../bilder/sitewide/loading.gif\" style=\"margin-top:5px;\">&nbsp;LADE TIPPS<div>";
			marker.openInfoWindowHtml(html);
			vorschlagMarkerBuild();
		});
		return marker;
	}
		
	function imagedirectzoom(lng,lat,bildordner,bild,mimety,zoomstufe){
		
		if(mapInited == 1){
			var dasbild = bild;
			if(mimety == "JPG"){
				var fullpfad = "<img src="+bildordner+"full/"+bild+" border=0>";
				var html = "<span class=\"miniMarkerFont\"><a href=\"javascript:fullmedia(\'"+fullpfad+"\')\"><img src="+bildordner+"thumbs/"+bild+" border=0></a><br>";
				html += "<a href=\"javascript:fullmedia(\'"+fullpfad+"\')\">IM GROSSFORMAT</a></span>";
			}
			if(mimety == "AVI"){
				// Endungspatch ////////
				var videoname = videoname_patch(dasbild);
				var fullpfad = "<img src="+bildordner+"/"+bild+" border=0>";
				var html = "<div class=\"miniMarkerFont\" 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+"\')\">VIDEO-CLIP ANZEIGEN</a>";
				html += "</div>";
			}
			map.setCenter(new GLatLng(lat,lng),  14);
			map.openInfoWindowHtml(new GLatLng(lat,lng), html);
		}else{
			todoFunc = "imagedirectzoom("+lng+","+lat+",'"+bildordner+"','"+bild+"','"+mimety+"',"+zoomstufe+")";
		}
	}
			
	function jsDebug(message){
		GLog.write(message);	
	}
	
	function latlng_offsetPosCalc(lat,lng,zommstufe_v2){
		var latlng_pxlObj = map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(lat,lng),zommstufe_v2); 
		var x_pxl = latlng_pxlObj.x;
		
		var x_offsetPos = x_pxl - xpxloffset;
		var xy_offset = new GPoint(x_offsetPos,latlng_pxlObj.y);
		var latlng_offsetPos = map.getCurrentMapType().getProjection().fromPixelToLatLng(xy_offset,zommstufe_v2);
		return latlng_offsetPos;
	}


	// 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 markeranzahl = 0;
		
		var wordltripdumpDat = "worldtripdump.php?minX="+altesminLng+"&maxX="+altesmaxLng+"&minY="+altesminLat+"&maxY="+altesmaxLat+"&mapWidth="+map.getSize().width+"&zoomlev="+alterzoomLevel+"&projektid="+projektid+"&r=" + Math.random();
		
		//jsDebug(wordltripdumpDat);
		
		document.getElementById('gooMsg').style.backgroundColor = msg_loadfarbe;
		document.getElementById('gooMsg').style.visibility = "visible";
		document.getElementById('gooMsg').innerHTML = loadingGif + "LADE MARKER";
						
		GDownloadUrl(wordltripdumpDat, function(data, responseCode) {
			var xml = GXml.parse(data);
			//jsDebug(xml);
			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: icon_film}));
					//map.addOverlay(createMediaMarker(point, medienliste[i].getAttribute("mediaxml"), icon_yellow));
				}else{
					map.addOverlay(createMediaMarker(point, medienliste[i].getAttribute("mediaxml"), {icon: icon_media}));
				}
				markeranzahl++;
				if(i==(medienliste.length-1)){ allRequestsCheck(allMarkerLoaded++,markeranzahl); }
			}
			if(medienliste.length == 0){allRequestsCheck(allMarkerLoaded++,markeranzahl);}
			
			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("clusterID"), vorschlagliste[i].getAttribute("vorschID"), vorschlagliste[i].getAttribute("ortID"), {icon: icon_tipp}));
				// ORT WURDE DIREKT GEZOOMT /////////
				if(vorschlagDirectZoomMarker != 0){
					GEvent.trigger(vorschlagDirectZoomMarker,'click'); 
					aktuellerVorschMarker = vorschlagDirectZoomID;
					vorschlagDirectZoomID = 0;
					vorschlagDirectZoomMarker = 0;
				}
				markeranzahl++;
				if(i==(vorschlagliste.length-1)){ allRequestsCheck(allMarkerLoaded++,markeranzahl); }
				
			}
			if(vorschlagliste.length == 0){allRequestsCheck(allMarkerLoaded++,markeranzahl);}
			
			var tracks = xml.documentElement.getElementsByTagName("track");
			//jsDebug(tracks.length);
			for (var a = 0;a<tracks.length;a++ )
			{
				var points = [];	
				var trackliste = tracks[a].getElementsByTagName("trackpoint")
				//jsDebug(trackliste.length);
				for (var i = 0; i < trackliste.length; i++) 
				{
					points.push(new GLatLng(parseFloat(trackliste[i].getAttribute("lat")),
								parseFloat(trackliste[i].getAttribute("lng"))));
					if(i==(trackliste.length-1)){ allRequestsCheck(allMarkerLoaded++,markeranzahl); }
				}	
				
				if(points.length > 1){ // sonst bug, macht keinen zoomevent mehr
					map.addOverlay(new GPolyline(points,"#ffffff",2,0.7));
				}
					if(trackliste.length == 0){allRequestsCheck(allMarkerLoaded++,markeranzahl);}
			}
			

		});
		
		
		
		// ASL ist gerade aktiv und marker soll sofort wieder auftauchen
		if (standardMarkerRemoved == 1 && standardMarkerActive == 1){
		//if (standardMarkerRemoved == 1 && slideshowIsRunning == 1){
			standardMarkerSet(letzteSshowOverlLat,letzteSshowOverlLng, map.getZoom());
		}
		
		/*if(directLinkID != 0){
			directLink(directLinkID);
			directLinkID = 0;
		}*/
		
		returnvar = 1;
		return returnvar;
	}
			
	function beliebgLatLng_nachRechts(lat,lng){
		var aktuellerZoom = map.getZoom();
		var latlng_pxlObj = map.getCurrentMapType().getProjection().fromLatLngToPixel(new GLatLng(lat,lng),aktuellerZoom); 
		var stage_centerPxl = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getCenter(),map.getZoom());
		var pxlDist = (stage_centerPxl.x + xpxloffset) - latlng_pxlObj.x;
		var newXPxCenter = stage_centerPxl.x - pxlDist;
		var newLatLngCenter = map.getCurrentMapType().getProjection().fromPixelToLatLng(new GPoint(newXPxCenter,stage_centerPxl.y),aktuellerZoom);
		
		map.panTo(newLatLngCenter);
	}
	
	function mediaTable(marker, mediaxmlfile){
		
		var mediaXMLpfad = "xmlproxy.php?url="+clusterRootUrl+"/clusterfiles/"+mediaxmlfile+".xml";
		//debug(mediaXMLpfad);
		GDownloadUrl(mediaXMLpfad, function(data, responseCode) {
		  	
			var xml = GXml.parse(data);
			var markerwindowTable = xml.documentElement.getElementsByTagName("mediatable");
		  	marker.openInfoWindowHtml(markerwindowTable[0].getAttribute("table")); 
			
		});
	}
	
	function showGeoRSS(lat,lng){
		
		var radius = Math.round((1500 / (map.getZoom()+1)) - 90);
		
		document.getElementById('vorschContentDiv').innerHTML = "<img src=\"../bilder/sitewide/loading.gif\">";
		document.getElementById('marker_nav_1').style.fontWeight = "normal";
		document.getElementById('marker_nav_2').style.fontWeight = "bold";
		var georsspfad = "georssproxy.php?lat="+lat+"&lng="+lng+"&radius="+radius;
		var rsslist = "<strong>NACHRICHTEN IM UMKREIS VON "+radius+" KM</strong> (beta)<br />Durch Rauszoomen erweitert sich der Radius.";
		
		GDownloadUrl(georsspfad, function(data, responseCode) {
			
			var xml = GXml.parse(data);
			//debug(data);
			var entryliste = xml.documentElement.getElementsByTagName("entry");
			
				 
			if(entryliste.length > 0){
				for (var i = 0; i < entryliste.length; i++) {
					var eintragdatumFull = entryliste[i].getElementsByTagName("published")[0].childNodes[0].nodeValue;
					var eintragdatumArr = eintragdatumFull.split('T');
					var eintragdatum = eintragdatumArr[0];
					var eintragdatumFormatArr = eintragdatum.split('-');
					var eintragdatumFormat = eintragdatumFormatArr[2]+"."+eintragdatumFormatArr[1]+"."+eintragdatumFormatArr[0].substring(2);
					
					rsslist += "<br />"+eintragdatumFormat+": <a href=\""+entryliste[i].getElementsByTagName("link")[0].getAttribute("href")+"\" target=\"_blank\">"+entryliste[i].getElementsByTagName("title")[0].childNodes[0].nodeValue+"</a>";
				}
				rsslist +="<br /><strong>IN ZUSAMMENARBEIT MIT <a href=\"http://geonames.org\" target=\"_blank\">GEONAMES.ORG</a></strong><br /><br />";
				document.getElementById('vorschContentDiv').innerHTML = rsslist;
			}else{
				document.getElementById('vorschContentDiv').innerHTML = "<strong>HIER GIBT ES IM UMKREIS VON "+radius+" KM KEINE MELDUNGEN.</strong><br />Durch Rauszoomen erweitert sich der Radius.";
			}
			
		});
	}
	
	function slidemarker_set(lat,lng,zoomstufe){
		// Ist die Karte schon intialisiert?
		letzteSshowOverlLat = lat;// Damit nach event gleich wieder gesetzt werden kann
		letzteSshowOverlLng = lng;
		if(mapInited == 1){
			// War gerade eine andere show? Dannn marker loeschen
			/*if (slideshowIsRunning == 1){
				slidemarker_remove();
			}*/
			zoomstufe = 19 - zoomstufe;
			gm_showreport(lat,lng,'','','',zoomstufe)
			//standardMarkerSet(lat,lng,zoomstufe);
			//slideshowIsRunning = 1;
		// Sonst spaeter nachholen
		}
		/*else{
			todoFunc = "slidemarker_set("+lng+","+lat+","+zoomstufe+")";
		}*/
	}
	
	function slidemarker_move(lng,lat,zoomstufe){
		letzteSshowOverlLat = lat;// Damit nach event gleich wieder gesetzt werden kann
		letzteSshowOverlLng = lng;
		
		// Ist die Karte schon intialisiert?
		/*
		if(mapInited == 1){
			if(map.getZoom() != 19 - zoomstufe){
				map.setCenter(new GLatLng(lat,lng), zommstufe_v2);
			}else{
				map.panTo(new GLatLng(lat, lng));
			}
			
			standardmarker.setPoint(new GLatLng(lat, lng));
			
		}else{
			todoFunc = "slidemarker_set("+lng+","+lat+","+zoomstufe+")";
		}
		*/
	}
	
	function standardMarkerSet(lat,lng,zommstufe_v2){
		if(mapInited == 1){
			letzteSshowOverlLat = lat;// Damit nach event gleich wieder gesetzt werden kann
			letzteSshowOverlLng = lng;
			
			if(standardMarkerActive){ map.removeOverlay(standardmarker)};
			
			standardmarker = new GMarker(new GLatLng(lat,lng));
			//standardmarker = new GMarker(new GLatLng(lat,lng),icon_standard);
			map.addOverlay(standardmarker);
			standardMarkerActive = 1;
			standardMarkerRemoved = 0;
			GEvent.addListener(standardmarker, "remove", function() {
				var letztemarkerpos = standardmarker.getPoint();
				standardMarkerRemoved = 1;
			});
		}
	}

	function standardmarker_remove(){
		map.removeOverlay(standardmarker);
		standardMarkerActive = 0;
		standardMarkerRemoved = 0;
	}
	
	function tourzoom(minlat, maxlat, minlng, maxlng){
		
		var sw = new GLatLng(minlat,minlng);
        var ne = new GLatLng(maxlat,maxlng);
		var tourzoombounds = new GLatLngBounds(sw, ne);
		map.setCenter(tourzoombounds.getCenter(), map.getBoundsZoomLevel(tourzoombounds)); 
		
	}
		
	function showVorsch(latlngId,lat,lng,id,ortid)
	{
		var point = new GLatLng(parseFloat(lat,lng));
		var icon_tipp = new GIcon();
		marker = createVorschlagMarker(point, "test", id, ortid, icon_tipp);
		aktuellerVorschlagMarker = marker;
		
		vorschlagzoom(latlngId);
		//map.addOverlay(marker);
		/*		
		GEvent.trigger(vorschlagDirectZoomMarker,'click'); 
					vorschlagDirectZoomID = 0;
					vorschlagDirectZoomMarker = 0;
		*/
		
	}
	
	function vorschlagzoom(latlngId){
		var latlngIdArry = latlngId.split(",");
		var ortGeoID = latlngIdArry[2];
		if(aktuellerVorschMarker != ortGeoID){
			vorschlagDirectZoomID = ortGeoID;
			map.clearOverlays();
			map.setCenter(new GLatLng(latlngIdArry[0],latlngIdArry[1]), 14);
		}
		
		//map.openInfoWindowHtml(new GLatLng(lat,lng), html);
	}
		
 
 
 

