﻿var geocoder = undefined;
var markerArray = new Object();
var windowArray = new Object();
var tmpInfoWindow = undefined;
// 
function setMarkers(map, locations) {
    // Add markers to the map
    if (!geocoder)
        geocoder = new google.maps.Geocoder();
    for (var i = 0; i < locations.length; i++) {
        var data = locations[i];
        // data[0] = titel
        // data[1] = adresse
        // data[2] = latitude
        // data[3] = longitude
        // data[4] = z-Index
        // data[5] = Gmaps-Image
        // data[6] = Objectid
        // data[7] = Infowindow beim Laden oeffnen (true/false)
        var link = "/" + data[6] + ",1031,1,-1,0,0,0,0,0,0,0,0,0,0,cookie,0,0.aspx";
        if (data[2] && data[3]) {
            // geocords bereits vorhanden
            var latlng = new google.maps.LatLng(data[2], data[3]);
            // marker erzeugen
            var marker = new google.maps.Marker({
                position: latlng,
                map: map,
                title: data[0],
                zIndex: data[4],
                icon: data[5]
            });
            // infowindow erzeugen
            var win = createInfoWindow(marker, map, '<p><strong>' + data[0] + '</strong>', '<br />' + data[1] + '</p><p>', "<a href=\"" + link + "\">Zum Service-Center</a></p>");
            if (data.length == 8 && data[7] == true) {
                win.open(map, marker);
                //alert(data[7]);
            }
            markerArray["" + data[6] + ""] = marker;
            windowArray["" + data[6] + ""] = win;
        }
        else {
            //return;
            // koordinaten anhand der adresse herausfinden
            // ! WARNUNG !
            // Anzahl der Geocoder-Anfragen beschränkt!!!
            // Daten aus dem data-Array werden nicht immer korrekt weitergegeben
            geocoder.geocode({ address: data[1] }, function(results, status) {
                if (status == google.maps.GeocoderStatus.OK && results.length) {
                    // You should always check that a result was returned, as it is
                    // possible to return an empty results object.
                    if (status != google.maps.GeocoderStatus.ZERO_RESULTS) {
                        // marker erzeugen
                        var marker = new google.maps.Marker({
                            position: results[0].geometry.location,
                            map: map,
                            title: data[0],
                            zIndex: data[4],
                            icon: data[5]
                        });
                        // infowindow erzeugen
                        var win = createInfoWindow(marker, map, '<p><strong>' + data[0] + '</strong>', '<br />' + data[1] + '</p><p>', "<a href=\"" + link + "\">Zum Service-Center</a></p>");
                        if (data.length == 8 && data[7] == true) {
                            //win.open(map, marker);
                            //alert(data[7]);
                        }
                        
                    }
                } else {
                    //alert("Geocode was unsuccessful due to: " + status);
                }
            });
        }
    }
}



// erzeugt ein google-maps-MarkerImage
// path = pfad zu dem bild e.g.: gmapImage('/images/bild.png');
// breite (optional) des bildes e.g.: gmapImage('/images/bild.png', 25);
// höhe (optional) des bildes e.g.: gmapImage('/images/bild.png', 25, 30);
function gmapImage(path) {
    var width = 35;
    var height = 25;
    if (arguments.length > 1) {
        width = arguments[1];
        if (arguments.length > 2) {
            height = arguments[2];
        }                
    }
    var image = new google.maps.MarkerImage(path,
    // This marker is 35 pixels wide by 25 pixels tall.
      new google.maps.Size(width, height),
    // The origin for this image is 0,0.
      new google.maps.Point(0, 0),
    // The anchor for this image is the base of the flagpole at 0,25.
      new google.maps.Point(0, 32));
    return image;
}

// Info- Window erzeugen
function createInfoWindow(marker, map) {
    var contentString = '';
    if (arguments.length > 2) {
        for (var i = 2; i < arguments.length; i++) {
            contentString += arguments[i] + '\n';
        }
    }
    
    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map, marker);
    });
    return infowindow;
}


function focusMarker(markerID) {
    var marker = markerArray["" + markerID + ""];
    if (marker) {
        var latlng = marker.getPosition();
        marker.getMap().panTo(latlng);
        marker.getMap().setZoom(10);
        if (tmpInfoWindow) {
            windowArray["" + tmpInfoWindow + ""].close();
        }
        tmpInfoWindow = markerID;
        windowArray["" + markerID + ""].open(marker.getMap(),marker);
    }
}