function retrieveChampsConditionnesByClass(elt_englobant, classe)
{
	var element_englobant = $(elt_englobant);
	return element_englobant.getElements('[class^='+classe+']');
}


function checkChampsConditionnes(elt_englobant, erreur)
{
	var chaine = 'condition__';
	var champs = retrieveChampsConditionnesByClass(elt_englobant, chaine);
	champs.forEach(function (item, index)
	{
		//On explose le nom des classes si plusieurs
		var classes = item.className.split(' ');

		if(classes[0] && classes[0].contains(chaine))
		{
			var nom_classe = classes[0];
			//on re split pour avoir les infos de lelement conditionnant et la valeur
			var tab = nom_classe.split('__');
			//si la syntaxe de la classe est bonne
			if(tab.length == 3)
			{
				var champ_dependant = $(tab[1]);
				var valeur_remplissant = tab[2];
				if(champ_dependant)
				{
					switch(champ_dependant.type)
					{
						case "checkbox":
						case "radio":
							var obligatoire = (champ_dependant.checked == valeur_remplissant);
						break;

						case "select-one":
							var obligatoire = (champ_dependant.options[champ_dependant.selectedIndex].value == valeur_remplissant.toInt())	;
						break;

						case "text":
							var obligatoire = (champ_dependant.value == valeur_remplissant)	;
						break;
					}
					erreur = signaleErreurs(obligatoire, item, erreur);
				}
			}
		}
	});
	return erreur;
}

/*
Cette fonction met le champ en rouge s'il est obligatoire le champ mal rempli, enlève le rouge si cest bien rempli
*/
function signaleErreurs(obligatoire, item, erreur)
{
	//Si cest pas obligatoire on enleve la classe qui met en rouge qui aurait pu etre signalé précedemment
	if(obligatoire)
	{
		erreur = changeEtat(item, erreur);
	}
	else
	{
		var lbl = choppeLabel(item);
		item.removeClass('highlight_champ');
	}
	return erreur;
}

function signaleSpan(item, obligatoire)
{
	//SPAN
	var elt_parent = item.getParent();
	var spans = elt_parent.getElements('span.txt_rouge');
	//console.log(elt_parent);
	spans.each(function(span)
	{
		if(obligatoire)
			span.removeClass('masque');
		else
			span.addClass('masque');
	});
}


//Vérifie les checkbox obligatoire contenues dans une div
function checkCheckbox(elt_englobant, error)
{
	var element_englobant = $(elt_englobant);
	var classe = 'checkbox_obl';
	var div_chk = element_englobant.getElements('[class^='+classe+']');

	div_chk.each(function(item)
	{
		//On récupère toutes les checkbox de cette div et si aucune checkbox est cochée on le signale
		var nb_chk_checked = 0;
		var ok = false;
		var checkboxes = item.getElements('input[type=checkbox]');
		checkboxes.each(function(chk)
		{
			//c'est ok seulement si cetait ok avant et que soit le champ est désactivé soit il est coché
			ok = ok || (chk.disabled || chk.checked);
		});

		if(!ok)
		{
			item.addClass('highlight_champ');
		}
		else
			item.removeClass('highlight_champ');

		error = error || !ok;
	});
	return error;
}
