function getMarker(latlng, markerOptions, description) {
    var marker = new GMarker(latlng, markerOptions);
    GEvent.addListener(marker, "click", function() { map.openInfoWindowHtml(latlng, description); });
    return marker;
}


function refreshMap() {
    document.getElementById("refreshButton").disabled = true;
    markerPosition = 0;
    var pA = null;
    var mA = null;
    var wA = null;
    
    if (document.getElementById("pA").checked == true) {
        pA = 1;
    }
    
    if (document.getElementById("mA").checked == true) {
        mA = 1;
    }
    
    if (document.getElementById("wA").checked == true) {
        wA = 1;
    }
    
    if (markerCluster != null) {
        markerCluster.clearMarkers();
    }
    
    refreshMarkerArray(pA, mA, wA);
    var mcOptions = { gridSize: 30, maxZoom: 15};
    markerCluster = new MarkerClusterer(map, markerArray, mcOptions);
}


function refreshMarkerArray(pA, mA, wA) {
    agencyNumber = 0;
    markerArray = [];
    
    // send event stat if filter used
    if (pA || mA || wA || filterStarValue != 0) {
        //sendAsyncGet("/statistic.push.html?type=event&value=hutav-" + hutAvailable + "-cabinav-" + cabinAvailable + "-stars-" + filterStarValue);
    }
    
    for (var i = 0; i < mO.length; i++) {
            var marker = mO[i]["marker"];
            var showMarker = true;

            // Phone available
            if (pA != null) {
                var thisPhoneAvailable = mO[i]["pA"];

                if (! pA == thisPhoneAvailable) {
                        showMarker = false;
                }
            }

            // Mail available
            if (mA != null) {
                var thisMailAvailable = mO[i]["mA"];

                if (! mA == thisMailAvailable) {
                        showMarker = false;
                }
            }
            
            // Web available
            if (wA != null) {
                var thisWebAvailable = mO[i]["wA"];

                if (! wA == thisWebAvailable) {
                        showMarker = false;
                }
            }

            // filterStarValue
            if (filterStarValue != 0) {
                var thisStars = mO[i]["stars"];

                if (filterStarValue > thisStars) {
                        showMarker = false;
                }
            }


            if (showMarker) {
                markerArray.push(marker);
                agencyNumber++;
            }
    }
            
    document.getElementById("agencyNumber").innerHTML = agencyNumber;
    document.getElementById("refreshButton").disabled = false;    
}

function showAddress(address) {
   //sendAsyncGet("/statistic.push.html?type=cmap_location_search&value=" + address);
   if (geocoder) {
       geocoder.getLatLng(address,
           function(point) {
               if (!point) {
                   alert("Der Ort '" + address + "' wurde nicht gefunden");
               }
               else {
                   map.setCenter(point, 10);
               }
            }
        );
    }
}

