<!--
// Field Control JavaScript (C)1997 Cyril Pannetier - La Petite Boutique Java & JavaScript -
// web : http://www.mygale.org/08/pannetie
// e-mail : pannetie@mygale.org
// -- CtHuy (C) Harvest 1999 dans la partie CtHuy sources.
// Ce script est librement utilisable. Merci de ne pas effacer ces commentaires.

var varAide = null;
var rDate = "";
var AlphaChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
var NumChars = "0123456789";
var HexaChars = "ABCDEFabcdef";
var SpecChars = "'-|_\^,?;.:/!§%*= ";
var rDataLim = 1850;
//------------------------------------------------------------------------------
function IsNumeric(Data)
{
   var It = true;
   var c;

   for (var x = 0; x < Data.length; x++)
      if (It)
      {
         c = Data.charAt(x);
         It = ( NumChars.indexOf(c) != -1);
      }
   return It;
}
//------------------------------------------------------------------------------
function IsDecimal(Data)
{
   Data = repl(Data,",",".");
   Data = repl(Data," ","");
   
   var number = parseFloat(Data);
   
   if (number != Data)
      return false;
   
   return true;
}
//------------------------------------------------------------------------------
function IsAlphaNumeric(Data)
{
   var It = true;
   var c;
   for (var x = 0; x < Data.length; x++)
      if (It)
      {
         c = Data.charAt(x);
         It = (  (AlphaChars.indexOf(c) != -1) || (NumChars.indexOf(c) != -1) );
      }
   return It;
}
//------------------------------------------------------------------------------
function IsHexa(Data)
{
   var It = true;
   var c;
   for (var x = 0; x < Data.length; x++)
      if (It)
      {
         c = Data.charAt(x);
         It = (  (HexaChars.indexOf(c) != -1) || (NumChars.indexOf(c) != -1) );
      }
   return It;
}
//------------------------------------------------------------------------------
function IsAlpha(Data)
{
   var It = true;
   var c;
   for (var x = 0; x < Data.length; x++)
      if (It)
      {
         c = Data.charAt(x);
         It = ( AlphaChars.indexOf(c) != -1);
      }
   return It;
}
//------------------------------------------------------------------------------
function TrouveSpec(Data,Deb)
{
   for (var x = Deb; x < Data.length; x++)
   {
      c = Data.charAt(x);
      if (SpecChars.indexOf(c) != -1)
         break;
   }

   return x;
}
//------------------------------------------------------------------------------
function IsDate(Data)
{
   var It = true;
   var slash_day = 0;
   var slash_month = 0;
   var hjour = "";
   var hmois = "";
   var hannee = "";

   //slash_day = Data.indexOf("/");
   slash_day = TrouveSpec(Data, 0);

   if(slash_day>0)
   {
      //slash_month = Data.indexOf("/", slash_day+1);
      slash_month = TrouveSpec(Data, slash_day+1);
   }

   //----- 1 test de la validite de la saisie sous le format jj/mm/aaaa.
   if (Data.length==10 && slash_day > 0 && slash_month > 0)
   {
      c = Data.charAt(2);
      It = ( SpecChars.indexOf(c) != -1);
      if (It)
      {
         hjour = Data.substring(0,2);
         c = Data.charAt(5);
         It = ( SpecChars.indexOf(c) != -1);
         if (It)
         {
            hmois = Data.substring(3,5);
            hannee = Data.substring(6,Data.length);
         }
      }
   }
   //----- 2 test de la validite de la saisie sous le format mm/aaaa.
   else
   {	 
      if (Data.length==7 && slash_day > 0)
      {
         c = Data.charAt(2);
         It = ( SpecChars.indexOf(c) != -1);
         if (It)
         {
            hjour= "01";
            hmois = Data.substring(0,2);
            c = Data.charAt(2);
            It = ( SpecChars.indexOf(c) != -1);
            if (It)
            {
               hannee = Data.substring(3,Data.length);
            }
         }
      }
   else
   {
      if ( slash_day > 0 && slash_month > 0 && slash_month < Data.length)
      {
         hjour = Data.substring(0,slash_day);
         hmois = Data.substring(slash_day+1,slash_month);
         hannee = Data.substring(slash_month+1,Data.length);
      }
      else //pas de slash
      {
            if ( Data.length==6 ) //saisie MMAAAA
            {
               hjour = "01";
               hmois = Data.substring(0,2);
               hannee = Data.substring(2,6);
            }
            else //saisie JJMMAAAA
            {
         hjour = Data.substring(0,2);
         hmois = Data.substring(2,4);
         hannee = Data.substring(4,Data.length);
            }
         }
      }
   }

   //----- 2 test de la validite des nombres jour, mois et annee.
   if (It)
   {
      It = IsNumeric(hjour) && IsNumeric(hmois) && IsNumeric(hannee);
   }

   if(hannee.length == 2)
   {
      var iAnnee = parseInt(hannee);
      if (iAnnee < 20)
         hannee = "20" + hannee;
      else
         hannee = "19" + hannee;
   }

   if(hannee.length != 4)
   {
      It = false;
   }

   //----- 3 test de la cohérance de la date.
   if (It)
   {
      if (hmois.charAt(0) == "0" && hmois.length == 2)
      {
         hmois = hmois.charAt(1);
      }

      if (hjour.charAt(0) == "0" && hjour.length == 2)
      {
         hjour = hjour.charAt(1);
      }

      switch (parseInt(hmois))
      {
         case 1 :  //-- janvier.
         case 3 :  //-- mars.
         case 5 :  //-- mai.
         case 7 :  //-- juillet.
         case 8 :  //-- aout.
         case 10 : //-- octobre.
         case 12 : //-- decembre.
            if (!((parseInt(hjour)>=1)&&(parseInt(hjour)<=31)))
            {
               It = false;
            }
            break;

         case 2 :  //-- fevrier.
            if (parseInt(hjour)==29)
            {
               It = ((hannee%4)==0) && ( ((hannee%100)!=0) || ((hannee%400)==0) );
            }
            else
            {
               if (!((parseInt(hjour)>=1)&&(parseInt(hjour)<29)))
               {
                  It = false;
               }
            }
            break;

         case 4 :   //-- avril.
         case 6 :   //-- juin.
         case 9 :   //-- septembre.
         case 11 :  //-- novembre.
            if (!((parseInt(hjour)>=1)&&(parseInt(hjour)<=30)))
            {
               It = false;
            }
            break;

         default :
            It = false;
            break;
      }
   }

   //if ( Data.length < 10 )
   {
      if (It)
      {
         if (hjour.length == 1)
         {
            hjour = "0" + hjour;
         }

         if (hmois.length == 1)
         {
            hmois = "0" + hmois;
         }
         
         if (hannee < rDataLim)
	 {
	    hannee = rDataLim;
	 }   
         //retDate = hjour + "/" + hmois + "/" + hannee;
         rDate = hjour + "/" + hmois + "/" + hannee;
      }
   }

   return It;
}
//------------------------------------------------------------------------------
function CheckField(Data,Format)
{
   var exact = false;

   if (Data.length > 0)
   {
      if (Format == "NUM")
         exact = IsNumeric(Data);
      if (Format == "ALNUM")
         exact = IsAlphaNumeric(Data);
      if (Format == "DEC")
         exact = IsDecimal(Data);
      if (Format == "HEXA")
         exact = IsHexa(Data);
      if (Format == "ALPHA")
         exact = IsAlpha(Data);
//      if (Format == "DATE")//
//         exact = IsDate(Data);//
   }
   else
   {
      exact = true;
   }

   return exact;
}
//------------------------------------------------------------------------------
//----- Modification par CtHuy.
function Check(FormName,Format)
{
   if (Format != "DATE")
   {
      if (CheckField(FormName.value,Format))
      {
   //      window.alert("Format valide");
         return true;
      }
      else
      {
         window.alert("La valeur saisie est incorrecte.");
         FormName.value = "";
         FormName.focus();
         return false;
      }
   }
   else
   {
      rDate = "";
      if (IsDate(FormName.value))
      {
         if (rDate != "")
         {
            FormName.value = rDate;
            return true;
         }
      }
      else
      {
         window.alert("La date saisie est incorrecte.");
         FormName.value = "";
         FormName.focus();
      }
      return false;
   }
}

function CheckDate(FormName, Type)
{
   rDate = "";
   
   
   if (Type!="YEAR")
   {
	   if (IsDate(FormName.value))
	   {
	      if (rDate != "")
	      {
	      	 if (Type == "NAISS_MONTH&YEAR")
	            FormName.value = rDate.substring(3,rDate.length);
	      	 else
	         FormName.value = rDate;
	         return true;
	      }
	   }
	   else if (FormName.value.length > 0)
	   {
	      if (Type == "NAISS")
	         window.alert("Le format de votre date de naissance est erroné (saisir jj/mm/aaaa)");
	      else if (Type == "NAISS_MONTH&YEAR")
	         window.alert("Le format de votre date de naissance est erroné (saisir mm/aaaa)");
	      else if (Type == "CONJOINT")
	         window.alert("Le format de la date de naissance de votre conjoint(e) est erroné (saisir jj/mm/aaaa)");
	      else if (Type == "DEB_PER")
	         window.alert("Le format de la date de début de période est erroné (saisir jj/mm/aaaa)");
	      else if (Type == "FIN_PER")
	         window.alert("Le format de la date de fin de période est erroné (saisir jj/mm/aaaa)");
	      else
	         window.alert("La date saisie est incorrecte.");
	      
	      FormName.value = "";
	      FormName.focus();
	   }
	}   
   else
   {
      var iOldValue = parseInt(FormName.value, 10) ;
      if (FormName.value.length != 4)
      {
         if (FormName.value.length == 0)
         {
            FormName.value = "";
         }
         else
         {
            var iNewValue = 0 ;
            if (iOldValue >=0 && iOldValue <=99 )
               iNewValue = 1900 + iOldValue ;
            else if (iOldValue >= 100)
               iNewValue = rDataLim ;

            FormName.value = iNewValue.toString(10) ;
         }
      }
      else
      {
         if ( iOldValue<rDataLim )
            FormName.value = rDataLim ;         
      }
   }
   return false;
}



//------------------------------------------------------------------------------

function CheckNumber(champ)
{
  if ( !CheckField(champ.value,"NUM") && CheckField(champ.value,"DEC") )
  {
    //window.alert("Ne saisissez que la partie entière du montant.");
    champ.value = Math.round(champ.value);
  }
  if ( !CheckField(champ.value,"NUM") && !CheckField(champ.value,"NUMNEG"))
  {
    window.alert("La valeur saisie est incorrecte. Une valeur numérique était attendue...");
    champ.value = "";
    champ.focus();
    return false;
  }
  return true;
}

//------------------------------------------------------------------------------

//--- CtHuy Source (C) -----.
function wAide(theURL)
{
   var b = false;
   var CthuyOpt = 'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,copyhistory=0,width=610,height=400'

   if ( !varAide )
   {
      b = true;
   }
   else
   {
      if ( varAide.closed )
      {
         b = true;
      }
      else
      {
         b = false;
      }
   }

   if ( b )
   {
      varAide = window.open(theURL+".htm",'varAide',CthuyOpt);
   }
   else
   {
      varAide.location.href=theURL+".htm";
      varAide.focus();
   }
}

function repl(s,c,r)
{
   var i = s.indexOf(c);
   while (i != -1)
   {
      s = s.replace(c,r);
      i = s.indexOf(c);
   }
   return s;
}
