﻿function DatePartValidatorEvaluateIsValid(val)
{
	//Remember JavaScript months are zero-based. Silly things.
	var dateTimeNow = new Date(val.yearnow,(val.monthnow - 1),val.daynow);

	var day = parseInt(document.getElementById(val.daycontrol).value);
	var month = parseInt(document.getElementById(val.monthcontrol).value) - 1;
	var year = parseInt(document.getElementById(val.yearcontrol).value);

	var dateOfBirth = new Date(year, month, day);

	if (isNaN(dateOfBirth.getTime())) return false;

	//validate age
	if (parseInt(val.agetocompare) > 0)
	{
		//Difference in years
		var age = dateTimeNow.getYear() - dateOfBirth.getYear();

		//Find out when birthday is this year
		dateOfBirth = dateOfBirth.setYear(dateOfBirth.getYear() + age);

		//If birthday is later in the year, then subtract one from years
		if (dateTimeNow < dateOfBirth) age--;

		switch (val.operator)
		{
			case 'equal':
				return age == val.agetocompare;
			case 'greaterthan':
				return age > val.agetocompare;
			case 'greaterthanequal':
				return age >= val.agetocompare;
			case 'lessthan':
				return age < val.agetocompare;
			case 'lessthanequal':
				return age <= val.agetocompare;
			case 'notequal':
				return age != val.agetocompare;
		}
	}

	return true;
}
