		// center map
		var lat=48.78200
		var lon=9.36960
		var zoom=11
 
		var map; //complex object of type OpenLayers.Map
 
		//Initialise the 'map' object
		function init() {
			map = new OpenLayers.Map ("map", {
				controls:[
					new OpenLayers.Control.Attribution(),
					new OpenLayers.Control.MouseDefaults(),
					new OpenLayers.Control.MousePosition(),
					new OpenLayers.Control.Navigation(),
					new OpenLayers.Control.PanZoomBar(),
					new OpenLayers.Control.LayerSwitcher(),
					
					],
				maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
				maxResolution: 156543.0399,
				numZoomLevels: 18,
				units: 'meters',
				projection: new OpenLayers.Projection("EPSG:900913"),
				displayProjection: new OpenLayers.Projection("EPSG:4326")
			} );
 
 
			// Define the map layer
			// Note that we use a predefined layer that will be
			// kept up to date with URL changes
			// Here we define just one layer, but providing a choice
			// of several layers is also quite simple
			// Other defined layers are OpenLayers.Layer.OSM.Mapnik, OpenLayers.Layer.OSM.Maplint and OpenLayers.Layer.OSM.CycleMap
			layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
			map.addLayer(layerMapnik);
			layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
			map.addLayer(layerTilesAtHome);
			layerCycleMap = new OpenLayers.Layer.OSM.CycleMap("CycleMap");
			map.addLayer(layerCycleMap);

            // local Markers layer
			layerMarkers = new OpenLayers.Layer.Markers("Weingut Wilhelm", 
			    { projection: new OpenLayers.Projection("EPSG:4326"), visibility: true, displayInLayerSwitcher: true });

	        map.addLayer(layerMarkers);
			
            // Add the Layer with GPX Track
            /*var lgpx = new OpenLayers.Layer.GML("Anfahrt von Süden", "route_weingut_wilhelm_betrieb_von_sueden.gpx", {
            format: OpenLayers.Format.GPX,
            style: {strokeColor: "green"},
            projection: new OpenLayers.Projection("EPSG:4326")
            });
            map.addLayer(lgpx);*/
 
			var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
			map.setCenter (lonLat, zoom);
 
			addMarker(layerMarkers, lon, lat, "<div style=\"font-family:Arial\">Weingut Wilhelm<br><b>Weinkeller + Verkauf</b><br>Hintere Straße 1<br>Weinstadt-Strümpfelbach</div>");
		}
		
		function addMarker(layer, lon, lat, popupContentHTML) {

    var ll = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
    var feature = new OpenLayers.Feature(layer, ll);
    feature.closeBox = true;
    feature.popupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, { minSize: new OpenLayers.Size(200, 100) });
    feature.data.popupContentHTML = popupContentHTML;
    feature.data.overflow = "hidden";

	var size = new OpenLayers.Size(21,25);
	var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
	var icon = new OpenLayers.Icon('http://www.openstreetmap.org/openlayers/img/marker.png',size,offset);
    var marker = new OpenLayers.Marker(ll, icon);
    marker.feature = feature;

    var markerClick = function(evt) {
        if (this.popup == null) {
            this.popup = this.createPopup(this.closeBox);
            map.addPopup(this.popup);
            this.popup.show();
        } else {
            this.popup.toggle();
        }
        OpenLayers.Event.stop(evt);
    };
    var markerOver = function(evt) {
        if (this.popup == null) {
            this.popup = this.createPopup(this.closeBox);
            map.addPopup(this.popup);
            this.popup.show();
        } else {
            //this.popup.toggle();
        }
        OpenLayers.Event.stop(evt);
    };
    marker.events.register("mousedown", feature, markerClick);
    marker.events.register("mouseover", feature, markerOver);

    layer.addMarker(marker);
}

