// Librairie de fonctions de vérification de formulaires

function Verif_normalise_maj( s )
{
	s = s.replace( /^\s*/, "" );
	s = s.replace( /\s+/, " " );
	s = s.replace( /\s*$/, "" );
	
	s = s.replace( "é", "E" );
	s = s.replace( "è", "E" );
	s = s.replace( "à", "A" );
	s = s.replace( "ç", "C" );
	s = s.replace( "ù", "U" );
	s = s.replace( "ê", "e" );
	s = s.replace( "ë", "e" );
	s = s.replace( "ê", "e" );
	s = s.replace( "ï", "i" );
	s = s.replace( "â", "a" );
	s = s.replace( "ô", "o" );
	s = s.replace( "î", "i" );
				
	s = s.toUpperCase();
	return( s );
}

function Verif_norm_maj_nospace( s )
{
	s = s.replace( /^\s*/, "" );
	//s = s.replace( /\s+/, " " );
	//s = s.replace( /\s+/, " " );//modif yann pour qu'il n'y ait pas d'espace
	s = s.replace( /\s*$/, "" );
	
	s = s.replace( /\s+/g, "_" );//modif yann pour qu'il n'y ait pas d'espace : inutile puisque plus d'espace dans la chaine
	
	s = s.replace( "é", "E" );
	s = s.replace( "è", "E" );
	s = s.replace( "à", "A" );
	s = s.replace( "ç", "C" );
	s = s.replace( "ù", "U" );
	s = s.replace( "ê", "e" );
	s = s.replace( "ë", "e" );
	s = s.replace( "ê", "e" );
	s = s.replace( "ï", "i" );
	s = s.replace( "â", "a" );
	s = s.replace( "ô", "o" );
	s = s.replace( "î", "i" );
				
	s = s.toUpperCase();
	return( s );
}

function Verif_Err( message )
{
	alert( message );
	return false;
}

function Verif_NonNul( obj, obj_type, message )
{
	if ( obj_type == "TEXTE" || obj_type == "MOT_DE_PASSE" )
	{
    	if( obj.value.length == 0 ) return( Verif_Err( message ) );
    	else return true;
	} else if ( obj_type == "SELECTION" ) {
		for( i=0; i < obj.length; i++ )
	   {
			if( obj.options[i].selected ) return true;
		}
      return( Verif_Err( message ) );	
	} else if ( obj_type == "UNI_RADIO" || obj_type == "UNI_CHECKBOX" ) {
		if( obj.checked ) return true;
		else return( Verif_Err( message ) );	
	} else if (obj_type == "RADIO" || obj_type == "CHECKBOX") {
		for (i=0; i < obj.length; i++)
	   {
			if( obj[i].checked ) return true;
		}
		return( Verif_Err( message ) );	
	}
}

function Verif_Entier( obj, message )
{
	
	if( obj.value.length == 0 ) return true;
	
	var decimal_format = ".";
	var check_char;
	check_char = obj.value.indexOf( decimal_format )
   if( check_char < 1 ) return Verif_Numerique( obj, message );
   else return( Verif_Err( message ) );
}

function Verif_Intervalle( obj, minimum, maximum, message )
{
 	if( obj.value.length == 0 ) return( Verif_Err( message ) );

   if( Verif_Numerique( obj, message ) ) 
   {
		val = eval( obj.value );
		if( minimum != null && val < minimum ) return( Verif_Err( message ) );
		if( maximum != null && val > maximum ) return( Verif_Err( message ) );
	} else {
		return false;
	}
   return true;
}

function Verif_Numerique( obj, message )
{
 	if( obj.value.length == 0 ) return true;

	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	check_char = start_format.indexOf( obj.value.charAt( 0 ) )
	if( check_char == 1 ) decimal = true;
	else if( check_char < 1 ) return( Verif_Err( message ) );

	for( var i = 1; i < obj.value.length; i++ )
	{
		check_char = number_format.indexOf( obj.value.charAt( i ) )
		if( check_char < 0 )
		{
			return( Verif_Err( message ) );
		} else if( check_char == 1 ) {
			if( decimal ) return( Verif_Err( message ) );
			else decimal = true;
		} else if( check_char == 0 ) {
			if( decimal || digits ) trailing_blank = true;
		} else if( trailing_blank ) {
			return( Verif_Err( message ) );
		} else digits = true;
	}	
   return true
}

function Verif_CodeChiffres( obj, longueur, message )
{
	var number_format = "0123456789";
	
	if( ! ( obj.value.length == longueur ) ) return( Verif_Err( message ) );

	for( var i = 1; i < obj.value.length; i++ )
	{
		if( number_format.indexOf( obj.value.charAt( i ) ) < 0 ) return( Verif_Err( message ) );
	}	
   return true
}

function Verif_NumTelephone( obj, message )
{
	var number_format = " ()0123456789";
	
	for( var i = 0; i < obj.value.length; i++ )
	{
		if( number_format.indexOf( obj.value.charAt( i ) ) < 0 ) return( Verif_Err( message ) );
	}	
   return true
}

function Verif_NomDeFichier( obj, message )
{
	var start_format = "abcdefghijklmnopqrstuvwxyz_";
	var suite_format = "0123456789abcdefghijklmnopqrstuvwxyz_";
	var fich;
	
 	if( obj.value.length == 0 ) return( Verif_Err( message ) );

	var fini = false;
	for( var i = obj.value.length - 4; i > 0 && ! fini; i-- )
	{
		if( obj.value.charAt( i ) == "/" || obj.value.charAt( i ) == "\\" ) fini = true;
	}

	fich = obj.value.slice( i + 2, obj.value.length - 4 );

	if( start_format.indexOf( fich.charAt( 0 ) ) < 0 ) return( Verif_Err( message ) );

	for( var i = 1; i < fich.length; i++ )
	{
		if( suite_format.indexOf( fich.charAt( i ) ) < 0 ) return( Verif_Err( message ) );
	}
		
   return true
}

function controle_other( champ_id, champ_lib, val_other, message )
{
   if( val_other != 0 && champ_lib.value.length == 0 && champ_id.value == val_other ) return( Verif_Err( message ) );
   return true
}

function Verif_Date( o_day, o_month, o_year, message )
{
	var maxDays;

	ret = Verif_Intervalle( o_day, 1, 31, message )
	if( ret ) ret = Verif_Intervalle( o_month, 1, 12, message )
	if( ret ) ret = Verif_Intervalle( o_year, 1900, 2030, message )
	
	if( ret )
	{
		month = parseInt( o_month.value );
		day = parseInt( o_day.value );
		year = parseInt( o_year.value );

  		switch( month )
  		{
   	case 2 : 
   		if ( ( year % 4 == 0 && year % 100 != 0 ) || ( year % 400 == 0 ) ) maxDays = 29; 
   		else maxDays = 28;
   		break;
      case 1 : 
      case 3 : 
      case 5 : 
      case 7 : 
      case 8 : 
      case 10 : 
      case 12 :
      	maxDays = 31;
      	break;
      default : 
      	maxDays = 30;
      	break;
		}

 		if( day > maxDays ) ret = Verif_Err( message );
 	}
	
	return( ret );
}
