var map;
//var lon = "";
//var lat = "";
//var zoom = "";
var subpage = location.hostname.split('.')[0];
OpenLayers.Util.onImageLoadErrorColor = "transparent";

Proj4js.defs["EPSG:28992"] = "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000  +ellps=bessel +towgs84=565.040,49.910,465.840,-0.40939,0.35971,-1.86849,4.0772";
Proj4js.defs["EPSG:900913"] = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";

function myFormat(lonLat) {
  var digits = parseInt(this.numdigits, 10);
  var newHtml =
    "Lon: " +
    lonLat.lon.toFixed(digits) +
    " Lat: " +
    lonLat.lat.toFixed(digits) +
    " Zoom: " +
    this.map.getZoom();
  return newHtml;
}

function mapInit(lon, lat, zoom){
  jQuery(document).ready(function() {
  map = new OpenLayers.Map('map',
    { 
      maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508),
      numZoomLevels: 20,
      maxResolution: 156543,
      units: 'm',
      controls: [
        new OpenLayers.Control.MouseDefaults(),
        new OpenLayers.Control.KeyboardDefaults(),
        new OpenLayers.Control.MousePosition({formatOutput: myFormat, numdigits:4, div: $('posLatLon')}),
        new OpenLayers.Control.PanZoomBar(),
        new OpenLayers.Control.Permalink("Permalink", "", {div:$('permalink'), displayClass: 'permalink'}),
        new OpenLayers.Control.LayerSwitcher()
      ],
      displayProjection: new OpenLayers.Projection("EPSG:4326"),
      projection: new OpenLayers.Projection("EPSG:900913") 
    }
  );

  /* Add edit permalink */
  var editlink = new OpenLayers.Control.Permalink("edit", "http://www.openstreetmap.org/edit", {div:$('editlink'), displayClass: 'editlink'});
  map.addControl(editlink);
  editlink.element.textContent = 'Edit map';

  var opacity = 0.0;
  var layerMapnikHaiti = new OpenLayers.Layer.XYZ(
    "Haiti Mapnik coverage",
    "http://live.openstreetmap.nl/haiti/${z}/${x}/${y}.png",
    {
      transitionEffect: 'resize'
    } 
  );

  var layerMapnik = new OpenLayers.Layer.XYZ(
    "Regular Mapnik coverage",
    "http://tile.openstreetmap.org/${z}/${x}/${y}.png",
    {
      transitionEffect: 'resize'
    } 
  );

  var layerTAH = new OpenLayers.Layer.XYZ(
    "Tiles@Home",
    "http://tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
    {
      numZoomLevels: 18,
      transitionEffect: 'resize'
    }
  );

  var hill = new OpenLayers.Layer.XYZ(
    "Hillshading (NASA SRTM3 v2)",
    "http://toolserver.org/~cmarqu/hill/${z}/${x}/${y}.png",
    {
      displayOutsideMaxExtent: true, isBaseLayer: false,
      transparent: true,
      visibility: false
    }
  );

  var haiti_best = new OpenLayers.Layer.XYZ(
    "Satellite/Aerial Imagery",
    "http://hypercube.telascience.org/tiles/1.0.0/haiti-best-900913/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  var geoeye1_0116 = new OpenLayers.Layer.XYZ(
    "GeoEye GE1 2010-01-16",
    "http://hypercube.telascience.org/tiles/1.0.0/geoeye-geoeye-20100116-900913/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  var geoeye_mosaic = new OpenLayers.Layer.XYZ(
    "GeoEye mosaic",
    "http://maps.nypl.org/tilecache/1/geoeye/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  var geoeye1_0113 = new OpenLayers.Layer.XYZ(
    "GeoEye GE1 2010-01-13",
    "http://maps.nypl.org/tilecache/1/haiti/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  var dg_crisis = new OpenLayers.Layer.XYZ(
    "DigitalGlobe Crisis Event Service",
    "http://maps.nypl.org/tilecache/1/dg_crisis/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  ); 

  var ikonos_0115 = new OpenLayers.Layer.XYZ(
    "GeoEye IKONOS 2010-01-15",
    "http://hypercube.telascience.org/tiles/1.0.0/geoeye-ikonos-20100115-900913/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  var ikonos_0117 = new OpenLayers.Layer.XYZ(
    "GeoEye IKONOS 2010-01-17",
    "http://hypercube.telascience.org/tiles/1.0.0/geoeye-ikonos-20100117-900913/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  var dg_0118 = new OpenLayers.Layer.XYZ(
    "DigitalGlobe Worldview-2 01-18",
    "http://hypercube.telascience.org/tiles/1.0.0/worldview-20100118-900913/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  var noaa_0118 = new OpenLayers.Layer.XYZ(
    "NOAA 2010-01-18",
    "http://hypercube.telascience.org/tiles/1.0.0/noaa-20100118-900913/${z}/${x}/${y}.jpg",
    {
      isBaseLayer: false,
      transitionEffect: 'resize',
      visibility: false,
      opacity: opacity
    }
  );

  map.addLayers(
    [
      layerMapnikHaiti,
      layerMapnik,
      layerTAH,
      hill,
      haiti_best,
      noaa_0118,
      dg_0118,
      ikonos_0117,
      geoeye1_0116,
      ikonos_0115,
      geoeye1_0113,
      geoeye_mosaic,
      dg_crisis
     ]
  );
  
  if(!map.getCenter()) {
    zoom = parseInt(zoom, 10);
    var pos = new OpenLayers.LonLat(lon, lat);
    map.setCenter(pos.transform(map.displayProjection,map.projection), zoom);
  }

  map.events.register('moveend', this, mapMoved);

  jQuery("#slider").slider({
    startValue: 100 * opacity,
    slide: function(e, ui) {
      haiti_best.setOpacity(ui.value / 100);
      noaa_0118.setOpacity(ui.value / 100);
      dg_0118.setOpacity(ui.value / 100);
      ikonos_0117.setOpacity(ui.value / 100);
      geoeye1_0116.setOpacity(ui.value / 100);
      ikonos_0115.setOpacity(ui.value / 100);
      geoeye1_0113.setOpacity(ui.value / 100);
      geoeye_mosaic.setOpacity(ui.value / 100);
      dg_crisis.setOpacity(ui.value / 100);
    }
  });
  });
}

function ToggleMapKey() {
  if (document.getElementById) { // DOM3 = IE5, NS6
    if (document.getElementById('mapkey').style.visibility == 'hidden') {
      document.getElementById('mapkey').style.visibility = 'visible';
    } else {
      document.getElementById('mapkey').style.visibility = 'hidden';
    }
  }
  else {
    if (document.layers) { // Netscape 4
      if (document.mapkey.visibility == 'hidden') {
        document.mapkey.visibility = 'visible';
      } else {
        document.mapkey.visibility = 'hidden';
      }
    }
    else { // IE 4
      if (document.all.mapkey.style.visibility == 'hidden') {
        document.all.mapkey.style.visibility = 'visible';
      } else {
        document.all.mapkey.style.visibility = 'hidden';
      }
    }
  }
}

