// checkForm has to be added to the onsubmit event of the form

var lastWrongElem = null;

function isEmpty(s) {
	for (var i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '\t'))
		  return false;
	}
	return true;
}

function checkEmail(s) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return isEmpty(s) || filter.test(s);
}

function checkPhone(s) {
	var filter  = /^([0-9\.\(\)\+ ])/;
	return isEmpty(s) || filter.test(s);
}

function checkNpa(s) {
	var filter  = /^([0-9]{4,4})+$/;
	return isEmpty(s) || filter.test(s);
}

function checkNumber(s) {
	var filter  = /^([0-9 \'])/;
	return isEmpty(s) || filter.test(s);
}

function notifyError(elem, msg) {	
			alert(msg);
			lastWrongElem = elem;
			elem.style.borderColor = "#FF0000";
			elem.focus();
			return false;
}

function checkForm(frm) {
	var obligatoire;
	var contenu;
	var value;
	
	if (lastWrongElem != null) {
		lastWrongElem.style.borderColor = "";
		lastWrongElem = null;
	}

	for (var i = 0; i < frm.elements.length; i++) {
    obligatoire = frm.elements[i].nextSibling && frm.elements[i].nextSibling.nodeValue.match(/ */);
    contenu = frm.elements[i].contenu; 
    value = frm.elements[i].value;
    if (frm.elements[i].tagName == "SELECT")
      value = frm.elements[i].options[frm.elements[i].selectedIndex].text;

		if (obligatoire && isEmpty(value))
			return notifyError(frm.elements[i], "Veuillez remplir tous les champs suivi de *.");

		if ((contenu == "email") && !checkEmail(value))
			return notifyError(frm.elements[i], "Le format de l'adresse E-Mail est incorrect.");

		if ((contenu == "tel") && !checkPhone(value))
			return notifyError(frm.elements[i], "Le format du numéro de téléphone est incorrect.");

		if ((contenu == "npa") && !checkNpa(value))
			return notifyError(frm.elements[i], "Le format du numéro postal est incorrect.");

		if ((contenu == "num") && !checkNumber(value))
			return notifyError(frm.elements[i], "Un nombre est requis.");
	}
	return true;
}
		
