#if !defined(AFX_MESSAGEDLG_H__52636010_B264_485C_8B24_AAB00ABF59A8__INCLUDED_)
#define AFX_MESSAGEDLG_H__52636010_B264_485C_8B24_AAB00ABF59A8__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// MessageDlg.h : header file
//
#include "afxwin.h"
#include "resource.h"
#include "apl_gui.h"
#include "apl_api.h"

#include "ResizableDialog.h" 
#include "ListCtrl4MessageItems.h"

/////////////////////////////////////////////////////////////////////////////
// CMessageDlg dialog

#ifdef _UNICODE
void ConvertUCS2ToMsgSting(CStringW &wStr, bool bToUtf8);
void ConvertMultiByteToMsgSting(unsigned char *pBuf, int iBufSize, CStringW &wStr);
#else
void ConvertAnsi2ToUtf8Sting(CStringA &aStr);
#endif

class CMessageDlg : public CResizableDialog
{
// Construction
public:
	CStringArray m_files_in_list;
	
	
	CString m_sContent; // Здесь будет либо 1251 либо utf-8.  Если utf-8, то будет начинаться с BOM (EF BB BF)
	// В конфигурации Unicode будет не UCS2, а одновайтовая кодировка как двухбайтовая (вторые символы - нули)
	
	
	CStringArray m_sTextArray4Insert;  // текст для вставки при пересылке 
	bool m_bInsetQuote;  // Для ответа:  Если true? ,удут добавлены ">"
	CBitmap m_mesName, m_mesNameCopy, m_mesIcon;
	int m_index;
//	CImageList m_imageList;
	aplExtent m_items_in_list;
	aplExtent m_items;
	CString m_sMesStatus;
	
	CaplAPI *m_api;
	
	CaplHtmlView m_html_ctrl;

	CaplInstance* m_message;
	CaplInstance* m_main_message; // главное сообщение при групповой рассылке

	aplExtent m_messageCopies;
	CaplInstance* m_sender;
	CaplInstance* m_recipient;
	aplExtent m_recipients;
	aplExtent m_recipients_copy;
	
	aplExtent* m_possibleRecips;
	
	CaplInstance* m_curSelItem;

	CStringArray m_sArrayFiles4NewMessage;

	CString m_sFile4Delete;
	bool m_bHtmlMode;

	int m_iAction;

	HICON m_appIco; 

	bool m_bChanged; // Устанавливается в true при изменении списка получателей или объектоы
	bool m_bNoAction; // Запретить всякие действия (пересылка, ответ, редактирование и т.д.)
	bool m_bReadOnly; // Не редактировать текст

	CMessageDlg(CWnd* pParent = NULL);   // standard constructor

	void InitControls();
	
//	CString FillDate(CaplInstance* send_date, CaplInstance* rec_date= 0);
//	CString FillDate(tm* date);
	void ShowItemsInList(CaplAggr& items);
	void ShowItemsInList(aplExtent& items);

	void AddFiles(CStringArray &array_files);
	
	void RemoveDubliesFromRecepientsCopy();
	void FillRecepients();

	void DisableTextEditCtrl();

// Dialog Data
	//{{AFX_DATA(CMessageDlg)
	enum { IDD = IDD_MESSAGE };
	CStatic	m_toTextStatic;
	CaplButton	m_recSelBtn;
	CaplButton	m_loadFileBtn;
	CaplButton	m_viewFileBtn;
	CaplButton	m_addFileBtn;
	CaplButton	m_tPaste;
	CaplButton	m_tCut;
	CaplButton	m_tCopy;
	CComboBox	m_fontCB;
	CComboBox	m_fontSizeCB;
	CaplButton	m_fBulletedBtn;
	CaplButton	m_fOrderListBtn;
	CaplButton	m_fUnderLineBtn;
	CaplButton	m_fRightBtn;
	CaplButton	m_fLeftBtn;
	CaplButton	m_fJustifyBtn;
	CaplButton	m_fColorBtn;
	CaplButton	m_fItalicBtn;
	CaplButton	m_fCentefBtn;
	CaplButton	m_fBoldBtn;
	CComboBox	m_priorityCB;
	CStatic	m_btmCtrl;
	CListCtrl4MessageItems	m_itemsList;
	CaplButton	m_deleteItemBtn;
	CaplButton	m_addItemBtn;
	CaplButton	m_cancelBtn;
	CaplButton	m_SendBtn;
	CaplButton	m_deleteBtn;
	CaplButton	m_forwardBtn;
	CaplButton	m_replyBtn;
	CaplButton	m_draftBtn;
	CEdit m_subject;
	CEdit m_wndRecipient;
	CEdit m_wndSender;
	CaplRichEditCtrl m_content;
	CString	m_sSubject;
	CString	m_sContentFormat;
	CButton m_ordPriority;
	int		m_iPriority;
	int		m_iFontSize;
	int		m_iFont;
	CString	m_sRecipientsNick;
	CString	m_sRecipientsCopyNick;
	CString	m_sSender;
	//}}AFX_DATA


// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CMessageDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:

	// bNeedFullData  должны ли быть заполнены все данные ? true для jnghfdrb
	bool SaveMessage(bool bNeedFullData=false);

	// Generated message map functions
	//{{AFX_MSG(CMessageDlg)
	virtual BOOL OnInitDialog();
	virtual void OnCancel();
	afx_msg void OnDeleteButton();
	afx_msg void OnForwardButton();
	afx_msg void OnReplyButton();
	afx_msg void OnSaveButton();
	afx_msg void OnAddItem();
	afx_msg void OnDeleteItem();
	afx_msg void OnItemchangedMessageItems(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnFontBold();
	afx_msg void OnFontCenter();
	afx_msg void OnFontItalic();
	afx_msg void OnFontLeft();
	afx_msg void OnFontRight();
	afx_msg void OnFontUnderline();
	afx_msg void OnTextPaste();
	afx_msg void OnTextCut();
	afx_msg void OnTextCopy();
	afx_msg void OnFontBulleted();
	afx_msg void OnCloseupFontsList();
	afx_msg void OnCloseupFontSize();
	afx_msg void OnFontColor();
	afx_msg void OnSelchangeMessageRichedit(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSetfocusMessageRichedit(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnKillfocusMessageRichedit(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnAddFile();
	afx_msg void OnViewFile();
	afx_msg void OnLoadFile();
	afx_msg void OnMesRecipientsSelButton();
	afx_msg void OnMessageNameStatic();
	afx_msg void OnFontJustify();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedWordwrap();
	CButton m_wordwrap_btn;
	afx_msg void OnNMDblclkMessageItems(NMHDR *pNMHDR, LRESULT *pResult);
	CaplButton m_info_btn;
	afx_msg void OnBnClickedInfo();
	afx_msg void OnBnClickedSendButton();
	CaplButton m_OpenNoModalBtn;
	afx_msg void OnBnClickedOpenNomodal();
	CaplButton m_recCopySelBtn;
	afx_msg void OnBnClickedMesCopyRecipientsSelButton();
	CEdit m_wndRecipientCopy;
	CStatic m_copyTextStatic;
	CaplButton m_replyAllBtn;
	CaplButton m_fStrikeBtn;
	CStatic m_msg_ico_ctrl;

	afx_msg void OnBnClickedReplyAllButton();
	afx_msg void OnDestroy();
	afx_msg void OnNMRClickMessageItems(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
	afx_msg void OnBnClickedFontOrderlist();
	afx_msg void OnBnClickedFontStrike();
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MESSAGEDLG_H__52636010_B264_485C_8B24_AAB00ABF59A8__INCLUDED_)
