//*******************************************************************************
// FONCTION : show_hide(calque)
// DESCRIPTION : Affiche ou cache le calque
// PARAMETRE EN ENTREE :
// calque : Contient le nom du calque
function show_hide(calque)
{
	if (document.getElementById(calque).style.display=='block')
	{
		document.getElementById(calque).style.display='none';
	}
	else
	{
		document.getElementById(calque).style.display='block';
	}
}

//*******************************************************************************
// 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 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 : 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 : 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,type,nb_champs)
{

	switch(type)
	{
	// cas des select perso
	case "select_perso" :{
		champ = document.getElementById(nom_formulaire).elements[nom_champ];
		if( !champ || champ.value=="" || champ.value==0 ){
			alert(message); return(false);
		}
		return (true);
		break;
	}
	
	// email obligatoire
	case "email_obligatoire" :{
			champ = document.getElementById(nom_formulaire).elements[nom_champ];
			
			if( champ.value=="" || !validemail(champ.value) ){
				champ.focus(); alert(message); return false;
			}
			return(true);
			break;
		}
	
		// email testé si différent de vide mais pas obligatoire
	case "email_non_obligatoire" :{
			champ = document.getElementById(nom_formulaire).elements[nom_champ];
			
			if( champ.value!="" && !validemail(champ.value) ){
				alert(message); champ.focus(); return false;
			}
			return(true);
			break;
		}
	
		// selectbox
	case "selectbox" :{
			champ = document.getElementById(nom_formulaire).elements[nom_champ];
			champIndex = document.getElementById(nom_formulaire).elements[nom_champ][document.getElementById(nom_formulaire).elements[nom_champ].selectedIndex];
			
			if( champIndex.value=="" || champIndex.value=="undefined" || champIndex.value==0 ){
				alert(message); champ.focus(); return(false);
			}else{
				return(true);
			}
		}
	
		// checkbox
	case "checkbox" :{
			champ = document.getElementById(nom_formulaire).elements[nom_champ];
			
			if( champ.checked ){ return(true);}
			
			alert(message);
			champ.focus();
			return(false);
			break;
		}
	
		// radio
	case "radio" :{
			champ = document.getElementById(nom_formulaire).elements[nom_champ];
			
			for(i=0;i<nb_champs;i++){ if( champ[i].checked ){ return(true);} }
			
			alert(message);
			champ[0].focus();
			return(false);
			break;
		}
	
		// input
	case "" :{
			champ = document.getElementById(nom_formulaire).elements[nom_champ];
			
			if( champ.value=="" || champ.value=='0' ){
				champ.focus(); alert(message); return(false);
			}else{
				return(true);
			}
			break;
		}
	
		// on teste si different de vide alors ca doit etre un num�rique
	case "vide_numerique" :{
			return(champs_num(nom_formulaire,nom_champ,message));
			break;
		}
	
		// on teste si different de vide alors ca doit etre un d�cimale
	case "vide_decimale" :{
			return(champs_num_virgule(nom_formulaire,nom_champ,message));
			break;
		}
	
		// on teste si numérique
	case "numerique" :{
			if( champ.value=="" ){
				alert(message); champ.focus(); return(false);
			}else{
				return(champs_num(nom_formulaire,nom_champ,message));
			}
			break;
		}
	
		// on teste si décimale
	case "decimale" :{
			if( champ.value=="" ){
				alert(message); champ.focus(); return(false);
			}else{
				return(champs_num_virgule(nom_formulaire,nom_champ,message));
			}
			break;
		}
	
		// on teste si c'est une heure correcte
	case "heure" :{
			if( champ.value==""){
				alert(message); champ.focus(); return(false);
			}else{
				return(champs_heure(nom_formulaire,nom_champ,message));
			}
			break;
		}
	
		// on teste si c'est une heure correcte
	case "minute" :{
			if( champ.value==""){
				alert(message); champ.focus(); return(false);
			}else{
				return(champs_minute(nom_formulaire,nom_champ,message));
			}
			break;
		}
	
		// on teste si c'est un jour correct
	case "jour" :{
			if( champ.value=="" ){
				alert(message); champ.focus(); return(false);
			}else{
				return(champs_jour(nom_formulaire,nom_champ,message));
			}
			break;
		}
	
		// on teste si c'est un mois correct
		case "mois" :{
			if( champ.value==""){
				alert(message); champ.focus(); return(false);
			}else{
				return(champs_mois(nom_formulaire,nom_champ,message));
			}
			break;
		}
		default : break;
	}
	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);
}
