// Le constructeur de la classe Formulaire ...
function FormClass(formName) {
  this.name = formName;
  this.inputs = new Array(100);
  this.counter = 0;
}

// Ajoute un champ à contrôler lors du submit au formulaire theForm
//add2Form(myForm, 'LE nom de l'input dans le formulaire', 'Le libellé de l'input pour l'utilisateur', 'Le type de l'input', Est-ce un champ obligatoire ? );
function add2Form(theForm, inputName, inputLib, inputType, isMandatory) {
  theForm.inputs[theForm.counter] = new Array(inputName, inputLib, inputType, isMandatory);  
  theForm.counter ++;
}

// Fonction permettant la réalisation du contrôle de la validité des informations
// saisies dans le formulaire
function checkForm(theForm) {
  for (i=0; i<theForm.counter; i++) {
   eval("empty = (trim(document."+theForm.name+"."+theForm.inputs[i][0]+".value) == \"\")");
   if (theForm.inputs[i][3] == true) {
	 if (empty) {
	  alert("Le champ "+theForm.inputs[i][1]+" est obligatoire");
	  eval("document."+theForm.name+"."+theForm.inputs[i][0]+".focus()");
	  return false;
	 }
   }
   
   theCheck = "";
   if (theForm.inputs[i][2] != '' && !empty) {
    eval("theCheck = check"+theForm.inputs[i][2]+"(document."+theForm.name+"."+theForm.inputs[i][0]+")");      
    if (theCheck != "") {
	 eval("document."+theForm.name+"."+theForm.inputs[i][0]+".focus()");
     alert("Le champ "+theForm.inputs[i][1]+" "+theCheck);
 	return false;
    }
   }
  }
  return true;
}

function checkDate_AAAA(theField) {
	theExp = new RegExp("^([0-9]{0,1}[0-9])/([0-9]{2})/([0-9]{4})$");
	return (checkDateWithRegex(theField, theExp));
}

function checkDate_AA(theField) {
	theExp = new RegExp("^([0-9]{0,1}[0-9])/([0-9]{2})/([0-9]{2})$");
	return (checkDateWithRegex(theField, theExp));
}

function checkDate_AA_ou_AAAA(theField) {
	ret1 = checkDate_AA(theField);
	ret2 = checkDate_AAAA(theField);
	if((ret1=="")||(ret2=="")){
		return "";
	}
	else{
		return (ret1=="")?ret2:ret1;	
	}
}


// Verifie que la date n'est pas supperieure a la date du jour
function checkDateInfDateJour(theField){
	var laDate;
	if(theField.value.length==8){
		laDate = new Date('20'+theField.value.substr(6,2),theField.value.substr(3,2)-1,theField.value.substr(0,2));	
	}
	else if(theField.value.length==10){
		laDate = new Date(theField.value.substr(6,4),theField.value.substr(3,2)-1,theField.value.substr(0,2));	
	}
	else{
		return 'n\'est pas un format de date valide';
	}
	
	var dateJour = new Date();
	var diffSeconde = Math.floor(dateJour.getTime()-laDate.getTime());
	if(diffSeconde>0){
		return "";
	}
	else{
		return 'a une date superieure à la date du jour !';
	}
}

// Vérifie que la valeur du champ theField correspond bien à un format de date
function checkDateWithRegex(theField, theExp) {
 // On teste l'expression régulière passée en paramètre
 recup = theExp.exec(theField.value);
 // Au cas où le format est mauvais (jj/mm/aaaa)
 if (RegExp.$1 == "" || RegExp.$2 == "" || RegExp.$3 == "") {
 	return ("n'est pas un format de date valide");
 }
 // Tout le reste de la fonction permet de vérifier que le mois
 // saisi est valide et que le jour saisi peut être un jour de ce mois
 jour = RegExp.$1;
 mois = RegExp.$2;
 
 maxJ = 31;
 
 if (mois<1 || mois > 12) {
  return ("n'est pas un format de date valide (mois invalide)");
 }
 
 if (mois == 4 || mois == 6 || mois == 9 || mois == 11) {
  maxJ = 30;
 }
 
 if (mois == 2) {
  maxJ = 28;
 }
 
 if (jour<1 || jour > maxJ) {
  return ("n'est pas un format de date valide (jour invalide pour ce mois)");
 }
 
 return "";
}

// Vérifie que la valeur du champ theField correspond bien à un format de mail (xxx@xxx.xxx)
function checkMail(theField) {
	var val = theField.value;
	if ((val.indexOf('@')<0)){
		return 'Cet email n\'est pas valide. Il ni y\'a pas "@" !';		
	}
	else{
		var pos = val.indexOf('@');
		if (val.indexOf('.',pos)< 0){
			return 'Cet email n\'est pas valide. Il ni y\'a pas  "." !';
		}
	}
	return "";
}

//*********************************************************
// Fonctions de suppression d'espace au debut et a la fin d'une chaine
//*********************************************************

// Enleve les blancs au debut d'une chaine
function ltrim(s){
	return s.replace( /^\s*/, "" )
}

// Enleve les blancs a la fin d'une chaine
function rtrim(s){
	return s.replace( /\s*$/, "" );
}


// Enleve les blancs au debut et a la fin d'une chaine
function trim ( s ){
	return rtrim(ltrim(s));
}


// Fonction de suppression d'un element (parametre : l'url)
function supprimeElement(url){
	if(confirm('Vous voulez-vous vraiment supprimer cet élément ?')){
		window.location = url;
	}
}




function sendData(mychoice) {

	var itsme;
	var done = false;

	for (var i=0; i<document.f1.radiobutton.length; i++)  {
		if (document.f1.radiobutton[i].checked)  {

			itsme = document.f1.radiobutton[i].value;
			done = true;
		}
	}
	
	if (done == true) {
		document.getElementById('action').value = mychoice;
		document.getElementById('id').value = itsme;
		document.f1.submit();

	}
	else {
		alert("Vous devez cocher une case avant d'effectuer une action.");
		return false;
	}
}

function checkNumeric(objName,minval, maxval,comma,period,hyphen)
{
	var numberfield = objName;
	if (chkNumeric(objName,minval,maxval,comma,period,hyphen) == false)
	{
		numberfield.select();
		numberfield.focus();
		return false;
	}
	else
	{
		return true;
	}
}

function chkNumeric(objName,minval,maxval,comma,period,hyphen)
{
// only allow 0-9 be entered, plus any values passed
// (can be in any order, and don't have to be comma, period, or hyphen)
// if all numbers allow commas, periods, hyphens or whatever,
// just hard code it here and take out the passed parameters
var checkOK = "0123456789" + comma + period + hyphen;
var checkStr = objName;
var allValid = true;
var decPoints = 0;
var allNum = "";

for (i = 0;  i < checkStr.value.length;  i++)
{
ch = checkStr.value.charAt(i);
for (j = 0;  j < checkOK.length;  j++)
if (ch == checkOK.charAt(j))
break;
if (j == checkOK.length)
{
allValid = false;
break;
}
if (ch != ",")
allNum += ch;
}
if (!allValid)
{	
alertsay = "Entrez seulement ces valeurs  \""
alertsay = alertsay + checkOK + "\" dans le champ \"" + checkStr.name + "\", svp."
alert(alertsay);
return (false);
}

// set the minimum and maximum
var chkVal = allNum;
var prsVal = parseInt(allNum);
if (chkVal != "" && !(prsVal >= minval && prsVal <= maxval))
{
alertsay = "Entrez une valeur plus grande "
alertsay = alertsay + "ou égale à \"" + minval + "\" ou plus petite "
alertsay = alertsay + "ou égale à \"" + maxval + "\" dans le champ \"" + checkStr.name + "\", svp."
alert(alertsay);
return (false);
}
}



