// instanciation de la carte
var map = null;
// instanciation du géocodage
var geocoder = null;

// Fonction d'initialisation de la carte
function gmap_load(div, lng, lat, zoom) {
    // div: le div dans lequel nous affichons la carte
    // lng, lat: les coordonnées du point
    // zoom: le niveau de zoom de la carte
    if (GBrowserIsCompatible()) {
        if (!map) {
            map = new GMap2(document.getElementById(div));
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
        }
        coord = new GLatLng( lat, lng )
        map.setCenter(coord, zoom);
        gmap_add_marker(coord, div);
        //map.setMapType(G_SATELLITE_MAP);
        map.setMapType(G_NORMAL_MAP);
        //map.setMapType(G_HYBRID_MAP);
    }
}

// Fonction d'ajout d'un marqueur
function gmap_add_marker(coord, div) {

	var infosBulle = "<img src='templates/images/logos/autotax_logo.jpg' alt='Autotax' style='width:200px; height:90px;' /><p>7, rue de Bitbourg - L-1273 Luxembourg</p><p>Tél. +352 399 255<br />Fax +352 399 579<br /><a href='mailto:autotax@autotax.lu' style='color:blue;'>autotax@autotax.lu</a></p>";

    // coord: les coordonnées du point
    // div: le div dans lequel nous affichons la carte
    map.clearOverlays();
    var marker = new GMarker(coord, {draggable: false});

    // L'option |draggable: true} permet de déplacer le marqueur
    GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(infosBulle);
    });
    map.addOverlay(marker);
}

// Fonction de recherche d'une adresse
function gmap_show_address(div, address) {
    if(!geocoder) {
        // si le geocoder n'a pas été utilisé, on l'instancie
        geocoder = new GClientGeocoder();
    }
    if(geocoder) {
        geocoder.getLatLng(address, function(point) {
            if(address== "" ) {
                // Cette condition permet de ne réagir que lorsque l'API a effectivement reçu notre champ
            } else if(!point) {
                // Ici, le cas où l'adresse n'existe pas dans la base de GoogleMaps
                alert(address +' : est introuvable sur GoogleMap');
            } else {
                gmap_load(div, point.lng(), point.lat(), true, map.getZoom());
                gmap_add_marker(point, field);
            }
        });
    }
}