﻿MapHelper = function () {
    this.MainMenuContainer = null;
    this.MainMenuItems = null;
    this.BottomMarginPerSubMenu = 5;
    this.CurrentlyOpenedSubmenu = null;
    this.MapTypeLinks = null;
    this.MapContainer = null;
    this.LocalSearch = null;
    this.Categories = null;
    this.MarkerRequestInProcess = false;
    this.LastQueriedKeywordIdx = -1;
    this.LastQueriedCategory = null;
    this.DefaultZoomLevel = 16;
    this.MapContainerDIV = null;

    this.MarkerTypes = {};
    this.ICON_TYPE_HOME = -1;
    this.ICON_TYPE_DEFAULT = 0;
    this.ICON_TYPE_BLACK = 1;
    this.ICON_TYPE_BLUE = 2;
    this.ICON_TYPE_BROWN = 3;
    this.ICON_TYPE_GREEN = 4;
    this.ICON_TYPE_ORANGE = 5;
    this.ICON_TYPE_PINK = 6;
    this.ICON_TYPE_RED = 7;
    this.ICON_TYPE_VIOLET = 8;
    this.ICON_TYPE_WHITE = 9;
    this.ExternalContainer = null;
}

MapHelper.prototype = {
    ShowMapContainer: function () {
        var realtyId = requestHelper.GetCurrentRealtyId();
        var mapContainers = $j("#MapIframeContainer");
        var mapContainer = null;

        if (mapContainers && (mapContainers.length == 0)) {
            mapContainer = document.createElement("div");
            mapContainer.style.position = "absolute";
            mapContainer.style.display = "none";
            mapContainer.style.top = "157px";
            mapContainer.style.left = "0px";
            mapContainer.style.width = "980px";
            mapContainer.style.height = "600px";
            mapContainer.style.overflow = "hidden";
            mapContainer.style.backgroundColor = "#F0E9E3";
            mapContainer.style.borderBottom = "1px solid #000000";
            mapContainer.style.borderRight = "1px solid #000000";

            var mapIframe = document.createElement("iframe");
            mapIframe.style.border = "0px none";
            mapIframe.frameBorder = "0";
            mapIframe.scrolling = "no";
            mapIframe.style.width = "100%";
            mapIframe.style.height = "100%";
            mapIframe.src = "/Search/EnvironmentMap.aspx?id=" + realtyId;
            mapContainer.appendChild(mapIframe);

            mapHelper.MapContainerDIV = mapContainer;
            document.body.appendChild(mapContainer);
        }
        else {
            mapContainer = mapContainers.get(0);
        }

        if (mapContainer) {
            $j(mapContainer).stop().css("height", "0px").animate({ "height": 555 }, 500, mapHelper.ShowMapContainerCallback);
        }
    },

    ShowMapContainerCallback: function () {
        // Hide telerik controls in all browsers except IE (IE does it the right way :-D).
        // [MB]
        if (Sys.Browser.agent != Sys.Browser.InternetExplorer) {
            $j(".RadSlider_TelerikCustom").css("display", "none");
        }
    },

    ShowMap: function (addrLat, addrLong, isFuzzy) {
        // Creating marker types
        // [MB]
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_HOME] = mapHelper.CreateHomeMarker();
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_BLACK] = mapHelper.CreateMarker("Black", 13, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_BLUE] = mapHelper.CreateMarker("Blue", 14, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_BROWN] = mapHelper.CreateMarker("Brown", 14, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_GREEN] = mapHelper.CreateMarker("Green", 13, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_ORANGE] = mapHelper.CreateMarker("Orange", 14, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_PINK] = mapHelper.CreateMarker("Pink", 14, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_RED] = mapHelper.CreateMarker("Red", 13, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_VIOLET] = mapHelper.CreateMarker("Violet", 14, 16);
        mapHelper.MarkerTypes[mapHelper.ICON_TYPE_WHITE] = mapHelper.CreateMarker("White", 13, 16);

        // Parsing categories.
        // [MB]

        if (mapHelper.Categories) {

            var mapMenuContainer = $j("#MapMainMenuContainer");
            if (mapMenuContainer && (mapMenuContainer.length > 0)) {
                mapHelper.MainMenuContainer = mapMenuContainer[0];

                mapMainMenuHTML = "<table cellpadding=\"0\" cellspacing=\"0\">";
                for (var catIdx in mapHelper.Categories) {
                    var cat = mapHelper.Categories[catIdx];

                    mapMainMenuHTML += "<tr>";
                    mapMainMenuHTML += "<td style=\"padding:15px 0px 0px 5px;\"><img src=\"" + mapHelper.MarkerTypes[cat.MarkerType].icon.circle + "\" alt=\"" + cat.Name + "\"></td>";
                    mapMainMenuHTML += "<td><div class=\"MapMainMenuItem MapMenuItem\" rel=\"" + catIdx + "\">" + cat.Name + "</div></td>";
                    mapMainMenuHTML += "<tr>";
                }
                mapMainMenuHTML += "</table>";
                mapHelper.MainMenuContainer.innerHTML = mapMainMenuHTML;

                $j(".MapMenuItem").click(function (e) {
                    $j(this).toggleClass("Checked", !$j(this).hasClass("Checked"));
                    var category = $j(this).attr("rel");

                    if ($j(this).hasClass("Checked")) {
                        mapHelper.CustomClick(category);
                    }
                    else {
                        mapHelper.Categories[category].ShouldBeDisplayed = false;
                        mapHelper.RemoveResultsFromMap(category);
                    }
                });
            }
        }

        // Map type links for view change.
        // [MB]
        mapHelper.MapTypeLinks = $j(".MapTypeLink");
        mapHelper.MapTypeLinks.click(function (e) {
            mapHelper.SelectMapType($j(this).attr("id"));
        });


        if (GBrowserIsCompatible()) {
            mapHelper.MapContainer = new GMap2(document.getElementById("MapContainerDIV"));

            var centerCoords = new GLatLng(addrLat, addrLong);
            mapHelper.SetCenter(centerCoords, mapHelper.DefaultZoomLevel);
            if (!isFuzzy)
                mapHelper.SetMarker(centerCoords, null, mapHelper.MarkerTypes[mapHelper.ICON_TYPE_HOME]);
            mapHelper.LocalSearch = new GlocalSearch();
            // mapHelper.LocalSearch.setCenterPoint(mapHelper.MapContainer.getCenter());
            mapHelper.LocalSearch.setResultSetSize(GSearch.LARGE_RESULTSET);
            mapHelper.LocalSearch.setNoHtmlGeneration();
        }
    },

    GetMapCenter: function () {
        return mapHelper.MapContainer.getCenter();
    },

    Close: function () {
        if (mapHelper.MapContainerDIV)
            document.body.removeChild(mapHelper.MapContainerDIV);

        if (Sys.Browser.agent != Sys.Browser.InternetExplorer) {
            $j(".RadSlider_TelerikCustom").css("display", "block");
        }
    },

    _CreateMarkerObject: function (markerPath, width, height) {
        var markerObject = null;

        if (google.maps.MarkerImage) {
            markerObject = new google.maps.MarkerImage(markerPath);
            markerObject.iconSize = new google.maps.Size(width, height);
            markerObject.iconAnchor = new google.maps.Point(6, 30);
        }
        else {
            markerObject = new GIcon(G_DEFAULT_ICON);
            markerObject.iconSize = new GSize(width, height);
            markerObject.iconAnchor = new GPoint(6, 30);
        }

        return markerObject;
    },

    CreateCustomMarker: function (markerPath, width, height) {
        var iconTypeBlue = mapHelper._CreateMarkerObject(markerPath, width, height);

        iconTypeBlue.image = markerPath;
        iconTypeBlue.circle = markerPath;
        iconTypeBlue.shadow = "";

        return { icon: iconTypeBlue };
    },

    CreateMarker: function (colorName, width, height) {
        var markerPath = "/Images/GMapMarker/Pin" + colorName + ".png";
        var iconTypeBlue = mapHelper._CreateMarkerObject(markerPath, width, height);

        iconTypeBlue.image = markerPath;
        iconTypeBlue.circle = "/Images/GMapMarker/Circle" + colorName + ".gif";
        iconTypeBlue.shadow = "";

        return { icon: iconTypeBlue };
    },

    CreateHomeMarker: function () {
        var iconTypeBlue = mapHelper._CreateMarkerObject(null, 26, 26);

        iconTypeBlue.image = "/Images/GMapMarker/Home.png";
        iconTypeBlue.circle = "/Images/Spacer.gif";
        iconTypeBlue.shadow = "";

        return { icon: iconTypeBlue };
    },

    GetMarkerType: function (markerConstant) {
        if (mapHelper.MarkerTypes[markerConstant]) {
            return mapHelper.MarkerTypes[markerConstant];
        }

        return null;
    },

    CustomClick: function (category) {
        if (category && mapHelper.Categories[category]) {
            mapHelper.Categories[category].ShouldBeDisplayed = true;

            for (var keywordIdx = 0; keywordIdx < mapHelper.Categories[category].Keywords.length; keywordIdx++) {
                var results = mapHelper.Categories[category].Keywords[keywordIdx].Results;

                if (results) {
                    mapHelper.Categories[category].Keywords[keywordIdx].Markers = mapHelper.DisplayResultsOnMap(results, mapHelper.GetMarkerType(mapHelper.Categories[category].MarkerType));
                }
                else {
                    mapHelper.AddToQueue(category, keywordIdx);
                }
            }

            mapHelper.ProcessQueue();
        }
    },

    AddToQueue: function (category, keywordIdx) {
        if (category && (keywordIdx >= 0)) {
            mapHelper.Categories[category].Keywords[keywordIdx].ShouldBeQueried = true;
        }
    },

    ProcessQueue: function () {
        if (mapHelper.Categories) {
            // Search for a keyword to be queried.
            // [MB]
            for (var category in mapHelper.Categories) {
                for (var keywordIdx in mapHelper.Categories[category].Keywords) {
                    // If we find an open one, start to process it and break the loop.
                    // [MB]
                    if (mapHelper.Categories[category].Keywords[keywordIdx].ShouldBeQueried) {
                        mapHelper.Categories[category].Keywords[keywordIdx].ShouldBeQueried = false;
                        mapHelper.SearchForKeywordMarker(category, keywordIdx);
                        break;
                    }
                }
            }
        }
    },

    GetMapContainer: function () {
        if (mapHelper.ExternalContainer)
            return mapHelper.ExternalContainer;

        return mapHelper.MapContainer;
    },

    // Pass a single keyword to the queue.
    // [MB]
    SearchForKeywordMarker: function (category, keywordIdx) {
        if (mapHelper.LocalSearch && !mapHelper.MarkerRequestInProcess) {
            var keyword = mapHelper.Categories[category].Keywords[keywordIdx].Value;
            mapHelper.LocalSearch.setCenterPoint(mapHelper.GetMapContainer().getCenter());
            mapHelper.LocalSearch.setSearchCompleteCallback(null, mapHelper.SearchCallback);

            mapHelper.MarkerRequestInProcess = true;
            mapHelper.DisplayStatus(keyword);

            mapHelper.LastQueriedCategory = category;
            mapHelper.LastQueriedKeywordIdx = keywordIdx;
            mapHelper.LocalSearch.execute("category: " + keyword);
        }
    },

    // Display the markers for the processed keyword.
    // [MB]
    SearchCallback: function () {
        if (mapHelper.LocalSearch.results && (mapHelper.LocalSearch.results.length >= 1)) {

            // Store found results.
            // [MB]
            mapHelper.Categories[mapHelper.LastQueriedCategory].Keywords[mapHelper.LastQueriedKeywordIdx].Results = mapHelper.LocalSearch.results;

            // Display found results.
            // [MB]
            if (mapHelper.Categories[mapHelper.LastQueriedCategory].ShouldBeDisplayed) {
                mapHelper.Categories[mapHelper.LastQueriedCategory].Keywords[mapHelper.LastQueriedKeywordIdx].Markers = mapHelper.DisplayResultsOnMap(mapHelper.LocalSearch.results, mapHelper.GetMarkerType(mapHelper.Categories[mapHelper.LastQueriedCategory].MarkerType));
            }
        }

        // After response has been handled, continue with the next keyword.
        // [MB]
        mapHelper.MarkerRequestInProcess = false;
        mapHelper.DisplayStatus("");
        mapHelper.ProcessQueue();
    },

    // Display results on map.
    // [MB]
    DisplayResultsOnMap: function (results, markerType) {
        var generatedMarkers = [];

        for (var resultNum = 0; resultNum < results.length; resultNum++) {
            var resultItem = results[resultNum];

            if (resultItem) {
                var centerCoords = null;

                if (google.maps.LatLng) {
                    centerCoords = new google.maps.LatLng(resultItem.lat, resultItem.lng);
                }
                else {
                    centerCoords = new GLatLng(resultItem.lat, resultItem.lng);
                }

                // Build onclick bubble HTML.
                // [MB]
                var markerHTML = "<div style=\"text-align:left;\">";
                markerHTML += "<div style=\"font-weight:bolder; padding-bottom:6px;\">" + resultItem.titleNoFormatting + "</div>";
                for (var line = 0; line < resultItem.addressLines.length; line++) {
                    markerHTML += resultItem.addressLines[line] + "<br />";
                }
                markerHTML += "</div>";

                var marker = mapHelper.SetMarker(centerCoords, markerHTML, markerType);
                generatedMarkers[generatedMarkers.length] = marker;
            }
        }

        return generatedMarkers;
    },

    DisplayStatus: function (keyword) {
        var statusLabel = $j("#LbCurrentlySearching");

        if (statusLabel.length > 0)
            statusLabel.html(keyword);
    },

    SetCenter: function (newCenter, newZoomLevel) {
        mapHelper.CurrentCenter = newCenter;
        mapHelper.CurrentZoomLevel = newZoomLevel;

        mapHelper.MapContainer.setCenter(mapHelper.CurrentCenter, mapHelper.CurrentZoomLevel);
    },

    RemoveResultsFromMap: function (category) {
        for (var keywordIdx in mapHelper.Categories[category].Keywords) {
            for (var markerIdx in mapHelper.Categories[category].Keywords[keywordIdx].Markers) {
                mapHelper.RemoveMarker(mapHelper.Categories[category].Keywords[keywordIdx].Markers[markerIdx]);
            }
        }
    },

    RemoveMarker: function (marker) {
        try {
            if (marker.setMap) {
                marker.setMap(null)
            }
            else {
                mapHelper.GetMapContainer().removeOverlay(marker);
            }
        }
        catch (ex) {
        }
    },

    SetMarker: function (point, text, markerOptions) {
        var marker = null;

        var lat = 0;
        var lang = 0;

        if (point.first) {
            lat = point.first().geometry.location.lat();
            lang = point.first().geometry.location.lng();
        }
        else if (point.za) {
            lat = point.za;
            lang = point.Ba;
        }
        else if (point.lat) {
            lat = point.lat();
            lang = point.lng();
        }
        else {
            lat = point.x;
            lang = point.y;
        }

        markerOptions.position = new google.maps.LatLng(lat, lang);
        markerOptions.map = mapHelper.GetMapContainer();
        marker = new google.maps.Marker(markerOptions);

        if (mapHelper.GetMapContainer().addOverlay) {
            marker = new GMarker(point, markerOptions);

            if (text)
                GEvent.addListener(marker, "click", function () { marker.openInfoWindowHtml(text); });

            mapHelper.GetMapContainer().addOverlay(marker);
        }
        else if (text) {
            google.maps.event.addListener(marker, 'click', function () {
                var infowindow = new google.maps.InfoWindow({ content: text });
                infowindow.open(mapHelper.GetMapContainer(), marker);
            });
        }


        return marker;
    },

    ZoomOut: function () {
        var currentZoom = parseInt(mapHelper.CurrentZoomLevel);
        if (currentZoom > 0)
            currentZoom--;

        mapHelper.SetCenter(mapHelper.CurrentCenter, currentZoom);
    },

    ZoomIn: function () {
        var currentZoom = parseInt(mapHelper.CurrentZoomLevel);
        if (currentZoom < 20)
            currentZoom++;

        mapHelper.SetCenter(mapHelper.CurrentCenter, currentZoom);
    },

    OpenSubmenu: function (idToOpen) {
        var submenuToOpen = mapHelper.Submenus[idToOpen];

        if (submenuToOpen) {
            if (mapHelper.CurrentlyOpenedSubmenu)
                mapHelper.CloseSubmenu(mapHelper.CurrentlyOpenedSubmenu);

            mapHelper.CurrentlyOpenedSubmenu = idToOpen;
            $j(submenuToOpen).css("height", 0).css("display", "block").stop().animate({ "height": ((submenuToOpen.SubItems.length * 23) + mapHelper.BottomMarginPerSubMenu) }, 500);
        }
    },

    CloseSubmenu: function (idToClose) {
        var submenuToClose = mapHelper.Submenus[idToClose];

        if (submenuToClose) {
            $j(submenuToClose).stop().animate({ "height": 0 }, 500, mapHelper.HideClosedSubmenus);
        }
    },

    HideClosedSubmenus: function () {
        for (var subMenuId in mapHelper.Submenus) {
            var subMenu = mapHelper.Submenus[subMenuId];

            if (subMenu && subMenu.offsetHeight < 10) {
                $j(subMenu).css("display", "none");
            }
        }
    },

    SelectMapType: function (idOfTypeToSelect) {
        mapHelper.MapTypeLinks.removeClass("Active");
        $j("#" + idOfTypeToSelect).addClass("Active");

        switch (idOfTypeToSelect) {
            case "MapTypeMap":
                mapHelper.MapContainer.setMapType(G_NORMAL_MAP);
                break;
            case "MapTypeSatellite":
                mapHelper.MapContainer.setMapType(G_SATELLITE_MAP);
                break;
            case "MapTypeHybrid":
                mapHelper.MapContainer.setMapType(G_HYBRID_MAP);
                break;
            case "MapTypePhysics":
                mapHelper.MapContainer.setMapType(G_PHYSICAL_MAP);
                break;
        }
    }
}

var mapHelper = new MapHelper();


if (mapHelper) {
    mapHelper.Categories =
    {
        "A": {
            MarkerType: mapHelper.ICON_TYPE_ORANGE,
            Name: "Einkaufen",
            Keywords:
            [
                { Value: "Aldi" },
                { Value: "Penny" },
                { Value: "Plus" },
                { Value: "Kaufland" },
                { Value: "Tengelmann" },
                { Value: "Rewe" },
                { Value: "Lidl" },
                { Value: "Edeka" },
                { Value: "Spar" },
                { Value: "Metro" },
                { Value: "Kaisers" },
                { Value: "Bäckerei" },
                { Value: "Baumarkt" },
                { Value: "Kaufhaus" },
                { Value: "Business to Business – Großhändler" },
                { Value: "Einzelhandel - 24-Stunden-Geschäft" },
                { Value: "Einzelhandel - Baubedarf" },
                { Value: "Einzelhandel - Bekleidung" },
                { Value: "Einzelhandel - Bier" },
                { Value: "Einzelhandel - Bioläden" },
                { Value: "Einzelhandel – Bäckereien" },
                { Value: "Einzelhandel - Bücher und Zeitschriften" },
                { Value: "Einzelhandel - Büroeinrichtung und -bedarf" },
                { Value: "Einzelhandel - CDs }, Schallplatten und Kassetten" },
                { Value: "Einzelhandel - DVDs }, Videos und Filme" },
                { Value: "Einzelhandel - Discountmarkt" },
                { Value: "Einzelhandel - Einkaufszentren und Ladenstraßen" },
                { Value: "Einzelhandel - Elektrogeräte" },
                { Value: "Einzelhandel - Elektronik" },
                { Value: "Einzelhandel - Fisch und Meeresfrüchte" },
                { Value: "Einzelhandel - Flohmärkte" },
                { Value: "Einzelhandel - Floristen" },
                { Value: "Einzelhandel - Gemüsehändler" },
                { Value: "Einzelhandel – Kaufhaus" },
                { Value: "Einzelhandel - Kleidung und Bedarf für Kleinkinder" },
                { Value: "Einzelhandel - Kosmetik" },
                { Value: "Einzelhandel - Käse" },
                { Value: "Einzelhandel - Lebensmittelhändler und Supermärkte" },
                { Value: "Einzelhandel - Metzgereien" },
                { Value: "Einzelhandel - Musik und Musikinstrumente" },
                { Value: "Einzelhandel - Optiker" },
                { Value: "Einzelhandel – Pflanzen" },
                { Value: "Einzelhandel - Sanitätsartikel" },
                { Value: "Einzelhandel - Schmuck" },
                { Value: "Einzelhandel - Schuhe" },
                { Value: "Einzelhandel - Spiele und Hobbys" },
                { Value: "Einzelhandel - Spielwaren" },
                { Value: "Einzelhandel - Spirituosen" },
                { Value: "Einzelhandel - Sportartikel" },
                { Value: "Einzelhandel – Süßigkeiten" },
                { Value: "Einzelhandel - Tiere und Haustiere" },
                { Value: "Einzelhandel - Wein" },
                { Value: "Einzelhandel – Zeitungen" },
                { Value: "Einzelhandel - Zigarren }, Zigaretten }, Tabak und Rauchwaren" },
                { Value: "Einzelhandel – Garten und Gartenarbeit" }
            ]
        },
        "B": {
            MarkerType: mapHelper.ICON_TYPE_WHITE,
            Name: "Ärzte + Apotheken",
            Keywords:
            [
                { Value: "Gesundheits- und Krankenwesen" },
                { Value: "Einzelhandel - Apotheken" }
            ]
        },
        "C": {
            MarkerType: mapHelper.ICON_TYPE_GREEN,
            Name: "Kitas + Schulen",
            Keywords:
            [
                { Value: "Bildung" },
                { Value: "Dienstleistungen - Kindertagesstätten und Kinderkrippen" },
                { Value: "Unterhaltung – Tanzschulen" }
            ]
        },
        "D": {
            MarkerType: mapHelper.ICON_TYPE_BROWN,
            Name: "Restaurants + Hotels",
            Keywords:
            [
                { Value: "Restaurants" },
                { Value: "Reisen" }
            ]
        },
        "E": {
            MarkerType: mapHelper.ICON_TYPE_BLUE,
            Name: "Bus + Bahn",
            Keywords:
            [
                { Value: "Transportwesen - Boote und Fähren" },
                { Value: "Transportwesen - Bus" },
                { Value: "Transportwesen - Flughäfen" },
                { Value: "Transportwesen - Taxis" },
                { Value: "Transportwesen - U-Bahnen" },
                { Value: "Transportwesen - Züge" }
            ]
        },
        "F": {
            MarkerType: mapHelper.ICON_TYPE_VIOLET,
            Name: "Unterhaltung",
            Keywords:
            [
                { Value: "Unterhaltung - Arenen und Stadien" },
                { Value: "Unterhaltung - Billard und Poolbillard" },
                { Value: "Unterhaltung - Bingo" },
                { Value: "Unterhaltung - Bowling" },
                { Value: "Unterhaltung - Bridge- und Kartenclubs" },
                { Value: "Unterhaltung - Comedy-Clubs" },
                { Value: "Unterhaltung - Country-Clubs" },
                { Value: "Unterhaltung - Dinnertheater" },
                { Value: "Unterhaltung - Disc Jockeys" },
                { Value: "Unterhaltung - Festsäle" },
                { Value: "Unterhaltung - Karaoke" },
                { Value: "Unterhaltung - Kinos" },
                { Value: "Unterhaltung - Kunstgalerien" },
                { Value: "Unterhaltung - Livemusik" },
                { Value: "Unterhaltung - Museen" },
                { Value: "Unterhaltung - Opernhäuser" },
                { Value: "Unterhaltung - Orchester und Symphonien" },
                { Value: "Unterhaltung - Parkanlagen" },
                { Value: "Unterhaltung - Planetarien" },
                { Value: "Unterhaltung - Strände" },
                { Value: "Unterhaltung - Theater und Bühnen für darstellende Künste" },
                { Value: "Unterhaltung - Touristenattraktionen" },
                { Value: "Unterhaltung - Weinkellereien" }
            ]
        },
        "G": {
            MarkerType: mapHelper.ICON_TYPE_BLACK,
            Name: "Fitness",
            Keywords:
            [
                { Value: "Dienstleistungen - Fitnesstrainer" },
                { Value: "Organisationen – Sportvereine" },
                { Value: "Unterhaltung - Autorennen und Rennbahnen" },
                { Value: "Unterhaltung - Bogenschießanlagen" },
                { Value: "Unterhaltung - Bäder" },
                { Value: "Unterhaltung - Driving Ranges (Golf)" },
                { Value: "Unterhaltung - Eisbahnen" },
                { Value: "Unterhaltung - Football" },
                { Value: "Unterhaltung - Fußballvereine" },
                { Value: "Unterhaltung - Golfplätze" },
                { Value: "Unterhaltung - Klettern" },
                { Value: "Unterhaltung - Leichtathletik- }, Fitness- und andere Sportclubs }, Sporthallen" },
                { Value: "Unterhaltung - Minigolfplätze" },
                { Value: "Unterhaltung - Paintball" },
                { Value: "Unterhaltung - Racquetball-Plätze" },
                { Value: "Unterhaltung - Schießplätze" },
                { Value: "Unterhaltung - Schlagkäfige (Baseball)" },
                { Value: "Unterhaltung - Schwimmbäder" },
                { Value: "Unterhaltung - Selbstverteidigungs- und Kampfsportunterricht" },
                { Value: "Unterhaltung - Skipisten" },
                { Value: "Unterhaltung - Squashplätze" },
                { Value: "Unterhaltung - Tanzclubs" },
                { Value: "Unterhaltung - Tennisplätze" },
                { Value: "Unterhaltung - Turnen" },
                { Value: "Unterhaltung - Wandern" },
                { Value: "Unterhaltung - Yoga-Unterricht" }
            ]
        },
        "H": {
            MarkerType: mapHelper.ICON_TYPE_PINK,
            Name: "Dienstleistungen",
            Keywords:
            [
                { Value: "Dienstleistungen - Autowaschanlagen" },
                { Value: "Dienstleistungen - Autowäsche und -pflege" },
                { Value: "Dienstleistungen - Bräunungsstudios" },
                { Value: "Dienstleistungen - Büchereien" },
                { Value: "Dienstleistungen - Büroarbeiten" },
                { Value: "Dienstleistungen - Fotokopien" },
                { Value: "Dienstleistungen - Friedhöfe" },
                { Value: "Dienstleistungen - Friseure" },
                { Value: "Dienstleistungen - Haarentfernung" },
                { Value: "Dienstleistungen – Hautpflege" },
                { Value: "Dienstleistungen - Massage" },
                { Value: "Dienstleistungen - Nagelstudios" },
                { Value: "Dienstleistungen – Schuhreparatur" },
                { Value: "Dienstleistungen – Schönheitssalons" },
                { Value: "Dienstleistungen - Tierheime" },
                { Value: "Dienstleistungen - Tierpension" },
                { Value: "Dienstleistungen - Tierpflege" },
                { Value: "Dienstleistungen - Tierschulen" },
                { Value: "Dienstleistungen – Tiersitter" },
                { Value: "Dienstleistungen - Wäschereien" },
                { Value: "Einzelhandel – Banken" },
                { Value: "Einzelhandel - Tankstellen" },
                { Value: "Einzelhandel - Waschsalons" },
                { Value: "Organisationen - Kirchen" },
                { Value: "Organisationen - Moscheen" },
                { Value: "Organisationen - Religiös" },
                { Value: "Organisationen - Synagogen und Tempel" },
                { Value: "Regierungsstellen – Postämter" }
            ]
        },
        "I": {
            MarkerType: mapHelper.ICON_TYPE_RED,
            Name: "Sparkassen",
            Keywords:
            [
                { Value: "Sparkasse" }
            ]
        }
    };
}
