required_error="Required information";
number_error="Numbers only";
alpha_error="Letters only";
alphanum_error="Avoid using accents";
door_number_error="Numbers only";
postal_code_error="Numbers and letters only";
phone_number_error="Example: 418 555-5555";
digits_error="* ";
date_error="* ";
email_error="Invalid email address";
required_selection_error="Choose from this list";
required_language_error="Choose from this list";
required_dispo_error="Make a choice or indicate your availability above";
required_experience_error="Indicate your sector(s) of interest";
required_secteurs_error="Choose from this list";
montant_error="Enter only round numbers: 2, 5, 10, 20"; // voir fichier offrande_fr.php et changer le texte la egalement!
required_checkbox_error="Choose at least an option";
required_phone_or_email_error="Give your email or your phone number";
days_of_month_error="Enter only valid days";
////////////////////////////////////////////////////////////////////////////////

function formCallback(result, form) {
	window.status = "valiation callback for form '" + form.id + "': result = " + result;
}


function setRequiredForSecteurs(id, checkbox) {
	var e = document.getElementById(id);
	var pi = document.getElementById('interets');
	var pe = document.getElementById('experiences');
	var c = e.className;
	var hasOne = false;
	var adv = document.getElementById('advice-required-secteurs-secteurs');
	if (checkbox.checked) {
		//e.className = c.replace(/ ?(required)[^-\s]*/, "$1");
		e.className = c.replace(/required-secteurs/, "");
		if (adv) {adv.style.display = 'none';}
	} else {
		var options = pi.getElementsByTagName('input');
		for (var i = 0; i < options.length; i++) { 
			if (options[i].checked) {
				hasOne = true;
			}
		}
		var options = pe.getElementsByTagName('input');
		for (var i = 0; i < options.length; i++) { 
			if (options[i].checked) {
				hasOne = true;
			}
		}
		if (!hasOne) {
			e.className = c.concat(" required-secteurs");
			if (adv) {adv.style.display = 'block';}
		}
	}
}

function toggleRequiredInterpretation(checked1, checked2) {
	if (checked1 || checked2) 
		Element.show($('divinterpretationlangues'));
	else
		Element.hide($('divinterpretationlangues'));
}

function validateMontant(obj) {
	return obj.value.replace(/^[ ]*([0-9]+)(,|\.)?[0-9]*$/, "$1.00");
}

function init() {
	var valid = new Validation('corpForm', {stopOnFirst:false, immediate : true, onFormValidate : formCallback});

Validation.addAllThese([
	['required', required_error, function(v) {
				return !Validation.get('IsEmpty').test(v);
			}],
	['required-phone-or-email', required_phone_or_email_error, function(v) {
				return !Validation.get('IsEmpty').test(v);
			}],
	['required-secteurs', required_secteurs_error, function(v) {
				return !Validation.get('IsEmpty').test(v);
			}],
	['validate-number', number_error, function(v) {
				return Validation.get('IsEmpty').test(v) || (!isNaN(v) && !/^\s+$/.test(v));
			}],
	['validate-strict-number', montant_error, function(v) {
				return Validation.get('IsEmpty').test(v) || (!isNaN(v) && /^[0-9\.]+$/.test(v));
			}],
	['validate-days-of-month', days_of_month_error, function(v) {
				return Validation.get('IsEmpty').test(v) || /^[0-9,\s]+$/.test(v);
			}],
	['validate-digits', 'Please use numbers only in this field. please avoid spaces or other characters such as dots or commas.', function(v) {
				return Validation.get('IsEmpty').test(v) ||  !/[^\d]/.test(v);
			}],
	['validate-alpha', alpha_error, function (v) {
				return Validation.get('IsEmpty').test(v) ||  /^[^0-9!@#$%^&*()_+|~<>\;]+$/.test(v);
			}],
	['validate-alphanum', alphanum_error, function(v) {
				return Validation.get('IsEmpty').test(v) ||  /^[^!@#$%^&*()_+|~]{2,256}$/.test(v);
			}],
	['validate-door-number', door_number_error, function(v) {
				return Validation.get('IsEmpty').test(v) || /^[-\.0-9 \/]{1,9}[a-zA-Z]{0,4}$/.test(v);
			}],
	['validate-postal-code', postal_code_error, function(v) {
				return Validation.get('IsEmpty').test(v) || /^([0-9a-zA-Z]{2,4}\ ?){2,3}$/.test(v);
			}],
	['validate-phone-number', phone_number_error, function(v) {
				return Validation.get('IsEmpty').test(v) || /^\(?([0-9]{2,4}\)?[\-\.\ ]?){2,5}$/.test(v);
			}],
	['validate-date', 'Please enter a valid date.', function(v) {
				var test = new Date(v);
				return Validation.get('IsEmpty').test(v) || !isNaN(test);
			}],
	['validate-email', email_error, function (v) {
				return Validation.get('IsEmpty').test(v) || /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(v)
			}],
	['validate-url', 'Please enter a valid URL.', function (v) {
				return Validation.get('IsEmpty').test(v) || /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(v)
			}],
	['validate-date-au', 'Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.', function(v) {
				if(Validation.get('IsEmpty').test(v)) return true;
				var regex = /^(\d{2})\/(\d{2})\/(\d{4})$/;
				if(!regex.test(v)) return false;
				var d = new Date(v.replace(regex, '$2/$1/$3'));
				return ( parseInt(RegExp.$2, 10) == (1+d.getMonth()) ) && 
							(parseInt(RegExp.$1, 10) == d.getDate()) && 
							(parseInt(RegExp.$3, 10) == d.getFullYear() );
			}],
	['validate-currency-dollar', 'Please enter a valid $ amount. For example $100.00 .', function(v) {
				return Validation.get('IsEmpty').test(v) ||  /^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)
			}],
	['validate-selection', required_selection_error, function(v,elm){
				return elm.options ? elm.selectedIndex > 0 : !Validation.get('IsEmpty').test(v);
			}],
	['validate-one-required', required_checkbox_error, function (v,elm) {
				var p = elm.parentNode;
				var options = p.getElementsByTagName('INPUT');
				return $A(options).any(function(elm) {
					return $F(elm);
				});
			}],
	['validate-one-required-language', required_language_error, function (v,elm) {
				var p = elm.parentNode;
				var options = p.getElementsByTagName('INPUT');
				return $A(options).any(function(elm) {
					return $F(elm);
				});
			}],
	['validate-one-required-dispo', required_dispo_error, function (v,elm) {
				var p = elm.parentNode;
				var options = p.getElementsByTagName('INPUT');
				return $A(options).any(function(elm) {
					return $F(elm);
				});
			}],
	['validate-one-required-experience', required_experience_error, function (v,elm) {
				var p = elm.parentNode;
				var options = p.getElementsByTagName('INPUT');
				return $A(options).any(function(elm) {
					return $F(elm);
				});
			}]
]);

}

window.onload = init ;

