/* $Id$ */
#ifndef INCLUDE_MODES_H
#define INCLUDE_MODES_H

/* common return values of read.c */
#define DONOTHING       0       /* Read menu command return states */
#define FULLUPDATE      1       /* Entire screen was destroyed in this oper */
#define PARTUPDATE      2       /* Only the top three lines were destroyed */
#define DOQUIT          3       /* Exit read menu was executed */
#define NEWDIRECT       4       /* Directory has changed, re-read files */
#define READ_NEXT       5       /* Direct read next file */
#define READ_PREV       6       /* Direct read prev file */
#define DIRCHANGED      8       /* Index file was changed */
#define READ_REDRAW     9
#define PART_REDRAW     10
#define TITLE_REDRAW    11
#define READ_SKIP       12      
#define HEADERS_RELOAD  13      

// values returned by pager
#define RET_DOREPLY	    (999)
#define RET_DORECOMMEND	    (998)
#define RET_DOQUERYINFO	    (997)
#define RET_DOSYSOPEDIT	    (996)
#define RET_DOCHESSREPLAY   (995)
#define RET_DOBBSLUA	    (994)
#define RET_COPY2TMP		(993)

/* user �ާ@���A�P�Ҧ� */
#define IDLE            0
#define MMENU           1       /* menu mode */
#define ADMIN           2
#define MAIL            3
#define TMENU           4
#define UMENU           5
#define XMENU           6
#define CLASS           7
#define PMENU           8
#define NMENU           9
#define PSALE           10
#define POSTING         11      /* boards & class */
#define READBRD         12
#define READING         13
#define READNEW         14
#define SELECT          15
#define RMAIL           16      /* mail menu */
#define SMAIL           17
#define CHATING         18      /* talk menu */
#define XMODE           19
#define FRIEND          20
#define LAUSERS         21
#define LUSERS          22
#define MONITOR         23
#define PAGE            24
#define TQUERY          25
#define TALK            26
#define EDITPLAN        27      /* user menu */
#define EDITSIG         28
#define VOTING          29
#define XINFO           30
#define MSYSOP          31
#define WWW             32
#define BIG2            33
#define REPLY           34
#define HIT             35
#define DBACK           36
#define NOTE            37
#define EDITING         38
#define MAILALL         39
#define MJ              40
#define P_FRIEND        41
#define LOGIN           42      /* main menu */
#define DICT            43
#define BRIDGE          44
#define ARCHIE          45
#define GOPHER          46
#define NEWS            47
#define LOVE            48
#define EDITEXP         49
#define IPREG           50
#define NADM            51
#define DRINK           52
#define CAL             53
#define PROVERB         54
#define ANNOUNCE        55      /* announce */
#define EDNOTE          56 
#define CDICT           57
#define LOBJ            58
#define OSONG           59
#define CHICKEN         60
#define TICKET 	    	61
#define GUESSNUM        62
#define AMUSE           63
#define OTHELLO		64
#define DICE            65
#define VICE            66
#define BBCALL          67
#define VIOLATELAW      68
#define M_FIVE          69
#define JACK_CARD       70
#define TENHALF         71
#define CARD_99         72
#define RAIL_WAY        73
#define SREG            74
#define CHC             75      /* Chinese chess */
#define DARK            76      /* ����t�� */
#define TMPJACK         77
#define JCEE		78
#define REEDIT		79
#define BLOGGING        80
#define CHESSWATCHING	81
#define UMODE_GO        82
#define DEBUGSLEEPING	83
#define UMODE_CONN6	84
#define REVERSI		85
#define UMODE_BBSLUA	86
#define UMODE_ASCIIMOVIE 87
#define MODE_MAX        88      /* �Ҧ���L���ʺA���b�����e */

/* menu.c �����Ҧ� */
#define QUIT    0x666           /* Return value to abort recursive functions */
#define XEASY   0x333           /* Return value to un-redraw screen */

/* for currmode */
#define MODE_STARTED     0x0001    /* �O�_�w�g�i�J�t�� */
#define MODE_POST        0x0002    /* �O�_�i�H�b currboard �o���峹 */
#define MODE_POSTCHECKED 0x0004    /* �O�_�w�ˬd�b currboard �o���峹���v�� */
#define MODE_BOARD       0x0008    /* �O�_�i�H�b currboard �R���Bmark�峹 */
#define MODE_GROUPOP     0x0010    /* �O�_���p�ժ� (�i�H�b MENU �}�O) */
#define MODE_DIGEST      0x0020    /* �O�_�� digest mode */
#define MODE_SELECT      0x0080    /* �j�M�ϥΪ̼��D */
#define MODE_DIRTY       0x0100    /* �O�_��ʹL userflag */

/* for curredit */
#define EDIT_MAIL       1       /* �ثe�O mail/board ? */
#define EDIT_LIST       2       /* �O�_�� mail list ? */
#define EDIT_BOTH       4       /* both reply to author/board ? */
#define EDIT_ITEM       8       /* ITEM ? */

/* read.c �����Ҧ� */
#define TAG_NIN         0       /* ���ݩ� TagList */
#define TAG_TOGGLE      1       /* ���� Taglist */
#define TAG_INSERT      2       /* �[�J TagList */


#define RS_FORWARD      0x01    /* backward */
#define RS_TITLE        0x02    /* author/title */
#define RS_KEYWORD      0x04
#define RS_FIRST        0x08    /* find first article */
#define RS_CURRENT      0x10    /* match current read article */
#define RS_MARK         0x20    /* search the first article */
#define RS_AUTHOR       0x40    /* search author's article */
#define RS_NEWPOST	0x80	/* search new posts */
#define RS_KEYWORD_EXCLUDE	0x100	/* exclude keyword */
#define RS_RECOMMEND	0x200	/* search by recommends */
#define RS_MONEY	0x400	/* search by recommends */

#define CURSOR_FIRST    (RS_TITLE | RS_FIRST)
#define CURSOR_NEXT     (RS_TITLE | RS_FORWARD)
#define CURSOR_PREV     (RS_TITLE)
#define RELATE_FIRST    (RS_TITLE | RS_FIRST | RS_CURRENT)
#define RELATE_NEXT     (RS_TITLE | RS_FORWARD | RS_CURRENT)
#define RELATE_PREV     (RS_TITLE | RS_CURRENT)
#define NEWPOST_NEXT    (RS_NEWPOST | RS_FORWARD)
#define NEWPOST_PREV    (RS_NEWPOST)
#define AUTHOR_NEXT     (RS_AUTHOR | RS_FORWARD)
#define AUTHOR_PREV     (RS_AUTHOR)

/* DBCS aware modes */
enum _DBCS_STATUS {
    DBCS_ASCII,
    DBCS_LEADING,
    DBCS_TRAILING,
};

#define SIG_PK          0
#define SIG_TALK        1
#define SIG_BROADCAST   2
#define SIG_GOMO        3
#define SIG_CHC         4
#define SIG_DARK        5
#define SIG_GO          6
#define SIG_REVERSI	7
#define SIG_CONN6	8

/* talk.c �����Ҧ� */
#define WATERBALL_GENERAL 0
#define WATERBALL_PREEDIT 1
#define WATERBALL_ALOHA   2
#define WATERBALL_SYSOP   3
#define WATERBALL_CONFIRM 4
#ifdef PLAY_ANGEL
#define WATERBALL_ANGEL   5
#define WATERBALL_ANSWER  6
#define WATERBALL_CONFIRM_ANGEL 7
#define WATERBALL_CONFIRM_ANSWER 8
#endif

/* chat.c, talk.c: pager modes */
#define PAGER_OFF	(0)
#define PAGER_ON	(1)
#define PAGER_DISABLE	(2)
#define PAGER_ANTIWB	(3)
#define PAGER_FRIENDONLY	(4)

#define PAGER_MODES 	(5)

#endif