// Methods in this file uses datejs.

$j.ttCurrentDate = function()
{
    return(Date.today());
};

/*
 * Returns a javascript Date object represented by pass string. Supports the following format:
 * "ddMMMyy", "dMMMyy", "ddMMyy", "dd/MM/yy", "d/MM/yy", "dd/MM", "ddMM", "ddMMM", "dMMM", "d/MM"
 */
function parseDate(inDateString)
{
	var dateToParse = $j.trim(inDateString);
	
	var parsedDate = Date.parseExact(dateToParse, $j.ttDateUtils.formatsWithYear);

	if (parsedDate == null)
	{
		parsedDate = Date.parseExact(dateToParse, $j.ttDateUtils.formatsWithNoYear);
			
		if (parsedDate != null && $j.ttCurrentDate().isAfter(parsedDate))
			parsedDate.add(1).year();
	}
	
	return(parsedDate);
}

/*
 * Determine whether the inDateString is inclusively between the inStartDateString and inEndDateString.
 * Returns false if the inDateString is null or an invalid date.
 */
function inDateInRange(inDateString, inStartDateString, inEndDateString)
{
	if (!inDateString)
		return(false);

	var compareDate = parseDate(inDateString);
	if (!compareDate)
		return(false);

	var startDate = inStartDateString ? parseDate(inStartDateString) : null;
	var endDate = inEndDateString ? parseDate(inEndDateString) : null;

	if (!startDate && !endDate)
		return(true);

	if (startDate && endDate)
		return(compareDate.between(startDate, endDate));

	if (startDate)
		return(compareDate.compareTo(startDate) != -1);

	return(compareDate.compareTo(endDate) != 1);
}
