// JavaScript Document
//Raphael Porcherot 2005
var regExpEmpty=/^$/g; //chaine vide
//----------------------------------------------------------------------------
//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 checkEmail(emailAddr) {
	// Cette fonction vérifie la bon format d'une adresse e-mail.
	// Comme :
	// user@domain.com ou user.perso@domain.com
	
	var i;
	
	// Recherche de @
	i = emailAddr.indexOf("@");
	if (i == -1) {
		return false;
	}
	
	// Séparation du nom de l'utilisateur et du nom de domaine.
	var username = emailAddr.substring(0, i);
	var domain = emailAddr.substring(i + 1, emailAddr.length)

	// Recherche des espaces au début du nom de l'utilisateur.
	i = 0;
	while ((username.substring(i, i + 1) == " ") && (i < username.length)) {
		i++;
	}
	// Les enlève s'il en trouve.
	if (i > 0) {
		username = username.substring(i, username.length);
	}

	// Recherche d'espaces à la fin du nom de domaine.
	i = domain.length - 1;
	while ((domain.substring(i, i + 1) == " ") && (i >= 0)) {
		i--;
	}
	// Les enlève s'il en trouve.
	if (i < (domain.length - 1)) {
		domain = domain.substring(0, i + 1);
	}

	// Vérifie que le nom de l'utilisateur et du domaine ne soit pas vide.
	if ((username == "") || (domain == "")) {
		return false;
	}
	
	// Vérifie s'il n'y a pas de caractères interdits dans le nom de l'utilisateur.
	var ch;
	for (i = 0; i < username.length; i++) {
		ch = (username.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || 
			((ch >= "0") && (ch <= "9")) ||
			(ch == "_") || (ch == "-") || (ch == "."))) {
				return false;
		}
	}
	
	// Vérifie s'il n'y a pas de caractères interdits dans le nom de domaine
	for (i = 0; i < domain.length; i++) {
		ch = (domain.substring(i, i + 1)).toLowerCase();
		if (!(((ch >= "a") && (ch <= "z")) || 
			((ch >= "0") && (ch <= "9")) ||
			(ch == "_") || (ch == "-") || (ch == "."))) {
				return false;
		}
	}

// Ajouter ci-dessous de nouveaux noms de domaine.
// Voir tous les noms de domaine sur http://www.toulouse-renaissance.net/c_outils/c-nom-domaine.htm
//
var aSuffix = new Array("com","net","int","aero","biz","museum","name","info","coop","pro","eu","edu","org","gov","mil","bj","dz","de","ad","be","ca","bf","bi","cm","cf","cg","cd","ci","dj","fr","ga","gp","gf","lu","mg","ml","ma","mq","mr","mc","nc","pf","re","pm","sn","ch","td","tf","tn");
	var bFoundSuffix = false;
	i = 0;
	while (i < aSuffix.length) {
		if (("." + aSuffix[i]) == domain.substring(domain.length - aSuffix[i].length - 1, domain.length)) {
			return true;
		}
		i++;
	}
	// Si le nom de domaine est inconnu  : return false
	return false;
	
}	
	

function emailOK(emailAddr) {
var okvalid=true;
	if (!(checkEmail(emailAddr))) {
		//alert("Merci de vérifier votre adresse e-mail. Elle n\'est pas dans le bon format.");
		document.formulaire.mail.value = '';
		/*document.formulaire.mail.focus();
		document.formulaire.mail.select();*/
		okvalid=false;
	}
	return(okvalid);
}

//----------------------------------------------------------------------------
function validerFormulaire(typ,dest)
	{
	var bValid;
	var msg='';
	var obj;
	bValid = true;
//----------------------------------------------------------------------------
	if (typ == 'ajouterAC' || typ == 'modifierAC')
		{
		var objForm = document.actubasetable;
		if ((bValid) && isEmpty(objForm.titre_date.value))
			{ bValid = false;	obj = objForm.titre_date; msg = 'Vous devez indiquer la date du type JJ/MM ou JJ/MM/AA';}
		if ((bValid) && isEmpty(objForm.titre_lieu.value))
			{ bValid = false;	obj = objForm.titre_lieu; msg = 'Vous devez indiquer un lieu pour renseigner la base de données correctement.';}
		if ((bValid) && isEmpty(objForm.texte.value))
			{ bValid = false;	obj = objForm.texte; msg = 'Le bloc de texte ne peut pas être vide.';}
		}
//----------------------------------------------------------------------------
	if (typ == 'ajouterA' || typ == 'modifierA')
		{
		var objForm = document.actionbasetable;
		if ((bValid) && isEmpty(objForm.nom.value))
			{ bValid = false;	obj = objForm.nom; msg = 'Vous devez indiquer un nom pour identifier l\'administrateur';}
		if ((bValid) && isEmpty(objForm.prenom.value))
			{ bValid = false;	obj = objForm.prenom; msg = 'Vous devez indiquer un prénom pour identifier l\'administrateur';}
		if ((bValid) && isEmpty(objForm.login.value))
			{ bValid = false;	obj = objForm.login; msg = 'Vous devez indiquer un login pour identifier l\'administrateur';}
		if ((bValid) && isEmpty(objForm.password.value))
			{ bValid = false;	obj = objForm.password; msg = 'Vous devez indiquer un password pour identifier l\'administrateur';}
		}
//----------------------------------------------------------------------------
	if (typ == 'ajouterTE' || typ == 'modifierTE')
		{
		var objForm = document.actionbasetable;
		if ((bValid) && isEmpty(objForm.nom.value))
			{ bValid = false;	obj = objForm.nom; msg = 'Vous devez indiquer une identité de la forme Prénom Nom  pour identifier l\'émetteur du témoignage';}
		if ((bValid) && isEmpty(objForm.ville.value))
			{ bValid = false;	obj = objForm.ville; msg = 'Vous devez indiquer la ville de votre résidence pour vous situer';}
		if ((bValid) && isEmpty(objForm.pays.value))
			{ bValid = false;	obj = objForm.pays; msg = 'Vous devez indiquer le pays dans lequel vous résidez si vous êtes étranger ou le numéro de département pour la France';}
		if ((bValid) && isEmpty(objForm.texte.value))
			{ bValid = false;	obj = objForm.texte; msg = 'Veuillez entrer un texte à des fins de témoignage.';}
		}
//----------------------------------------------------------------------------
	if (typ == 'ajouterPR' || typ == 'modifierPR')
		{
		var objForm = document.actionbasetable;
		if ((bValid) && isEmpty(objForm.ladate.value))
			{ bValid = false;	obj = objForm.ladate; msg = 'Vous devez indiquer une date pour identifier la période de cet article';}
		if ((bValid) && isEmpty(objForm.titre.value))
			{ bValid = false;	obj = objForm.titre; msg = 'Donnez un titre pour cet article';}
		if ((bValid) && isEmpty(objForm.texte.value))
			{ bValid = false;	obj = objForm.texte; msg = 'Veuillez entrer un texte court pour résumer l\'article.';}
		}
//----------------------------------------------------------------------------
	if (typ == 'ajouterUE' || typ == 'modifierUE')
		{
		var objForm = document.actionbasetable;
		}
//----------------------------------------------------------------------------
	if (typ == 'ajouterDE' || typ == 'modifierDE')
		{
		var objForm = document.destination;
		if ((bValid) && isEmpty(objForm.titre.value))
			{ bValid = false;	obj = objForm.titre; msg = 'Vous devez indiquer un titre pour cette destination, il est obligatoire et servira de construction au répertoire images. Merci';}
		}
//----------------------------------------------------------------------------

	if (typ == 'modifierGA')
		{
		var objForm = document.actionbasetable;
		}
//----------------------------------------------------------------------------
	if (typ == 'ajouterPH' || typ == 'supprimePH')
		{
		var objForm = document.photos;		
		}
//----------------------------------------------------------------------------
	if (typ == 'menuM')
		{
		var objForm = document.menubasetable;
		}
//----------------------------------------------------------------------------
	if (typ == 'ajouterPA' || typ == 'modifierPA')
		{
		var objForm = document.actionbasetable;
		if ((bValid) && isEmpty(objForm.nom.value))
			{ bValid = false;	obj = objForm.nom; msg = 'Vous devez indiquer un nom pour identifier le partenaire';}
		}
//----------------------------------------------------------------------------
if (typ == 'mail' )
	{
	var objForm = document.formulaire;
	if ((bValid) && isEmpty(objForm.nom.value))
			{ bValid = false;	obj = objForm.nom; msg = 'Entrez votre nom svp. Merci.';}
	if ((bValid) && isEmpty(objForm.prenom.value))
			{ bValid = false;	obj = objForm.prenom; msg = 'Entrez votre prénom svp. Merci.';}
	if ((bValid) && isEmpty(objForm.mail.value))
			{ bValid = false;	obj = objForm.mail; msg = 'Une adresse mail est obligatoire, merci de votre compréhension.';}
	if (bValid) { if(!emailOK(objForm.mail.value)) { bValid = false;	obj = objForm.mail; msg = "Merci de vérifier votre adresse e-mail. Elle n\'est pas dans le bon format."; } }
	}
	//--------------------- redirection en fonction des résultats -----------------------------------	
	if (!bValid)
		{//un champs au moins non valide
		obj.focus();
		if (!obj.options) obj.select();
		if(!msg) msg = 'Le champs - ' + msg2 + ' - est vide. Veuillez compléter les champs obligatoires SVP .';
		alert(msg);
		}
	else if (bValid)
		{
		objForm.action=dest;
		objForm.submit();
		}
	return true;
	}
//----------------------------------------------------------------------------
