var map = null;


function getTileURL(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;
    url = this.url;
    path= z + "/" + x + "/" + y + "." + this.type;
    if (url instanceof Array) 
    {
      url = this.selectUrl(path, url);
    }
    return url+path;
  }
}



function init()
{
    var proj1 = new OpenLayers.Projection("EPSG:900913");
    var proj2 = new OpenLayers.Projection("EPSG:4326");



    // create map
    map = new OpenLayers.Map('map', 
    {
	controls: 
	[
	new OpenLayers.Control.PanZoomBar(),
	new OpenLayers.Control.ArgParser(),
	new OpenLayers.Control.Navigation(),
	new OpenLayers.Control.KeyboardDefaults(),
	 new OpenLayers.Control.Attribution(),
	 new OpenLayers.Control.LayerSwitcher(),
	new OpenLayers.Control.MousePosition(),
	 new OpenLayers.Control.Permalink(),
	new OpenLayers.Control.ScaleLine
	
	 ],
	maxExtent:
	new OpenLayers.Bounds(-20037508.34,-20037508.34,
			      20037508.34, 20037508.34),
	numZoomLevels: 18,
	maxResolution: 156543,
	units: 'm',

	projection: proj1,
	displayProjection: proj2
    });

	OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
           OpenLayers.Util.onImageLoadErrorColor = "transparent"; 
    
    // -------------------------------------------------------------------
    // add tile layers
    //
    //
    
    var urlArray = ["http://t1.tiles.vesseltracker.com/vesseltracker/",
                   "http://t2.tiles.vesseltracker.com/vesseltracker/",
		   "http://t3.tiles.vesseltracker.com/vesseltracker/"];

    var tempArray = ["http://tiles.vesseltracker.com/wetter/temp/"];
	var windArray=["http://tiles.vesseltracker.com/wetter/wind/"];
	var presArray=["http://tiles.vesseltracker.com/wetter/pres/"];


    //var vt = new OpenLayers.Layer.TMS("Vesseltracker's Mapnik", "http://tiles.vesseltracker.com/vesseltracker/",     
    var vt = new OpenLayers.Layer.TMS("Vesseltracker's Mapnik", urlArray,     
    { 
	numZoomLevels: 18, 
        transitionEffect: 'resize',
	type: 'png', 
	getURL: getTileURL, 
	displayOutsideMaxExtent: true,
	attribution: 'Map-Data <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-By-SA</a> by <a href="http://openstreetmap.org/">OpenStreetMap</a> contributors'
    }); 

    var temp = new OpenLayers.Layer.TMS("Temprature",tempArray,
    {
        numZoomLevels: 8,
        transitionEffect: 'resize',
        type: 'png',
        getURL: getTileURL,
        displayOutsideMaxExtent: true,
	isBaseLayer: false,
        attribution: 'Map-Data <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-By-SA</a> by <a href="http://openstreetmap.org/">OpenStreetMap</a> contributors'
     });
	temp.setOpacity(0.4);

    var wind = new OpenLayers.Layer.TMS("Wind",windArray,
    {
        numZoomLevels: 10,
        transitionEffect: 'resize',
        type: 'png',
        getURL: getTileURL,
        displayOutsideMaxExtent: true,
        isBaseLayer: false,
        attribution: 'Map-Data <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-By-SA</a> by <a href="http://openstreetmap.org/">OpenStreetMap</a> contributors'
     });

   var pres = new OpenLayers.Layer.TMS("Pressure",presArray,
    {
        numZoomLevels: 8,
        transitionEffect: 'resize',
        type: 'png',
        getURL: getTileURL,
        displayOutsideMaxExtent: true,
        isBaseLayer: false,
        attribution: 'Map-Data <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-By-SA</a> by <a href="http://openstreetmap.org/">OpenStreetMap</a> contributors'
     });

    var shaded = new OpenLayers.Layer.VirtualEarth("Microsoft Shaded", 
    {
	type: VEMapStyle.Shaded,
	sphericalMercator: true
    });
    var hybrid = new OpenLayers.Layer.VirtualEarth("Microsoft Hybrid", 
    {
	type: VEMapStyle.Hybrid,
	sphericalMercator: true
    });
    var aerial = new OpenLayers.Layer.VirtualEarth("Microsoft Aerial", 
    {
	type: VEMapStyle.Aerial,
	sphericalMercator: true
    });
  

    //map.addLayers([vt, shaded, hybrid, aerial, wetter]);
    map.addLayers([vt,  temp, wind, pres]);
    //map.addLayers([vt]);

    // -------------------------------------------------------------------
    // add markers layer
    var markers = new OpenLayers.Layer.Markers( "Schiffchen" );
  //  map.addLayer(markers);

    // -------------------------------------------------------------------
    var size = new OpenLayers.Size(96,96);
    var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
    //var icon = new OpenLayers.Icon('poopy.png',size,offset);
    //markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(10,53).transform(proj2, proj1),icon));
    if(!map.getCenter())
    {
      map.setCenter(new OpenLayers.LonLat(9.678,53.573).transform(proj2,proj1),14);
    }
}

