
function fcheckfecha( form_object, input_object, object_value )
{
	if ( ! fcheckeurodate( object_value ) )
		return false;
	return true;
}

function fcheckeurodate( object_value ) {
	//Returns true if value is a eurodate format or is NULL
	//otherwise returns false

	if ( object_value.length == 0 )
		return true;

	//Returns true if value is a date in the dd/mm/yyyy format
	isplit = object_value.indexOf( '/' );

	if ( isplit == -1 ) 	{
		isplit = object_value.indexOf( '.' );
	}

	if ( isplit == -1 || isplit == object_value.length )
		return false;

	sDay = object_value.substring( 0, isplit );

	monthSplit = isplit + 1;

	isplit = object_value.indexOf( '/', monthSplit );

	if ( isplit == -1 ) {
		isplit = object_value.indexOf( '.', monthSplit );
	}

	if ( isplit == -1 || ( isplit + 1 ) == object_value.length )
		return false;

	sMonth = object_value.substring( ( sDay.length + 1 ), isplit );

	sYear = object_value.substring( isplit + 1 );

	if ( ! fcheckinteger( sMonth ) ) //check month
		return false;
	else if ( ! fcheckrange( sMonth, 1, 12 ) ) // check month
		return false;
	else if ( ! fcheckinteger( sYear ) ) //check year
		return false;
	else if ( ! fcheckrange( sYear, 100, 9999 ) ) //check year
		return false;
	else if ( ! fcheckinteger( sDay ) ) //check day
		return false;
	else if ( ! fcheckday( sYear, sMonth, sDay ) ) //check day
		return false;
	else
		return true;
}

function fcheckday( checkYear, checkMonth, checkDay )
{

	maxDay = 31;

	if ( checkMonth == 4 || checkMonth == 6 || checkMonth == 9 || checkMonth == 11 )
		maxDay = 30;
	else if ( checkMonth == 2 ) {
		if ( checkYear % 4 > 0 )
			maxDay =28;
		else if ( checkYear % 100 == 0 && checkYear % 400 > 0 )
			maxDay = 28;
		else
			maxDay = 29;
	}
	return fcheckrange( checkDay, 1, maxDay ); //check day
}


function fcheckinteger( object_value ) {
	//Returns true if value is a number or is NULL
	//otherwise returns false

	if ( object_value.length == 0 )
		return true;

	//Returns true if value is an integer defined as
	//   having an optional leading + or -.
	//   otherwise containing only the characters 0-9.
	var decimal_format = ".";
	var check_char;

	//The first character can be + -  blank or a digit.
	check_char = object_value.indexOf( decimal_format )
	//Was it a decimal?
	if ( check_char < 1 )
		return fchecknumber( object_value );
	else
		return false;
}


function fnumberrange(object_value, min_value, max_value)
{
	// check minimum
	if ( min_value != null ) {
		if ( object_value < min_value )
			return false;
	}

	// check maximum
	if ( max_value != null ) {
		if ( object_value > max_value )
			return false;
	}

	//All tests passed, so...
	return true;
}


function fchecknumber( object_value ) {
	//Returns true if value is a number or is NULL
	//otherwise returns false

	if ( object_value.length == 0 )
		return true;

	//Returns true if value is a number defined as
	//   having an optional leading + or -.
	//   having at most 1 decimal point.
	//   otherwise containing only the characters 0-9.
	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	//The first character can be + - .  blank or a digit.
	check_char = start_format.indexOf( object_value.charAt( 0 ) )
	//Was it a decimal?
	if ( check_char == 1 )
		decimal = true;
	else if ( check_char < 1 )
		return false;

	//Remaining characters can be only . or a digit, but only one decimal.
	for ( var i = 1; i < object_value.length; i++ )
	{
		check_char = number_format.indexOf( object_value.charAt( i ) )
		if ( check_char < 0 )
			return false;
		else if ( check_char == 1 ) {
			if ( decimal ) // Second decimal.
				return false;
			else
				decimal = true;
		}
		else if ( check_char == 0 ) {
			if ( decimal || digits )
				trailing_blank = true;
				// ignore leading blanks
		}
		else if ( trailing_blank )
			return false;
		else
			digits = true;
	}
	//All tests passed, so...
	return true
}

function fcheckrange( object_value, min_value, max_value ) {
	//if value is in range then return true else return false

	if ( object_value.length == 0 )
		return true;

	if ( ! fchecknumber( object_value ) )
		return false;
	else
		return ( fnumberrange( ( eval( object_value ) ), min_value, max_value ) );

	//All tests passed, so...
	return true;
}


