#ifndef DOCKETITEM_H
#define DOCKETITEM_H
/****************************************************************************
*
* $RCSfile: DocketItem.h $
* $Revision: 1.1 $
* $Date: 1997/08/12 15:32:21 $
* $Author: ssolie $
*
*****************************************************************************
*
* Copyright (c) 1997 Software Evolution.  All Rights Reserved.
*
*****************************************************************************
*
* DocketItem.h -- DocketItem class header file
*
* This file contains the definitions need to use DocketItem objects.
*/

#include <exec/types.h>


/*** Data types ***/
IMPORT struct DocketItemClass;
typedef struct DocketItemClass *DocketItem;


/*** Docket item types ***/
#define UNKNOWN				0
#define YEARLY				1
#define MONTHLY				2
#define WEEKLY				3
#define DAILY				4

/*** Months of the year ***/
#define JANUARY				1
#define FEBRUARY			2
#define MARCH				3
#define APRIL				4
#define MAY					5
#define JUNE				6
#define JULY				7
#define AUGUST				8
#define SEPTEMBER			9
#define OCTOBER				10
#define NOVEMBER			11
#define DECEMBER			12

/*** Days of the week ***/
#define SUNDAY				0
#define MONDAY				1
#define TUESDAY				2
#define WEDNESDAY			3
#define THURSDAY			4
#define FRIDAY				5
#define SATURDAY			6

/*** Minimums and maximums ***/
#define MIN_YEAR			1978
#define MAX_YEAR			2099
#define MIN_MONTH			1
#define MAX_MONTH			12
#define MIN_MDAY			1
#define MAX_MDAY			31
#define MIN_WDAY			0
#define MAX_WDAY			6
#define MIN_HOUR			0
#define MAX_HOUR			23
#define MIN_MINUTE			0
#define MAX_MINUTE			59
#define MIN_SECOND			0
#define MAX_SECOND			59
#define MAX_CMD_LEN			256

/*** Date and time constants ***/
#define MONTHS_PER_YEAR		12
#define DAYS_PER_WEEK		7
#define SECS_PER_DAY		86400


/*** Function prototypes ***/
DocketItem newYearlyDocketItem(UWORD month, UWORD mday, UWORD hour,
	UWORD min, UWORD sec, STRPTR cmd);
DocketItem newMonthlyDocketItem(UWORD mday, UWORD hour, UWORD min, UWORD sec,
	STRPTR cmd);
DocketItem newWeeklyDocketItem(UWORD wday, UWORD hour, UWORD min, UWORD sec,
	STRPTR cmd);
DocketItem newDailyDocketItem(UWORD hour, UWORD min, UWORD sec, STRPTR cmd);
VOID deleteDocketItem(DocketItem this);

BOOL executeDocketItemCommand(DocketItem this);

UWORD getDocketItemType(DocketItem this);
STRPTR getDocketItemCommand(DocketItem this);
WORD getDocketItemMonth(DocketItem this);
WORD getDocketItemMonthDay(DocketItem this);
WORD getDocketItemWeekDay(DocketItem this);
WORD getDocketItemHour(DocketItem this);
WORD getDocketItemMinute(DocketItem this);
WORD getDocketItemSecond(DocketItem this);
ULONG getDocketItemExpiration(DocketItem this);

BOOL setDocketItemType(DocketItem this, UWORD new_type);
BOOL setDocketItemCommand(DocketItem this, STRPTR new_cmd);
BOOL setDocketItemMonth(DocketItem this, UWORD new_month);
BOOL setDocketItemMonthDay(DocketItem this, UWORD new_mday);
BOOL setDocketItemWeekDay(DocketItem this, UWORD new_wday);
BOOL setDocketItemHour(DocketItem this, UWORD new_hour);
BOOL setDocketItemMinute(DocketItem this, UWORD new_min);
BOOL setDocketItemSecond(DocketItem this, UWORD new_sec);
BOOL setDocketItemExpiration(DocketItem this, ULONG now);


#endif
