/*=====================
 Fonctions de validation du code
=====================*/

// verifie que le champ du formulaire 'frm' est bien rempli
// si ce n'est pas le cas, un message du type "le champ texte est obligatoire..."
// et le focus est donné au 'champ'
function estRempli(frm,champ,texte)
{

	if((champ=="nom"||champ=="prenom"||champ=="date_naiss")&& frm.elements["professionnel"].checked == true){
		return true;
	}

	if(champ=="raison"&& frm.elements["particulier"].checked == true){
		return true;
	}

	if(estVide(frm,champ))
	{
		alert("\nLe champ "+texte+" est obligatoire. Veuillez le saisir.");
		frm.elements[champ].focus();
		return false;
	}

	return true;
}
//verifie que le champ est vide
function estVide(frm,champ)
{
	if(frm.elements[champ].value =="")
		return true;
	return false;
}
// verifie que le 'champ' du formulaire 'frm' est bien rempli
// et qu'il s'agit bien d'un nombre de 'taille' caractères
// si ce n'est pas le cas, un message du type "le champ 'texte' doit comporter 'taille' chiffres..."
// et le focus est donné au 'champ'
function estNombre(frm,champ,texte,taille)
{
	if (isNaN(frm.elements[champ].value) || frm.elements[champ].value.length!=taille)
	{
		alert("\nLe champ "+texte+" doit comporter "+taille+" chiffres. Veuillez le resaisir.")
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
// verifie que le 'champ' du formulaire 'frm' est bien un texte valide
// si ce n'est pas le cas, un message du type "le champ 'texte' doit comporter 'taille' chiffres..."
// et le focus est donné au 'champ'
function estTexte(frm,champ,texte)
{
	if(!isValidText(frm.elements[champ].value))
	{
		alert("\nLe champ "+texte+" ne doit contenir que des lettres, des chiffres et des signes de ponctuation  : , - / .\nVeuillez le corriger.");
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
//verifie que 'text' est un texte valide (pas de caractères bizarres)
function isValidText(text)
{
	var reg = /[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0-9àâäãéèêëïîôöõûüÿç,'\.\/\- ]/
	if(reg.exec(text)!=null)
	{
		return false;
	}
	else
	{
		return true;
	}
}
// verifie que le 'champ' du formulaire 'frm' est bien un alphanumerique
// si ce n'est pas le cas, un message du type "le champ 'texte' doit comporter 'taille' chiffres..."
// et le focus est donné au 'champ'
function estAlphaNumerique(frm,champ,texte)
{
	if(!isAlphaNumeric(frm.elements[champ].value))
	{
		alert("\nLe champ "+texte+" ne doit contenir que des lettres et des chiffres. Veuillez le corriger.");
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
//verifie que 'text' est un texte valide (pas de caractères bizarres)
function isAlphaNumeric(text)
{
	var reg = /[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0-9]/
	if(reg.exec(text)!=null)
	{
		return false;
	}
	else
	{
		return true;
	}
}
// verifie que le 'champ' du formulaire 'frm' est bien un mot de passe valide
// si ce n'est pas le cas, un message du type "le champ 'texte' doit comporter 'taille' chiffres..."
// et le focus est donné au 'champ'
function estMotPasse(frm,champ,texte)
{
	if(!isValidPassword(frm.elements[champ].value))
	{
		alert("\nLe champ "+texte+" ne doit contenir que des lettres, des chiffres et des signes de ponctuation (, - / .). Veuillez le corriger.");
		return false;
	}
	return true;
}
//verifie que 'pwd' est un mot de passe valide (pas de caractères ; ' " <> {} [] () )
function isValidPassword(pwd)
{
	var reg = /[àâäãéèêëïîôöõûüÿç;\'\(\)\"\<\>\{\}\[\]]/
	if(reg.exec(pwd)!=null)
	{
//		alert("il y a des caractères bizarres");
		return false;
	}
	else
	{
//		alert("pas caractères bizarres");
		return true;
	}
}
//verifie qu'une liste deroulante n'est pas sur la valeur par defaut (-1)
function estPasDefaut(frm,champ,texte)
{
	if(frm.elements[champ].value==-1)
	{
		alert("\nMerci de préciser "+texte);
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
//verifie que 'email' est un email valide
function isValidEmail(email)
{
   var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/
   return (reg.exec(email)!=null)
}
// verifie que le 'champ' du formulaire 'frm' est bien un email (synthaxe)
// si ce n'est pas le cas, un message du type "le champ 'texte' est invalide..."
// et le focus est donné au 'champ'
function estEmail(frm,champ,texte)
{
    if(!isValidEmail(frm.elements[champ].value))
   {
	   alert("\nLe champ "+texte+" est invalide. Veuillez le resaisir.");
		frm.elements[champ].focus();
	   return false;
   }
	return true;
}
// verifie que le 'champ1' du formulaire 'frm' est différent du champ2 du formulaire 'form'
// si ce n'est pas le cas, un message du type "le 'texte1' doit être différent du 'texte2'..."
// et le focus est donné au 'champ1'
function estDifferent(frm,champ1,texte1,champ2,texte2)
{
	if(frm.elements[champ1].value ==frm.elements[champ2].value)
	{
		alert ("\nLe "+texte1+" doit être différent de "+texte2+".");
		frm.elements[champ1].focus();
		return false;
	}
	return true;
}
// verifie que la longueur du 'champ' du formulaire 'form' est supérieure ou égale à 'tailleMini'
// si ce n'est pas le cas, un message du type "le 'texte' doit comporter au moins 'tailleMini' caractères."
// et le focus est donné au 'champ'
function longMini(frm,champ,texte,tailleMini)
{
	if(frm.elements[champ].value.length<tailleMini)
	{
		alert ("\nLe champ "+texte+" doit comporter au moins "+tailleMini+" caractères");
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
// verifie que la longueur du 'champ' du formulaire 'form' est inférieure ou égale à 'tailleMaxi'
// si ce n'est pas le cas, un message du type "le 'texte' doit comporter au moins 'tailleMaxi' caractères."
// et le focus est donné au 'champ'
function longMaxi(frm,champ,texte,tailleMaxi)
{
	if(frm.elements[champ].value.length>tailleMaxi)
	{
		alert ("\nLe champ "+texte+" doit comporter moins de "+tailleMaxi+" caractères");
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
// verifie que le 'champ' du formulaire 'form' est bien coché (checkbox)
// si ce n'est pas le cas, un message du type "le 'texte' est obligatoire...
function estChecked(frm,champ,texte)
{
	if (frm.elements[champ].checked==false)
	{
		alert("\n"+texte+" est obligatoire pour accéder au jeu.");
		return false;
	}
	return true;
}
//verifie que 'd' est une date valide
function isDate(d)
{


	if(d == "")
	{
		return false;
	}
	else
	{
		var tabDate = (d).split("/");
		if( (tabDate.length!=3) || isNaN( parseInt(tabDate[0]) ) || isNaN( parseInt(tabDate[1]) ) || isNaN( parseInt(tabDate[2]) ) || (parseInt(tabDate[2]) <1000))
		{
			return false;
		}
		var datecomp = new Date(eval(tabDate[2]),(eval(tabDate[1])-1),eval(tabDate[0]))

		if( !(datecomp.getDate() == eval(tabDate[0]) && datecomp.getMonth() == (eval(tabDate[1])-1) && datecomp.getFullYear() == eval(tabDate[2])) )
			return false;
	}
	return true;
}
// verifie que le 'champ' du formulaire 'form' est une date valide
// si ce n'est pas le cas, un message du type "le 'texte' est invalide..."
// et le focus est donné au 'champ'
function estDate(frm,champ,texte)
{
	if(frm.elements["professionnel"].checked == true){
		return true;
	}

	if (!isDate(frm.elements[champ].value))
	{
		alert("\nLe champ "+texte+" est invalide. Veuillez le resaisir.");
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
// compare la date 'd' a la date du jour moins 'pas' année(s)
// suivant 'sens' ("+" ou "-"), on teste si la date 'd' est plus vieille ou moins vieille
// que la date du jour moins 'pas' année(s)
function compDate(d,pas,sens)
{
	var tabDate = (d).split("/");
	var dateNaiss = new Date(eval(tabDate[2]),(eval(tabDate[1])-1),eval(tabDate[0]))
	var today = new Date();
	var an = today.getFullYear()-pas;
	var mois =today.getMonth();
	var jour = today.getDate();
	var dateComp = new Date(an,mois,jour);

	if(sens=="+")
	{
		if(dateNaiss < dateComp)
			return true;
	}
	else if(sens=="-")
	{
		if(dateNaiss > dateComp)
			return false;
	}
}
// verifie que le 'champ' du formulaire 'form' correspond à la date de naissance d'une personne majeure
// si ce n'est pas le cas, un message du type "vous devez être majeur..."
// et le focus est donné au 'champ'
function estMajeur(frm,champ,texte)
{

	if(frm.elements["professionnel"].checked == true){
		return true;
	}

	if (!compDate(frm.elements[champ].value,18,"+"))
	{
		alert("\nVous devez être majeur pour participer à ce jeu.");
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
// verifie que le 'champ' du formulaire 'form' correspond à la date de naissance d'une personne mineure
// si ce n'est pas le cas, un message du type "vous devez être majeur..."
// et le focus est donné au 'champ'
function estMineur(frm,champ,texte)
{
	if (!compDate(frm.elements[champ].value,18,"-"))
	{
		alert("\nTu dois avoir moins de 18 ans pour pour participer à ce jeu.");
		frm.elements[champ].focus();
		return false;
	}
	return true;
}
// affiche une boite de confirmation et redirige vers la 'page' si l'utilisateur choisi 'Valider'
function confirmAndRedirect(texte,page)
{
	var answer=confirm("\n"+texte+"\n")
	if (answer)
		window.location=page;
	else
		history.back();
}

function deselect(frm,champ)
{
	frm.elements[champ].checked = false;
	return true;
}

function deselect_civ(frm,champ)
{
if (champ === "civilite_Mlle")
{
	frm.elements["civilite_M"].checked = false;
	frm.elements["civilite_Mme"].checked = false;
}
if (champ === "civilite_Mme")
{
	frm.elements["civilite_M"].checked = false;
	frm.elements["civilite_Mlle"].checked = false;
}
if (champ === "civilite_M")
{
	frm.elements["civilite_Mme"].checked = false;
	frm.elements["civilite_Mlle"].checked = false;
}

	return true;
}

function deselect_connu(frm,champ)
{
	for (i=1;i<=6;i++){
		if(frm.elements["connu"+i].name!=champ){
			frm.elements["connu"+i].checked = false;
			frm.elements["textfield_connu"].value='';
		}
	}
	if(frm.elements[champ].name!="connu6"){
		frm.elements["textfield_connu"].disabled=true;
		frm.elements["textfield_connu"].style.backgroundColor='gray';
	}
	else{
		frm.elements["textfield_connu"].disabled=false;
		frm.elements["textfield_connu"].style.backgroundColor='white';
	}
	return true;
}

function freeze_form(frm){
//disable all
for (i=0;i<frm.elements.length;i++){
	frm.elements[i].disabled = true;
	if(frm.elements[i].type=="text"){
		frm.elements[i].style.backgroundColor='gray';
	}
}
//enabled part/pro
frm.elements["particulier"].checked = false;
frm.elements["professionnel"].checked = false;

frm.elements["particulier"].disabled = false;
frm.elements["professionnel"].disabled = false;

frm.elements["particulier"].style.backgroundColor='white';
frm.elements["professionnel"].style.backgroundColor='white';
}

function active_part(frm){
//changement des etoiles
window.document.getElementById("label_raison").innerHTML ="Raison sociale ou Enseigne";
window.document.getElementById("label_nom").innerHTML ="Nom *";
window.document.getElementById("label_prenom").innerHTML ="Prénom *";
window.document.getElementById("label_date_naiss").innerHTML ="Date de naissance *";
window.document.getElementById("label_civilite").innerHTML ="M. *";
window.document.getElementById("label_secteur").innerHTML ="Secteur d'activité";

//enabled/reset all
for (i=0;i<frm.elements.length;i++){
	//enabled
	frm.elements[i].disabled = false;
	//reset input
	if(frm.elements[i].type=="text"){
		frm.elements[i].value="";
	}
	//reset checkboxes
	if(frm.elements[i].type=="checkbox"){
		frm.elements[i].checked = false;
	}
	frm.elements[i].style.backgroundColor='white';
}

//reset textarea
frm.elements["textfield_connu"].value='';

//uncheck pro
frm.elements["professionnel"].checked = false;
//check part
frm.elements["particulier"].checked = true;
//disable raison sociale
frm.elements["raison"].disabled = true;
frm.elements["raison"].style.backgroundColor='gray';
frm.elements["raison"].value = "";
//disable secteur
frm.elements["secteur"].disabled = true;
frm.elements["secteur"].style.backgroundColor='gray';
frm.elements["secteur"].value = "";
}

function active_pro(frm){

//changement des etoiles
window.document.getElementById("label_raison").innerHTML ="Raison sociale ou Enseigne *";
window.document.getElementById("label_nom").innerHTML ="Nom";
window.document.getElementById("label_prenom").innerHTML ="Prénom";
window.document.getElementById("label_date_naiss").innerHTML ="Date de naissance";
window.document.getElementById("label_civilite").innerHTML ="M.";
window.document.getElementById("label_secteur").innerHTML ="Secteur d'activité *";

//enabled/reset all
for (i=0;i<frm.elements.length;i++){
	//enabled
	frm.elements[i].disabled = false;
	//reset input
	if(frm.elements[i].type=="text"){
		frm.elements[i].value="";
	}
	//reset checkboxes
	if(frm.elements[i].type=="checkbox"){
		frm.elements[i].checked = false;
	}
	frm.elements[i].style.backgroundColor='white';
}

//disable nom, prenom, date_naissance, civ, centre d'intérets, bières
for (i=0;i<frm.elements.length;i++){
	if(/*frm.elements[i].name=="nom"||frm.elements[i].name=="prenom"||*/frm.elements[i].name=="date_naiss"
	||frm.elements[i].name=="civilite_Mlle"||frm.elements[i].name=="civilite_Mme"||frm.elements[i].name=="civilite_M"
	||frm.elements[i].name=="info1"||frm.elements[i].name=="info2"||frm.elements[i].name=="info3"||frm.elements[i].name=="info4"
	||frm.elements[i].name=="info5"||frm.elements[i].name=="info6"||frm.elements[i].name=="info7"
	){
		//disabled
		frm.elements[i].disabled = true;
		//reset input
		if(frm.elements[i].type=="text"){
			frm.elements[i].value="";
			frm.elements[i].style.backgroundColor='gray';
		}
		//reset checkboxes
		if(frm.elements[i].type=="checkbox"){
			frm.elements[i].checked = false;
		}

	}
}
//reset textarea
frm.elements["textfield_connu"].value='';

//uncheck part
frm.elements["particulier"].checked = false;
//check pro
frm.elements["professionnel"].checked = true;

}

