
	var mapoperation = 'INITMAP'
	var MapStreamUrl = '../../MapServerClient/Controls/MapStream.aspx?'
	var ImgUrl = '../../MapServerClient/Controls/img/'
	var light = false;
    var identify = false;
    
	function setOp(operation)
	{
		mapoperation = operation;
		document.getElementById("imagemap").innerHTML = "";
		document.onmousemove = null;

		if(operation == 'LIGHT')
		{
		    light=!light;
	        reload();
        }
        
		if(operation == 'IDENTIFY')
		{
			identify = !identify;
		}
        

		document.images['ZOOMIN'].src = ImgUrl+'zoomin.png';
		document.images['ZOOMOUT'].src = ImgUrl+'zoomout.png';
		document.images['ZOOMRECT'].src = ImgUrl+'zoomrect.png';
		document.images['PAN'].src = ImgUrl+'pan.png';
		document.images['IDENTIFY'].src = ImgUrl+'identify.png';
		document.images['EXTEND'].src = ImgUrl+'extend.png';
	    document.images['RELOAD'].src = ImgUrl+'reload.png';
	    document.images['FILTER_RELOAD'].src = ImgUrl+'reload.png';
        document.images['LIGHT'].src = ImgUrl+'sun.gif';
        
        
        if(light==true)
            document.images['LIGHT'].src = ImgUrl+'moon.gif';
	    
		if(operation == 'ZOOMIN')
		{
			document.images['ZOOMIN'].src = ImgUrl+'zoomin_sel.png';
		}
		if(operation == 'ZOOMOUT')
		{
			document.images['ZOOMOUT'].src = ImgUrl+'zoomout_sel.png';
		}

		if(operation == 'ZOOMRECT')
		{
			document.images['ZOOMRECT'].src = ImgUrl+'zoomrect_sel.png';
		}
		
		if(operation == 'PAN')
		{
			document.images['PAN'].src = ImgUrl+'pan_sel.png';
		}
		
		if(identify==true)
		{
			document.images['IDENTIFY'].src = ImgUrl+'identify_sel.png';
			loadImagemap();
		}
        
	}
	
	
    function clickX(ev)
    {
        var img = document.getElementById("imgMap");
        if (document.all) 
        {
            return event.x+img.offsetLeft;
        }
        else
        {
            return ev.layerX+img.offsetLeft;
        }
    }
	
	function clickY(ev)
	{
        var img = document.getElementById("imgMap");
        if (document.all) 
        {
            return event.y+img.offsetTop;
        }
        else
        {
            return ev.layerY+img.offsetTop;
        }
	}
	
	function getLayer()
	{
		var result = "";
		var layer = document.getElementById('ctl00__cphContent_UmnMapControl1_divLayer');
		
		for(var i=0;i<layer.childNodes.length;i++)
		{
			if(layer.childNodes[i].nodeName=='INPUT')
			{
				var input = layer.childNodes[i];
				if(input.checked)
				{
					result = result + layer.childNodes[i].getAttribute("id")+";";
				}
			}
		}
		return result;
	}	

    function setMap(op,x,y,w,h,layer)
    {
   		var habitat = document.getElementById("qryHabitat").value;
        var observer = document.getElementById("qryObserver").value;
        var fromDate = document.getElementById("qryFromDate").value;
        var toDate = document.getElementById("qryToDate").value;
        
        var date = new Date();
		var url = MapStreamUrl+"ACTION="+op+
		                        "&X="+x+
		                        "&Y="+y+
		                        "&WIDTH="+w+
		                        "&HEIGHT="+h+
		                        "&LAYER="+layer+
		                        "&LIGHT="+light+
		                        "&HABITAT="+habitat+
		                        "&OBSERVER="+observer+
		                        "&FROM_DATE="+fromDate+
		                        "&TO_DATE="+toDate+
		                        "&"+date;
		document.images["imgMap"].src = url;
    }
	
	function load(ev,obj){
		var layer = getLayer();
	
	    if(mapoperation == 'IDENTIFY')
	        return;
	
		if(mapoperation=='ZOOMRECT')
		{
			startRubber (ev,obj);
			return;
		}
		
		var posx = 0;
		var posy = 0;
		if(ev!=null)
		{
		    posx = clickX(ev);
		    posy = clickY(ev);
        }
		setMap(mapoperation,posx,posy,0,0,layer);
	}
	
	function loadImagemap()
	{
	    var date = new Date();
        var imagemap = MapStreamUrl+"ACTION=IMAGEMAP&"+date;
	    loadXMLDoc(imagemap,"imagemap");
	}
	
     var rubberX,rubberY,rubberWidth,rubberHeight;

     function startRubber (evt,obj) {

        var r = document.getElementById('rubberBand');

	    if(document.onmousemove!=null)
	    {
		    stopRubber(evt);
		    return;
	    }

        rubberX = clickX(evt);
        rubberY = clickY(evt);

        r.style.width = 0;
        r.style.height = 0;
        r.style.left = rubberX + 'px';
        r.style.top = (rubberY-400) + 'px';
        r.style.visibility = 'visible';
 
        document.onmousemove = moveRubber;
     }
 
     function moveRubber (evt) 
     {
        
        var r = document.getElementById('rubberBand');
        var x = clickX(evt);
        rubberWidth = x - rubberX;
	    rubberHeight = rubberWidth * 2 / 3;
        r.style.width = rubberWidth;
        r.style.height = rubberHeight;
     }

     function stopRubber (evt) {

       document.onmousemove = null;
       var r = document.getElementById('rubberBand');
       r.style.visibility = 'hidden';
       var layer = getLayer();
       var date = new Date();
       setMap(mapoperation,rubberX,rubberY,rubberWidth,rubberHeight,layer);
     }
	
	function refreshRefMap()
	{
		var date = new Date();
		document.images["refMap"].src = "Controls/MapStream.aspx?ACTION=REFMAP&"+date;
	}
	
	function fullextend()
	{
		var date = new Date();
		var layer = getLayer();
		setMap("FULLEXTENT",0,0,0,0,layer);
	}

	function reload()
	{
		var date = new Date();
		var layer = getLayer();
		setMap("RELOAD",0,0,0,0,layer);
	}

	
	var req;
    var dest;
	function loadXMLDoc(url,d) {
		req = false;
		dest = d;
		// branch for native XMLHttpRequest object
		if(window.XMLHttpRequest && !(window.ActiveXObject)) 
		{
    		try {
				req = new XMLHttpRequest();
			} catch(e) {
				req = false;
			}
		// branch for IE/Windows ActiveX version
		} 
		else if(window.ActiveXObject) 
		{
       		try 
       		{
        		req = new ActiveXObject("Msxml2.XMLHTTP");
      		} 
      		catch(e) 
      		{
        		try 
        		{
          			req = new ActiveXObject("Microsoft.XMLHTTP");
        		}
        		catch(e) 
        		{
          			req = false;
        		}
			}
		}
		
		if(req) 
		{
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send("");
		}
	}
	
	function processReqChange() {
		// only if req shows "loaded"
		if (req.readyState == 4) {
			// only if "OK"
			if (req.status == 200) {
			    //alert(req.responseText);
				document.getElementById(dest).innerHTML=req.responseText;
			} else {
				alert("There was a problem retrieving the XML data:\n" + req.statusText);
			}
		}
	}

    function showQuery(ev,id) {
      hideTooltip();
      document.getElementById("divQuery").style.display = "block";
      document.getElementById("divQuery").innerHTML="Lade Daten ...";
	  var url = MapStreamUrl+"ACTION=IDENTIFY&ID="+id;
	  loadXMLDoc(url,"divQuery");
    }


    function showTooltip(ev,id) {
      var tooltip = document.getElementById("tooltip");
      if(tooltip.style.display == "block") return;
      document.getElementById("tooltip").innerHTML="Lade Daten ...";
      x = clickX(ev);
      y = clickY(ev);
      if (tooltip != null) {
          tooltip.style.left = (x + 20) + "px";
          tooltip.style.top = (y + 20) + "px";
      }
      
	  var url = MapStreamUrl+"ACTION=IDENTIFY&ID="+id+"&SHORTRESULT=true";
	  loadXMLDoc(url,"tooltip");
      //alert(tooltip.innerHtml);
      tooltip.style.display = "block";
    }

      function hideTooltip() {
        try {
          document.getElementById("tooltip").style.display = "none";
        } catch (error) 
        { 
            error=null; 
        }
      }
      
      
      function onChangeYear()
      {
        
        var index = document.getElementById('_selYear').selectedIndex;        
        var selectedYear = document.getElementById('_selYear').options[index].value;                 
               
        if (selectedYear == '' || selectedYear == 'alle' || selectedYear == '<2007')
        {
            if (selectedYear == '<2007')
            {
                document.getElementById("qryFromDate").value = '';
                document.getElementById("qryToDate").value = '2006-12-31';
            }
            else
            {
                document.getElementById("qryFromDate").value = '';
                document.getElementById("qryToDate").value = '';
            }
        }
        else        
        {   
            var dateFrom = new Date("January 1, "+selectedYear+" 00:00:00");            
            var dateTo = new Date("December 31, "+selectedYear+" 00:00:00");    
            
            var dd = dateFrom.getDate();
            var mm = dateFrom.getMonth()+1;//January is 0!
            var yyyy = dateFrom.getFullYear();
            
            document.getElementById("qryFromDate").value = yyyy+'-'+mm+'-'+dd;
            
            dd = dateTo.getDate();
            mm = dateTo.getMonth()+1;//January is 0!
            yyyy = dateTo.getFullYear();
            
            document.getElementById("qryToDate").value = yyyy+'-'+mm+'-'+dd;            
        }
      }
      