﻿var clickMode = 0;
var globalMapObj=null;

function GeoGravityMap()
{
    this.scaleFactor=3780;
	this.dragging = false;
	this.mouseDown = false;
	this.draggingVis = false; // Visitenkarte
	this.ktop=0;
	this.kleft=0;
	this.dragStartTop;
	this.dragStartLeft;
	this.viewportWidth = 450;
	this.viewportHeight = 450;
	this.tileSize = 800;
	this.tilesOverViewportH = parseInt(this.viewportHeight/this.tileSize+1);
	this.tilesOverViewportW = parseInt(this.viewportWidth/this.tileSize+1);
	this.dimmed=false;
	this.dimopacity=60;
	this.maxZoomLevel=5;//<%=maxZoomLevel%>; 0..6
	this.lastClickedItem="";
	this.zoomTimer=0;
	this.iPoiIdAktuell = 0;
	this.bRoutingRun = false;
	this.ScreenShotLeft = 0;
	this.ScreenShotTop = 0;
	this.bZoom = false;
	this.oldCenter = new Array(0,0);
	
	this.center = new Array(3660000,5950000); // Schwerin
	this.arrAdressuebergabe = "";//<%= getAufrufPositionierung() %>;
    
    this.forceCenter = false;
	this.map="bis";
	this.zoomlevel=3;
	this.iPoiAnzeige = 0;
	this.aufziehmodus=false;

	// Routing / Touren
	this.clickMode=0;
	this.currentTour=00;
	this.startPoint=new Array(0,0);
	this.endPoint=new Array(0,0);
    this.zwischenpunkte = new List();
    this.zwpCounter=1;
	
    this.iCanvasMin = 0;
    this.iCanvasMax = 0;
	
	// Distanzmessung
	this.measureDistanceMode=false;
	this.measureClickNum=0;
	this.measureStartX=0;
	this.measureStartY=0;
	
	// Eichung
	this.meterX = 0;
	this.meterY = 0;
	this.links = 2000000;
	this.unten = 5000000;
    this.xSize =0;
    this.ySize=0; 
		
	// Übersichtskarte
	this.omX= 5818.0148;
	this.omY=-5818.0148;
	this.oL=3242191;
	this.oU=6094074;
	this.oW=123;
	this.oH=146;
	
	// Menüeinträge
	this.iMenueHoehe = 0;
	this.bMenueLaden = true;
	this.bMenueSichtbar = false;
	this.iAnzahlKategorien = 0;
	
	this.arrWMS = new Array(
	                        "http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=standard&layers=atkis_karte&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&copyright=false&caching=false&kid=3be6ee5f54168cedff6687ee4a994a63",
	                        "http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=standard&layers=atkis_karte&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&copyright=false&caching=false&kid=3be6ee5f54168cedff6687ee4a994a63",
	                        "http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=standard&layers=atkis_karte&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&copyright=false&caching=false&kid=3be6ee5f54168cedff6687ee4a994a63",
	                        "http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=standard&layers=atkis_karte&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&copyright=false&caching=false&kid=3be6ee5f54168cedff6687ee4a994a63",
	                        "http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=standard&layers=atkis_karte&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&copyright=false&caching=false&kid=3be6ee5f54168cedff6687ee4a994a63"

   //viabono beispiel       "http://on-maps.de/ggwms2?VERSION=1.1.0&FORMAT=image/png&TRANSPARENT=false&REQUEST=getmap&bgcolor=0xffffe6&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&styles=standard&srs=epsg:31467&LAYERS=atkis_ogc_karte,viabono_staatsgrenzen,viabono_texte&db=atkis_superdb_3mer_gg&nowatermark=true&copyright=false&caching=false"
                            );

	 this.iLayer = 3; // Der normale Layer wird + diese Zahl genommen um den richtigen WMS zu bestimmen
	
	// Legende
	this.iShowLegende = 0; // 0 = Legende noch nicht erstellt, 1 = Legende gerade sichtbar, 2 = Legende unsichtbar  
	// Suchfunktion
    this.m_center = new Array(0,0);
    this.m_wmsBase = this.arrWMS[2];
    this.m_mapBase = "";
    this.m_usingWMS = false;
    this.m_usingWMSUebersichtskarte = false;
    
    this.m_poiCategoryOverlayVisible = false;
    
    // Slider
    this.isDrag = false;
    this.yoben = 0;  
    this.sliderMin = 45;
    this.sliderMax = 117;
    
    
    this.onmapmouseclick = function(x,y,px,py) {};
    this.onmapmousemove = function(x,y) {};
    this.onpoiclick = function() {};
    this.Suchergebnis = new Array;
    
    this.homeX = 0;
    this.homeY = 0;
    this.homeScale = 0;
    this.ScaleMatchTab = new Array(20000, 40000, 80000, 160000, 320000);
    //this.ScaleMatchTab = new Array(10000, 25000, 50000, 100000, 200000, 400000, 800000, 1600000, 3200000);
    this.WMSLayers = new Array();

    this.lastX = 0;
    this.lastY = 0;
    this.lastScale = 0;
    this.arrPoiUebersichtKat = new Array();
    
    this.XMinLeft = 3278037;
    this.YMinLeft = 5233482;
    
    //this.XMaxLeft = 3940895;
    this.XMaxLeft = 3920000;    // damit keine Streifen sichtbar sind
    this.YMaxLeft = 6114752;
    
    this.XMinTop = 3278037;
    //this.YMinTop = 6114752;   
    this.YMinTop = 6100000;     // damit keine Streifen sichtbar sind
    
    this.XMaxTop = 3940895;
    this.YMaxTop = 5233482;
    
    //Tooltipp array
    this.Tooltipp = new Array();
    this.tooltippid=0;
    
    // diese Funktion gibt die Gesamtbreite der Karte in Pixeln im aktuellen Zoomlevel zurück
    this.getMaxWidth=function()
    {
        return ((this.XMaxLeft-this.XMinLeft)/this.meterX);
    }
    
    // diese Funktion gibt den Abstand in m zwischen den Kartenpunkten und den Punkten,
    // die nötig sind, um jeden Punkt zu zentrieren
    this.getXCalibration=function()
    {
		if (this.zoomlevel >= (this.maxZoomLevel-1))
		    return 0;
        var i = this.meterX * this.viewportWidth / 2;    
        return i;
    }
    
    // diese Funktion gibt den Abstand in m zwischen den Kartenpunkten und den Punkten,
    // die nötig sind, um jeden Punkt zu zentrieren
    this.getYCalibration=function()
    {
		if (this.zoomlevel >= (this.maxZoomLevel-1))
		    return 0;
        var i = this.meterX * this.viewportHeight / 2;    
        return i;
    }
    
    // diese Funktion gibt die kleinste Pixelkoordinate für 'left' zurück
    this.getMinLeft=function()
    {
		var pixelPos = this.TransformGeoCoordToInnerDiv(this.XMinLeft-this.getXCalibration(), this.YMinLeft-this.getYCalibration());
        var i = pixelPos[0];
        return -i;
    }

    // diese Funktion gibt die größte Pixelkoordinate für 'left' zurück
    this.getMaxLeft=function()
    {
		var pixelPos = this.TransformGeoCoordToInnerDiv(this.XMaxLeft+this.getXCalibration(), this.YMaxLeft+this.getYCalibration());
        var i = pixelPos[0]-this.viewportWidth;
        return -i;
    }
    
    // diese Funktion gibt die kleinste Pixelkoordinate für 'top' zurück
    this.getMinTop=function()
    {
		var pixelPos = this.TransformGeoCoordToInnerDiv(this.XMinTop-this.getXCalibration(), this.YMinTop+this.getYCalibration());
        var i = pixelPos[1];
        return -i;
    }
    
    // diese Funktion gibt die größte Pixelkoordinate für 'top' zurück
    this.getMaxTop=function()
    {
		var pixelPos = this.TransformGeoCoordToInnerDiv(this.XMaxTop+this.getXCalibration(), this.YMaxTop-this.getYCalibration());
        var i = pixelPos[1]-this.viewportHeight;
        return -i;
    }

    this.checkLeftTop = function(show) {
        
        this.getMaxWidth();
        //return;
        var innerDiv = document.getElementById("innerDiv");
        var left = stripPx(innerDiv.style.left);
        var top = stripPx(innerDiv.style.top);
        if (show) {
            alert("Left,Top in:" + left + "," + top);
        }
        var leftMin = this.getMinLeft();
        var leftMax = this.getMaxLeft();
        var topMin = this.getMinTop();
        var topMax = this.getMaxTop();
        if (show) {
            alert("leftMin,leftMax,topMin,topMax:" + leftMin + "," + leftMax + ":" + topMin + "," + topMax);
        }
        if (left < leftMax)
            left = leftMax;
        if (left > leftMin)
            left = leftMin;
        if (top < topMax)
            top = topMax;
        if (top > topMin)
            top = topMin;
        if (show) {
            alert("Left,Top out:" + left + "," + top);
        }
        innerDiv.style.left = left + "px";
        innerDiv.style.top = top + "px";
    }

    this.Test = function()
    {
//        var leftMin = this.getMinLeft();
//        var leftMax = this.getMaxLeft();
//        var topMin = this.getMinTop();
//        var topMax = this.getMaxTop();
//        alert("Left,Top:"+leftMin+" "+leftMax+","+topMin+" "+topMax);
//        this.checkLeftTop(true);
    }
    
    this.moveMap=function(x,y)
    {
        var innerDiv = document.getElementById("innerDiv");
        innerDiv.style.top = parseFloat(innerDiv.style.top) + y+"px";
        innerDiv.style.left = parseFloat(innerDiv.style.left) + x+"px";
        this.checkLeftTop(false);
        this.CheckTiles();
        this.UpdateUebersichtskarte();
    }


//  this.LoadTour=function(tourID)
//  {
//	    if (tourID!="" && tourID!="0")
//	    {
//	        var url = "./mapcontrol/ajax/LoadTour.aspx?zoom="+ this.bZoom +"&x="+this.links+"&y="+this.unten+"&w="+this.meterX+"&h="+this.meterY+"&tourId="+tourID+"&vW="+ theMap.viewportWidth +"&vH="+theMap.viewportHeight;
//	        loadXMLDoc(url,this);
//	        if(this.currentTour!=tourID){
//	            url = "./mapcontrol/ajax/GetTourorte.aspx?tourId="+tourID;
//    	        loadXMLDoc(url,this);
//	            this.currentTour=tourID;
//	        }
//    	    

//        	    
//    	    
//    	    
//    	    
//	        //Die POIs zur Tour werden geladen
//	        var visibleTiles = this.getVisibleTiles();
//		    for (i = 0; i < visibleTiles.length; i++){
//			    var tileArray = visibleTiles[i];
//    	    
//	        var url = "./mapcontrol/ajax/GetPOILayer.aspx?TourId=" + tourID + "&TourPoiAnzeigen=true&ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&mx="+parseInt(this.meterX);
//	        loadXMLDoc(url,this);
//	        }
//	    }
//	    //var url = "./mapcontrol/ajax/GetPOILayer.aspx?merk="+getMerkliste()+"&x1="+x1+"&y1="+y1+"&x2="+x2+"&y2="+y2+"&ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&level="+this.zoomlevel+"&mx="+parseInt(this.meterX)+"&poiKatIds="+strPoiKatGewaehltGesamt+"&usingWMS="+this.m_usingWMS;
//				
//  }

//  this.GetTouren=function(tourID)
//  {
//        var url = "./mapcontrol/ajax/GetTours.aspx?tourId="+tourID;
//	    loadXMLDoc(url,this);
//  }
    
  this.UpdateLast=function()
  {
    var center = this.GetCenter();
    this.lastX = center[0];
    this.lastY = center[1];
    this.lastScale = parseInt(this.meterX)*this.scaleFactor;
    if (this.lastScale == 0)
        this.lastScale = 10000;
    this.lastScale = this.MatchScale(this.lastScale);
  }  

  this.GoLast=function()
  {
    if (this.lastX == 0)
        return;
    this.SetCenter(this.lastX,this.lastY);
    var massstabAnzeige = document.getElementById("massstabAnzeige");
    massstabAnzeige.value = this.lastScale;
    this.MassstabSetzen();
  }
  
  // Berechnet welcher Massstab von der Tabelle ScaleMatchTab genommen wird
  this.MatchScale=function(oldScale)
  {
    var i=0;
    var iRetval = 0;
    if (oldScale < 10000){
        iRetval = 10000;// Kleiner als 10000 geht nicht
        
    }
    oldScale = parseInt(Math.round(oldScale/5000)*5000);
    var iAbstand = 0;
    var iAbstandAlt = 0;
        
    for (i=0;i<this.ScaleMatchTab.length;i++)
    {
        // Abstand berechnen zwischen dem angeforderten Maßstab und dem Maßstab in der Tabelle
        iAbstand = parseInt(oldScale) - parseInt(this.ScaleMatchTab[i]);
        if(parseInt(iAbstand)<0)
            iAbstand = parseInt(iAbstand)*-1; // Minuswerte verhindern
        
        // Prüfen ob ein Massstab genau getroffen wurde
        if(parseInt(iAbstand) == 0){
            iRetval = parseInt(oldScale); 
            break;
        }
        else if(i!=0){ // Ermitteln welcher Maßstab am nächsten liegt, nicht machen in der ersten runde
            if(parseInt(iAbstandAlt)<parseInt(iAbstand)){
                iRetval = parseInt(this.ScaleMatchTab[i-1]);
                break;
            }
        }
        iAbstandAlt = parseInt(iAbstand);
    }
    
    // Wenn kein Scale ermittelt wurde soll der höchste rausgesucht werden
    if(iRetval==0)
        iRetval = parseInt(this.ScaleMatchTab[this.ScaleMatchTab.length-1]);
    return iRetval;

  }
  
//  this.PrintAsPDF=function()
//  {
//    if (this.m_usingWMS)
//    {
//		var innerDiv = document.getElementById("innerDiv");
//		var x1 = stripPx(innerDiv.style.left);
//		var y1 = stripPx(innerDiv.style.top);

//        var mapX=this.links-parseInt(x1*this.meterX);
//        var mapY=this.unten-parseInt(y1*this.meterY);
//        var scale = parseInt(this.meterX) * this.scaleFactor;
//        if (scale == 0)
//            scale = 10000;
//        scale = this.MatchScale(scale);
//        location.href="./mapcontrol/ajax/PrintMap.aspx?wms="+escape(this.m_wmsBase)+"&x="+mapX+"&y="+mapY+"&mX="+this.meterX+"&mY="+this.meterY+"&w="+this.viewportWidth+"&h="+this.viewportHeight+"&scale="+scale;
//        
//               
//        /*var outerDiv = document.getElementById("outerDiv");
//		var h = stripPx(outerDiv.style.height);
//		var w = stripPx(outerDiv.style.width);

//        var mapw=parseInt(w*this.meterX);
//        var maph=parseInt(h*this.meterY);
//        location.href="./mapcontrol/ajax/PrintMap.aspx?l="+this.ScreenShotLeft+"&t="+this.ScreenShotTop+"&h="+h+"&w="+w;*/
//    }
//  }
  
  this.GoHome=function()
  {
    this.UpdateLast();
    if (this.homeX != 0)
    {
        this.SetCenter(this.homeX,this.homeY);
    }
    if (this.homeScale != 0)
    {
        var massstabAnzeige = document.getElementById("massstabAnzeige");
        massstabAnzeige.value = this.homeScale;
        this.MassstabSetzen();    
    }
  }
  
  this.SetHome=function(x,y,scale)
  {
      this.homeX=x;
      this.homeY=y;
      this.homeScale=scale;
  }
      
  this.GetCenter=function()
  {
        var innerDiv = document.getElementById("innerDiv");
		ktop=stripPx(innerDiv.style.top);
		kleft=stripPx(innerDiv.style.left);

		var mapCenterPx = -(kleft - (this.viewportWidth / 2));
		var mapCenterPy = -(ktop - (this.viewportHeight / 2));

		var xneu = mapCenterPx * this.meterX + this.links;
		var yneu = mapCenterPy * this.meterY + this.unten;

		var koords = new Array(parseInt(xneu),parseInt(yneu));
		
   		this.oldCenter[0]=parseInt(xneu);
  		this.oldCenter[1]=parseInt(yneu);

		return koords;
  }
  
  this.ReloadMap=function()
  {
    var center = this.GetCenter();
    this.toggleZoom();
    this.SetCenter(center[0],center[1]);
    this.AdjustSlider();
    RefreshRoutingPoints();
  }
  
  this.SetCenter=function(x,y)
  {
		this.UpdateLast();
		this.oldCenter[0] = x;
		this.oldCenter[1] = y;
		var xpix = 0;
		var ypix = 0;
		if (this.m_usingWMS == true)
		{
		    xpix = (x - this.links) / this.meterX - this.viewportWidth / 2;
		    ypix = (y - this.unten) / this.meterY - this.viewportHeight / 2;
		} else {
		    xpix = (x - this.links) / this.meterX - this.viewportWidth / 2;
		    ypix = (y - this.unten) / this.meterY - this.viewportHeight / 2;
		}
		
		ktop = -parseInt(ypix);
		kleft = -parseInt(xpix);
		var innerDiv = document.getElementById("innerDiv");
		innerDiv.style.top = parseInt(ktop)+"px";
		innerDiv.style.left = parseInt(kleft)+"px";
		this.checkLeftTop();
		this.UpdateUebersichtskarte();        
		this.RecalcWMSOverview();
		this.CheckTiles();
  }
  
  this.ShowOverview=function(state)
  {
  }
  
  this.SetTileSize=function(sz)
  {
    this.tileSize = sz;
  }
    // WMS-Funktionen
  this.SetWMSBase=function(wmsBase)
  {
  	this.m_usingWMS=true;
	this.m_wmsBase=wmsBase;
  }
  
  // WMS-Funktionen für Übersichtskarte
  this.SetWMSBaseUebersichtskarte=function(bUseWms)
  {
	this.m_usingWMSUebersichtskarte = bUseWms;
  }
  
  this.DeleteMaps=function()
  {
 	    // alle Kartenausschnitte löschen
 	    var innerDiv = document.getElementById("innerDiv");
        var imgs = innerDiv.getElementsByTagName("div");
        for (i = 0; i < imgs.length; i++) 
        {
            var id = imgs[i].getAttribute("id");
            if (id != "tour" && id != "route")
            {
                    innerDiv.removeChild(imgs[i]);
                    i--;
            }
        }    
  }
  // Fügt einen neuen Layer hinzu (z.B. Strassen) der automatisch dargestellt wird
  this.AddWMSLayer=function(wmsLayer)
  {
 	this.WMSLayers[this.WMSLayers.length]=wmsLayer;
 	this.DeleteMaps();
  }
  
  // Löscht alle Layer 
  this.RemoveWMSLayers=function()
  {
    this.WMSLayers=new Array();
 	this.DeleteMaps();
  }
  
  // Sagt dem WMS wie MeterX und MeterY zu berechnen sind
  this.SetWMSResolution=function(resInMetersX,resInMetersY,reload)
  {
    if (reload)
    {
	    var center = this.GetCenter();
	    this.meterX=resInMetersX;
	    this.meterY=resInMetersY;
	    this.toggleZoom();
	    this.SetCenter(center[0],center[1]);
    } else {
        this.meterX = resInMetersX;
        this.meterY = resInMetersY;
    }
//    this.AdjustSlider();
    this.RecalcWMSOverview();
  }

  // Mapfile-Funktionen
  
  // Stellt den Viewer auf eine Basiskarte um
  this.SetMapBase=function(mapBase)
  {
	this.m_usingWMS = false;
	this.m_mapBase = mapBase;
  }
  
  // Stellt den Boundingboxzoom ein
	this.ToggleBereichsZoom=function()
	{
		this.aufziehmodus=!this.aufziehmodus;
		this.measureClickNum=0;
	}
	
	// Messfunktion
	this.ToggleMeasureDistance=function()
	{
		this.measureDistanceMode = !this.measureDistanceMode;
		this.measureClickNum=0;
	}

    // Dimmen der Karte
	this.ToggleDim=function()
	{
		this.dimmed = !this.dimmed;
		
		var outerDiv = document.getElementById("outerDiv");
		if (this.dimmed)
		{
			outerDiv.style.backgroundColor="#000000";
			
		} else {
			outerDiv.style.backgroundColor="#dddddd";
		}

		var innerDiv = document.getElementById("innerDiv");
		var divs = innerDiv.getElementsByTagName("div");
		var divNum = 0;
		while (divNum < divs.length)
		{    
			var imgs = divs[divNum].getElementsByTagName("img");
			var i=0;
			for (i=0;i<imgs.length;i++)
			{
				if (imgs[i].id=="maptile")
				{
				    if (!this.dimmed)
				    {
					    imgs[i].style.filter = ""; 
					    imgs[i].style.opacity = 1; 
				    }
				    else
				    {
					    imgs[i].style.opacity = "."+this.dimopacity; 
					    imgs[i].style.filter = "Alpha(opacity="+this.dimopacity+", style=0)"; 
				    }
				} else {
				    break;
				}
			}
			divNum++;
		}
	}

    // Mausrad zum Zoomen abfragen
	this.CheckWheel=function()
	{
		if (event.wheelDelta > 0)
		{
			GetMapObject(this.id).ZoomIn();
		} else {
			GetMapObject(this.id).ZoomOut();
		}
	}
	
//	// Setzt den Massstab
	this.MassstabSetzen = function(){
//	    this.UpdateLast();
//	    var strMassstab = document.getElementById("massstabAnzeige").value;
//	    var dMeterX = strMassstab * (13.229/50000);
//	    //var dMeterX = strMassstab * (35.3/100000);
//	    //var center = this.GetCenter();
//	    this.meterX=dMeterX;
//	    this.meterY=-dMeterX;
//	    this.toggleZoom();
//	    this.SetCenter(this.oldCenter[0],this.oldCenter[1]);
//	    this.AdjustSlider();
	}
//	
//	// Massstabstext einstellen
//	this.UpdateMasstab=function()
//	{
//	    var masstabText = document.getElementById("masstabkm");
//	    var masstabWidth = document.getElementById("masstabwidth");
//	    var mWidth =0;
//	    if (this.meterX*100 < 1)
//	    {
//	        mWidth = 1/this.meterX;
//	        masstabText.innerHTML = "&nbsp;1 m";
//	    } else if (this.meterX*100 < 5)
//	    {
//	        mWidth = 5/this.meterX;
//	        masstabText.innerHTML = "&nbsp;5 m";
//	    } else if (this.meterX*100 < 10)
//	    {
//	        mWidth = 10/this.meterX;
//	        masstabText.innerHTML = "&nbsp;10 m";
//	    } else if (this.meterX*100 < 50)
//	    {
//	        mWidth = 50/this.meterX;
//	        masstabText.innerHTML = "&nbsp;50 m";
//	    } else if (this.meterX*100 < 100)
//	    {
//	        mWidth = 100/this.meterX;
//	        masstabText.innerHTML = "&nbsp;100 m";
//	    } else if (this.meterX*100 < 500)
//	    {
//	        mWidth = 500/this.meterX;
//	        masstabText.innerHTML = "&nbsp;500 m";
//	    } else if (this.meterX*100 < 1000)
//	    {
//	        mWidth = 1000/this.meterX;
//	        masstabText.innerHTML = "&nbsp;1 km";
//	    } else if (this.meterX*100 < 5000)
//	    {
//	        mWidth = 5000/this.meterX;
//	        masstabText.innerHTML = "&nbsp;5 km";
//	    } else if (this.meterX*100 < 10000)
//	    {
//	        mWidth = 10000/this.meterX;
//	        masstabText.innerHTML = "&nbsp;10 km";
//	    } else if (this.meterX*100 < 50000)
//	    {
//	        mWidth = 50000/this.meterX;
//	        masstabText.innerHTML = "&nbsp;50 km";
//	    } else if (this.meterX*100 < 100000)
//	    {
//	        mWidth = 100000/this.meterX;
//	        masstabText.innerHTML = "&nbsp;100 km";
//	    } else if (this.meterX*100 < 500000)
//	    {
//	        mWidth = 500000/this.meterX;
//	        masstabText.innerHTML = "&nbsp;500 km";
//	    } else if (this.meterX*100 < 1000000)
//	    {
//	        mWidth = 1000000/this.meterX;
//	        masstabText.innerHTML = "&nbsp;1000 km";
//	    }
//	    document.getElementById("massstabAnzeige").value = Math.round(this.meterX/(13.229/50000));
//	    document.getElementById("idMassstab").innerHTML = "Maßstab 1:"+this.ScaleMatchTab[this.zoomlevel];
//	    masstabWidth.style.width = mWidth+"px";
//	    if(currentTourId!=0)
//	        this.LoadTour(currentTourId);
//	}
  
  
  this.imgErrorHandlerempty=function(evt) {
  }
  
  this.imgErrorHandler=function(evt) {
      var src=this.src;
      this.onerror=globalMapObj.imgErrorHandlerempty;
      this.src='';
      this.src=src;
  }
  
  this.MSIE60=function(){
     
    return navigator.appVersion.search(/MSIE 6.0/)!=-1;
    
  }
 
  // Prüft die einzelnen gezogenen Karten
  this.CheckTiles=function()
  { 

  		//window.status = "Loading Tiles..."
		var visibleTiles = this.getVisibleTiles();
		var innerDiv = document.getElementById("innerDiv");
		var visibleTilesMap = {};
		var numTiles = visibleTiles.length;
		var i=0;
		for (i = 0; i < numTiles; i++) {
			var tileArray = visibleTiles[i];
			var tileName = "?ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&level="+this.zoomlevel;
			visibleTilesMap[tileName] = true;
			var div = document.getElementById(tileName);
			if (!div) {
				div = document.createElement("div");
				div.setAttribute("id", tileName);
				var iL=0;
				var numLayers = this.WMSLayers.length+1;
				// Schleife über die zuschaltbaren Layer, beim ersten Durchlauf wird der normale WMS geladen
				for (iL=0;iL<numLayers;iL++)
				{
				    var img = document.createElement("img");
    				
				    // Geokoordinaten des Bereiches ermitteln
				    var mapx1 = (tileArray[0] * this.tileSize);
				    var mapy1 = (tileArray[1] * this.tileSize);
				    var mapx2 = (tileArray[0] * this.tileSize)+this.tileSize;
				    var mapy2 = (tileArray[1] * this.tileSize)+this.tileSize;                
				    var x1T = parseInt(mapx1 * this.meterX + this.links);
				    var y1T = parseInt(mapy1 * this.meterY + this.unten);
				    var x2T = parseInt(mapx2 * this.meterX + this.links);
				    var y2T = parseInt(mapy2 * this.meterY + this.unten);
				    var x1 = Math.min(x1T,x2T);
				    var x2 = Math.max(x1T,x2T);
				    var y1 = Math.min(y1T,y2T);
				    var y2 = Math.max(y1T,y2T);
				    var scale = parseInt(this.meterX)*this.scaleFactor;
				    if (scale == 0)
				        scale = 10000;
				    scale = this.MatchScale(scale);

				    var wmsUrl="";
				    // Abfrage ob ein WMS benutzt wird
				    if (this.m_usingWMS)
				    {
				        // erster Durchlauf = normale Karte
				        if (iL==0)
				        {
    				        wmsUrl = this.m_wmsBase;
				        } else { // 2. oder mehrere Durchläufe = Layer die über die Karte gelegt werden laden
    				        wmsUrl = this.WMSLayers[iL-1]; // -1 weil erst beim 2. Durchlauf
				        }
				        wmsUrl = wmsUrl.replace(/{h}/g,this.tileSize+"");
				        wmsUrl = wmsUrl.replace(/{w}/g,this.tileSize+"");
				        wmsUrl = wmsUrl.replace(/{x1}/g,(x1)+"");
				        wmsUrl = wmsUrl.replace(/{y1}/g,y1+"");
				        wmsUrl = wmsUrl.replace(/{x2}/g,(x2)+"");
				        wmsUrl = wmsUrl.replace(/{y2}/g,y2+"");
				        wmsUrl = wmsUrl.replace(/{s}/g,scale+"");	
			            img.onerror=this.imgErrorHandler;//Wenn Bild nicht geladen werden konnte
				        img.src = wmsUrl;
				    } else {
    				    img.src = "GetKachel.aspx" + tileName+"&map="+map;
    				    wmsUrl="GetKachel.aspx" + tileName+"&map="+map;
				    }
    				
				    img.style.position = "absolute";
				    img.style.left = (tileArray[0] * this.tileSize) + "px";
				    img.style.top = (tileArray[1] * this.tileSize) + "px";
				    img.style.width = this.tileSize + "px";
				    img.style.height = this.tileSize + "px";   
			        img.style.zIndex = 10+iL;
			        // Dimmen abfragen
				    if (!this.dimmed)
				    {
					    img.style.filter = ""; 
					    if (iL==0)
					        img.style.backgroundColor="transparent";                
				    }
				    else
				    {
				        img.style.opacity = "."+this.dimopacity; 
					    img.style.filter = "Alpha(opacity="+this.dimopacity+", style=0)"; 
					    if (iL==0)
					        img.style.backgroundColor="#000000";
					    				    }
					if (iL==1)
					{
					    //img.style.opacity = ".99"; 
					    //img.style.filter = "Alpha(opacity=99, style=0)"; 				    
					    //img.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+wmsUrl+"');";
					}
					img.id="maptile";
					
					
					
					if (iL>=1 && this.MSIE60())
					{
	                    var shim='../js/x.gif';
                        var src = img.src;
                        //debugger;
                        img.style.width = this.tileSize+"px";
                        img.style.height = this.tileSize+"px";
                        img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='crop')";
                        img.src = shim;					
                    }
				    div.appendChild(img);
				}
// Hallotest

                
				
//				var url = "./mapcontrol/ajax/GetPOILayer.aspx?merk="+getMerkliste()+"&x1="+x1+"&y1="+y1+"&x2="+x2+"&y2="+y2+"&ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&level="+this.zoomlevel+"&mx="+parseInt(this.meterX)+"&poiKatIds="+strPoiKatGewaehltGesamt+"&usingWMS="+this.m_usingWMS;
				
//				if(!usermodified)
//                    url+="&filter="+filterid;
//				    url+="&attribute="+Attribute.join(",");
                
//                if(bViewer && sPoiId!=null)
//                url+="&fremdid="+sPoiId;
//				else if(bViewer && sOwnPoiId!=null)
//                url+="&poiid="+sOwnPoiId;
//                if(sKId!=null)
//                url+="&kid="+sKId;
    
				    
//				loadXMLDoc(url,this);				
				innerDiv.appendChild(div);
			}
		}

		var imgs = innerDiv.getElementsByTagName("div");
		var imgsLen = imgs.length;
		for (i = 0; i < imgsLen; i++) {
			var id = imgs[i].getAttribute("id");
			if (id != "tour" && id != "route")
			{
				if (!visibleTilesMap[id]) {
					innerDiv.removeChild(imgs[i]);
					i--;
					imgsLen = imgs.length;
				}
			}
		}
		//window.status = "Finished."
        
  }
  
  // Zoomt raus
//	this.ZoomOut=function()
//	{
//	    if (this.m_usingWMS == false)
//	    {
//		    if (this.zoomlevel<this.maxZoomLevel)
//		    {
//			    this.center = this.getCenter();
//			    this.zoomlevel=this.zoomlevel+1;
//			    this.toggleZoom();
//			    this.updateEichung();
//			    this.measureDistanceMode=false;
//			    var dist1 = document.getElementById("dist1");
//			    var dist2 = document.getElementById("dist2");
//			    var distText = document.getElementById("distText");
//			    distText.innerHTML="";
//			    var distText2 = document.getElementById("distText2");
//			    distText2.innerHTML="";
//			    dist1.style.visibility="hidden";        
//			    dist2.style.visibility="hidden";        
//		    }
//		} else {
//		    if (this.zoomlevel<this.maxZoomLevel)
//		    {
//		        //die Straßennamen müssen wieder entfernt werden
////			    this.RemoveWMSLayers();
////			    //bis auf den Basis Layer werden alle Layer wieder ausgeschaltet ... daher die Abfrage welcher noch aktiv sein muss 
////                if(document.getElementById("idLayerNatur").checked == true)
////                    theMap.AddWMSLayer("http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=pda&layers=atkis_karte,strassentexte&WIDTH={w}&HEIGHT={h}&SCALE=20000&BBOX={x1},{y1},{x2},{y2}"); 
////                if(document.getElementById("idLayerSchutz").checked == true)
////                    theMap.AddWMSLayer("http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=pda&layers=atkis_karte,strassentexte&WIDTH={w}&HEIGHT={h}&SCALE=20000&BBOX={x1},{y1},{x2},{y2}"); 
////                if(document.getElementById("idLayerBio").checked == true)
////                    theMap.AddWMSLayer("http://on-maps.de/ggwms2?version=1.1.0&request=getmap&bgcolor=0xffffe6&nowatermark=true&format=image/png&dpi=72&TRANSPARENT=true&srs=epsg:31467&styles=standard&db=atkis_superdb_3mer_gg&LAYERS=viabono_flaechen_bio&fullalpha=true&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&truecolor=true&copyright=false"); 

//			    this.center = this.GetCenter();
//			    this.zoomlevel=this.zoomlevel+1;
//			    this.SetWMSBase(this.arrWMS[this.zoomlevel]);
//		        setZoom(this.zoomlevel);
//			    document.getElementById('massstabAnzeige').value=this.ScaleMatchTab[this.zoomlevel];
//			    this.MassstabSetzen();
//			    //solange die Adresssuche aktiv ist soll das Kreuz in jedem Maßstab angezeigt werden
//			    if(document.getElementById("adresssuche").style.display=="block")
//			        this.setFixedSucheAt(arrSucheGewaehlt, "pointer.gif");
//                // Routing und Start- Zwischen und Endpunkte
//                RefreshRoutingPoints();
//           }
//		}
//        windowResize();
//	}
//	
//	// Setzt den Zoom, loescht die Symbole
//	this.toggleZoom=function() 
//	{
//		//this.updateZoomButtons();
//		var innerDiv = document.getElementById("innerDiv");
//		var imgs = innerDiv.getElementsByTagName("div");
//		while (imgs.length > 1)
//		{
//			innerDiv.removeChild(imgs[0]);
//		}
//	}

//    // SliderPos geht von 0 bis 8 (9 Stufen)
    this.ZoomBySlider=function(sliderPos)
    {
        this.zoomlevel = sliderPos+1; // ZoomIn() reduziert ihn wieder um 1
        this.ZoomIn();
    }
    
//    // Zoomt rein
	this.ZoomIn=function()
	{
	    if (this.m_usingWMS == false)
	    {
		    if (this.zoomlevel>0)
		    {
			    this.center = this.GetCenter();     // save
			    this.zoomlevel=this.zoomlevel-1;    // neuer Zoomlevel
			    this.toggleZoom();                  // loescht die Icons
			    this.updateEichung();               // macht nichts
			    this.measureDistanceMode=false;
			    var dist1 = document.getElementById("dist1");
			    var dist2 = document.getElementById("dist2");
			    var distText = document.getElementById("distText");
			    distText.innerHTML="";
			    var distText2 = document.getElementById("distText2");
			    distText2.innerHTML="";
			    dist1.style.visibility="hidden";        
			    dist2.style.visibility="hidden";        
		    }
		} else {
		    if (this.zoomlevel>0)
		    {
//		        //die Straßennamen müssen wieder entfernt werden
////			    this.RemoveWMSLayers();
////			    //bis auf den Basis Layer werden alle Layer wieder ausgeschaltet ... daher die Abfrage welcher noch aktiv sein muss 
////                if(document.getElementById("idLayerNatur").checked == true)
////                    theMap.AddWMSLayer("http://on-maps.de/ggwms2?version=1.1.0&request=getmap&bgcolor=0xffffe6&nowatermark=true&format=image/png&dpi=72&TRANSPARENT=true&srs=epsg:31467&styles=standard&db=atkis_superdb_3mer_gg&LAYERS=viabono_flaechen_ntp&fullalpha=true&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&truecolor=true&copyright=false"); 
////                if(document.getElementById("idLayerSchutz").checked == true)
////                    theMap.AddWMSLayer("http://on-maps.de/ggwms2?version=1.1.0&request=getmap&bgcolor=0xffffe6&nowatermark=true&format=image/png&dpi=72&TRANSPARENT=true&srs=epsg:31467&styles=standard&db=atkis_superdb_3mer_gg&LAYERS=viabono_flaechen_np&fullalpha=true&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&truecolor=true&copyright=false"); 
////                if(document.getElementById("idLayerBio").checked == true)
////                    theMap.AddWMSLayer("http://on-maps.de/ggwms2?version=1.1.0&request=getmap&bgcolor=0xffffe6&nowatermark=true&format=image/png&dpi=72&TRANSPARENT=true&srs=epsg:31467&styles=standard&db=atkis_superdb_3mer_gg&LAYERS=viabono_flaechen_bio&fullalpha=true&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&truecolor=true&copyright=false"); 
//                

		        this.center = this.GetCenter();                                                         // save Center-Pos.
			    this.zoomlevel=this.zoomlevel-1;                                                        // aktualisiert den Zoomlevel
			    this.SetWMSBase(this.arrWMS[this.zoomlevel]);                                           // macht immer das gleiche
//		        setZoom(this.zoomlevel);                                                                // macht nichts
			    document.getElementById('massstabAnzeige').value=this.ScaleMatchTab[this.zoomlevel];    // get...
			    this.MassstabSetzen();                                                                  //         
			    //solange die Adresssuche aktiv ist soll das Kreuz in jedem Maßstab angezeigt werden
			    if(document.getElementById("adresssuche").style.display=="block")
			        this.setFixedSucheAt(arrSucheGewaehlt, "pointer.gif");
			        
                // Routing und Start- Zwischen und Endpunkte
                RefreshRoutingPoints();
		    }
//		    if (this.zoomlevel==0){
//		        if(!document.getElementById("idLayerStrassennamen").checked == true)
//                {
//		            this.AddWMSLayer('http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=pda&layers=atkis_karte,strassentexte&WIDTH={w}&HEIGHT={h}&SCALE=20000&BBOX={x1},{y1},{x2},{y2}');	           
//		        }
//		        
//		        //Damit die Labels beim ersten Zoom auch angezeigt werden
//		        theMap.moveMap(10000,10000);
//	            theMap.moveMap(-10000,-10000);
//		    }
		}
		windowResize();
	}
		
    // Zoomt rein
	this.ShowWMS=function()
	{
//	    this.center = new Array(parseInt(arrVisitenkarte[13]),parseInt(arrVisitenkarte[14]));
	    this.SetCenter(parseInt(arrVisitenkarte[13]),parseInt(arrVisitenkarte[14]));
	    this.zoomlevel=0;
	    this.SetWMSBase(arrVisitenkarte[7]+"&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}");
        setZoom(this.zoomlevel);
	    document.getElementById('massstabAnzeige').value="750";
	    this.MassstabSetzen();
		//this.updateZoomButtons();
		//this.updateZoomAnzeige(); // Dreieck verschieben
	}
	
	// Setzt die Messfunktion
	this.measureDistanceClick=function(clickLeft,clickTop)
	{
		if (!event) event = window.event;

		var innerDiv = document.getElementById("innerDiv");
		var top1 = -stripPx(innerDiv.style.top);
		var left1 = -stripPx(innerDiv.style.left);

		var outerDiv = document.getElementById("outerDiv");
		var clickY = -stripPx(outerDiv.offsetTop)+clickTop;
		var clickX = -stripPx(outerDiv.offsetLeft)+clickLeft;

		var xneu = left1+clickX;
		var yneu = top1+clickY;
		
		var dist1 = document.getElementById("dist1");
		var dist2 = document.getElementById("dist2");
		
		var ptToPxFactor = 0.75;
		if (this.measureClickNum == 0)
		{
			dist1.from.x = parseInt(clickX*ptToPxFactor);
			dist1.from.y = parseInt(clickY*ptToPxFactor);
			dist2.from.x = parseInt(clickX*ptToPxFactor);
			dist2.from.y = parseInt(clickY*ptToPxFactor);

			dist1.to.x = parseInt(clickX*ptToPxFactor);
			dist1.to.y = parseInt(clickY*ptToPxFactor);
			dist2.to.x = parseInt(clickX*ptToPxFactor);
			dist2.to.y = parseInt(clickY*ptToPxFactor); 
			this.measureClickNum++;
			this.measureStartX = xneu;
			this.measureStartY = yneu;
		} else {
			dist1.to.x = clickX*ptToPxFactor;
			dist1.to.y = clickY*ptToPxFactor;
			dist2.to.x = clickX*ptToPxFactor;
			dist2.to.y = clickY*ptToPxFactor; 
			
			var distText = document.getElementById("distText");            
			var dx = clickX - stripPx(dist1.from.x)/ptToPxFactor;
			var dy = clickY - stripPx(dist1.from.y)/ptToPxFactor;
			var entf = Math.round(Math.sqrt(Math.abs(dx*this.meterX*dx*this.meterX)+Math.abs(dy*this.meterY*dy*this.meterY)));
			if (entf < 1000)
			{
				distText.innerHTML = entf+" m";
			}
			if (entf >= 1000)
			{
				distText.innerHTML = Math.round(entf/10)*10/1000+" km";
			}
			distText.style.top = yneu+20;
			distText.style.left = xneu;

			var distText2 = document.getElementById("distText2");            
			distText2.innerHTML = distText.innerHTML;
			distText2.style.top = yneu+21;
			distText2.style.left = xneu+1;
		}
		dist1.style.visibility="visible";        
		dist2.style.visibility="visible";        
	}
	
	// Zeigt die sichtbaren teile/Kacheln
	this.getVisibleTiles=function()
  {
		var innerDiv = document.getElementById("innerDiv");
		var mapX = stripPx(innerDiv.style.left);
		var mapY = stripPx(innerDiv.style.top);
		var startX = Math.abs(Math.floor(mapX / this.tileSize))-1;//-(tilesOverViewportW-1);
		var startY = Math.abs(Math.floor(mapY / this.tileSize))-1;//-(tilesOverViewportH);
		var tilesX = Math.ceil(this.viewportWidth / this.tileSize)+1; // (this.tilesOverViewportW-1)+ (this.tilesOverViewportW);
		var tilesY = Math.ceil(this.viewportHeight / this.tileSize)+1; // (this.tilesOverViewportH-1)+ (this.tilesOverViewportH);
	
		var visibleTileArray = [];
		var counter = 0;
		for (var x = startX; x < (tilesX + startX); x++)
		{
			for (var y = startY; y < (tilesY + startY); y++)
			{
				visibleTileArray[counter++] = [x, y];
			}
		}
		return visibleTileArray;
  }   
  
  // Initalisiert die map
  this.Init=function()
  {
    // Massstab setzen (35.3 = 100.000)
    theMap.SetWMSResolution(17.7,-17.7,false);   // 50.000
    // theMap.SetWMSResolution(3.53,-3.53,false);      // 10.000
    theMap.SetTileSize(800);
    //theMap.SetWMSBase("http://on-maps.de/ggwms?VERSION=1.1.0&FORMAT=image/png&TRANSPARENT=false&REQUEST=getmap&bgcolor=0xffffe6&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&copyright=false&LAYERS=LIST:fc_005_list,LIST:atkis_kacheln_list&copyright=false&watermark=false&caching=false");
    theMap.SetWMSBase("http://on-maps.de/ggwms2?version=1.1.0&format=image/png&TRANSPARENT=false&request=getmap&bgcolor=0xffffe6&srs=epsg:31467&styles=standard&layers=atkis_karte&WIDTH={w}&HEIGHT={h}&SCALE={s}&BBOX={x1},{y1},{x2},{y2}&kid=3be6ee5f54168cedff6687ee4a994a63");
    
	var winW = 630, winH = 460;
	if (parseInt(navigator.appVersion)>3){
	    if (navigator.appName=="Netscape") {
	        winW = window.innerWidth;
	        winH = window.innerHeight;
	    }
	    if (navigator.appName.indexOf("Microsoft")!=-1) {
	        winW = document.documentElement.offsetWidth;
	        winH = document.documentElement.offsetHeight;
	    }
	}

	this.setInnerDivSize('2000px', '1400px');
	var outerDiv = document.getElementById("outerDiv");
	outerDiv.onmousedown = this.startMove;
	outerDiv.onmousemove = this.processMove;
	outerDiv.onmouseup = this.stopMove;
	outerDiv.onmouseout = this.stopMove;
	outerDiv.ondragstart = function() { return false; }
//	outerDiv.style.height=(winH-80)+"px";
	outerDiv.mapobject = this;
	globalMapObj = this;
	
	var innerDiv = document.getElementById("innerDiv");
//	innerDiv.onmousewheel = this.CheckWheel;

//	var legende = document.getElementById("Legende");
//	legende.onmousedown = this.stopMove;//function() { return false; }
//	legende.onmousemove = this.stopMove;//function() { return false; }
//	legende.onmouseup = this.stopMove;//function() { return false; }
//	legende.ondragstart = this.stopMove;//function() { return false; }

	var mapoverview = document.getElementById("mapoverview");
	mapoverview.onmousedown = this.startMoveOverview;
	mapoverview.onmousemove = this.processMoveOverview;
	mapoverview.onmouseup = this.stopMoveOverview;
	mapoverview.onclick = this.clickOverview;
	mapoverview.ondragstart = function() { return false; }

	window.onresize = windowResize; 
//	this.viewportHeight = winH-80;
	
	if (this.m_usingWMS == false)
	{
	    this.updateEichung();
	}
	
//	var slider = document.getElementById("zoomSchieber");
//    slider.onmousedown = this.mouseDownSlider;
//    slider.onmouseup = this.mouseUpSlider;
//    slider.onmousemove = this.mouseMoveSlider;	
//    slider.ondragstart = function() { return false; }
//    
//	var sliderContainer = document.getElementById("Zoomer");
//    sliderContainer.onmousedown = function() { return false; }
//    sliderContainer.onmouseup = function() { return false; }
//    sliderContainer.onmousemove = function() { return false; }
//    sliderContainer.ondragstart = function() { return false; }

//	var slider = document.getElementById("slider");
//    slider.onmousedown = this.mouseDownSlider;
//    slider.onmouseup = this.mouseUpSlider;
//    slider.onmousemove = this.mouseMoveSlider;	
//    slider.ondragstart = function() { return false; }
//    
//	var sliderContainer = document.getElementById("sliderContainer");
//    sliderContainer.onmousedown = this.mouseDownSliderContainer;
//    sliderContainer.onmouseup = this.mouseUpSliderContainer;
//    sliderContainer.onmousemove = function() { return false; }
//    sliderContainer.ondragstart = function() { return false; }
	
	this.CheckTiles();
	//this.updateZoomButtons();
	this.initMenue();
	
	//Tooltippinitialisieren;
//	this.initTooltipp();
  }  
    // Liest die POI-Kategorien aus
    this.initMenue = function(){
//   // Hallotest
   bViewer=false;
//        var url = "./mapcontrol/ajax/GetMenue.aspx?viewer="+bViewer+"&poiid="+sPoiId;
//        loadXMLDoc(url, this);
    }
//    
//    this.initTooltipp = function(){
//        var url ="./mapcontrol/ajax/Tooltipp.aspx";
//        loadXMLDoc(url,this);
//    }
    
	// Transformiert lokale Koordinaten in Geokoordinaten
	this.TransformMousePosToGeoCoord=function(x,y)
	{
		var innerDiv = document.getElementById("innerDiv");
		var mtop=stripPx(innerDiv.style.top);
		var mleft=stripPx(innerDiv.style.left);
		var mapOPx = -(mleft - x);
		var mapOPy = -(mtop - y);
		var x1 = mapOPx * this.meterX + this.links; 
		var y1 = mapOPy * this.meterY + this.unten; 
        var arrRetval = new Array(x1, y1);
		return arrRetval;
	}
	


  this.startMove=function(event)
  {
		// notwendig für IE
		if (!event) event = window.event;
		GetMapObject(this.id).dragStartLeft = event.clientX;
		GetMapObject(this.id).dragStartTop = event.clientY;
		GetMapObject(this.id).UpdateLast();

		if (GetMapObject(this.id).aufziehmodus)
		{
			var aufziehDiv = document.getElementById("selectbereich");
			if (GetMapObject(this.id).measureClickNum == 1)
			{
				GetMapObject(this.id).aufziehmodus=0;
				// Position, Größe und Zentrum des Bereiches hier fangen
				var x1 = stripPx(aufziehDiv.style.left);
				var y1 = stripPx(aufziehDiv.style.top);
				
				var divPos = GetMapObject(this.id).TransformMousePosToGeoCoord(x1,y1);
				
				var ax = divPos[0];
				var ay = divPos[1];
				var aw = stripPx(aufziehDiv.style.width)*GetMapObject(this.id).meterX;
				var ah = stripPx(aufziehDiv.style.height)*GetMapObject(this.id).meterY;
				
				var outerDiv = document.getElementById("outerDiv");
				var pw = stripPx(outerDiv.offsetWidth);
				var ph = stripPx(outerDiv.offsetHeight);
				
				//if (aw < 0)
				    //aw=0;
				if (pw < 0)
				    pw=0;
				//if (ah < 0)
				    //ah=0;
				if (ph < 0)
				    ph=0;
				
				if (GetMapObject(this.id).m_usingWMS==true)
				{
				    // WMS Modus
				    var centerX = divPos[0]+aw/2;
				    var centerY = divPos[1]+ah/2;
				    var meterNeu = Math.max(pw/stripPx(aufziehDiv.style.width),ph/stripPx(aufziehDiv.style.height));
				    GetMapObject(this.id).meterX = GetMapObject(this.id).meterX/meterNeu;
				    GetMapObject(this.id).meterY = GetMapObject(this.id).meterY/meterNeu;
				    GetMapObject(this.id).toggleZoom();
				    GetMapObject(this.id).SetCenter(centerX,centerY);
				    GetMapObject(this.id).AdjustSlider();
				} else {
				    ;//loadXMLDoc("./GetBestMapForArea.aspx?getMapData1&baseMap="+GetMapObject(this.id).map+"&ax="+ax+"&ay="+ay+"&aw="+aw+"&ah="+ah+"&pw="+pw+"&ph="+ph,GetMapObject(this.id));
				}
				// Karte pos, Bereich dichtmachen
				aufziehDiv.style.width="0px";
				aufziehDiv.style.height="0px";
				aufziehDiv.style.left="-100px";
				aufziehDiv.style.top="-100px";
				
			}
			if (GetMapObject(this.id).measureClickNum == 0)
			{
				GetMapObject(this.id).measureClickNum++;
				aufziehDiv.style.width="0px";
				aufziehDiv.style.height="0px";
			} 
		}
		else if (!GetMapObject(this.id).measureDistanceMode)
		{
			var innerDiv = document.getElementById("innerDiv");
			innerDiv.style.cursor = "move";
			GetMapObject(this.id).ktop = stripPx(innerDiv.style.top);
			if (innerDiv.style.top == "")
				GetMapObject(this.id).ktop = 0;
			
			GetMapObject(this.id).kleft = stripPx(innerDiv.style.left);
			if (innerDiv.style.left == "")
				GetMapObject(this.id).kleft = 0;
			
			GetMapObject(this.id).mouseDown = true;
		} else {
			if (GetMapObject(this.id).measureClickNum == 0)
			{
				GetMapObject(this.id).measureDistanceClick(GetMapObject(this.id).dragStartLeft,GetMapObject(this.id).dragStartTop);
			}
			else
			{
				GetMapObject(this.id).measureDistanceMode=false;
				var dist1 = document.getElementById("dist1");
				var dist2 = document.getElementById("dist2");
				var distText = document.getElementById("distText");
				distText.innerHTML="";
				var distText2 = document.getElementById("distText2");
				distText2.innerHTML="";
				dist1.style.visibility="hidden";        
				dist2.style.visibility="hidden";        
			}
		}
		return false;
	}
    
    
  this.processMove=function(event)
  {		
        if (!event) event = window.event;   // für IE
        
        var outerDiv = document.getElementById("outerDiv");
        
        var y1 = event.clientY-GetOffsetTop(outerDiv)+ScrollTop();
		var x1 = event.clientX-GetOffsetLeft(outerDiv)+ScrollLeft();

		var xyPos = GetMapObject(this.id).TransformMousePosToGeoCoord(x1,y1);
		
		GetMapObject(this.id).onmapmousemove(xyPos[0],xyPos[1]);   
		
		
//		if(document.getElementById("idLayerNatur").checked || document.getElementById("idLayerSchutz").checked || document.getElementById("idLayerBio").checked)
//            {
//                var ntp = document.getElementById("idLayerNatur").checked;
//                var np = document.getElementById("idLayerSchutz").checked;
//                var bio = document.getElementById("idLayerBio").checked;
//                
//                
//                window.clearTimeout(MapTimer);
//                MouseKoordX = x1;
//                MouseKoordY = y1;
//                
//                MapTimer = window.setTimeout("CheckToolTipp(" + MouseKoordX + "," + MouseKoordY + "," + ntp +"," + np + "," + bio + ")", 100);
//                document.getElementById("AreaToolTipp").style.visibility = "hidden";
//            }
		
    	var outerDiv = document.getElementById("outerDiv");
		if (GetMapObject(this.id).measureDistanceMode)
		{
			if (GetMapObject(this.id).measureClickNum==1)
			{
				GetMapObject(this.id).measureDistanceClick(event.clientX,event.clientY);
			}
		} else if (GetMapObject(this.id).aufziehmodus)
		{
			var innerDiv = document.getElementById("innerDiv");
			var top1 = 0;//-stripPx(innerDiv.style.top);
			var left1 = 0;//-stripPx(innerDiv.style.left);

			var clickY = -stripPx(outerDiv.offsetTop)+event.clientY;
			var clickX = -stripPx(outerDiv.offsetLeft)+event.clientX;

			var xneu = left1+clickX;
			var yneu = top1+clickY;
			var aufziehDiv = document.getElementById("selectbereich");
			if (GetMapObject(this.id).measureClickNum==0)
			{
				aufziehDiv.style.left=xneu+"px";
				aufziehDiv.style.top=yneu+"px";
			}
			if (GetMapObject(this.id).measureClickNum==1)
			{
				var l = stripPx(aufziehDiv.style.left);
				var t = stripPx(aufziehDiv.style.top);
				var w = xneu - l;
				var h = yneu - t;
				if (h < 0)
				    h = 0;
				if (w < 0)
				    w = 0;
				aufziehDiv.style.width=w+"px";
				aufziehDiv.style.height=h+"px";
			}
		} else {
		    if (GetMapObject(this.id).mouseDown == true)
		    {
		        GetMapObject(this.id).dragging = true;
		    } else {
		        return false;
		    }

		    // Slider-Moves
    		if (GetMapObject(this.id).isDrag == true)
	    	    return false;			
			var innerDiv = document.getElementById("innerDiv");
			if (GetMapObject(this.id).dragging) {
                innerDiv.style.top = parseFloat(GetMapObject(this.id).ktop) + (event.clientY - GetMapObject(this.id).dragStartTop)+"px";
                innerDiv.style.left = parseFloat(GetMapObject(this.id).kleft) + (event.clientX - GetMapObject(this.id).dragStartLeft)+"px";
                GetMapObject(this.id).checkLeftTop(false);
                GetMapObject(this.id).UpdateUebersichtskarte();
			}
		}     
	}

	this.stopMove = function(event)
	{
		if (!event) event = window.event; // für IE
		var a = 1;
		var x1 = event.clientX;
		var y1 = event.clientY;
		var xyPos = GetMapObject(this.id).TransformMousePosToGeoCoord(x1,y1);
		GetMapObject(this.id).onmapmousemove(xyPos[0],xyPos[1]);   
        GetMapObject(this.id).mouseDown=false;
		if (GetMapObject(this.id).measureDistanceMode==true)
		{
		    GetMapObject(this.id).dragging = false;
		    return false;
		} else if (GetMapObject(this.id).aufziehmodus==true)
		{
		    GetMapObject(this.id).dragging = false;
		    return false;
		}
		if (GetMapObject(this.id).dragging == false)
		{
		    var x1 = event.clientX;
		    var y1 = event.clientY;
		    var xyPos = GetMapObject(this.id).TransformMousePosToGeoCoord(x1,y1);
		    GetMapObject(this.id).onmapmouseclick(xyPos[0],xyPos[1],x1,y1);   
		}
		var innerDiv = document.getElementById("innerDiv");
		innerDiv.style.cursor = "";
		GetMapObject(this.id).dragging=false;
		GetMapObject(this.id).CheckTiles();
		document.getElementById("koordinaten").style.display = 'none';
	}
	
	this.startMoveOverview=function(event)
	{
		return false;
	}
	
	this.stopMoveOverview=function(event)
	{
		return false;
	}

	this.processMoveOverview=function(event)
	{
		return false;
	}
	
	this.clickOverview=function(event)
	{
        if(GetMapObject(this.id).m_usingWMSUebersichtskarte==false)
        {
            if (!event) event = window.event;
            var overview = document.getElementById("mapoverview");
            var mtop = event.clientY-stripPx(overview.offsetTop)-stripPx(overview.offsetParent.offsetTop)-stripPx(overview.offsetParent.offsetParent.offsetTop);
            var mleft = event.clientX-stripPx(overview.offsetLeft)-stripPx(overview.offsetParent.offsetLeft)-stripPx(overview.offsetParent.offsetParent.offsetLeft);
            var innerDiv = document.getElementById("innerDiv");
            var x1 = mleft * GetMapObject(this.id).omX + GetMapObject(this.id).oL; 
            var y1 = mtop * GetMapObject(this.id).omY + GetMapObject(this.id).oU; 
            theMap.SetCenter(x1,y1);
            return false;
        }
        else{
		    if (!event) event = window.event;
		    var overview = document.getElementById("mapoverview");
		    var mtop = event.clientY-stripPx(overview.offsetTop)-stripPx(overview.offsetParent.offsetTop)-stripPx(overview.offsetParent.offsetParent.offsetTop);
		    var mleft = event.clientX-stripPx(overview.offsetLeft)-stripPx(overview.offsetParent.offsetLeft)-stripPx(overview.offsetParent.offsetParent.offsetLeft);
		    var innerDiv = document.getElementById("innerDiv");
		    var x1 = mleft * GetMapObject(this.parentElement.parentElement.id).omX + GetMapObject(this.parentElement.parentElement.id).oL; 
		    var y1 = mtop * GetMapObject(this.parentElement.parentElement.id).omY + GetMapObject(this.parentElement.parentElement.id).oU; 
		    GetMapObject(this.parentElement.parentElement.id).SetCenter(x1,y1);
		    return false;
		}
	}

	this.RecalcWMSOverview=function()
	{
        if (this.m_usingWMS && this.m_usingWMSUebersichtskarte)
		{
    		var x1 = this.GetCenter()[0];
    		var y1 = this.GetCenter()[1];
    		
    		var outerdiv = document.getElementById("outerDiv");
            var scale = parseInt(this.meterX*6)*this.scaleFactor;
			if (scale == 0)
			    scale = 5000;
    		scale = this.MatchScale(scale);

			var meterX = this.meterX;
			var meterY = this.meterY;
		    var wmsUrl = this.m_wmsBase;
		    
		    this.omX = meterX*24*2;
		    this.omY = meterY*24*2;
		    this.oL = x1-meterX*24*180;
		    this.oU = y1-meterY*24*120;
		    
		    wmsUrl = wmsUrl.replace(/{h}/g,"120");
		    wmsUrl = wmsUrl.replace(/{w}/g,"180");
		    wmsUrl = wmsUrl.replace(/{x1}/g,(x1-meterX*24*180)+"");
		    wmsUrl = wmsUrl.replace(/{y1}/g,y1+meterY*24*120+"");
		    wmsUrl = wmsUrl.replace(/{x2}/g,(x1+meterX*24*180)+"");
		    wmsUrl = wmsUrl.replace(/{y2}/g,y1-meterY*24*120+"");
		    wmsUrl = wmsUrl.replace(/{s}/g,scale+"");
/*		    var mapoverview = document.getElementById("mapoverview");
		    mapoverview.style.backgroundImage = "url("+wmsUrl+")";*/
		    this.UpdateUebersichtskarte();
		}
		else{
		
		}
	}
	
	this.setInnerDivSize=function(width, height) 
	{
		var innerDiv = document.getElementById("innerDiv");
		innerDiv.style.width = width;
		innerDiv.style.height = height;
	}
	
    
	// SliderContainer
//    this.mouseDownSliderContainer=function(e) {
//        return false;
//    }

//    this.mouseUpSliderContainer=function(e)
//    {
//        var sliderY = stripPx(GetSlider().style.top);
//        return false;
//    }
    
	// Slider
    this.mouseDownSlider=function(e) {
        // var Map = GetMapObject(this.parentElement.parentElement.ID);  // wegen Firefox
        var Map = globalMapObj; // wegen Firefox
        Map.isDrag = true;
        var ty = parseInt(this.style.top);
        if (document.all) {
            Map.yoben = event.clientY + document.body.scrollTop - ty;
        }
        else {
            Map.yoben = e.pageY - ty;
        }
        return false;
    }

    this.mouseUpSlider=function(e)
    {
        // var Map = GetMapObject(this.parentElement.parentElement.ID);  // wegen Firefox
        var Map = globalMapObj; // wegen Firefox
        Map.isDrag = false;
        if (document.all)
        {    
            y = event.clientY + document.body.scrollTop;
        } else {
            y = e.pageY;
        }
        
        y = stripPx(GetSlider().style.top);
        
        newLevel = parseInt(((y-Map.sliderMin)/(Map.maxZoomLevel+1)));
        
        if( ((y-Map.sliderMin) % ((Map.sliderMax-Map.sliderMin)/Map.maxZoomLevel)) > (((Map.sliderMax-Map.sliderMin)/Map.maxZoomLevel)/2) )
            newLevel++;
        if( newLevel > Map.maxZoomLevel )
            newLevel = Map.maxZoomLevel;    
        
        Map.ZoomBySlider(newLevel);  // +1, da ZoomIn() ihn wieder reduziert
        Map.UpdateMasstab();
        
        return false;
    }

    // Slider verändern.
    this.mouseMoveSlider=function(e) {
        // var Map = GetMapObject(this.parentElement.parentElement.ID);  // wegen Firefox
        var Map = globalMapObj; // wegen Firefox
        if (Map.isDrag) {
            if (document.all) {
                y = event.clientY + document.body.scrollTop;
            }
            else {
                y = e.pageY;
            }
            y = Math.max(Map.sliderMin, Math.min(y-Map.yoben,Map.sliderMax));
            newY = parseInt(Map.sliderMin + (((y-Map.sliderMin)/(Map.maxZoomLevel+1)) * ((Map.sliderMax-Map.sliderMin)/Map.maxZoomLevel) ));
            GetSlider().style.top = newY+'px';
        }
        return false;
    }	
    
//    this.AdjustSlider=function()
//    {
//        var sliderPos = this.sliderMin+(this.zoomlevel*(((this.sliderMax-this.sliderMin)/this.maxZoomLevel)));
//        GetSlider().style.top = sliderPos+"px";
//        this.UpdateMasstab();
//        this.RecalcWMSOverview();
//    }

    this.UpdateUebersichtskarte=function()
	{        
		var myArea = document.getElementById("myarea");

		var innerDiv = document.getElementById("innerDiv");
		var mtop=stripPx(innerDiv.style.top);
		var mleft=stripPx(innerDiv.style.left);
		
		var mapOPx = -(mleft);
		var mapOPy = -(mtop);
		var x1 = mapOPx * this.meterX + this.links;   // oben links
		var y1 = mapOPy * this.meterY + this.unten;   // --- "" ---

		mapOPx = -mleft+this.viewportWidth;
		mapOPy = -mtop+this.viewportHeight;
		var x2 = mapOPx * this.meterX + this.links;   // unten links
		var y2 = mapOPy * this.meterY + this.unten;   // --- "" ---

		// xy1/2 enthalten jetzt die Geokoordinaten des sichtbaren Bereiches

		var xpix = (x1 - this.oL) / this.omX;
		var ypix = (y1 - this.oU) / this.omY;
		mtop = this.oH-parseInt(ypix); 
		mleft = this.oW-parseInt(xpix);        

		xpix = (x2 - this.oL) / this.omX;
		ypix = (y2 - this.oU) / this.omY;
		var top1 = this.oH-parseInt(ypix);
		var left1 = this.oW-parseInt(xpix);        

		var oheight = parseInt(mtop)-parseInt(top1);
		var owidth = parseInt(mleft)-parseInt(left1);

		var myBottom = parseInt(mtop)-parseInt(oheight);
		var myLeft = this.oW-(parseInt(mleft));
		myArea.style.bottom = myBottom+"px";
		myArea.style.left = myLeft+"px";

		myArea.style.height = oheight+"px";
		myArea.style.width = owidth+"px";
		
		if ((myLeft < 0) || (myBottom+oheight < 0))
		{
		    this.RecalcWMSOverview();
		}
		if ((myLeft+owidth > 180) || (myBottom+oheight > 120))
		{
		    this.RecalcWMSOverview();
		}
	}
	
	// Setzt einen Punkt und zentriert den Pro
	this.SetFixedPOIAt=function(x,y,bild,pid)
	{
		var pixelPos = this.TransformGeoCoordToInnerDiv(x,y);
		var innerDiv = document.getElementById("innerDiv");
		if (innerDiv != null)
		{
			var img2=document.getElementById(pid);
			if (img2 == null)
			{
				img2 = document.createElement("img");
				innerDiv.appendChild(img2);
			}
			img2.src = bild;
			img2.style.position = "absolute";
			if (pid=="ID1234")
			{
			    img2.style.left = pixelPos[0] + "px";
			    img2.style.top = pixelPos[1] + "px";
			    img2.style.cursor="default";
			    img2.style.zIndex=10000000;
			}
			else{
			    img2.style.left = pixelPos[0]-19 + "px";
			    img2.style.top = pixelPos[1]-25 + "px";
			    img2.style.cursor="pointer";
			    img2.style.zIndex=300;
			}
			if (bild=="ziel.gif")
				img2.alt="Ziel";
			if (bild=="start.gif")
				img2.alt="Startpunkt";
			img2.id=pid;
		}
		
		setRoutingPic();
	}
		
	// Transformiert lokale Koordinaten in Geokoordinaten
	this.TransformGeoCoordToInnerDiv=function(x,y)
	{
		var innerDiv = document.getElementById("innerDiv");
		var x1=x-this.links;
		x1=parseInt(x1/this.meterX);
		var y1=y-this.unten;
		y1=parseInt(y1/this.meterY);
		return new Array(x1,y1);
    }
    
    // Transformiert Geokoordinaten in lokale Koordinaten
    this.TransformInnerDivToGeoCoord=function(x,y)
    {
		var x1=parseInt(x1*this.meterX);
		x1=x+this.links;
		
		var y1=parseInt(y1*this.meterY);
		y1=y+this.unten;
		
		return new Array(x1,y1);
    }		
	
	this.AdressenSuchen=function(argOrt, argStrasseBegriff){//, argHausNr){
	    var url = "./mapcontrol/ajax/GetAdresssuche.aspx?Ort="+escape(argOrt)+"&Strasse="+escape(argStrasseBegriff);//+"&HausNr="+escape(argHausNr);
        loadXMLDoc(url, this);
	}
	
	
	
	this.ShowSuchergebnis=function(arrAdressSuche){
//        //document.getElementById("myPanel").style.visibility="hidden";
//        var divSuche = document.getElementById("SuchergebnisAnzeige");
//        var strTmp = "<div style=\"position:absolute; top:-1px; left:384px; width:10px; border:solid 1px red; vertical-align:middle; text-align:center; cursor:hand; cursor:pointer;\" onclick=\"document.getElementById('SuchergebnisAnzeige').style.visibility='hidden';\">X</div><b>Suchergebnisse</b><br>Ihre Anfrage hat mehrere Ergebnisse zurückgeliefert<br>";
//        var i = 0;
//        var strTmpArt = "";
//        var strStrasseTmp = "";
//        var strKoordX = "";
//        var strKoordY = "";
//        while(i<arrSuche.length){
//            // Gefundene POI
//            if(i==0){
//                strKoordX = arrSuche[i][2];
//                strKoordY = arrSuche[i][3];
//            }
//            if((arrSuche[i][0]=="poi1" || arrSuche[i][0]=="poi2") && strTmpArt!="poi"){
//                strTmpArt = "poi";
//                strTmp+= "<br><i><b>Thematisches Ergebnis</b></i>";
//                strTmp+="<ul style='margin:0px; padding-left:18px;'>";
//            }
//            // Gefundene Strassen und Hausnummern
//            else if((arrSuche[i][0]=="strasse1_hsNr" || arrSuche[i][0]=="strasse2_hsNr") && strTmpArt!="adressen"){
//                if(i!=0)
//                   strTmp += "</ul>";
//                strTmpArt = "adressen";
//                strTmp+= "<br><i><b>Kartographisches Ergebnis:</b></i>";
//                strTmp+="<ul style='margin:0px; padding-left:18px;'>";
//            }
//            else{
//                
//            }
//            
//            // Es werden POI angezeigt
//            if(arrSuche[i][0]=="poi1" || arrSuche[i][0]=="poi2"){
//                strTmp += "<li class='Suchergebnisliste' onclick='theMap.centerSuche(\""+arrSuche[i][2]+"\", \""+arrSuche[i][3]+"\");'>"+arrSuche[i][1]+"</li>";
//            }
//            // Es werden Strassen und Hausnummern angezeigt
//            else if(arrSuche[i][0]=="strasse1_hsNr" || arrSuche[i][0]=="strasse2_hsNr" || arrSuche[i][0]=="ort"){
//                if(strStrasseTmp!=arrSuche[i][4]){
//                    if(strStrasseTmp!="")
//                        strTmp += "</select></td></tr></table></li>";                
//                    if(arrSuche[i][5]!=""){
//                        strTmp += "<li class='Suchergebnisliste'><table width='300' cellpadding='0' cellspacing='0'><tr valign='bottom'><td onclick='theMap.setCenterHausNr(\"selAdresssuche"+i+"\", \""+arrSuche[i][2]+"\", \""+arrSuche[i][3]+"\")'>"+arrSuche[i][4]+"</td><td align='right'>";
//                        strTmp += " <select class='Hausnummersuche' style='width:80px' id='selAdresssuche"+i+"' onchange='theMap.setCenterHausNr(\"selAdresssuche"+i+"\", \"\", \"\");'>";
//                    }
//                    else{ // Keine Hausnummer
//                        strTmp += "<li class='Suchergebnisliste'><table width='300' cellpadding='0' cellspacing='0'><tr valign='bottom'><td onclick='theMap.setCenterHausNr(\"\", \""+arrSuche[i][2]+"\", \""+arrSuche[i][3]+"\")'>"+arrSuche[i][4]+"</td><td align='right'>";
//                    }
//                }
//                if(arrSuche[i][5]!="")
//                    strTmp += "<option value='"+arrSuche[i][2]+";"+arrSuche[i][3]+"'>"+arrSuche[i][5]+"</option>";
//                strStrasseTmp = arrSuche[i][4];
//            }
//            i++;
//        }
//        if(strStrasseTmp!=""){
//            strTmp += "</select></td></tr></table></li></ul>";
//            if(strKoordX != "") // es wurde nur eine einzige Strasse gefunden
//                this.centerSuche(strKoordX, strKoordY);
//        }
//        divSuche.innerHTML = strTmp; // Feld füllen
//        divSuche.style.visibility="visible";
        
//        var divSuche = document.getElementById("SuchergebnisAnzeige");
//        var strTmp = "";//<div style=\"position:absolute; top:1px; height:11px; width:11px; left:215px; background-image:url(/images/x.gif);background-repeat:no-repeat;border:solid 1px white; vertical-align:middle; text-align:left; cursor:hand; cursor:pointer; font-family:arial;\" onclick=\"document.getElementById('SuchergebnisAnzeige').style.visibility='hidden';\"></div><b>Suchergebnisse</b><br>Ihre Anfrage hat mehrere Ergebnisse zurückgeliefert<br><br>";
//        var i = 0;
//        var strTmpArt = "";
//        var strStrasseTmp = "";
//        var strKoordX = "";
//        var strKoordY = "";
//     
//        while(i<arrAdressSuche.length){
//            // Gefundene POI
//            if(i==0){
//                strKoordX = arrAdressSuche[i][0];
//                strKoordY = arrAdressSuche[i][1];
//                centerSuche(strKoordX, strKoordY);
//            }
//            // Gefundene Strassen und Hausnummern
//            if(i%2==0)
//                strTmp += "<li class='Adressstyle' style='background-color:white;' onclick='centerSuche(\""+arrAdressSuche[i][0]+"\",\""+arrAdressSuche[i][1]+"\");'>"+arrAdressSuche[i][3];  
//            else
//                strTmp += "<li class='Adressstyle' onclick='centerSuche(\""+arrAdressSuche[i][0]+"\",\""+arrAdressSuche[i][1]+"\");'>"+arrAdressSuche[i][3];  
////            if(arrSuche[i][1] != "")
////                strTmp = strTmp + " "+arrAdressSuche[i][1]+", "+arrAdressSuche[i][1]+" "+arrAdressSuche[i][3]+"</li>";
////            else
////                strTmp = strTmp + " "+arrAdressSuche[i][2]+" "+arrAdressSuche[i][3]+"</li>";
//            
//            i++;
//        }
//        strTmp += "</il>";
//        divSuche.innerHTML = strTmp; // Feld füllen
//        divSuche.style.visibility="visible";
        var sInnerHTML = "";
        var i = 0;
        var strKoordX = "";
        var strKoordY = "";
        
        while(i< arrAdressSuche.length)
        {      
            if(i==0){
                strKoordX = arrAdressSuche[i][0];
                strKoordY = arrAdressSuche[i][1];
                centerSuche(strKoordX, strKoordY);
            }  
            
            if(i%2==0)
                sInnerHTML += '<li style="background-color:white;" class="Adressstyle" onclick="centerSuche(\''+ arrAdressSuche[i][0]+ '\',\'' + arrAdressSuche[i][1] + '\')">' 
            else
                sInnerHTML += '<li style="background-color:#E3E8EB;" class="Adressstyle" onclick="centerSuche(\''+ arrAdressSuche[i][0]+ '\',\'' + arrAdressSuche[i][1] + '\')">' 
            
            if (arrAdressSuche[i][2]!= null)
                sInnerHTML += arrAdressSuche[i][2] + "&nbsp;&nbsp;&nbsp;";
                
            if (arrAdressSuche[i][3]!= null)
                sInnerHTML += arrAdressSuche[i][3] + "&nbsp;&nbsp;&nbsp;";
                
            if (arrAdressSuche[i][4]!= null)
                sInnerHTML += arrAdressSuche[i][4] + "&nbsp;&nbsp;&nbsp;";
                
            if (arrAdressSuche[i][5]!= null)
                sInnerHTML += arrAdressSuche[i][5];

            
            
            i++;
        }
        sInnerHTML += "</li>";
       
        
        var divSucheAnzeige = document.getElementById("SuchergebnisAnzeige");
        var divSuchErgebnisse = document.getElementById("Suchergebnisse");
        
        divSucheAnzeige.innerHTML = sInnerHTML;
        divSucheAnzeige.style.visibility="visible";
    }
    
    this.setCenterHausNr = function(argValue, argKoordX, argKoordY){
        if(argValue==""){
            this.centerSuche(argKoordX, argKoordY);
        }
        else{
            var strKoord = document.getElementById(argValue).value;
            if(strKoord!=""){
                var arrKoordinaten = strKoord.split(';');
                this.centerSuche(arrKoordinaten[0], arrKoordinaten[1]);
            }
            else{
                this.centerSuche(argKoordX, argKoordY);
            }
        }
    }
    
    this.centerSuche = function(x, y){
        var TempY = 0;
        
        arrSucheGewaehlt = new Array(x, y);
        this.SetCenter(x, y);        
        var punkt = new Array(x,y);
        
        this.setFixedSucheAt(punkt, "pointer.gif");
    }

	// Setzt den Pointer der Suche und zentriert den Browser
	this.setFixedSucheAt = function(punkt, bild)
	{
	    if( ( punkt[0] > 999999) && (punkt[1] > 999999 ) )
	    {
	        var pixelPos = this.TransformGeoCoordToInnerDiv(punkt[0],punkt[1]);
		    var innerDiv = document.getElementById("innerDiv");
		    if (innerDiv != null)
		    {
			    var img2=document.getElementById(bild);
			    if (img2 == null)
			    {
				    img2 = document.createElement("img");
			        img2.id=bild;
				    innerDiv.appendChild(img2);
			    }
			    img2.src = "mapcontrol/images/"+bild;
			    img2.style.position = "absolute";
//			    if (bild=="pointer.gif"){
////			        img2.style.left = pixelPos[0]-10 + "px";
////			        img2.style.top = pixelPos[1]-10 + "px";
//			    }
//			    else{
			        img2.style.left = pixelPos[0]-19 + "px";
			        img2.style.top = pixelPos[1]-25 + "px";
			        //img2.style.cursor="pointer";
//			    }
			    img2.style.visibility="visible";
			    img2.style.zIndex=100000;
			    if (bild=="pointer.gif")
			    {
			        if (!this.bRoutingRun)
			        {
			            img2.style.left = pixelPos[0]- 20 + "px";
			            img2.style.top = pixelPos[1]- 60 + "px";
			            img2.style.zIndex = 50;
			        }
			        else
			        {
			            img2.style.top = pixelPos[1]-50 + "px";
			        }
			        
			        
			        
				}
			    if (bild=="ziel.gif")
			    {
				    img2.alt="Ziel";
				}
			    if (bild=="start.gif")
			    {
				    img2.alt="Startpunkt";
				}
		    }
	    }
	}

	// Holt die POIs zu den gewählten Kategorien
	this.checkTilesPoikatChange = function() {
		window.status = "Loading Tiles..."
		var visibleTiles = this.getVisibleTiles();
		var innerDiv = document.getElementById("innerDiv");
		var visibleTilesMap = {};
		for (i = 0; i < visibleTiles.length; i++) {
			var tileArray = visibleTiles[i];
			var tileName = "?ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&level="+this.zoomlevel;
			//if(strPoiKatGewaehltGesamt==""){
				var div = document.getElementById(tileName);
				if (div) {
					var imgs = div.getElementsByTagName("img");
					while (imgs.length > 1)
					{
					    if (imgs[imgs.length-1].id != "maptile")
						    div.removeChild(imgs[imgs.length-1]);
						else
						    break;
					}
				}
			//}

			visibleTilesMap[tileName] = true;
			var mapx1 = (tileArray[0] * this.tileSize);
			var mapy1 = (tileArray[1] * this.tileSize);
			var mapx2 = (tileArray[0] * this.tileSize)+this.tileSize;
			var mapy2 = (tileArray[1] * this.tileSize)+this.tileSize;
			
			var x1 = parseInt(mapx1 * this.meterX + this.links);
			var y1 = parseInt(mapy1 * this.meterY + this.unten);

			var x2 = parseInt(mapx2 * this.meterX + this.links);
			var y2 = parseInt(mapy2 * this.meterY + this.unten);
			
			
//			var url = "./mapcontrol/ajax/GetPOILayer.aspx?merk="+getMerkliste()+"&x1="+x1+"&y1="+y1+"&x2="+x2+"&y2="+y2+"&ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&level="+this.zoomlevel+"&mx="+parseInt(this.meterX)+"&poiKatIds="+strPoiKatGewaehltGesamt+"&usingWMS="+this.m_usingWMS;
//			if(!usermodified)
//                    url+="&filter="+filterid;
//            url+="&attribute="+Attribute.join(",");

            			
			loadXMLDoc(url, this);
		}

		window.status = "Finished."
		
		bViewer=false; //Fremdpoi deaktivieren, sobald einmal eine Kategorie gewählt wurde.
	}
	
	
	// Holt die POIs zu der gewählten Tour
	this.checkTilesTourChange = function(tourID) {
		/*window.status = "Loading Tiles..."
		var visibleTiles = this.getVisibleTiles();
		var innerDiv = document.getElementById("innerDiv");
		var visibleTilesMap = {};
		for (i = 0; i < visibleTiles.length; i++) {
			var tileArray = visibleTiles[i];
			var tileName = "?ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&level="+this.zoomlevel;
			//if(strPoiKatGewaehltGesamt==""){
				var div = document.getElementById(tileName);
				if (div) {
					var imgs = div.getElementsByTagName("img");
					while (imgs.length > 1)
					{
					    if (imgs[imgs.length-1].id != "maptile")
						    div.removeChild(imgs[imgs.length-1]);
						else
						    break;
					}
				}
			//}

			visibleTilesMap[tileName] = true;
			var mapx1 = (tileArray[0] * this.tileSize);
			var mapy1 = (tileArray[1] * this.tileSize);
			var mapx2 = (tileArray[0] * this.tileSize)+this.tileSize;
			var mapy2 = (tileArray[1] * this.tileSize)+this.tileSize;
			
			var x1 = parseInt(mapx1 * this.meterX + this.links);
			var y1 = parseInt(mapy1 * this.meterY + this.unten);

			var x2 = parseInt(mapx2 * this.meterX + this.links);
			var y2 = parseInt(mapy2 * this.meterY + this.unten);
			
			
			var url = "./mapcontrol/ajax/GetPOILayer.aspx?TourId=" + tourID + "&TourPoiAnzeigen=true" + "&x1="+x1+"&y1="+y1+"&x2="+x2+"&y2="+y2+"&ky=" + tileArray[0] + "&kx=" + tileArray[1]+"&level="+this.zoomlevel+"&mx="+parseInt(this.meterX);
	        loadXMLDoc(url,this);
		}
        
        //var url = "./mapcontrol/ajax/GetPOILayer.aspx?TourId=" + tourID + "&TourPoiAnzeigen=true" + "&mx="+parseInt(this.meterX);
	    //    loadXMLDoc(url,this);
		window.status = "Finished."*/
	}
	
	
	this.setPoiKat = function(argPoiKat, argAusgeklappt){ 
	    usermodified=true;
		var bEinstellung = true;
		strPoiKatGewaehltGesamt = "";
		for(var i = 0; i<this.iAnzahlKategorien; i++){
			if(argPoiKat==arrMenueKat[i][1]){
				if(arrMenueKat[i][4]==true)
					bEinstellung = false;
				else
					bEinstellung = true;
				arrMenueKat[i][4] = bEinstellung;
			}
			// Wenn einen Hauptkategorie ausgeschaltet wurde sollen alle unterkategorien 
			// davon den gleichen Wert erhalten
			if(argPoiKat==arrMenueKat[i][3])
			{
				arrMenueKat[i][4] = bEinstellung;
				setPOICategory(arrMenueKat[i][1],bEinstellung);
			}
			// String für die Sammelicons zusammenfügen, aufgrund dessen die POI neu geladen werden
			if(arrMenueKat[i][4]==true){
				if(strPoiKatGewaehltGesamt=="")
					strPoiKatGewaehltGesamt=arrMenueKat[i][1];
				else
					strPoiKatGewaehltGesamt += ";"+arrMenueKat[i][1];
			}
		}
		this.menueAusklappen(argAusgeklappt);
		this.checkTilesPoikatChange();
	}
	
	
	this.setPoiKatBeiAufruf = function(argPoiKat){
	    
	    //var bEinstellung = true;
		strPoiKatGewaehltGesamt = "";
		for(var i = 0; i<this.iAnzahlKategorien; i++){
			if(argPoiKat==arrMenueKat[i][1]){
				if(arrMenueKat[i][4]==true)
				{
				}
				
				else
				{
				    setPOICategory(argPoiKat,true);
				    // Wenn einen Hauptkategorie ausgeschaltet wurde sollen alle unterkategorien 
			        // davon den gleichen Wert erhalten
			       // if(argPoiKat==arrMenueKat[i][3])
			        //{
				      //  arrMenueKat[i][4] = true;
				       // setPOICategory(arrMenueKat[i][1],true);
			        //}
			        // String für die Sammelicons zusammenfügen, aufgrund dessen die POI neu geladen werden
			         if(strPoiKatGewaehltGesamt=="")
					    strPoiKatGewaehltGesamt=arrMenueKat[i][1];
				    else
					    strPoiKatGewaehltGesamt += ";"+arrMenueKat[i][1];
				    arrMenueKat[i][4] = true;
				    this.menueAusklappen(argPoiKat);
		            this.checkTilesPoikatChange();
				}
			}
			if(arrMenueKat[i][4]==true)
			{
			    if(strPoiKatGewaehltGesamt=="")
				    strPoiKatGewaehltGesamt=arrMenueKat[i][1];
			    else
				    strPoiKatGewaehltGesamt += ";"+arrMenueKat[i][1];
				this.checkTilesPoikatChange();
				this.menueAusklappen(argPoiKat);
			}
		}
	
	}
	
	
	this.setPoiKatBeiAdresssuche = function(argPoiKat){
	
		this.setPoiKatBeiAufruf(argPoiKat);
		this.poiZoom();
	}
	
	
	this.poiZoom = function()
	{
	    //Es wird auf den POI gezoomt(100000)
		if (this.zoomlevel > 3)
		{
		    this.zoomlevel = 4;
		    this.ZoomIn();
		}
	}
	
	this.menueAusklappen = function(argUebergabe){
	        
	        
	        //Aufteilung der Kategorien in "Unterkunft" und "Natur erleben"
            var strMenueTextU = "<table cellpadding='0' cellspacing='0'><colgroup><col width='15'><col width='0'><col width='175'><col width='15'></colgroup>";
            var strMenueTextN = "<table cellpadding='0' cellspacing='0'><colgroup><col width='15'><col width='0'><col width='175'><col width='15'></colgroup>";
            //var strMenueTextN = "<table cellpadding='0' cellspacing='0'><colgroup><col width='15'><col width='210'><col width='15'></colgroup>";
            if(argUebergabe!="nichts"){
                for(var i = 0; i<this.iAnzahlKategorien; i++){
                    
                    //if(arrMenueKat[i][1]=="6" || arrMenueKat[i][1]=="1" || arrMenueKat[i][1]=="52" || arrMenueKat[i][1]=="5" || arrMenueKat[i][1]=="4" || arrMenueKat[i][1]=="7")
                    if(arrMenueKat[i][6]=="1")
                    {
                    var objU = document.getElementById("menueInhalt_Unterkunft");
                    var idx = 0;
                    var strAnzeige = "";
                       // Prüfen ob die gerade aktuelle Kategorie gewaehlt ist
                        if(arrMenueKat[i][4]==true)
                            strAnzeige = "X";
                        else
                            strAnzeige = "";
                        if(arrMenueKat[i][0] == "hauptkat"){
                            if(arrMenueKat[i][3]=="ukat"){
                                
                                //Damit der Baum beim Start Reiseangebote ausgeklappt wird aber nur wenn bViewer auf true ist
                                if (arrMenueKat[i][2] == "Reiseangebote" && bViewer == "true")
                                    argUebergabe = arrMenueKat[i][1];
                                
                                if(argUebergabe==arrMenueKat[i][1])
                                    strMenueTextU+="<tr><td style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\"Ebene1\");'><img src='images/minus.png'></td><td><div class='MenueEbene2' style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\"Ebene1\");'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'></td></div><td><div class='MenueText' style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\"Ebene1\");'>"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";
                                else
                                    strMenueTextU+="<tr><td style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\""+arrMenueKat[i][1]+"\");'><img src='images/plus.png'></td><td><div class='MenueEbene2' style='cursor:hand; cursor:pointer;'  onclick='theMap.menueAusklappen(\""+arrMenueKat[i][1]+"\");'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'></div></td><td><div class='MenueText' style='cursor:hand; cursor:pointer;'  onclick='theMap.menueAusklappen(\""+arrMenueKat[i][1]+"\");'>"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";
                            }
                            else
                                strMenueTextU+="<tr><td></td><td><div class='MenueEbene2'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'>&nbsp;</div></td><td><div class='MenueText'>"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";
                            idx++;
                        }
                        else if(argUebergabe==arrMenueKat[i][3]){
                            strMenueTextU+="<tr><td></td><td><div class='MenueEbene3'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'>&nbsp;</div></td><td><div class='MenueText'>"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiUnterKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";
                            idx++;
                        }
                    }
                    //else
                    else if(arrMenueKat[i][6]=="2")
                    {
                    var objN = document.getElementById("menueInhalt_Natur");
                    var idx = 0;
                    var strAnzeige = "";
                     // Prüfen ob die gerade aktuelle Kategorie gewaehlt ist
                        if(arrMenueKat[i][4]==true)
                            strAnzeige = "X";
                        else
                            strAnzeige = "";
                        if(arrMenueKat[i][0] == "hauptkat"){
                            if(arrMenueKat[i][3]=="ukat"){
                            
                                //Damit der Baum beim Start Reiseangebote ausgeklappt wird aber nur wenn bViewer auf true ist
                                if (arrMenueKat[i][2] == "Reiseangebote" && bViewer == "true")
                                    argUebergabe = arrMenueKat[i][1];
                                
                                if(argUebergabe==arrMenueKat[i][1])
                                {
                                    if(arrMenueKat[i][2] == "Reiseangebote")
                                        strMenueTextN += "<tr><td></td><td><hr></td><td><hr></td><td><hr></td></tr>";  
                                        
                                    strMenueTextN+="<tr><td style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\"Ebene1\");'><img src='images/minus.png'></td><td><div class='MenueEbene2' style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\"Ebene1\");'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'></div></td><td> <div class='MenueText' style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\"Ebene1\");'>&nbsp;"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";
                                }
                                else
                                {
                                    if(arrMenueKat[i][2] == "Reiseangebote")
                                        strMenueTextN += "<tr><td></td><td><hr></td><td><hr></td><td><hr></td></tr>";  
                                    
                                    strMenueTextN+="<tr><td style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\""+arrMenueKat[i][1]+"\");'><img src='images/plus.png'></td><td><div class='MenueEbene2' style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\""+arrMenueKat[i][1]+"\");'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'>&nbsp;</div></td><td><div class='MenueText' style='cursor:hand; cursor:pointer;' onclick='theMap.menueAusklappen(\""+arrMenueKat[i][1]+"\");'>"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";        
                                }
                            }
                            else
                                strMenueTextN+="<tr><td></td><td><div class='MenueEbene2'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'>&nbsp;</div></td><td><div class='MenueText'>"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";
                            idx++;
                        }
                        else if(argUebergabe==arrMenueKat[i][3]){
                            strMenueTextN+="<tr><td></td><td><div class='MenueEbene3'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'>&nbsp;</div></td><td><div class='MenueText'>"+arrMenueKat[i][2]+"</div></td><td><div class='MenuePoiUnterKatGewaehltAnzeige' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+argUebergabe+"\");'>"+strAnzeige+"</div></td></tr>";
                            idx++;
                        }
                    }
                }
            }
            
            
                       
            strMenueTextU += "<tr><td></td><td><hr></td><td><hr></td><td><hr></td></tr>";
            strMenueTextN += "<tr><td></td><td><hr></td><td><hr></td><td><hr></td></tr>";
             
            strMenueTextN += "<tr><td></td><td><div class='MenueEbene2'><img src='mapcontrol/icons/unter5.png' alt='Sammelicon' title='Sammelicon'>&nbsp;</div></td><td><div class='MenueText'>Sammelicon weniger als 5</div></td></tr>";
            strMenueTextN += "<tr><td></td><td><div class='MenueEbene2'><img src='mapcontrol/icons/5-10.png' alt='Sammelicon' title='Sammelicon'>&nbsp;</div></td><td><div class='MenueText'>Sammelicon 5-10</div></td></tr>";
            strMenueTextN += "<tr><td></td><td><div class='MenueEbene2'><img src='mapcontrol/icons/ueber10.png' alt='Sammelicon' title='Sammelicon'>&nbsp;</div></td><td><div class='MenueText'>Sammelicon mehr als 10</div></td></tr>";
         

            if(lightbox==1)            
            document.getElementById('d_kat_content_kategorie').innerHTML=strMenueTextU+"</table>"+strMenueTextN+"</table>";
            
            strMenueTextU += "<tr><td></td><td><div class='MenueEbene2'><img src='mapcontrol/icons/unter5.png' alt='Sammelicon' title='Sammelicon'>&nbsp;</div></td><td><div class='MenueText'>Sammelicon weniger als 5</div></td></tr>";
            strMenueTextU += "<tr><td></td><td><div class='MenueEbene2'><img src='mapcontrol/icons/5-10.png' alt='Sammelicon' title='Sammelicon' >&nbsp;</div></td><td><div class='MenueText'>Sammelicon 5-10</div></td></tr>";
            strMenueTextU += "<tr><td></td><td><div class='MenueEbene2'><img src='mapcontrol/icons/ueber10.png' alt='Sammelicon' title='Sammelicon'>&nbsp;</div></td><td><div class='MenueText'>Sammelicon mehr als 10</div></td></tr>";
              
            
            if (objU != null)
            {
                objU.innerHTML = strMenueTextU+"</table>";
                objU.style.height= "200px";
                //objU.style.visibility="hidden";
                //objU.style.visibility="visible";
                
            }
            
            if (objN != null)
            {
                objN.innerHTML = strMenueTextN+"</table>";
                objN.style.height= "200px";
                //objN.style.visibility="hidden";
                //objN.style.visibility="visible";
                
            }
            
              
       
			if (globalMapObj.MSIE60()){
            
            var div=document.getElementById("ContainerPoiKat");
            var imgs = div.getElementsByTagName("img");
			
			    var i=0;
			    
			    for (i=0;i<imgs.length;i++)
			    {
		            var shim='../js/x.gif';
                    var height = imgs[i].height;
                    var width = imgs[i].width;
                    imgs[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + imgs[i].src + "', sizingMethod='crop')";
                    imgs[i].src = shim;
                    imgs[i].width = width;
		            imgs[i].height = height;		
    		    }
    		}
    
       
            
     }
	
    // argAusgeklappt wird nicht benötigt, ist nur eine Variable um anzuzeigen welcher Teil des Menüs ausgeklappt ist oder nicht (beispiel hamburg)
/*    this.menueAusklappen = function(argAusgeklappt){
    var strMenueTextU = "<table border='0' cellspacing='1' cellpadding='0'><colgroup><col width='20'><col width='20'><col width='200'></colgroup>";
     var strMenueTextN = "<table border='0' cellspacing='1' cellpadding='0'><colgroup><col width='20'><col width='20'><col width='200'></colgroup>";
         for(var i = 0; i<this.iAnzahlKategorien; i++){
            //alert(arrMenueKat[i][2]+","+arrMenueKat[i][3]+","+arrMenueKat[i][4]+","+arrMenueKat[i][5]);
                if(arrMenueKat[i][1]=="6" || arrMenueKat[i][1]=="1" || arrMenueKat[i][1]=="52" || arrMenueKat[i][1]=="5" || arrMenueKat[i][1]=="4" || arrMenueKat[i][1]=="7")
                {
                    var objU = document.getElementById("menueInhalt_Unterkunft");
                    var idx = 0;
                    if(arrMenueKat[i][0] == "hauptkat")
                    {
                        if (i != 0)
                        {
                            strMenueTextU += "<tr><td></td><td height='1'></td></tr>";
                        }
                        if(arrMenueKat[i][4]==true)
                            strMenueTextU += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "' checked></td>";
                        else
                            strMenueTextU += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "'></td>";
                         strMenueTextU += "<td class='icon'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'></td>";
                        strMenueTextU += "<td><a href='javascript:;' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' style='font-size:13px; font-weight:bold; text-decoration:underline; font-family:Arial, Verdana, Sans-Serif; color:black;'>" + arrMenueKat[i][2] + "</a></td></tr>";
                    }
                    else if(arrMenueKat[i][0] == "unterkat")
                    {
                        if(arrMenueKat[i][4]==true)
                          strMenueTextU += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "' checked></td>";
                        else
                          strMenueTextU += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "'></td>";
                        strMenueTextU += "<td class='icon'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][5] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'></td>";
                        strMenueTextU += "<td><a href='javascript:;' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' style='font-size:12px; font-family:Arial, Verdana, Sans-Serif; color:black;'>" + arrMenueKat[i][2] + "</a></td></tr>";
                    }
                }
                else
                {
                    var objN = document.getElementById("menueInhalt_Natur");
                    var idx = 0;
                    if(arrMenueKat[i][0] == "hauptkat")
                    {
                        if (i != 0)
                        {
                            strMenueTextN += "<tr><td></td><td height='1'></td></tr>";
                        }
                        if(arrMenueKat[i][4]==true)
                            strMenueTextN += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "' checked></td>";
                        else
                            strMenueTextN += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "'></td>";
                         strMenueTextN += "<td class='icon'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][1] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'></td>";
                        strMenueTextN += "<td><a href='javascript:;' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' style='font-size:13px; font-weight:bold; text-decoration:underline; font-family:Arial, Verdana, Sans-Serif; color:black;'>" + arrMenueKat[i][2] + "</a></td></tr>";
                    }
                    else if(arrMenueKat[i][0] == "unterkat") 
                    {
                        if(arrMenueKat[i][4]==true)
                          strMenueTextN += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "' checked></td>";
                        else
                          strMenueTextN += "<tr><td class='checkbox'><input type='checkbox' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' name='Pois" + i + "' title='" + arrMenueKat[i][2] + "'></td>";
                        strMenueTextN += "<td class='icon'><img src='Bilder.aspx?icon=1&id=" + arrMenueKat[i][5] + "' alt='" + arrMenueKat[i][1] + "' title='"+arrMenueKat[i][2]+"'></td>";
                        strMenueTextN += "<td><a href='javascript:;' onclick='theMap.setPoiKat(\""+arrMenueKat[i][1]+"\", \""+this.argAusgeklappt+"\");' style='font-size:12px; font-family:Arial, Verdana, Sans-Serif; color:black;'>" + arrMenueKat[i][2] + "</a></td></tr>";
                    }
                }
            }
              objU.innerHTML = strMenueTextU+"</table>";
              objN.innerHTML = strMenueTextN+"</table>";
    }*/
    
    this.updateEichung=function(){}

    this.getPos = function ( e )
    {
        var obj = e;

         var pos = { x: 0, y: 0 };

         if (typeof obj.offsetParent != 'undefined')
         {
           do
           {
             pos.x += obj.offsetLeft;
             pos.y += obj.offsetTop;
             obj = obj.offsetParent;
           }
           while (obj != null);
         }
         return pos;
    }
}

    function showPoiZuKategorie(argPoiKatId){
        loadXMLDoc("./mapcontrol/ajax/GetPoiUebersicht.aspx?PoiKatId="+argPoiKatId+"&SpracheId=0");
    }
    
	function setSmallOverview()
	{
		omX= 271.44056978382326;
		omY=-265.95000331177988;
		oL=3547929;
		oU=5957566;
		var mapoverview = document.getElementById("mapoverview");
		mapoverview.style.backgroundImage="url('images/uebersichtskarte_map.gif')";
		updateUebersichtskarte();
	}

	function setLargeOverview()
	{
		omX= 3592.9629;
		omY=-2907.6212;
		oL=3338362;
		oU=6113751;
		var mapoverview = document.getElementById("mapoverview");
		mapoverview.style.backgroundImage="url('images/uebersichtskarte_map_gross.gif')";
		updateUebersichtskarte();
	}


	
	
	// Setzt den Click-Mode fürs Routing
	//0=nix
	//1=Start
	//2=Ziel
	//3=Zwischenpunkt
	function setRoutingClickMode(mode)
	{
		clickMode = mode;
	}
		
    // wenn in eine Tour geklickt wird
	function tourClicked(event)
    {
    
        // notwendig für IE
        
        if (!event) event = window.event;
        
        var outerDiv = document.getElementById("outerDiv");
        
        var y = event.clientY-GetOffsetTop(outerDiv)+ScrollTop();
		var x = event.clientX-GetOffsetLeft(outerDiv)+ScrollLeft();

        var gc = theMap.TransformMousePosToGeoCoord(x,y);
        if (clickMode == null)
            return;
        switch(clickMode)
        {
            case 1:
                document.getElementById('btnStartpunktRoutingSetzen').style.color='green';
				theMap.startPoint[0]=gc[0];
				theMap.startPoint[1]=gc[1];
                theMap.SetFixedPOIAt(gc[0],gc[1],"./images/start.gif","start.gif");
                break;
            case 2:
                document.getElementById('btnEndpunktRoutingSetzen').style.color='green';
				theMap.endPoint[0]=gc[0];
				theMap.endPoint[1]=gc[1];
                theMap.SetFixedPOIAt(gc[0],gc[1],"./images/ziel.gif","ziel.gif");
                break;
            case 3:
                document.getElementById('btnZwischenpunktSetzen').style.color='green';
                theMap.zwischenpunkte.push(gc);
                theMap.SetFixedPOIAt(gc[0],gc[1],"./images/zwstop.gif","zwstop"+theMap.zwpCounter);
                var liste = document.getElementById("zwliste");
                var oOption = document.createElement("OPTION"); 
                oOption.text=theMap.zwpCounter+". Zwischenpunkt"; 
                oOption.value=gc; 
                oOption.id=theMap.zwpCounter;
                var FolgendeOption = null;
                if (document.all)
                    FolgendeOption = liste.length;
                liste.add(oOption,FolgendeOption);                 
                theMap.zwpCounter++;
            break;
        }
       
        setRoutingPic();
    }
    
    
    function setRoutingPic()
    {
        var sImagePfad = "url('images/routing.jpg')";
        if ((theMap.startPoint[0]!= 0) && (theMap.endPoint[0]!= 0))
            sImagePfad = "url('images/routing_blinkt.gif')";

        document.getElementById("ContainerTournavigation").style.backgroundImage = sImagePfad
    
    }
    
	// Startet das Routing
	function startRouting()
	{
		if (theMap.startPoint[0] != 0)
		{
			var sx = theMap.startPoint[0];
			var sy = theMap.startPoint[1];
			if (theMap.endPoint[0] != 0)        
			{
				
				document.getElementById("ContainerTournavigation").style.backgroundImage = "url('images/routing.jpg')";
				var ex = theMap.endPoint[0];
				var ey = theMap.endPoint[1];
				var url = "GetRoute.aspx?x="+theMap.links+"&y="+theMap.unten+"&w="+theMap.meterX+"&h="+theMap.meterY+"&tourId="+theMap.currentTour+"&sx="+sx+"&sy="+sy+"&ex="+ex+"&ey="+ey;
                for (var i=0;i<theMap.zwischenpunkte.size();i++)
                {
                    url=url+"&zw"+i+"x="+theMap.zwischenpunkte.getAt(i)[0];
                    url=url+"&zw"+i+"y="+theMap.zwischenpunkte.getAt(i)[1];
                }
				loadXMLDoc(url);
			}
			else
			{
				alert("Kein Ziel gesetzt!");
			}
		}
		else
		{
			alert("Kein Startpunkt gesetzt!");
		}
		document.getElementById('btnStartpunktRoutingSetzen').style.color= '#003173';
		document.getElementById('btnZwischenpunktSetzen').style.color= '#003173';
		document.getElementById('btnEndpunktRoutingSetzen').style.color= '#003173';
	}
	
//	// Zeigt den Maßsstab an
//	function setMassstab(){
//        // Variablendeklaration
//        var dimm1 = document.getElementById("dimm1");
//        var dimm2 = document.getElementById("dimm2");
//        var dimm3 = document.getElementById("dimm3");
//        var dimm4 = document.getElementById("dimm4");
//        var dimm5 = document.getElementById("dimm5");
//        var dimm6 = document.getElementById("dimm6");
//        
//        // Alle Dimm-Zwischenstände verstecken (Dimm-Nummerierung ist verkehrt herum)
//        dimm1.style.visibility = "hidden";
//        dimm2.style.visibility = "hidden";
//        dimm3.style.visibility = "hidden";
//        dimm4.style.visibility = "hidden";
//        dimm5.style.visibility = "hidden";
//        dimm6.style.visibility = "hidden";
//        
////        if(zoomlevel==0){
////            document.getElementById("massstab").innerHTML="Stadtplan BHV";
////            dimm6.style.visibility = "visible";
////        }
////        else if(zoomlevel==1){
////            document.getElementById("massstab").innerHTML="1:20.000";
////            dimm5.style.visibility = "visible";
////        }
////        else if(zoomlevel==2){
////            document.getElementById("massstab").innerHTML="1:40.000";
////            dimm4.style.visibility = "visible";
////        }
////        else if(zoomlevel==3){
////            document.getElementById("massstab").innerHTML="1:80.000";
////            dimm3.style.visibility = "visible";
////        }
////        else if(zoomlevel==4){
////            document.getElementById("massstab").innerHTML="1:160.000";
////            dimm2.style.visibility = "visible";
////        }
////        else{
////            document.getElementById("massstab").innerHTML="1:320.000";
////            dimm1.style.visibility = "visible";
////        }
//        //document.getElementById("massstab").innerHTML = "1:"+GetMapObject(this.id).
//        document.getElementById('massstabAnzeige').innerHTML="Maßstab 1:"+this.ScaleMatchTab[this.zoomlevel];
//        setCopyright();        
//        try{
//            setTimeout('theMap.setFixedSucheAt(arrSucheGewaehlt, "pointer.gif")', 100);
//        }
//        catch(Exception){}
//        bMassstabGewaehlt = true;
//	}
	
	function toggleMap(mapname, levels)
	{
//		theMap.center = getCenter();
//		theMap.map = mapname;
//		theMap.maxZoomLevel = levels;
//		theMap.zoomlevel=0;
//		theMap.toggleZoom();
//		theMap.updateEichung();
		//theMap.setMassstab(); // Dreieck verschieben, massstab benennen
	}

	
	function getMerkliste()
	{
	    var merkl = "";
	    for (nI = 0; nI < arrMerkerliste.length; nI++)
	        
	        if (nI==0)
	            merkl= arrMerkerliste[nI][20];
	        else
	            merkl+=merkl + ";" + arrMerkerliste[nI][20];
		
		return merkl;
	}
	
	// Verschiebt das Dreieck über den Zoom-Buttons
	function updateZoomAnzeige(){
		if(zoomlevel==0)
			document.getElementById("zoomAnzeige").style.left= "32px";
		else{
			document.getElementById("zoomAnzeige").style.left= (30 - (zoomlevel*Math.round((30/maxZoomLevel))))+"px";
		}
		
		// Zeigt den Pointer wenn eine Suche ausgeführt wurde
		try{
			if(arrSucheGewaehlt.length==2){
				setTimeout('setFixedSucheAt(arrSucheGewaehlt, "pointer.gif");', 1000);
			}
		}
		catch(Exception){}
	}    
		
	function toggleOverview()
	{
		var uebersichtskarte = document.getElementById("uebersichtskarte");
		if (uebersichtskarte.style.visibility == "visible")
		{
			uebersichtskarte.style.visibility="hidden";
			ButtonKlickHintergrund("bgUebersichtskarte", "images/uebersichtskarte.gif");
			ButtonKlickText("txtUebersichtskarte", "ausklappen");
		} else {
			uebersichtskarte.style.visibility="visible";
			ButtonKlickHintergrund("bgUebersichtskarte", "images/uebersichtskarte_00.gif");
			ButtonKlickText("txtUebersichtskarte", "einklappen");
			updateUebersichtskarte();
		}
	}

	
/*	
	function ShowLegende(){
		var legende = document.getElementById('Legende');
		if(iShowLegende==0 || legende.innerHTML==""){
			var strTmp = "<table><tr><td colspan='2'><b>Legende Highlight-Kategorien</b></td></tr>";
			for(var i = 0; i<theMap.iAnzahlKategorien; i++){
				if(i==0)
					strTmp += "<tr><td><img src='mapcontrol/icons/sammel-poi.gif' width='12px'></td><td>&nbsp;Sammlung mehrerer Highlights</td></tr>";
				if(arrMenueKat[i][3]== "ukat" || arrMenueKat[i][3]=="noUkat"){
					strTmp += "<tr><td><img src='mapcontrol/icons/"+arrMenueKat[i][5]+"' width='12px'></td><td>&nbsp;"+arrMenueKat[i][2]+"</td></tr>";
				}
				else{
					strTmp += "<tr><td><img src='mapcontrol/icons/"+arrMenueKat[i][5]+"' width='12px'></td><td><nobr><i>&nbsp;&nbsp;-&nbsp;&nbsp;"+arrMenueKat[i][2]+"</i></nobr></td></tr>";
				}
			}
			strTmp += "</table>";
			strTmp += "<div style='position:absolute; top:-1px; left:224px; width:10px; border:solid 1px red; vertical-align:middle; text-align:center; cursor:hand; cursor:pointer;' onclick='ShowLegende();'>X</div>";
			legende.innerHTML = strTmp;
			legende.style.visibility="visible";
			iShowLegende=1;
		}
		else if(iShowLegende==1){
			legende.style.visibility="hidden";
			iShowLegende = 2;
		}
		else{
			legende.style.visibility="visible";
			document.getElementById('Merkerliste').style.visibility="hidden";
			ButtonKlick('imgNotizen', 'images/notizen.gif');
			iShowLegende = 1;
		}
			
	}
*/	


	

