﻿ var infowindow;
        var map;
        var markersArray = [];
        var thBZHtop;
        var thGBtop;
        var thBZHs;
        var thGBs;
        var thBZHbottom;
        var thGBbottom;
        
        function initialize() {
            var myLatlng = new google.maps.LatLng(51.5190194, 9.6098350);
            var myOptions = {
                zoom: 6,
                center: myLatlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                mapTypeControlOptions: {
                          mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE]
                                         }
            }
            map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
            google.maps.event.addListener(map, 'dragend', function() { setTimeout(moveTo, 500); });
            //google.maps.event.addListener(map, 'bounds_changed', function() { setTimeout(moveTo, 500); });
            //google.maps.event.addListener(map, 'center_changed', function() { setTimeout(moveTo, 500); });
            google.maps.event.addListener(map, 'zoom_changed', function() { setTimeout(moveTo, 500); });
        }

        function clearOverlays() {
            if (markersArray) {
                for (i in markersArray) {
                    markersArray[i].setMap(null);
                }
            }
            markersArray = new Array;
            thBZHtop='<table class="thTbl"><tr><td colspan="2" class="thTH1">Bezirkshandlung&nbsp;<img src="/maps/mapBZH_2.png"/></td></tr><tr><td class="thTH2">Name</td><td class="thTH2">Ort</td></tr>';
            thGBtop='<table class="thTbl"><tr><td colspan="2" class="thTH1">Gruppenberaterin&nbsp;<img src="/maps/mapGB_2.png"/></td></tr><tr><td class="thTH2">Name</td><td class="thTH2">Ort</td></tr>';
            thSFtop='<table class="thTbl"><tr><td colspan="2" class="thTH1">Beraterin&nbsp;<img src="/maps/mapGB_2.png"/></td></tr><tr><td class="thTH2">Name</td><td class="thTH2">Ort</td></tr>';
            thBZHs='';
            thGBs='';
            thSFs='';
            thBZHbottom='</table>';
            thGBbottom='</table>';
            thSFbottom='</table>';
     }

        function moveTo() {
            clearOverlays();
            map.mapTypes.roadmap.minZoom = 8;
            map.mapTypes.satellite.minZoom = 8;
            
            var bounds = map.getBounds();
            var North = bounds.getNorthEast().lat()
            var East = bounds.getNorthEast().lng()
            var South = bounds.getSouthWest().lat()
            var West = bounds.getSouthWest().lng()
            var dataUrl = '/ws/map/getmarkers.aspx?north=' + North + '&south=' + South + '&east=' + East + '&west=' + West
            downloadUrl(dataUrl, function(data) {
                var markers = data.documentElement.getElementsByTagName("marker");
                for (var i = 0; i < markers.length; i++) {
                    var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
                    var marker = createMarker(markers[i].getAttribute("name"), latlng, markers[i].getAttribute("username"), markers[i].getAttribute("usertype"), markers[i].getAttribute("zip") + ' ' + markers[i].getAttribute("city"));
                }
                var Inner_Text = thBZHtop + thBZHs + thBZHbottom + thGBtop + thGBs + thGBbottom;
                if (thSFs!=''){
                Inner_Text += thSFtop + thSFs + thSFbottom;
                }
                document.getElementById("DivHits").innerHTML = Inner_Text;
            });
        }

        function createMarker(name, latlng, username, usertype, adresse) {
            var image = '/maps/mapBZH.png';
            var linkAdresse = '' + username;
            var myinnerHtml = '<div class="gglInfo"><a href="' + linkAdresse + '" class="gglInfo">' + name + '</a><br /><br />' + adresse + '</div>';
            if (usertype == 'UM') {
                image = '/maps/mapGB.png';
                thGBs +='<tr><td class="thTD1">' + name + '</td><td class="thTD2"><a href="' + linkAdresse + '" class="thTD2">' + adresse + '</a></td></tr>';
            } else
            {
             if (usertype == 'SF') {
                image = '/maps/mapGB.png';
                thSFs +='<tr><td class="thTD1">' + name + '</td><td class="thTD2"><a href="' + linkAdresse + '" class="thTD2">' + adresse + '</a></td></tr>';
            } else
            {
            thBZHs +='<tr><td class="thTD1">' + name + '</td><td class="thTD2"><a href="' + linkAdresse + '" class="thTD2">' + adresse + '</a></td></tr>';
            }};
            var marker = new google.maps.Marker({ position: latlng, map: map, icon: image });
            markersArray.push(marker);
            google.maps.event.addListener(marker, "mouseover", function() {
                if (infowindow) infowindow.close();
                infowindow = new google.maps.InfoWindow({ content: myinnerHtml });
                infowindow.open(map, marker);
            });
            google.maps.event.addListener(marker, "click", function() {
                top.location.href=linkAdresse;
            });
            
            return marker;
        }

        function SucheStandort() {
            var address = document.getElementById("Suche").value + ' Deutschland';
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({ address: address }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    searchLocationsNear(results[0].geometry.location);
                } else {
                    alert(address + ' konnte nicht gefunden werden.');
                }
            });
        }
        
        function SucheDE(address) {
            address = address + ' Deutschland';
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode({ address: address }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                    searchLocationsNear(results[0].geometry.location);
                } else {
                    alert(address + ' konnte nicht gefunden werden.');
                }
            });
        }

        function searchLocationsNear(center) {
            clearOverlays();
            var bounds = new google.maps.LatLngBounds();
            var searchUrl = '/ws/map/getmarkers.aspx?lat=' + center.lat() + '&lng=' + center.lng() + '&r=10';
            downloadUrl(searchUrl, function(data) {
                var markers = data.documentElement.getElementsByTagName("marker");
                for (var i = 0; i < markers.length; i++) {
                    var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));

                    var marker = createMarker(markers[i].getAttribute("name"), latlng, markers[i].getAttribute("username"), markers[i].getAttribute("usertype"), markers[i].getAttribute("zip") + ' ' + markers[i].getAttribute("city"));
                    var extLatLng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("extLat")), parseFloat(markers[i].getAttribute("extLng")));
                    if (extLatLng.lat()!=0){
                      bounds.extend(extLatLng);
                    }
                }
                var Inner_Text = thBZHtop + thBZHs + thBZHbottom + thGBtop + thGBs + thGBbottom;
                if (thSFs!=''){
                Inner_Text += thSFtop + thSFs + thSFbottom;
                }
                document.getElementById("DivHits").innerHTML =  Inner_Text ;
                map.fitBounds(bounds);
                map.panTo(center);
            });
        }

