//*******************************************************************************
// FONCTION : validemail(item) 
// DESCRIPTION : Teste si un email est valide
// PARAMETRE EN ENTREE : 
// item : qui contient l'email

function validemail(item) 
{ 
	if (!(item.length >= 5)) return(false); 
	if (item.indexOf ('@', 0) == -1) return(false); 
	if (item.indexOf ('.', 0) == -1) return(false);
	interdit = "~&#'(){}[]|`/çàäâéèëêïîöôùüû?;:;!§$£+=,°%¤*µ\"\\ "; 
	for (i=0;i<item.length;i++)
	{
		for (j=0;j<interdit.length;j++)
		{
			if (item.substr(i,1) == interdit.substr(j,1)) 
			{ 
				return(false); 
			}
		}
	}	
	return(true); 
} 

//*******************************************************************************
// FONCTION : Date1InfDate2(date1,date2) 
// DESCRIPTION : Retourne faux si un date1 est inferieure à date2 sinon vrai
// PARAMETRE EN ENTREE : 
// date1 : contient une date
// date2 : contient une date

function Date1InfDate2(date1,date2)
{
	madate1 = parseInt(date1.slice(6,10)+date1.slice(3,5)+date1.slice(0,2));
	madate2 = parseInt(date2.slice(6,10)+date2.slice(3,5)+date2.slice(0,2));
	if (madate1<=madate2) 
	{ 
		return(true); 
	} 
	else 
	{ 
		return(false); 
	}
}

//*******************************************************************************
// FONCTION : Date1InfDate2test(date1,date2) 
// DESCRIPTION : Retourne vraie si un date1 est inferieure à date2 sinon faux
// PARAMETRE EN ENTREE : 
// date1 : contient une date
// date2 : contient une date
function Date1InfDate2test(date1,date2)
{
	madate1 = parseInt(date1.slice(6,10)+date1.slice(3,5)+date1.slice(0,2));
	madate2 = parseInt(date2.slice(6,10)+date2.slice(3,5)+date2.slice(0,2))
	if (madate1<=madate2) 
	{ 
		return(true); 
	} 
	else 
	{ 
		return(false); 
	}
}

//*******************************************************************************
// FONCTION : numerique(x) 
// DESCRIPTION : Teste si un champs est valide
// PARAMETRE EN ENTREE : 
// x : valeur à tester
function numerique(x) 
{
	ok = true;
	for(i=0; i<x.length; i++)
	{
	
		if (i == 0)
		{
			if ( (x.substring(i, i+1)>"0") || (x.substring(i, i+1)<"9") || (x.substring(i, i+1) == "-") )
			{
				ok = true;
			}
			else
			{
				ok = false;
			}
		}
		else
		{
			if (x.substring(i, i+1)<"0" || x.substring(i, i+1)>"9")
			{
				ok = false;
			}
		}
	}
	return(ok);
}
		
//*******************************************************************************
// FONCTION : champs_vide(nom_formulaire,nom_champ,message,test) 
// DESCRIPTION : Teste si un champs est vide
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs à tester
// message : qui contient le texte à afficher
// test : qui contient le type de champs à tester

function champs_vide(nom_formulaire,nom_champ,message,test)
{
	// bouton checkbox
	if (test.indexOf ('check/', 0) != -1)
	{
		tab = test.split("/");
		tab_rep = tab[1];
		tab_rep = tab_rep.split("|");
		for (i=0;i<(tab_rep.length);i+=1)
		{
			if (eval("document." + nom_formulaire + "." + tab_rep[i] + ".checked") == true)
			{
				return(true);
			}
		}
		alert(message);
		eval("document." + nom_formulaire + "." + tab_rep[0] + ".focus()");
		return(false);		
	}
	
	// bouton radio
	if (test.indexOf ('radio/', 0) != -1)
	{
		tab = test.split("/");
		nb_radio = tab[1];
		for (i=0;i<=nb_radio;i+=1)
		{
			if (eval("document." + nom_formulaire + "." + nom_champ + "["+i+"].checked"))
			{
				return(true);
			}
		}
		alert(message);
		eval("document." + nom_formulaire + "." + nom_champ + "[0].focus()");
		return(false);		
	}

	// multiselectbox
	if (test.indexOf ('multiselectbox/', 0) != -1)
	{
		tab = test.split("/");
		indice = tab[1];		
		for (x = 0; x < eval("document." + nom_formulaire + "["+indice+"].options.length"); x++)
		{
			valeur = eval("document." + nom_formulaire + "["+indice+"]["+x+"].value");
			index = eval("document." + nom_formulaire + "["+indice+"]["+x+"].index");
			SelectedIndex = eval("document." + nom_formulaire + "["+indice+"].options["+x+"].selected");
			if (SelectedIndex == true)
			{
				return(true);
			}
		}
		alert(message);
		eval("document." + nom_formulaire + "["+indice+"].focus()");
		return(false);
	}
	
	// selectbox
	if (test == "selectbox")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + "[document." + nom_formulaire + "." + nom_champ + ".selectedIndex].value") == "" || eval("document." + nom_formulaire + "." + nom_champ + "[document." + nom_formulaire + "." + nom_champ + ".selectedIndex].value") == "undefined" || eval("document." + nom_formulaire + "." + nom_champ + "[document." + nom_formulaire + "." + nom_champ + ".selectedIndex].value") == '0')
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{
			return(true);
		}
	}
	
	// input
	if (test == "")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{
			return(true);
		}
	}
	
	// on teste si different de vide alors ca doit etre un numérique
	if (test == "vide_numerique")
	{
		return(champs_num(nom_formulaire,nom_champ,message));
	}

	// on teste si different de vide alors ca doit etre un décimale	
	if (test == "vide_decimale")
	{
		return(champs_num_virgule(nom_formulaire,nom_champ,message));
	}		
	
	// on teste si numérique
	if (test == "numerique")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{
			return(champs_num(nom_formulaire,nom_champ,message));
		}	
	}

	// on teste si décimale	
	if (test == "decimale")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{	
			return(champs_num_virgule(nom_formulaire,nom_champ,message));
		}
	}

	// on teste si c'est une heure correcte
	if (test == "heure")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{
			return(champs_heure(nom_formulaire,nom_champ,message));
		}	
	}
	
	// on teste si c'est une heure correcte
	if (test == "minute")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{
			return(champs_minute(nom_formulaire,nom_champ,message));
		}	
	}			

	// on teste si c'est un jour correct
	if (test == "jour")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{
			return(champs_jour(nom_formulaire,nom_champ,message));
		}	
	}	

	// on teste si c'est un mois correct
	if (test == "mois")
	{
		if (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return(false);
		}
		else
		{
			return(champs_mois(nom_formulaire,nom_champ,message));
		}	
	}	
	return(true);
}

//*******************************************************************************
// FONCTION : champs_num_virgule(nom_formulaire,nom_champ,message) 
// DESCRIPTION : Teste si un champs est numerique et possede une virgule ou un point
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs à tester
// message : qui contient le texte à afficher

function champs_num_virgule(nom_formulaire,nom_champ,message)
{
	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");
	for(i=0; i<x.length; i++)
	{
		if (x.substring(i, i+1)<"0" || x.substring(i, i+1)>"9")
		{
			if (x.substring(i, i+1) !="." && x.substring(i, i+1) !=",")
			{		
				alert(message);
				eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
				return(false);
			}
		}
	}
	return(true);
}

//*******************************************************************************
// FONCTION : champs_num(nom_formulaire,nom_champ,message) 
// DESCRIPTION : Teste si un champs est numerique
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs a tester
// message : qui contient le texte à afficher

function champs_num(nom_formulaire,nom_champ,message)
{
	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");
	if (!numerique(x))
	{
		alert(message);
		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
		return(false);
	}
	return(true);
}

//*******************************************************************************
// FONCTION : champs_heure(nom_formulaire,nom_champ,message) 
// DESCRIPTION : Teste si un champs est numerique et compris entre 0 et 23
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs a tester
// message : qui contient le texte à afficher

function champs_heure(nom_formulaire,nom_champ,message)
{
	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");
	if ( !numerique(x) || (x < 0 || x >23) )
	{
		alert(message);
		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
		return(false);
	}
	return(true);
}

//*******************************************************************************
// FONCTION : champs_minute(nom_formulaire,nom_champ,message) 
// DESCRIPTION : Teste si un champs est numerique et compris entre 0 et 59
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs a tester
// message : qui contient le texte à afficher

function champs_minute(nom_formulaire,nom_champ,message)
{
	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");
	if ( !numerique(x) || (x < 0 || x >59) )
	{
		alert(message);
		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
		return(false);
	}
	return(true);
}

//*******************************************************************************
// FONCTION : champs_jour(nom_formulaire,nom_champ,message) 
// DESCRIPTION : Teste si un champs est numerique et compris entre 1 et 31
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs a tester
// message : qui contient le texte à afficher

function champs_jour(nom_formulaire,nom_champ,message)
{
	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");
	if ( !numerique(x) || (x < 1 || x >31) )
	{
		alert(message);
		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
		return(false);
	}
	return(true);
}

//*******************************************************************************
// FONCTION : champs_mois(nom_formulaire,nom_champ,message) 
// DESCRIPTION : Teste si un champs est numerique et compris entre 1 et 12
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs a tester
// message : qui contient le texte à afficher

function champs_mois(nom_formulaire,nom_champ,message)
{
	x= eval("document." + nom_formulaire + "." + nom_champ + ".value");
	if ( !numerique(x) || (x < 1 || x >12) )
	{
		alert(message);
		eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
		return(false);
	}
	return(true);
}

//*******************************************************************************
// FONCTION : champs_mois(nom_formulaire,nom_champ,message) 
// DESCRIPTION : Teste si un champs est numerique et compris entre 1 et 12
// PARAMETRE EN ENTREE : 
// nom_formulaire : qui contient le nom du formulaire
// nom_champ : qui contient le nom du champs a tester
// message : qui contient le texte à afficher

function test_email(nom_formulaire,email,message)
{
	if  (eval("document." + nom_formulaire + "." + email + ".value") == "")
	{           
		alert(message);
		eval("document." + nom_formulaire + "." + email + ".focus()");
		return false;
	}
	else
	{ 
		if (!validemail(eval("document." + nom_formulaire + "." + email + ".value")))
		{
			alert(message);
			eval("document." + nom_formulaire + "." + email + ".focus()");
			return false;
		}
	}
	return(true);
}

//*******************************************************************************
// FONCTION : popup(adresse,target,largeur,hauteur,degauche,duhaut,status,varscroll,resize)
// DESCRIPTION : ouvre une fenêtre volante avec differents paramètres
// PARAMETRE EN ENTREE : 
// adresse : url à acceder
// target : nom de la fenêtre
// largeur : largeur de la fenêtre
// hauteur : hauteur de la fenêtre
// degauche : position de la fenêtre à partir du bord gauche de l'écran
// duhaut : position de la fenêtre à partir du haut de l'écran
// status : affiche la barre de status de la fenêtre
// varscroll : affiche les scrollbars
// resize : permet le redimmensionnement ou non de la fenêtre

function popup(adresse,target,largeur,hauteur,degauche,duhaut,status,varscroll,resize)
{
	//parametrage par defaut des variables
	if (target == "") { target = "new_window";}
	if (largeur == "") { largeur = "500";}
	if (hauteur == "") { hauteur = "400";}
	if (degauche == "") { degauche = "0";}
	if (duhaut == "") { duhaut = "0";}
	if (varscroll == "") { varscroll = "yes";}
	if (resize == "") {  resize = ",resizable";  } else { resize = ",resizable=0";}
	if (status == "") { status = "yes";}
	param = "width="+largeur+",height="+hauteur+",left="+degauche+",top="+duhaut+",status="+status+",toolbar=no,menubar=no,scrollbars="+varscroll+",location=no,directories=no"+resize;
	window.open(adresse,target,param);
}

//*******************************************************************************
// FONCTION : coche(formulaire,bouton,numero) 
// DESCRIPTION : Fonction pour cocher les checkbox et boutons radios AVEC ou SANS calque
// PARAMETRE EN ENTREE : 
// formulaire : qui contient le nom du formulaire
// bouton : qui contient le nom du champs a tester
// numero : numero à cocher / il faut mettre un "X" pour les checbox
// Fonction pour cocher les checkbox et boutons radios AVEC ou SANS calque
function coche(formulaire,bouton,numero)
{
	// Detection du navigateur
	nc6 = (typeof(window.controllers) != 'undefined' && typeof(window.locationbar) != 'undefined')? true:false;
	nc4 = (document.layers)? true:false;
	ie4 = (document.all)? true:false;

	// Création d'un raccourci pour manipuler le champ visé
	var controle = eval("document." + formulaire + '.' + bouton);
	
	// Si le champ est de type 'checkbox' (par convention on place un 'X' si on est sur une case à cocher)
	if (numero == 'X')
	{
		
		// Si la case est cochée
		if (controle.status || controle.checked )
		{
			
			// Instruction pour Netscape 6.x
			if (nc6)
			{
				// On décoche la case
				controle.checked = false;
			}
			// Instruction équivalente pour Netscape 4.x et Internet Explorer
			else
			{
				controle.status = false;
			}
		}
		// Si la case n'est pas cochée
		else
		{
			if (nc6)
			{
				controle.checked = true;
			}
			else
			{
				controle.status = true;
			}
		}
	}
	// Si on ne trouve pas de 'X', c'est un bouton radio
	else
	{
		// Instruction pour Netscape 6.x
		if (nc6)
		{
			// On coche le bouton radio
			controle[numero].checked = true;
		}
		// Instruction équivalente pour Netscape 4.x et Internet Explorer
		else
		{
			controle[numero].status = true;
		}
	}
}