/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is
 * Netscape Communications Corporation.
 * Portions created by the Initial Developer are Copyright (C) 1998
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */


#include "nsISupports.idl"
#include "nsIMsgIdentity.idl"
#include "nsIMsgCompFields.idl"
#include "nsIMsgSendListener.idl"

interface nsIMsgDBHdr;
typedef long MSG_ComposeType;

[scriptable, uuid(c7035852-7531-11d3-9a73-006008948010)]
interface nsIMsgCompType {
    const long New                      = 0;
    const long Reply                    = 1;
    const long ReplyAll                 = 2;
    const long ForwardAsAttachment      = 3;
    const long ForwardInline            = 4;
    const long NewsPost                 = 5;
    const long ReplyToSender            = 6;
    const long ReplyToGroup             = 7;
    const long ReplyToSenderAndGroup    = 8;
    const long Draft                    = 9;
    const long Template                 = 10;
    const long MailToUrl                = 11;
    const long ReplyWithTemplate        = 12;
    const long ReplyToList              = 13;

    /** 
     * Will resend the original message keeping the Subject and the body the
     * same, and will set the Reply-To: header to the sender of the original
     * message.  This gets the redirector "out of the loop" because replies
     * to the message will go to the original sender.  This is not the same
     * as the Resent mechanism described in section 3.6.6 of RFC 2822, and
     * so therefore does not use Resent-* headers.
     */
    const long Redirect                 = 14;
};


typedef long MSG_ComposeFormat;

[scriptable, uuid(a28325e8-7531-11d3-8f1c-006008948010)]
interface nsIMsgCompFormat {
    const long Default                  = 0;
    const long HTML                     = 1;
    const long PlainText                = 2;
    const long OppositeOfDefault        = 3;
};


[scriptable, uuid(930895f2-d610-43f4-9e3c-25e1d1fe4143)]
interface nsIMsgComposeParams : nsISupports {
  attribute MSG_ComposeType       type;
  attribute MSG_ComposeFormat     format;
  attribute string                originalMsgURI;
  attribute nsIMsgIdentity        identity;

  attribute nsIMsgCompFields      composeFields;
  attribute boolean               bodyIsLink;

  attribute nsIMsgSendListener	  sendListener;
  attribute string                smtpPassword;
  attribute nsIMsgDBHdr           origMsgHdr;

  /**
   * HTML-formatted content to quote in the body of the message.
   * Set this to get different content than what would normally
   * appear in the body, e.g. the original message body in a reply.
   */
  attribute AUTF8String           htmlToQuote;
};
