#include <exec/types.h>

#define MAXLINES 100
#define LINE_LENGTH 75
#define WRAP_MAX 35

#define RAWARROW 501
#define UPARROW         300
#define SHIFTUPARROW    301
#define DOWNARROW       400
#define SHIFTDOWNARROW  401
#define LEFTARROW       500
#define SHIFTLEFTARROW  501
#define RIGHTARROW      600
#define SHIFTRIGHTARROW 601
#define HISTORY 999
#define MAXHIST 20
#define MAXFLAGFILES 150

/********************** the defines.h file *****************/
#define SUCCESS 0
#define PRIVATE 10
#define FAILURE 1
#define NOTALLOWED 1
#define ABORT    -2
#define GadgetList1 Gadget1

//#ifndef FOREVER
#define FOREVER for(;;)
//#endif  FOREVER

#undef TRUE
#undef FALSE

#define FALSE 0
#define TRUE  1

#define SYSOP_LOGON   1
#define LOCAL_LOGON   2
#define REMOTE_LOGON  3
#define RE_LOGON      4
#define SUSPEND_LOGON 5

#define OFFLINETOOLS	100

#define STANDARD_LOGOFF	1
#define SLEEP_LOGOFF	2
#define OVERTIME_LOGOFF	3
#define CARRIER_LOGOFF	4
#define ILLEGAL_LOGOFF	5

#define WAIT     600
#define NOWAIT   FALSE
#define YES      TRUE
#define NO       FALSE
#define ECHO     TRUE
#define NOECHO   FALSE
#define CSI      0x9B

#define IOFLAG_FIL_IN	0
#define IOFLAG_KBD_IN	1
#define IOFLAG_SER_IN	2
#define IOFLAG_FIL_OUT	3
#define IOFLAG_PRT_OUT	4
#define IOFLAG_SCR_OUT	5
#define IOFLAG_SER_OUT	6

#define TIMEOUT      -9  // -3
#define NO_CARRIER   -10 // -4
#define GOODBYE      -2  // -7

#define BaseOff      0
#define BaseBoth     1
#define BaseDownload 2
#define BaseUpload   3

#define Public 1
#define Sysop -1
#define UnVal -2
#define BadArchive -3

#define A 1
#define B 2
#define C 3

#define Normal_Send_Receive   1
#define Ano_Send              2
#define Ano_Receive           3
#define Ano_Send_Receive      4

#define SCAN                  1
#define VERBOSE               2
#define QUICK                 3
#define NORMAL                4


#define  rp          window->RastPort
#define  RN          0L
#define raster abortwindow->RPort
#define drw icon->RPort

#define PRIVATE_MSG     0
#define PUBLIC_MSG      1
#define PASSWORD_MSG    2
#define MUSTREAD_MSG    3

#define NO_SECRET       0
#define SECRET          1

#define FEEDBACK        0
#define NORMAL_MESSAGE  1
#define REPLY           2
#define REPLYPRIVATE    10
#define PERSONAL      1
#define PRIORITY      5

#define GOT           0
#define WROTE         1
#define BOTH          2

#define OK_FILE     1
#define INCOMPLETE  2
#define ABORTED     3

#define UP 1
#define DOWN 2
#define LEFT 3
#define RIGT 4
#define S_UP 5
#define S_DOWN 6
#define S_LEFT 7
#define S_RIGT 8


// long UserBitsA 32 bits of toggle info for the user

#define B_EXPERT         (1<<0)  // Expert Mode On/Off
#define B_ANSI           (1<<1)  // Ansi        On/Off
#define B_MSGSTATS       (1<<2)  // Msg Info    On/Off
#define B_TIMEBAR        (1<<3)  // Time Bar    On/Off
#define B_BLANKLINE      (1<<4)  // Not USed?
#define B_REJOIN         (1<<5)  // Last in Msg or File Area (On=File Area)
#define B_MSGEDITOR      (1<<6)  // Internal / Full Screen Editors
#define B_CHECK_EMAIL    (1<<7)  // Auot Email Check On/oFf
#define B_FSCAN          (1<<8)  // File Scan direction
#define B_NEWUSERF       (1<<9)  // 0=Normal User, 1=NEW
#define B_SCRCLEAR       (1<<10) // 0=No , 1=Yes Screen Clear
#define B_PRESERVE       (1<<11) // 0=OK to delete, 1=Preserve
#define B_KEEPFLAGFILES  (1<<12) // Keep FlaggedFiles after logoff
#define B_ANNOUNCEUSERS  (1<<13) // Whether BBS Annouces other user's login/logoff
#define B_LSCRCLEAR      (1<<14) // File Listing Clear Screen
#define B_SEX            (1<<15) // Sex of User, 0=Male, 1=FeMale


// long UserBitsB 32 bits of toggle info for the user

#define B2_LP_ViewWelcome (1<<0) //0 = On,  1 = Off
#define B2_LP_ViewWho     (1<<1) //0 = On,  1 = Off
#define B2_LP_AutoInvis   (1<<2) //0 = Off, 1 = On
#define B2_LP_AreaDisplay (1<<3) //0 = On,  1 = Off

// Catalog Bit Flags

#define C_ACTIVE   (1<<0) // Active File Yes/No
#define C_FREE     (1<<1) // Free File   Yes/No
#define C_EXTDESC  (1<<2) // Extended Description Yes/No
#define C_DLOCK    (1<<3) // Deletion Protection (On=Protected)
#define C_ELOCK    (1<<4) // Editable Protection (On=Protected)
#define C_HDSTATUS (1<<5) // (On=Offline File)
#define C_ARCTEST  (1<<6) // Archive Tested
//#define C_       (1<<7)


#define NF1_MsgBaseAccess      (1<<0)
#define NF1_FileBaseAccess     (1<<1)
#define NF1_BulletinsAccess    (1<<2)
#define NF1_DoorsAreaAccess    (1<<3)
#define NF1_VotingBoothAccess  (1<<4)
#define NF1_FileMailAccess     (1<<5)
//#define NF1_                 (1<<6)
#define NF1_CanChangeAlias     (1<<7)
#define NF1_AbletoReLogon      (1<<8)
#define NF1_DefeatPageToggle   (1<<9)
#define NF1_DefeatSlowBaud     (1<<10)
#define NF1_DefeatLowAccess    (1<<11)
#define NF1_AreaUserList       (1<<12)
#define NF1_BreakSysopChat     (1<<13)
#define NF1_ViewWelcomeScreen  (1<<14)
#define NF1_ViewNodeLists      (1<<15)
#define NF1_InternodeMsgSend   (1<<16)
#define NF1_InternodeLineChat  (1<<17)
#define NF1_InternodeLiveChat  (1<<18)
#define NF1_RecieveNodeMsgs    (1<<19)
#define NF1_AbilitytoHide      (1<<20)

#define NF1_ReadMassMail       (1<<21)
#define NF1_ReadMessages       (1<<22)
#define NF1_PostMessages       (1<<23)
#define NF1_ReplytoMessages    (1<<24)
#define NF1_PostAnonymously    (1<<25)
#define NF1_UploadMsgAbility   (1<<26)
#define NF1_PrivateAnywhere    (1<<27)
//#define NF1_                 (1<<28)
#define NF1_MsgToNextCaller    (1<<29)
#define NF1_ForwardOwnMail     (1<<30)
#define NF1_EditOwnMail        (1<<31)
//#define NF2_                 (1<<0)
//#define NF2_                 (1<<1)
//#define NF2_                 (1<<2)
//#define NF2_                 (1<<3)
//#define NF2_                 (1<<4)
//#define NF2_                 (1<<5)
//#define NF2_                 (1<<6)
//#define NF2_                 (1<<7)
//#define NF2_                 (1<<8)
#define NF2_ArchiveMessages    (1<<9)

#define NF2_ViewFileListings   (1<<10)
#define NF2_DownloadAbility    (1<<11)
#define NF2_UploadAbility      (1<<12)
#define NF2_ViewTextFiles      (1<<13)
#define NF2_ViewTestArchives   (1<<14)
#define NF2_UploadsAutoValid   (1<<15)
#define NF2_SendFileMail       (1<<16)
#define NF2_CDRomTapeWorm      (1<<17)
#define NF2_DeleteOwnFiles     (1<<18)
//#define NF2_                 (1<<19)
//#define NF2_                 (1<<20)
//#define NF2_                 (1<<21)
//#define NF2_                 (1<<22)
//#define NF2_                 (1<<23)
//#define NF2_                 (1<<24)
//#define NF2_                 (1<<25)
//#define NF2_                 (1<<26)
//#define NF2_                 (1<<27)
//#define NF2_                 (1<<28)
//#define NF2_                 (1<<29)
#define NF2_ArchiveCatalogs    (1<<30)
//#define NF2_                 (1<<31)


#define SF1_EditSysopFlags      (1<<0)
#define SF1_AccountEditor       (1<<1)
#define SF1_EditOwnAccount      (1<<2)
#define SF1_DropToDos           (1<<3)
#define SF1_EditAnyTextFiles    (1<<4)
#define SF1_BBSConfigModule     (1<<5)
#define SF1_ViewBBSLogs         (1<<6)
#define SF1_SpecialUserLog      (1<<7)
#define SF1_ViewNewUserApps     (1<<8)
#define SF1_CreateAccounts      (1<<9)
//#define SF1_                  (1<<10)
//#define SF1_                  (1<<11)
//#define SF1_                  (1<<12)
//#define SF1_                  (1<<13)
//#define SF1_                  (1<<14)
//#define SF1_                  (1<<15)
//#define SF1_                  (1<<16)
#define SF1_InternodeControl    (1<<17)
#define SF1_InternodeWatch      (1<<18)
#define SF1_InteractiveWatch    (1<<19)
#define SF1_CaptureUsersCalls   (1<<20)

#define SF1_PostMassMail        (1<<21)
#define SF1_ForwardAnyMail      (1<<22)
#define SF1_EditAnyMail         (1<<23)
#define SF1_EditMessageHeader   (1<<24)
#define SF1_DeleteAnyMail       (1<<25)
#define SF1_ViewPasswordMsgs    (1<<26)
#define SF1_AttachFilestoMsg    (1<<27)
#define SF1_ViewAllEMail        (1<<28)
//#define SF1_                  (1<<29)
//#define SF1_                  (1<<30)
//#define SF1_                  (1<<31)
//#define SF2_                  (1<<0)
//#define SF2_                  (1<<1)
//#define SF2_                  (1<<2)
#define SF2_BypassKickOff       (1<<3)
#define SF2_BypassAbortTrans    (1<<4)
#define SF2_BypassUserPass      (1<<5)
#define SF2_NoChargesforDLs     (1<<6)
#define SF2_BypassULDLLimits    (1<<7)
#define SF2_BypassMsgLimits     (1<<8)
#define SF2_BypassTimeLimits    (1<<9)

#define SF2_FileMaintance       (1<<10)
#define SF2_DLFilesNotListed    (1<<11)
#define SF2_ViewDLSysopFiles    (1<<12)
#define SF2_FullPathDownload    (1<<13)
#define SF2_DeleteAnyFile       (1<<14)
#define SF2_ViewPasswordFiles   (1<<15)
#define SF2_ValidateUploads     (1<<16)
#define SF2_ViewAllFileMail     (1<<17)
#define SF2_ViewTextbyPath      (1<<18)
#define SF2_LocalUploading      (1<<19)
//#define SF2_                  (1<<20)
//#define SF2_                  (1<<21)
//#define SF2_                  (1<<22)
//#define SF2_                  (1<<23)
//#define SF2_                  (1<<24)
//#define SF2_                  (1<<25)
//#define SF2_                  (1<<26)
//#define SF2_                  (1<<27)
//#define SF2_                  (1<<28)
//#define SF2_                  (1<<29)
#define SF2_PayUser             (1<<30)
//#define SF2_                  (1<<31)
