function IntegerIntervalValidation(PField, PMin, PMax, PFieldName, PLanguage)
{
   var errorMsg1;
   var errorMsg2;

   switch(PLanguage)
   {
      case 'FR':
         errorMsg1 = 'Le format du champ '+PFieldName+' est incorrect: seule une valeur entière est acceptée.\nMerci de n\'entrer que des chiffres sans caractère de séparation (ni espace, ni virgule, ni point).';
         errorMsg2 = 'La valeur du champ '+PFieldName+' doit être comprise entre '+PMin+' et '+PMax+'.';
         break;
      case 'ES':
         errorMsg1 = 'El formato del campo '+PFieldName+' es incorrecto: sólo se acepta un valor entero.\nPor favor digite las cifras sin caracteres de separación (ni espacio, ni coma, ni punto).';
         errorMsg2 = 'El valor el campo '+PFieldName+' debe estar comprendido entre '+PMin+' y '+PMax+'.';
         break;
      case 'EN':
      default:
         errorMsg1 = 'The field format of '+PFieldName+' is incorrect: only one integral value is allowed.\nPlease enter only numbers without any separations (no spaces, no commas or apostrophes).';
         errorMsg2 = 'The value of the field '+PFieldName+' must be comprised between '+PMin+' and '+PMax+'.';
         break;
   }

   var localInt = parseInt(PField.value);
   var res = false;
   if(PField.value)
   {
      if(!isNaN(PField.value) && CheckNumbers(PField.value))
      {
         if(localInt != PField.value)
         {
            alert(errorMsg1);
            PField.select();
            setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
            return false;
         }
         else
         {
            // check boundaries
            if(localInt < PMin || localInt > PMax)
            {
               alert(errorMsg2);
               PField.select();
               setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
               return false;
            }
            else
               return true;
         }
      }
      else
      {
         alert(errorMsg1);
         PField.select();
         setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
         return false;
      }
   }
   return true;
}

function FloatIntervalValidation(PField, PPrecision, PMin, PMax, PFieldName, PLanguage)
{
   var errorMsg1;
   var errorMsg2;

   switch(PLanguage)
   {
      case 'FR':
         errorMsg1 = 'Le format du champ '+PFieldName+' est incorrect: seule une valeur avec '+PPrecision+' décimale(s) est acceptée.';
         errorMsg2 = 'La valeur du champ '+PFieldName+' doit être comprise entre '+PMin+' et '+PMax+'.';
         break;
      case 'ES':
         errorMsg1 = 'El formato del campo '+PFieldName+' es incorrecto: solo se aceptan valores con '+PPrecision+' cifra decimal.';
         errorMsg2 = 'El valor el campo '+PFieldName+' debe estar comprendido entre '+PMin+' y '+PMax+'.';
         break;
      case 'EN':
      default:
         errorMsg1 = 'The field format of '+PFieldName+' is invalid : only a value with '+PPrecision+' decimal(s) is allowed.';
         errorMsg2 = 'The value of the field '+PFieldName+' must be comprised between '+PMin+' and '+PMax+'.';
         break;
   }

   var localFloat = parseFloat(PField.value);
   /* alert('localFloat: '+localFloat); */

   if(PField.value)
   {
      if(!isNaN(PField.value))
      {
         var factor = Math.pow(10,PPrecision);
         var intField = Math.floor(localFloat * factor);
         var resField = parseFloat(intField / (factor*1.0));
         /* alert('resField: '+resField); */
         if(resField != localFloat)
         {
            alert(errorMsg1);
            PField.select();
            setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
            return false;
         }
         else
         {
            // check boundaries
            if(localFloat < PMin || localFloat > PMax)
            {
               alert(errorMsg2);
               PField.select();
               setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
               return false;
            }
            else
               return true;
         }
      }
      else
      {
         alert(errorMsg1);
         PField.select();
         setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
         return false;
      }
   }
   return true;
}


function FloatIntervalValidation2(PField, PPrecision, PMin, PMax, PFieldName, PLanguage)
{
   var errorMsg1;
   var errorMsg2;

   switch(PLanguage)
   {
      case 'FR':
         errorMsg1 = 'Le format du champ '+PFieldName+' est incorrect: seule une valeur avec '+PPrecision+' décimale(s) est acceptée.';
         errorMsg2 = 'La valeur du champ '+PFieldName+' doit être comprise entre '+PMin+' et '+PMax+'.';
         break;
      case 'ES':
         errorMsg1 = 'El formato del campo '+PFieldName+' es incorrecto: solo se aceptan valores con '+PPrecision+' cifra decimal.';
         errorMsg2 = 'El valor el campo '+PFieldName+' debe estar comprendido entre '+PMin+' y '+PMax+'.';
         break;
      case 'EN':
      default:
         errorMsg1 = 'The field format of '+PFieldName+' is invalid : only a value with '+PPrecision+' decimal(s) is allowed.';
         errorMsg2 = 'The value of the field '+PFieldName+' must be comprised between '+PMin+' and '+PMax+'.';
         break;
   }
   
   if(PField.value)
   {
      if(!isNaN(PField.value))
      {
		   var strvalue = PField.value;
		   var res = true;
		   var decimal_found = false;
		   var nb_decimals = 0;
		   var i = 0;
		   var factor = 1;
		   var partEntiere = 0.0;
		   var partDecimale = 0.0;
		   while(i<strvalue.length && res)
		   {
		      if(strvalue[i] < '0' || strvalue[i] > '9')
		      {
		         if(strvalue[i] == '.')
		         {
		            if(!decimal_found)
		            {
		               decimal_found = true;
		               factor = 10;
		            }
		            else
		               res = false;
		         }
		         else
		            res = false;
		      }
		      else
		      {
		         if(decimal_found)
		         {
		            nb_decimals++;
		            if(nb_decimals > PPrecision)
		            {
		               alert(errorMsg1);
		               PField.select();
		               setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
		               return false;
		            }
		            partDecimale += ((parseInt(strvalue[i]) + 1.0) / factor);
		            factor *= 10;
		         }
		         else
		         {
		            partEntiere = parseInt(strvalue);
		         }
		         if(partEntiere + partDecimale > PMax)
	            {
	               alert(errorMsg2);
                  PField.select();
                  setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
                  return false;
	            }
		      }
		      i++;
		   }
		   
		   if(!res)
		   {
		      alert(errorMsg1);
            PField.select();
            setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
            return false;
		   }
		   
		   if(((partEntiere+partDecimale) < PMin) || ((partEntiere+partDecimale) > PMax))
		   {
		      alert(errorMsg2);
		      PField.select();
		      setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
		      return false;
		   }
	   }
	   else
      {
         alert(errorMsg1);
         PField.select();
         setTimeout('document.getElementById(\''+PField.id+'\').focus();', 1);
         return false;
      }
   }
   
   return true;
}

function CheckNumbers(PStr)
{
   var res = true;
   var i = 0;
   while(i<PStr.length && res)
   {
      if(PStr[i] < '0' || PStr[i] > '9')
         res = false;
      else
         i++;
   }
   return res;

}