/* Date de création: 20/11/2003 */

/*
 * sous-routines communes a toutes -- ne pas modifier --
 */

/* 
   Chaque formulaire doit avoir un nom different, et chaque champ de chaque formulaire doit avoir un nom distinct : 
   l'atribut "name" donne le nom du champ ; c'est le nom par lequel les scripts le manipulent et celui par lequel 
   il devrait etre reconnu par la base de donnees. 
   l'atribut "title" donne le texte descriptif des champs ; c'est aussi le texte utilise par les messages d'alertes 
   (les noms ne sont pas forcement parlant pour les usagers) 
*/

var valide=false;	// variable globale qui indique la validite d'un controle

function refaire(controle,message) {	// afficher un message d'erreur et se repositionner dans une zone.
	alert(message);
	controle.focus();
	return valide=false; 
}

function texte_ok(champ,longueur) {	// verifier que du texte d'une longueur minimale (0 si sans importance) est saisi dans un champs texte (types : text, password, textarea, file)
	if (champ.value.length<=longueur) {
		if (longueur!=0) { 
/*			refaire(champ,champ.title+' doit etre plus grande...');*/
			refaire(champ,champ.title+' doit comporter au moins '+(longueur+1)+' caractères...');
		} else 
		    refaire(champ,champ.title+' est obligatoire ! Merci de le renseigner');
	} else 
		return valide=true; 
}

function email_ok(champ) {	// verifier qu'une adresse e-mail valide est saisie dans un champ texte (types : text, password, textarea, file)
	message="Merci d'indiquer une adresse de courriel valide\n ";
	arobase=champ.value.indexOf('@', 0);
	point=champ.value.indexOf('.',0);
	if (champ.value.length==0) {
		refaire(champ,"Merci d'indiquer une adresse de courrier électronique");
	} else if (arobase==-1) {
		refaire(champ,message+'(avec un @) !');
	} else if (arobase==0) {
		refaire(champ,message+'(ne commençant pas par @) !');
	} else if (arobase==champ.value.length-1) {
		refaire(champ,message+'(ne se terminant pas par @) !');
	} else if (point==champ.value.length-1) {
		refaire(champ,message+'(qui ne finit pas par .) !');
	} else if (point==0) {
		refaire(champ,message+'(qui ne débute pas par .) !');
	} else {
		point=champ.value.indexOf('.',arobase-1); 
		if (point==-1) { 
			refaire (champ,message+'(avec un nom de domaine) !');
		} else if (point==arobase+1) {
			refaire(champ,message+'(ne doit pas comporter @.)!!');
		} else if (point==arobase-1) {
			refaire(champ,message+'(ne doit pas comporter .@) !!');
		} else { 
			valeur=champ.value;
			longueur=valeur.length;
			var TLD4=new Array('.aero','.asso','.bank','.coop','.name'); 
			var TLD3=new Array('.biz','.com','.edu','.gov','.int','.mil','.net','.org'); 
			var N=new Array('0','1','2','3','4','5','6','7','8','9');
			if ((valeur.substr(longueur-5,5)!='.asso')&(valeur.substr(longueur-5,5)!='.coop')&(valeur.substr(longueur-5,5)!='.aero')&(valeur.substr(longueur-5,5)!='.bank')&(valeur.substr(longueur-5,5)!='.name')&(valeur.substr(longueur-4,4)!='.com')&(valeur.substr(longueur-4,4)!='.org')&(valeur.substr(longueur-4,4)!='.net')&(valeur.substr(longueur-4,4)!='.edu')&(valeur.substr(longueur-5,4)!='.gov')&(valeur.substr(longueur-4,4)!='.mil')&(valeur.substr(longueur-4,4)!='.biz')&(valeur.substr(longueur-3,1)!='.')) {
				refaire(champ,message+'(dont le nom de domaine se termine par des caractères valides) !');
			} else 
			return valide=true;	// penser a rajouter le test des chiffres style domaine.1x ou domane.t4 ou domaine.76 ...
		}
	}
}

function numero_ok(champ,longueur) {	// verifier qu'un nombre d'une longueur definie est saisie dans un champ texte (types : text, password, textarea, file)
	if (champ.value.length!=longueur) {
		refaire(champ,"Merci d'indiquer "+longueur+" chiffres pour "+champ.title);
	} else if (!Number(champ.value)) {
		refaire(champ,"Merci de n'utiliser que des ciffres dans "+champ.title+"!!");
	} else 
	return valide=true;
}

function selection_ok(champ,pardefaut) {	// verifier qu'un element est choisie dans une liste (type : select) et qu'il est different de la valeur par defaut
	if ((champ.value==pardefaut)&(champ.selectedIndex==-1)) {
		refaire(champ,'Merci de choisir une valeur de '+champ.title+" !");
	} else
		return valide=true;
}

function date_ok(jour,mois,annee) {	// verifier que les donnees de 3 champs texte (type : input, textarea, password, file) constituent une date valide
	j=jour.value;
	m=mois.value;
	a=annee.value;
	if (j==''||j==0) {
		refaire(mois,"Merci de'indiquer un jour.");
	} else if (m==''||m==0) {
		refaire(mois,"Merci de'indiquer un mois.");
	} else if (a==''||a==0) {
		refaire(annee,"Merci d'indiquer une année.");
	} else {
		if (((m==2)&(j>(((a%4==0)&&((!(a%100==0))||(a%400==0)))?29:28)))||(((m==4)||(m==6)||(m==9)||(m==11))&(j>30))||(j>31)) {
		// Fevrier compte 29 jours pour les annees divisibles par 4, sauf pour les siecles qui ne sont pas divisibles par 400 ; Avril, Juin, Septembre et Novembre ne comptent que 30 jours ; les 7 autres mois en ont 31. 
			refaire(jour,"Merci d'indiquer une date valide !");
			// preciser dans message nombre de jours à ne pas exceder par le mois et annees bisextiles
		} else 
			return valide=true;
	}
}

/*function envoyer(formulaire) {	// proceder a l'envoie du formulaire par mail ...
	message='\n'
	if (valide==true) { 
		for (var nombre=0; nombre<formulaire.elements.length; nombre++) {
			var champ_type=formulaire.elements[nombre].type;
			var champ_nom=formulaire.elements[nombre].name;
			var champ_valeur=formulaire.elements[nombre].value;
			//alert(champ_nom+'\t'+champ_type+'\n'+champ_valeur);
			if (champ_type=='text'||champ_type=='textarea'||champ_type=='password'||champ_type=='file'||champ_type=='select'||champ_type=='select-one'||champ_type=='radio'||champ_type=='checkbox')  {
				message+=champ_nom+'='+champ_valeur+"\n";
			} else {	//if (champ_type=='hidden'||champ_type=='submit'||champ_type=='reset'||champ_type=='button' ) {
				message+=''; // Ne Rien Faire	
			} 
		}
	} 
	//alert(message); 
	formulaire.method='post';
	formulaire.enctype='text/plain';
	formulaire.action='mailto:rifc001@yahoo.fr?subject='+formulaire.name+'&body='+message;	//formulaire.action="http://www.response-o-matic.com/cgi-bin/rom.pl";
	formulaire.submit();
	alert("\nUne réponse vous sera faite dans les plus brefs délais.\n\n\tMerci d'avoir choisi RIFC");
	//return valide=true;
}
*/
function remplir_identite(formulaire) {	// verifier les champs de l'etat-civil (nom, prenom, adresse, courriel, telephone)
	with (formulaire) {
	texte_ok(nom_societe,0); 
	   if (valide==true) {
		  texte_ok(nom_personne,0);
	      if (valide==true) {
		     texte_ok(prenom_personne,0);
		  if (valide==true) {
			  numero_ok(tel_societe,10); 
			 if (valide==true) {
				email_ok(courriel_societe);
				   if (valide==true) {
					  texte_ok(commentaire,0);
					  return valide;
						}
					}
				}
			}
		}
	}
}

function remplir_tous(formulaire) {	// verifier que tous les champs importants d'un formulaire sont remplis
	for (var nombre=0; nombre<formulaire.elements.length; nombre++) {
		var champ=formulaire.elements[nombre];
		if (champ.type=='text'||champ.type=='textarea'||champ.type=='password'||champ.type=='file' )  {
			texte_ok(champ);
		} else if (champ.type.indexOf('select')!=-1) {
			selection_ok(champ,'');
		} else if (champ.type=='radio') {
			var groupe=formulaire[champ.name];
			var coche=false;
			if (!groupe.length)
				coche=champ.checked;
			else
				for (var tour=0; tour< groupe.length; tour++)
					if ((coche=groupe[tour].checked))
           				break;
				if (!coche) {
					refaire(champ,'Merci de cocher un des boutons '+champ.name+'...');
      			}
    	} else if (champ.type=='checkbox') {
			var groupe=formulaire[champ.name];
			if (groupe.length) {
				var checked=false;
				for (var tour=0; tour<groupe.length; tour++)
					if ((coche = groupe[tour].checked))
						break;
				if (!coche) {
          			refaire(champ,'Merci decocher une des cases '+champ.name+'...');
				}
			}
			return valide=true; 
		}
	}
	return valide=true;
	envoyer(formulaire);
}


/*
 * fonctions propres a chaque formulaires -cas par cas donc- et autonomes
 * exemple de convention de nommage : "valider_<nom_du_formulaire>"
*/

function valider_site(formulaire) {
	remplir_identite(formulaire);
	if (valide==true) {
		texte_ok(formulaire.description,50);
		if (valide==true) {
			envoyer(formulaire);
		}
	}
}

function valider_benevole(formulaire) {
	remplir_identite(formulaire); 
	with(formulaire) { 
	if (valide==true) {
		selection_ok(nationalite,"");
		if (valide==true) {
			date_ok(jj,mm,aaaa);
			if (valide==true); {
				selection_ok(niv_etude,'');
				if (valide==true) {
					texte_ok(option,0);
					if (valide==true) {
						texte_ok(poste);
						if (valide==true) {
							selection_ok(typ_dispo,'');
							if (valide=true) {
								envoyer(formulaire);
							}
						}
					}
				}
			}
		}
	}
	}
}
		
function valider_formation(formulaire) {
	remplir_identite(formulaire);
	if (valide==true) {
		envoyer(formulaire);
	}
}