// Procedures globales du projet
// Résumé : Création de la carte google map
// Syntaxe :
//CreeCarte (<sNomChampCarte>)
//
// Paramètres :
// 	sNomChampCarte : Nom du champ HTML (<nomChamp>..alias ou id défini dans DIV)
//	nlat  : latitude du centre de la carte
//	nlong : longitude du centre de la carte
// Valeur de retour :
// 	Aucune
//

function GoogleMapsCreeCarte(sNomChampCarte,nlat,nlong,param_icone)
{

	//	 Création de la carte
	var latlng = new google.maps.LatLng(nlat, nlong);
	
	var myOptions = {
		mapTypeControl: true,
		zoom: 16, 
		center: latlng, 
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
		navigationControl: true,
		navigationControlOptions: {style: google.maps.NavigationControlStyle.ZOOM_PAN},
		streetViewControl:true,
		mapTypeId: google.maps.MapTypeId.HYBRID
		
		}
	// création de la carte
	gObjCarte = new google.maps.Map(document.getElementById(sNomChampCarte),myOptions);
	
		
	
}
function GoogleMapsEvenementClic(sNomFonction)
{
	if (!gObjCarte)
	return null;
	
	
	if (gnEvenementClic)
	return gnEvenementClic;
	
	var objFunction;
	// On a récupéré le nom de la fonction sous forme de chaîne, donc on récupère le pointeur sur cette fonction
	objFunction = eval(sNomFonction);
	// Ajoute l'évenement click
	gnEvenementClic = google.maps.event.addListener(gObjCarte, 'click', objFunction)
	
	
	return gnEvenementClic;
}

function GoogleMapsModifieTypeCarte(nTypeCarte)
{
	switch (nTypeCarte) {
		case 1 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.HYBRID);
			break;
		case 2 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.ROADMAP);
			break;
		case 3 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.SATELLITE);
			break;
		case 4 :
			gObjCarte.setMapTypeId(google.maps.MapTypeId.TERRAIN);
			break;
	}
}

function GoogleMapsDessineTrait(nlat1,nlong1,nlat2,nlong2)
{
	var flightPlanCoordinates = [
	new google.maps.LatLng(nlat1, nlong1),
	new google.maps.LatLng(nlat2, nlong2)
	];
	var flightPath = new google.maps.Polyline({
		path: flightPlanCoordinates,
		strokeColor: "#FF0000",
		strokeOpacity: 1.0,
		strokeWeight: 2
	});
	
	flightPath.setMap(gObjCarte);
}

function GoogleMapsTrajet(pts)
{
var flightPlanCoordinates= new Array(pts.length);
for (i=0;i<pts.length;i++){
	var ch = pts[i];
	var tot = ch.split(";");	
	var pt = new google.maps.LatLng(tot[0],tot[1]);
	flightPlanCoordinates[i]=pt;
}

var flightPath = new google.maps.Polyline({
		path: flightPlanCoordinates,
		strokeColor: "#FF0000",
		strokeOpacity: 1.0,
		strokeWeight: 2
	});
	
	
	var bounds = new google.maps.LatLngBounds();
	for (i=0;i<flightPlanCoordinates.length;i++) {
		bounds.extend(flightPlanCoordinates[i]);
		}
	
	flightPath.setMap(gObjCarte);
	gObjCarte.fitBounds(bounds);
	gObjCarte.setCenter(bounds.getCenter());
}

function GoogleMapsDessineKML(sURL)
{
	var ctaLayer = new google.maps.KmlLayer(sURL);
	ctaLayer.setMap(gObjCarte);
}

function GoogleMapsCreerMarqueur(lat, long,titre,TxtMess,bdeplacable)
{
	var image = '../icovic.png'; 
//	var image = '/VIGNERONS_INDEPENDANTS_CHAMPAGNE_WEB/icovic.png'; 
	var optionsMarqueur = {
		position: new google.maps.LatLng(lat,long),
		map: gObjCarte,
		title: titre,
		contenuInfoBulle: TxtMess,
		draggable:bdeplacable,
		icon: image
		}
	var marqueur = new google.maps.Marker(optionsMarqueur);
	var infobulle = new google.maps.InfoWindow();
	google.maps.event.addListener(marqueur, "click", function() {
		infobulle.setContent(this.contenuInfoBulle);
		infobulle.open(gObjCarte,this);
		});


}

function GoogleMapsCentrerCarte(nlat,nlong)
{
	var latlng = new google.maps.LatLng(nlat, nlong);
	gObjCarte.setCenter(latlng);
}

function GoogleMapsRechercheCoordonneesDepuisAdresse(param_adresse, param_titre,param_icone,param_contenu_info_bulle)
{

	var geo = new google.maps.Geocoder();
	geo.geocode({'address': param_adresse},function(results, status) { 
	
		var coordonnee = null;
		if (status == google.maps.GeocoderStatus.OK){
			//gObjCarte.setCenter(res[0].geometry.location);
			var coordonnee = results[0].geometry.location;
			//		var image = '../icovic.png'; 
			var marke = new google.maps.Marker({
				position: coordonnee, 
				map: gObjCarte, 
				title: param_titre,
				contenuInfoBulle: param_contenu_info_bulle,
				icon: param_icone
				
				}); 
			
			var infobulle = new google.maps.InfoWindow({maxWidth: 700});
			
			google.maps.event.addListener(marke, "click", function() {
				infobulle.setContent(this.contenuInfoBulle);
				infobulle.open(gObjCarte,this);
				});
			
		}else {
		alert("Geocode was not successful for the following reason: " + status);
		}
	
	});
	
}

function GoogleMapsEvenementSurvol(sNomFonction)
{
	if (!gObjCarte)
		//alert("erreur événement survol - Pas d'objet carte");
		return null;
	
	
	if (gnEvenementSurvol)
		return gnEvenementSurvol;
	
	// On a récupéré le nom de la fonction sous forme de chaîne, il faut récupérer le pointeur de la fonction
	var objFunction = eval(sNomFonction);
	
	gnEvenementSurvol = google.maps.event.addListener(gObjCarte,'mousemove',objFunction);
	return gnEvenementSurvol;
}

function GoogleMapsSupprimerEvenementSurvol()
{
	if (gnEvenementSurvol)
	google.maps.event.removeListener(gnEvenementSurvol);
	gnEvenementSurvol = null;
}

function GoogleMapsLatLngVersLatitude(objLatLng)
{
	// Si le point passé est invalide, on renvoie -1
	if (!objLatLng)
		return -1;
		
	return objLatLng.lat()
}

function GoogleMapsLatLngVersLongitude(objLatLng)
{
	// Si le point passé est invalide, on renvoie -1
	if (!objLatLng)
	return -1;
	
	return objLatLng.lng()
}

function GoogleMapsCalculItineraire(addressStart,adressEnd)
{
	var directions = new google.maps.DirectionsRenderer();
	var directionsService = new google.maps.DirectionsService();
	var request = {
		origin:addressStart, 
		destination:adressEnd,
		travelMode: google.maps.DirectionsTravelMode.DRIVING
		};
	directionsService.route(request, function(response, status) {
		if (status == google.maps.DirectionsStatus.OK) {
			directions.setDirections(response);
			}
		});
	directions.setMap(gObjCarte);
}

function GoogleMapsSupprimeEvenementClic()
{
	if (gnEvenementClic){
	google.maps.event.removeListener(gnEvenementClic);
	gnEvenementClic = null;
	}
}

function GoogleMapsGestionBarreOutils(aucun, miniZoom,ZoomPan,ZoomControl)
{
	if (aucun){
		
		gObjCarte.setOptions({
			navigationControl: false,
			streetViewControl:false
			});
			}
	if (miniZoom){
	
		gObjCarte.setOptions({
			navigationControl: true,
			navigationControlOptions: {
			style: google.maps.NavigationControlStyle.SMALL
			},
			streetViewControl:true
		});
		}
	if (ZoomPan){
			
			gObjCarte.setOptions({
				navigationControl: true,
				navigationControlOptions: {
					style: google.maps.NavigationControlStyle.ZOOM_PAN
					},
				streetViewControl:true
				});
			}
			
	if (ZoomControl){
		
		gObjCarte.setOptions({
			navigationControl: true,
			navigationControlOptions: {
				style: google.maps.NavigationControlStyle.DEFAULT
				},
				streetViewControl:true
			});
		}		
}

function GoogleMapsTypeCartes(bType)
{
	if (bType){
		gObjCarte.setOptions({
			mapTypeControl: true,
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
		});
	}else{
		gObjCarte.setOptions({
			mapTypeControl: true,
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR}
			});
	}
	
}

function GoogleMapsEchelle(bEch)
{
	if (bEch){
		gObjCarte.setOptions({
			scaleControl: true
			});
	}else{
		gObjCarte.setOptions({
			scaleControl: false
			});
	}
}


