/* requires Conduit.Web.Common.js */

/* 
	Client validation function for valRequired CustomValidator
	Validation passes if date has a value
*/
function DatePicker_valRequired_ClientValidate(sender, args)
{
	var ddlDay = $(sender.id.replace('valRequired', 'ddlDay'));
	var ddlMonth = $(sender.id.replace('valRequired', 'ddlMonth'));
	var ddlYear = $(sender.id.replace('valRequired', 'ddlYear'));

	if( ddlDay && ddlMonth && ddlYear )
	{
		args.IsValid = ( (ddlDay.selectedIndex > 0) && (ddlMonth.selectedIndex > 0) && (ddlYear.selectedIndex > 0) );
	}
}

/* 
	Client validation function for valValue CustomValidator
	Validation passes if selection is incomplete, or date is valid
*/
function DatePicker_valValue_ClientValidate(sender, args)
{            
	var ddlDay = $(sender.id.replace('valValue', 'ddlDay'));	
	var ddlMonth = $(sender.id.replace('valValue', 'ddlMonth'));
	var ddlYear = $(sender.id.replace('valValue', 'ddlYear'));
    
	if( ddlDay && ddlMonth && ddlYear )
	{
		if( (ddlDay.selectedIndex > 0) && (ddlMonth.selectedIndex > 0) && (ddlYear.selectedIndex > 0) )
		{
			var day = ddlDay.selectedIndex;
			var month = ddlMonth.selectedIndex;
			var year = parseInt(ddlYear.value);
							
			// validate date
			switch(month)
			{
				case 1:
				case 3:
				case 5:
				case 7:
				case 8:
				case 10:
				case 12:
					// months with 31 days
					args.IsValid = true;
					break;
				case 4:
				case 6:
				case 9:
				case 11:
					// months with 30 days
					args.IsValid = ( day < 31 );
					break;
				default:
					// february
					args.IsValid = ( day < 29 || ( day == 29 && DatePicker_isLeapYear(year) ) );
					break;
			}
		}
		else
			args.IsValid = true; // date is incomplete
	}
}

/*
	Returns true if the provided year is a leap year
*/
function DatePicker_isLeapYear(year)
{
	return ( ( (year % 4 == 0) && (year % 100 != 0) ) || (year % 400 == 0) );
}