//<![CDATA[
var map = null;
var progressBar = null;
var nbreToTraiter = 0;
var markerClusterer = null;
var listeLatLng = new Array();
var toutlespoints = [];
var tags = [];
var markerProgramme = {};
var markerManifestation = {};
var markerTempsfort = {};

window.onunload = function() { GUnload(); };
window.onload = function() {
    showMap();
    
    var urlXML = "/carte_gmap/coordonnees.xml";
    GDownloadUrl(urlXML, function(data, responseCode) {
        var xml = GXml.parse(data);
        tags = xml.documentElement.getElementsByTagName("marker");
        nbreToTraiter = tags.length;
        progressBar.start(nbreToTraiter);
        
        if (tags) {
            getAdrLocation();
        }
    });
};

function showMap() {
    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map-localisation-manifestation"));
        map.setUIToDefault();
        map.disableScrollWheelZoom();
        map.setCenter(new GLatLng(46.9502622421856, 2.7685546875),5) //France
        
        progressBar = new ProgressbarControl(map, {loadstring:'Calcul en cours...', width:100});
        
        // icone programme
        var programmeIcon = new GIcon();
        programmeIcon.image = "/carte_gmap/manifestation_verte.png";
        programmeIcon.shadow = "/carte_gmap/shadow.png";
        programmeIcon.iconSize = new GSize(12, 20);
        programmeIcon.shadowSize = new GSize(22, 20);
        programmeIcon.iconAnchor = new GPoint(6, 20);
        programmeIcon.infoWindowAnchor = new GPoint(5, 1);
        
        // icone temps fort
        var tempsfortIcon = new GIcon();
        tempsfortIcon.image = "/carte_gmap/programme_rose.png";
        tempsfortIcon.shadow = "/carte_gmap/shadow.png";
        tempsfortIcon.iconSize = new GSize(12, 20);
        tempsfortIcon.shadowSize = new GSize(22, 20);
        tempsfortIcon.iconAnchor = new GPoint(6, 20);
        tempsfortIcon.infoWindowAnchor = new GPoint(5, 1);
        
        // icone manifestation
        var manifestationIcon = new GIcon();
        manifestationIcon.image = "/carte_gmap/manifestation_verte.png";
        manifestationIcon.shadow = "/carte_gmap/shadow.png";
        manifestationIcon.iconSize = new GSize(12, 20);
        manifestationIcon.shadowSize = new GSize(22, 20);
        manifestationIcon.iconAnchor = new GPoint(6, 20);
        manifestationIcon.infoWindowAnchor = new GPoint(5, 1);
        
        // Set up our GMarkerOptions object literal
        markerProgramme = { icon:programmeIcon };
        markerManifestation = { icon:manifestationIcon };
        markerTempsfort = { icon:tempsfortIcon };
        
        // rassembler les points
        var styles = [
            {
                url: './images-lasemaine/m1.png',
                height: 52,
                width: 53,
                opt_textColor: '#FFFFFF'
            },
            {
                url: './images-lasemaine/m2.png',
                height: 55,
                width: 56,
                opt_textColor: '#FFFFFF'
            },
            {
                url: './images-lasemaine/m3.png',
                height: 65,
                width: 66,
                opt_textColor: '#FFFFFF'
            }];
        markerClusterOptions = {maxZoom: 9, gridSize: 40, styles: styles};
    }
};
function infoLatLngs(lat, lng, texte, type) {
    this.lat = lat;
    this.lng = lng;
    this.texte = texte;
    this.type = type;
};

function getAdrLocation() {
    for (var cpt = 0; cpt < nbreToTraiter ; cpt++ ){
        var lat = '';
        var lng = '';
        var texte_bulle = '';
        var type = '';
        
        var adr_en_cours = tags[cpt];
        if (adr_en_cours) {
            lat = adr_en_cours.getAttribute("latitude");
            lng = adr_en_cours.getAttribute("longitude");
            type = adr_en_cours.getAttribute('type');
            /*
            texte_bulle = '<div class="bulle-gmap">';
            if (adr_en_cours.getAttribute('illustration_url') != "") {
                texte_bulle = texte_bulle + '<img src="' + adr_en_cours.getAttribute('illustration_url') + '/image_tile" alt="illustration" />&nbsp;';
            }
            texte_bulle = texte_bulle + "<h4>" + adr_en_cours.getAttribute('name') + "</h4><br />" + adr_en_cours.getAttribute('date') + "<br />Organisateur : " + adr_en_cours.getAttribute('organisateur');
            texte_bulle = texte_bulle + '<br /><ul id="portal-siteactions"><li><a href="' + adr_en_cours.getAttribute('url') + '">'
            
            if (type=='manifestation') {
                texte_bulle = texte_bulle + 'Voir la manifestation'
            }
            else {
                texte_bulle = texte_bulle + 'Voir le programme'
            }
            texte_bulle = texte_bulle + '</a></li></ul>';
            texte_bulle = texte_bulle + "</div>"*/
            texte_bulle = adr_en_cours.firstChild.nodeValue;
        }
        
        listeLatLng[cpt] = new infoLatLngs(lat, lng, texte_bulle, type);
        
        progressBar.updateLoader(1);
    }
    
    mapDisplayAddress();
};

function createMarker(posn, icon, contenu_bulle) {
    var marker_temp = new GMarker(posn, icon);
    GEvent.addListener(marker_temp, "click", function() { marker_temp.openInfoWindowHtml(contenu_bulle); });
    return marker_temp;
}

function mapDisplayAddress() {
    for (var i = 0; i < listeLatLng.length ; i++ ){
        var item = listeLatLng[i];
        if (item && item.lat && item.lng) {
            var point = new GLatLng(parseFloat(item.lat),
                                    parseFloat(item.lng));
            
            if (item.type=='manifestation') {
                var marker = createMarker(point, markerManifestation, item.texte);
            }
            else if (item.type=='tempsfort') {
                var marker = createMarker(point, markerTempsfort, item.texte);
            }
            else{
                var marker = createMarker(point, markerProgramme, item.texte);
            }
            toutlespoints.push(marker);
        }
    }
    
    // gestion du groupement de points
    if (markerClusterer != null) {
        markerClusterer.clearMarkers();
    }
    markerClusterer = new MarkerClusterer(map, toutlespoints, markerClusterOptions);
    
    progressBar.remove();
};
//]]>
