var map = null;
function initGoogleMapDetail(lat, lng, dealer_id){
    //initialises the GoogleMap used on the occasion detail page
    if (GBrowserIsCompatible()) {
        //only load the map once
        if (document.getElementById("detailmap").innerHTML == ''){
            map = new GMap2(document.getElementById("detailmap"));
            map.addControl(new GLargeMapControl());
            //map.addControl(new GMapTypeControl());
            map.setCenter(new GLatLng(parseFloat(lat), parseFloat(lng)), 8);
            addDealerMarker(map,lat, lng, dealer_id);
         }
     }
}

function addDealerMarker(map,lat, lng, dealer_id){
    //adds a marker to a GoogleMap
    var latlng = new GLatLng(parseFloat(lat), parseFloat(lng));

    mgr = new GMarkerManager(map);
    var marker = createTop3Marker(latlng, dealer_id);
    mgr.addMarker(marker,0);
}

function createTop3Marker(latlng, dealer_id){
    //Gets the Top3 occasions and puts it in the marker
    var icon = new GIcon();
    icon.image = site_root+"images/googlemaps/logo_bosch.png";
    icon.iconSize = new GSize(53, 38);
    //icon.iconAnchor = new GPoint(6, 20);
    icon.iconAnchor = new GPoint(16, 38);
    //icon.infoWindowAnchor = new GPoint(5, 1);
    icon.infoWindowAnchor = new GPoint(16, 38);

    var marker = new PdMarker(latlng, icon);

    //get top 3 occasions from this dealer
    GEvent.addListener(marker, 'click', function(){
        // get boundaries
        bounds = map.getBounds();
        ne = bounds.getNorthEast();
        sw = bounds.getSouthWest();

        distY = ne.lat() - sw.lat();

        p = new GLatLng(marker.getLatLng().lat() + distY*.45, marker.getLatLng().lng());

        //map.setCenter(p);

        $.ajax({url: site_prefix+"ajax/josse/getDealerHtml.php?id="+dealer_id,
               type: "GET",
               async: false,
               success:
                function(data){
                    html = data;
                    return;
                    //Dealer information
                    html = '<address>';
                    html += '    <span>'+data.dealer[0].title+'</span>';
                    html += '    '+data.dealer[0].address+'<br />';
                    html += '    '+data.dealer[0].city+'<br />';
                    html += '    <strong>Tel:</strong>';
                    html += '    '+data.dealer[0].phone+'';
                    html += '</address>';

                    if (data.occasions.length > 0) {
                        //Occasions
                        html += '<h2 class="nomarginbottom">Nieuwe occasions</h2>';
                        html += '<div style="height: 235px;">';
                        $.each(data.occasions, function(i,item){
                            html += '<div class="occ_map">';
                            html += '  <span><em>'+(i+1)+'</em><a href="'+item.url+'"><img height="60" src="'+item.image+'" alt="'+item.title+'" /></a></span>';
                            html += '  <dl>';
                            html += '      <dt><a href="'+item.url+'">'+item.title+'</a></dt>';
                            html += '      <dd>Prijs:</dd>';
                            html += '      <dd><strong>&euro; '+item.prijs+'</strong></dd>';
                            html += '      <dd>Bouwjaar:</dd>';
                            html += '      <dd><strong>'+item.bouwjaar+'</strong></dd>';
                            html += '  </dl>';
                            html += '</div>';
                        });
                        html += '</div>';
                    }
        }});

        marker.openInfoWindowHtml(html, {'onOpenFn': function () { map.panTo(p) }});
    });

    return marker;
}

function scroller(dealer_id) {
}

function initGoogleMapOverview(){
    //initialises the GoogleMap used on the occasionKaart page
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("googlemapoverview"));
        map.addControl(new GLargeMapControl());
        //map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(52.500000,5.300000), 8);

        //add magnifying glasses
        mgr = new GMarkerManager(map);
        var lats = new Array(53.199452, 53.215079, 52.994950, 52.515803, 51.984880, 50.851908, 51.691288, 52.378953, 52.512878, 52.091531, 51.498271, 52.068111);
        var lons = new Array(5.795288, 6.565704, 6.558838, 5.480118, 5.917511, 5.700531, 5.309143, 4.633484, 6.095352, 5.117226, 3.612442, 4.297714);
        for (x in lats) {
            mgr.addMarker(createZoom(new GLatLng(lats[x], lons[x]), map), 1,9);
        }

        //add all the dealer markers
        getMarkers(map);

        if ($('#province_id').length > 0) {
            zoomProvince($('#province_id').val());
        }
     }
}

var selected_marker;
function getMarkers(map) {
    //puts all the dealer markers on a map
    //?range=9721:10
    var selected_dealer_id = $('#selected_dealer').val();
    var url = 'ajax/getDealers.php';
    if (selected_dealer_id || $('#all_bcs').val()) {
        url += '?occasions_only=0';
    }
    $.ajax({url: url,
               type: "GET",
               async: false,
               dataType: "json",
               success:
                function(data){
                    //add these marker to the MarkerManager
                    //they are only shown when zoomed in.
                    mgr = new GMarkerManager(map);

                    $.each(data.dealers, function(i, item){
                        item = $(item);
                        lat = item.attr('latitude');
                        lng = item.attr('longitude');

                        if (lat && lng) {
                        var latlng = new GLatLng(parseFloat(lat), parseFloat(lng));

                        var marker = createTop3Marker(latlng, item.attr('id') );
                        mgr.addMarker(marker,10); //only show from zoom level 10

                        if (item.attr('id') == selected_dealer_id) {
                            var latlng = new GLatLng(parseFloat(lat), parseFloat(lng));
                            map.setCenter(latlng, 10);
                            selected_marker = marker;
                            setTimeout('selectMarker()', 1000);
                        }
                      }
                  });
        }});
}

function selectMarker() {
    GEvent.trigger(selected_marker, 'click');
}

function createZoom(point, map) {
    //adds a magnifying glass marker to the Googlemap
    var icon = new GIcon();
    icon.iconSize = new GSize(35, 35);
    icon.iconAnchor = new GPoint(17.5, 17.5);
    icon.image = 'images/googlemaps/bosch-vglas.png';
    var marker = new GMarker(point, icon);
    GEvent.addListener(marker, "click", function() {
        map.setCenter(point, map.getZoom()+2);
    });
    return marker;
}

