
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// Variables globales
// [map et geocoder sont utilisées tout du long par l'API Google. 
//Nb_Decal représente le décallage entre deux markers situés aux mêmes coordonnées
//List_Markers, List_Info_Windows, List_Polylines et Current_Positions sont des tableaux contenant les objets GoogleMaps qui sont utilisés.
// Taille_Xml représente la taille du tableau XmL, c'est à dire le nombre de Sejours]
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

var map;
var geocoder;
var List_Markers = new Array();
var List_Info_Windows = new Array();
var List_Polylines = new Array();
var List_Positions = new Array();
var Current_Positions = new Array(0);
var Nb_Decal = 0.0008;
var Taille_Xml;

//Pour afficher les départements d'une région ou les région d'un pays, ajouter le ct de la région/pays dans le tableau ci dessous
var Tab_Regions_With_Dep = new Array(2,23);
var Tab_Pays_With_Region = new Array();
Tab_Pays_With_Region[0] = 1;


// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Sart_Recherche
//Description___: Fonction appelée si on veut géolocaliser un séjour précis du site
//Params________: Id_Sejour -> Ct du séjour souhaité
//				  Id_Pays -> Ct du Pays souhaité
//				  Id_Region -> Ct de la région souhaitée
//Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function Sart_Recherche(Id_Sejour, Id_Heberg, Id_Pays, Id_Region, Id_Departement, Id_Zone, Cat, Nom_Sejour)
{
	if (Id_Pays !=0)
	{
		var Length_Pays = document.Localisation.Pays_Choix.length;
		var Length_Region = document.Localisation.Region_Choix.length;
		var Length_Zone = document.Localisation.Zone_Choix.length;
		

		for (var Index =0; Index < Length_Pays; Index++)
		{
			if (document.Localisation.Pays_Choix[Index].value == Id_Pays)
			{
				document.Localisation.Pays_Choix.selectedIndex = Index;
			}
		}
		
		if (Id_Region != 0)
		{
			for (var Index2 =0; Index2 < Length_Region; Index2++)
			{
				if (document.Localisation.Region_Choix[Index2].value == Id_Region) 
				{
					document.Localisation.Region_Choix.selectedIndex = Index2;
					var Region_Name = document.Localisation.Region_Choix[Index2].text;
				}
			}
		}
		
		if (Id_Zone != 0)
		{
			for (var Index3 =0; Index3 < Length_Zone; Index3++)
			{
				if (document.Localisation.Zone_Choix[Index3].value == Id_Zone) 
				{
					document.Localisation.Zone_Choix.selectedIndex = Index3;
				}
			}
		}
		
		Gestion_Pays();
		
		var Length_Departement = document.Localisation.Departement_Choix.length;
		if ((Id_Departement != 0) && (document.getElementById('Departement_Label').style.display=="block"))
		{
			for (var Index4 =0; Index4 < Length_Departement; Index4++)
			//for (var Index4 in document.Localisation.Departement_Choix)
			{
				//alert(Index4);
				if (document.Localisation.Departement_Choix[Index4].value == Id_Departement) 
				{
					document.Localisation.Departement_Choix.selectedIndex = Index4;
					var Region_Name = document.Localisation.Departement_Choix[Index4].text;
				}
			}
		}
			
		Gestion_Carte(Id_Sejour, Id_Heberg);
		
	}
	
}//fin function Start_Recherche

 // _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
 // function : Initialize
 //Description___: Fonction appelée au chargement de la page, ayant pour but d'afficher la carte. Crée les objets Maps et Geocoder, et adapte la taille de la carte en fonction de la résolution de l'écran de l'utilisateur
 //Params________: 
 //Renvoi________: 
 // _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
  function Affiche_Carte_Deb() 
  {
	
	//Correction d'un bug d'affichage IE
	if (navigator.appName)
	{
		if(navigator.appName== 'Microsoft Internet Explorer')
		{
			document.body.style.overflowY = "hidden";
			document.getElementById('LoadingDiv').innerHTML = '<b>Chargement ...</b>';
		}
	}
	
	//Centrage de la map sur Paris
    var latlng = new google.maps.LatLng(48.85861640881589, 2.3459243774414062);
    var myOptions = 
	{
      zoom: 1,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
	  disableDoubleClickZoom: false //centre la map au double clic si false
    };
    map = new google.maps.Map(document.getElementById("map"), myOptions);
	geocoder = new google.maps.Geocoder();
	
	Gestion_Pays(); //Remplissage des critères de recherche géographiques
	
	//Dimensionnement de la page en fonction de la résolution de l'écran
	if (screen.width > 1024) 
	{
		document.body.style.background = "url("+ADRESSE_SITE+"images/fond-design-great.jpg)";
		document.body.style.backgroundPosition = "center top";
		document.getElementById('map').style.height = (screen.height - 360)+"px";
		document.getElementById('map').style.width = (screen.width - 385)+"px";
		map.setZoom(2);
	}
	
	//On masque la fenêtre de chargement
	document.getElementById('StartDiv').style.display ="none";
	
  }//fin function Initialize()

  
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function Gestion_Pays  
// Descrition____: affiche les champs de recherche en fonction du pays sélectionné
// Params________: 
// Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function Gestion_Pays()  
{
    var Pays = document.getElementById('Pays_Choix').value; 
	var In_Array = false;
	
	for (var Id_Country in Tab_Pays_With_Region)
	{
		if (Pays == Tab_Pays_With_Region[Id_Country]) //Si le pays possède des régions
		{
			document.Localisation.Region_Choix.style.display="block";
			document.getElementById('Region_Label').style.display="block";
			In_Array = true;
		}
	}
	if (!In_Array)
	{
		document.Localisation.Region_Choix.style.display="none";
		document.getElementById('Region_Label').style.display="none";
	}
	Gestion_Departements(); //Affiche si besoin les départements
	
	if (Pays == 28) // Si c'est la Grande Bretagne
	{
		document.Localisation.Zone_Choix.style.display="block";
		document.getElementById('Zone_Label').style.display="block";
	}
	else 
	{
		document.Localisation.Zone_Choix.style.display="none";
		document.getElementById('Zone_Label').style.display="none";
	}
}//fin function Gestion_Pays  



// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function Gestion_Departements  
// Descrition____: Dans certains cas, affiche les départements correspondant à la région 
// Params________: 
// Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function Gestion_Departements()
{
	var Region = document.getElementById('Region_Choix').value; 
	var In_Array = false;
	
	for (var Id_Region in Tab_Regions_With_Dep)
	{
		if ((Region == Tab_Regions_With_Dep[Id_Region]) && (document.getElementById('Region_Label').style.display=="block")) //Si la région possède des départements
		{
			var Taille = document.Localisation.Departement_Choix.length -1;
			for (var i = 0; i <	Taille; i++)
			{
				//On réinitialise le select
				document.Localisation.Departement_Choix[i] = null;
			}
			var Num = 0;
			for (var Dep in Tab_Depart)
			{
				if (Tab_Depart[Dep] == Region)
				{
					//On rempli le select avec les départements correspondants
					document.Localisation.Departement_Choix[Num] = new Option(Dep);
					document.Localisation.Departement_Choix[Num].value = Tab_Depart_Num[Dep]; 
					Num ++;				
				}			
			}
			//on affiche le select des départements
			document.Localisation.Departement_Choix.style.display="block";
			document.getElementById('Departement_Label').style.display="block";
			
			In_Array = true;
		}
	}
	if (!In_Array)
	{
		//On masque le select des départements
		document.Localisation.Departement_Choix.style.display="none";
		document.getElementById('Departement_Label').style.display="none";
	}
	
}//fin function Gestion_Departements



// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function Recherche_Avancée()  
// Descrition____: Gère les actions de recherche avancée
// Params________: event : évènement (clic) correspondant à la recherche
// Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function Recherche_Avancee(event)
{
	Stop_Event(event);//évite d'exécuter le lien
	
	if (document.getElementById('Avancee').style.display == 'none')
	{
		document.getElementById('Avancee').style.display ='block';
		document.getElementById('RA').innerHTML = '<em>Masquer</em>';
	}
	else 
	{
		//On masque le formulaire avancé et on réinitialise tous les champs
		document.getElementById('Avancee').style.display = 'none';
		document.getElementById('Age_Choix').value = 0;
		document.getElementById('date').value = '';
		document.getElementById('date2').value = '';
		document.getElementById('Ville_Choix').value = 0;
		document.getElementById('Saison_Choix').value = 0;
		document.getElementById('Activite_Choix').value = 0;
		document.getElementById('Prix_Choix').value = '';
		document.getElementById('Category_Choix').value = 0;
		document.getElementById('RA').innerHTML = '<em>Recherche Avancée</em>';
	}
	
}//fin Recherche_Avancée()


// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : multiClass(eltId)
// Descrition____: gère les onglets des infobulles
// Params________: eltId -> Id de l'onglet que l'on veut afficher
// Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function multiClass(eltId, event) 
{
	//Désactive le lien pour éviter les sauts de page
	/*if (event.preventDefault) 
	{
		event.preventDefault();  // FF
	}
	event.returnValue = false; 
	event.cancelBubble = true;*/
	Stop_Event(event);

	arrLinkId = new Array('_0','_1','_2','_3'); // 1 champs par onglet
	intNbLinkElt = new Number(arrLinkId.length);
	arrClassLink = new Array('current','ghost'); // current et ghost sont les 2 classes
	strContent = new String()
	for (i=0; i<intNbLinkElt; i++) 
	{
		strContent = "menu"+arrLinkId[i];
		if ( arrLinkId[i] == eltId ) 
		{
			document.getElementById(arrLinkId[i]).className = arrClassLink[0]; // courant
			document.getElementById(strContent).className = 'on content';
		} 
		else 
		{
			document.getElementById(arrLinkId[i]).className = arrClassLink[1]; //masqué
			document.getElementById(strContent).className = 'off content';
		}
	}	
	
}//fin function multiClass(eltId) 


// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Stop_Event
// Descrition____: stop un évènement; utile pour éviter le rechargement d'une page en js
// Params________: event -> évènement à arrêter
// Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function Stop_Event(event)
{
	if (event.preventDefault) 
	{
		event.preventDefault();  // FF
	}
	event.returnValue = false; 
	event.cancelBubble = true;			
}

// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Erase
// Description __: Lors d'une recherche, remet les metas à leur valeur initiale
// Params________: 
// Renvoi________:
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function Erase()
{
	document.title = 'Moteur de recherche cartographique de vacances enfants et colonie de vacances pour les enfants';
	document.getElementById('Titre_Sejour').innerHTML = '';
	
}//fin function Erase

// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Loading()
// Description __: Affiche "Chargement" pendant le déroulement d'une recherche, tout en empêchant de lancer plusieurs recherches
// Params________: 
// Renvoi________:
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
function Loading()
{
	document.getElementById('LoadingDiv').style.display="block";
	document.getElementById('Button_Envoi').style.display="none";

}//fin function Loading()


// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : End_Loading()
// Description __: Arrête d'afficher "chargement"
// Params________: 
// Renvoi________:
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
function End_Loading(i)
{
	//Si c'est le dernier marker à être créé (Taille_Xml) ou si il y a eu une erreur (-1)
	if ((i == Taille_Xml) || (i == -1))
	{
		document.getElementById('LoadingDiv').style.display="none";
		document.getElementById('Button_Envoi').style.display="block";
	}
	
}//fin function End_Loading(i)			
			
			
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Gestion_Carte
// Description __: fonction appelée lors d'une nouvelle Recherche, ayant pour but d'afficher la carte et les marqueurs
// Params________: Id_Sejour (opt) -> Ct du Séjour 
//				   Id_Heberg (opt) -> Ct de l'hébergement
// Renvoi________:
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
  function Gestion_Carte(Id_Sejour, Id_Heberg)
  {	
	//Vérifie qu'un pays a bien été sélectionné
	if (document.Localisation.Pays_Choix.value == 0)
	{
		alert('Veuillez spécifier un nom de pays');
		End_Loading(-1);
		return false;
	}
	
	var Contenu_Xml = Recherche_Sejours_BDD(Id_Sejour, Id_Heberg); //récupération du contenu de la BDD
	var Tab_Xml = new Array();
	Tab_Xml = xml2array(Contenu_Xml);
	
	//Si la requête n'a pas envoyé de résultat
	if (!Tab_Xml)
	{
		alert('Il n\'y a pas de résultat pour cette recherche');
		End_Loading(-1);
		return false;
	}
	
	//suppression des markers, des infobulles et des polylines
	for (var y in List_Markers)
	{
		List_Markers[y].setVisible(false);
	}
	for (var x in List_Info_Windows)
	{
		List_Info_Windows[x].close();
	}
	for (var z in List_Polylines)
	{
		List_Polylines[z].setMap(null);
	}
	List_Markers = new Array();
	List_Polylines = new Array();
	List_Info_Windows = new Array();
	List_Positions = new Array();
	Current_Positions = new Array();
	
	
	//Vérification qu'il y a plus d'un séjour et modification du tableau en conséquence
	if (!Tab_Xml['CATALOGUE']['SEJOUR'][0])
	{
		Temp_Tab = new Array('CATALOGUE');
		Temp_Tab['CATALOGUE'] = new Array('SEJOUR');
		Temp_Tab['CATALOGUE']['SEJOUR'] = new Array();
		Temp_Tab['CATALOGUE']['SEJOUR'][0] = Tab_Xml['CATALOGUE']['SEJOUR'];
		Tab_Xml = new Array();
		Tab_Xml = Temp_Tab;
	}
	
	//Calcul du nombre de séjours présents dans le tableau XmL
	for (var j in Tab_Xml['CATALOGUE']['SEJOUR'])
	{
		Taille_Xml=j;
	}
	
	//Parcours du tableau des séjours pour créer un marker par séjour
	for (var i in Tab_Xml['CATALOGUE']['SEJOUR'])
	{	
		var Affiche_Bulle = false;
		if (Tab_Xml['CATALOGUE']['SEJOUR'][i]['ID'] == Id_Sejour)
		{
			Affiche_Bulle = true;
		}
		
		var Adresse = Concatenation_Adresse(Tab_Xml,i);
		
		//Recherche de la présence de coordonnées dans la BDD
		if ((Tab_Xml['CATALOGUE']['SEJOUR'][i]['LATHEBERG'])&&(Tab_Xml['CATALOGUE']['SEJOUR'][i]['LNGHEBERG']))
		{
			var Position_Marker = new google.maps.LatLng(Tab_Xml['CATALOGUE']['SEJOUR'][i]['LATHEBERG'],Tab_Xml['CATALOGUE']['SEJOUR'][i]['LNGHEBERG']);
			List_Positions[i] = Position_Marker; //ajout de la position au tableau global
			
			//Si cette position n'appartient pas au tableau associatif des positions courantes, on l'ajoute.
			if (!Current_Positions[Position_Marker.lat().toString()+Position_Marker.lng().toString()])
			{
				Current_Positions[Position_Marker.lat().toString()+Position_Marker.lng().toString()]=0;
			}
			Creation_Marker(Tab_Xml, i, Position_Marker, Taille_Xml, Affiche_Bulle);
			
		}
		else if (geocoder) //S'il n'y a pas de coordonnées dans la BDD, on utilise le geocodeur google pour géolocaliser l'Adresse
		{
			Envoi(Adresse, Tab_Xml, i, Taille_Xml, Affiche_Bulle);
		}
		else 
		{
			alert("Le géocodeur Google est actuellement en maintenance, excusez nous pour le dérangement");
		}
	}
  }//fin function Gestion_Carte(Recherche)
  
  
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Recherche_Sejours_BDD
// Description __: exécute une page php et récupère les informations du sejour en xml
// Params________: Id_Sejour (opt) -> Ct du Séjour 
//				   Id_Heberg (opt) -> Ct de l'hébergement
// Renvoi________: Object_Xml -> Objet comprenant le code Xml
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
  function Recherche_Sejours_BDD(Id_Sejour, Id_Heberg)
  {
	//Récupération des données du formulaire de recherche
	var Formulaire = document.Localisation;
	var Pays = Formulaire.Pays_Choix.value;
	var Region = Formulaire.Region_Choix.value;
	var Departement = Formulaire.Departement_Choix.value;
	var Age = Formulaire.Age_Choix.value;
	var Date_Depart = Formulaire.date.value;
	var Date_Retour = Formulaire.date2.value;
	var Saison = Formulaire.Saison_Choix.value;
	var Ville_Depart = Formulaire.Ville_Choix.value;
	var Activite = Formulaire.Activite_Choix.value;
	var Prix = Formulaire.Prix_Choix.value;
	var Category = Formulaire.Category_Choix.value;
	var Zone = Formulaire.Zone_Choix.value;

	//On check s'il faut prendre en compte ou non le département et la région et la zone
	if (Formulaire.Departement_Choix.style.display == 'none') 
	{
		Departement = '';
	}
	if (Formulaire.Region_Choix.style.display == 'none')
	{
		Region = 0;
	}
	if (Formulaire.Zone_Choix.style.display == 'none')
	{
		Zone = 0;
	}
	

	var Object_Xml;
	//détermination du type d'objet XMLHTTP en fonction du navigateur
	var Xhr_Object = Get_XMLHTTP();	
	 
	//Travail en mode synchrone
    Xhr_Object.open("POST", ADRESSE_SITE + "includes/recherche.php", false); 
	
	Xhr_Object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var Data = "Region="+Region+"&Pays="+Pays+"&Age="+Age+"&Date_Depart="+Date_Depart+"&Date_Retour="+Date_Retour+"&Saison="+Saison+"&Ville_Depart="+Ville_Depart+"&Activite="+Activite+"&Prix="+Prix+"&Category="+Category+"&Departement="+Departement+"&Zone="+Zone;
	
	//Si on est en recherche directe d'hébergement
	if (Id_Heberg)
	{
		Data +="&Id_Heberg="+Id_Heberg;
	}
			
	Xhr_Object.send(Data); // Envoie de Data comme paramètre POST
	
	if(Xhr_Object.readyState == 4) //Etat dans lequel la transaction est terminée
	{				
			Object_Xml = Xhr_Object.responseXML;
			//alert(' Données SQL récupérées ');
			return Object_Xml;
	}  
  }//fin function Recherche_Sejours_BDD(reRegion)

  
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Get_XMLHTTP
// Description __: Crée une Requête-Objet compatible avec le navigateur courant
// Params________: 
// Renvoi________: Xhr -> Requête-Objet servant à communiquer avec le serveur
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
function Get_XMLHTTP()
{
	var Xhr=null;
	if(window.XMLHttpRequest)
	{ // Firefox et autres
		Xhr = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{ // Internet Explorer
		try 
		{
			Xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) 
		{
			try 
			{
				Xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e1) 
			{
			Xhr = null;
			}
		}
	}
	else 
	{ // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	}
return Xhr;

}//function Get_XMLHTTP()

  
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function :Concatenation_Adresse(Tab_Xml,i)
// Description __: récupère les trois composantes d'adresse du tableau xml et les concatène en un string.
// Params________: Tab_Xml -> Tableau contenant les données sur les sejours
//				   i -> id du sejour dans Tab_Xml
// Renvoi________: Adresse -> String contenant l'adresse à géolocaliser

// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
  
  function Concatenation_Adresse(Tab_Xml,i)
  {
	var Nom_Lieu = Tab_Xml['CATALOGUE']['SEJOUR'][i]['NOMLIEU'];
	var Commune = Tab_Xml['CATALOGUE']['SEJOUR'][i]['COMMUNE'];
	var Departement = Tab_Xml['CATALOGUE']['SEJOUR'][i]['DEPARTEMENT'];
	var Nom_Heberg = Tab_Xml['CATALOGUE']['SEJOUR'][i]['NOMHEBERG'];
	var Adresse = Commune + "," + Departement;
	
	return Adresse;
  }//fin function Concatenation_Adresse(Tab_Xml,i)
  
  
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Envoi
// Description __: Géolocalise un adresse
// Params________: Adresse -> String contenant l'adresse à géolocaliser
//				   Tab_Xml -> Tableau contenant les données sur les sejours
//				   i -> id du sejour dans Tab_Xml
//				   Taille_Xml -> Taille du tableau Xml
//				   Affiche_Bulle -> Indique si il faudra ou non afficher la bulle au dessus du marker
// Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-   
function Envoi(Adresse, Tab_Xml, i, Taille_Xml, Affiche_Bulle)
{
	geocoder.geocode( { 'address': Adresse}, function(results, status) 
	{
		if (status == google.maps.GeocoderStatus.OK) //Si la localisation a réussi
		{
			var Position_Marker = results[0].geometry.location;
			List_Positions[i] = Position_Marker; //ajout de la position au tableau global
			
			//Initialisation de la coordonnée
			if (!Current_Positions[Position_Marker.lat().toString()+Position_Marker.lng().toString()])
			{
				Current_Positions[Position_Marker.lat().toString()+Position_Marker.lng().toString()] = 0;
			};
			
			Creation_Marker(Tab_Xml, i, Position_Marker, Taille_Xml, Affiche_Bulle); 		
		}
		else 
		{
			//alert("Geocode was not successful for the following reason: " + status);
		}
	});
}//fin function Envoi(Tab_Xml, i)

  
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// Function Creation_Marker(Tab_Xml, i, Marker_Loc, Taille_Xml)
// Description __: Place un marker sur la carte avec toutes les informations sur le séjour
// Params________: Tab_Xml -> Tableau contenant les données sur les sejours
//				   i -> id du sejour dans Tab_Xml
//				   Marker_Loc -> LatLng object contenant le positionnement géographique du marker
//				   Taille_Xml -> Nombre de sejours contenu dans le tableau
//				   Affiche_Bulle -> Indique si il faudra ou non afficher la bulle au dessus du marker
// Renvoi________: 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
function Creation_Marker(Tab_Xml, i, Marker_Loc, Taille_Xml, Affiche_Bulle) 
 {  
 	//Extraction des données comprises dans le tableau
    var Localisation = Concatenation_Adresse(Tab_Xml,i);
	var	Nom_Sejour= Tab_Xml['CATALOGUE']['SEJOUR'][i]['NOMSEJOUR'];
	var	Url= Tab_Xml['CATALOGUE']['SEJOUR'][i]['URLSEJOUR'];
	var Url_Commande = Tab_Xml['CATALOGUE']['SEJOUR'][i]['URLCOMMANDE'];
	var	Slogan= Tab_Xml['CATALOGUE']['SEJOUR'][i]['SLOGAN'];
	var	Ref= Tab_Xml['CATALOGUE']['SEJOUR'][i]['REF'];
	var	Date_Deb = Tab_Xml['CATALOGUE']['SEJOUR'][i]['DATEDEB'];
	var Date_Fin = Tab_Xml['CATALOGUE']['SEJOUR'][i]['DATEFIN'];
	var Lieu = Tab_Xml['CATALOGUE']['SEJOUR'][i]['LIEU'];
	var	Tab_Lat_Dep = Tab_Xml['CATALOGUE']['SEJOUR'][i]['LATDEP']['LAT'];
	var	Tab_Long_Dep = Tab_Xml['CATALOGUE']['SEJOUR'][i]['LONGDEP']['LONG'];
	if (Tab_Xml['CATALOGUE']['SEJOUR'][i]['VILLEDEP'])
	{
		var	Tab_Villes_Dep = Tab_Xml['CATALOGUE']['SEJOUR'][i]['VILLEDEP']['VILLE'];
	}
	var	Descript = Tab_Xml['CATALOGUE']['SEJOUR'][i]['DESCRIPT'];
	var Tab_Images_Sejour = Tab_Xml['CATALOGUE']['SEJOUR'][i]['ALBUMSEJOUR']['PHOTO'];
	var Tab_Images_Heberg = Tab_Xml['CATALOGUE']['SEJOUR'][i]['ALBUMHEBERG']['PHOTO'];
	var Tab_Images_Sejour_G = Tab_Xml['CATALOGUE']['SEJOUR'][i]['ALBUMSEJOUR']['PHOTOG'];
	var Tab_Images_Heberg_G = Tab_Xml['CATALOGUE']['SEJOUR'][i]['ALBUMHEBERG']['PHOTOG'];
	var	Nom_Heberg = Tab_Xml['CATALOGUE']['SEJOUR'][i]['NOMHEBERG'];
	var	Descrip_Heberg = Tab_Xml['CATALOGUE']['SEJOUR'][i]['DESCRIHEBERG'];
	var	Url_Heberg = Tab_Xml['CATALOGUE']['SEJOUR'][i]['URLHEBERG'];
		
		//On check si il y a une ou plusieurs photos et on met en forme
		if (Tab_Xml['CATALOGUE']['SEJOUR'][i]['ALBUMSEJOUR']['PHOTO'] == '[object Object]')
		{
			Url_Image_Front = Tab_Xml['CATALOGUE']['SEJOUR'][i]['ALBUMSEJOUR']['PHOTO'][0];
		}
		else
		{
			Url_Image_Front = Tab_Xml['CATALOGUE']['SEJOUR'][i]['ALBUMSEJOUR']['PHOTO'];
		}
		
	var	Prix = Tab_Xml['CATALOGUE']['SEJOUR'][i]['PRIX'];
	var	Age_Deb = Tab_Xml['CATALOGUE']['SEJOUR'][i]['AGEDEB'];
	var	Age_Fin = Tab_Xml['CATALOGUE']['SEJOUR'][i]['AGEFIN'];
	var	Lat_Heberg = Tab_Xml['CATALOGUE']['SEJOUR'][i]['LATHEBERG'];
	var	Lng_Heberg = Tab_Xml['CATALOGUE']['SEJOUR'][i]['LNGHEBERG'];
	
	//Positionnement de la vue
    map.setCenter(Marker_Loc);
	
	//Le zoom dépend de la recherche
	if ((document.Localisation.Region_Choix.style.display == 'none') && (document.Localisation.Zone_Choix.style.display == 'none')) // Si juste Pays
	{
		//Si Canada ou Usa
		if ((document.Localisation.Pays_Choix.value == 7) || (document.Localisation.Pays_Choix.value == 8))
		{
			map.setZoom(4);
		}
		else
		{
			map.setZoom(5);
		}
	}
	else if (document.Localisation.Departement_Choix.style.display == 'none') //Si pays + Region
	{
		map.setZoom(7);
	}
	else // Si pays + region + département
	{
		map.setZoom(9)
	}
	
	
	var Nb_Positions = List_Positions.length;	
			
	//Décallage du Marker s'il existe déjà un marker à cette position
	var Bleu = false; // devient true si un marker a été décallé
	if ( Nb_Positions != 0)
	{
		for (p=0; p<=Taille_Xml; p++)
		{
			if ((Marker_Loc.equals(List_Positions[p])) && (p != i))//Comparaison des coordonnées
			{
				//Current_position est un array associatif qui contient comme clé une position et comme valeur le nombre de markers associés(0 = 1 marker, etc ...)
				Current_Positions[Marker_Loc.lat().toString()+Marker_Loc.lng().toString()] = Current_Positions[Marker_Loc.lat().toString()+Marker_Loc.lng().toString()] + 1 ;
				
				//On décalle les coordonnées du marker
				var Marker_Lat = Marker_Loc.lat();
				var Marker_Lng = Marker_Loc.lng();
				Marker_Loc = new google.maps.LatLng(Marker_Lat - 0.0001, (Marker_Lng + (Current_Positions[Marker_Loc.lat().toString()+Marker_Loc.lng().toString()]) * Nb_Decal));
					
				//Création d'un icône différent pour les markers décalés	
				var Image_Marqueur = new google.maps.MarkerImage('images/marker-blue.png',  new google.maps.Size(20, 34), new google.maps.Point(0,0), new google.maps.Point(10, 34));
				var Ombre_Marqueur = new google.maps.MarkerImage('images/marker_cw_shadow.png',  new google.maps.Size(38, 36), new google.maps.Point(0,0), new google.maps.Point(12, 36));
					 
					
			Bleu = true;	
			}
		}
	}
	List_Positions.push(Marker_Loc); // on ajoute le marker au tableau global
		  
		  //Création du marker
          var marker = new google.maps.Marker(
		  {
              map: map, 
              position: Marker_Loc,
			  title: Nom_Sejour,
			  icon : Image_Marqueur, //Change l'icône si Image_Marqueur existe
			  shadow : Ombre_Marqueur // Change l'ombre si Ombre_Marqueur existe
			 
          });
		  List_Markers.push(marker);  
		  
		  //création des polylines pour relier les villes de départ
		  var Tab_Current_Polylines = new Array();
		  var Line_Depart = new Array();
		  
		  if (Tab_Lat_Dep != '[object Object]')	 // Si il n'y a qu'une seule ville de départ, on met en forme 
		  {
				var Temp = Tab_Lat_Dep;
				var Temp2 = Tab_Long_Dep;
				var Temp3 = Tab_Villes_Dep;
				Tab_Lat_Dep = new Array();
				Tab_Long_Dep = new Array();
				Tab_Villes_Dep = new Array();
				Tab_Lat_Dep[0] = Temp;	
				Tab_Long_Dep[0] = Temp2;
				Tab_Villes_Dep[0] = Temp3;
		 }
			
		  //Parcours du tableau des villes de départ
		  for (var k in Tab_Lat_Dep)
		  {
				var Point_Dep = new google.maps.LatLng(Tab_Lat_Dep[k],Tab_Long_Dep[k]);
				//localisation de la ville de départ
				var Line_Depart = [Marker_Loc, Point_Dep]; //création du lien entre la ville de départ et le séjour
				
				var Trace_Line_Depart = Creation_Polyline(Line_Depart, Tab_Villes_Dep[k]);
				
				List_Polylines.push(Trace_Line_Depart);
				Tab_Current_Polylines.push(Trace_Line_Depart);
		  }
		  
		
		 
		 //création du contenu HTML de l'infobulle, qui s'affichera au clic sur le marker
			var HTML = '<div id="container">'+
		
		//Création des onglets
		'<ul id="menu">'+
			'<li class="menu0">'+
				'<a href="#" id="_0" class="current" onclick="multiClass(this.id, event)" title="Accueil">Accueil</a>'+
			'</li>'+
			'<li class="menu1">'+
				'<a href="#" id="_1" class="ghost" onclick="multiClass(this.id, event)" title="Description">Description</a>'+
			'</li>'+
			'<li class="menu2">'+
				'<a href="#" id="_2" class="ghost" onclick="multiClass(this.id, event)" title="Photos">Photos</a>'+
			'</li>'+
			'<li class="menu3">'+
				'<a href="#" id="_3" class="ghost" onclick="multiClass(this.id, event)" title="Hébergement">Hébergement</a>'+
			'</li>'+
		'</ul>'+
		'<br style="line-height: 5px;"/>'+

		//Contenu de l'onglet Accueil
		'<div id="menu_0" class="on content">'+
			'<span class = Titre><a href="'+Url+'" title="CapJuniors" target="_blank">'+Nom_Sejour+'</a></span><br />'+
			'<span class = Slogan>'+Slogan+'</span><br />'+
			'<span class = Image><img src="'+Url_Image_Front+'" alt = "Phtoto non disponible" /></span>'+
			'<span class = Details>'+
				'<table>'+
					'<tr><td>Réf : '+Ref+'</tr></td>'+
					'<tr><td>Du : '+Date_Deb+' au '+Date_Fin+'</tr></td>'+
					'<tr><td>De : '+Age_Deb+' à '+Age_Fin+' ans</tr></td>'+
					'<tr><td>Lieu : '+Lieu+'</tr></td>'+
					'<tr><td>A partir de : <a href="'+Url_Commande+'" title="Tarifications" target="_blank">'+Prix+'</a> € &nbsp;&nbsp;&nbsp;<a href="'+Url_Commande+'" title="Villes de départ" target="_blank">Villes de départ</a></tr></td>'+
					
										
				'</table>'+
			'</span>'+
			'<span class = Petit> En savoir plus : <a href="'+Url+'" title="CapJuniors" target="_blank">sur le séjour</a> \/ <a href="'+Url_Heberg+'" title="CapJuniors" target="_blank">sur l\'hébergement</a></span>'+
		'</div>'+
		
		//Contenu de l'onglet Description
		'<div id="menu_1" class="off content">'+
		
			'<span class = Descript><p>';
			
		//Suppression des caractères d'échappement Xml
		Descript = Descript.replace(/&lt;/gi,"<");	
		Descript = Descript.replace(/&gt;/gi,">");
		HTML += Descript;
			
		HTML +=	'</p></span>'+
		'</div>'+
		
		//Contenu de l'onglet Photos
		'<div id="menu_2" class="off content">'+
			'<div id="Galerie">'; //Affichage des petites photos cliquables
			
		if (Tab_Images_Sejour != '[object Object]')//S'il n'y a qu'une seule image, on met en forme
		{
			var Temp4 = Tab_Images_Sejour;
			var Temp5 = Tab_Images_Sejour_G;
			Tab_Images_Sejour = new Array();
			Tab_Images_Sejour_G = new Array();
			Tab_Images_Sejour[0] = Temp4;	
			Tab_Images_Sejour_G[0] = Temp5;
		}
		//boucle des images
		for (var h in Tab_Images_Sejour)
		{
			HTML +=	'<img src="'+Tab_Images_Sejour[h]+'" onmousemove="Set_DIV_Content(\'Portrait\',\'<img src=\\\''+Tab_Images_Sejour_G[h]+'\\\'/>\');" width=33 height=33/>';
		}
			
			
		if (Tab_Images_Heberg != '[object Object]')//S'il n'y a qu'un seule image, on met en forme
		{
			var Temp6 = Tab_Images_Heberg;
			var Temp7 = Tab_Images_Heberg_G;
			Tab_Images_Heberg = new Array();
			Tab_Images_Heberg_G = new Array()
			Tab_Images_Heberg[0] = Temp6;
			Tab_Images_Heberg_G[0] = Temp7;			
		}

		for (var g in Tab_Images_Heberg)
		{
			HTML +=	'<img src="'+Tab_Images_Heberg[g]+'"  onmousemove="Set_DIV_Content(\'Portrait\',\'<img src=\\\''+Tab_Images_Heberg_G[g]+'\\\'/>\');" width=33 height=33/>';
		}
			
		HTML +=	'</div>'+
			'<div id="Portrait">'; //affichage de la photo en grand
			
			if (Tab_Images_Sejour != '[object Object]')
			{
				HTML += '<img src="'+Tab_Images_Sejour_G+'"/>';
			}
			else HTML += '<img src="'+Tab_Images_Sejour_G[0]+'"/>';
			
		HTML +=	'</div>'+
		'</div>'+
		
		//Contenu de l'onglet Hébergement
		'<div id="menu_3" class="off content">'+
			'<span class = Titre><a href="'+Url_Heberg+'" title="CapJuniors" target="_blank">'+Nom_Heberg+'</a></span><br />'+
			'<span class = Descript>'+
			'<p>';
		//Suppression des caractères d'échappement Xml
		Descrip_Heberg = Descrip_Heberg.replace(/&lt;/gi,"<");
		Descrip_Heberg = Descrip_Heberg.replace(/&gt;/gi,">");
		HTML += Descrip_Heberg+
		'<p>'+
		'</span>'+
		'</div>'+
		
	'</div>';//Fin du contenu de l'infobulle
			
		  // Options de l'info-bulle
		  var myWindowOptions = 
		  {
			width: 410,
			content: HTML		
		  };
 
		  // Création de l'info-bulle
		  var myInfoWindow = new google.maps.InfoWindow(myWindowOptions);
		  List_Info_Windows.push(myInfoWindow);
		  
		 
		  if (Affiche_Bulle == true) 
		  {
			myInfoWindow.open(map, marker); // affichage de l'infobulle
			for (var w in Tab_Current_Polylines)
			{
				Tab_Current_Polylines[w].setMap(map);//affichage des polylines
			}
		  }
		  
		  //Events******************************
 
		  // Affichage de la bulle et des polylines au click sur le marker, en enlevant les autres infosbulles et polylines
		  google.maps.event.addListener(marker, 'click', function() 
		  {
			var x;
			var y;
			var z;
			for(x in List_Info_Windows)
			{
				List_Info_Windows[x].close(); //masquage des info-bulles précédents
			}
			for (y in List_Polylines)
			{
				List_Polylines[y].setMap(null); //masquage des polylines précédentes
			}
			
			
			
			//Actions dépendant du zoom au moment du clic
			var Zoom_Map = map.getZoom();
			
			//Si le marker est bleu et que le zoom n'est pas suffisant pour distinguer les séjours
			if ((Bleu == true) && (Zoom_Map < 14))
			{
				map.setCenter(Marker_Loc);
				map.setZoom(14); // on zoom sur le marker
				Set_DIV_Content('Titre_Sejour' , '<h4><img src="images/marker-blue.png" alt = "Marqueur rouge" height = 24 width = 16 /><span class = \'Nom_De_Heberg\'>HEBERGEMENT : </span></h4><h2><a href="'+Url_Heberg+'" title="CapJuniors" target="_blank">'+Nom_Heberg+'</a></h2>');
				
			}
			else 
			{
				myInfoWindow.open(map, marker); //affichage de l'info-bulle
				for (z in Tab_Current_Polylines)
				{
					Tab_Current_Polylines[z].setMap(map);//affichage des polylines
				}

				Set_DIV_Content('Titre_Sejour' , '<h4><img src="images/marker-red.png" alt = "Marqueur rouge" height = 24 width = 16 /><span class = \'Nom_Du_Sejour\'>SEJOUR : </span></h4><h2><a href="'+Url+'" title="CapJuniors" target="_blank">'+Nom_Sejour+'</a></h2>' );
			}
			
		  });
		  
		  //Masque toutes les infos-bulles lors d'un clic sur la map
		  google.maps.event.addListener(map, 'click', function() 
		  {
			var x;
			for(x in List_Info_Windows)
			{
				List_Info_Windows[x].close();
			}
		
		   });
		  
		  // Revient à la vue globale lors d'un double clic
		  google.maps.event.addListener(map, 'dblclick', function(event)
		  {
			for (y in List_Polylines)
			{
				List_Polylines[y].setMap(null); //masquage des polylines précédentes
			}
			map.setZoom(7);
		  });
		   
    End_Loading(i); // finit le chargement
	
  }//FIN function Creation_Marker(Lieu)
  

  
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : Creation_Polyline
// Description __: Place un marker sur la carte avec toutes les informations sur le séjour
// Params________: Line_Depart -> Ligne du tracé
//				   Ville -> ville de départ associée à la polyline
// Renvoi________: Trace_Line_Depart -> Polyline équipée de son event et infobulle
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-   
function Creation_Polyline(Line_Depart, Ville)
{
	var Trace_Line_Depart = new google.maps.Polyline(
	{
		path: Line_Depart,   //chemin du tracé
		strokeColor: "#FF0000",   //couleur du tracé
		strokeOpacity: 1.0,   //opacité du tracé
		strokeWeight: 2,  //grosseur du tracé
		geodesic : true //affiche les polyline en mode trajet d'avion
		
	});
	
	Info_Bulle = new google.maps.InfoWindow(); 
	google.maps.event.addListener(Trace_Line_Depart, 'mouseover', function(event)
	{
		Info_Bulle.setContent('Départ de '+Ville);
		Info_Bulle.setPosition(event.latLng);
		
		List_Info_Windows.push(Info_Bulle);
		
		Info_Bulle.open(map); // affichage de l'infobulle
	});

	return Trace_Line_Depart;
	
}//fin function Creation_Polyline  
  
  
  
//Variables utilisées par la fonction xml2array 
var not_whitespace = new RegExp(/[^\s]/);//This can be given inside the funciton - I made it a global variable to make the scipt a little bit faster.
var parent_count;//Process the xml data
 
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : xml2array(xml_Object)
// [convertit un objet xml en tableau]
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-  
function xml2array(xmlDoc,parent_count) {
	var arr;
	var parent = "";
	
	parent_count = parent_count || new Object();

	var attribute_inside = 0; /*:CONFIG: Value - 1 or 0
	*	If 1, Value and Attribute will be shown inside the tag - like this...
	*	For the XML string...
	*	<guid isPermaLink="true">http://www.bin-co.com/</guid>
	*	The resulting array will be...
	*	array['guid']['value'] = "http://www.bin-co.com/";
	*	array['guid']['attribute_isPermaLink'] = "true";
	*	
	*	If 0, the value will be inside the tag but the attribute will be outside - like this...	
	*	For the same XML String the resulting array will be...
	*	array['guid'] = "http://www.bin-co.com/";
	*	array['attribute_guid_isPermaLink'] = "true";
	*/
	
	//Boucle if obsolète avec IE
	/*if(xmlDoc.nodeName && xmlDoc.nodeName.charAt(0) != "#") {
		if(xmlDoc.childNodes.length > 1) { //If its a parent
			arr = new Object();
			parent = xmlDoc.nodeName;	
		}
	}*/
	//Boucle if de remplacement, compatible IE
	if(xmlDoc.nodeName && xmlDoc.nodeName.charAt(0) != "#") {
		if ( (xmlDoc.childNodes.length > 1)
		|| ( (xmlDoc.childNodes.length == 1) && (xmlDoc.childNodes[0].childNodes.length > 0) ) ) { //If its a parent
			arr = new Object;
			parent = xmlDoc.nodeName;
		}
	}
	
	var value = xmlDoc.nodeValue;
	if(xmlDoc.parentNode && xmlDoc.parentNode.nodeName && value) {
		if(not_whitespace.test(value)) {//If its a child
			arr = new Object();
			arr[xmlDoc.parentNode.nodeName] = value;
		}
	}

	if(xmlDoc.childNodes.length) {
		if(xmlDoc.childNodes.length == 1) { //Just one item in this tag.
			arr = xml2array(xmlDoc.childNodes[0],parent_count); //:RECURSION:
		} else { //If there is more than one childNodes, go thru them one by one and get their results.
			var index = 0;

			for(var i=0; i<xmlDoc.childNodes.length; i++) {//Go thru all the child nodes.
				var temp = xml2array(xmlDoc.childNodes[i],parent_count); //:RECURSION:
				if(temp) {
					var assoc = false;
					var arr_count = 0;
					for(key in temp) {
						if(isNaN(key)) assoc = true;
						arr_count++;
						if(arr_count>2) break;//We just need to know wether it is a single value array or not
					}

					if(assoc && arr_count == 1) {
						if(arr[key]) { 	//If another element exists with the same tag name before,
										//		put it in a numeric array.
							//Find out how many time this parent made its appearance
							if(!parent_count || !parent_count[key]) {
								parent_count[key] = 0;

								var temp_arr = arr[key];
								arr[key] = new Object();
								arr[key][0] = temp_arr;
							}
							parent_count[key]++;
							arr[key][parent_count[key]] = temp[key]; //Members of of a numeric array
						} else {
							parent_count[key] = 0;
							arr[key] = temp[key];
							if(xmlDoc.childNodes[i].attributes && xmlDoc.childNodes[i].attributes.length) {
								for(var j=0; j<xmlDoc.childNodes[i].attributes.length; j++) {
									var nname = xmlDoc.childNodes[i].attributes[j].nodeName;
									if(nname) {
										/* Value and Attribute inside the tag */
										if(attribute_inside) {
											var temp_arr = arr[key];
											arr[key] = new Object();
											arr[key]['value'] = temp_arr;
											arr[key]['attribute_'+nname] = xmlDoc.childNodes[i].attributes[j].nodeValue;
										} else {
										/* Value in the tag and Attribute otside the tag(in parent) */
											arr['attribute_' + key + '_' + nname] = xmlDoc.childNodes[i].attributes[j].nodeValue;
										}
									}
								} //End of 'for(var j=0; j<xmlDoc. ...'
							} //End of 'if(xmlDoc.childNodes[i] ...'
						}
					} else {
						arr[index] = temp;
						index++;
					}
				} //End of 'if(temp) {'
			} //End of 'for(var i=0; i<xmlDoc. ...'
		}
	}

	if(parent && arr) {
		var temp = arr;
		arr = new Object();
		
		arr[parent] = temp;
	}
	return arr;
}//fin function xml2array(xmlDoc,parent_count) 


// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
// function : print_r(obj)
// [affiche un tableau, comme le print_r en php, dans un nouvel onglet]
// _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
function print_r(obj) 
{
  win_print_r = window.open('about:blank', 'win_print_r');
  win_print_r.document.write('<html><body>');
  r_print_r(obj, win_print_r);
  win_print_r.document.write('</body></html>');
 }
 function r_print_r(theObj, win_print_r) 
 {
  if(theObj.constructor == Array ||
   theObj.constructor == Object){
   if (win_print_r == null)
    win_print_r = window.open('about:blank', 'win_print_r');
   }
   for(var p in theObj){
    if(theObj[p].constructor == Array||
     theObj[p].constructor == Object){
     win_print_r.document.write("<li>["+p+"] =>"+typeof(theObj)+"</li>");
     win_print_r.document.write("<ul>")
     r_print_r(theObj[p], win_print_r);
     win_print_r.document.write("</ul>")
    } else {
     win_print_r.document.write("<li>["+p+"] =>"+theObj[p]+"</li>");
    }
   }
  win_print_r.document.write("</ul>")
 }//fin function print_r(obj) 


 // -------------------------------
// FONCTION Set_DIV_Content
//    Descrition____: Sert a mettre du contenu a l'interieur d'une balise DIV avec l'id (si elle existe bien sur)
//    Params________: ID->Le nom de la Balise
//                    CONTENU->Le contenu à mettre
//    Renvoi________: True si la Div existe, false si elle exiet pas
// -------------------------------
function Set_DIV_Content(ID, CONTENU, Garder_Orginal )
{
  if(document.getElementById(ID))
  {
    Obj = document.getElementById(ID);
    
    if(Garder_Orginal)
      Obj.innerHTML = Obj.innerHTML + CONTENU;
    else
      Obj.innerHTML = CONTENU;
    return true;
  }
  return false;
}//fin function Set_DIV_Content(  ID , CONTENU , Garder_Orginal )




