mapsearch = {
	/**
	 * @member mapsearch
	 */
	version : '0.1.0'
};

(function() {

	var map = null;

	/**
	 * Initializes the mapsearch instance
	 */
	var init = function() {
		// parse querystring
		var qs = window.location.search.substring(1, window.location.search.length);
		if (qs.length !== 0) {
			qs = qs.replace(/\+/g, ' ');
			var args = qs.split('&');
			var params = {};
			for ( var i = 0; i < args.length; i++) {
				var pair = args[i].split('=');
				var name = decodeURIComponent(pair[0]);

				var value = (pair.length == 2) ? decodeURIComponent(pair[1]) : name;

				params[name] = value;
			}
			mapsearch.sldurl = params['sldurl'];
			mapsearch.searchid = params['searchid'];
			mapsearch.bbox = params['bbox'];
			mapsearch.rutelocation = params['rutelocation'];
			mapsearch.rutelocationname = params['rutelocationname'];
			mapsearch.point = params['point'];
		}

		if (mapsearch.searchid) {
			mapsearch.filter = 'searchresult';
		} else {
			mapsearch.filter = 'all';
		}

		var mapConfig;

		mapConfig = new mapsearch.MapConfig(Ext.get('kmsTicket').getValue());

		var mapPanel = new mapcomponent.MapPanel( {
			width : 513,
			height : 500,
			bodyStyle : 'background-color: #dcf0fa',
			mapConfig : mapConfig
		});

		var info = new mapsearch.Info( {
			mapPanel : mapPanel
		});
		mapConfig.info = info;

		var toolBar = new mapcomponent.ToolBarPanel( {
			height : 500,
			mapPanel : mapPanel,
			tools : [ new mapcomponent.tool.ZoomStepIn(), new mapcomponent.tool.ZoomStepOut() ]
		});

		var tocPanel = new mapcomponent.TocPanel( {
			width : 187,
			height : 500,
			mapPanel : mapPanel
		});

		var onAfterMapRender = function() {

			map = mapPanel.map;

			if (mapsearch.bbox) {
				var bounds = new OpenLayers.Bounds.fromString(mapsearch.bbox);
				map.zoomToExtent(bounds);
			} else {
				map.zoomToMaxExtent();
			}

			if (mapsearch.point) {
				var coords = mapsearch.point.split(',');
				var point = new OpenLayers.Geometry.Point(coords[0], coords[1]);
				var feature = new OpenLayers.Feature.Vector(point);
				mapConfig.localityHighlightLayer.addFeatures( [ feature ]);
			}

			if (mapsearch.rutelocation) {
				mapsearch.showSearchRoutePanel();
			}

			if (mapsearch.bbox) {

			}

			mapConfig.scaleLine.eBottom.style.visibility = "hidden";

			new mapsearch.TocConfig( {
				tocPanel : tocPanel,
				mapPanel : mapPanel
			});

			info.activate();

			var onZoomend = function() {
				info.deactivate();
				info.activate();
			};
			map.events.register('moveend', null, onZoomend);

			var onClick = function() {
				info.deactivate();
				info.activate();
			};
			tocPanel.toc.on('click', onClick);
		};

		mapPanel.on('afterolinit', onAfterMapRender);

		tocPanel.setBackgroundLayers( [ mapConfig.kmsLayer, mapConfig.topografiLayer,
				mapConfig.luftfotoLayer, mapConfig.hojeLayer, mapConfig.laveLayer ]);
		tocPanel.slider.enable();

		var createSearchWindow = function(title, panel, width, height) {
			var box = mapPanel.getBox();
			var x = box.x + box.width;
			var y = box.y + box.height;

			var window = new Ext.Window( {
				title : title,
				layout : 'fit',
				width : width,
				height : height,
				// closable :false,
				draggable : false,
				resizable : false,
				shadow : false,
				border : false,
				hideBorders : true,
				x : x - width,
				y : y - height,
				items : panel
			});

			return window;
		};

		mapsearch.showSearchAddressPanel = function() {
			var searchAddressPanel = new mapcomponent.SearchAddressPanel( {
				layer : mapConfig.adressLayer
			});

			var window = createSearchWindow('Adressesøgning', searchAddressPanel, 350, 100);
			window.show();

			searchAddressPanel.on('destroy', function() {
				window.close();
			});
		};

		mapsearch.showSearchRoutePanel = function() {
			var searchRoutePanel = new mapcomponent.SearchRoutePanel( {
				layer : mapConfig.routeLayer,
				rutelocation : mapsearch.rutelocation,
				rutelocationname : mapsearch.rutelocationname
			});

			var window = createSearchWindow('Rutesøgning', searchRoutePanel, 350, 130);
			window.show();

			searchRoutePanel.on('destroy', function() {
				window.close();
			});
		};

		mapsearch.showLegendPanel = function() {
			var panel = new Ext.Panel( {
				html : '<img src="images/signaturforklaring_oversigt.png">'
			});

			var window = createSearchWindow('Signaturforklaring', panel, 300, 400);
			window.show();
		};

		mapsearch.showList = function() {
			window.location = '/fundogfortidsminder/Sog/Resultat/?search-bbox=' + map.getExtent().toBBOX();
		};

		new Ext.Panel( {
			border : false,
			layout : 'column',
			items : [ toolBar, mapPanel, tocPanel ],
			renderTo : 'mapsearchMapPanel'
		});

	};

	// run when browser is ready
	window.onload = init;

}());/**
 * @constructor
 */
mapsearch.Info = function(options) {
	var mapPanel = options.mapPanel;

	var map;
	var tip;
	var isActivated = false;

	var clickHandler;
	var tolerance = 5;
	var currentLocation;

	var unregisterEvents;

	var self = this;

	var deactivate = function() {
		if (tip) {
			tip.destroy();
		}

		if (unregisterEvents) {
			unregisterEvents();
		}

		isActivated = false;
	};

	var activate = function() {
		if (isActivated) {
			deactivate();
		}

		isActivated = true;

		var success = function(response) {
			var i;
			var json = Ext.decode(response.responseText);

			if (json.error) {
				Ext.Msg.alert('Fejl', 'Søgetjeneste for lokalitet mislykkedes.');
				return;
			}

			var locations = json.locations;
			var location;

			// loop all returned locations and create hoverzones
			for (i = 0; i < locations.length; i++) {
				( function() {
					location = locations[i];

					var xy = map.getViewPortPxFromLonLat(new OpenLayers.LonLat(location.x,
							location.y));
					location.pixel = xy;
					location.hoverzone = [ xy.x - tolerance, xy.y - tolerance, xy.x + tolerance,
							xy.y + tolerance ];
				}());
			}

			/**
			 * Checks a pixel location against location hoverzones
			 * 
			 * @param handler
			 *            will be called if a location is hit with the location
			 *            in question as scope
			 */
			var checkHover = function(pixel, handler, handler2) {
				var hitTest = false;

				for (i = 0; i < locations.length; i++) {
					location = locations[i];
					var hoverzone = location.hoverzone;

					if (pixel.x > hoverzone[0] && pixel.x < hoverzone[2] && pixel.y > hoverzone[1]
							&& pixel.y < hoverzone[3]) {
						handler.apply(location);
						hitTest = true;
					}
				}

				if (!hitTest) {
					if (handler2) {
						handler2.apply(location);
					}
				}
			};

			/**
			 * Redirect the browser to the location passed as scope
			 */
			var redirectToLocation = function() {
				window.location.href = '/fundogfortidsminder/Lokalitet/' + this.systemnr;
			};

			var onClick = function() {
				if (tip) {
					tip.destroy();
				}
				tip = new Ext.Tip( {
					html : 'Stednavn: ' + this.name + '<br>' + 'Anlægstype: ' + this.type + '<br>'
							+ 'Datering: ' + this.dating + '<br>' + '<a href="/fundogfortidsminder/Lokalitet/'
							+ this.systemnr + '">Læs mere...</a>',
					closable : true
				});

				var xy = this.pixel;
				tip
						.showAt( [ xy.x + 5 + mapPanel.body.getLeft(),
								xy.y + 5 + mapPanel.body.getTop() ]);
			};

			/**
			 * Handler for map mouse move events
			 */
			var onMousemove = function(e) {
				var onHover = function() {
					mapPanel.map.div.style.cursor = 'pointer';
				};
				var onHoverOut = function() {
					mapPanel.map.div.style.cursor = 'default';
				};
				checkHover(e.xy, onHover, onHoverOut);
			};

			// activate handling of mousemove and click
			map.events.register('mousemove', null, onMousemove);
			clickHandler = new OpenLayers.Handler.Click(self, {
				click : function(e) {
					checkHover(e.xy, onClick);
				}
			});
			clickHandler.activate();

			// outer function to be called at deactivation, to remove the
			// handlers
			unregisterEvents = function() {
				map.events.unregister('mousemove', null, onMousemove);
				clickHandler.deactivate();
			};
		};

		// make server request for locations
		Ext.Ajax.request( {
			url : '/publicffdata/locations',
			params : {
				bbox : map.getExtent().toBBOX(),
				denominator : Math.round(map.getScale()),
				filter : mapsearch.filter,
				searchid : mapsearch.searchid
			},
			method : 'GET',
			success : success,
			failure : function() {
				Ext.Msg.alert('Fejl', 'Kommunikation med server mislykkedes.');
			}
		});

	};

	// TODO: inherit this stuff
	// OpenLayers.Control implementation
	this.initialize = function() {
	};
	this.draw = function() {
	};
	this.activate = activate;
	this.deactivate = deactivate;
	this.setMap = function() {
	};
	this.destroy = function() {
	};

	mapsearch.Info.superclass.constructor.call(this, {
		imgInactive : 'images/info-a.png',
		imgActive : 'images/info-b.png',
		control : this
	});

	var onAfterolinit = function() {
		map = mapPanel.map;
		this.map = map;
	};

	mapPanel.on('afterolinit', onAfterolinit, this);

};

Ext.extend(mapsearch.Info, mapcomponent.tool.Tool);
/**
 * Predefined options for the OpenLayers.Map
 * 
 * @constructor
 * @param ticket
 *            {String} Valid KMS ticket
 */
mapsearch.MapConfig = function(ticket) {
	// var extent = new OpenLayers.Bounds(406016, 6027520, 930304, 6420736);

	var extent = new OpenLayers.Bounds(406016, 6027520, 930304, 6420736);
	// var restrictedExtent = new OpenLayers.Bounds(180000, 6000000, 980000,
	// 6500000);

	var scaleLine = new OpenLayers.Control.ScaleLine();

	var controls = [ new OpenLayers.Control.Navigation(), scaleLine ];

	var options = {
		controls : controls,
		resolutions : [ 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5, 0.25, 0.125, 0.0625 ],
		// restrictedExtent : restrictedExtent,
		maxExtent : extent,
		projection : 'EPSG:25832',
		units : 'm'
	};

	var layers = [];

	var fakeLayer = new OpenLayers.Layer.Vector('', {
		isBaseLayer : true
	});

	var applyDefaults = function(options) {
		options = options || {};

		var defaults = {
			isBaseLayer : false,
			ratio : 1,
			singleTile : true,
			visibility : true
		};

		Ext.apply(options, defaults);

		return options;
	};

	var createKMSLayer = function(servicename, options) {
		var kmsURL = 'http://kortforsyningen.kms.dk/service?';

		var params = {
			'SERVICENAME' : servicename,
			'FORMAT' : 'image/png',
			'SRS' : 'EPSG:25832',
			'TRANSPARENT' : 'true',
			'LAYERS' : 'topo_skaermkort',
			'TICKET' : ticket
		};

		options = applyDefaults(options);

		var layer = new OpenLayers.Layer.WMS('', kmsURL, params, options);

		return layer;
	};

	var kmsLayer = createKMSLayer('topo_skaermkort', {
		maxZoomLevel : 1
	});
	this.kmsLayer = kmsLayer;

	var arealInfoLayer = new OpenLayers.Layer.WMS('Arealinfo',
			'http://kort.arealinfo.dk/wms?servicename=landsdaekkende_wms&', {
				'LAYERS' : 'beskyttede_diger',
				'SRS' : 'EPSG:25832',
				'TRANSPARENT' : 'true',
				'FORMAT' : 'image/png'
			}, {
				isBaseLayer : false,
				ratio : 1,
				buffer : 0,
				singleTile : true,
				alpha : true,
				visibility : false,
				maxZoomLevel : 6
			});
	this.arealInfoLayer = arealInfoLayer;
	// PTHE changed layername and url 2011-01-18
	// Old url : http://www.kulturarv.dk/gis/mapserv?map=wmsout.map&
	// Old layername: postgis_fredet
	var protectedBuildingLayer = new OpenLayers.Layer.WMS('Fredede bygninger',
			'https://www.kulturarv.dk/geoserver/wms?service=WMS', {
				'LAYERS' : 'view_bygning_fredede',
				'SRS' : 'EPSG:25832',
				'TRANSPARENT' : 'true',
				'FORMAT' : 'image/png'
			}, {
				isBaseLayer : false,
				map_transparent : 'ON',
				ratio : 1,
				buffer : 0,
				singleTile : true,
				alpha : true,
				visibility : false,
				maxZoomLevel : 6
			});
	this.protectedBuildingLayer = protectedBuildingLayer;

	topografiLayer = new OpenLayers.Layer.WMS('topo25', 'http://kortforsyningen.kms.dk/service?', {
		'SERVICENAME' : 'topo25',
		'LAYERS':'topo25_klassisk',
		'FORMAT' : 'image/png',
		'SRS' : 'EPSG:25832',
		'TICKET' : ticket
	}, {
		isBaseLayer : false,
		ratio : 1,
		buffer : 0,
		singleTile : true,
		alpha : true,
		visibility : false,
		maxZoomLevel : 0
	});
	this.topografiLayer = topografiLayer;

	matrikelkortLayer = new OpenLayers.Layer.WMS('topomat',
			'http://kortforsyningen.kms.dk/service?', {
				'SERVICENAME' : 'topomat',
				'FORMAT' : 'image/png',
				'SRS' : 'EPSG:25832',
				'TRANSPARENT' : 'true',
				'TICKET' : ticket
			}, {
				isBaseLayer : false,
				ratio : 1,
				buffer : 0,
				singleTile : true,
				alpha : true,
				visibility : false,
				maxZoomLevel : 9
			});
	this.matrikelkortLayer = matrikelkortLayer;

	var beskyttelseLayer = new OpenLayers.Layer.WMS('KUAS', '/wms?', {
		'LAYERS' : 'v_reg_lokalitet_beskyttelse_areal',
		'FORMAT' : 'image/png',
		'SRS' : 'EPSG:25832',
		'TRANSPARENT' : 'true'
	}, {
		ratio : 1,
		buffer : 0,
		singleTile : true,
		alpha : true,
		visibility : false,
		maxZoomLevel : 8
	});
	this.beskyttelseLayer = beskyttelseLayer;

	var locationArealLayer = new OpenLayers.Layer.WMS('KUAS', '/wms?', {
		'LAYERS' : 'v_lokalitet_areal_all',
		'FORMAT' : 'image/png',
		'SRS' : 'EPSG:25832',
		'TRANSPARENT' : 'true'
	}, {
		ratio : 1,
		buffer : 0,
		singleTile : true,
		alpha : true,
		visibility : false,
		maxZoomLevel : 8
	});
	this.locationArealLayer = locationArealLayer;

	var cultureArealLayer = new OpenLayers.Layer.WMS('KUAS', '/wms?', {
		'LAYERS' : 'v_reg_lokalitet_all_kulturareal',
		'FORMAT' : 'image/png',
		'SRS' : 'EPSG:25832',
		'TRANSPARENT' : 'true'
	}, {
		ratio : 1,
		buffer : 0,
		singleTile : true,
		alpha : true,
		visibility : false,
		maxZoomLevel : 4
	});
	this.cultureArealLayer = cultureArealLayer;

	luftfotoLayer = new OpenLayers.Layer.WMS('ortofoto', 'http://kortforsyningen.kms.dk/service?',
			{
				'SERVICENAME' : 'ddoland_2008_20cm',
				'FORMAT' : 'image/png',
				'SRS' : 'EPSG:25832',
				'TRANSPARENT' : 'true',
				'TICKET' : ticket
			}, {
				isBaseLayer : false,
				ratio : 1,
				buffer : 0,
				singleTile : true,
				alpha : true,
				visibility : false
			});
	this.luftfotoLayer = luftfotoLayer;

	hojeLayer = new OpenLayers.Layer.WMS('hoeje_maalebordsblade',
			'http://kortforsyningen.kms.dk/service?', {
				'SERVICENAME' : 'topo20_hoeje_maalebordsblade',
				'FORMAT' : 'image/png',
				'SRS' : 'EPSG:25832',
				'TRANSPARENT' : 'true',
				'TICKET' : ticket
			}, {
				isBaseLayer : false,
				ratio : 1,
				buffer : 0,

				singleTile : true,
				alpha : true,
				visibility : false

			});
	this.hojeLayer = hojeLayer;

	laveLayer = new OpenLayers.Layer.WMS('lave_maalebordsblade',
			'http://kortforsyningen.kms.dk/service?', {
				'SERVICENAME' : 'topo20_lave_maalebordsblade',
				'FORMAT' : 'image/png',
				'SRS' : 'EPSG:25832',
				'TRANSPARENT' : 'true',
				'TICKET' : ticket
			}, {
				isBaseLayer : false,
				ratio : 1,
				buffer : 0,

				singleTile : true,
				alpha : true,
				visibility : false
			});
	this.laveLayer = laveLayer;

	var kuasLayer = new OpenLayers.Layer.WMS('KUAS', '/wms?', {
		'LAYERS' : 'v_lokalitet_all',
		'FORMAT' : 'image/png',
		'SRS' : 'EPSG:25832',
		'TRANSPARENT' : 'true',
		'STYLES' : mapsearch.sldurl ? 'v_lokalitet_all' : 'v_lokalitet_protected'
	}, {
		ratio : 1,
		buffer : 0,
		singleTile : true,
		alpha : true,
		visibility : true
	});
	this.kuasLayer = kuasLayer;

	var borderLayer = new OpenLayers.Layer.WMS('KUAS', '/wms?', {
		'FORMAT' : 'image/png',
		'SRS' : 'EPSG:25832',
		'TRANSPARENT' : 'true'
	}, {
		ratio : 1,
		buffer : 0,
		singleTile : true,
		alpha : true,
		visibility : false
	});
	this.borderLayer = borderLayer;

	var adressLayer = new OpenLayers.Layer.Vector('Adresse', {
		style : {
			externalGraphic : 'images/adress.png',
			graphicWidth : 16,
			graphicHeight : 16
		}
	});
	this.adressLayer = adressLayer;

	var routeLayer = new OpenLayers.Layer.Vector('Rute');
	this.routeLayer = routeLayer;

	var localityHighlightLayer = new OpenLayers.Layer.Vector('Adresse', {
		style : {
			externalGraphic : 'images/selectedlocation.png',
			graphicWidth : 24,
			graphicHeight : 24
		}
	});
	this.localityHighlightLayer = localityHighlightLayer;

	this.layers = [ fakeLayer, kmsLayer, topografiLayer, luftfotoLayer, hojeLayer, laveLayer,
			protectedBuildingLayer, arealInfoLayer, borderLayer, matrikelkortLayer,
			cultureArealLayer, beskyttelseLayer, locationArealLayer, kuasLayer,
			localityHighlightLayer, adressLayer, routeLayer ];

	if (mapsearch.sldurl) {
		var kuasSelectionLayer = new OpenLayers.Layer.WMS('KUAS', '/wms?', {
			'LAYERS' : 'v_lokalitet_all',
			'FORMAT' : 'image/png',
			'SRS' : 'EPSG:25832',
			'TRANSPARENT' : 'true',
			'SLD' : mapsearch.sldurl,
			'STYLES' : ''
		}, {
			ratio : 1,
			buffer : 0,
			singleTile : true,
			alpha : true,
			visibility : true
		});
		this.layers.push(kuasSelectionLayer);
		this.kuasSelectionLayer = kuasSelectionLayer;
	}

	this.options = options;
	this.scaleLine = scaleLine;
};
/**
 * Predefined options for the Toc
 * 
 * @constructor
 */
mapsearch.TocConfig = function(config) {
	var toc = config.tocPanel.toc;
	var mapPanel = config.mapPanel;
	var mapConfig = mapPanel.mapConfig;

	var lb2 = '<br><img style="width:48px;height:1px;" unselectable="on" src="'
			+ Ext.BLANK_IMAGE_URL + '"/>';

	var root = toc.getRootNode();

	var createFortidsminderLayers = function(node) {
		var node1, node2, node3, node4;

		var onClick = function() {
			var styles, filter;

			if (node1.getUI().isChecked() && !node2.getUI().isChecked()) {
				styles = 'v_lokalitet_protected';
				filter = 'protected';
			} else {
				styles = 'v_lokalitet_all';
				filter = 'all';
			}

			mapConfig.kuasLayer.mergeNewParams({
				styles : styles
			});

			mapConfig.kuasLayer.setVisibility(true);

			mapsearch.filter = filter;

			mapConfig.info.deactivate();
			mapConfig.info.activate();
		};

		node1 = new Ext.tree.TreeNode({
			text : 'Fredede',
			checked : true,
			disabled : true,
			listeners : {
				checkchange : {
					fn : function() {
						// Ext.Msg.show('Info', '');
						node1.getUI().checkbox.checked = true;
						node1.getUI().checkbox.defaultChecked = true;
						node1.attributes.checked = true;
					}
				}

			}
		});

		node2 = new Ext.tree.TreeNode({
			text : 'Ikke fredede',
			checked : mapsearch.sldurl ? true : false,
			listeners : {
				checkchange : {
					fn : onClick
				}
			}
		});

		node.appendChild(node1);
		node.appendChild(node2);

		if (mapConfig.kuasSelectionLayer) {
			var onCheckchange = function(node, checked) {
				if (checked) {
					mapConfig.kuasSelectionLayer.setVisibility(true);
				} else {
					mapConfig.kuasSelectionLayer.setVisibility(false);
				}
				mapsearch.filter = 'searchresult';
			};
			node3 = new Ext.tree.TreeNode({
				text : 'Søgeresultat',
				checked : true,
				listeners : {
					checkchange : {
						fn : onCheckchange
					}
				}
			});
			node.appendChild(node3);
		}
	};

	var fortidsminderGroup = new mapcomponent.toctree.GroupNode({
		text : 'Fortidsminder'
	});

	root.appendChild(fortidsminderGroup);

	createFortidsminderLayers(fortidsminderGroup);

	fortidsminderGroup.addLayer({
		text : 'Vis udstrækning',
		layer : mapConfig.locationArealLayer,
		layerName : 'v_lokalitet_areal_all',
		visible : false
	});

	fortidsminderGroup.addLayer({
		text : 'Vis beskyttelseslinier',
		layer : mapConfig.beskyttelseLayer,
		layerName : 'v_reg_lokalitet_beskyttelse_areal',
		visible : false
	});

	var andetfortidsminderGroup = new mapcomponent.toctree.GroupNode({
		text : 'Andet kulturarv'
	});
	root.appendChild(andetfortidsminderGroup);

	andetfortidsminderGroup.addLayer({
		text : 'Kulturarvsarealer',
		layer : mapConfig.cultureArealLayer,
		layerName : 'v_reg_lokalitet_all_kulturareal',
		visible : false
	});
	andetfortidsminderGroup.addLayer({
		text : 'Beskyttede sten- og' + lb2 + 'jorddiger',
		layer : mapConfig.arealInfoLayer,
		layerName : 'beskyttede_diger',
		visible : false
	});
	andetfortidsminderGroup.addLayer({
		text : 'Fredede bygninger',
		layer : mapConfig.protectedBuildingLayer,
		// PTHE changed layername 2011-01-18
		// Old layername : postgis_fredet
		layerName : 'view_bygning_fredede',
		visible : false
	});

	var estateGroup = new mapcomponent.toctree.GroupNode({
		text : 'Administrative grænser'
	});
	root.appendChild(estateGroup);

	estateGroup.addLayer({
		text : 'Kommunegrænser',
		layer : mapConfig.borderLayer,
		layerName : 'v_map_kommune',
		visible : false
	});

	estateGroup.addLayer({
		text : 'Sognegrænser',
		layer : mapConfig.borderLayer,
		layerName : 'v_map_stednr',
		visible : false
	});
	estateGroup.addLayer({
		text : 'Matrikel',
		layer : mapConfig.matrikelkortLayer,
		layerName : 'JORDSTYKKE',
		visible : false
	});
	estateGroup.addLayer({
		text : 'Ansvarsområder',
		layer : mapConfig.borderLayer,
		layerName : 'v_map_ansvarsomrade',
		visible : false
	});

	backgroundGroup = new mapcomponent.toctree.GroupNode({
		text : 'Baggrundskort',
		maxSelected : 2
	});
	root.appendChild(backgroundGroup);
	backgroundGroup.addLayer({
		text : 'Vejkort',
		layer : mapConfig.kmsLayer,
		layerName : 'topo_skaermkort',
		visible : true,
		disabled : true
	});

	backgroundGroup.addLayer({
		text : 'Topografisk kort',
		layer : mapConfig.topografiLayer,
		layerName : 'topo25_klassisk',
		visible : false
	});

	var layerNode = backgroundGroup.addLayer({
		text : 'Luftfoto',
		layer : mapConfig.luftfotoLayer,
		layerName : 'ddoland_2008_20cm',
		// layerName :'Orto_dk',
		visible : false
	});

	backgroundGroup.addLayer({
		text : 'Høje målebordsblade ' + lb2 + '(1842-99)',
		layer : mapConfig.hojeLayer,
		layerName : 'dtk_hoeje_maalebordsblade',
		visible : false
	});

	backgroundGroup.addLayer({
		text : 'Lave målebordsblade ' + lb2 + '(1901-71)',
		layer : mapConfig.laveLayer,
		layerName : 'dtk_lave_maalebordsblade',
		visible : false
	});

};

