/* fonction de validation du formulaire */
msg_erreur = "";
function valideForm()
{
	msg_erreur = "";
	if(test_form())
	{
		var param = form_json();
		$.post("contact.php", param, function (data)
		{
			alert("message d'envoi");
		});
	}else
	{
		//alert("message d'erreur");
	}
	return false;
}

/* fonction de test des différants champs du formulaire */
buff_valide = true;
function test_form()
{
	if(buff_valide == false)
	{
		return true;
	}else
	{
		var erreur;
		erreur = 0;
		tab_erreurs = new Array();
		
		$(".js_required").each(function()
			{
				erreur += gest_erreur(test_vide($(this)), $(this).attr("id"));
			}
		);
		
		$(".js_email").each(function()
			{
				erreur += gest_erreur(test_email($(this)), $(this).attr("id"));
			}
		);
		
		$(".js_pattern").each(function()
			{
				erreur += gest_erreur(test_pattern($(this)), $(this).attr("id"));
			}
		);
		
		$(".js_egal").each(function()
			{
				erreur += gest_erreur(test_egal($(this)), $(this).attr("id"));
			}
		);
		
		$(".js_date").each(function()
			{
				if($(this).attr("name") == "jour")
				{
					erreur += gest_erreur(test_date($(this)), $(this).attr("id"));
				}
			}
		);
		
		$(".js_reglement").each(function()
			{
				erreur += gest_erreur(test_reglement($(this)), $(this).attr("id"));
			}
		);
		
		if(erreur == 0)
		{
			return true
		}else
		{
			return false;
		}
	}
}

/* fonction de gestion de l'affichage de l'erreur
liste des paramètres :
	erreur	: valeur de l'erreur
	id		: id du champs*/
function gest_erreur(erreur, id)
{
	if(tab_erreurs[id] == undefined)
	{
		tab_erreurs[id] = 0;
	}
	if(erreur == 1)
	{
		$('label[for="' + id + '"]').addClass("erreur");
		$('label[for="' + id + '"]').parents('.intitule').addClass("intitule-erreur");
		$('label[for="' + id + '"]').parents('.intitule-adresse').addClass("intitule-adresse-erreur");
		tab_erreurs[id] = 1;
		return 1;
	}else if(tab_erreurs[id] == 0)
	{
		$('label[for="' + id + '"]').removeClass("erreur");
		$('label[for="' + id + '"]').parents('.intitule').removeClass("intitule-erreur");
		$('label[for="' + id + '"]').parents('.intitule-adresse').removeClass("intitule-adresse-erreur");
		return 0;
	}
}

/* fonction de test du champs vide ou non
liste des paramètress :
	objet_champ	: traité */
function test_vide(objet_champ)
{
	var erreur = 0;

	if((objet_champ.attr("value") == "" && objet_champ.val() == ""))
	{
		erreur = 1
		
		if(msg_erreur.indexOf("ils doivent être remplis") < 0)
		{
			msg_erreur += "\n - ils doivent être remplis, ";
		}
	}
	
	return erreur;
}

/* fonction de test du champs vide ou non
liste des paramètress :
	objet_champ	: traité */
function test_reglement(objet_champ)
{
	var erreur = 0;
	
	if(objet_champ.attr('checked') == false)
	{
		erreur = 1
		
		msg_erreur += "\n - vous devez accepter le réglement.";
	}
	
	return erreur;
}

/* fonction de test d'un champ type email
liste des paramètres :
	objet_champ	: traité */
function test_email(objet_champ)
{
	var erreur = 0;
	
	if(test_vide(objet_champ) == 0)
	{
		tab_erreurs[objet_champ.attr("id")] = 0;
		
		var valeur = objet_champ.attr("value");
		var expr = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,3}$/;
		var buff = expr.exec(valeur);
		
		if (buff == null)
		{
			erreur = 1;
			msg_erreur += "\n - le format de l'e-mail est incorrect, ";
		}
	}
	
	return erreur;
}

/* fonction de test d'un champ type email
liste des paramètres :
	objet_champ	: traité */
function test_pattern(objet_champ)
{
	var erreur = 0;
	
	if(test_vide(objet_champ) == 0)
	{
		tab_erreurs[objet_champ.attr("id")] = 0;
		
		var pattern = new Array();
		pattern['password'] = /^[- A-Za-z0-9ç'\.]{1,50}$/;
		pattern['caracter'] = /^[éèàùêîôûâöïüëäàçÑÁÉÍÓÚúóíéáña-zA-Z-' ]{2,50}$/;
		pattern['adresse'] = /^[-– '’“”\"0-9A-ZÉa-zéèàáâãäåæçêëìîïíðóôõöøœùúûüýÿš°\/\.,:\!\?…\(\)]{2,32}$/;
		pattern['codepostal'] = /^[0-9]{5}$/;
		pattern['ville'] = /^[- '’A-Za-zïëçéèà]{2,50}$/;
		
		var tab_msgerreur = new Array();
		tab_msgerreur['password'] = "";
		tab_msgerreur['caracter'] = "le nom et le prénom doivent contenir entre 2 et 50 lettres, ";
		tab_msgerreur['adresse'] = "les adresses doivent contenir entre 2 et 32 lettres ou chiffres";
		tab_msgerreur['codepostal'] = "le code postal doit être de 5 chiffres";
		tab_msgerreur['ville'] = "la ville doit contenir entre 2 et 50 lettres";
		
		var valeur = objet_champ.attr("value");
		var expr = pattern[objet_champ.attr("pattern")];
		var buff = expr.exec(valeur);
		
		if (buff == null)
		{	
			erreur = 1;
			
			if(msg_erreur.indexOf(tab_msgerreur[objet_champ.attr("pattern")]) < 0)
			{
				msg_erreur += "\n - " + tab_msgerreur[objet_champ.attr("pattern")];
			}
		}
	}
	
	return erreur;
}

/* fonction de test l'égalitée entre deux champ
liste des paramètres :
	objet_champ	: traité */
function test_egal(objet_champ)
{
	var erreur = 0;
	
	if(test_vide(objet_champ) == 0)
	{
		tab_erreurs[objet_champ.attr("id")] = 0;
		
		var valeur = objet_champ.attr("value");
		var autre = objet_champ.attr("autre");
		var valeurAutre = $("#" + autre).attr("value");
		
		if (valeur != valeurAutre)
		{
			erreur = 1;
			msg_erreur += "\n - il y a une incohérence entre les e-mails, ";
		}
	}
	
	return erreur;
}

/* fonction de test du champs date
liste des paramètres :
	objet_champ	: traité */
function test_date(objet_champ)
{
	var erreur = 0;
	
	if(test_vide(objet_champ) == 0)
	{
		tab_erreurs[objet_champ.attr("id")] = 0;
		
		var jour = objet_champ;
		var mois = $("#m_" + objet_champ.attr("fin"));
		var annee = $("#a_" + objet_champ.attr("fin"));
		
		
		var j = jour.attr("value")*1;
		var m = mois.attr("value")*1;
		var a = annee.attr("value")*1;
		
		var d2=new Date(a,m-1,j);
		var j2=d2.getDate();
		var m2=d2.getMonth()+1;
		var a2=d2.getYear();
		if (a2<1000)
		{
			a2=1900+a2;
		}
		var d3 = new Date();
		
		if ((j!=j2)||(m!=m2)||(a!=a2))
		{
			erreur = 1;
			msg_erreur += "\n - la date est incorrecte, ";
		}else if(d2>d3)
		{
			erreur = 1;
			msg_erreur += "\n - la date doit être antérieur à aujourd'hui, ";
		}
	}
	
	return erreur;
}


/* fonction de récupération des valeurs du formulaire */
function form_json()
{
	var param = {};
	var label = {};
	var tab_id = new Array();
	var nom_tab, buff_tab;

	$(".js_submit").each(function()
		{
			if($(this).attr("name").indexOf("[]") > 0) 
			{
				nom_tab = $(this).attr("name").substr(0, $(this).attr("name").indexOf("[]"));
				buff_tab = 1;

				if(param[nom_tab] == undefined)
				{
					param[nom_tab] = {};
					tab_id[nom_tab] = 0;
				}
			}else
			{
				nom_tab = $(this).attr("name");
				buff_tab = 0;
			}

			if($(this).attr("type") == "radio" || $(this).attr("type") == "checkbox")
			{
				if($(this).is(':checked') == true)
				{
					if(buff_tab == 1)
					{
						param[nom_tab][tab_id[nom_tab]] = $(this).val();
						tab_id[nom_tab]++;
					}else
					{
						param[nom_tab] = $(this).val();
					}
				}
			}else
			{
				if(buff_tab == 1)
				{
					param[nom_tab][tab_id[nom_tab]] = $(this).val();
					tab_id[nom_tab]++;
				}else
				{
					param[nom_tab] = $(this).val();
				}
			}
			
			label[$(this).attr("name")] = $('label[for="' + $(this).attr("id") + '"]').html();
		}
	);
	
	param['label'] = label;
	
	return param;
}
