//reload window to make sure mapimages doesnt load from cache

//if(getCookieWrapper("ms", "load")!=null){
//  if(getCookieWrapper("ms", "load")=="true"){
//    setCookieWrapper("ms", "load", "false");
//    window.location.reload();
//  }
//}

if(getCookieWrapper("ms", "load")==null){
    setCookieWrapper("ms", "load", "true");
    window.location.reload();
}


// ---- constants & globals --------
var yVal;
var xVal;
var tk5;
var level;
var target;
var offset;
var top;
var left;
var zoomButtons;

//for map calculations
var mapwidth;
var mapheight;
var mapview;
var startMouseY;
var startMouseX;
var endMouseY;
var endMouseX;
var startup;
var xMin,xMax,yMin,yMax;
var dropDownListCoords;

var browserName=navigator.appName;

//language vars
var params= new Array(3);
var propertyMaxSettlements;
var propertyAreaTooLarge;
var propertyAreaTooLargeZoom1;
var propertyInstructions;
var propertyChooseCounty;
var propertyChooseMunicipality;
var propertyChooseCity;
var propertyZoomin;
var propertyZoomout;
var propertyRightClick;

//drag to zoom vars
var dragToZoomX=0;
var
Y=0;
var objDragToZoom;


//cross overwiev vars
var crossTop, crossLeft;

var mm;//too se if mouse has been moved in map

//for the map glide
var glide, glideInterval, glideDistance, glidePixels, interValId, glideTime, oldGlideLeft, glideLeft, glideTop;

//to check if user has doubleclicked
var doubleClickPan=false;
var dblclickedMap=false;
var dblclickedMoveY;
var dblclickedMoveX;



//register event for map functions
document.ondblclick = doubleClickInMap;//For doubleclick in map
document.onmousedown = mouseDown;//Event for mousedown in map
document.onmousemove = mouseMove;//Event for mousmove in map
document.onmouseup = mouseUp;//Event for mouseup in map


// ---- //constants & globals --------
// ---- init-methods --------

function addLoadEvent(funcCall){//Eventhandlers for onload in bodytag
    var oldload = window.onload;
    if (typeof window.onload != 'function'){
        window.onload = funcCall;
    }
    else{
        window.onload = function(){
            if (oldload){
              oldload();
            }
            funcCall();
        }
    }
}

addLoadEvent(function(){
    init();//Init page using eventlistner

})

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 detectWindowWidth()
{
var browserName=navigator.appName;
  if (browserName=="Microsoft Internet Explorer"){
  var width = document.documentElement.clientWidth-11;
  if(width>950)
    document.getElementById('pageWrapper').style.width=width;
  else
    document.getElementById('pageWrapper').style.width=950;
  }
}

function init(){

  objDragToZoom=document.getElementById("dragToZoomDiv");

  externalLinks();
  //zoom functions
  document.getElementById("zoomstepin").onclick=zoomstepin;
  document.getElementById("zoomlink5").onclick=zoomlink5;
  document.getElementById("zoomlink4").onclick=zoomlink4;
  document.getElementById("zoomlink3").onclick=zoomlink3;
  document.getElementById("zoomlink2").onclick=zoomlink2;
  document.getElementById("zoomlink1").onclick=zoomlink1;
  document.getElementById("zoomstepout").onclick=zoomstepout;
  document.getElementById("dragtozoom").onclick=swapImageFunc;


  //pan functions
  document.getElementById("searchBtn").onclick=searchBtn;
  document.getElementById("searchBtn2").onclick=searchBtn;
  document.getElementById("northWest").onclick=northWest;
  document.getElementById("north").onclick=north;
  document.getElementById("northEast").onclick=northEast;
  document.getElementById("west").onclick=west;
  document.getElementById("east").onclick=east;
  document.getElementById("southWest").onclick=southWest;
  document.getElementById("south").onclick=south;
  document.getElementById("southEast").onclick=southEast;

  //pan functions onMouseOver
  document.getElementById("northWest").onmouseover=northWestMouseOver;
  document.getElementById("north").onmouseover=northMouseOver;
  document.getElementById("northEast").onmouseover=northEastMouseOver;
  document.getElementById("west").onmouseover=westMouseOver;
  document.getElementById("east").onmouseover=eastMouseOver;
  document.getElementById("southWest").onmouseover=southWestMouseOver;
  document.getElementById("south").onmouseover=southMouseOver;
  document.getElementById("southEast").onmouseover=southEastMouseOver;

  //pan functions onMouseOut
  document.getElementById("northWest").onmouseout=northWestMouseOut;
  document.getElementById("north").onmouseout=northMouseOut;
  document.getElementById("northEast").onmouseout=northEastMouseOut;
  document.getElementById("west").onmouseout=westMouseOut;
  document.getElementById("east").onmouseout=eastMouseOut;
  document.getElementById("southWest").onmouseout=southWestMouseOut;
  document.getElementById("south").onmouseout=southMouseOut;
  document.getElementById("southEast").onmouseout=southEastMouseOut;

  //geografisk sökning
  if(document.getElementById("geoin")){
    document.getElementById("geoin").onclick=geoin;
  }

  document.getElementById("bgImg").onload=bgImg;
  document.getElementById("countyList").onchange=countyListFunc;
  document.getElementById("municipalityList").onchange=municipalityListFunc;
  document.getElementById("settlementList").onchange=settlementListFunc;


  //set language
  //fetch rest of globalpropertys from ajaxfacade
  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:majorErrorHandler});
  propertyInstructions=document.getElementById("infoContainer").innerHTML;

  dblclickedMoveY=0;
  dblclickedMoveX=0;

  //init simpleSearchVars
  if(getCookieWrapper("ms", "yVal")!=null){
    yVal = parseInt(getCookieWrapper("ms", "yVal"));
  }
  else{
    //yVal = 1465408;//start values RT90
    //sweref original 511314.463;
    yVal = 511314; //start values SWEREF99
  }

  if(getCookieWrapper("ms", "xVal")!=null){
    xVal = parseInt(getCookieWrapper("ms", "xVal"));
  }
  else{
    //xVal = 6572500;//start values RT90
    //sweref original 6570360.486
    xVal = 6570360; //start values SWEREF99
  }
  if(getCookieWrapper("ms", "xMax")!=null){
    xMax = parseInt(getCookieWrapper("ms", "xMax"));
  }
  else{
     //xMax=1456408;//RT90
     //sweref original 502427.71
     xMax=502428; //SWEREF99
  }
  if(getCookieWrapper("ms", "yMax")!=null){
    yMax = parseInt(getCookieWrapper("ms", "yMax"));
  }
  else{
    //yMax=6563500;//RT90
    //sweref original 6561256.182
    yMax=6561256;//SWEREF99
  }
  if(getCookieWrapper("ms", "xMin")!=null){
    xMin = parseInt(getCookieWrapper("ms", "xMin"));
  }
  else{
     //xMin=1474408;//RT90
     //sweref original 520201.212
     xMin=520201; //SWEREF99
  }
  if(getCookieWrapper("ms", "yMin")!=null){
    yMin = parseInt(getCookieWrapper("ms", "yMin"));
  }
  else{
     //yMin=6581500;//RT90
     //sweref original 6579464.972
     yMin=6579465;//SWEREF99
  }


        // -------------- Set zoomlevel when startup using cookies ---------------
          if(getCookieWrapper("ms", "level")!=null){
            level = parseInt(getCookieWrapper("ms", "level"));

             for(var i=1;i<6;i++){
                var elementName="zoomlink"+i;
                document.getElementById(elementName).className  ="zoomlink";
             }
             if (level==1){
                document.getElementById("zoomlink1").className  ="zoomlink current";
                document.getElementById("scale").src="../images/2-5-10-20-40/level_1.gif";
             }
             if (level==2){
                document.getElementById("zoomlink2").className  ="zoomlink current";
                document.getElementById("scale").src="../images/2-5-10-20-40/level_2.gif";
             }
             if (level==3){
                document.getElementById("zoomlink3").className  ="zoomlink current";
                document.getElementById("scale").src="../images/2-5-10-20-40/level_3.gif";
             }
             if (level==4){
                document.getElementById("zoomlink4").className  ="zoomlink current";
                document.getElementById("scale").src="../images/2-5-10-20-40/level_4.gif";
             }
             if (level==5){
                document.getElementById("zoomlink5").className  ="zoomlink current";
                document.getElementById("scale").src="../images/2-5-10-20-40/level_5.gif";
             }
          }
          else{
             level = 5;//Startvalue for the map Örebro
          }
          // -------------- //Set zoomlevel when startup using cookies ---------------


         // -------------- Set cross in overwiev when startup ---------------

        if(getCookieWrapper("ms", "crossLeft")!=null){
            crossLeft = getCookieWrapper("ms", "crossLeft");
        }
        else{
         if (browserName=="Microsoft Internet Explorer"){//If explorer
            crossLeft = 37;//Startvalue for the map Örebro
          }
          else{
            crossLeft = 37;//Startvalue for the map Örebro
          }

        }
        if(getCookieWrapper("ms", "crossTop")!=null){
            crossTop = getCookieWrapper("ms", "crossTop");
        }
        else{
          if (browserName=="Microsoft Internet Explorer"){//If explorer
            crossTop = 206;//Startvalue for the map Örebro
          }
          else{
            crossTop = 199;//Startvalue for the map Örebro
          }
       }
  //Set cross in overwiev image
  document.getElementById("crossContainer").style.top = parseInt(crossTop)+"px";
  document.getElementById("crossContainer").style.left = parseInt(crossLeft)+"px";

  startup=false;
  fillCountys();//Load srollist with values
  startMouseY=0;
  startMouseX=0;
  endMouseY=0;
  endMouseX=0;
  mapwidth=700;//set map width
  mapheight=700;//set map height
  zoomButtons=false;
  mm=false;

  mapview=475//set the size of the view
  tk5="true";//tk5 is default in level 2

  zoomValue=40;//zoomvalue
  top = -138;//map reset values
  left = -138;//map reset values
  dropDownListCoords=false;
  glide=false;

  //Set glidevars to default
  if (navigator.appName.indexOf("Microsoft")>=0) {
    glideInterval=10;//Set how much the map will glide each interval
    glideDistance=300;//Set the number of pixels the map will move when pan by buttons
  }
  else{
    glideInterval=40;
    glideDistance=320;//Set the number of pixels the map will move when pan by buttons
  }


  glidePixels=0;
  interValId=null
  glideTime=1;
  oldGlideLeft=0;
  glideLeft=0;
  glideTop=0;

  setInitDropdown();

  resetMapPosition();

  orderMapFromKartaDirekt();//order a map from karta direkt
}


function setInitDropdown(){
  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:majorErrorHandler});
}


function resetMapPosition(){

  if(!top){
    top = -138;//map reset values
    left = -138;//map reset values
  }

  document.getElementById("mapcontainer").style.top = top + "px";
  document.getElementById("mapcontainer").style.left = left + "px";
}


function getZoomValue(){//returns a zoom value

  if(level == 5){
    zoomValue=40;
  }
  if(level == 4){
    zoomValue=20;
  }
  if(level == 3){
     zoomValue=10;
  }
  if(level == 2){
     zoomValue=5;
  }
  if(level == 1){
     zoomValue=2;
  }

  return zoomValue;
}


function getZoomValueDbl(){//returns a zoom value when user has double-clicked in the map
  if(level == 4){
    zoomValue=40;
  }
  if(level == 3){
     zoomValue=20;
  }
  if(level == 2){
     zoomValue=10;
  }
  if(level == 1){
     zoomValue=5;
  }
  return zoomValue;
}



function orderMapFromKartaDirekt(){

clearSettlementMessage();//rensa ev meddelande

  if(dropDownListCoords==false){
    if(startup==false){//init the system

      xVal=xVal+((endMouseY-startMouseY));
      yVal=yVal-((endMouseX-startMouseX));

      //document.getElementById("mapDrag").style.backgroundImage = 'url(\'../s/karta.png?x='+xVal+'&y='+yVal+'&width=750&height=750&tk5='+tk5+'&type='+level+ '\')'; RT90
      document.getElementById("mapDrag").style.backgroundImage = 'url(\'../s/karta.png?x='+xVal+'&y='+yVal+'&width=750&height=750&tk5='+tk5+'&type='+level+'&srs=sweref99'+ '\')';
    }
  }
  if(startup==true){
    if(dropDownListCoords==false){
      if(zoomButtons==false && glide==false && dragToZoomMap==false){
        xVal=xVal+((endMouseY-startMouseY)*getZoomValue());
        yVal=yVal-((endMouseX-startMouseX)*getZoomValue());
      }
      else if(glide==true && dragToZoomMap==false){
        xVal=xVal+((endMouseY-startMouseY)*getZoomValue());
        yVal=yVal-((endMouseX-startMouseX)*getZoomValue());
      }
      else if(dragToZoomMap==true){
        xVal=xVal+Math.round(((235-(endMouseY+startMouseX)/2))*getZoomValue());
        yVal=yVal-Math.round(((235-(endMouseX+startMouseY)/2))*getZoomValue());
        dragToZoomLevelCalc();//Calculate the new drag zoom level
        swap_zoomImage(level);
      }
    }

    if(dblclickedMap==true){//If user has double clicked in map
        xVal=xVal+(dblclickedMoveY*getZoomValueDbl());
        yVal=yVal-(dblclickedMoveX*getZoomValueDbl());
    }

    //document.getElementById("bgImg").src = "../s/karta.png?x="+xVal+"&y="+yVal+"&width=750&height=750&tk5="+tk5+"&type="+level; //RT90
    document.getElementById("bgImg").src = "../s/karta.png?x="+xVal+"&y="+yVal+"&width=750&height=750&tk5="+tk5+"&type="+level+"&srs=sweref99"; //SWEREF99
    //document.getElementById("xcoord").value=xVal;/** @todo only for test, remove after test */
    //document.getElementById("ycoord").value=yVal;/** @todo only for test, remove after test */

  }

  if(zoomButtons==false){//dont change cross position in overwiev image if user has clicked on zoom-buttons
    moveCross();
  }

  startup=true;
  zoomButtons=false;
  dropDownListCoords=false;
  dblclickedMap=false;
  dragToZoomMap=false;
  setSimpleSearchCookies();
}

function loadImg(){
  if(document.getElementById("bgImg").src.indexOf("loadTransparent.gif")== -1){
    document.getElementById("mapDrag").style.display="none";
    resetMapPosition();//reset the map to its default position
    document.getElementById("mapDrag").style.backgroundImage = 'url('+document.getElementById("bgImg").src+')';
    document.getElementById("mapDrag").style.display="block";
    document.getElementById("bgImg").src = "../images/loadTransparent.gif";
  }
}

// -------------- Ajax methods --------------- //
function validateGeoArea(){
  	SearchClass.geoSearch(Math.round(xMin), Math.round(yMin), Math.round(xMax), Math.round(yMax), {callback:geoReceiverFunc, errorHandler:majorErrorHandler});
}

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(level == 1){
      message = propertyAreaTooLargeZoom1;
    }else{
      message = propertyAreaTooLarge;
    }
    ele.appendChild(document.createTextNode(message)); //sets info-message text
    //animera meddelandet
    alternateSetColor2(0);
  }
  else{
    document.getElementById("searchForm").submit();
  }
}
// -------------- //Ajax methods --------------- //



// -------------- Map calculation--------------- //


function showResult(){
  calcSquareMapCoords(xVal,yVal);//Calculate MinYminSquare and xMaxYmaxSquare
  setSquare();//sets the min and max values in input fields in jsp
  validateGeoArea();
}

function setSquare(){
  document.getElementById("xMin").value = xMin;
  document.getElementById("yMin").value = yMin;
  document.getElementById("xMax").value = xMax;
  document.getElementById("yMax").value = yMax;
}



function calcSquareMapCoords(x,y){//Calculate MinYminSquare and xMaxYmaxSquare
  xMin = y - getLevelPixelSize();
  xMax = y + getLevelPixelSize();
  yMin = x - getLevelPixelSize();
  yMax = x + getLevelPixelSize();
}


function getLevelPixelSize(){//Returns a value to be used for calc the correct image to be ordered from karta direkt
  if(level==1)
    return 225*2;
  if(level==2)
    return 225*5;
  if(level==3)
    return 225*10;
  if(level==4)
    return 225*20;
  if(level==5)
    return 225*40;
}


// -------------- //Mouse events--------------- //
  function northWest(){
    pan('nw');
  }
  function north(){
    pan('n');
  }
  function northEast(){
    pan('ne');
  }
  function west(){
    pan('w');
  }
  function east(){
    pan('e');
  }
  function southWest(){
    pan('sw');
  }
  function south(){
    pan('s');
  }
  function southEast(){
    pan('se');
  }
  function northWestMouseOver(){
    switchImageOver('northwest');
  }
  function northMouseOver(){
    switchImageOver('north');
  }
  function northEastMouseOver(){
    switchImageOver('northeast');
  }
  function westMouseOver(){
    switchImageOver('west');
  }
  function eastMouseOver(){
    switchImageOver('east');
  }
  function southWestMouseOver(){
    switchImageOver('southwest');
  }
  function southMouseOver(){
    switchImageOver('south');
  }
  function southEastMouseOver(){
    switchImageOver('southeast');
  }


  function northWestMouseOut(){
    switchImageOut('northwest');
  }
  function northMouseOut(){
    switchImageOut('north');
  }
  function northEastMouseOut(){
    switchImageOut('northeast');
  }
  function westMouseOut(){
    switchImageOut('west');
  }
  function eastMouseOut(){
    switchImageOut('east');
  }
  function southWestMouseOut(){
    switchImageOut('southwest');
  }
  function southMouseOut(){
    switchImageOut('south');
  }
  function southEastMouseOut(){
    switchImageOut('southeast');
  }




  function searchBtn(){
    showResult();
  }
  function zoomstepin(){
    zoomstep('1')
  }
  function zoomlink5(){
    zoom('5');
  }
  function zoomlink4(){
    zoom('4');
  }
  function zoomlink3(){
    zoom('3');
  }
  function zoomlink2(){
    zoom('2');
  }
  function zoomlink1(){
    zoom('1');
  }
  function zoomstepout(){
    zoomstep('-1');
  }
  function swapImageFunc(){
    swapImage();
  }
  function geoin(){
    externalGISearch();
  }




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

function dragToZoomStart(x,y){
  resetDragToZoomDiv();


  var addScroll=0;
  if(navigator.appVersion.indexOf("MSIE")!="-1"){//If browser is MIE add scrolltop
    addScroll = document.documentElement.scrollTop;
  }
  else{
    addScroll = document.body.scrollTop;
  }

  startMouseX=x+addScroll;
  startMouseY=y;

  document.getElementById("dragToZoomDiv").style.left = y+"px";
  document.getElementById("dragToZoomDiv").style.top = (x+addScroll)+"px";
  document.getElementById("dragToZoomDiv").style.display="block";

}

function dragToZoom(x,y){

  x=Math.abs(x);
  y=Math.abs(y);

  dragToZoomX=x;
  dragToZoomY=y;

  objDragToZoom.style.width=dragToZoomX+"px";
  objDragToZoom.style.height=dragToZoomY+"px";

}

function resetDragToZoomDiv(){
  dragToZoomX=0;
  dragToZoomY=0;
  document.getElementById("dragToZoomDiv").style.width=0+"px";
  document.getElementById("dragToZoomDiv").style.height=0+"px";
  document.getElementById("dragToZoomDiv").style.display="none";
}

function mouseDown(e) {

document.oncontextmenu=new Function("return true");//enable rightclick in image
if((document.getElementById('infoContainer2').style.display)=="block"){
  clearSettlementMessage();//clear message in map
}
mm=false;
if (!e) var e = window.event;
target = getTarget(e);

var mouse = getMouse(e, document.getElementById("mapwindow"));
var flagga=true;



  if(target.getAttribute("id")){
    switch (target.getAttribute("id").substring(0,3)) {
        case "map":{
            document.oncontextmenu=new Function("return false");//disable rightclick in image
            target=document.getElementById("mapcontainer");

            if(document.getElementById("dragtozoom").src.indexOf("dragzoom_off.gif") > -1){
              offset = getMouse(e, document.getElementById("mapcontainer"));
            }
            if(document.getElementById("dragtozoom").src.indexOf("dragzoom_off.gif") == -1){
              offset = getMouse(e, document.getElementById("mapwindow"));
            }

            startMouseY = mouse.y;
            startMouseX = mouse.x;

            if(document.getElementById("dragtozoom").src.indexOf("dragzoom_off.gif") == -1){
              dragToZoomStart(startMouseY,startMouseX);//drag to zoom in the map
              return false;
            }

            return false;
        }
        case "swe":{
        flagga=false;
        resetAllLists();//Reset all list
        offset = getMouse(e, document.getElementById("swedenMap"));
        var x=0,y=0;
        x = offset.x;
        if(navigator.appVersion.indexOf("MSIE")!="-1"){//If browser is MIE add scrolltop
        y = offset.y + document.documentElement.scrollTop;
        }
        else{
        y = offset.y + document.body.scrollTop;
        }
        setMapPosAfterClick(x,y);//Set the new map position after click
        orderMapFromKartaDirekt();//Order a map from karta direkt
        }
        case "cro":{//If user click on the cross in overwiev image
        if(flagga==true){
          resetAllLists();//Reset all list
          offset = getMouse(e, document.getElementById("swedenMap"));
          var x=0,y=0;
          x = offset.x;
          if(navigator.appVersion.indexOf("MSIE")!="-1"){//If browser is MIE add scrolltop
          y = offset.y + document.documentElement.scrollTop;
          }
          else{
          y = offset.y + document.body.scrollTop;
          }
          setMapPosAfterClick(x,y);//Set the new map position after click
          orderMapFromKartaDirekt();//Order a map from karta direkt
          }
        }
    }
  }
  flagga=true;
}


function mouseMove(e) {

mm=true;
  if (!e) var e = window.event;
      if(target){
        if(target.getAttribute("id")){
         if (target.getAttribute("id").substring(0,3) == "map") {
            mm=true;
            var mouse = getMouse(e, document.getElementById("mapwindow"));
            var x = mouse.x - offset.x;
            var y = mouse.y - offset.y;

            if(document.getElementById("dragtozoom").src.indexOf("dragzoom_off.gif") == -1){
              dragToZoom(x,y);//drag to zoom in the map
            }
            else{
              setPos(document.getElementById("mapcontainer"),x,y);
            }
            //setPos(document.getElementById("mapcontainer"),x,y);
            endMouseY = mouse.y;
            endMouseX = mouse.x;
            return false;
       }
     }
   }
}


function mouseUp(e) {
 if(document.getElementById("dragtozoom").src.indexOf("dragzoom_off.gif") == -1){
    document.getElementById("dragToZoomDiv").style.display="none";
  }
    if(mm==true){
      if (!e) var e = window.event;
        if (target) {
          switch (target.getAttribute("id")) {
          case "mapcontainer":{
         if(document.getElementById("dragtozoom").src.indexOf("dragzoom_off.gif") == -1){
            dragToZoomMapOrder();//Calculate the new coord for map to order after drag to zoom
            resetDragToZoomDiv();
          }
          else{
            resetAllLists();//Reset all list
            orderMapFromKartaDirekt();
          }
        }
      }
    }
 }
 target = null;//ends the mapdrag
}

function dragToZoomMapOrder(){//Order map - drag to zoom
  dragToZoomMap=true;
  orderMapFromKartaDirekt();
}

function dragToZoomLevelCalc(){//Calculate the new drag zoom

  if (level==5){//if xoomlevel 5
    if((getDragArea()/getWholeArea())*100>50){//set zoomlevel 5
      level=5;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<=50 && (getDragArea()/getWholeArea())*100>=18.75){//set zoomlevel 4
      level=4;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<18.75 && (getDragArea()/getWholeArea())*100>=9.375){//set zoomlevel 3
      level=3;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<9.375 && (getDragArea()/getWholeArea())*100>=4.6875){//set zoomlevel 2
      level=2;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<4.6875){//set zoomlevel 1
      level=1;
      return true;
    }

  }


  if (level==4){//if xoomlevel 4
    if((getDragArea()/getWholeArea())*100>50){//set zoomlevel 4
      level=4;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<=50 && (getDragArea()/getWholeArea())*100>=18.75){//set zoomlevel 3
      level=3;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<18.75 && (getDragArea()/getWholeArea())*100>=9.375){//set zoomlevel 2
      level=2;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<9.375){//set zoomlevel 1
      level=1;
      return true;
    }
  }


  if (level==3){//if xoomlevel 3
    if((getDragArea()/getWholeArea())*100>50){//set zoomlevel 3
      level=3;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<=50 && (getDragArea()/getWholeArea())*100>=18.75){//set zoomlevel 2
      level=2;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<18.75){//set zoomlevel 1
      level=1;
      return true;
    }
  }


  if (level==2){//if xoomlevel 2
    if((getDragArea()/getWholeArea())*100>50){//set zoomlevel 2
      level=2;
      return true;
    }
    if((getDragArea()/getWholeArea())*100<=50){//set zoomlevel 1
      level=1;
      return true;
    }
  }


  if (level==1){//if xoomlevel 1
    level=1;
    return true;
  }

}

function getDragArea(){//return the drag area
  var dragArea;

  dragArea=parseInt(document.getElementById("dragToZoomDiv").style.width) * parseInt(document.getElementById("dragToZoomDiv").style.height);
  return dragArea;
}

function getWholeArea(){//return the whole area
  var wholeArea=475*475;

  return wholeArea;
}

function disableRightClick(){
  //alert(propertyRightClick);
  return false;
}

function getOffsetLeft (el) {
  var ol = el.offsetLeft;
  while ((el = el.offsetParent) != null)
    ol += el.offsetLeft;
  return ol;
}




function getOffsetTop (el) {
  var ot = el.offsetTop;
  while((el = el.offsetParent) != null)
   ot += el.offsetTop;
  return ot;
}


function Point(x, y) {
    var x, y;
    this.x = parseInt(x);
    this.y = parseInt(y);
}


function getTarget(e) {
    var target;
	if (e.target) target = e.target;
	else if (e.srcElement) target = e.srcElement;
	return target;
}


function getMouse(e, obj) {
	if (e.pageX || e.pageY)	{
		return new Point(e.pageX - getOffsetLeft(obj), e.pageY - getOffsetTop(obj));
	}
	else if (e.clientX || e.clientY) {
		return new Point(e.clientX - getOffsetLeft(obj), e.clientY - getOffsetTop(obj));
	}
}


function setPos(obj, x, y) {//flyttar mapcontainern

    obj.style.top = y + "px";
    obj.style.left = x + "px";

}

function switchImageOver(id){
  document.getElementById("nav"+id).src="../images/compass/"+id+"-over.gif";
}
function switchImageOut(id){
  document.getElementById("nav"+id).src="../images/compass/"+id+".gif";
}
// -------------- //Mouse events--------------- //


// -------------- Zoom events--------------- //

function doubleClickInMap(e){//Doubleclick in map is zooming in

if (!e) var e = window.event;
  target = getTarget(e);
  if(target.getAttribute("id").substring(0,3)=="map"){
    if(level>1){
      var mouse = getMouse(e, document.getElementById("mapwindow"));
      dblclickedMap=true;

      dblclickedMoveY=235 - mouse.y;
      dblclickedMoveX=235 - mouse.x;


      if(navigator.appVersion.indexOf("MSIE")!="-1"){//If browser is MIE add scrolltop
        dblclickedMoveY = dblclickedMoveY - document.documentElement.scrollTop;
      }
      else{
        dblclickedMoveY = dblclickedMoveY - document.body.scrollTop;
      }


      startMouseY=dblclickedMoveY;
      startMouseX=dblclickedMoveX;
      endMouseY=dblclickedMoveY;
      endMouseX=dblclickedMoveX;

      target = null;//ends the mapdrag
      zoom(level-1);
    }
    else{
      alert(propertyZoomin);
      target = null;//ends the mapdrag
      return false;
    }
  }
}



function zoom(newLevel){//zoom to new level
  var stop=false;
  zoomButtons=true;

  if (level==newLevel)
  {
    stop=true;
  }

  level=newLevel;

  if(stop==false){
    swap_zoomImage(newLevel);
    orderMapFromKartaDirekt();
  }

}


function zoomstep(step)
{
  var stop=false;

  if ((level==5) && (step==1))
  {
    alert(propertyZoomout);
    stop=true;
  }
  if ((level==1) && (step==-1))
  {
    alert(propertyZoomin);
    stop=true;
  }

  if(stop==false){
    zoom(parseInt(level)+parseInt(step));
  }

}



function swap_zoomImage(index){//User has clicked on zoom button

  for(var i=1;i<6;i++){
    var elementName="zoomlink"+i;
    document.getElementById(elementName).className  ="zoomlink";
  }

 if (index==1){
    document.getElementById("zoomlink1").className  ="zoomlink current";
    document.getElementById("scale").src="../images/2-5-10-20-40/level_1.gif";
 }
 if (index==2){
    document.getElementById("zoomlink2").className  ="zoomlink current";
    document.getElementById("scale").src="../images/2-5-10-20-40/level_2.gif";
 }
 if (index==3){
    document.getElementById("zoomlink3").className  ="zoomlink current";
    document.getElementById("scale").src="../images/2-5-10-20-40/level_3.gif";
 }
 if (index==4){
    document.getElementById("zoomlink4").className  ="zoomlink current";
    document.getElementById("scale").src="../images/2-5-10-20-40/level_4.gif";
 }
 if (index==5){
    document.getElementById("zoomlink5").className  ="zoomlink current";
    document.getElementById("scale").src="../images/2-5-10-20-40/level_5.gif";
 }

}


function swapImage(){
  if(document.getElementById("dragtozoom").src.indexOf("dragzoom_off.gif") == -1){
    document.getElementById("dragtozoom").src = "../images/dragzoom_off.gif";
  }
  else{
    document.getElementById("dragtozoom").src = "../images/dragzoom_on.gif";
  }
}
// -------------- //Zoom events--------------- //



// -------------- Pan--------------- //
function glider(newleft,newtop){//set the new value to mapcontainer

  glidePixels=glidePixels+glideInterval;
  glideLeft = parseInt(glideLeft+newleft);
  glideTop = parseInt(glideTop+newtop);

  //The actual move
  document.getElementById("mapcontainer").style.left = glideLeft+"px";
  document.getElementById("mapcontainer").style.top = glideTop+"px";

  if(glidePixels>=glideDistance){
    glide=true;
    orderMapFromKartaDirekt();//order new maps
    glide=false;
    window.clearInterval(interValId);
    glidePixels=0;
    doubleClickPan=false;
  }
}



function pan(direction) {//User clicks on a pan-bottom

  //reset dropdownlists
  resetAllLists();

  //glideValueY = 0;
  //glideValueX = 0;


  if(doubleClickPan==false){
    doubleClickPan=true;
    var moveBy=0;
    var left="",top="", tempGlideLeft="", tempGlideTop="";
    //resetAllLists();//Reset all list

    //Glide when pan
    //oldGlideLeft = glideLeft;//set old value in oldGlideLeft

    left = document.getElementById("mapcontainer").style.left;
    top = document.getElementById("mapcontainer").style.top;


    //Get value from map-left-point
    for(var i=0; i<left.length; i++){//get the value from mapcontainer
      if(!isNaN(left.charAt(i))){
        tempGlideLeft = tempGlideLeft+""+left.charAt(i);
      }
    }

    //Get value from map-top-point
    for(var i=0; i<top.length; i++){//get the value from mapcontainer
      if(!isNaN(top.charAt(i))){
        tempGlideTop = tempGlideTop+""+top.charAt(i);
      }
    }

    glideLeft = parseInt(-tempGlideLeft);
    glideTop = parseInt(-tempGlideTop);


    if(direction == "e"){
      startMouseY=endMouseY;
      startMouseX=endMouseX;
      endMouseX=endMouseX-glideDistance;
      interValId = window.setInterval("glider(-glideInterval,0)", glideTime);
    }
    if(direction == "w"){
      startMouseY=endMouseY;
      startMouseX=endMouseX;
      endMouseX=endMouseX+glideDistance;
      interValId = window.setInterval("glider(glideInterval,0)", glideTime);
    }
    if(direction == "n"){
      startMouseX=endMouseX;
      startMouseY=endMouseY;
      endMouseY=endMouseY+glideDistance;
      interValId = window.setInterval("glider(0,glideInterval)", glideTime);
    }
    if(direction == "s"){
      startMouseX=endMouseX;
      startMouseY=endMouseY;
      endMouseY=endMouseY-glideDistance;
      interValId = window.setInterval("glider(0,-glideInterval)", glideTime);
    }

    if(direction == "ne"){
      startMouseX=endMouseX;
      startMouseY=endMouseY;
      endMouseY=endMouseY+glideDistance;
      endMouseX=endMouseX-glideDistance;
      interValId = window.setInterval("glider(-glideInterval,glideInterval)", glideTime);
    }
    if(direction == "nw"){
      startMouseX=endMouseX;
      startMouseY=endMouseY;
      endMouseY=endMouseY+glideDistance;
      endMouseX=endMouseX+glideDistance;
      interValId = window.setInterval("glider(glideInterval,glideInterval)", glideTime);
    }

    if(direction == "se"){
      startMouseX=endMouseX;
      startMouseY=endMouseY;
      endMouseY=endMouseY-glideDistance;
      endMouseX=endMouseX-glideDistance;
      interValId = window.setInterval("glider(-glideInterval,-glideInterval)", glideTime);
    }
    if(direction == "sw"){
      startMouseX=endMouseX;
      startMouseY=endMouseY;
      endMouseY=endMouseY-glideDistance;
      endMouseX=endMouseX+glideDistance;
      interValId = window.setInterval("glider(glideInterval,-glideInterval)", glideTime);
    }
}
}

// -------------- //Pan--------------- //



// -------------- Cross calculation--------------- //
function setMapPosAfterClick(x,y){

  //var xCoordOverviewImage = 7670800;//The x coord for the upperleft point of the imagemap //RT90
  //var yCoordOverviewImage = 1195000;//The y coord for the upperleft point of the imagemap //RT90

  //sweref original 7664556.801
  //sweref original 227180.518

  var xCoordOverviewImage = 7664557;//.801;//The x coord for the upperleft point of the imagemap //SWEREF99
  var yCoordOverviewImage = 227181;//.518;//The y coord for the upperleft point of the imagemap //SWEREF99

  var newx=0, newy=0;
  var compY=0, compX=0;

  if (browserName=="Microsoft Internet Explorer"){//If explorer
      y=y-2;
      x=x+14;
  }
  else{
      y=y+1;
      x=x+6;
  }

  xVal = xCoordOverviewImage - (y * 5650) + (getLevelExtend());
  yVal = yCoordOverviewImage + (x * 5650) - (getLevelExtend());

}

function getLevelExtend(){//Returns a value to be used for calc the correct image to be ordered from karta direkt
  if(level==1)
    return 225*2;
  if(level==2)
    return 225*5;
  if(level==3)
    return 225*10;
  if(level==4)
    return 225*20;
  if(level==5)
    return 225*40;
}

function moveCross(){//Move cross in overwiev image after image load
  //var xCoordOverviewImage = 7670800;//The x coord for the upperleft point of the imagemap //RT90
  //var yCoordOverviewImage = 1195000;//The y coord for the upperleft point of the imagemap //RT90

  //sweref original 7664556.801
  //sweref original 227180.518

  var xCoordOverviewImage = 7664557; //The x coord for the upperleft point of the imagemap //SWEREF99
  var yCoordOverviewImage = 227181; //The y coord for the upperleft point of the imagemap //SWEREF99

  crossTop = (xCoordOverviewImage + getLevelExtend() - xVal)/5650;
  crossLeft = -(yCoordOverviewImage - getLevelExtend() - yVal)/5650;

	
    if (browserName=="Microsoft Internet Explorer"){//If explorer
      compY =5;
      compX = - 11;
    }
    else{
      compY = 5;
      compX = - 11;
    }
	
	var agt=navigator.userAgent.toLowerCase();

	 if (agt.indexOf("msie 6.0")>-1){//If explorer 6
      compY =11;
      compX = - 11;
    }

  document.getElementById("crossContainer").style.top = crossTop + compY + "px";
  document.getElementById("crossContainer").style.left = crossLeft + compX + "px";

}


// -------------- //Cross calculation--------------- //

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

function majorErrorHandler(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 ------------ //

// -------------  GEOIN-handlers ------------ //
function externalGISearch(){
  var url="";
  url=document.location;
  calcSquareMapCoords(xVal,yVal);
  if(xMax!="" && yMax!="" && xMin!="" && yMin!=""){
    //get link to geosearch (external)
    var link = document.getElementById("geoSearchExternalURL").value;
    window.open(link+"?clientId=geoinClient&firstMatchToReturn=1&maxMatchesToReturn=150&sortBy=&sortOrder=&xYdot=&xYNode1Line=&xYNode2Line=&xMinYminSquare="+xMax+":"+yMax+"&xMaxYmaxSquare="+xMin+":"+yMin+"&preDefinedGeometry=&coverageArea=0.001&coverageExtent=0.001&fromSystem=SWEREF 99 TM (RH 2000)&toSystem=RT 90 2,5 gon V 0:-15&requestUrl=" + url);
  }
}
// ------------- // GEOIN-handlers ------------ //


// -------------- Set cookies --------------- //
function setSimpleSearchCookies(){
  setCookieWrapper("ms", "level", level);
  setCookieWrapper("ms", "xMax", xMax);
  setCookieWrapper("ms", "yMax", yMax);
  setCookieWrapper("ms", "yMin", yMin);
  setCookieWrapper("ms", "xVal", xVal);
  setCookieWrapper("ms", "yVal", yVal);
}
// -------------- //Set cookies --------------- //
