////////////////////////////////////
// Controles des types
////////////////////////////////////

function isNumeric(value) { // Test si entier
	return /^\d+$/.test(value);
} 

function isDate(value) { // Test si date
	return /^[0-3][0-9][\/-][0-1][0-9][\/-][1-2][0-9][0-9][0-9]$/.test(value);
}
 
function isEmail(value) { // Test si email
	return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
}

function isNoTel(value) { // Test si numéro de téléphone
  return /^(0\d{9})|(0\d[ \.-]\d{2}[ \.-]\d{2}[ \.-]\d{2}[ \.-]\d{2})$/.test(value);
}

function isLength(id,value) { // Test la longueur de la chaine
	if ($("#"+id).val().length>=value) {
		return true;
	} else {
		return false;
	}
}

function isLengthMax(id,value) { // Test la longueur de la chaine
	if ($("#"+id).val().length<=value) {
		return true;
	} else {
		return false;
	}
}

function isLengthEqual(id,value) { // Test la longueur de la chaine
	if ($("#"+id).val().length==value) {
		return true;
	} else {
		return false;
	}
}

function isEqual(id,value) { // Test l'equivalence
	if ($("#"+id).val()===$("#"+value).val()) {
		return true;
	} else {
		return false;
	}
}

////////////////////////////////////
// Controles des champs
////////////////////////////////////

var form_errors = 0;

function required(id,message) {
	if(form_errors==0) {
		if ($("#"+id).val().length==0) {
			form_errors++;
			alert(message);
			afficherOngletErreur(id);
		}
	}
}

function requiredRadio (id,message) {
	if(form_errors==0) {
		if ($("input[type='radio'][name='"+id+"']").is(":checked")==false) {
			form_errors++;
			alert(message);
			afficherOngletErreur(id);
		}
	}
}

function controlType(id,message,type) {
	if((form_errors==0)&&($("#"+id).val()!='')) {
		var isValide = true;
		switch (type) {
			case 'telephone': isValide = isNoTel($("#"+id).val()); break;
			case 'numerique': isValide = isNumeric($("#"+id).val()); break;
			case 'date': isValide = isDate($("#"+id).val()); break;
			case 'email': isValide = isEmail($("#"+id).val()); break;
			case 'length': var temp = message.split('|'); isValide = isLength(id,temp[0]); message=temp[1]; break;
			case 'lengthMax': var temp = message.split('|'); isValide = isLengthMax(id,temp[0]); message=temp[1]; break;
			case 'lengthEqual': var temp = message.split('|'); isValide = isLengthEqual(id,temp[0]); message=temp[1]; break;
			case 'equal': var temp = message.split('|'); isValide = isEqual(id,temp[0]); message=temp[1]; break;
		}
		if (isValide==false) {
			form_errors++;
			alert(message);
			afficherOngletErreur(id);
		}
	}
}

function afficherOngletErreur (id) {
	var i=1;
	var nb_etapes = $(".table_grand").size();
	for(i=1;i<=nb_etapes;i++) {
		if ($("#etape_"+i).find("#"+id).size()==1) {
			displayEtape(i);
			$("#"+id).focus();
		}
		if ($("#etape_"+i).find("input[type='radio'][name='"+id+"']").size()>0) {
			displayEtape(i);
			$("#etape_"+i).find("input[type='radio'][name='"+id+"']").focus(); 
		}
	}
}

function champsCompleteOuVide (listeDesChamps,message) {
	if(form_errors==0) {
		var nb_champs = listeDesChamps.length;
		var i = 0;
		var unRempli = false;
		var unVide = false;
		
		for (i=0;i<nb_champs;i++) {
			if ($("#"+listeDesChamps[i]).val()!='') {
				unRempli = true;
			}
			if ($("#"+listeDesChamps[i]).val()=='') {
				unVide = true;
			}
		}
		if (unRempli && unVide) {
			form_errors++;
			alert(message);
			afficherOngletErreur(listeDesChamps[0]);
		}
	}
}
