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

interface nsIArray;
interface nsIDOMContact;

[scriptable, uuid(eba48030-89e8-11e1-b0c4-0800200c9a66)]
interface nsIDOMContactAddress : nsISupports
{
  attribute DOMString type;
  attribute DOMString streetAddress;
  attribute DOMString locality;
  attribute DOMString region;
  attribute DOMString postalCode;
  attribute DOMString countryName;
};

[scriptable, uuid(82601b20-89e8-11e1-b0c4-0800200c9a66)]
interface nsIDOMContactTelephone : nsISupports
{
  attribute DOMString type;
  attribute DOMString number;
};

[scriptable, uuid(94811520-c11f-11e1-afa7-0800200c9a66)]
interface nsIDOMContactEmail : nsISupports
{
  attribute DOMString type;
  attribute DOMString address;
};

[scriptable, uuid(e31daea0-0cb6-11e1-be50-0800200c9a66)]
interface nsIDOMContactFindOptions : nsISupports
{
  attribute DOMString filterValue;  // e.g. "Tom"
  attribute DOMString filterOp;     // e.g. "contains"
  attribute jsval filterBy;         // DOMString[], e.g. ["givenName", "nickname"]
  attribute DOMString sortBy;       // "givenName" or "familyName"
  attribute DOMString sortOrder;    // e.g. "descending"
  attribute unsigned long filterLimit;
};

[scriptable, uuid(f5181640-89e8-11e1-b0c4-0800200c9a66)]
interface nsIDOMContactProperties : nsISupports
{
  attribute jsval         name;               // DOMString[]
  attribute jsval         honorificPrefix;    // DOMString[]
  attribute jsval         givenName;          // DOMString[]
  attribute jsval         additionalName;     // DOMString[]
  attribute jsval         familyName;         // DOMString[]
  attribute jsval         honorificSuffix;    // DOMString[]
  attribute jsval         nickname;           // DOMString[]
  attribute jsval         email;              // ContactEmail[]
  attribute jsval         photo;              // DOMString[]
  attribute jsval         url;                // DOMString[]
  attribute jsval         category;           // DOMString[]
  attribute jsval         adr;                // ContactAddress[]
  attribute jsval         tel;                // ContactTelephone[]
  attribute jsval         org;                // DOMString[]
  attribute jsval         jobTitle;           // DOMString[]
  attribute jsval         bday;               // Date
  attribute jsval         note;               // DOMString[]
  attribute jsval         impp;               // DOMString[]
  attribute jsval         anniversary;        // Date
  attribute jsval         sex;                // DOMString
  attribute jsval         genderIdentity;     // DOMString
};
