/*
 *	File:					CheckDateTime.h
 *	Description:	Functions to handle and check date, time and calcfields.
 *
 *	(C) 1993, Ketil Hunn
 *
 */

#ifndef CHECKDATETIME_H
#define CHECKDATETIME_H

#define PREFIX_EXACT	0
#define PREFIX_BEFORE	1
#define PREFIX_AFTER	2

#include <time.h>
#include <string.h>
#include <dos.h>
#include "MakeDate().h"
#include "MakeTime().h"

int CheckPrefixDate(struct EventNode *node)
{
	long eventdate=MakeDate(node);

	if(node->day==0 & node->month==0 & node->year==0)
		return TRUE;

	switch(node->whendate)
	{
		case PREFIX_EXACT:
			return (datenow==eventdate);
			break;

		case PREFIX_BEFORE:
			return (datenow<eventdate);
			break;

		case PREFIX_AFTER:
			return (datenow>eventdate);
			break;
	}
	return FALSE;
}

int CheckDate(struct EventNode *node)
{
	if(CheckPrefixDate(node))
	{
		if(node->whendate==PREFIX_EXACT)
			return TRUE;
		else
		{
			int count=CountDays(node);

			if(node->repeat==0)
			{
				if(count<=node->days | node->days==0)
					return TRUE;
			}
			else
			{
				if(count%node->repeat==0)
					if(count<=node->days | node->days==0)
						return TRUE;
			}
		}
	}
	return FALSE;
}

int CheckPrefixTime(struct EventNode *node)
{
	long eventtime=MakeTime(node);

	if(node->hour==NONE & node->minutes==NONE)
		return TRUE;

	switch(node->whentime)
	{
		case PREFIX_EXACT:
			return (timenow==eventtime);
			break;

		case PREFIX_BEFORE:
			return (timenow<eventtime);
			break;

		case PREFIX_AFTER:
			return (timenow>eventtime);
			break;
	}
	return FALSE;
}

int CheckDateTime(struct EventNode *node)
{
	return (CheckDate(node) & CheckPrefixTime(node));
}
#endif
