/*********************************************************************
LE DEBUT DES TESTES COMMENCENT A LA LIGNE 198
**********************************************************************/

/* Date de cr&eacute;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)+' caracteres...');
		} 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 electronique");
	} 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&eacute;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 caracteres 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&eacute;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 &agrave; ne pas exceder par le mois et annees bisextiles
		} else 
			return valide=true;
	}
}

function valider_site(formulaire) {
	with(formulaire) { 
	texte_ok(nom_societe,5);
	if (valide==true) {
	    numero_ok(telephone_soc,10);
		if (valide==true) {
			email_ok(courriel_societe);
			if (valide==true) {
			    texte_ok(nom_personne,5);
				if (valide==true) {
				    texte_ok(prenom_personne,5);
					if (valide==true) {
					    numero_ok(tel_direct,10);
						if (valide==true) {
						   email_ok(email_direct);
		                   if (valide==true) {
			                  envoyer(formulaire);
		                   }
						}
					}
				}
			}
		}
	}
  }
}
		
