zTimeFrane
=============================================================================

    This is a simple class for direct access to ProBoard's TimeFrame
    data structure. Admittedly, this convenient data type is quite
    confusing, especially for novice programmers who are often at a
    loss as to how to manipulate it. The lack of information in the SDK
    documentation certainly does not help. That is why zTimeFrame came
    into existence: to alleviate a specific problem. It actually proved
    quite useful in several applications developed by other programmers.

    The TimeFrame data type is actually a simple two-dimensional array.
    The rows are the day of the week, and the columns are 30 minute
    segments for the 24 hours in each day. Of course, you will not see
    48 bytes because TimeFrame uses only single bits for each half-hour
    slot (48 / 8 = 6 bytes total). For example, from 0:00 to 0:30, bit 1
    of byte 1, from 0:30 to 1:00 - bit 2 of byte 1, and so on. Days
    start with Monday (European convention) and go up to Sunday = 6.

    For all functions, the tm structure needs to be filled by the caller
    with the desired time and day of week information. Note that the
    routines expect the tm format (i.e. the day of the week starts at
    Sunday = 0). The only fields used by the functions from this structure
    are tm_wday, tm_hour, and tm_min. An easy way to calculate the day
    of the week is to fill the rest of the data fields in the tm structure
    and then call mktime(). In case you did not know, mktime() will actually
    calculate the day of the week and adjust all necessary fields!

    Note that all the routines in the class are declared as static which
    means that you can use them without an instance of the class. To access
    the methods, use zTimeFrame::<method> construct.


	ZTIMEFRAME::STATUS
	-------------------------------------------------------------------------

        Synopsis  Check the status of a requested slot

        Syntax    Boolean Status(const TimeFrame frame, const struct tm *t);

        Remarks   This function checks the status for the requested 30 minute
                  time slot. The caller is expected to have filled the tm
                  structure prior to the function call. Note that the tm
                  data only specifies a particular time instance. The method
                  will calculate the correct time period which this instance
                  happens to be in. That means that 10:45 is a valid time
                  specified in the structure, the routine will figure out
                  which slot to update.

        Return    True if the slot is enabled; False otherwise


	ZTIMEFRAME::ENABLE
	-------------------------------------------------------------------------

        Synopsis  Enables a specific time slot

        Syntax    void Enable(TimeFrame frame, const struct tm *tp);

        Remarks   This method enables the 30-minute time slot which contains
                  the time specified by the tm structure pointed by 'tp' in
                  the 'frame' time frame.

        Return    Nothing


	ZTIMEFRAME::DISABLE
	-------------------------------------------------------------------------

        Synopsis  Disables a specific time slot

        Syntax    void Disable(TimeFrame frame, const struct tm *tp);

        Remarks   This routine disables the time slot which contains the
                  time in the tm structure pointed to by the 'tp' argument.
                  The 'frame' parameter is actually a pointer, so the frame
                  object can be modified.

        Return    Nothing


	ZTIMEFRAME::TOGGLE
	-------------------------------------------------------------------------

        Synopsis  Toggle the status of a specific time slot

        Syntax    void Toggle(TimeFrame frame, const struct tm *tp);

        Remarks   This routine toggles the status of the time slot which
                  contains the time instance specified by the tm structure.
                  If the slot was ON, it will be turned OFF. If it was OFF
                  to begin with, it will be turned ON.

        Return    Nothing


