var accordion;
var accordionTogglers;
var accordionContents;
var curvyHTML = '<!--em class="ctl"><b>&bull;</b></em><em class="cbl"><b>&bull;</b></em><em class="ctr"><b>&bull;</b></em><em class="cbr"><b>&bull;</b></em-->'
var greetingMessage = "Velkomin/n á vefsjá Mosfellsbæjar"
greetingMessage = "";
var arrSvResults;
var start_lon = 500000;
var start_lat = 500000;

var start_zoom = 0;

/***************************  AJAX   *************************************/



 var map = null
            var searchBox = "";
            var searchResults = "";
			var svSearchResults = "";
            var searchTerm = "";

var xmlHttp;


var accordion
var minMaxIcon = "+"
var i = 0

function backToResults(parType)
{
	var results
	if(parType == "sv")
		results = svSearchResults
	else if(parType == "addr")
		results = searchResults
	
		
	document.getElementById("results").innerHTML=searchBox+results
	document.getElementById("queryText").value=searchTerm
}
/****************************** showInfoCallback ****/
function showInfoCallback(response)
{

	

		var resp = response.responseText.split("|");
		
		var strHTML = ""
		var addr = resp[0].split(",")[0];
		
		var landNr = resp[0].split(",")[1];
		strHTML += '<b>'+addr+'</b>'+"<a href=# style='font-size:0.6em;' onclick=backToResults('addr')><!--img class='backArrow' src='img/icon_arrow_back.gif' alt='Til Baka'-->&nbsp;<font vertical-align=center>(Til Baka)</font></a>"+'</span>'
		
		var pic;
		var type;
		var gerd;
		var author;
		var entry;
		var divHTML = '';
		var headerType = "";
		divHTML+='<p id="header'+i+'" onclick="clickAccordion('+i+')"class="accToggler">&nbsp;<span id="headerIcon0">-</span>&nbsp;Aðrar gagnaveitur</p><p class="accContent">'
					divHTML+= '<a target="_blank" href=http://www3.fmr.is/?pageid=313&landnr='+landNr+'&streetname='+encodeURI(addr)+'&sveitarfelag=Gar%C3%B0ab%C3%A6r>Fasteignamat Ríkisins</a> <br>'
					divHTML+= '<a target="_blank" href=http://www.ja.is?q='+encodeURI(addr)+'>Símaskráin</a><br>'
		
		
		for(i = 1;i<resp.length-1;i++)
		{
			
			entry  = resp[i].split(",")
			pic = entry[0]
			type = entry[1]
			gerd = entry[2]
			author = entry[3]
			if(type != undefined)
			{
				if(headerType != type)//ný type
				{
					headerType = type;
					divHTML += '<p id="header'+i+'" onclick="clickAccordion('+i+')"class="accToggler">&nbsp;<span id="headerIcon'+i+'">+</span>&nbsp;'+type+'</p><p class="accContent">'
					divHTML+= '<a target="_blank" href='+pic+'>'+gerd+'</a> <br>'
					
				}
				else
				{
					divHTML+= '<a target="_blank" href='+pic+'>'+gerd+'</a> <br>'
				}
			}
			else
				divHTML += "<p>Engir skráðir uppdrættir</p>"
		}
		
		//Write search results to div
		//document.getElementById("results").innerHTML = strHTML+divHTML
		//Set up the amazing moo accordion
		accordion = new Accordion($$('p.accToggler'), $$('p.accContent'), {opacity:false,alwaysHide:true});
			
		

	
	
}
function clickAccordion(index)
{
	var headerIcon = document.getElementById("headerIcon"+index)
	var iconTemp;
	var j = 0
	if(headerIcon.innerHTML == "+")
	{
		headerIcon.innerHTML = "-"
		
		while(j<i)
		{
			if(index != j)
			{
				if(document.getElementById("headerIcon"+j) != null)
					document.getElementById("headerIcon"+j).innerHTML = "+"
				//log(j<i)
			}
			j++
		}
	}
	else
		headerIcon.innerHTML = "+"
}
/******************************  centerOnXY*****/
/** TODO: Þaft helberann uppskurð */
function centerOnXY(parX, parY, strAddress)
{
	xyDX = 100;

	//sendAJAXRequest("skipulagQuery2.asp?strTexti=" + strAddress + "&sveitarfelag=Gardabær&x=gb",showInfoCallback)
     var px = map.getPixelFromLonLat(new OpenLayers.LonLat(parX,parY));
	 //alert(px);
	 
	var bounds = new parent.OpenLayers.Bounds(parX-xyDX,parY-xyDX,parX+xyDX,parY+xyDX);
	//alert("x:"+parX+" y:"+parY+"bounds: "+bounds.toBBOX());
	 var url =  map.layers[0].getFullRequestString(
                    {
                        REQUEST: "GetFeatureInfo",
                        EXCEPTIONS: "application/vnd.ogc.se_xml",
                        BBOX: bounds.toBBOX(),
                        X: px.x,
                        Y: px.y,
                        INFO_FORMAT: 'text/html',
                        QUERY_LAYERS: map.layers[0].params.LAYERS,
                        FEATURE_COUNT: 50,
                        srs: 'EPSG:3057',
                        styles: '',
                        layers: 'skipulag:Deiliskipulag',
                        WIDTH: map.size.w,
                        HEIGHT: map.size.h,
						strTexti: strAddress
                    },
                    //"http://geoserver.loftmyndir.is:8080/geoserver/wms"
					"skipulagQuery2.asp"
                );
                OpenLayers.loadURL(url, '', this, showInfoCallback, showInfoCallback);

   
   
	

	parent.map.zoomToExtent(bounds)
	parent.markers.clearMarkers();

	var size = new OpenLayers.Size(25,25);
	var offset = new OpenLayers.Pixel(-(size.w/2), -size.h/2);
	var icon = new OpenLayers.Icon('img/marker copy.png',size,offset);
	marker = new parent.OpenLayers.Marker(new parent.OpenLayers.LonLat(parX,parY),icon);

	markers.addMarker(marker);
	// top.frames.frData.height="90%"



}



/******************************  init AJAX  *****/
function initAjax()
{

	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				alert("Your browser does not support AJAX!");
			}
		}

	}

}

/*

*/
/****************************** searchCallback  *****/
 function searchCallback()
 {
 	if(xmlHttp.readyState==4)
 	{
		
 		var results =  xmlHttp.responseText.split("|")
 		var strHTML = ""
 		var maxLength = 25
		var headerSv = "";

		if(results[1] == "ekkert")
		{
			strHTML += "<span id=resultsError>Heimilisfang fannst ekki. Athugið stafsetningu.</span>"
			log("ekkert")
		}
		else if(results[1] == "complete")
		{
			log("complete")
			strHTML += "<a href=# style='font-size:0.8em;' onclick=backToResults('sv')><!--img class='backArrow' src='img/icon_arrow_back.gif' alt='Til Baka'-->&nbsp;<font vertical-align=center>(Til Baka)</font></a>"+'</span><br>'
			for ( i = 2; i<results.length & i<maxLength;i++)//byrjum í i = 2 út af því að i=1 eru control skilaboð
			{
				var temp = results[i].split(",")
				var addr = temp[0]
				
				var x = temp[2]
				var y = temp[3]
				headerSv = sv;
				if(i == 2) //birtum sveitafélag sem header
				{
					var sv = temp[1]
					strHTML += '<span class="header" onclick="clickAccordion('+i+')">'+sv+'</span><br>'
				}
				strHTML += "<a id='searchResult' href=# onclick=centerOnXY("+x+","+y
				strHTML += ",'"+escape(addr)+"'"
				strHTML += ")>"+addr+"</a><br>"
			}

			searchResults = strHTML

			if(results.length > maxLength)
				strHTML += "<span id=resultsError>"+(results.length-maxLength)+" fleiri heimilisföng fundust, vinsamlegast takmarkið leitina.</span>"
		}
		else if(results[1] == "partial")
		{
			log("partial")
			strHTML += '<span id="resultsError">Heimilisfang fannst í fleiri en einu sveitarfélagi. Vinsamlegast veldu sveitarfélag:.</span><br><br>'
			log(results[0])
			log(results[1])
			log(results[2])
			
			arrSvResults = results[2].split(",")
			for ( i = 1; i<arrSvResults.length & i<maxLength;i++)//byrjum í i = 2 út af því að i=1 eru control skilaboð
			{
				
				//log(i+" "+temp[0])
				
				
				var varJS = "searchWithSv('"+i+"')"
				if(arrSvResults[i] != "")
					strHTML += "<a id='searchResult' href=# onclick="+varJS+">"+arrSvResults[i]+"</a><br>"
				
				
			}
			if(arrSvResults.length > maxLength)
				strHTML += "<span id=resultsError>Heimilisföng í "+(arrSvResults.length-maxLength)+" fleiri sveitarfélögum fundust, vinsamlegast takmarkið leitina.</span>"
			svSearchResults = strHTML
		}
		

 		document.getElementById("results").innerHTML = searchBox + strHTML 
 		document.getElementById("queryText").value=searchTerm
	accordion = new Accordion($$('p.accToggler'), $$('p.accContent'), {opacity:false,alwaysHide:true});
	}

 }
/****************************** / searchWithSv ***/
 function searchWithSv(parSv)
 {
	searchTerm=queryText//document.getElementById("queryText").value
 	var url = "skipulagquery.asp?sv="+escape(arrSvResults[parSv])+"&queryType=list&queryText="+escape(searchTerm)
	sendAJAXRequest(url, searchCallback)
 }
 
/****************************** / searchOnEnter   ***/
function searchOnEnter(e)
{
	var keycode;

	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13)
	 {
	   query_onclick();
	   return false;
	}
	else
	return true;
}
/****************************** sendAJAXRequest ****/
function sendAJAXRequest(url, callback)
{
	initAjax()
	xmlHttp.onreadystatechange = callback
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);

}
/******************************  onclick ****/
var queryText
function query_onclick()
{


	queryText = document.getElementById("queryText").value
	searchTerm = queryText
	sendAJAXRequest("skipulagquery.asp?queryType=list&queryText="+queryText, searchCallback)


	return true;
}

/****************************** AJAX ENDAR **********************************/

/****************************** INIT OPENLAYER OG FLEIRA**********************************/
var olControl_measureLine
var olControl_zoomBox
var olControl_dragPan
var zoomboxIcon
var dragpanIcon
var zoomoutIcon
var measureIcon
var infoIcon

var draw = "false"
function log(message)
{
	try
		{
			console.log(message)
		}
		catch (e)
		{
		
		}
}

function setInfoDivText(text)
{
var infoDiv = document.getElementById("infoSpan")
infoDiv.innerHTML = text+curvyHTML;

}

function deactivateAll()
{
	olControl_measureLine.deactivate()
	olControl_zoomBox.deactivate()
	olControl_dragPan.deactivate()
}
function updatePermalink()
{
	//log('permaMove')
	var olPermaLink = document.getElementById('OpenLayers.Control.Permalink_57')
	var permaDiv = document.getElementById('permalink')
	permaDiv.firstChild.href = olPermaLink.firstChild.href
	
	
}
function switchCommands(command)
{

	
	document.getElementById("tbZoomBox").style.backgroundImage = zoomboxIcon 
	document.getElementById("tbDragPan").style.backgroundImage = dragpanIcon  
	document.getElementById("tbZoomOut").style.backgroundImage = zoomoutIcon  
	document.getElementById("tbMeasureLine").style.backgroundImage = measureIcon  
	document.getElementById("tbInfo").style.backgroundImage = infoIcon     
	//setInfoDivText(greetingMessage)
	
	log(command)
	var tbDiv = document.getElementById("tb"+command)
	var moreInfoText = "<br>Nánari upplýsingar í <a href=# onclick=javascript:openHelpWindow()>hjálp</a>"
	moreInfoText = "";
	setInfoDivText(moreInfoText);
	if(command=="ZoomBox")
	{
	
		deactivateAll()
		log("zoom")
		setInfoDivText("Halda niðri músatakkanum til að afmarka svæði."+moreInfoText)
		tbDiv.style.backgroundImage="url(img/toolb_"+command+"_down.gif)";
		olControl_zoomBox.activate()
	}
	if(command=="DragPan")
	{
		deactivateAll()
		log("pan")
		setInfoDivText("Halda niðri músarhnappi og draga til að hliðra kortinu."+moreInfoText)
		tbDiv.style.backgroundImage="url(img/toolb_"+command+"_down.gif)";
		olControl_dragPan.activate()
	}
	if(command=="MeasureLine")
	{
		deactivateAll()
		setInfoDivText("Tvísmella til að klára mælingu. "+moreInfoText)
		tbDiv.style.backgroundImage="url(img/toolb_"+command+"_down.gif)";
		if(storedFeature != null)
			storedFeature.destroy();
		log("measure")
		
		olControl_measureLine.activate();
	}
	if(command == "ZoomOut")
	{
		map.zoomOut()
	}
	if(command=="Overview")
	{
		/*var bounds = new OpenLayers.Bounds(447840.11,550626.12,529200.82,615714.69);
		map.zoomToExtent(bounds)*/
		map.setCenter(new OpenLayers.LonLat(start_lon, start_lat), start_zoom, false, false);
	 
	}
	if(command == "Print")
	{
		window.print();
	}
	if(command == "Info")
	{
		openHelpWindow();
	}
}
var helpWin;
function openHelpWindow()
{
	if(helpWin == null || helpWin.closed)
		helpWin = window.open("help.asp?sv=husafridun", "helpWindow", "status=0, toolbar=0, scrollbars=1, resizable=1, menubar=0, height=800, width=700")
	else
		helpWin.focus();
}
function toggle()
{
	if(draw == "false")
	{
		//log("Activate")
		zoomBox.activate()
		draw = "true"
	}
	else
	{
		//log("Deactivate")
		zoomBox.deactivate()
		draw = "false"
	}

}

function init(){
	/************************* INIT ICONS **************************/
	zoomboxIcon = document.getElementById("tbZoomBox").style.backgroundImage
	dragpanIcon = document.getElementById("tbDragPan").style.backgroundImage
	zoomoutIcon = document.getElementById("tbZoomOut").style.backgroundImage
	measureIcon = document.getElementById("tbMeasureLine").style.backgroundImage
	infoIcon = document.getElementById("tbInfo").style.backgroundImage
	//printIcon = document.getElementById("tbPrint").style.backgroundImage
	/********************** INIT ICONS DONE ******************************/
	

	
	initAjax()
	// var options = {theme: null};
	
 var resArray = new Array(781.37037000000001, 350.37037000000001, 100.185185, 50.092592500000002, 
						  25.046296250000001, 12.523148125000001, 6.2615740625000003, 3.1307870312500001, 
						  1.5653935156250001, 0.78269675781250003, 0.39134837890625002, 0.19567418945312501, 0.097837094726562504);
							
  var panBounds = new OpenLayers.Bounds(234248.88,297273.25,759064.98,686298.38);			
  var arr_scales = new Array(1700000.0,1000000.0,500000.0,250000.0,100000.0,50000.0,25000.0,10000.0,5000.0,2000.0,1000.0,500.0,250.0);
	var panBounds =  new OpenLayers.Bounds(234248.88,297273.25,809064.98,686298.38)
	map = new OpenLayers.Map('map', {
					controls: [],
					maxExtent: new OpenLayers.Bounds(143000,255000,866000,735000),
					restrictedExtent: panBounds,
					units:'m',
					maxResolution: '180/256',
					scales:arr_scales,
					projection:"EPSG:3057"
					});	

	//  ***  Hér er kortinu raðað saman *** //
	OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
	OpenLayers.Util.onImageLoadErrorColor = "transparent";

	var wms = new OpenLayers.Layer.WMS("Myndkort",
		   ["http://tc0.loftmyndir.is/tc/tilecache.py",
			"http://tc1.loftmyndir.is/tc/tilecache.py",
			"http://tc2.loftmyndir.is/tc/tilecache.py",
			"http://tc3.loftmyndir.is/tc/tilecache.py"],
			{layers:'myndkort',format:'image/jpeg', kortasja: 'Husafridun'},
			 {
				'isBaseLayer': true,
				attribution: '©Loftmyndir ehf.<small> Allur réttur áskilinn</small>', transitionEffect:'resize'
			 });

	var husafridun_wfs_res = new Array(100.185185, 50.092592500000002, 
						  25.046296250000001, 12.523148125000001, 6.2615740625000003,3.13078703125,6.2615740625000003, 3.1307870312500001, 
						  1.5653935156250001, 0.78269675781250003, 0.39134837890625002, 0.19567418945312501, 0.097837094726562504);

	var husafridun_wms_res = new Array(781.37037000000001, 350.37037000000001, 100.185185, 50.092592500000002, 
						  25.046296250000001, 12.523148125000001, 6.2615740625000003);
		
	var husafridun_wms = new OpenLayers.Layer.WMS.Untiled("Húsafriðun",
				"http://geoserver.loftmyndir.is/geoserver/wms?",
				{layers: 'postgis:husafridun',format:'image/gif', transparent: true},
				{'displayInLayerSwitcher':false,'isBaseLayer': false,  resolutions:husafridun_wms_res}
				);				
           
		   
	
			
			
	
/*****************    S T Y L E S ********************/
	var style_husafridun = new OpenLayers.StyleMap({
		strokeColor: "blue",
		fillColor: "blue",
		pointRadius:4
	});
	

/*****************    END S T Y L E S ********************/
		   husafridun = new OpenLayers.Layer.WFS( "Húsafriðun",
                    "queryWFS.asp", {typename: 'postgis:husafridun'},
               {
                      typename: 'Husafridun',
                      featureNS: 'http://www.openplans.org/LM',
                      extractAttributes: true,
					  resolutions:husafridun_wfs_res,
					  styleMap: style_husafridun
               } );	
	
	
	


	
	markers = new OpenLayers.Layer.Markers("Merki",
		   {'displayInLayerSwitcher':false});
	
	var lineLayer = new OpenLayers.Layer.Vector("Mælingar",{'displayInLayerSwitcher':false});

	map.addLayer(husafridun_wms);
	map.addLayer(husafridun)
	map.addLayer(wms);

	map.addLayer(lineLayer)
	map.addLayer(markers);
	
	
	

	
	
		var options = {
                hover: true,
                onSelect: onSelectCallback,
				onUnselect: onUnselectCallback,
				clickFeature: onClickCallback
            };
    
	var husafridun_select = new OpenLayers.Control.SelectFeature(husafridun, options);
	map.addControl(husafridun_select);
    husafridun_select.activate();

	//map.addControl(new OpenLayers.Control.OverviewMap());
	//map.addControl(new OpenLayers.Control.Scale());
	//map.addControl(new OpenLayers.Control.LayerSwitcher());
	map.addControl(new OpenLayers.Control.PanZoomBar());
	
	//map.addControl(new OpenLayers.Control.NavToolbar({'div':OpenLayers.Util.getElement('paneldiv')}));
	//map.addControl(new OpenLayers.Control.ZoomBox()({'div':OpenLayers.Util.getElement('paneldiv')}));
	
	//map.addControl(new OpenLayers.Control.MousePosition(/*{'div':OpenLayers.Util.getElement('permalink'),'prefix':"E:", 'separator':" N:"}*/));
	//map.addControl(new OpenLayers.Control.KeyboardDefaults());
	map.addControl(new OpenLayers.Control.Attribution());
	map.addControl(new OpenLayers.Control.Permalink('permalink'));
	//map.addControl(new OpenLayers.Control.Scale());

/******************************   Custom controls (eða næstum því)*****************/
  olControl_zoomBox = new OpenLayers.Control.ZoomBox();
  
  olControl_dragPan = new OpenLayers.Control.DragPan()
  olControl_measureLine = new OpenLayers.Control.DrawFeature(lineLayer, OpenLayers.Handler.Path, {handlerOptions: {'freehand': false}, 'displayClass': 'olControlDrawFeaturePath'});
  olControl_measureLine.featureAdded = function(feature) 
  	      {
              feature.state = OpenLayers.State.INSERT;
              //feature.style['strokeColor'] = "#ff0000";
              measureDone(feature)
              feature.layer.drawFeature(feature);
              }

  map.addControl(olControl_zoomBox);
  map.addControl(olControl_dragPan);
  map.addControl(olControl_measureLine);


/******************************** Custom dót endar ****************/

	
	map.setCenter(new OpenLayers.LonLat(start_lon, start_lat), start_zoom, false, false);

	if (!map.getCenter()) 
		map.zoomToMaxExtent();
	// map.zoomToMaxExtent();

	
	//Hér eiga öll script að vera búin að keyra
	switchCommands("ZoomBox")
	
	if(document.getElementById("zoom") != null)
	{
		var zoom = document.getElementById("zoom").innerHTML
		var lon = document.getElementById("lon").innerHTML
		var lat = document.getElementById("lat").innerHTML
		map.setCenter(new OpenLayers.LonLat(lon, lat), zoom, false, false);
	}

	doVegaHeiti = true;
	doWFS = false  //sleppa WFS POI þekju


	
}//end init

var selectedID = 0;
function onClickCallback(feature)
{
	openWindow(feature.attributes.id)
}
function onSelectCallback(feature)
{
		sendAJAXRequest("husafridunQuery.asp?NID="+feature.attributes.id,husafridun_Callback)
}

function husafridun_Callback()
{
	if(xmlHttp.readyState==4)
 	{
		div = document.getElementById("showInfoTab")
		div.innerHTML = (xmlHttp.responseText)
		$j("#example > ul").tabs("select", '#showInfoTab');
		
	}
}
function onUnselectCallback(feature)
{
	tb = document.getElementById("ToolTip")
	tb.style.visibility="hidden"; 
}

function openWindow(txt)
{
	window.open('http://www.hfrn.is/?id='+txt, 'info', 'width=900, height=700, scrollbars=yes')
	
}

function setHTML(response) { 
    document.getElementById('nodelist').innerHTML = response.responseText;
};


var storedFeature
/*************************** OPENLAYER CALLBACK HANDLER *******************************/
function openLayerCallback(response)
{
		log("WMS GetFeatureInfo returns: "+response.responseText);
		strResp = response.responseText
		
		arrResp = strResp.split(",")
		log(strResp.indexOf("nothing"))
		if(strResp.indexOf("nothing") == -1)
		{			
			var strURL = "http://www.skipulag.is/focal/PhotoServer/photosrv.nsf/Main?OpenForm&ss_findimg="+arrResp[0]
			log(strURL)
			
			//window.open(strURL)
		}
		else
		{
			log("GetFeatureInfo Callback reports: No Feature Found")
		}
};

//Todo: Geyma feature á einhvern hátt til að geta hent þeim við tækifæri.
function measureDone(feature)
{
	if(storedFeature != null)
		storedFeature.destroy();
	storedFeature = feature;
	setInfoDivText("Niðurstaða mælingar:<b>"+feature.geometry.getLength().toFixed(1)+" metrar</b>");
	
}


function pan(x,y)
{
   void map.pan(x,y);

}
	  
	  
	  
