/******************************************************
Nicolas Dalledonne
Verifie de maniére automatique les champs dans un formulaire 
déclarés comme obligatoires

o_ : champs obligatoire
o_email : champs obligatoire et vérifie la validité de l'email
o_num : champs obligatoire et vérifie que le champ est numérique
o_date : champs obligatoire et vérifie le champ à la date jj/mm/aaaa
******************************************************/
// Tableau contenant les messages a afficher dans l'alerte
tabMessage = Array("Certification*", "Certi*") ;
MsgObligatoire = "Champ obligatoire" ;
MsgObligatoireNum = "Ce champ oblitoire et numérique" ;
MsgObligatoireDate = "Format de date incorrecte" ;
MsgObligatoireEmail = "Adresse email non valide" ;



function decoErreur(id) {
	//alert(id)
	document.getElementById("e"+id).style.display = "block" ;
	/*
	document.getElementById("f"+oName).style.background = "#FFDFDF url(li-err-bg.png) repeat scroll 0% !important" ;
	document.getElementById("f"+oName).style.borderTop = "solid 1px #DF7D7D" ;
	document.getElementById("f"+oName).style.borderBottom = "solid 1px #DF7D7D" ;
	document.getElementById("f"+oName).style.margin = "3px 0px" ;
	document.getElementById("f"+oName).style.height = "30px" ;
	document.getElementById("f"+oName).style.lineHeight = "30px" ;
	*/
	
}

function verifChampCHECKBOX(oName,oId) {
	try {
		document.getElementById("e"+oName).innerHTML = "" 		
		var o = document.getElementById(oId)
		
		// isole : o_mxx ou xx sera le numéro du messaga à afficher. 
		var reg = new RegExp("^o_m[0-9]{1,}", "g");
		var chaine = Array();
		var chaine = reg.exec(o.id) ;
		
		var erreur = "Ce champ est obligatoire" ;
		
		// Si la checkbox est coché il n'y a pas d'erreur
		if( o.checked == true ) {	
			 erreur = "" ;
		}	
		//alert('')
		if(erreur!='') {
			document.getElementById("e"+oName).innerHTML = erreur ;
			decoErreur(oName);
		}
		
	return erreur ;
	} catch(e) {
	
	}
}


function verifChampSELECT(oName,oId) {
	try {
		document.getElementById("e"+oName).innerHTML = "" 		
		var o = document.getElementById(oId)
		var erreur = "" ;
		
		if( o.selectedIndex == 0 ) {	
			erreur = "Ce champ est obligatoire" ;
		}
		if(erreur!='') {
			document.getElementById("e"+oName).innerHTML = erreur ;
			decoErreur(oName);
		}
		
		return erreur ;
	} catch(e) {
	
	}
}

function verifChampRADIO(oName,oId,idForm) {
	try {
		document.getElementById("e"+oName).innerHTML = "" 		
		var oForm = document.getElementById(idForm) ;	
		var taille = oForm.length
		var erreur = "Ce champ est obligatoire" ;
		
		// Parcours la balise form
		for(var i = 0; i<taille ; i++) {
			
			// Si l'attribut name de l'élement courant contient oName
			if( oForm[i].name.indexOf(oName) != -1 ) {
				if(oForm[i].checked == true ) {
					erreur = "" ;
				}
			}		
		}
		if(erreur!='') {
			document.getElementById("e"+oName).innerHTML = erreur ;
			decoErreur(oName);
		}
		
		return erreur ;
	} catch(e) {
	
	}
}

function verifChampTXT(oName,oId) {
	try {
		document.getElementById("e"+oName).innerHTML = "" 		
		var o = document.getElementById(oId)
		var erreur = "" ;
		
		if( o.value == '' ) {	
			erreur = "Ce champ est obligatoire" ;
		} else {	
			// test si le champ est numérique
			if(o.id.indexOf("_num_")!=-1) {
				
				if(isNaN(o.value) ){
					erreur = "Ce champ est uniquement numerique" ;
				}
			}else if(o.id.indexOf("_date_")!=-1) {
				
				// test si le format de la date est du type mm/jj/aaaa
				var reg = new RegExp("^[0-9]{2}/[0-9]{2}/[0-9]{4}", "g");
				var chaine = true ;
				chaine = reg.test(o.value) ;
				
				if( !(chaine) ){
					erreur = "Format de date incorrecte" ;
				}
			} else if(o.id.indexOf("_email_")!=-1){ 
				if(email.search(/^[_a-z0-9-]+(.[_a-z0-9-]+)*[^._-]@[a-z0-9-]+(.[a-z0-9]{2,4})*$/) == -1) {
					erreur = "Email non valide incorrecte" ;
				}
			
			}else if(o.id.indexOf("_mdp_conf")!=-1){ 
				if(o.value!=document.getElementById('o_internaute_mdp').value) {
					erreur = "Le mot de passe est differrent" ;
				}
			}else {
				
			}			
		}
					// On ecrit le message d'erreur s'il a été définit
		if(erreur!='') {
			document.getElementById("e"+oName).innerHTML = erreur ;
			decoErreur(oName);
		}
		

		return erreur ;
	} catch(e) {
	
	}
}

function ND_sendForm(idForm) {
	
	erreur = ND_verifForm(idForm) ;
	alert(erreur)
	if( erreur ) {
		alert('envoi')
		//document.getElementById(idForm).submit() ;
	} else {
		alert('erreur')
		return erreur ;
	}

}

function ND_verifForm(idForm) {
	//alert('dfgdfgdf')
	var etat = "true" ;
	var message = "" ; 
	var motObligatoire = "o_" ;						// Préfixe rajouté à l'idée du champ qui doit etre obligatoire
	var oForm = document.getElementById(idForm) ;	
	var taille = oForm.length
	var oId = '' ; 									// Id du champ courant
	var oName = '' ;								// Nom du champ courant
	var isObligatoire = '' ;
	var oType = '' ;								// Type du champ courant (txt, checkbox, radio etcc ...)
	
	// Parcours la balise form
	for(var i = 0; i<taille ; i++) {
		oId = oForm[i].id		
		isObligatoire = oId.indexOf(motObligatoire) ;
		// Si le mot obligatoire est présent dans l'id alors ce champs est oligatoire
		if( isObligatoire !=- 1 ) {
			oType = oForm[i].type ;
			oName = oForm[i].name ;
			switch(oType) {
				case 'textarea' :
				case 'password' :
				case 'text' :
					message += verifChampTXT(oName,oId) ;					
				break;
				case 'radio' :
					message += verifChampRADIO(oName,oId,idForm) ;					
				break;
				
				case 'select-one' :
					message += verifChampSELECT(oName,oId) ;					
				break;				
				
				case 'checkbox' :
					message += verifChampCHECKBOX(oName,oId) ;					
				break;				
				
				default :
					alert("default : "+oType+" - "+oName)
					alert('type de champ inconnu') ;
						
			} // switch	
			
					
		} // if : if( isObligatoire !=- 1 )
	} // for : 	for(var i in oForm) 
	
	
	// Si message n'est pas vide c'est qu'il y a des erreur (champ obligatoire non renseigner)
	if( message != '' ) {
		etat = false ;
	}
	
	return etat ;
		
}

