
/**
 *	Fonction permettant d'afficher une carte interactive par rapport à une adresse.
 *
 *	Entrees
 *		- id : Id de l'élément englobant la carte à générer
 *		- largeur : Largeur souhaitée pour l'élément englobant
 *		- hauteur : Hauteur souhaitée pour l'élément englobant
 *		- adresse : Adresse souhaitée sur la carte
 *		- contenuMarker : Contenu à afficher dans le marker
 *		- niveauZoom : niveau de zoom souhaité
 */
function getMap(id, largeur, hauteur, adresse, contenuMarker, niveauZoom)
{
	var element = document.getElementById(id);
	
	// Changement de la taille de l'élément encapsulant la carte
	element.style.width = largeur;
	element.style.height = hauteur;
	
	// Création de la map
	//YahooMap(element, adresse, contenuMarker, niveauZoom);
	GoogleMap(element, adresse, contenuMarker, niveauZoom);
}

/**
 * Fonction créant une carte spécifique à l'api Yahoo Map
 */
function YahooMap(element, adresse, contenuMarker, niveauZoom)
{
	var carte = new YMap(element);  
   
    // Ajoute un contrôle pour le type de carte à afficher (Satellite, normal ou mixe)
    carte.addTypeControl();  
   
    // Ajoute un contrôle de zoom  
    carte.addZoomLong();  
   
    // Ajoute un contrôle avec des flèches pour se déplacer dans la carte
    carte.addPanControl();  
   
    /* 
		Changement du type de carte :
			- Satellite : YAHOO_MAP_SAT
			- Normal : YAHOO_MAP_REG
			- Mixte : YAHOO_MAP_HYB
	*/
    carte.setMapType(YAHOO_MAP_HYB);  
   
    // Affiche la map  
    carte.drawZoomAndCenter(adresse, niveauZoom);  
	
	// Ajout d'un marker avec le texte spécifié en paramètre
	var marker = new YMarker(adresse);
	
	marker.addAutoExpand(contenuMarker);
	
	carte.addOverlay(marker);
}

/**
 *	Fonction créant une carte spécifique à l'api Google Map
 */
function GoogleMap(element, adresse, contenuMarker, niveauZoom)
{
	if (GBrowserIsCompatible())
	{
		var geocoder = new GClientGeocoder();
		
		geocoder.getLatLng(
			adresse,
			function(point) {
				// Si le point géographique a été trouvé alors on crée la carte
				if (point)
				{
					var carte = new GMap2(element);
					carte.addControl(new GLargeMapControl());
					carte.addControl(new GMapTypeControl());
					
					/* 
						Changement du type de carte :
							- Satellite : G_SATELLITE_MAP
							- Normale : G_NORMAL_MAP
							- Mixte : G_HYBRID_MAP
							- Physique : G_PHYSICAL_MAP
					*/
					carte.setMapType(G_HYBRID_MAP);
					carte.setCenter(point, niveauZoom);
					
					var marker = new GMarker(point);
					carte.addOverlay(marker);
					GEvent.addListener(
						marker, 
						"click", 
						function() {
							marker.openInfoWindowHtml(contenuMarker);
						}
					);
				}
				// Sinon on affiche autre chose
				else 
				{
					element.innerHTML = 'Lieu géographique non trouvé. Veuillez être plus précis.';
				}
			}
		);
	}
	else
	{
		element.innerHTML = "Votre navigateur internet n'est pas compatible";
	}
}
