﻿//latLons.push([new google.maps.LatLng(r.Latitude, r.Longitude), r.Name]);

var tries = 0;
var gMap = null;
function GMapInit(arLatLng, elemID) {
    if (typeof (google) != null && typeof (google.maps) != null) {//make sure google.maps api has been loaded before we proceed
         if (arLatLng != null && arLatLng.length > 0) {
            var opts = {
                zoom: 11,
                center: arLatLng[0][0],
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };

            gMap = new google.maps.Map(document.getElementById(elemID), opts);

            for (i = 0; i < arLatLng.length; i++) {
                var marker = new google.maps.Marker({
                    position: arLatLng[i][0],
                    title: arLatLng[i][1]
                });

                var infowindow = new google.maps.InfoWindow({
                    content: "<div><h2>" + arLatLng[i][1] + "</h2><div>" + arLatLng[i][2] + "<br>" + arLatLng[i][3] + "<br>" + arLatLng[i][4] + "</div></div>",
                    position: arLatLng[i][0]
                });

                infoWindows.push(infowindow);
                google.maps.event.addListener(marker, 'click', GMapInfoWinowCallback_Hack(infowindow, gMap, marker));

                GMapAddMarker(marker, gMap);
            }
        }
    }
    else if (tries < 10)
        window.setTimeout("GMapInit(" + arLatLng + ", \"" + elemID + "\")", 50);
    tries++;
}
var infoWindows = [];
function GMapInfoWinowCallback_Hack(infowindow, map, marker) {//this is a hack to get the infowindows to play nicely with each other.
    return function () {
        for (i = 0; i < infoWindows.length; i++) {
            infoWindows[i].close();
        }
        infowindow.open(map, marker);
        //GMapCenter(marker.getPosition().lat(), marker.getPosition().lng());
    }
}
function GMapCenter(lat, lon) {
    gMap.setCenter(new google.maps.LatLng(lat, lon));

    if (markers != null && markers.length > 0) {
        for (m in markers) {
            var latLng = markers[m].getPosition();
            if (latLng.equals(new google.maps.LatLng(lat, lon))) {
                google.maps.event.trigger(markers[m], "click");
            }
        }
    }
}
var markers = [];
function GMapAddMarker(marker, map) {
    marker.setMap(map);
    markers.push(marker);
}
function GMapRemoveMarker(marker) {
    marker.setMap(null);
}
function GMapRemoveAllMarkers() {
    if (markers != null && markers.length > 0) {
        for (m in markers) {
            GMapRemoveMarker(markers[m]);
        }
    }
    markers = [];
}




