// JavaScript Document
	// Fonction de vérification de champs passés par formulaire
	// Vérifier que les champs obligatoires sont bien remplis
	//
	//        champs                = tableau des noms et libelles des champs obligatoires
	//	  forme			= nom du formulaire
	//        message               = début du message d'erreur (genre 'vous devez renseigner ') avec un espace à la fin
	//
	function CheckSetForm (champs,forme,message)
	{
		// Initialisations
		var ret = true;

		// parcours du tableau
		for (var i=0; i < champs.length && ret==true; i++)
		{

			// test sur le champs
			
			// champs texte
			var typeChamp = "";

			nomChamp = eval("document."+forme+"."+champs[i][0]);
			libelle = eval(champs[i])[1];
			
			if (nomChamp.type)
			{
				typeChamp = nomChamp.type;
			}
			else if (nomChamp.length > 1)
			{
				typeChamp = nomChamp[0].type;
			}
			else continue;
			//alert(typeChamp);
			
			// ***************************************************
			// controle sur un champ de type imput text, textarea, file
			// ***************************************************
			if (typeChamp=='text' || typeChamp=='textarea' || typeChamp=='file')
			{
				var libelle = eval(champs[i])[1];
	
				if (nomChamp.value.length == 0)
				{
					alert (message + libelle + " !!!");
					nomChamp.focus();
					ret = false;
					//break;
				}
			}
			

			// *****************************************************
			// controle sur les champs de type liste :
			// *****************************************************
			
			// radio
			else if (typeChamp=='radio')
			{
				var selected=false;
				
				for (j=0; j<nomChamp.length && selected==false; j++)
				{
					selected = nomChamp[j].checked;
				}
				
				if (!selected)
				{
					alert (message + libelle + " !!!");
					//nomChamp.focus();
					ret = false;
					//break;
				}
			}
			
			// select-one, select-multiple
			else if (typeChamp.search('select')>=0)
			{
				var selected=false;
				
				for (j=0; j<nomChamp.length && selected==false; j++)
				{
					selected = nomChamp[j].selected;
				}
				
				if (!selected)
				{
					alert (message + libelle + " !!!");
					nomChamp.focus();
					ret = false;
					//break;
				}
			}

		}
		// Retour traitement
		return (ret);
	}



	// Vérification de la structure d'un mail
	//
	//        mail                le champ qui contien l'email
	//
	function checkValidEmail (mail_name)
	{
	        if (document.getElementById)
	        {
	                var mail = document.getElementById(mail_name);  	// Mot de passe
	        }

	        else if(document.all)
	        {
	                var mail = document.all[mail_name];
	        }


		// Valeur de retour
	        var ret = true;

	        // Calcul longueur chaine
	        var ilgmail = mail.value.length - 1;

	        // Lecture des posiions des différents @
	        var fidxaro = mail.value.indexOf ("@");                // position premier @
	        var lidxaro = mail.value.lastIndexOf ("@");                // postion dernier @

	        // Lecture des posiions des différents .
	        var fidxpoi = mail.value.indexOf (".");                // position premier .
	        var lidxpoi = mail.value.lastIndexOf (".");                // postion dernier .

	        // Test qu'aucun espace dans le mail
	        if (mail.value.indexOf (" ") >= 0)
	                ret = false;
                // Test qu'un et un seul @ et position > 0 et position <> lg
	        else if (fidxaro <= 0  ||  (lidxaro > 0  &&  fidxaro != lidxaro)  ||  fidxaro == ilgmail  ||  lidxaro == ilgmail)
	                ret = false;
               // Test qu'au moins 1 . et dernier (autre que premier, si existant) après @
	        else if (fidxpoi <= 0  ||  (lidxpoi > 0  &&  lidxpoi < fidxaro)  ||  fidxpoi == ilgmail  ||  lidxpoi == ilgmail)
	                ret = false;

	        if (!ret) 	alert ('Email incorrect');


	        // Valeur de retour
	        return (ret);
	}




	// Fonction de remplissage d'une liste-sélection avec le contenu d'un tableau
	//
	//	select	= nom de l'objet liste-sélection à remplir
	//	tab	= nom du tableau source du remplissage
	//
	function Array2Select (select, tab)
	{
		// Vidage de la liste avant son remplissage
		//alert(tab);
		RazSelect (select);
		// Boucle de remplissage
		for (var i=0; i < tab.length; i++)
		{
			// Valeurs par défaut pour l'option de la sélection
			txt = tab[i];		// texte de l'option
			//val = i;		// indice option
			val = txt;
			//
			// Les items du tableau peuvent être formatés pour contenir
			//	- la valeur de l'option
			//	séparés par le caractère #
			//	- le texte de l'option
			//
			idx = tab[i].indexOf ("#",0);
			if (idx > 0)
			{
				val = tab[i].substring (0, idx);
				txt = tab[i].substring (idx+1, 100);
			}
			// Ajout de la nouvelle option
			select.options[i] = new Option (txt, val);
		}
	}
	
	function putMedecins(opt,medecins,tabInterventions,tabExamMedecin)
	{
		medecins=document.getElementById(medecins);
		var listeMedecins=new Array();
		//var listeMedecinsLieu=new Array();
		// Vidage de la liste avant son remplissage
		RazSelect (medecins);
		var indice=0;
		var noIntervention = 0;
		
		for(i=0; i<tabInterventions.length; i++)
		{
			table=tabInterventions[i];
			check=document.getElementById(table);
			//alert(check.checked);
			if (check.checked)
			{
				intervention = check.name;
				noIntervention++;				
				if (noIntervention==1) listeMedecins.push("choisissez un médecin");

				for (j=0; j<tabExamMedecin[intervention].length; j++)
				{
			
					// VERSION 1 ON AJOUTE LES MEDECINS DE CHAQUE INTERVENTION
					
					//alert(tabExamMedecin[intervention][j]);
					// premier enregistrement
					if (listeMedecins.length==0) listeMedecins.push(tabExamMedecin[intervention][j]);
					// pour les suivants
					// on vérifie aue le médecin n'est pas déjà dans la liste avant de l'ajouter
					dejaPresent=false;
					for (k=0; k<listeMedecins.length; k++)
					{
						//alert(listeMedecins[k]+', '+tabExamMedecin[intervention][j]);
						if (listeMedecins[k]==tabExamMedecin[intervention][j]) 
							dejaPresent=true;
					}
					if (!dejaPresent) 
					{
						listeMedecins.push(tabExamMedecin[intervention][j]);
						//listeMedecinsLieu.push(tabExamMedecinLieu[intervention][j]);
					}
					/*
					// VERSION 2 ON N'AJOUTE QUE LES MEDECINS PRATIQUANT TOUTES LES INTERVENTIONS SELECTIONNEES
					// pour la première intervention , on remplit la liste
					if (noIntervention == 1) 
					{
						//alert('intervention '+noIntervention+'= '+intervention+' -> '+tabExamMedecin[intervention][j]);
						listeMedecins.push(tabExamMedecin[intervention][j]);
						//alert(tabExamMedecin[intervention][j]);
					}
					// pour les suivants
					// on vérifie que le médecin n'est pas déjà dans la liste avant de l'ajouter
					else 
					{
						//alert('intervention '+noIntervention+'= '+intervention);
						tempListeMedecins=listeMedecins;
						listeMedecins=new Array();
						listeMedecins.push("choisissez un médecin");
						for (k=0; k<tabExamMedecin[intervention].length; k++)
						{
							//alert(listeMedecins[k]+', '+tabExamMedecin[intervention][j]);
							for (l=0; l<tempListeMedecins.length; l++) 
							{
								//alert(tabExamMedecin[intervention][k]+', '+tempListeMedecins[l]);
								if (tabExamMedecin[intervention][k]==tempListeMedecins[l])
									listeMedecins.push(tabExamMedecin[intervention][k]);
							}
						}
					}
					*/
				}
			}
		}
		
		//divMedecins = document.getElementById('divMedecins');

		//s'il n'y a qu'un élément dans la liste ("choisissez votre médecin") et que la liste est vide, on la supprime
		if (listeMedecins.length==1) 
		{
			
			listeMedecins.pop();
			//divMedecins.display='none';
			//listeMedecins.push("------------");
			//medecins.visibility='hidden';
		}
		else 
		{
			//medecins.visibility='visible';
			//alert(medecins.visibility);
			//divMedecins.display='visible';
			Array2Select (medecins, listeMedecins);
		}
		
	}

	function checkExamens(tabInterventions)
	{
		var checked=false;
		for(i=0; i<tabInterventions.length; i++)
		{
			table=tabInterventions[i];
			check=document.getElementById(table);
			if (check.checked)
			{
				checked=true;
			}
		}
		if (!checked) alert("Vous devez sélectionner au moins un examen à pratiquer");
		
		return checked;
	}

	// Fonction de vidage du contenu d'une liste de sélection
	//
	//	select	= nom de l'objet liste-sélection à vider
	//
	function RazSelect (select)
	{
		// Boucle sur tous les éléments de la liste
		// Commencer par la fin pour ne pas avoir à gérer les décallages dans tableau suit aux suppressions
		//alert(select.options.length);
		for (var i=select.length-1; i>=0 ; i--)
			select.options[i] = null;
	}
	


	function change(on,off)
	{
		var elem1 = document.getElementById(on);
		//alert(elem1);
		elem1.style.display="";
		var elem2 = document.getElementById(off);
		elem2.style.display="none";
	}



