
/*TC* Cration des variables globales **/


/*TC* Fonction load() **/
function loadGoogleMap() {
	if (GBrowserIsCompatible()) {
		 /** Cration d'une nouvelle carte nomme "MaCarte" s'affichant en ieu et place de la div ayant pour identifiant id="EmplacementDeMacarte" **/	
		MaCarte = new GMap2(document.getElementById('EmplacementDeMacarte'));
		/** La carte nomme "MaCarte" est centre sur le point ayant pour latitude : 47 et longitude : 3 avec un niveau de zoom gal  5 **/ 	
		MaCarte.setCenter(new GLatLng(47, 3), 5);
		/** Affichage des contrles sur la carte nomme "MaCarte" : Dplacement/Zoom - Type de carte - Mini-carte en bas  droite - Echelle **/	
		MaCarte.addControl(new GLargeMapControl());
		MaCarte.addControl(new GMapTypeControl());
		MaCarte.addControl(new GOverviewMapControl());
		MaCarte.addControl(new GScaleControl());
		/** Initialisation d'un nouveau gocodeur nomm "geocoder" **/	
		geocoder = new GClientGeocoder();
		
	}else{
		alert("D&eacute;sol&eacute;, mais votre navigateur n'est pas compatible avec Google Maps");
	}
}

/*TC* Fonction AfficheGPS() : Fonction appele pour afficher en instantan les latitudes et longitude du marqueur nomm "marker" **/
function AfficheGPS(marker){
	/** la variable "center" rcupre les latitude et longitude du marqueur nomm "marker" **/	
	center = marker.getPoint();
	/** la variable "LatitudeCarteClick" rcupre la latitude de "center" **/	
	LatitudeCarteClick = center.lat();
	/** la variable "LongitudeCarteClick" rcupre la longitude de "center" **/	
	LongitudeCarteClick = center.lng();
	/** Affichage de "LatitudeCarteClick" dans la div ayant pour identifiant id="idLatitude" **/	
	//document.getElementById('idLatitude').innerHTML = LatitudeCarteClick;
	/** Affichage de "LongitudeCarteClick" dans la div ayant pour identifiant id="idLongitude" **/	
	//document.getElementById('idLongitude').innerHTML = LongitudeCarteClick;
}

/*TC* Fonction recentrerCarte() : Fonction appele pour recentrer la carte nomme "MaCarte sur le marqueur une fois son dplacement termin **/
function recentrerCarte(){
	/** Aprs un dlai de 1000 ms on centre la carte nomme "MaCarte" sur le point ayant pour latitude "LatitudeCarteClick" et longitude "LongitudeCarteClick" **/
	window.setTimeout(function(){MaCarte.panTo(new GLatLng(LatitudeCarteClick, LongitudeCarteClick));}, 1000);
}

/*TC* Fonction AfficherAdresse(addresse) : fonction appele pour gocoder une adresse postales et permet paramtrer le marqueur nomm "marker" **/
function AfficherAdresse(addresse) {
	
	if (geocoder) {
		geocoder.getLatLng(
			addresse,
			function(point) {
				/** Si aucun point n'est trouv (autrement dit l'adresse n'a pas pu tre golocaise) **/
				if (!point) {
					/** Affichage d'un message d'alerte : Impossible de geolocaliser cette adresse **/
					alert('Impossible de geolocaliser cette adresse' + addresse);
				       /** Sinon **/
				} else {
					       /** Suppression de tous les recouvrement (marqueur, infobulle, etc.) prsents sur la carte nomme "MaCarte" **/					
					MaCarte.clearOverlays();
					       /** Cration d'un nouveau marqueur dplaable {draggable: true} nomm "marker" ancr sur le point nomm "point" **/ 
					var marker = new GMarker(point, {draggable: true});

					/** Cration d'un nouvel observateur d'vnement li au marqueur nomm "marker" **/					
				             /** L'vnement dtect est "dragstart" c'est  dire l'instant ou va dbuter le dplacement du marqueur nomm "marker" **/ 					
					GEvent.addListener(marker, 'dragstart', function() {
						 /** Quand "dragstart" est dtect, fermeture des info-bulles prsentes sur la carte nomme "MaCarte **/ 					
						MaCarte.closeInfoWindow();
					});
					
					       /** Cration d'un nouvel observateur d'vnement li au marqueur nomm "marker" **/ 					
					       /** L'vnement dtect est "drag" c'est  dire toute la priode durant laquelle le marqueur nomm "marker" est dplac **/ 					
					GEvent.addListener(marker, 'drag', function(point) {
						 /** Quand "drag" est dtect, on appelle la fonction AfficheGPS() **/ 					
						AfficheGPS(marker);
					});
					
					       /** Cration d'un nouvel observateur d'vnement li au marqueur nomm "marker" **/ 				
					       /** L'vnement dtect est "dragend" c'est  dire l'instant ou le dplacement du marqueur nomm "marker" s'achve **/ 					
					GEvent.addListener(marker, 'dragend', function(point) {
						      /** Quand "drag" est dtect, on appelle la fonction AfficheGPS() **/ 					
						AfficheGPS(marker);
						     /** puis, on appelle la fonction recentrerCarte() **/ 				
						recentrerCarte();
					});
					
					       /** Affichage sur la carte nomme "MaCarte" du marqueur nomm "marker" **/ 					
					MaCarte.addOverlay(marker);
					       /** Appel de la fonction AfficheGPS() **/ 					
					AfficheGPS(marker);
					      /** Centre la carte nomme "MaCarte" sur le point nomm "point" avec un niveau de zoom gal 15 **/ 					
					MaCarte.setCenter(point, 11);
				}
			}
		);
	}
}

