        var lon = 616529;//startvalue for map location
        var lat = 6727490;//startvalue for map location
        var zoom = 5;//startvalue for zoom

		
        var map, wmsLayer, vectors;
		var point;
        var line;
        var polygon;
		var RegularPolygon;
		//var markers = new OpenLayers.Layer.Markers("Markers");
		var panel,zb,mc;
		var markerFlag=false;
		var pointList;//to build up Point features
		var pointListLineString = [];//to build up LineString features
		var pointListPolygon = [];//to build up Polygon features
		
		//language vars
		var params= new Array(7);
		var propertyMaxSettlements;
		var propertyAreaTooLarge;
		var propertyAreaTooLargeZoom1;
		var propertyInstructions;
		var propertyChooseCounty;
		var propertyChooseMunicipality;
		var propertyChooseCity;
		var propertyZoomin;
		var propertyZoomout;
		var propertyRightClick;

		var control;
		var county="";
		var bladbeteckning="";
		
		//Test
		//var wmsproxy="http://geoaccess-ver.lmv.lm.se:8080/kartadirekt/wms?";
		//var wmsproxy="http://localhost:8080/rattkartproxy/wmsproxy?";
		//var wmsproxy="/rattkartproxy/wmsproxy?";
		var wmsproxy="/arken/wmsproxy?";
		//var wmsproxy="/wmsproxy/wmsproxy?"
		
		var maptype="kd:topowebbkartan";
		//var maptype="topowebbkartan";
		
		
		//broswer
		var browserName=navigator.appName;

		

        function init(){			
			
			OpenLayers.DOTS_PER_INCH = 95.1207714919;
			map = new OpenLayers.Map('map', { controls: [new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.ScaleLine('km')], 
			maxExtent: new OpenLayers.Bounds(200000, 6100000, 1000000, 7700000),
			projection:"EPSG:3006",
			units: "m",
			buffer: 1,
			numZoomLevels: 5,//6,
			resolutions: [32,16,8,4,2]
			//scales: [11500000,4000000,2000000,1000000,500000,250000,100000,50000,30000,20000,10000,7800]});
			//scales: [131072,65536,32768,16384,8192]
			});

			OpenLayers.Util.onImageLoadErrorColor = "transparent";
			//layer = new OpenLayers.Layer.WMS("Kartcache", "http://geoaccess-ver.lmv.lm.se:8080/kartadirekt/wms?",{layers: 'multimap_total'});
			wmsLayer = new OpenLayers.Layer.WMS("Kartcache", wmsproxy,{layers: maptype}, {'buffer':0});

			// Construct overview map with non-default projection, units, and extent
			var options = {projection: "EPSG:3006", 
							units: 'm', 
							maxExtent: new OpenLayers.Bounds(20000, 6100000, 1000000, 7700000),
							exceptions:'application/vnd.ogc.se_xml'};
			map.addControl(new OpenLayers.Control.OverviewMap({minRatio: 32, mapOptions: options}));

			vectors = new OpenLayers.Layer.Vector("Vector wmsLayer");
			
			map.addLayers([wmsLayer, vectors]);
			
			circleOptions = {sides: 40};
			squareOptions = {irregular:true};
			
            controls = {
                point: new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.Point, {'featureAdded': getCoords}),	
                line: new OpenLayers.Control.DrawFeature(vectors, OpenLayers.Handler.Path, {'featureAdded': getCoords}),
				polygon: new OpenLayers.Control.DrawFeature(vectors,OpenLayers.Handler.Polygon, {'featureAdded': getCoords}),	
				circle: new OpenLayers.Control.DrawFeature(vectors,OpenLayers.Handler.RegularPolygon, {handlerOptions: circleOptions,'featureAdded': getCoords}),	
				square: new OpenLayers.Control.DrawFeature(vectors,OpenLayers.Handler.RegularPolygon, {handlerOptions: squareOptions,'featureAdded': getCoords}),
			
                drag: new OpenLayers.Control.DragFeature(vectors, {'onComplete': getCoords})
            };

            for(var key in controls) {
                 map.addControl(controls[key]);
            }
			
			//map.addLayer(markers);//add marker to map
			
			
			/*map.events.register("mousemove", map, function(e) { 

			});*/


			
			map.events.register("click", map, function(e) {

			});
			
			map.events.register("mouseup", map, function(e) {
				if(document.getElementById("infoContainer2") && document.getElementById("infoContainer2").style.display=="block"){
					document.getElementById("infoContainer2").style.display="none";
				}
				if(document.getElementById("infoContainer") && document.getElementById("infoContainer").style.display=="block"){
					document.getElementById("infoContainer").style.display="none";
				}
				setMapCoordsCookies();
			});
			

			map.addControl(new OpenLayers.Control.MousePosition());//Show coords in map
			
			//search by coords from map
			if(document.getElementById("searchBtn")){
				document.getElementById("searchBtn").onclick=validateGeoArea;
			}
			 //search by coords from map
			if(document.getElementById("searchBtn2")){
				document.getElementById("searchBtn2").onclick=validateGeoArea;
			}
			
			
			//set dropdownlists
			if(document.getElementById("countyList")){
				document.getElementById("countyList").onchange=countyListFunc;
			}
			if(document.getElementById("municipalityList")){
				document.getElementById("municipalityList").onchange=municipalityListFunc;
			}
			if(document.getElementById("settlementList")){
				document.getElementById("settlementList").onchange=settlementListFunc;
			}
			
			//set lang properties
			params[0]="searchForm.validation.toolarge";
			params[1]="common.search.advanced";
			params[2]="menu_url.search.advanced";
			params[3]="simple.zoom.in";
			params[4]="simple.zoom.out";
			params[5]="searchForm.validation.toolarge.zoom1";
			params[6]="searchForm.rightclick";

			PropertyClass.getPropertyValues(params,{callback:setGlobalsReceiverFuncMap, errorHandler:mapErrorHandler});
  
			 setLang();
			 fillCountys();//Load dropdownlists with values
			 setActiveToolClass("none");//set active tool default
			 
			//load map
			if(getCookieWrapper("ms", "centerLon")==null || getCookieWrapper("ms", "centerLat")==null && getCookieWrapper("ms", "zoom")==null){
				map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
			}
			else{
				//set map by cookies
				setMapByCookies();
			}
			

}

  //set language
function setGlobalsReceiverFuncMap(data){
   propertyAreaTooLarge=data[0];
   propertyAdvancedSearch=data[1];
   propertyAdvancedSearchUrl=data[2];
   propertyZoomin=data[3];
   propertyZoomout=data[4];
   propertyAreaTooLargeZoom1=data[5];
   propertyRightClick=data[6];
}
  
  
function setLang(){
  propertyChooseCounty = document.getElementById("countyList").options[0].text;
  propertyChooseMunicipality =document.getElementById("municipalityList").options[0].text;
  propertyChooseCity=document.getElementById("settlementList").options[0].text;
  PropertyClass.getPropertyValues(params,{callback:setGlobalsReceiverFuncMap, errorHandler:mapErrorHandler});
}

//############################################################################################
//Get corner coords
function getXmin(){
	var leftbottom=map.calculateBounds().toArray();
	return leftbottom[0];
}

function getXmax(){
	var righttop=map.calculateBounds().toArray();
	return righttop[2];
}

function getYmin(){
	var leftbottom=map.calculateBounds().toArray();
	return leftbottom[1];
}

function getYmax(){
	var righttop=map.calculateBounds().toArray();
	return righttop[3];
}
//############################################################################################


function getCoords(obj){
    var points = obj.geometry.toString();
    //alert(points);   // Save this point
}
			
function toggleControl(element) {
	stopDragToZoom();
	setActiveToolClass(element);
		
	if(element=="zoomOut"){

		for(key in controls) {
            var control = controls[key];
			control.deactivate();
        }
		dragToZoom(true);
	}
	else if(element=="zoomIn"){
		for(key in controls) {
	        var control = controls[key];
			control.deactivate();
	    }
	dragToZoom(false);
	}

}

function setActiveToolClass(element){

	if(browserName.toLowerCase() != "microsoft internet explorer"){
		document.getElementById("tool-zoomout").setAttribute("class","");
		document.getElementById("tool-zoomin").setAttribute("class","");
		document.getElementById("tool-pan").setAttribute("class","");
	}
	else{
		document.getElementById("tool-zoomout").className="";
		document.getElementById("tool-zoomin").className="";
		document.getElementById("tool-pan").className="";
	}

	if(element=="zoomOut"){
		if(browserName.toLowerCase() != "microsoft internet explorer"){
				document.getElementById("tool-zoomout").setAttribute("class","selectedTool");
			}
		else{
			document.getElementById("tool-zoomout").className="selectedTool";
		}
	}
	
	if(element=="zoomIn"){
		if(browserName.toLowerCase() != "microsoft internet explorer"){
				document.getElementById("tool-zoomin").setAttribute("class","selectedTool");
			}
		else{
			document.getElementById("tool-zoomin").className="selectedTool";
		}
	}
	
	if(element=="none"){
		if(browserName.toLowerCase() != "microsoft internet explorer"){
				document.getElementById("tool-pan").setAttribute("class","selectedTool");
			}
		else{
			document.getElementById("tool-pan").className="selectedTool";
		}
	}

	return true;
}

function dragToZoom(outORin){
        zb = new OpenLayers.Control.ZoomBox({title:"Zoom box: Selecting it you can zoom on an area by clicking and dragging.", out: outORin});
		mc = new OpenLayers.Control.MouseDefaults({title:'You can use the default mouse configuration'});
        panel = new OpenLayers.Control.Panel({defaultControl: zb});
        panel.addControls([zb,mc]);
        map.addControl(panel);	
}

function stopDragToZoom(){//stop the drag to zoom
		if(panel){
			panel.activateControl(mc);
		}
}

// -------------  Error-handlers ------------ //

function mapErrorHandler(errorString, exception) {
  var ele=document.getElementById('infoContainer');
  while (ele.childNodes.length > 0){
  ele.removeChild(ele.firstChild); //remove original text
  }
  var img = document.createElement("img");
  img.src="../images/error.gif";
  img.alt="";
  ele.appendChild(img); //add warning image
  ele.appendChild(document.createTextNode(exception.msg)); //sets error-message text

  //ads link to advanced search
  var link = document.createElement("a");
  link.setAttribute("href", propertyAdvancedSearchUrl);
  link.appendChild(document.createTextNode(propertyAdvancedSearch));
  ele.appendChild(link);

  //animera meddelandet
  setColor(0);
  ele.style.border="1px solid #f00";
  ele.style.padding="10px";

   if (!document.getElementsByTagName) return;
      var anchor=document.getElementById('result');
   while (anchor.childNodes.length > 0){
      anchor.removeChild(anchor.firstChild); //remove result-table
  }
}


function clearSettlementMessage(){
  var ele=document.getElementById('infoContainer');
  while (ele.childNodes.length > 0){
    ele.removeChild(ele.firstChild); //remove original text
  }
  ele.appendChild(document.createTextNode(propertyInstructions)); //sets default-message text
  //animera meddelandet
      ele.style.border="none";
      ele.style.padding="0px";
      ele.style.backgroundColor="#fff";

    document.getElementById('infoContainer').style.display="none";
    document.getElementById('infoContainer2').style.display="none";
}
// ------------- // Error-handlers ------------ //



// -------------- Search with coords from map--------------- //
function validateGeoArea(){
  	SearchClass.geoSearch(Math.round(getXmin()), Math.round(getYmin()), Math.round(getXmax()), Math.round(getYmax()), {callback:geoReceiverFunc, errorHandler:mapErrorHandler});
}

function geoReceiverFunc(searchresult)
{

    //if(searchresult.countys.length>0){/** @todo delete after density test*/

     /* var snlist = document.getElementById("settlementName");
      var snul = document.createElement("ul");
      var snli = document.createElement("li");

      var denlist = document.getElementById("densitet");
      var denul = document.createElement("ul");
      var denli = document.createElement("li");

      while (snlist.childNodes.length > 0){
          snlist.removeChild(snlist.firstChild); //remove original text
      }
      while (denlist.childNodes.length > 0){
          denlist.removeChild(denlist.firstChild); //remove original text
      }

      for(var i=0; i<searchresult.countys.length; i++){
        for(var j=0; j<searchresult.countys[i].parishs.length; j++){
          for(var k=0; k<searchresult.countys[i].parishs[j].settlements.length; k++){

              denli.appendChild(document.createTextNode(searchresult.countys[i].parishs[j].settlements[k].density+", "));
              denul.appendChild(denli);

              snli.appendChild(document.createTextNode(searchresult.countys[i].parishs[j].settlements[k].name+", "));
              snul.appendChild(snli);

          }
        }
      }
      snlist.appendChild(snul);
      denlist.appendChild(denul);
    }*/

  if(searchresult.tooManySettlements)
  {
    //Disable geoin search
    var ele=document.getElementById('infoContainer2');
    ele.style.display="block";
	
    while (ele.childNodes.length > 0)
      ele.removeChild(ele.firstChild); //remove original text
	  
    var img = document.createElement("img");
    img.src="../images/info.gif";
    img.alt="";
    ele.appendChild(img); //add info image

    var message = "";
    if(map.getZoom() > 11){
      message = propertyAreaTooLargeZoom1;
    }else{
      message = propertyAreaTooLarge;
    }

    ele.appendChild(document.createTextNode(message)); //sets info-message text
    //animera meddelandet
    alternateSetColor2(0);
  }
  else{
	document.location.href="searchresult.html?archive=GEOIN&firstMatchToReturnLMS=1&firstMatchToReturnREG=1&firstMatchToReturnRAK=1&yMin="+Math.round(getYmin())+"&xMin="+Math.round(getXmin())+"&yMax="+Math.round(getYmax())+"&xMax="+Math.round(getXmax());
    //document.getElementById("searchForm").submit();
  }
}
// -------------- //Ajax methods --------------- //



//load dropdownlists
function countyListFunc(){
	fillMunicipality(document.getElementById('countyList').options[document.getElementById('countyList').selectedIndex].value, 
						document.getElementById('countyList').options[document.getElementById('countyList').selectedIndex].text);
	setMapCoordsCookies();
}
function municipalityListFunc(){
	fillSettlement();
	setMapCoordsCookies();
}
function settlementListFunc(){
	showSettlement();
	setMapCoordsCookies();
}



//set map on load 
function setMapByCookies(){
	if(getCookieWrapper("ms", "centerLon")!=null && getCookieWrapper("ms", "centerLat")!=null && getCookieWrapper("ms", "zoom")!=null){
		map.setCenter(new OpenLayers.LonLat(getCookieWrapper("ms", "centerLon"), getCookieWrapper("ms", "centerLat")), getCookieWrapper("ms", "zoom"));
	}
	else{
		setMapCoordsCookies();
	}
	return true;
}



// -------------- Set map coord cookies --------------- //
function setMapCoordsCookies(){
	//setCookieWrapper("ms", "xMax", Math.round(getXmax()));
	//setCookieWrapper("ms", "yMax", Math.round(getYmax()));
	//setCookieWrapper("ms", "yMin", Math.round(getYmin()));
	//setCookieWrapper("ms", "xMin", Math.round(getXmin()));
	
	var maplonlat = map.getCenter();
	setCookieWrapper("ms", "centerLon", maplonlat.lon);
	setCookieWrapper("ms", "centerLat", maplonlat.lat);
	setCookieWrapper("ms", "zoom", map.getZoom());
	
	return true;
	}
// -------------- //Set cookies --------------- //

