function jumpTo(lon, lat, zoom) {
    var x = Lon2Merc(lon);
    var y = Lat2Merc(lat);
    map.setCenter(new OpenLayers.LonLat(x, y), zoom);
    return false;
}
 
function Lon2Merc(lon) {
    return 20037508.34 * lon / 180;
}
 
function Lat2Merc(lat) {
    var PI = 3.14159265358979323846;
    lat = Math.log(Math.tan( (90 + lat) * PI / 360)) / (PI / 180);
    return 20037508.34 * lat / 180;
}
 
function addMarker(layer, lon, lat, popupContentHTML, href) {
 
	// Umrechnung der geographischen Position
    var ll = new OpenLayers.LonLat(Lon2Merc(lon), Lat2Merc(lat));

    // Definition des Icons
    var iconSize   = new OpenLayers.Size(16,16);
    var iconOffset = new OpenLayers.Pixel(- (iconSize.w / 2), - iconSize.h);
    var icon       = new OpenLayers.Icon('/images/basic/jojo-marker.png', iconSize, iconOffset);

    // Definition des Popups
    var feature = new OpenLayers.Feature(layer, ll); 
    feature.closeBox              = false;
    feature.popupClass            = OpenLayers.Class(
    		OpenLayers.Popup,
    		{autoSize: true}
	);
    feature.data.popupContentHTML = popupContentHTML;
    feature.data.overflow         = "hidden";

    // Erzeugen des Markers
    var marker = new OpenLayers.Marker(ll, icon);
    marker.feature = feature;
 
    // Definition der Events
    var markerClicked = function(evt) {
    	document.location = href;
    };
    var markerOver = function(evt) {
    	if  (this.popup == null) {
    		this.popup = this.createPopup(this.closeBox);
    	}
        map.addPopup(this.popup);
        this.popup.show();
        OpenLayers.Event.stop(evt);
    };
    var markerOut = function(evt) {
        this.popup.hide();
        OpenLayers.Event.stop(evt);
    };
    marker.events.register("mousedown", feature, markerClicked);
    marker.events.register("mouseover", feature, markerOver);
    marker.events.register("mouseout",  feature, markerOut);
 
    layer.addMarker(marker);
}
 
function getCycleTileURL(bounds) {
   var res = this.map.getResolution();
   var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
   var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
   var z = this.map.getZoom();
   var limit = Math.pow(2, z);
 
   if (y < 0 || y >= limit)
   {
     return null;
   }
   else
   {
     x = ((x % limit) + limit) % limit;
 
     return this.url + z + "/" + x + "/" + y + "." + this.type;
   }
}
