// JavaScript Document pour SRFPH
// Auteur Carine LAVAL
// Date 29/05/2006 16:18
// Description : Fichier permettant d'effectuer les controles nécessaire à la validation des formulaire

function verif_ctc(frm)
{	
	val = frm.emailCtc.value; 
	if (isNotEmailAdress(val)) 
	{ 
		if (isEmpty(val) || isSpace(val)) 
			alert('Veuillez renseigner votre email.'); 
		else
			alert('Format d\'adresse mail incorrect !\nVérifiez que vous avez correctement saisi votre email.'); 
		frm.emailCtc.focus(); 
		return false;
	}
	
	val = frm.sujetCtc.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez renseigner le sujet de votre message.'); 
		frm.sujetCtc.focus(); 
		return false;
	}
	
	val = frm.messageCtc.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez renseigner votre message.'); 
		frm.messageCtc.focus(); 
		return false;
	}
	
	return true;
}

function verif_inscr(frm)
{	
	val = frm.nom_inscrip.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez renseigner votre nom.'); 
		frm.nom_inscrip.focus(); 
		return false;
	}
	
	val = frm.prenom_inscrip.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez renseigner votre prénom.'); 
		frm.prenom_inscrip.focus(); 
		return false;
	}
	
	val = frm.mail_inscrip.value; 
	if (isNotEmailAdress(val)) 
	{ 
		if (isEmpty(val) || isSpace(val)) 
			alert('Veuillez renseigner votre email.'); 
		else
			alert('Format d\'adresse mail incorrect !\nVérifiez que vous avez correctement saisi votre email.'); 
		frm.mail_inscrip.focus(); 
		return false;
	}
	
	val = frm.structure_inscrip.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez renseigner le nom de votre structure.'); 
		frm.structure_inscrip.focus(); 
		return false;
	}
	
	val = frm.activite_inscrip.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez renseigner l\'activité de votre structure.'); 
		frm.activite_inscrip.focus(); 
		return false;
	}
	
	val = frm.tel_inscrip.value; 
	if (isNotTelephone(val))
	{
		if (isEmpty(val) || isSpace(val)) 
			alert('Veuillez renseigner le numéro de téléphone de votre structure.'); 
		else
			alert('Format de numéro de téléphone incorrect !\nVérifiez que vous avez correctement saisi le numéro de téléphone\n(Exemple : 05 05 05 05 05 ou 0505050505).');
		frm.tel_inscrip.focus(); 
		return false;
	}

	val = frm.login_inscrip.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez choisir un identifiant pour accéder ultérieurement à l\'espace pertenaire de notre site.'); 
		frm.login_inscrip.focus(); 
		return false;
	}

	val = frm.pass_inscrip.value; 
	if (isEmpty(val) || isSpace(val)) 
	{ 
		alert('Veuillez choisir un mot de passe pour accéder ultérieurement à l\'espace pertenaire de notre site.'); 
		frm.pass_inscrip.focus(); 
		return false;
	}

	val2 = frm.pass2_inscrip.value; 
	if (isEmpty(val2) || isSpace(val2)) 
	{ 
		alert('Veuillez confirmer le mot de passe.'); 
		frm.pass2_inscrip.focus(); 
		return false;
	}
	
	if ( val != val2 )
	{ 
		alert('Erreur : vous avez saisis deux mots de passe différents.'); 
		frm.pass2_inscrip.focus(); 
		return false;
	}
	
	return true;
}

function IsDate(d)
{
  if (d == "") // si la variable est vide on retourne faux
    return false;
  
  e = new RegExp("^\\d{2}\/\\d{2}\/\\d{4}$");
  
  if (!e.test(d)) // On teste l'expression régulière pour valider la forme de la date
    return false; // Si pas bon, retourne faux
 
  // On sépare la date en 3 variables pour vérification, parseInt() converti du texte en entier
  j = parseInt(d.split("/")[0], 10); // jour
  m = parseInt(d.split("/")[1], 10); // mois
  a = parseInt(d.split("/")[2], 10); // année
 
  // Définition du dernier jour de février
  if (a%4 == 0 && a%100 !=0 || a%400 == 0) fev = 29;
  else fev = 28;
 
  // Nombre de jours pour chaque mois
  nbJours = new Array(31,fev,31,30,31,30,31,31,30,31,30,31);
 
  // Enfin, retourne vrai si le jour est bien entre 1 et le bon nombre de jours, idem pour les mois, sinon retourn faux
  return ( m >= 1 && m <=12 && j >= 1 && j <= nbJours[m-1] );
}


// Accepte une chaine vide
var regExpEmpty = new RegExp( "^$", "gi" );
// Accepte une chaine ne contenant que des espaces blancs donc \f\n\t\v et des espaces
var regExpSpace = new RegExp( "^\\s+$", "gi" ); 

/*** Expressions régulières de test de type de caractère ***/
// Accepte une chaine alphanumérique + underscore
var regExpAlphanumeric = new RegExp( "^\\w+$", "gi" );
// Accepte une chaine alphanumérique +  underscore + '-'
var regExpAlphanumericWithTiret = new RegExp( "^[\\w\-]+$", "gi" ); 
// Accepte une chaine alphabétique
var regExpAlphabetic = new RegExp( "^[a-zA-Z]+$", "gi" ); 

/*** Expressions régulières de test d'identification d'un internaute ***/
// Accepte une chaine alphanumérique + underscore + '-' de 8 caractères
var regExpLogin = new RegExp( "^[\\w\-]{8}$", "gi" );
// Accepte une chaine numérique de 6 caractères
var regExpMdp = new RegExp( "^\\d{6}$", "gi" ); 

/*** Expressions régulières de test de type ***/
// N'Accepte qu'une chaine de type 'int'
var regExpInt = new RegExp( "^\\d+$", "gi" );
// N'Accepte qu'une chaine de type 'double'
var regExpDouble = new RegExp( "^[-+]?\\d+(\\.\\d+)?$", "gi" );
// N'Accepte qu'une chaine de type 'float'
var regExpFloat = new RegExp( "^[-+]?\\d+(\\.\\d+)?([eE][-+]?\\d+)?$", "gi" );

/*** Expressions régulières de test de types administratifs français ***/
// Accepte une chaine de type 'code postal'. Ex : F-33370 ou 33 370 ou 33370 ou F-1 370
var regExpCodePostal = new RegExp( "^\\d{5}$", "gi" ); 
// Accepte un numero de téléphone national (fixe ou portable). Ex : 0134125230
// var regExpTelephone= new RegExp( "^(0[1|2|3|4|5|6|8])\\d{8}$", "gi" ); 
var regExpTelephone= new RegExp( "^(0[1|2|3|4|5|6|8])(\\d{8}|\\s\\d{2}\\s\\d{2}\\s\\d{2}\\s\\d{2})$", "gi" ); 

/*** Expressions régulières de test de types liés à internet ***/
// Accepte une adresse email. Ex : toto@toto.com 
var regExpEmailAdress = new RegExp ( "^\\w+([\\.|\\-]\\w+)*@\\w+([\\.|\\-]\\w+)*\\.\\w+$" , "gi" ); 
// Accepte une url http ou https, avec ou sans numero de port. Ex : http://www.toto.com, ftp://toto:toto@ftp.toto.com:21/
var regExpUrl = new RegExp ( "^http(s?):\/\/(\\S+)$", "gi" );

//Les deux fonction suivantes servent à identifier si une chaine de caractère est compatible ou non avec une expression régulière passée en paramètre
function matchRegularExpression(valeur, regularExpression)
{
	var resultat = valeur.match(regularExpression);
	if(resultat!=null && resultat.length==1) return true;
	else return false;
}

function doesntMatchRegularExpression(valeur, regularExpression)
{
	if(matchRegularExpression(valeur, regularExpression)) return false;
	else return true;
}

/*
les fonctions de contrôle suivantes prennent toutes comme argument la valeur de l'attribut "value" d'un champ de formulaire de type "text" ou "password"
*/
function isEmpty(valeur)
{
	return matchRegularExpression(valeur, regExpEmpty);
}

function isNotEmpty(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpEmpty);
}

function isSpace(valeur)
{
	return matchRegularExpression(valeur, regExpSpace);
}

function isNotSpace(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpSpace);
}

function isNotAlphanumeric(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpAlphanumeric);
}

function isNotAlphanumericWithTiret(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpAlphanumericWithTiret);
}

function isNotAlphabetic(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpAlphabetic);
}

function isNotLogin(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpLogin);
}

function isNotMdp(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpMdp);
}

function isNotInt(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpInt);
}

function isNotDouble(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpDouble);
}

function isNotFloat(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpFloat);
}

function isNotCodePostal(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpCodePostal);
}

function isNotTelephone(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpTelephone);
}

function isNotEmailAdress(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpEmailAdress);
}

function isNotUrl(valeur)
{
	return doesntMatchRegularExpression(valeur, regExpUrl);
}
