/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * The contents of this file are subject to the Netscape Public License
 * Version 1.0 (the "NPL"); you may not use this file except in
 * compliance with the NPL.  You may obtain a copy of the NPL at
 * http://www.mozilla.org/NPL/
 *
 * Software distributed under the NPL is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
 * for the specific language governing rights and limitations under the
 * NPL.
 *
 * The Initial Developer of this code under the NPL is Netscape
 * Communications Corporation.  Portions created by Netscape are
 * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
 * Reserved.
 */
 
#include "nsISupports.idl"

interface nsIAddrDatabase;

[ptr] native nsVoidArray(nsVoidArray);

%{C++
#include "nsVoidArray.h"
%}

[scriptable, uuid(FA5C977F-04C8-11d3-A2EB-001083003D0C)]
interface nsIAbCard : nsISupports {

	attribute wstring FirstName;
	attribute wstring LastName;
	attribute wstring DisplayName;
	attribute wstring NickName;
	attribute wstring PrimaryEmail;
	attribute wstring SecondEmail;
	attribute wstring WorkPhone;
	attribute wstring HomePhone;
	attribute wstring FaxNumber;
	attribute wstring PagerNumber;
	attribute wstring CellularNumber;
	attribute wstring HomeAddress;
	attribute wstring HomeAddress2;
	attribute wstring HomeCity;
	attribute wstring HomeState;
	attribute wstring HomeZipCode;
	attribute wstring HomeCountry;
	attribute wstring WorkAddress;
	attribute wstring WorkAddress2;
	attribute wstring WorkCity;
	attribute wstring WorkState;
	attribute wstring WorkZipCode;
	attribute wstring WorkCountry;
	attribute wstring JobTitle;
	attribute wstring Department;
	attribute wstring Company;
	attribute wstring WebPage1;
	attribute wstring WebPage2;
	attribute wstring BirthYear;
	attribute wstring BirthMonth;
	attribute wstring BirthDay;
	attribute wstring Custom1;
	attribute wstring Custom2;
	attribute wstring Custom3;
	attribute wstring Custom4;
	attribute wstring Notes;
	attribute unsigned long LastModifiedDate;

	attribute boolean SendPlainText;

    attribute unsigned long DbTableID;
    attribute unsigned long DbRowID;

	void GetCardValue(in string attrname, out wstring value);
	void SetCardValue(in string attrname, in wstring value);
	void SetAbDatabase(in nsIAddrDatabase database);

	[noscript] void GetAnonymousStrAttrubutesList(out nsVoidArray attrlist);
	[noscript] void GetAnonymousStrValuesList(out nsVoidArray valuelist);
	[noscript] void GetAnonymousIntAttrubutesList(out nsVoidArray attrlist);
	[noscript] void GetAnonymousIntValuesList(out nsVoidArray valuelist);
	[noscript] void GetAnonymousBoolAttrubutesList(out nsVoidArray attrlist);
	[noscript] void GetAnonymousBoolValuesList(out nsVoidArray valuelist);

	void SetAnonymousStringAttribute(in string attrname, in string value);
	void SetAnonymousIntAttribute(in string attrname, in unsigned long value);
	void SetAnonymousBoolAttribute(in string attrname, in boolean value);
	void AddAnonymousAttributesToDB();
	void EditAnonymousAttributesInDB();

	void GetCardURI(out string uri);
	void AddCardToDatabase(in string uri);
	void EditCardToDatabase(in string uri);
	void CopyCard(in nsIAbCard srcCard);
	void GetCollationKey(in wstring str, out wstring key);
};
