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.999908 +x_0=155000 +y_0=463000 +ellps=bessel +towgs84=565.237,50.0087,465.658,-0.406857,0.350733,-1.87035,4.0812 +units=m +no_defs";
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);
  var newHtml =
	  "Lon: " +
	  lonLat.lon.toFixed(digits) +
	  " Lat: " +
	  lonLat.lat.toFixed(digits) +
	  " Zoom: " +
	   this.map.getZoom();
  return newHtml;
};
																						 
function init(){
	map = new OpenLayers.Map('map',
					{ maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508),
					  numZoomLevels: 19,
					  maxResolution: 156543,
					  units: 'm',
					  controls: [new OpenLayers.Control.MouseDefaults(),
						new OpenLayers.Control.LayerSwitcher(),
						new OpenLayers.Control.MousePosition({formatOutput: myFormat, numdigits:5, displayClass: "olMousePosition"}),
						new OpenLayers.Control.MousePosition ({prefix: "RD (", separator: ",", suffix: ")", displayProjection: new OpenLayers.Projection("EPSG:28992"), numdigits:0, displayClass: "olTilePosition" }),
						new OpenLayers.Control.PanZoomBar()],
					  displayProjection: new OpenLayers.Projection("EPSG:4326"),
					  projection: new OpenLayers.Projection("EPSG:900913") });

	var layerBasis = new OpenLayers.Layer.TMS(
				"Basiskaart",
				"http://overlay.openstreetmap.nl/basemap/",
				{type:'png', getURL: get_osm_url,
				border:1,
				transitionEffect: 'resize'} );

	var layerOAM = new OpenLayers.Layer.WMS( 
				"Satelliet (OpenArialMap)", 
				 ["http://oam1.hypercube.telascience.org/tiles/",
				  "http://oam2.hypercube.telascience.org/tiles/",
				  "http://oam3.hypercube.telascience.org/tiles/"],
				 {layers: 'openaerialmap-900913'}, {'wrapDateLine': true, buffer: 1} );

	var layerMapnikNL = new OpenLayers.Layer.TMS(
				"NL (Mapnik)",
				"http://tile.openstreetmap.nl/osm/",
				{type:'png', getURL: get_osm_url,
				border: 1,
				transitionEffect: 'resize'} );

	var layerMapnik = new OpenLayers.Layer.TMS(
				"Int. (Mapnik)",
				"http://tile.openstreetmap.org/mapnik/",
				{type:'png', getURL: get_osm_url,
				border: 1,
				transitionEffect: 'resize'} );

	var layerTah = new OpenLayers.Layer.TMS(
				"Int. (Tiles@Home)",
				"http://tah.openstreetmap.org/Tiles/tile/",
				{type:'png', getURL: get_osm_url,
				border: 1,
				transitionEffect: 'resize'} );

	var layerRoads = new OpenLayers.Layer.TMS(
				"Straten",
				"http://overlay.openstreetmap.nl/roads/",
				{type:'png', getURL: get_osm_url,
				border:1, isBaseLayer: false, visibility: true} );

	var layerPOIS = new OpenLayers.Layer.TMS(
				"POI's",
				"http://overlay.openstreetmap.nl/pois/",
				{type:'png', getURL: get_osm_url,
				border:1, isBaseLayer: false, visibility: false} );
				
	var layerPlaces = new OpenLayers.Layer.TMS(
				"Plaatsnamen",
				"http://overlay.openstreetmap.nl/places/",
				{type:'png', getURL: get_osm_url,
				border:1, isBaseLayer: false, visibility: false} );

	var layerFietsRoutes = new OpenLayers.Layer.TMS(
				"Fietsroutes",
				"http://overlay.openstreetmap.nl/openfietskaart-overlay/",
				{type:'png', getURL: get_osm_url,
				border:1, isBaseLayer: false, visibility: true} );

	var layerFietsRoutesNCN = new OpenLayers.Layer.TMS(
				"Fietsroutes (Nationaal)",
				"http://overlay.openstreetmap.nl/openfietskaart-ncn/",
				{type:'png', getURL: get_osm_url,
				border:1, isBaseLayer: false, visibility: false} );
				
	var layerFietsRoutesLCN = new OpenLayers.Layer.TMS(
				"Fietsroutes (Lokaal)",
				"http://overlay.openstreetmap.nl/openfietskaart-lcn/",
				{type:'png', getURL: get_osm_url,
				border:1, isBaseLayer: false, visibility: false} );
				
	var layerFietsRoutesRCN = new OpenLayers.Layer.TMS(
				"Fietsroutes (Regionaal)",
				"http://overlay.openstreetmap.nl/openfietskaart-rcn/",
				{type:'png', getURL: get_osm_url,
				border:1, isBaseLayer: false, visibility: false} );

	map.addControl(new OpenLayers.Control.LayerSwitcher());

	map.addLayers([layerBasis, layerMapnikNL, layerOAM, layerMapnik, layerTah, layerRoads, layerPOIS, layerFietsRoutes, layerFietsRoutesNCN, layerFietsRoutesLCN, layerFietsRoutesRCN, layerPlaces]);
	  
	//map.addControl(new OpenLayers.Control.MousePosition(
	//   {prefix: "RD Coordinates (", separator: ",", suffix: ")", 
	//	displayProjection: new OpenLayers.Projection("EPSG:28992"), numdigits:0, displayClass: "olTilePosition" }));
	map.addControl(new OpenLayers.Control.Permalink() );
	//map.addControl(new OpenLayers.Control.Permalink("http://www.openstreetmap.org/edit") );

	//map.addControl(new OpenLayers.Control.ScaleBar());

	if(!map.getCenter()) {
	  var pos;
	  pos = new OpenLayers.LonLat(5.7 , 52.25);
	  map.setCenter(pos.transform(map.displayProjection,map.projection), 8);
	}
	
}

function get_osm_url (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 path = z + "/" + x + "/" + y + "." + this.type;
	var url = this.url;
	if (url instanceof Array) {
		url = this.selectUrl(path, url);
	}
	return url + path;
}

function ToggleLegend() {
	if (document.getElementById) { // DOM3 = IE5, NS6
		if (document.getElementById('legend').style.visibility == 'hidden') {
			document.getElementById('legend').style.visibility = 'visible';
		} else {
			document.getElementById('legend').style.visibility = 'hidden';
		}
	}
	else {
		if (document.layers) { // Netscape 4
			if (document.legend.visibility == 'hidden') {
				document.legend.visibility = 'visible';
			} else {
				document.legend.visibility = 'hidden';					
			}
		}
		else { // IE 4
			if (document.all.legend.style.visibility == 'hidden') {
				document.all.legend.style.visibility = 'visible';
			} else {
				document.all.legend.style.visibility = 'hidden';
			}
		}
	}
} 

