//*******************************************************************************
// FONCTION : Date1InfDate2(date1,date2) 
// DESCRIPTION : Retourne vrai si un date1 est inferieure à date2 sinon faux
// PARAMETRE EN ENTREE : 
// date1 : contient une date au format jj/mm/aaaa
// date2 : contient une date au format jj/mm/aaaa
function Date1InfDate2(date1,date2)
{
	if (parseInt(date1.slice(6,10)+date1.slice(3,5)+date1.slice(0,2))>parseInt(date2.slice(6,10)+date2.slice(3,5)+date2.slice(0,2))) { return(true); } else { return(false); }
}

//*******************************************************************************
// FONCTION : Dateheure1InfDateheure2(date1,date2)
// DESCRIPTION : Retourne faux si un date1 est supérieure à date2 sinon vrai
// PARAMETRE EN ENTREE :
// date1 : contient une date et une heure
// date2 : contient une date et une heure
function Dateheure1InfDateheure2(dateheure1,dateheure2)
{
	madate1 = dateheure1.slice(6,10)+dateheure1.slice(3,5)+dateheure1.slice(0,2)+dateheure1.slice(11,13)+dateheure1.slice(14,16);
	madate2 = dateheure2.slice(6,10)+dateheure2.slice(3,5)+dateheure2.slice(0,2)+dateheure2.slice(11,13)+dateheure2.slice(14,16);
	if (madate1>=madate2)
	{
		return(false);
	}
	else
	{
		return(true);
	}
}

//*******************************************************************************
// FONCTION : verification_jour_mois(str_date,message1,message2) 
// DESCRIPTION : Retourne vrai si  le jour du mois de str_date est correct  sinon faux (31/02/2004 = faux)
// PARAMETRE EN ENTREE : 
// str_date : contient une date au format jj/mm/aaaa
function verification_jour_mois (str_date,message1,message2) 
{
	if (message1 == "") { message1 = "Le jour est invalide";}
	if (message2 == "") { message2 = "Valeur permise";}
	var arr_date = str_date.split('/');
	var dt_date = new Date();
	dt_date.setDate(1);
	dt_date.setMonth(arr_date[1]-1);
	 
	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < 30 ? 2000 : 1900);
	dt_date.setFullYear(arr_date[2]);
	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
	dt_date.setDate(arr_date[0]);
	if (dt_date.getMonth() != (arr_date[1]-1)) 
	{
		alert(message1+" : '" + arr_date[0] + "'.\n"+message2+" : 01-"+dt_numdays.getDate()+".");
		return(false);
	}
	return(true);
}

//*******************************************************************************
// 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;
	return true; 
} 

//*******************************************************************************
// FONCTION : is_numeric(x) 
// DESCRIPTION : Teste si un email est valide
// PARAMETRE EN ENTREE : 
// x : valeur à tester
function numerique(x) 
{
	for(i=0; i<x.length; i++)
	{
		if (x.substring(i, i+1)<"0" || x.substring(i, i+1)>"9")
		{
			return(false)
		}
	}
	return(true)
}
		
//*******************************************************************************
// 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)
{
	// email obligatoire
	if (test == "email_obligatoire")
	{
		if  (eval("document." + nom_formulaire + "." + nom_champ + ".value") == "")
		{           
			alert(message);
			eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
			return false;
		}
		else
		{ 
			if (!validemail(eval("document." + nom_formulaire + "." + nom_champ + ".value")))
			{
				alert(message);
				eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
				return false;
			}
		}
		return(true);
	}
	
	// email testé si différent de vide mais pas obligatoire
	if (test == "email_non_obligatoire")
	{
		if  (eval("document." + nom_formulaire + "." + nom_champ + ".value") != "")
		{           
			if (!validemail(eval("document." + nom_formulaire + "." + nom_champ + ".value")))
			{
				alert(message);
				eval("document." + nom_formulaire + "." + nom_champ + ".focus()");
				return false;
			}
		}
		return(true);
	}


	// 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=no";}
	if (status == "") { status = "yes";}

	// ajout pour les fiches
	if ( (target=="fiche" || target=="new_fiche") && largeur == "800" && hauteur == "600")
	{
  		var duhaut=(screen.height-hauteur)/2;
  		var degauche=(screen.width-largeur)/2;	
	}
	
	window.open(adresse,target,"width="+largeur+",height="+hauteur+",left="+degauche+",top="+duhaut+",status="+status+",toolbar=no,menubar=no,scrollbars="+varscroll+",location=no,directories=no"+resize);
}

//*******************************************************************************
// FONCTION : limite(zone,max)
// DESCRIPTION : Fonction pour limiter un textarea
// PARAMETRE EN ENTREE : 
// zone : zone de formulaire
// max : nombre max de caractère
function limite(zone,max)
{
	if(zone.value.length>=max)
	{
		zone.value=zone.value.substring(0,max);
	}
}

//*******************************************************************************
// 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;
		}
	}
}