
var defaultZoom = 14;
var map;
// par défaut : longitude et latitude de ville de claix
var lat_default = 45.12065847992461;
var lon_default = 5.67194938659668;

//----------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------//
function initialize(){
// initialise la carte

	if (google.maps.BrowserIsCompatible()) {
	
        //var div = $('#localizeMapBox');
        var div = document.getElementById("localizeMapBox");
        
        // par proctection s'il n'y a pas de <div id="localizeMapBox"> sur la page => on ne lance pas la création de la carte
        if(div){
            
            map = new google.maps.Map2(div);
            map.setCenter(new google.maps.LatLng(lat_default, lon_default), defaultZoom);
    		geoCodeur = new google.maps.ClientGeocoder();
    	
    		map.addControl(new google.maps.LargeMapControl());
    		map.addControl(new google.maps.MapTypeControl());
    		//map.addControl(new google.maps.OverviewMapControl());
    		//map.addControl(new google.maps.ScaleControl());
    	}
	}else{
		alert("Désolé, mais votre navigateur n\'est pas compatible avec Google Maps");
	}
}
//----------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------//
function centreCarte(){
// centre la carte à partir du marker

	var center = marker.getPoint();
	window.setTimeout(function(){map.panTo(center);}, 1000);
}
//----------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------//
function geocodeAdresse(addresse, draggable) {

	if (geoCodeur) {
		geoCodeur.getLatLng(
			addresse,
			function(point) {
				if (!point) {
					alert('Impossible de géolocaliser cette adresse : ' + addresse);
				} else {
					
					createMarker(point, draggable);
					afficheCoordonnees(point);
				}
			}
		);
	}
}
//----------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------//
function createMarker(point, draggable, content){
// création d'un marker
// point : issu de coordonnées ou adresse 
// draggable : boolean
// content : information à mettre dans une bulle
// 
    
    if(draggable == '') draggable = false;
    // protection : si content est undefine
    if(!content) content = '';

    if(draggable){
    
    	marker = new google.maps.Marker(point, {draggable: true});
    	google.maps.Event.addListener(marker, 'dragstart', function() {
    		map.closeInfoWindow();
    	});
    	google.maps.Event.addListener(marker, 'dragend', function(point) {
    		centreCarte();
    	});
    	google.maps.Event.addListener(marker, 'drag', function(point) {
    		afficheCoordonnees(point);
    	});
    }
    else {
    
    	marker = new google.maps.Marker(point);
    }
	
	// on ne peut pas mettre d'info si le marker est draggable => incoherent
	if(!draggable && content != ''){
	
        marker.openInfoWindowHtml(content);
	}
	
	// protection pour éviter une erreur JS quand on appel le script sans div où charger la map
	if(map){
    	map.clearOverlays();
    	map.addOverlay(marker);
    	map.setCenter(point, defaultZoom);
    }
}
//----------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------//
function afficheCoordonnees(point){

	$("#localisation_lat").val(point.lat());
	$("#localisation_long").val(point.lng());
}
//----------------------------------------------------------------------------//
//
//----------------------------------------------------------------------------//
function getAdresse(){

	var rue = $("#localisation_rue").val();
    var cp = $("#localisation_cp").val();
    var ville = $("#localisation_ville").val();
    
    if(rue != '' || cp != '' || ville != ''){
    
        var adresse = rue+' '+cp+' '+ville;
        return adresse;
    }
    else return '';
}

