/* -*- Mode: idl; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "calIItemBase.idl"

interface calIDuration;

//
// calIEvent
//
// An interface for an event (analogous to a VEVENT)
//

[scriptable, uuid(5ab15c1c-e295-4d8e-a9a9-ba5bc848b59a)]
interface calIEvent : calIItemBase
{
  // these attributes are marked readonly, as the calIDates are owned
  // by the event; however, the actual calIDate objects are not read
  // only and are intended to be manipulated to adjust dates.
  
  /**
   * The (inclusive) start of the event.
   */
  attribute calIDateTime startDate;

  /**
   * The (non-inclusive) end of the event.
   * Note that for all-day events, non-inclusive means that this will be set
   * to the day after the last day of the event.
   * If startDate.isDate is set, endDate.isDate must also be set.
   */
  attribute calIDateTime endDate;

  /**
   * The duration of the event.
   * equal to endDate - startDate
   */
  readonly attribute calIDuration duration;

};
