    function is_int(in_string)
    //========================
    {
      for(i=0; i < in_string.length; i++)
      {
        c = in_string.charAt(i);
        if (c!="0" && c!="1" && c!="2" &&
            c!="3" && c!="4" && c!="5" &&
            c!="6" && c!="7" && c!="8" &&
            c!="9")
        return false;
      }
      return true;
    } /* is_int */

    function is_float(in_string)
    //==========================
    {
      for(i=0; i < in_string.length; i++)
      {
        c = in_string.charAt(i);
        if (c!="0" && c!="1" && c!="2" &&
            c!="3" && c!="4" && c!="5" &&
            c!="6" && c!="7" && c!="8" &&
            c!="9" && c!="," && c!=".")
        return false;
      }
      return true;
    } /* is_float*/

   /* returns a float from a string */
   function getFloat(in_string)
   //==========================
   {
	   if (in_string.indexOf(",")>0)
		in_string=in_string.split(",")[0]+"."+in_string.split(",")[1];
	   if (in_string.indexOf(".")==0)
		in_string="0"+in_string;

	   return parseFloat(in_string)	
   } /* getFloat */


	/* returns a date from a string */
    /* ---------------------------- */
	function getDate (in_string)
	//==========================
    {
    	/*
    	//This does not work
    	//JavaScript format is month, day, year
    	return new Date(in_string.substring(5,6),
    			 in_string.substring(8,9),
    			 in_string.substring(0,3));
    	*/
    	
          i = in_string.indexOf("/");
          if (i<1) 
          {
            i = in_string.indexOf("-");
          	if (i<1) return false;
		  }
		   
		  //=== year
          aa = in_string.substring(0,i);
          if ( (aa=="") || (!is_int(aa)) ) return false;
          aa = parseInt(aa, 10);

          if (aa<1000)             
            aa=aa+2000
          else if (aa<100)
            aa=aa+1900;
      
          //=== month
          in_string=in_string.substring(i+1);
          i = in_string.indexOf("/");
          if (i<1) 
          {
            i = in_string.indexOf("-");
          	if (i<1) return false;
		  }
          
          mm = in_string.substring(0,i);
          if (!is_int(mm))               return false;
          var mmInt = parseInt(mm); 
          if ((mmInt<1) || (mmInt>12))   return false;

		  //=== day
		  jj = in_string.substring(i+1);
          if (!is_int(jj))               return false;
          jj = parseInt(jj, 10); 
          if ((jj<1) || (jj>31))         return false;
          
          if (    ( (mm==2) && (jj>29) )
              ||  ( (mm<8)  && ((mm & 1)==0) && (jj>30) )
              ||  ( (mm>7)  && ((mm & 1)==1) && (jj>30) )
             )							return false;
          
          date=new Date(0);
          date.setYear(aa);
          date.setMonth(mm-1);
          date.setDate(jj);

          return date;
    }

	/* tests if it is a date (english format) */
    /* -------------------------------------- */
	function isEnglishDate (in_string)
	//================================
    {
    	/*
    	//This does not work
    	//JavaScript format is month, day, year
    	return new Date(in_string.substring(5,6),
    			 in_string.substring(8,9),
    			 in_string.substring(0,3));
    	*/
    	
          i = in_string.indexOf("/");
          if (i<1) 
          {
            i = in_string.indexOf("-");
          	if (i<1) return false;
		  }
		   
		  //=== year
          aa = in_string.substring(0,i);
          if ( (aa=="") || (!is_int(aa)) ) return false;
          
          /*	Not necessary when we only test date
          aa = parseInt(aa, 10);
          if (aa<1000)             
            aa=aa+2000
          else if (aa<100)
            aa=aa+1900;
          */
          
          //=== month
          in_string=in_string.substring(i+1);
          i = in_string.indexOf("/");
          if (i<1) 
          {
            i = in_string.indexOf("-");
          	if (i<1) return false;
		  }
          
          mm = in_string.substring(0,i);
          if (!is_int(mm))               return false;
          if ((mm<1) || (mm>12))   return false;

		  //=== day
		  jj = in_string.substring(i+1);
          if (!is_int(jj))               return false;
          jj = parseInt(jj, 10); 
          if ((jj<1) || (jj>31))         return false;
          
          if (    ( (mm==2) && (jj>29) )
              ||  ( (mm<8)  && ((mm & 1)==0) && (jj>30) )
              ||  ( (mm>7)  && ((mm & 1)==1) && (jj>30) )
             )							return false;
          
          return true;
    }
    
    function isTime(time_string)
	//==========================
    {
          i = time_string.indexOf(":");
          if (i<1) 
          {
            i = time_string.indexOf("h");
          	if (i<1) return false;
		  }
		   
		  //=== hour
          hh = time_string.substring(0,i);
          if ( (hh=="") || (!is_int(hh)) ) return false;
          
          hh = parseInt(hh, 10);
          if ( (hh<0) || (hh>23) )
          	return false;
          	             
          //=== minutes
          mn = time_string.substring(i+1);
          if ( (mn=="") || (!is_int(mn)) ) return false;
          
          mn = parseInt(mn, 10);
          if ( (mn<0) || (mn>59) )
          	return false;
          	
          return true;
    }
    
    function is_date(in_string)
    //=========================
    {
    	//return getFrenchDate(in_string)!=false;
		//return getDate(in_string)!=false;
		return isEnglishDate(in_string);
	}
	
	function lenientParseInt(in_string)
  //=================================
  {
    if( in_string.charAt(0) == '0' )
      return parseInt( in_string.substring(1) );
    return parseInt( in_string );
  }
  
	// Returns false if invalid format
	// Else returns a well formatted date : 5/8/83 -> 05-08-1983
	function is_french_date(in_string, century)
  //=========================================
  {
    var array = false;
    var delim = "-";
    if( in_string.indexOf("/") > 0 )
      delim = "/";
    
    var elem = in_string.split(delim);
    if( elem.length != 3 )
      return false;
    
    var day = elem[0];
    var month = elem[1];
    var year  = elem[2];

    //=== Test month
    if ( !is_int(month) )
      return false;
    var mm = lenientParseInt(month); 
    if ( mm<1 || mm>12)   
      return false;
  
    //=== Test day
    if ( !is_int(day) )
      return false;
    jj = lenientParseInt(day); 
    if ( jj<1 || jj>31) 
      return false;
       
    if ( ( (mm==2) && (jj>29) )
      ||  ( (mm<8)  && ((mm & 1)==0) && (jj>30) )
      ||  ( (mm>7)  && ((mm & 1)==1) && (jj>30) ) )
      return false;
    
    //=== Test year
    if ( !is_int(year) )
      return false;
    if( year.length != 2 && year.length != 4 )
      return false;
   
    //=== Build date to return
    if( month.length == 1 )
      month = "0" + month;
    if( day.length == 1 )
      day = "0" + day;  
    if( year.length == 2 )
      year = century + year; 
      
    return day + "-" + month + "-" + year;
	}

	function is_date_time(in_string)
	//==============================
    {
    	var pos = in_string.indexOf(" ");
    	if( pos > 0)
    	{
    		time_string = in_string.substring(pos+1);
     		if( !isTime(time_string) )
    			return false;
    	
 			in_string = in_string.substring(0, pos);
 		}
  		return isEnglishDate(in_string);
 	}

 	function isCodePostal(item)
	//=========================
  {
    var value = item.value;
    if( value != '' )
    {
      var re = new RegExp( /^(\d){5}$/);
      if ( !value.match(re) )
      {
        alert('Le code postal ' + value + ' est invalide');
        item.focus();
        return false;
      }
    }
    return true;
 	}
 	function isFrenchPhone(item)
	//==========================
  {
    var valueOrig = item.value;
    if( valueOrig != '' )
    {
      // remove all spaces and '-' 
      var value = valueOrig.replace( /[\s-]/g, '');
      
      var re = new RegExp(/^(01|02|03|04|05|06|07|08|09)[0-9]{8}$/);
      if ( !value.match(re) )
      {
        alert('Le numéro de téléphone ' + valueOrig + ' est invalide');
        item.focus();
        return false;
      }
      else
        item.value = value;
    }
    return true;
 	}
 	
 	function isEmail(item, display)
 	//=============================
 	{
    var valueOrig = item.value;
    if( valueOrig != '' )
    {
      // remove all spaces and '-' 
      var value = valueOrig.replace( /[\s-]/g, '');
      
      var re = new RegExp(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i);
      if ( !value.match(re) )
      {
        if( display )
        {
          alert("L'email " + valueOrig + " est invalide");
          item.focus();
        }
        return false;
      }
      else
        item.value = value;
    }
    return true;
  }
