/* -*- Mode: C++; 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 "nsISupports.idl"

interface mozIDOMWindowProxy;

[scriptable, uuid(13388a28-1b0b-4218-a31b-588f7a4ec26c)]
interface nsIDatePickerShownCallback : nsISupports
{
 /**
  * Callback called when the user selects cancel in the date picker
  * This callback can not be called after done() is called.
  */
 void cancel();

 /**
  * Callback called when the user has finished selecting the date
  *
  * @param  date  The new selected date value following the format "YYYY-MM-DD"
  */
  void done(in AString date);
};

[scriptable, uuid(7becfc64-966b-4d53-87d2-9161f36bd3b3)]
interface nsIDatePicker : nsISupports
{
 /**
  * Initialize the date picker widget. The date picker will not be shown until
  * open() is called.
  * If the initialDate parameter does not follow the format "YYYY-MM-DD" then
  * the behavior will be unspecified.
  *
  * @param      parent       nsIDOMWindow parent. This dialog will be dependent
  *                          on this parent. parent may be null.
  * @param      title        The title for the date picker widget.
  * @param      initialDate  The date to show when the widget is opened. The
  *                          parameter has to follow the format "YYYY-MM-DD"
  */
  void init(in mozIDOMWindowProxy parent, in AString title, in AString initialDate);

 /**
  * Opens the date dialog asynchrounously.
  * The results are provided via the callback object.
  */
  void open(in nsIDatePickerShownCallback callback);
};