// Fonction qui v?rifie qu'un champs "input" a bien ?t? renseign? dans la langue fran?aise.
function f_mandatoryInput(field, fieldToDisplay) 
{
	if (field.value.length <= 0) 
	{
		alert('Vous devez saisir le champ '+fieldToDisplay+' !');
		field.focus();
		return false;
	} 
	else 
	{
		return true;	
	}
}

// v?rifie qu'un nombre est un integer
function f_integer(field, fieldToDisplay) 
{
	var nb = field.value;
	var booleanNb = ( nb.indexOf(",") ==-1 );
	booleanNb = booleanNb && ( nb.indexOf(".") ==-1 );
	if (!(booleanNb)) 
	{
		alert('Vous devez saisir un entier dans le champ '+fieldToDisplay+' !');
		field.focus();
		return false;
	} 
	else
	{
		return f_number(field, fieldToDisplay);
	}	
}

function f_number(field, fieldToDisplay) 
{
	var nb = field.value;
	var booleanNb = (!(isNaN(nb)));
	if (!(booleanNb)) 
	{
		alert('Vous devez saisir un chiffre dans le champ '+fieldToDisplay+' !');
		field.focus();
		return false;
	} 
	else 
	{
		return true;	
	}	
}

// Fonction qui v?rifie qu'un champ "select" a bien ?t? renseign? dans la langue fran?aise.
function f_mandatorySelect(field, fieldToDisplay) 
{
	if (field.options[field.options.selectedIndex].value == "0") 
	{
		alert('Vous devez saisir le champ '+fieldToDisplay+' !');
		field.focus();
		return false;
	} 
	else 
	{
		return true;	
	}
}

// Fonction v?rifiant si la chaine est bien un nombre
function only_nb(chaine) 
{
	for (var i = 0 ; i < chaine.length ; i++) 
	{
		for (var j=0; j<10; j++) 
		{
			if (chaine.charAt(i) == j.toString())
			break;
		}
		if (j == 10)
			return false;
	}
	return true;
}

// Fonction v?rifiant le format de date jj/mm/aaaa
function f_verifDate(date, fieldDisplay)
{
	return true;
	// Test si le champ contient bien 10 caract?res
	if (date.value.length != 10)
	{
		alert("La "+fieldDisplay+" n'est pas sur 10 caract?res !");
		date.focus();
		return false;
	} 
	else 
	{
		// Test si les barres de s?paration sont au bon endroit
		if ( date.value.charAt(2)!= "/" || date.value.charAt(5)!= "/" ) 
		{
			alert("La "+fieldDisplay+" n'est pas coh?rente. Le format doit ?tre: dd/mm/yyyy !");
			date.focus();
			return false;
		} 
		else 
		{
			annee = date.value.substring(6,10);
			mois = date.value.substring(3,5);
			jour = date.value.substring(0,2);
			// Test si l'ann?e , le mois et le jour sont bien des nombres ( via la fonction only_nb )
			if ((!only_nb(annee)) || (!only_nb(mois)) || (!only_nb(jour)))
			{
				alert("La "+fieldDisplay+" n'est pas coh?rente. Le format doit ?tre: dd/mm/yyyy !");
				date.focus();
				return false;
			} 
			else 
			{
				annee = eval(annee);
				mois = eval(mois);
				jour = eval(jour);
				// Test le nombre de jour du mois de F?vrier selon l'ann?e
				if ((annee % 4 == 0) && (annee % 100 != 0) || (annee % 400 == 0)) {
					tab_mois = new Array (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
				} 
				else 
				{
					tab_mois = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
				}
				// Test si le num?ro du mois existe
				if ((mois < 1) || (mois > 12))
				{
					alert("Le mois de la "+fieldDisplay+" doit ?tre compris entre 1 et 12 !");
					date.focus();
					return false;
					// Test le jour est compris entre 1 et le maximum du mois
				} 
				else if ((jour < 1) || (jour > tab_mois[mois-1]))
				{
					alert("Le jour de la "+fieldDisplay+" est incoh?rent !");
					date.focus();
					return false;
				} 
				else return true;
			}
		}
	}
}

// Fonction qui v?rifie si la date1 est inf?rieure ? la date2
function f_verifDateToDate(date1, date2, label1, label2, verifHeure, heure1, heure2, label3, label4) 
{
	var annee1 = date1.value.substring(6,10);
	var jour1 = date1.value.substring(0,2);
	var mois1 = date1.value.substring(3,5);
	var annee2 = date2.value.substring(6,10);
	var jour2 = date2.value.substring(0,2);
	var mois2 = date2.value.substring(3,5);
	
	if (annee1 > annee2) 
	{
		alert("Le champ "+label1+" doit ?tre inf?rieur au champ "+label2+" !");
		date1.focus();
		return false;	
	} 
	else 
	{
		if ((mois1 > mois2) && (annee1 == annee2)) 
		{
			alert("Le champ "+label1+" doit ?tre inf?rieur au champ "+label2+" !");
			date1.focus();
			return false;	
		} 
		else 
		{
			if ((jour1 > jour2) && (mois1 == mois2) && (annee1 == annee2)) 
			{
				alert("Le champ "+label1+" doit ?tre inf?rieur au champ "+label2+" !");
				date1.focus();
				return false;	
			} 
			else 
			{
				if (((jour1 == jour2) && (mois1 == mois2) && (annee1 == annee2)) && (verifHeure == "true"))
				{
					if (f_verifTimeToTime(heure1, heure2, label3, label4))
					{ 
						return true;
					}
				}
				else
				{
					return true;
				}
			}	
		}
	}
}

// Fonction qui v?rifie si l'heure1 est inf?rieure ? l'heure2
function f_verifTimeToTime(heure1, heure2, label1, label2) 
{
	var h1 = heure1.value.indexOf('h', 0); 
	var h2 = heure2.value.indexOf('h', 0); 
	var hour1 = heure1.value.substring(0,h1);
	if (hour1.substring(0, 1) == "0")
	{
		hour1 = hour1.substring(1, 2);
	}
	var hour2 = heure2.value.substring(0,h2);
	if (hour2.substring(0, 1) == "0")
	{
		hour2 = hour2.substring(1, 2);
	}
	var minute1 = heure1.value.substring(parseInt(h1+1),heure1.value.length);
	if (minute1.substring(0, 1) == "0")
	{
		minute1 = minute1.substring(1, 2);
	}
	var minute2 = heure2.value.substring(parseInt(h2+1),heure2.value.length);
	if (minute2.substring(0, 1) == "0")
	{
		minute2 = minute2.substring(1, 2);
	}
	if (parseInt(hour1) > parseInt(hour2)) 
	{
		alert("Le champ "+label1+" doit ?tre inf?rieur au champ "+label2+" !");
		heure1.focus();
		return false;	
	} 
	else 
	{
		if ((parseInt(minute1) >= parseInt(minute2)) && (parseInt(hour1) == parseInt(hour2))) 
		{
			alert("Le champ "+label1+" doit ?tre inf?rieur au champ "+label2+" !");
			heure1.focus();
			return false;	
		} 
		else 
		{
			return true;
		}
	}
}

var tabHeure = new Array();
// Fonction qui remplie le tableau ci-dessus ? patir de l'heure de d?but, l'heure de fin et l'?cart entre
// chaque heure.
function f_heure(debut, fin, ecart)
{
	var i = 0;
	// R?cup?ration de la place du "h".
	var placeHourEnd = fin.indexOf("h", 0);
	// R?cup?ration des heures sur l'heure de fin.
	var heureEnd = fin.substring(0, placeHourEnd);
	// R?cup?ration des minutes sur l'heure de fin.
	var minuteEnd = fin.substring(parseInt(placeHourEnd+1), fin.length);
	// R?cup?ration de la place du "h".
	var placeHourBegin = debut.indexOf("h", 0);	
	// R?cup?ration des heures sur l'heure de d?but.
	var heureBegin = debut.substring(0, parseInt(placeHourBegin));
	// R?cup?ration des minutes sur l'heure de d?but.
	var minuteBegin = debut.substring(parseInt(placeHourBegin+1), debut.length);
	while ((parseInt(heureEnd) > parseInt(heureBegin)) || ((parseInt(heureEnd) == parseInt(heureBegin)) && (parseInt(minuteEnd) > parseInt(minuteBegin))))
	{
		// Rangement dans le tableau javascript des heures.
		tabHeure[i] = debut;	
		i++;
		// R?cup?ration de l'heure suivante (= heure + ?cart).
		debut = f_addMinutes(debut, ecart, fin);
		// R?cup?ration de la place du "h".
		placeHourBegin = debut.indexOf("h", 0);	
		// R?cup?ration des heures sur l'heure courante.
		heureBegin = debut.substring(0, parseInt(placeHourBegin));
		// R?cup?ration des minutes sur l'heure courante.
		minuteBegin = debut.substring(parseInt(placeHourBegin+1), debut.length);
	}
	// Rangement dans le tableau javascript de l'heure de fin.
	tabHeure[i] = fin;	
}

// Fonction qui ajoute l'?cart ? la date.
function f_addMinutes(heure, ecart, fin)
{
	// R?cup?ration de la place du "h".
	var placeHour = heure.indexOf("h", 0);
	// R?cup?ration des heures sur l'heure courante.
	var hour = heure.substring(0, parseInt(placeHour));
	// On ne r?cup?re que le second chiffre dans le cas o? l'heure est compos?e comme :
	// "0" + chiffre.
	if ((hour.length == 2) && (hour.substring(0, 1) == "0"))
	{
		hour = hour.substring(1, 2);
	}
	// R?cup?ration des minutes sur l'heure courante.
	var minute = heure.substring(parseInt(placeHour+1), heure.length);
	// On ne r?cup?re que le second chiffre dans le cas o? les minutes sont compos?es comme :
	// "0" + chiffre.
	if ((minute.length == 2) && (minute.substring(0, 1) == "0"))
	{
		minute = minute.substring(1, 2);
	}
	// R?cup?ration de la place du "h" sur l'heure de fin.
	var placeHourEnd = fin.indexOf("h", 0);
	// R?cup?ration des heures sur l'heure de fin.
	var hourEnd = fin.substring(0, placeHourEnd);
	// On ne r?cup?re que le second chiffre dans le cas o? l'heure est compos?e comme :
	// "0" + chiffre.
	if ((hourEnd.length == 2) && (hourEnd.substring(0, 1) == "0"))
	{
		hourEnd = hourEnd.substring(1, 2);
	}
	// R?cup?ration des minutes sur l'heure de fin.
	var minuteEnd = fin.substring(parseInt(placeHourEnd+1), fin.length);
	// On ne r?cup?re que le second chiffre dans le cas o? les minutes sont compos?es comme :
	// "0" + chiffre.
	if ((minuteEnd.length == 2) && (minuteEnd.substring(0, 1) == "0"))
	{
		minuteEnd = minuteEnd.substring(1, 2);
	}
	// Calcul des minutes de l'heure de d?but avec l'?cart.
	var addMinutes = parseInt(minute) + parseInt(ecart);
	// Si ce chiffre est ?gal ? 60 c'est que l'on doit rajouter une heure et mettre les minutes ? "00".
	if (parseInt(addMinutes) == 60)
	{
		minute = "00";
		hour = parseInt(hour) + 1;
	}
	else
	{
		// Si ce chiffre est strictement sup?rieur ? 60 c'est que l'on doit rajouter une 
		// heure et mettre les minutes ?gales ? "chiffre - 60".
		if (parseInt(addMinutes) > 60)
		{
			minute = parseInt(addMinutes - 60);
			hour = parseInt(hour) + 1;
		}
		else
		{
			minute = addMinutes;
		}
	}
	// Si l'heure calcul?e est sup?rieure ? l'heure de fin alors on renvoie l'heure de fin.
	if ((parseInt(hourEnd) <= parseInt(hour)) && (parseInt(minuteEnd) <= parseInt(minute)))
	{
		return fin;
	}
	// Sinon on renvoie l'heure calcul?e.
	else
	{
		// On rajoute un "0" devant l'heure si elle n'est compos?e que de un seul chiffre.
		if (hour.length == 1)
		{
			hour = "0" + hour;
		}
		// On rajoute un "0" devant lles minutes si elles ne sont compos?es que de un seul chiffre.
		if ((parseInt(minute) < 10) && (parseInt(minute) > 0))
		{
			minute = "0" + minute;
		}
		// On renvoie l'heure calcul?e.
		return hour + "h" + minute;
	}
}

// Fonction qui remplace un caract?re par un autre caract?re.
function remplaceChar(expr,a,b) {
      var i = 0;
      while (i < expr.length) 
      {
         i = expr.indexOf(a,i);
         if (i >= 0) 
         {
            expr = expr.substring(0,i) + b + expr.substring(i+a.length);
            i += b.length;
         }
         else
         {
         	i = expr.length;
         }
      }
      return expr
}

// Fonction qui remplace le caract?re " par '.
function f_replaceChar(expr)
{
	expr = remplaceChar(expr,'"',"'");
	return expr;
}

// Fonction qui remplace les accents par des lettre sans accent
function f_replaceAccent(expr)
{
	expr = remplaceChar(expr," ","");
	expr = remplaceChar(expr,"?","a");
	expr = remplaceChar(expr,"?","e");
	expr = remplaceChar(expr,"?","e");
	expr = remplaceChar(expr,"?","i");
	expr = remplaceChar(expr,"?","i");
	expr = remplaceChar(expr,"?","u");
	expr = remplaceChar(expr,"?","u");
	expr = remplaceChar(expr,"?","c");
	expr = remplaceChar(expr,"?","e");
	expr = remplaceChar(expr,"'","");
	return expr;
}

// Fonction qui remplace les accents par des lettre sans accent
// M?me fonction que precedemment sans remplacer les espaces
function f_replaceAccent2(expr)
{	
	expr = remplaceChar(expr,"?","a");
	expr = remplaceChar(expr,"?","e");
	expr = remplaceChar(expr,"?","e");
	expr = remplaceChar(expr,"?","i");
	expr = remplaceChar(expr,"?","i");
	expr = remplaceChar(expr,"?","u");
	expr = remplaceChar(expr,"?","u");
	expr = remplaceChar(expr,"?","c");
	expr = remplaceChar(expr,"?","e");
	expr = remplaceChar(expr,"'","");
	return expr;
}

// Fonction qui permet d'afficher un message d'attente
function f_message()
{
  var obj = window.top.login.document.getElementById("mesFrames");
  obj.rows="*,1";
}

// Fonction qui renvoie la date du jour.
function f_dateToday()
{
  var ladate = new Date();
  var jour = ladate.getDate();
  if (parseInt(jour) < 10)
  {
    jour = "0" + jour;
  }
  var mois = ladate.getMonth()+1;
  if (parseInt(mois) < 10)
  {
    mois = "0" + mois;
  }
  return jour+"/"+mois+"/"+ladate.getFullYear();
}





