﻿var redIcon = new GIcon(G_DEFAULT_ICON);
G_DEFAULT_ICON.iconAnchor = new GPoint(12, 12);
var commerceIcon = new GIcon(G_DEFAULT_ICON);
commerceIcon.image = liveString + "/Content/images/contenu/cartes/installations/commerce.png";
commerceIcon.iconSize = new GSize(24, 24);
commerceIcon.shadowSize = new GSize(24, 24);
var ecoleIcon = new GIcon(G_DEFAULT_ICON);
ecoleIcon.image = liveString + "/Content/images/contenu/cartes/installations/ecole.png";
ecoleIcon.iconSize = new GSize(24, 24);
ecoleIcon.shadowSize = new GSize(24, 24);
var installationIcon = new GIcon(G_DEFAULT_ICON);
installationIcon.image = liveString + "/Content/images/contenu/cartes/installations/installation-municipale.png";
installationIcon.iconSize = new GSize(24, 24);
installationIcon.shadowSize = new GSize(24, 24);
var parcIcon = new GIcon(G_DEFAULT_ICON);
parcIcon.image = liveString + "/Content/images/contenu/cartes/installations/parc.png";
parcIcon.iconSize = new GSize(24, 24);
parcIcon.shadowSize = new GSize(24, 24);
var patinoireIcon = new GIcon(G_DEFAULT_ICON);
patinoireIcon.image = liveString + "/Content/images/contenu/cartes/installations/patinoire.png";
patinoireIcon.iconSize = new GSize(24, 24);
patinoireIcon.shadowSize = new GSize(24, 24);
var skiIcon = new GIcon(G_DEFAULT_ICON);
skiIcon.image = liveString + "/Content/images/contenu/cartes/installations/ski-fond.png";
skiIcon.iconSize = new GSize(24, 24);
skiIcon.shadowSize = new GSize(24, 24);
var bikeIcon = new GIcon(G_DEFAULT_ICON);
bikeIcon.image = liveString + "/Content/images/contenu/cartes/installations/piste-cyclable.png";
bikeIcon.iconSize = new GSize(24, 24);
bikeIcon.shadowSize = new GSize(24, 24);
var pedestreIcon = new GIcon(G_DEFAULT_ICON);
pedestreIcon.image = liveString + "/Content/images/contenu/cartes/installations/pedestre.png";
pedestreIcon.iconSize = new GSize(24, 24);
pedestreIcon.shadowSize = new GSize(24, 24);
var pdfIcon = new GIcon(G_DEFAULT_ICON);
pdfIcon.image = liveString + "/Content/images/contenu/cartes/zonages/zonage.png";
pdfIcon.iconSize = new GSize(48, 48);
pdfIcon.shadowSize = new GSize(48, 48);

var markerGroups = { "0": [], "1": [], "2": [], "3": [], "4": [], "5": [], "6": [], "7": [], "8": [], "9": [] };
var kmlGroups = { "0": [], "1": [], "2": [], "3": [], "4": [], "5": [], "6": [], "7": [], "8": [], "9": [] };
var markerIconGroups = { "0": installationIcon, "1": parcIcon, "2": patinoireIcon, "3": skiIcon, "4": commerceIcon, "5": ecoleIcon, "6": bikeIcon, "7": redIcon, "8": redIcon, "9": pedestreIcon };
var map;
var defaultPoint = new GLatLng(46.7406389, -71.4413056);
var defaultPoint2 = new GLatLng(46.7506389, -71.4513056);

//TODO activer la cache
//var geocoder = new GClientGeocoder();
//geocoder.reset();

$(document).ready(function() {
    initialiseMap();
    $('.carte-interactive-categories input').click(function() {
        toggleGroup(this.value);
    });
    $('.carte-interactive-categories img').click(function() {
        toggleGroup(this.alt);
        var $chk = $(this).next().next();
        if ($chk.attr('checked') == true) {
            $chk.removeAttr('checked');
        } else {
            $chk.attr('checked', 'checked');
        }
    });

    $('.carte-interactive-categories :checkbox').simpleImageCheck({
        image: liveString + "/Content/images/contenu/formulaires/case-non-cochee.png",
        imageChecked: liveString + "/Content/images/contenu/formulaires/case-cochee.png"
    });

    $('#activate_map').click(function() {
        initialiseMap2();
    });

});

function initialiseMap() {
    if (google.maps.BrowserIsCompatible() && $("#map_canvas")) {
        map = new google.maps.Map2($("#map_canvas")[0]);
        map.setMapType(G_HYBRID_MAP);
        map.setUIToDefault();
        map.disableScrollWheelZoom();
        map.setCenter(defaultPoint, 13);
        getMarkers(8);
        getMarkers(3);
        getMarkers(6);
        getMarkers(1);
        getMarkers(2);
        getMarkers(4);
        getMarkers(5);
        getMarkers(0);
        getMarkers(7);
        getMarkers(9);
    }
}

function initialiseMap2() {
    if (google.maps.BrowserIsCompatible() && $("#map_canvas_2")) {
        map = new google.maps.Map2($("#map_canvas_2")[0]);
        map.setMapType(G_HYBRID_MAP);
        map.setUIToDefault();
        map.disableScrollWheelZoom();
        map.setCenter(defaultPoint2, 12);
        getMarkers(8);
        setPdfMarker();

    }
}

function getMarkers(category) {
    $.getJSON(liveString + "/Maps/GetMarkers/" + category, addLayer);
}

function addLayer(places) {
    $.each(places, function(i, place) {
        setupMarker(place);
    });
}

function setupMarker(place) {
    if (place.Latitude != 0) {
        var mOption = { icon: markerIconGroups[place.Category] };
        var marker = new GMarker(new GLatLng(Number(place.Latitude), Number(place.Longitude)), mOption);
        marker.bindInfoWindowHtml(place.HtmlBubble);
        markerGroups[place.Category].push(marker);
        GEvent.addListener(marker, 'click', function() {
            map.panTo(marker.getLatLng());
        });
        map.addOverlay(marker);
    }
    else {
        if (place.KmlFile) {
            var geoXml = new GGeoXml(place.KmlFile + "?" + (new Date()).getDate());
            kmlGroups[place.Category].push(geoXml);
            GEvent.addListener(geoXml, 'click', function() {
                map.panTo(geoXml.getLatLng());
            });
            map.addOverlay(geoXml);
        }
    }
}

function setPdfMarker() {
    var mOption = { icon: pdfIcon };
    var markerA = new GMarker(new GLatLng(46.775, -71.54), mOption);
    var markerB = new GMarker(new GLatLng(46.775, -71.47), mOption);
    var markerC = new GMarker(new GLatLng(46.775, -71.40), mOption);
    var markerD = new GMarker(new GLatLng(46.74, -71.54), mOption);
    var markerE = new GMarker(new GLatLng(46.74, -71.47), mOption);
    var markerF = new GMarker(new GLatLng(46.74, -71.40), mOption);
    GEvent.addListener(markerA, 'click', function() {
        window.open(liveString + "/Docs/GetPDF/Content/uploads/docs/zonage/zone-a.pdf", "_blank");
        return false;
    });
    GEvent.addListener(markerB, 'click', function() {
        window.open(liveString + "/Docs/GetPDF/Content/uploads/docs/zonage/zone-b.pdf", "_blank");
        return false;
    });
    GEvent.addListener(markerC, 'click', function() {
        window.open(liveString + "/Docs/GetPDF/Content/uploads/docs/zonage/zone-c.pdf", "_blank");
        return false;
    });
    GEvent.addListener(markerD, 'click', function() {
        window.open(liveString + "/Docs/GetPDF/Content/uploads/docs/zonage/zone-d.pdf", "_blank");
        return false;
    });
    GEvent.addListener(markerE, 'click', function() {
        window.open(liveString + "/Docs/GetPDF/Content/uploads/docs/zonage/zone-e.pdf", "_blank");
        return false;
    });
    GEvent.addListener(markerF, 'click', function() {
        window.open(liveString + "/Docs/GetPDF/Content/uploads/docs/zonage/zone-f.pdf", "_blank");
        return false;
    });
    var division = new GGeoXml(liveString + "/Content/uploads/docs/zonage/section_cadre.kml");
    map.addOverlay(division);
    map.addOverlay(markerA);
    map.addOverlay(markerB);
    map.addOverlay(markerC);
    map.addOverlay(markerD);
    map.addOverlay(markerE);
    map.addOverlay(markerF);
}

function toggleGroup(type) {
    for (var i = 0; i < markerGroups[type].length; i++) {
        var marker = markerGroups[type][i];
        if (marker.isHidden()) {
            marker.show();
        } else {
            marker.hide();
        }
    }
    for (var i = 0; i < kmlGroups[type].length; i++) {
        var kml = kmlGroups[type][i];
        if (kml.isHidden()) {
            kml.show();
        } else {
            kml.hide();
        }
    }
}
