function check_date_format(static_str_date)
{
	var regexp_date = new RegExp("^(19|20)[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$");

	if( static_str_date == '' )
		return false;
	else if( !regexp_date.test(static_str_date) )
		return false;
	else
	{
		var arr_date = static_str_date.split('-');

		if( arr_date.length != 3 )
			return false;

		var uint_year = parseInt(arr_date[0], 10);
		var uint_month = parseInt(arr_date[1], 10);
		var uint_day = parseInt(arr_date[2], 10);

		var bool_invalid_date = false;

		switch( uint_month )
		{
			case 2:
				if( !( uint_year % 4000 ) )
				{
					if( uint_day > 28 )
						bool_invalid_date = true;
				}
				else if( !( uint_year % 400 ) )
				{
					if( uint_day > 29 )
						bool_invalid_date = true;
				}
				else if( !( uint_year % 100 ) )
				{
					if( uint_day > 28 )
						bool_invalid_date = true;
				}
				else if( !( uint_year % 4 ) )
				{
					if( uint_day > 29 )
						bool_invalid_date = true;
				}
				else if( uint_day > 28 )
					bool_invalid_date = true;

				break;

			case 4:
			case 6:
			case 9:
			case 11:
				if( uint_day > 30 )
					bool_invalid_date = true;
		}

		if( bool_invalid_date )
			return false;
	}

	return true;
}