/* 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 "nsISupports.idl"

interface calIIcalComponent;
interface calITimezoneProvider;

[scriptable, uuid(D79161E7-0DB9-427d-A0C3-27E0DB3B030F)]
interface calITimezone : nsISupports
{
    /**
     * The timezone provider this timezone belongs to, if any.
     */
    readonly attribute calITimezoneProvider provider;

    /**
     * VTIMEZONE ical component, null if floating or UTC.
     */
    readonly attribute calIIcalComponent icalComponent;

    /**
     * The TZID of this timezone.
     */
    readonly attribute AUTF8String tzid;

    /**
     * Whether this timezone is the "floating" timezone.
     */
    readonly attribute boolean isFloating;

    /**
     * Whether this is the "UTC" timezone.
     */
    readonly attribute boolean isUTC;

    /**
     * Latitude of timezone or void/null if unknown.
     */
    readonly attribute AUTF8String latitude;

    /**
     * Longitude of timezone or void/null if unknown.
     */
    readonly attribute AUTF8String longitude;

    /**
     * Localized name of the timezone; falls back to TZID if unknown.
     */
    readonly attribute AString displayName;

    /**
     * For debugging purposes.
     *
     * @return "UTC", "floating" or component's ical representation
     */
    AUTF8String toString();
};

