﻿var CarteItineraire;
var gdir;
var geocoder = null;
var addressMarker;
var MaCarte;

//  Définition des variables caractérisant la société
var NomSociete = 'Gold Gym\'s Talence';
var Adresse = '10, rue des Epoux Lesgourgues';
var CodePostal = '33400';
var Ville = 'Talence';
var LatitudeDestination = '44.814972';
var LongitudeDestination = '-0.590463';
var nLatitudeDestination = 44.814972;
var nLongitudeDestination = -0.590463;
var Zoom = 16;

function load() {
    if (GBrowserIsCompatible()) //  Si le navigateur est compatible avec l'API de Google Maps
    {
        MaCarte = new GMap2(document.getElementById("EmplacementDeMacarte"));
        MaCarte.setCenter(new GLatLng(nLatitudeDestination, nLongitudeDestination), Zoom);

        //  Création d'un nouveau point pour situer l'entreprise
        var point = new GLatLng(nLatitudeDestination, nLongitudeDestination);

        //  Création d'un nouveau marker par appel de la fonction CreationDuMarqueur
        var marker = CreationDuMarqueur(point);

        //  Ajout du marqueur "marker" sur la carte
        MaCarte.addOverlay(marker);
    }
    else    //  Si le navigateur n'est pas compatible avec l'API de Google Maps ...
    {
        alert("Désolé, mais votre navigateur n'est pas compatible avec Google Maps");
    }
}

//  Fonction de creation du marqueur
function CreationDuMarqueur(point) {
    var marker = new GMarker(point);
    //Un observateur d'événement est ajouté au marqueur. L'événement détecté est "click", "mouseover"...
    GEvent.addListener(marker, 'click', function() {
        var formulaire_itineraire = '<div style="width:320px; height:130px; border: 1px solid #ccc; background:#efffef; font: 1em \'trebuchet ms\',verdana, helvetica, sans-serif;">' +
			'<form action="#" onsubmit="setDirections(this.from.value, this.to.value); return false">' +
			'	<table align="center">' +
			'		<tr>' +
			'			<td colspan="2" align="center"><b>Indiquez votre adresse de départ ci-dessous</b></td>' +
			'		</tr>' +
			'		<tr>' +
			'			<td colspan="2" align="center"><input type="text" size="25" id="fromAddress" name="from" value=" " style="width:300px; height:15px; border:1px solid grey;" /></td>' +
			'		</tr>' +
			'		<tr>' +
			'			<td colspan="2" align="center"><b>Adresse d\'arrivée</b></td>' +
			'		</tr>' +
			'		<tr>' +
			'			<td colspan="2" align="center">' + NomSociete + '<br />' + Adresse + ' ' + CodePostal + ' ' + Ville + '</td>' +
			'		</tr>' +
			'		<tr>' +
			'			<td align="right" colspan="2" align="center"><input type="hidden" id="toAddress" name="to" value="' + LatitudeDestination + ', ' + LongitudeDestination + '" /></td>' +
			'		</tr>' +
			'		<tr>' +
			'			<td colspan="2" align="center"><input name="submit" type="submit" value="Afficher l\'itinéraire" /></td>' +
			'		</tr>' +
			'	</table>' +
			'</form>' +
			'</div>';
        marker.openInfoWindowHtml(formulaire_itineraire);
    });
    return marker;
}
	
//  Fonction permettant le calcul de l'itinéraire
function setDirections(fromAddress, toAddress) {

    //  Déclenche l'affichage du détail de l'itinéraire (texte)
    var resultat = document.getElementById("ReponseItineraire").style;
    if (fromAddress && fromAddress.length > 3) {
        resultat.display = '';

        //  Si gdir existe déjà, gdir est effacé
        if (gdir) { gdir.clear(); }

        //  Création d'une nouvelle carte ayant pour nom "CarteItineraire" et qui se situera en lieu et place de la <div> ayant pour identifiant (id) "EmplacementCarteItineraire"
        CarteItineraire = new GMap2(document.getElementById("EmplacementCarteItineraire"));

        //  Création d'une nouvelle direction ayant pour nom "gdir", dont le texte de l'itinéraire se situera en lieu et place de la <div> ayant pour identifiant (id) "EmplacementTexteItineraire" et la carte de l'itinéraire se situera en lieu et place de la <div> ayant pour identifiant (id) "EmplacementCarteItineraire"
        gdir = new GDirections(CarteItineraire, document.getElementById("EmplacementTexteItineraire"));

        //  Un observateur d'événement est ajouté à la direction ayant pour nom "gdir". L'évenement détecté est "error" (Détecte si une erreur est intervenue lors du calcul de l'itinéraire). Si une erreur a été détectée lors du calcul de l'itinéraire "gdir", "EnCasdErreur" sera alors executée ...
        GEvent.addListener(gdir, "error", EnCasdErreur);

        //	Chargement de l'itinéraire "gdir" - fromAddress : Adresse de Départ -  toAddress : Adresse d'arrivée - locale s laquelle la r�ponse doit appara�tre **/
        gdir.load("from: " + fromAddress + " to: " + toAddress, "locale:fr");
    }
    else {
        alert("Merci de preciser votre adresse de départ...");
        return false;

    }
}

//  Fonction détectant les erreurs lors du calcul de l'itinéraire 
function EnCasdErreur()
{
    //  Si l'adresse transmise à la direction "gdir" est inconnue ...
	if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
	{
	    // Affichage du message d'alerte " Aucun endroit géographique ne correspond. Code d erreur : " suivi du code erreur
	    alert('Aucun endroit géographique ne correspond. Code d erreur : ' + gdir.getStatus().code);
	}
	else    //  Affichage du message d'alerte " Une erreur inconnue s\'est produite." **/
	{
	    alert('Une erreur inconnue s\'est produite.' + gdir.getStatus().code);
	}
}
