function verif_form(formulaire) {
	var alertText = "";
	var message = "";
	var aFormCtrlSchemes = [["isNotEmpty","Merci de remplir tous les champs obligatoires"],
							["isMail","Le champ \"%s\" ne correspond pas à un email valide"],
							["isInt","Le champ \"%s\" ne correspond pas à un entier valide"]];
	var test_class_required = "required";
	var erreur = 0;
	var vide = 0;
	for ( var i=0; i<formulaire.getElementsByTagName("label").length; i++ ) {
		element_label = formulaire.getElementsByTagName("label")[i];
		txt_label = element_label.firstChild.nodeValue;
		class_label = element_label.className;
		if ( element_label.getAttribute("htmlFor") || element_label.getAttribute("for") ) {
			if ( document.all ) 
				id_champs = element_label.getAttribute("htmlFor");
			else 
				id_champs = element_label.getAttribute("for");
				
			champs = document.getElementById(id_champs);
			
			//Si le champs est obligatoire
			if ( test_class_required != "" && class_label == test_class_required)  {
				if ( champs.tagName == "INPUT") {
					switch (champs.getAttribute("type")) {
						case "text":
							if(champs.value == ""){
								message = cf_adderr(element_label, champs.id);
								if ( vide == 0 )
									alertText += aFormCtrlSchemes[0][1] + " : \n" + "- " + message + "\n";
								else
									alertText += "- " + message + "\n";
								erreur ++;
								vide ++;
							}
							else
								// email est un champ spécial nécessitant une vérification
								if(/email/i.test(champs.id) && !cf_isEmailAddr(champs.value)){
									message = cf_adderr(element_label, champs.id);
									alertText += aFormCtrlSchemes[1][1].replace("%s",message) + "\n";
									erreur ++;
								}						
							break;
						case 'textarea':
							if(champs.value==''){
								message = cf_adderr(element_label, champs.id);
								if (  vide == 0 )
									alertText += aFormCtrlSchemes[0][1] + " : \n" +  "- " + message + "\n";
								else
									alertText += "- " + message + "\n";
								erreur ++;
								vide ++;
							}							
							break;
						case 'checkbox':
							if(!champs.checked){
								message = cf_adderr(element_label, champs.id);
								if (  vide == 0 )
									alertText += aFormCtrlSchemes[0][1] + " : \n" + "- " + message + "\n";
								else
									alertText += "- " + message + "\n";
								erreur ++;
								vide ++;
							}							
							break;
						case 'select-one':
							if(!champs.selectedIndex && champs.selectedIndex==0){
								message = cf_adderr(element_label, champs.id);
								if (  vide == 0 )
									alertText += aFormCtrlSchemes[0][1] + " : \n" + "- " + message + "\n";
								else
									alertText += "- " + message + "\n";
								erreur ++;
								vide ++;
							}
							break;
					}
				}
				else  {
					if ( champs.tagName == "SELECT") {
						if(!champs.selectedIndex && champs.selectedIndex==0){
							message = cf_adderr(element_label, champs.id);
							if (  vide == 0 )
								alertText += aFormCtrlSchemes[0][1] + " : \n" + "- " + message + "\n";
							else
								alertText += "- " + message + "\n";
							erreur ++;
							vide ++;
						}
					}
				}
			}
			else {
				if(/email/i.test(champs.id) && champs.value!='' && !cf_isEmailAddr(champs.value)){
					message = cf_adderr(element_label, champs.id);
					alertText += aFormCtrlSchemes[1][1].replace("%s",message) + "\n";
					erreur ++;
				}
			}
		}
	}
	
	if ( erreur != 0 ) {
		alert(alertText);
		return false;
	}
	else {
		return true;
	}


	/* Méthodes outils */
	function cf_adderr(clabel, cchamps) {
		var textContent = getTextContent(element_label).replace(/\s{2,}/g," ");
		if (textContent != "")
			if (/acceptation/i.test(champs.id))
				textContent = "Acceptation des conditions de participation à notre jeu concours";
			else
				textContent = textContent.replace(/^[\s:*]+|[\s:*]+$/g,"");
		else 
			if (/email/i.test(champs.id))
				textContent = "Email";
			else if (/acceptation/i.test(champs.id))
				textContent = "Acceptation des conditions de participation à notre jeu concours";
			else
				textContent = cchamps;
		return textContent;
	}
	
	function cf_isEmailAddr(str) {
		return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
	}
	
	function getTextContent(oNode) {

        if (typeof(oNode.textContent)!="undefined") {
			return oNode.textContent;
		}
		switch (oNode.nodeType) {
			case 3: // TEXT_NODE
			case 4: // CDATA_SECTION_NODE
			  return oNode.nodeValue;
			  break;
			case 8: // COMMENT_NODE
			case 7: // PROCESSING_INSTRUCTION_NODE
			  if (getTextContent.caller!=getTextContent) {
				return oNode.nodeValue;
			  }
			  break;
			case 9: // DOCUMENT_NODE
			case 10: // DOCUMENT_TYPE_NODE
			case 12: // NOTATION_NODE
			  return null;
			  break;
		}
		var _textContent = "";
			oNode = oNode.firstChild;
			while (oNode) {
				_textContent += getTextContent(oNode);
				oNode = oNode.nextSibling;
			}
		return _textContent;
    }
}