var SKBAATTokenKey;

function setSKBAATTokenKey(value) {
	SKBAATTokenKey = value;
}

// Viser liste over alle etatar
function getuDeps() {
	setDefaultImg();
	jQuery("#esmeny").empty();
	jQuery("#esmeny").append("<a href = 'javascript: void toTop()'><h3>Tilbake til start</h3></a><ul id='red' class='treeview'></ul>");
	jQuery("#autocomplete").autocomplete({data:testq,matchContains:true,minChars: 2,autoFill: true});
	jQuery.ajax({  url: includemappe+"/udept.html",    success: function(html){jQuery("#red").append(html)}});
}
// Viser liste over alle departement
function getDeps() {
	setDefaultImg();
	jQuery("#esmeny").empty();
	jQuery("#esmeny").append("<a href = 'javascript: void toTop()'><h3>Tilbake til start</h3></a><ul id='red' class='treeview'></ul>");
	jQuery("#autocomplete").autocomplete({data:testq,matchContains:true,minChars: 2,autoFill: true});
	jQuery.ajax({  url: includemappe+"/dept.html",    success: function(html){jQuery("#red").append(html)}});
}
// Funksjon for å hente eit departement i tremenyen
function getDep(id) {
	jQuery("#esmeny").empty();
	jQuery("#esmeny").append("<a href = 'javascript: void getDeps()'><h3>Tilbake til departementoversikt</h3></a><ul id='red' class='treeview'></ul>");
	jQuery.ajax({  url: includemappe+"/"+id +".html",    success: function(html){jQuery("#red").append(html);tree()}});
}
// Funksjon for å hente ein etat i tremenyen / med tilbake lenke til liste over etater
function getuDep(id) {
	jQuery("#esmeny").empty();
	jQuery("#esmeny").append("<a href = 'javascript: void getuDeps()'><h3>Tilbake til liste</h3></a><ul id='red' class='treeview'></ul>");
	jQuery.ajax({  url: includemappe+"/"+id +".html",    success: function(html){jQuery("#red").append(html);tree()}});
	setimg(id,0)
}
// Funksjon for å hente ein etat i tremenyen / med tilbake lenke til overs
function getusDep(id) {
	jQuery("#esmeny").empty();
	jQuery("#esmeny").append("<a href = 'javascript: void toTop()'><h3>Tilbake til oversikt</h3></a><ul id='red' class='treeview'></ul>");
	jQuery.ajax({  url: includemappe+"/"+id +".html",    success: function(html){jQuery("#red").append(html);tree()}});
	setimg(id,0)
}
// funksjon for  å initiere tremenyen.
function tree() {
	jQuery("#red").treeview({animated: "fast",collapsed: true,unique: true});
}

//Funksjon for å gå til oversiktsida
function toTop() {
	setDefaultImg();
	jQuery("#esmeny").empty();
	jQuery("#esmeny").append("<p>Her kan du få se hvordan den regionale statsforvaltningen er bygd opp, lokalisering av den enkelte etat og hvilket geografisk dekningsområde som gjelder.</p><p>For å se hvilke oppgaver de ulike virksomhetene har, gå til <a href='/samkart'>Samfunnskartet</a>.  Start med å velge en oversikt eller søke etter en etat.</p><h2>Søk etter etat:</h2><form onsubmit='hentEtat()'><p><input id='autocomplete' type='text' /><input type='button' value='Vis' onclick='hentEtat()'/><p></form><ul id='red' class='treeview' style='margin-left:1px;'></ul>");
	jQuery("#autocomplete").autocomplete({data:testq,matchContains:true,minChars: 2,autoFill: true});
	jQuery.ajax({  url: includemappe+"/main.html",  cache: false,  success: function(html){jQuery("#red").append(html)}});
}

var map, baseLayer;

// initierer kartløysinga
function mapinit(){
	var mapOptions = {
		//controls: [],
		projection: "EPSG:32633",
		units: "m",
		maxResolution: 5416,
		maxExtent: new OpenLayers.Bounds(-2500000,3500000,3045984,9045984),
		numZoomLevels: 16
	  };
	  
    //kart
	map = new OpenLayers.Map("dkmap", mapOptions);	
	map.addControl(new OpenLayers.Control.PanZoom());
	
	baseLayer = new OpenLayers.Layer.WMS('Topografisk norgeskart2', ['http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?gkt='+SKBAATTokenKey], {layers: 'topo2', format: 'image/jpeg'}, {buffer: 1});
	baseLayer.setIsBaseLayer(true);
	map.addLayer(baseLayer);
	
	svalbard = new OpenLayers.Layer.WMS('Svalbard', ['http://ogc.difi.no/ogc/svalbard.php'], {layers: 'svalbard_alle_tema', format: 'image/gif', transparent: true}, {singleTile: true});
	svalbard.setIsBaseLayer(false);
	map.addLayer(svalbard);	
	
	//map.zoomToMaxExtent();
	map.zoomToExtent(new OpenLayers.Bounds(-241000,6437500,1283000,7961500));
}

//Highligter valgt etat i tremeny
function setActive(id){
   	jQuery('li span').removeClass("highl");
	jQuery('#'+id).addClass("highl");
	}

//initierer nytt valgt etat i dekningskart
function setimg(id,l){
	setActive(id);
	setDK(id,l);
	//lager url til fargekart
	var lgurl = 'http://ogc.difi.no/ogc/regionalstat.php?LAYER=regionalstat&TAILID='+id+'&LEAF='+l+'&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&FORMAT=image/gif&LAYERS=regionalstat';
	//endrer til nytt fargekart
	ele = document.getElementById('lg').src = lgurl;
}

function getElements(node,tag_prefix,tag_name)
{
	if (window.ActiveXObject)
	{
		//IE has no idea of namespaces/prefixes
		return node.getElementsByTagName(tag_prefix+":"+tag_name);
	}
	else if (window.XMLHttpRequest)
	{
		//mozilla
		return node.getElementsByTagName(tag_name);
	}
	//else
	//	log("Unsupported browser format: not expecting this kind of browser.");
}

var dekningLayer;

//Legg på dekningsområdet og punkt
function setDK(id,l){
    for(var i=0; i < map.popups.length; i++) {
		map.removePopup(map.popups[i]);
    }

	var bburl = "/etatstruktur/extent.asp?tailid=" + id + "&leaf=" + l + "&callback=?";
	var mkurl = "/etatstruktur/geojson.asp?tailid="+id+"&leaf="+l;
	
	if (dekningLayer != undefined){
		map.removeLayer(dekningLayer);
	}
	if (baseLayer != undefined){
		map.removeLayer(baseLayer);
	}

	var layerOptions = {
		map : "grunnkart_wms",
		i : "PNG"
	};

	dekningLayer = new OpenLayers.Layer.WMS("Dekningskart","http://ogc.difi.no/ogc/regionalstat.php?",{layers: "regionalstat", tailid: id,leaf: l, format: "png"}, {singleTile: true, transparent: "true"});
	dekningLayer.setVisibility(true);
	dekningLayer.setIsBaseLayer(true);

	map.addLayer(dekningLayer);

	baseLayer = new OpenLayers.Layer.WMS('Topografisk norgeskart2', ['http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?gkt='+SKBAATTokenKey], {layers: 'topo2', format: 'image/jpeg'}, {buffer: 1, opacity: 0.6});
	baseLayer.setVisibility(true);
	baseLayer.setIsBaseLayer(false);
	map.addLayer(baseLayer);
	
	svalbard = new OpenLayers.Layer.WMS('Svalbard', ['http://ogc.difi.no/ogc/svalbard.php'], {layers: 'svalbard_alle_tema', format: 'image/gif', transparent: true}, {singleTile: true});
	svalbard.setIsBaseLayer(false);
	map.addLayer(svalbard);	
	

	jQuery.getJSON(
		bburl,
		function(data){
			if (data.BBOX.minx==data.BBOX.maxx) {
				map.zoomToExtent(new OpenLayers.Bounds(-241000, 6237500, 1283000, 8361500));
			} else {
				map.zoomToExtent(new OpenLayers.Bounds(data.BBOX.minx,data.BBOX.miny,data.BBOX.maxx,data.BBOX.maxy));
			}
		}
	);

	// hentar punkt som leggast på kart
	jQuery.getJSON(
		mkurl,
		function(data) {
			setOverlayIcons(data);
		}
	);

}

// Fjernar dekningsområdet og går til heile landet visning
function setDefaultDK(){
    for(var i=0; i < map.popups.length; i++) {
            map.removePopup(map.popups[i]);
     }
	if (dekningLayer != undefined){
		dekningLayer.setVisibility(false);
	}
	if (markers != undefined){
		markers.setVisibility(false);
	}
	map.zoomToExtent(new OpenLayers.Bounds(-241000, 6237500, 1283000, 8361500));
}

// Fjernar fargekart
function setDefaultImg(){
	setDefaultDK();
	var lgurl = '/bilete/blank.gif';
	ele = document.getElementById('lg').src = lgurl;
}

AutoSizeAnchoredBubble = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {
	'autoSize': true
});

//Legg punkt med popup på kart
function setOverlayIcons(vek) {
	if (vek != undefined) {
		if (markers != undefined){
			map.removeLayer(markers);
		}
		markers = new OpenLayers.Layer.Markers("etater");
		map.addLayer(markers);

		var size = new OpenLayers.Size(10,10);
		var offset = new OpenLayers.Pixel(-(size.w/2), -size.h/2);

		for (i=0; i<vek.features.length; i++) {

		    var feature = vek.features[i];
			if (feature.properties.ikon == ""){
				a = i%4;
				var icon = new OpenLayers.Icon('lib/img/prikk.gif', size, offset);
			}
			else
			{
				var icon   = new OpenLayers.Icon(feature.properties.ikon, size, offset);
			}

			var ll = new OpenLayers.LonLat(feature.geometry.coordinates[0], feature.geometry.coordinates[1]);

			var contentHTML = '<div style="font-weight:bold;color:#4B7A98;padding:3px;background:#FFFFFF;filter:alpha(opacity:85);opacity:0.85;">';
			contentHTML += '<a class="link" href="'+feature.properties.url+'" target="_blank">';
			contentHTML += feature.properties.title ;
			contentHTML += '</a>';
			contentHTML += '</div>';

			addMarker(ll, AutoSizeAnchoredBubble, contentHTML, icon, true, false);
		}
		markers.setVisibility(true);
	}
}

function addMarker(ll, popupClass, popupContentHTML, icon, closeBox, overflow) {
 	var feature = new OpenLayers.Feature(markers, ll);
	feature.closeBox = closeBox;
	feature.popupClass = popupClass;
	feature.data.popupContentHTML = popupContentHTML;
	feature.data.overflow = (overflow) ? "auto" : "hidden";
	feature.data.icon = icon;

	var marker = feature.createMarker();

	var markerClick = function (evt) {
		try {
			if (this.popup != currentPopup)
				currentPopup.hide();
		}
		catch (ex) {}
		if (this.popup == null) {
			this.popup = this.createPopup(this.closeBox);
			map.addPopup(this.popup);
			this.popup.show();
		} else {
			this.popup.toggle();
		}
		currentPopup = this.popup;
		OpenLayers.Event.stop(evt);
	};

	marker.events.register("mousedown", feature, markerClick);
	marker.events.register("mouseover", feature, markerClick);

	markers.addMarker(marker);
}

//Funksjon knytt til henting av etatar i suggest søk
function hentEtat() {
	var selected;
	var udept = [
		{id: "26549",navn: "Arbeids- og velferdsetaten"},
		{id: "34842",navn: "Barne-, ungdoms- og familieetaten"},
		{id: "41682",navn: "Bispedømmekontor"},
		{id: "25109",navn: "Den norske stats husbank"},
		{id: "25117",navn: "Arbeidstilsynet"},
		{id: "26551",navn: "Direktoratet for samfunnssikkerhet og beredskap"},
		{id: "26653",navn: "Fiskeridirektoratet"},
		{id: "26684",navn: "Forbrukerrådet"},
		{id: "34581",navn: "Forsvarsstaben"},
		{id: "41382",navn: "Fylkesmannembetene"},
		{id: "40742",navn: "Fylkesnemnda for sosiale saker"},
		{id: "32222",navn: "Helse Midt-Norge RHF"},
		{id: "32225",navn: "Helse Nord RHF"},
		{id: "32221",navn: "Helse Sør-Øst RHF"},
		{id: "32223",navn: "Helse Vest RHF"},
		{id: "24078",navn: "Jernbaneverket"},
		{id: "40945",navn: "Jordskifteoverrettene"},
		{id: "40944",navn: "Jordskifterettene"},
		{id: "26438",navn: "Justervesenet"},
		{id: "38542",navn: "Kriminalomsorgen"},
		{id: "26654",navn: "Kystverket"},
		{id: "40942",navn: "Lagmannsrettene"},
		{id: "38562",navn: "IMDi - Integrerings- og mangfoldsdirektoratet"},
		{id: "26492",navn: "Mattilsynet"},
		{id: "40902",navn: "Meteorologisk institutt"},
		{id: "26417",navn: "NVE - Norges vassdrags- og energidirektorat"},
		{id: "29872",navn: "Politiet"},
		{id: "25646",navn: "Reindriftsforvaltningen"},
		{id: "26608",navn: "Riksadvokaten"},
		{id: "26520",navn: "Riksarkivet"},
		{id: "35021",navn: "Senter for statlig økonomistyring"},
		{id: "26339",navn: "Sjøfartsdirektoratet"},
		{id: "26674",navn: "Skatteetaten"},
		{id: "25107",navn: "Statens kartverk"},
		{id: "40722",navn: "Statens lånekasse for utdanning"},
		{id: "26698",navn: "Statsbygg"},
		{id: "40948",navn: "Tingrettene"},
		{id: "26676",navn: "Toll- og avgiftsetaten"},
		{id: "26538",navn: "UDI - Utlendingsdirektoratet"},
		{id: "20521",navn: "Statens vegvesen"}
	];

	selected = jQuery("input#autocomplete").val();
	for(var i=0; i < udept.length; i++)
	{
		if (udept[i].navn.toLowerCase() == selected.toLowerCase())
		{
			getusDep(udept[i].id);
			break;
		}
	}
}
