var m_objGoogleMaps = null;
var m_objGeo = null;
var m_objIcon = null;
var m_objBounds = null;
var m_Icon = new Array
var m_intTimeoutId = null;
var m_intToDoCount = 0;
var m_intDoneCount = 0;
var m_arrIcon = {
    "nieuws":       "Pink",
    "lid":          "Blue",
    "wijk":         "Orange",
    "groep":        "Green",
    "evenement":    "Yellow"
};

google.load("maps", "2.x");
// Call this function when the page has been loaded  
function initialize() {
    m_objGoogleMaps = new google.maps.Map2(document.getElementById("GoogleMap"));
    //m_objGoogleMaps.enableContinuousZoom();
    m_objGoogleMaps.setMapType(G_SATELLITE_MAP);
    //Zuiderpark is center of map
    m_objGoogleMaps.setCenter(new google.maps.LatLng(51.88210738205776,4.469547271728516), 13);
    //m_objGoogleMaps.addControl(new GLargeMapControl3D());
    m_objIcon = new GIcon();
    m_objIcon.iconSize = new GSize(20, 20);
    m_objIcon.iconAnchor = new GPoint(10, 10); 
    //m_objIcon.infoWindowAnchor = new GPoint(10, 10);
    
    m_objBounds = new GLatLngBounds();
    m_objGeo = new GClientGeocoder(); 
    
    if (typeof(AddMarkers) == "function") {
        AddMarkers(m_objGoogleMaps);
    }
}

function AddMarker(p_strStreet, p_strIcon, p_strHtml, p_blnOpenInfoWindow) {
    m_intToDoCount++;
    m_objGeo.getLocations(
        p_strStreet, 
        function (p_objResult) {
            m_intDoneCount++;
            if (p_objResult.Status.code == 620) {
                setTimeout(
                    function() {
                        AddMarker(p_strStreet, p_strIcon, p_strHtml, p_blnOpenInfoWindow);  
                    }
                ,1000);
            } else if(p_objResult.Placemark) {
                if(p_objResult.Placemark[0].Point.coordinates[0] && p_objResult.Placemark[0].Point.coordinates[1]) {
                    var l_objPoint = new GLatLng(p_objResult.Placemark[0].Point.coordinates[1], p_objResult.Placemark[0].Point.coordinates[0]);
                    var l_objIcon = null;
                    if (p_strIcon != null) {
                        if (m_arrIcon[p_strIcon.toLowerCase()] != null) p_strIcon = m_arrIcon[p_strIcon];
                        if (p_strIcon.indexOf("/") == -1) p_strIcon = "/Images/GoogleMaps/" + p_strIcon;
                        if (p_strIcon.indexOf(".") == -1) p_strIcon += ".png";
                        l_objIcon = new GIcon(m_objIcon, p_strIcon);
                    }
                    var l_objMarker = new GMarker(l_objPoint, l_objIcon); 
                    m_objGoogleMaps.addOverlay(l_objMarker);
                    m_objBounds.extend(l_objPoint);
                    if (p_strHtml == null || p_strHtml.length == 0) p_strHtml = "<div>" + p_strStreet + "</div>";
                    GEvent.addListener(
                        l_objMarker, 
                        'click', 
                        function() { 
                            m_objGoogleMaps.openInfoWindowHtml(l_objPoint, p_strHtml);
                        }
                    );
                    if (m_intDoneCount == m_intToDoCount) {
                        FitZoomToMarkers(m_intToDoCount == 1 ? l_objPoint : m_objBounds.getCenter());
                    }
                    if (p_blnOpenInfoWindow == true) {
                        m_objGoogleMaps.openInfoWindowHtml(l_objPoint, p_strHtml);
                    }
                }
            }
        }
    );
}

function FitZoomToMarkers(p_objCenter) {

    if (p_objCenter == null) p_objCenter = m_objBounds.getCenter();
    var l_intZoomLevel = m_objGoogleMaps.getBoundsZoomLevel(m_objBounds, new GSize(700, 225));
    //m_objGoogleMaps.setCenter(p_objCenter, l_intZoomLevel > 15 ? 15 : l_intZoomLevel);
    if(p_objCenter.y!=0) {
        m_objGoogleMaps.setZoom(l_intZoomLevel > 15 ? 15 : l_intZoomLevel);
        m_objGoogleMaps.panTo(p_objCenter);
    } else {
        m_objGoogleMaps.panTo(new google.maps.LatLng(51.88210738205776,4.469547271728516), 13);
    }
    /*
    setTimeout(
        function() {
            m_objGoogleMaps.panTo(p_objCenter);
        }, 
        1
    );
    */
    /*
    var l_intCurrentZoomLevel = m_objGoogleMaps.getZoom();
    while (l_intCurrentZoomLevel != l_intZoomLevel) {
        if (l_intCurrentZoomLevel < l_intZoomLevel) {
            m_objGoogleMaps.zoomIn(null, null, true);
            l_intCurrentZoomLevel++;
        } else if (l_intCurrentZoomLevel > l_intZoomLevel) {
            m_objGoogleMaps.zoomOut(null, true);
            l_intCurrentZoomLevel--;
        }
    }
    m_objGoogleMaps.panTo(p_objCenter);
    */
}

function MapSize() {
    if(document.getElementById('TopMap').style.height=='500px') {
        document.getElementById('ImgMapSize').src='/images/VerGrootKaart.png';
        document.getElementById('TopMap').style.height='225px';
        document.getElementById('GoogleMap').style.height='225px';
    } else {
        document.getElementById('ImgMapSize').src='/images/VerKleinKaart.png';
        document.getElementById('TopMap').style.height='500px';
        document.getElementById('GoogleMap').style.height='500px';
    }
    setTimeout(
        function() {
            FitZoomToMarkers();
        }, 
        1
    );
}
               
google.setOnLoadCallback(initialize);