/*fontion sur le boutton de validation
liste des paramÃ¨tre :
	form	: nom du formulaire
	action	: action de la validation
	tableau	: nom du tableau avec toutes les erreurs*/
function boutonval(form, action, tableau)
{
	if(testchamps(form, tableau)) // teste les champs
	{
			validerform(form, action); // valide le formulaire
	}
}

/*fontion sur le boutton de validation
liste des paramÃ¨tre :
	form	: nom du formulaire
	action	: action de la validation
	tableau	: nom du tableau avec toutes les erreurs*/
function boutonvalinscription(form, action, tableau)
{
	if(testchamps(form, tableau)) // teste les champs
	{
		if(testexistmail(form))
		{
			validerform(form, action); // valide le formulaire
		}
	}
}


/*fonction de validfation d'une liste d'option dans un formulaire
liste des paramÃ¨tres : 
	form		: nom du formulaire
	action		: action de la validation
	fichier		: nom du fichier traiter
	id_fichier	: id du fichier traiter
	type_fichier	: type du fichier Ã  traiter
	tableau		: nom du tableau avec toutes les erreurs*/
function bouton_fichier(form, action, fichier, id_fichier, type_fichier, tableau)
{
	option = eval("document."+form+".id_option");	// crÃ©ation de l'objet id_option
	option.value = id_fichier;			// id sur lekel il faut faire le traitement
	
	option = eval("document."+form+".type_option");	// crÃ©ation de l'objet id_option
	option.value = type_fichier;			// id sur lekel il faut faire le traitement
	
	if(action == "modif_fichier")		// si il faut modifier
	{
		boutonval(form, action, tableau); // lance test avant validation
	}else if(action == "del_fichier")	// si il faut suprrimer
	{
		boutonsupp(form, action, "Veuillez confirmer la suppression de : "+fichier);	// lance la supression
	}
}

/*valider un formuler
liste des paramÃ¨tre :
	formulaire	: nom du formulaire
	action		: action de la validation*/
function validerform(formulaire, action)
{
	
	form=eval("document."+formulaire);
	form.action.value = action;
	form.submit();

}


/*boutton de suppression
liste des paramÃ¨tre :
	form : nom du formulaire
	action : action de la validation
	message : message Ã  afficher avant de valider la supression*/
function boutonsupp(form, action, message)
{
	if(confirm(message)) // valide la supression
	{
		 validerform(form, action); // valide le formulaire
	}
}


/*fontion sur le boutton de validation
liste des paramÃ¨tre :
	form	: nom du formulaire
	tableau	: nom du tableau avec touts les champs */
function testchamps(form, tab)
{
	var i, bufferreur;	// dÃ©claration des variables locales
	msgerreur = "";

	/* dÃ©but du traitement de tous les champs */
	for (i=0; i<tab.length; i++)
	{
		bufferreur =  0;	// par dÃ©faut aucune erreur

		/* dÃ©but du choix du test sur le champs */
		if(tab[i]["test"]=="long")			// test de la longueur du champs
		{
			bufferreur = test_longueur(form,tab[i]);
		}
		else if (tab[i]["test"]=="mail")		// test de la prÃ©sence d'une arrobasa et d'un point dans l'adresse mail
		{
			bufferreur = test_mail(form,tab[i]);
		}
		else if (tab[i]["test"]=="numeric")	// teste si les donnÃ©es saisies ne sont que des chiffres
		{
			bufferreur = test_numeric(form,tab[i]);
		}
		else if (tab[i]["test"]=="egaux")	// teste si deux champs sont Ã©gaux
		{
			bufferreur = test_egaux(form,tab[i]);
		}
		else if (tab[i]["test"]=="et")		// teste un champs et l'autre
		{
			bufferreur = test_et(form,tab[i]);
		}
		else if (tab[i]["test"]=="ou")		// teste un champs ou l'autre
		{
			bufferreur = test_ou(form,tab[i]);
		}
		else if (tab[i]["test"]=="file")	// teste le type d'un fichier
		{
			bufferreur = test_format(form,tab[i]);
		}
		else if (tab[i]["test"]=="date")	// teste le type d'un fichier
		{
			bufferreur = test_date(form,tab[i]);
		}
		else
		{
			bufferreur = test_champs(form,tab[i]);	// test du champs obligatoire
		}		
		/* fin du choix du test sur le champs */
		
		/* dÃ©but de la crÃ©ation du message d'erreur global */
		if(bufferreur == 1)
		{
			if(msgerreur != "") msgerreur  += ",\n";
			msgerreur += tab[i]["erreur"];	// on ajoute le message d'erreur du champs
		}
		/* fin de la crÃ©ation du message d'erreur global */
	}
	/* fin du traitement de tous les champs */
	
	if (msgerreur!="")
	{
		alert(titre_erreur+msgerreur);
		return 0;
	}else
	{
		return 1;
	}
}


/* fonction de test du champs vide ou nom
liste des paramÃ¨tres :
	form	: nom du formulaire
	tab	: tableau avec toute les infos sur un champs */
function test_champs(form,tab)
{
	var obj_champs = eval("document."+form+"."+tab["nom"]);	// crÃ©ation de l'objet champs Ã  traiter
	var erreur = 0;
	
	/* dÃ©but du test si le champs est vide ou si il est a sa valeur par dÃ©faut */
	if (tab["type"] == "texte" && (obj_champs.value == "" || obj_champs.value == tab["defaut"]))	// test pour les champs texte
	{
		erreur = 1;
	}
	else if((tab["type"] == "checkbox")&&(obj_champs.checked == false))						// test pour les champs checkbox
	{
		erreur = 1;
	}
	else if(tab["type"] == "radio")						// test pour les champs radio button
	{
		var i;
		erreur = 1;
		
		for(i=0; i<obj_champs.length; i++)
		{
			if(obj_champs[i].checked == true)
			{
				erreur = 0;
			}
		}
	}
	else if ((tab["type"] == "combobox")&&(obj_champs.value == "Choisissez votre pays"))		// test pour les champs combobox
	{
		erreur = 1;
	}
	/* fin du test si le champs est vide ou si il est a sa valeur par dÃ©faut */
	
	return erreur;
}


/* fonction de test sur la longueur du champs
liste des parametres :
	form	: nom du formulaire
	tab	: tableau avec toute les infos sur un champs */
function test_longueur(form, tab)
{
	var erreur = 0;

	/* dÃ©but du test si le champs n'est pas vide */
	if(test_champs(form, tab) == 0)
	{
		var obj_champs = eval("document."+form+"."+tab["nom"]);	// crÃ©ation de l'objet champs Ã  traiter

		/* dÃ©but du test sur la longueur du texte */
			if ((tab["operation"] == "<" && obj_champs.value.length>tab["longueur"]) || (tab["operation"] == ">" && obj_champs.value.length<tab["longueur"]) || (tab["operation"] == "==" && obj_champs.value.length != tab["longueur"]))
			{
				erreur = 1;
			}
		/* fin du test sur la longueur du texte */
	}
	/* fin du test si le champs n'est pas vide */
	
	return erreur;
}


/* fonction de test sur la conformitÃ© du mail
	form	: nom du formulaire
	tab	: tableau avec toute les infos sur un champs */
function test_mail(form, tab)
{
	var erreur = 0;
	
	/* dÃ©but du test si le champs n'est pas vide */
	if(test_champs(form, tab) == 0)
	{
		var obj_champs = eval("document."+form+"."+tab["nom"]);	// crÃ©ation de l'objet champs Ã  traiter
		
		/* dÃ©but du test sur la prÃ©sence d'une arrobase et d'un point dans le mail */
		if ((obj_champs.value.indexOf("@")==-1) || (obj_champs.value.indexOf(".")==-1))
		{
			erreur = 1;
		}
		/* dÃ©but du test sur la prÃ©sence d'une arrobase et d'un point dans le mail */
	}
	/* fin du test si le champs n'est pas vide */
	
	return erreur;
	
}

/* fonction de test de l'existance de l'email
liste des paramÃ¨tres :
	fom : nom du formulaire*/
function testexistmail(form)
{
	var champ = eval("document."+form+".email");
	var adresse =champ.value;
	var vars = "email="+adresse
	
	if(adresse != "inscription@crealim.com")
	{
		var buff = charge_fichier("includes/email.php", "txt", vars);
	}else
	{
		var buff = 0;
	}
	
	if(buff == 0)
	{
		return 1;
	}else if(buff == 1)
	{
		alert("Cette adresse email est déjà inscrite, veuillez en choisir une autre ou vous connecter à votre compte.");
		return 0;
	}
}


/* fonction de test du type de donnÃ©es saisies dans le champs
	form	: nom du formulaire
	tab	: tableau avec toute les infos sur un champs */
function test_numeric(form, tab)
{
	var erreur = 0;
	
	/* dÃ©but du test si le champs n'est pas vide */
	if(test_champs(form, tab) == 0)
	{
		var obj_champs = eval("document."+form+"."+tab["nom"]);	// crÃ©ation de l'objet champs Ã  traiter
		
		/* dÃ©but du test des caracteres saisis */
		if (isNaN(obj_champs.value))
		{
			erreur=1;
		}
		/* fin du test des caracteres saisis */
	}
	/* fin du test si le champs n'est pas vide */
	
	return erreur;
}


/* fonction qui teste si deux champs sont Ã©gaux
	form	: nom du formulaire
	tab	: tableau avec toute les infos sur un champs */
function test_egaux(form, tab)
{
	var erreur = 0;
	
	/* dÃ©but du test si le champs n'est pas vide */
	if((test_champs(form, tab) == 0) || test_champs(form, tab["autre"]) == 0)
	{
		var obj_champs = eval("document."+form+"."+tab["nom"]);	// crÃ©ation de l'objet champs Ã  vÃ©rifier
		var obj_champs2 = eval("document."+form+"."+tab["autre"]["nom"]);  // crÃ©ation de l'objet champs Ã  vÃ©rifier
		
		/* dÃ©but du test d'Ã©galitÃ© des 2 champs */
		if(obj_champs.value!=obj_champs2.value)
		{
			erreur = 1;
		}
		/* fin du test d'Ã©galitÃ© des 2 champs */
		
	}
	/* fin du test si le champs n'est pas vide */
	
	return erreur;
}


/* fonction qui teste des champs qui entrainent les uns les autres
	form	: chemin complet pour aller au champs
	tab	: tableau avec toute les infos sur un champs */
function test_et(form, tab)
{
	var erreur = 0;
	var i;
	
	/* dÃ©but de la lecture de tous les champs */
	for(i=0; i<tab["champs"].length; i++)
	{
		if(tab["champs"][i]["test"] == "ou")
		{
			erreur += test_ou(form, tab["champs"][i]);
		}else
		{
			erreur += test_champs(form, tab["champs"][i]);
		}
	}
	/* fin de la lecture de tous les champs */
	
	/* dÃ©but du teste du retour */
	
	if(erreur == 0 || erreur == tab["champs"].length)	// tous les champs sont remplis ou vides
	{
		return 0;
	}else												// au moins un champs est vide
	{
		return 1;
	}
	/* fin du teste du retour */
}


/* fonction qui teste des champs qui entrainent les uns ou les autres
	form	: chemin complet pour aller au champs
	tab	: tableau avec toute les infos sur un champs */
function test_ou(form, tab)
{
	var erreur = 0;
	var i;
	
	/* dÃ©but de la lecture de tous les champs */
	for(i=0; i<tab["champs"].length; i++)
	{
		erreur += test_champs(form, tab["champs"][i]);
	}
	/* fin de la lecture de tous les champs */
	
	/* dÃ©but du teste du retour */
	if(erreur == tab["champs"].length)	// aucun champs est rempli
	{
		return 1;
	}else												// au moins un champs est rempli
	{
		return 0;
	}
	/* fin du teste du retour */
}


/*teste le format du fichier
liste des paramÃ¨tres:
	form	: chemin complet pour aller au champs
	tab	: tableau avec toute les infos sur un champs */
function test_format(form, tab)
{
	var erreur=1; // dÃ©claration des variables locales
	
	/* dÃ©but du test si le champs n'est pas vide */
	if((test_champs(form, tab) == 0))
	{
		var tab_type = tab['liste'].split("/");
		
		var fichier = eval("document."+form+"."+tab['nom']+".value");	// objet Ã  traiter
		var type =fichier.split(".");					// tableau avec en derniÃ¨re cellule le format
		var max = type.length-1;					// id de la derniÃ¨re cellule
	
		/* dÃ©but de la lecture de tout les format */		
		for(i=0; i<tab_type.length; i++)
		{
			/* si le format est dans le tableau */
			if(type[max].toLowerCase()==tab_type[i])
			{
				erreur=0;
			}
		}
		/* fin de la lecture de tout les format */
	}else
	{
		erreur=0;
	}
	/* fin du test si le champs n'est pas vide */
	
	return erreur;
}

/*verifie les dates
liste des paramÃ¨tres:
	form	: chemin complet pour aller au champs
	tab	: tableau avec toute les infos sur un champs */
function test_date(form, tab)
{
	var erreur=0; // dÃ©claration des variables locales
	var champs = eval("document."+form+"."+tab['nom']);

	if(champs.value != "")
	{
		var amin=1900; // annÃ©e mini
		var j=champs.value.substring(0,2);
		var m=champs.value.substring(3,5);
		var a=champs.value.substring(6);
		
        	
		if ((isNaN(j))||(j<1)||(j>31))
		{
		   erreur = 1;
		}
		if ((isNaN(m))||(m<1)||(m>12))
		{
		   erreur = 1;
		}
		if ((isNaN(a))||(a<amin))
		{
		   erreur = 1;
		}
        	
		if (erreur==0)
		{
		   var d2=new Date(a,m-1,j);
		   j2=d2.getDate();
		   m2=d2.getMonth()+1;
		   a2=d2.getYear();
		   
		   if (a2<1000)
		   {
		   		a2=1900+a2;
		   }
		   if ((j!=j2)||(m!=m2)||(a!=a2))
		   {
		      erreur = 1;
		   }
		   else
		   {
		   		date_archive = a+"-"+m+"-"+j;
		   }
		}
	}
	return erreur;
}

/* fonction de test des champs cochÃ© ou non
liste des paramÃ¨tres :
	form	: nom du formulaire
	nom	: nom du champs
	num	: num du champs
	type	: type de la case*/
function test_check(form, nom, num, type)
{
	var champs, champs_test, erreur, i, debut, fin;
	erreur = 0;

	champs = eval("document."+form+"."+nom+num);
	
	/* dÃ©but du dÃ©but et de la fin de la confÃ©rence ou de l'atelier */
	if(type == "conference")
	{
		debut = tab_conf[num][nom]["debut"];
		fin = tab_conf[num][nom]["fin"];
	}else if(type == "atelier")
	{
		debut = tab_atelier[num]["debut"];
		fin = tab_atelier[num]["fin"];
	}
	/* fin du dÃ©but et de la fin de la confÃ©rence ou de l'atelier */
	
	/* dÃ©but du test sur les confÃ©rences */
	for(i=1; i<tab_conf.length; i++)
	{
		/* dÃ©but du test que se soit pas la mÃªme confÃ©rence */
		if(num != i || type != "conference")
		{
			/* dÃ©but du test du matin */
			if((debut <= tab_conf[i]['conf_matin']['debut'] && tab_conf[i]['conf_matin']['debut'] <= fin) || (debut <= tab_conf[i]['conf_matin']['fin'] && tab_conf[i]['conf_matin']['fin'] <= fin))
			{
				champs_test = eval("document."+form+".conf_matin"+i);
				
				if(champs.checked == true && champs_test.checked == true)
				{
					erreur = 1;
				}
			}
			/* fin du test du matin */
			
			/* dÃ©but du test du matin */
			if((debut <= tab_conf[i]['conf_apremidi']['debut'] && tab_conf[i]['conf_apremidi']['debut'] <= fin) || (debut <= tab_conf[i]['conf_apremidi']['fin'] && tab_conf[i]['conf_apremidi']['fin'] <= fin))
			{
				champs_test = eval("document."+form+".conf_apremidi"+i);
				
				if(champs.checked == true && champs_test.checked == true)
				{
					erreur = 1;
				}
			}
			/* fin du test du matin */
			
		}
		/* fin du test que se soit pas la mÃªme confÃ©rence */
	}
	/* fin du test sur les confÃ©rences */
	
	/* dÃ©but du test sur les ateliers */
	for(i=1; i<tab_atelier.length; i++)
	{
		/* dÃ©but du test que se soit pas le mÃªme atelier */
		if(num != i || type != "atelier")
		{
			/* dÃ©but du test  */
			if((debut <= tab_atelier[i]['debut'] && tab_atelier[i]['debut'] <= fin) || (debut <= tab_atelier[i]['fin'] && tab_atelier[i]['fin'] <= fin))
			{
				champs_test = eval("document."+form+".atelier"+i);
				
				if(champs.checked == true && champs_test.checked == true)
				{
					erreur = 1;
				}
			}
			/* fin du test*/
			
		}
		/* fin du test que se soit pas le mÃªme atelier */
	}
	/* fin du test sur les ateliers */
	
	if(erreur == 1)
	{
		alert("Attention, vous êtes déjà  inscrit à  une conférence ou un atelier se déroulant simultanément.");
		champs.checked = false;
	}
}

/* fonction qui vide un champs
liste des paramÃ¨tre :
	obj_champ	: objet champ*/
tab_testchamp = new Array();
function vide(obj_champ)
{
	if(tab_testchamp[obj_champ.name] == undefined)
	{
		tab_testchamp[obj_champ.name] = obj_champ.value;
	}
	
	if(tab_testchamp[obj_champ.name] == obj_champ.value)
	{
		obj_champ.value = "";
	}
}

/* fonction qui vide un champs
liste des paramÃ¨tre :
	obj_champ	: objet champ*/
function remet(obj_champ)
{
	if(obj_champ.value == "")
	{
		obj_champ.value = tab_testchamp[obj_champ.name];
	}
}

/* fonction de gestion des question Ã  arricher
liste des paramÃ¨tre :
	obj_champ	: objet champ*/
function gestion_question(obj_champ)
{
	tab_inscription = new Array();
	var tab_tmp = new Array();
	
	var i;
	for(i=0; i<tab_defaut.length; i++)
	{
		tab_tmp[i] = tab_defaut[i];
	}
	
	
	var tab_champsnon = new Array();
	tab_champsnon[tab_champsnon.length] = "newsletternon_1";
	tab_champsnon[tab_champsnon.length] = "newsletternon_0";
	tab_champsnon[tab_champsnon.length] = "connunon_1";
	tab_champsnon[tab_champsnon.length] = "connunon_2";
	tab_champsnon[tab_champsnon.length] = "connunon_3";	
	tab_champsnon[tab_champsnon.length] = "connunon_4";
	tab_champsnon[tab_champsnon.length] = "connunon_5";
	tab_champsnon[tab_champsnon.length] = "connunon_6";
	tab_champsnon[tab_champsnon.length] = "connunon_7";
	tab_champsnon[tab_champsnon.length] = "autrenon";

	var tab_champsoui = new Array();
	tab_champsoui[tab_champsoui.length] = "nom_projet";
	tab_champsoui[tab_champsoui.length] = "etape_1";
	tab_champsoui[tab_champsoui.length] = "etape_2";
	tab_champsoui[tab_champsoui.length] = "etape_3";
	tab_champsoui[tab_champsoui.length] = "etape_4";
	tab_champsoui[tab_champsoui.length] = "etape_5";
	tab_champsoui[tab_champsoui.length] = "cadre_1";
	tab_champsoui[tab_champsoui.length] = "cadre_2";
	tab_champsoui[tab_champsoui.length] = "situation_actuelle_1";
	tab_champsoui[tab_champsoui.length] = "situation_actuelle_2";
	tab_champsoui[tab_champsoui.length] = "situation_actuelle_3";
	tab_champsoui[tab_champsoui.length] = "situation_actuelle_4";
	tab_champsoui[tab_champsoui.length] = "situation_actuelle_5";
	tab_champsoui[tab_champsoui.length] = "situation_actuelle_6";
	tab_champsoui[tab_champsoui.length] = "autre_situation";
	//tab_champsoui[tab_champsoui.length] = "chomeur";
	tab_champsoui[tab_champsoui.length] = "newsletteroui_1";
	tab_champsoui[tab_champsoui.length] = "newsletteroui_0";
	tab_champsoui[tab_champsoui.length] = "connuoui_1";
	tab_champsoui[tab_champsoui.length] = "connuoui_2";
	tab_champsoui[tab_champsoui.length] = "connuoui_3";
	tab_champsoui[tab_champsoui.length] = "connuoui_4";
	tab_champsoui[tab_champsoui.length] = "connuoui_5";
	tab_champsoui[tab_champsoui.length] = "connuoui_6";
	tab_champsoui[tab_champsoui.length] = "connuoui_7";
	tab_champsoui[tab_champsoui.length] = "autreoui";
		
	if(obj_champ.value == 1 || obj_champ.value == 2)
	{
		document.getElementById("oui").className = "ligne-form";
		document.getElementById("non").className = "cacher";

		/* début de la gestion des champs obligatoire */
		for(i=0; i<tab_complet.length; i++)
		{
			tab_tmp[tab_tmp.length] = tab_complet[i];
		}
		/* fin de la gestion des champs obligatoire */
		
		var tab_masque = tab_champsnon;
		var tab_visible = tab_champsoui;
	}else
	{
		if(obj_champ.value == 3)
		{
			tab_tmp[tab_tmp.length] = tab_organisme;
		}else if(obj_champ.value == 6)
		{
			tab_tmp[tab_tmp.length] = tab_societe;
		}
		document.getElementById("oui").className = "cacher";
		document.getElementById("non").className = "ligne-form";
		
		for(i=0; i<tab_court.length; i++)
		{
			tab_tmp[tab_tmp.length] = tab_court[i];
		}
		
		var tab_masque = tab_champsoui;
		var tab_visible = tab_champsnon;
	}

	tab_inscription = tab_tmp;
	
	/* début du masque des champs utiles */
	for(i=0; i<tab_masque.length; i++)
	{
		document.getElementById(tab_masque[i]).className = "cacher";
	}
	/* fin du masque des champs utiles */
	
	/* début de l'affichage des champs utiles */
	for(i=0; i<tab_visible.length; i++)
	{
		document.getElementById(tab_visible[i]).className = "";
	}
	/* fin de l'affichage des champs utiles */
}

/* fonction de gestion de sÃ©lection des confÃ©rences 
liste des paramÃ¨tre :
	obj_champ	: objet champ*/
function gestion_conf(obj_champ)
{
	if(obj_champ.checked == true)
	{
		document.form_conf.buff_conf.value += obj_champ.value+"/";
	}else if(obj_champ.checked == false)
	{
		var tab = document.form_conf.buff_conf.value.split("/");
		var i;
		
		document.form_conf.buff_conf.value = "";
		
		for(i=0; i<tab.length; i++)
		{
			if(tab[i] != obj_champ.value)
			{
				document.form_conf.buff_conf.value += tab[i]+"/";
			}
		}
	}
}

/* fonction d'inscription Ã  un atelier
liste des paramÃ¨tres :
	id		: id de l'atelier
	horaire	: horaire de l'atelier
	nom		: nom de l'atelier*/
function inscription(id, horaire, nom)
{
	if(tab_buffhorraire[horaire] == true)
	{
		alert("Désolé, vous êtes déjà inscrit à un atelier se déroulant aux mêmes horaires. Merci de vous désinscrire pour pouvoir participer à cet atelier.");
	}else if(tab_buffhorraire[horaire] == false)
	{
		validerform("formatelier_"+id, "inscription_atelier");	
	}
}

/* fonction d'inscription Ã  un atelier
liste des paramÃ¨tres :
	horaire	: horaire de l'atelier
	nom		: nom de l'atelier
	objet	: objet à traiter*/
function inscription_check(horaire, nom, objet)
{
	if(tab_buffhorraire[horaire] == true && objet.checked == true)
	{
		alert("Désolé, vous êtes déjà inscrit à un atelier se déroulant aux mêmes horaires. Merci de vous désinscrire pour pouvoir participer à cet atelier.");
		objet.checked = false;
	}else if(tab_buffhorraire[horaire] == false && objet.checked == true)
	{
		objet.checked = true;
		tab_buffhorraire[horaire] = true;
	}else if(objet.checked == false)
	{
		tab_buffhorraire[horaire] = false;
	}
	
	gestion_conf(objet)
}

/* fonction de desinscription Ã  un atelier
liste des paramÃ¨tres :
	id		: id de l'atelier
	horaire	: horaire de l'atelier
	nom		: nom de l'atelier*/
function desinscription(id, horaire, nom)
{
	validerform("formatelier_"+id, "desinscription_atelier");
}

/* fonction de redirection vers l'inscriptiont */
function inscription_vide()
{
	alert("Vous devez d'abord vous inscrire pour pouvoir participer à un atelier !");
	top.location.href = "inscription.php";
}
