    var map = null;
	var Icon = new Array();
	var MapMarker = new Object();
	var MapMarkerRef = null;
	var CoordinateLookupLastLevel = -1;
	var CoordinateLookupLastZoomLevel = -1;
	var CoordinateLookupLastCoord = new Object();
	CoordinateLookupLastCoord['north'] = 0;
	CoordinateLookupLastCoord['south'] = 0;
	CoordinateLookupLastCoord['west'] = 0;
	CoordinateLookupLastCoord['east'] = 0;
	var CoordinateLookupOverflow = false;	
	var CoordinateLookupMapType = null;
	var CoordinateLookupClearOverlays = false;
	
	
	Icon[0] = createIcon('images/pin_red_dot.png', 'images/shadow50.png'); 
	Icon[1] = createIcon('images/pin_red_dot.png', 'images/pin_shadow50.png'); 
	Icon[2] = createIcon('images/pin_yellow_dot.png', 'images/pin_shadow50.png'); 
	Icon[3] = createIcon('images/pin_green_dot.png', 'images/pin_shadow50.png');
	Icon[4] = createIcon('images/pin_lightred_dot.png', 'images/pin_shadow50.png');
	Icon[5] = createIcon('images/pin_lightyellow_dot.png', 'images/pin_shadow50.png');
	Icon[6] = createIcon('images/pin_lightgreen_dot.png', 'images/pin_shadow50.png');
	
    
    function registerGUnloadEvent() {
    	if (window.onunload) {
			try {
			window.onunload = GUnload();
			}
			catch(ex) {}
		}
    }
    
    // Initialisiere Map auf dieser Koordinate
    function mapinit(lat, lng, startLevel, mapoption, lookup) {
    	if (GBrowserIsCompatible()) {
      		
      		if (DMode != 'map' || map==null || typeof(mapoption) != 'undefined' ) {
       			map = new GMap2(document.getElementById("map"));
	      		if (parseInt(CoordinateLookupLastZoomLevel) > 0) {
    	    		map.setCenter(new GLatLng(lat, lng),parseInt(CoordinateLookupLastZoomLevel));
	      		} else {
    	    		map.setCenter(new GLatLng(lat, lng), parseInt(startLevel));
					CoordinateLookupLastZoomLevel = parseInt(startLevel);
	      		}
        		map.addControl(new GLargeMapControl());
				map.addControl(new GMapTypeControl());
      			if (CoordinateLookupMapType != null) {
        			map.setMapType(CoordinateLookupMapType);
      			}
      		}

			MapMarker = new Object();
			
			// Reinitialisierung
			CoordinateLookupLastCoord['north'] = -360;
			CoordinateLookupLastCoord['south'] = 360;
			CoordinateLookupLastCoord['west'] = 360;
			CoordinateLookupLastCoord['east'] = -360;
			CoordinateLookupOverflow = false;
			GEvent.addListener(map,'moveend',function() {
				if (lookup) {	
					maploadmarker(false);
				}
			});
			GEvent.addListener(map,'load',function() {
				if (lookup) {
					maploadmarker(true);
				}
				CoordinateLookupMapType = map.getCurrentMapType();
			});
			GEvent.addListener(map,'maptypechanged',function() {
				CoordinateLookupMapType = map.getCurrentMapType();
			});
    	}
    }
    
    // Marker anlegen
    function mapaddmarker(lat,lng,des,motxt,colorcode,dynload,divid) {
   		var lLatLng = lat + " " + lng;
    	if (typeof(MapMarker[lLatLng]) == "undefined") {
   			MapMarker[lLatLng] = new Object();
		    MapMarker[lLatLng].icon = Icon[parseInt(colorcode)];
   			MapMarker[lLatLng].location = new GLatLng(lat,lng);
    		MapMarker[lLatLng].markers = new Array();
    		MapMarker[lLatLng].motxt = motxt;
   			MapMarker[lLatLng].dynload = dynload;
   			MapMarker[lLatLng].divid = divid;
   			MapMarker[lLatLng].markers[0] = new Object();
	   		MapMarker[lLatLng].markers[0].title = motxt;
   			MapMarker[lLatLng].markers[0].des = des;
    	} else if (dynload == false) {
   			var i = MapMarker[lLatLng].markers.length;
   			MapMarker[lLatLng].markers[i] = new Object();
   			MapMarker[lLatLng].markers[i].title = motxt;
   			MapMarker[lLatLng].markers[i].des = des;
   		}
    }
    
    function mapdeletemarker() {
    	MapMarker = new Object();
    }
    
    function mapmarkeroverflow() {
    	CoordinateLookupOverflow = true;
    	alert("Hinweis: Ihre Suche lieferte mehr als 1.000 Koordinaten. Es werden nur die ersten 1.000 Koordinaten dargestellt. Bitte schränken Sie Ihre Suche weiter ein oder Zoomen Sie tiefer in den Sie interessierenden Ausschnitt.")
    }
    function maploadmarker() {
    	var lZoom = map.getZoom();
   		CoordinateLookupLastZoomLevel = lZoom;
    	
    	var lLookupLevel = 1;
/*    	if (lZoom > 5 && lZoom < 7) {
    		lLookupLevel = 2;
    	} else if (lZoom >= 7 && lZoom < 9) {
    		lLookupLevel = 3;
    	} else if (lZoom >= 9 && lZoom < 11) {
    		lLookupLevel = 4;
    	} else if (lZoom >= 11 && lZoom < 14) {
    		lLookupLevel = 5;
    	} else if (lZoom >= 14 && lZoom < 16) {
    		lLookupLevel = 6;
    	} else if (lZoom >= 16) {
    		lLookupLevel = 7;
    	}*/
    	var lOrtsLevel = 5;
    	// Hier kein Medienquery wg. Kartenforum
    	if (trim(Query.archive + Query.base + Query.catalog) == '') {
    		lOrtsLevel = 9;
    	} else{
    		lOrtsLevel = 6;
    	}
    	if (lZoom >= lOrtsLevel && lZoom < 11) {
    		lLookupLevel = 4;
    	} else if (lZoom >= 11 && lZoom < 14) {
    		lLookupLevel = 5;
    	} else if (lZoom >= 14 && lZoom < 16) {
    		lLookupLevel = 6;
    	} else if (lZoom >= 16) {
    		lLookupLevel = 7;
    	}
    	var lNorth = map.getBounds().getNorthEast().lat();
    	var lSouth = map.getBounds().getSouthWest().lat();
    	var lEast = map.getBounds().getNorthEast().lng();
    	var lWest = map.getBounds().getSouthWest().lng();
    	
    	if ((!(lLookupLevel == CoordinateLookupLastLevel &&
    		lNorth <= CoordinateLookupLastCoord['north'] &&
    		lSouth >= CoordinateLookupLastCoord['south'] &&
    		lEast <= CoordinateLookupLastCoord['east'] &&
    		lWest >= CoordinateLookupLastCoord['west'])) || CoordinateLookupOverflow) {
    		
    		CoordinateLookupLastCoord['north'] = lNorth + (lNorth - lSouth)/4;
    		CoordinateLookupLastCoord['south'] = lSouth - (lNorth - lSouth)/4;
    		CoordinateLookupLastCoord['east']  = lEast + (lEast - lWest)/4;
    		CoordinateLookupLastCoord['west']  = lWest - (lEast - lWest)/4;

    		CoordinateLookupClearOverlays = (lLookupLevel != CoordinateLookupLastLevel)
    		CoordinateLookupLastLevel = lLookupLevel;
    		
    		CoordinateLookup(lLookupLevel);
    	}
    }
        
    function mapgetbounds(level) {
    	var mapbounds = map.getBounds();
    	var ne = mapbounds.getNorthEast();
    	var sw = mapbounds.getSouthWest();
    	var lgbNorth = ne.lat() + (ne.lat() - sw.lat())/4;
    	var lgbSouth = sw.lat() - (ne.lat() - sw.lat())/4;
    	var lgbEast = ne.lng() + (ne.lng() - sw.lng())/4;
    	var lgbWest = sw.lng() - (ne.lng() - sw.lng())/4;
    	var s = lgbNorth + ',' + lgbWest + ',' + lgbSouth + ',' + lgbEast;
    	return s;
    }
    
    function mapgeneratemarker() {
    	var bFirst = true;
    	CoordinateLookupOverflow = false;
    	for (var lLatLng in MapMarker) {
    		if (bFirst) {
    			bFirst = false;
    			if (!MapMarker[lLatLng].dynload || CoordinateLookupClearOverlays) {
			  		map.clearOverlays();
			  		CoordinateLookupClearOverlays = false;
    			}
    		}
    		var markerOpt = new Object();
    		if (MapMarker[lLatLng].markers.length == 1 && DMode=='docmap') {
    			markerOpt.title = MapMarker[lLatLng].motxt + ": 1 Objekt.";
    		} else if  (DMode=='docmap') {
    			markerOpt.title = MapMarker[lLatLng].motxt + ": " + MapMarker[lLatLng].markers.length + " Objekte.";
    		} else {
    			markerOpt.title = MapMarker[lLatLng].motxt;
    		}    		
    		markerOpt.icon = MapMarker[lLatLng].icon;
    		var marker = new GMarker(MapMarker[lLatLng].location,markerOpt);
    		marker.des = new Array();
    		marker.dynload = MapMarker[lLatLng].dynload;
    		marker.divid = MapMarker[lLatLng].divid;
    		marker.motxt = MapMarker[lLatLng].motxt; 
    		for (var i=0; i<MapMarker[lLatLng].markers.length;i++) {
    			marker.des[i] = MapMarker[lLatLng].markers[i].des;
    		}
    		GEvent.addListener(marker,'click',
    			function() {
    				MapMarkerRef = this;
					MapMarkerRef.desactive = 0;
					var l = MapMarkerRef.des.length;
					switch (l) {
						case 1:
		    				pre = '<div id="GMapBubble" style="width:390px;height:200px">';  
							post = '</div>';
							break;
						case 2:
		    				pre = '<div class="menuZoom">' + 
	            				  '<a href="javascript:void(0);" onclick="mapmarkernavigate(2);"><img alt="Voriges Objekt" src="images/img_previous_hovered.gif" title="Voheriges Objekt"/></a> ' + 
	            				  '<a href="javascript:void(0);" onclick="mapmarkernavigate(3);"><img alt="Nächstes Objekt" src="images/img_next_hovered.gif" title="Nächstes Objekt"/></a> ' + 
	    		        		  ' <span id="GMapText">Objekt 1 von ' + MapMarkerRef.des.length + '</span>' + 
								  '</div><div id="GMapBubble" style="width:390px;height:180px">';
							post = '</div>';
							break;
						default:
		    				pre = '<div class="menuZoom">' + 
	    		        		  '<a href="javascript:void(0);" onclick="mapmarkernavigate(1);"><img alt="Erstes Objekt" src="images/img_first_hovered.gif" title="Erstes Objekt"/></a> ' + 
	            				  '<a href="javascript:void(0);" onclick="mapmarkernavigate(2);"><img alt="Voriges Objekt" src="images/img_previous_hovered.gif" title="Voheriges Objekt"/></a> ' + 
	            				  '<a href="javascript:void(0);" onclick="mapmarkernavigate(3);"><img alt="Nächstes Objekt" src="images/img_next_hovered.gif" title="Nächstes Objekt"/></a> ' + 
			            		  '<a href="javascript:void(0);" onclick="mapmarkernavigate(4);"><img alt="Letztes Objekt" src="images/img_last_hovered.gif" title="Letztes Objekt"/></a>' +
	    		        		  ' <span id="GMapText">Objekt 1 von ' + MapMarkerRef.des.length + '</span>' + 
								  '</div><div id="GMapBubble" style="width:390px;height:180px">';
							post = '</div>';
							break;
					}
    				this.openInfoWindowHtml(pre + this.des[0] + post);
    				checkStatus();
    				if (MapMarkerRef.dynload) {
    					submitLocationSearch(this.getPoint().lat(),this.getPoint().lng(),CoordinateLookupLastLevel,this.divid,this.motxt);
    				}
    			}
    		);
    		map.addOverlay(marker);
     	}
    }
    
    function mapmarkernavigate(cmd) {
    	switch (cmd) {
    		case 1:
   				MapMarkerRef.desactive = 0;
    			break;
    		case 2:
    			if (MapMarkerRef.desactive>0) {
    				MapMarkerRef.desactive--;
    			}
    			break;
    		case 3:
    			if (MapMarkerRef.desactive < MapMarkerRef.des.length - 1) {
    				MapMarkerRef.desactive++;
    			}
    			break;
    		case 4:
   				MapMarkerRef.desactive = MapMarkerRef.des.length - 1;
    			break;
    	}
    	var destContainer = document.getElementById("GMapText");
    	destContainer.innerHTML = "Objekt " + (MapMarkerRef.desactive + 1) + " von " + MapMarkerRef.des.length;
		destContainer = document.getElementById("GMapBubble");
		destContainer.innerHTML = MapMarkerRef.des[MapMarkerRef.desactive];
		checkStatus();
    }
   
    function createIcon (imageName, shadowName) {
		var newIcon = new GIcon(G_DEFAULT_ICON);
	    newIcon.image = imageName;
	    newIcon.shadow = shadowName;    
	    return newIcon;
    }
    
