// 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 ' n\'est pas valide. Il ni y\'a pas "@" !';		
	}
	else{
		var pos = val.indexOf('@');
		if (val.indexOf('.',pos)< 0){
			return ' 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 lance_recherche(mot){
	if (!mot){
		alert("Vous devez entrer un mot pour effectuer une recherche !");
		return false;
	}
	else {
		//url_recherche = escape("recherche/recherche.php?method=all&format=long&sort=score&config=nephropar&restrict=&exclude=&submit=search&matchesperpage=10&words=" + mot);
		window.top.location = "recherche/recherche.php?method=all&format=long&sort=score&config=nephropar&restrict=&exclude=&submit=search&matchesperpage=10&words=" + mot;
		return false;
	}

}


function lance_recherche_template(mot){
	if (!mot){
		alert("Vous devez entrer un mot pour effectuer une recherche !");
		return false;
	}
	else {
		//url_recherche = escape("recherche/recherche.php?method=all&format=long&sort=score&config=nephropar&restrict=&exclude=&submit=search&matchesperpage=10&words=" + mot);
		window.top.location = "../recherche/recherche.php?method=all&format=long&sort=score&config=nephropar&restrict=&exclude=&submit=search&matchesperpage=10&words=" + mot;
		return false;
	}

}







function checkForm_en(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("The field "+theForm.inputs[i][1]+" is required");
	  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]+"_en(document."+theForm.name+"."+theForm.inputs[i][0]+")");      
    if (theCheck != "") {
	 eval("document."+theForm.name+"."+theForm.inputs[i][0]+".focus()");
     alert("The field "+theForm.inputs[i][1]+" "+theCheck);
 	return false;
    }
   }
  }
  return true;
}

function checkMail_en(theField) {
	var val = theField.value;
	if ((val.indexOf('@')<0)){
		return ' is not valid. There is no "@" !';		
	}
	else{
		var pos = val.indexOf('@');
		if (val.indexOf('.',pos)< 0){
			return ' is not valid. There is no  "." !';
		}
	}
	return "";
}

//-->
