
var map;
var markers = [];
var infoWindow;

function initialize() {
    map = new google.maps.Map(document.getElementById('mapCanvas'), {
        zoom: 8,
        center: new google.maps.LatLng(47.215, -1.553),
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        mapTypeControl : false
    });
    
    infoWindow = new google.maps.InfoWindow();
    $('indicator_map').show();
    new Ajax.Request(xml_url,{
        onComplete: function(transport) {
            var data = transport.responseText;
            xml = parseXml(data);
            var markerNodes = xml.documentElement.getElementsByTagName("marker");
            var bounds = new google.maps.LatLngBounds();
            
            for (var i = 0; i < markerNodes.length; i++) {
                var event = [];
                event['name'] = markerNodes[i].getAttribute("name");
                event['location'] = markerNodes[i].getAttribute("location");
                event['location_info'] = markerNodes[i].getAttribute("location_info");
                event['date'] = markerNodes[i].getAttribute("date");
                event['type'] = markerNodes[i].getAttribute("type_msg");
                event['icon'] = markerNodes[i].getAttribute("icon");
                event['url'] = markerNodes[i].getAttribute("url");
                event['comment'] =  markerNodes[i].textContent;
                
                var latlng = new google.maps.LatLng(
                    parseFloat(markerNodes[i].getAttribute("lat")),
                    parseFloat(markerNodes[i].getAttribute("lng")));
                
                createMarker(latlng, event);
                bounds.extend(latlng);
            }
           map.fitBounds(bounds);
           $('indicator_map').hide();
        }
    });
    
}

function parseXml(str) {
    if (window.ActiveXObject) {
        var doc = new ActiveXObject('Microsoft.XMLDOM');
        doc.loadXML(str);
        return doc;
    } else if (window.DOMParser) {
        return (new DOMParser).parseFromString(str, 'text/xml');
    }
}


function createMarker(latlng, event) {
    var html = '<div class="map_content">'
        + '<div class="siteNotice"></div>'
        + '<strong class="firstHeading">'+ event['name']+'</strong>'
        + '<div class="bodyContent">'
        + '<p><dl>' 
        + '<dt>Date</dt>'
        + '<dd>' + event['date'] + '</dd>'
        + '<dt>Évènement</dt>'
        + '<dd>' + event['type'] + '</dd>';

    if (event['location_info'] != ''){
        html += '<dt>Information sur le lieu</dt>'
        + '<dd>' + event['location_info'] + '</dd>'
    }    
    if (event['comment'] != ''){
        html += '<dt>Commentaire</dt>'
        + '<dd>' + event['comment'] + '</dd>'
    }

    html += '</p></p>'
        + '<a href="' + event['url'] + '">Voir la fiche de cet exemplaire</a>'
        + '</p>'
        + '</div>'
        + '</div>';
    var marker = new google.maps.Marker({
        map: map,
        position: latlng,
        icon: event['icon'],
        draggable: false,
        title: event['name']
    });
    google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
    });
    markers.push(marker);
}

// Onload handler to fire off the app.
google.maps.event.addDomListener(window, 'load', initialize);