function checkForm(formulaire){
	if(!document.getElementById || !document.createTextNode){return;}
	if(!formulaire.required){return;}
	
	var error = false;
	var errortel = false;
	var errormail = false;
	var errorID = 'errormsg';
	var errortelID = 'errortel';
	var errormailID = 'errormail';
	var errorClass = 'error'
	var errorMsg = '';
	var reqfields = formulaire.required.value.split(',');
	
	// RAZ des classes error
	//document.getElementById(errorID).innerHTML = "";
	document.getElementById(errorID).style.display = 'none';
	if(document.getElementById(errortelID)){document.getElementById(errortelID).style.display = 'none';}
	if(document.getElementById(errormailID)){document.getElementById(errormailID).style.display = 'none';}
	//$(errorID).removeClassName(errorClass);

	for(var i=0, nbReqFields=reqfields.length; i<nbReqFields; i++)
	{
		var field = formulaire.elements[reqfields[i]];
		try{
			if(field.length > 1 && field[0].type.toLowerCase() == 'radio'){
				field = field[0];
			}
		}catch(err){}
		if(field){
			cf_removeerr(field);
		}
	}

	// boucle sur les champs requis
	for(var i=0, nbReqFields=reqfields.length; i<nbReqFields; i++)
	{
		// vérifie que le champs requis est présent
		var field = formulaire.elements[reqfields[i]];
		try{
			if(field.length > 1 && field[0].type.toLowerCase() == 'radio'){
				field = field[0];
			}
		}catch(err){}
		
		if(field){
			// teste si le champ requis est erroné, en fonction de son type 
			switch(field.type.toLowerCase())
			{
				case 'text':
					if(field.value == ''){
						cf_adderr(field);
						error = true;
					}              
					// email est un champ spécial nécessitant une vérification
					else if(field.name.indexOf('mail') != -1 && !cf_isEmailAddr(field.value)){
						cf_adderr(field);
						errormail = true;
					}
					//tel
					else if(field.name.indexOf('tel') != -1 && !cf_isTel(field.value)){
						cf_adderr(field);
						errortel = true;
					}
					break;
				case 'textarea':
					if(field.value==''){
						cf_adderr(field);
						error = true;
					}              
					break;
				case 'checkbox':
					if(!field.checked){
						cf_adderr(field);
						error = true;
					}              
					break;
				case 'radio':
					var isChecked = false;
					for(var j = 0, nbRadio=formulaire.elements[field.name].length; j < nbRadio; j++){
						if(formulaire.elements[field.name][j].checked){
							isChecked = true;
						}
					}	
					if(!isChecked){
						cf_adderr(field);
						error = true;
					}              
					break;
				case 'select-one':
					if(!field.selectedIndex && field.selectedIndex==0){
						cf_adderr(field);
						error = true;
					}              
					break;
			}
		}
	}

	// Affiche le message d'erreur
	if(error){
		//document.getElementById(errorID).innerHTML = errorMsg;
		document.getElementById(errorID).style.display = 'block';
		//$(errorID).addClassName(errorClass);
	}
	if(errormail){
		//document.getElementById(error2ID).innerHTML = errorMsg;
		document.getElementById(errormailID).style.display = 'block';
		//$(error2ID).addClassName(errorClass);
	}
	if(errortel){
		//document.getElementById(error2ID).innerHTML = errorMsg;
		document.getElementById(errortelID).style.display = 'block';
		//$(error2ID).addClassName(errorClass);
	}
	
	function cf_isEmailAddr(str) 
	{
		return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
	}
	
	function cf_isTel(str) 
	{
		return (str.match(/^[\d]*$/) && str.length == 10);
	}
	
	function cf_adderr(elmt)
	{
		/*if(elmt.type.toLowerCase() == 'radio'){
			$("label[for='"+elmt.name+"']").addClass(errorClass);
		}
		$("label[for='"+elmt.id+"']").addClass(errorClass);*/
		$(elmt).addClassName(errorClass);
	}
	
	function cf_removeerr(elmt)
	{
		/*if(elmt.type.toLowerCase() == 'radio'){
			$("label[for='"+elmt.name+"']").removeClass(errorClass);
		}
		$("label[for='"+elmt.id+"']").removeClass(errorClass);*/
		$(elmt).removeClassName(errorClass);
	}
	
	return (!error && !errormail && !errortel);
}
