/**  Hiking paths in Switzerland */
OpenLayers.Layer.OSM.Hiking = OpenLayers.Class(OpenLayers.Layer.OSM, {
    initialize: function(name, options) {
        var url = [ "/hiking/"];
        options = OpenLayers.Util.extend({ 
                        numZoomLevels: 16,
                        isBaseLayer: false,
                        transitionEffect: "null",
						opacity: 0.7,
					    attribution: "<a href='about.html'>About this map</a>/<a href='about_de.html'>&Uuml;ber diese Karte</a>"},
					options);
        var newArguments = [name, url, options];
        OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
    },

    CLASS_NAME: "OpenLayers.Layer.OSM.Hiking"
});


/** Original Mapnik map */
OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
  initialize: function(maxzoom, options) {
    var url = [
      "http://a.tile.openstreetmap.org/",
      "http://b.tile.openstreetmap.org/",
      "http://c.tile.openstreetmap.org/"
/*      "http://zephyria/tiles/switzerland/"*/
    ];
    options = OpenLayers.Util.extend({ 
                        numZoomLevels: maxzoom,
                        opacity: 0.75}, 
                    options);
    var newArguments = ['Mapnik', url, options];
    OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
  },

  CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik"
});

/* The Map */
var map;

/* initialisation of map object */
function initMap() {
    $('#map').text('')
    map = new OpenLayers.Map ("map", {
            controls:[ new OpenLayers.Control.Permalink(),
                       new OpenLayers.Control.Navigation(),
                       new OpenLayers.Control.PanZoomBar(),
                       new OpenLayers.Control.MousePosition(),
                       new OpenLayers.Control.LayerSwitcher(),
                       new OpenLayers.Control.ScaleLine({geodesic: true}),
                       new OpenLayers.Control.KeyboardDefaults()],
            maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,     20037508.34,20037508.34),
            maxResolution: 156543.0399,
            numZoomLevels: 16,
            units: 'm',
            projection: new OpenLayers.Projection("EPSG:900913"),
            displayProjection: new OpenLayers.Projection("EPSG:4326")
    });

    var layerMapnik = new OpenLayers.Layer.OSM.Mapnik(16);
    var layerHiking = new OpenLayers.Layer.OSM.Hiking("Hiking Paths");

    var hill = new OpenLayers.Layer.OSM(
        "Hillshading (NASA SRTM3 v2)",
        "http://toolserver.org/~cmarqu/hill/",
        {
                type: 'png',
                displayOutsideMaxExtent: true, isBaseLayer: false,
            transparent: true, "visibility": false
            }
        );
    hill.setOpacity(0.6);

    var hill2 = new OpenLayers.Layer.OSM(
        "Hillshading (exaggerate)",
        "http://toolserver.org/~cmarqu/hill/",
        {
                type: 'png',
                displayOutsideMaxExtent: true, isBaseLayer: false,
            transparent: true, "visibility": false
            }
        );


    map.addLayers([hill, hill2, layerMapnik, layerHiking]);

    if (window.location.href.indexOf("?") == -1) {
        var PI = 3.14159265358979323846;
        lon = lon * 20037508.34 / 180;
        lat = Math.log (Math.tan ((90 + lat) * PI / 360)) / (PI / 180);
        lat = lat * 20037508.34 / 180;

        map.setCenter (new OpenLayers.LonLat(lon, lat), zoom);
    }

    //XXX this should go somewhere else
    map.events.on({'moveend': reloadRoutes});
}

