#include <proto/asl.h>
#include <proto/utility.h>
#include "CarCost.h"

#define MAXLOCALE 96

#define SAVEFILE (1L<<FRB_DOPATTERNS)|(1L<<FRB_DOSAVEMODE)
#define LOADFILE (1L<<FRB_DOPATTERNS)

#define TEXT(i) AppStrings[i].as_Str


#define FORMAT_LITER    "%8.2lf" // 8.2
#define FORMAT_PREIS    "%8.2lf"
#define FORMAT_KILOMETER "%8ld"
#define FORMAT_DKILOMETER "%5ld"
#define FORMAT_VERBRAUCH "%8.3lf"
#define FORMAT_SUMME2   "%8.3lf"
#define FORMAT_LITER2   "%.2lf"
#define FORMAT_PREIS2   "%.2lf"
#define FORMAT_TITEL    "%s" // 25s
#define FORMAT_BEMERKUNG "%s" // 25s
#define FORMAT_DM        "%8.2lf"
#define FORMAT_DM2       "%8.3lf"

#define MAX_TITEL 55 // 25
#define MAX_REM   55 // 25

#define eR "\033r"
#define eC "\033c"
#define eL "\033l"

#define eN "\033n"
#define eB "\033b"
#define eI "\033i"

#define ePB "\0332"
#define ePW "\0338"

#define ID_TREIB                1
#define ID_UNTER                2
#define ID_MENUNEU              3
#define ID_MENUCHANGE           4
#define ID_LOAD                 5
#define ID_INSERT               6
#define ID_SAVE                 7
#define ID_SAVEAS               8
#define ID_PRINT                9
#define ID_ICONIFY              10
#define ID_ABOUT                11

#define ID_TR_NEW               1
#define ID_TR_CHANGE            2
#define ID_TR_DELETE            3
#define ID_TR_DATE              4
#define ID_TR_KMSTAND           5
#define ID_TR_LITER             6
#define ID_TR_PRICE             7
#define ID_TR_CANCEL            8
#define ID_TR_ACTIVE           13

#define ID_UN_NEW               1
#define ID_UN_CHANGE            2
#define ID_UN_DELETE            3
#define ID_UN_DATE              4
#define ID_UN_PRICE             8
#define ID_UN_TITLE             9
#define ID_UN_REMARK            10
#define ID_UN_CANCEL            11

#define ID_NE_NEU               1
#define ID_NE_CANCEL            2
#define ID_NE_OK                3
#define ID_NE_KM                4




#define ID_QUIT        MUIV_Application_ReturnID_Quit


/* Prototypes for functions defined in
Init.c
 */

extern char * Formate[6];

extern Object * App;

extern Object * WI_Cost;

extern Object * WI_Treib;

extern Object * WI_Unter;

extern Object * TX_Gad1;

extern Object * TX_Gad2;

extern Object * BT_Treib;

extern Object * BT_Unter;

extern Object * TX_Gad3;

extern Object * TX_Gad4;

extern Object * TX_Gad5;

extern Object * TX_Gad6;

extern Object * TX_Gad7;

extern Object * TX_Gad8;

extern Object * TX_Gad9;

extern Object * TX_Gad10;

extern Object * TX_Gad11;

extern Object * LI_Treib;

extern Object * LV_Treib;

extern Object * LI_Unter;

extern Object * LV_Unter;

extern Object * ST_Gad1;

extern Object * ST_Gad2;

extern Object * ST_Gad3;

extern Object * ST_Gad4;

extern Object * BT_TR_New;

extern Object * BT_TR_Change;

extern Object * BT_TR_Delete;

extern Object * BT_TR_Cancel;

extern Object * BT_TR_Close;

extern Object * BT_UN_New;

extern Object * BT_UN_Change;

extern Object * BT_UN_Delete;

extern Object * BT_UN_Cancel;

extern Object * BT_UN_Close;

extern Object * ST_Gad5;

extern Object * ST_Gad6;

extern Object * ST_Gad7;

extern Object * ST_Gad8;

extern Object * WI_Neu;

extern Object * NE_Gad1;

extern Object * NE_Gad2;

extern Object * NE_Gad3;

extern Object * NE_Gad4;

extern Object * NE_OK;

extern Object * NE_Cancel;

extern Object * NE_Title;

extern LONG changes;

extern struct Hook Hook_conhooktreib;

extern struct Hook Hook_deshooktreib;

extern struct Hook Hook_cmphooktreib;

extern struct Hook Hook_disphooktreib;

extern struct Hook Hook_conhookunter;

extern struct Hook Hook_deshookunter;

extern struct Hook Hook_cmphookunter;

extern struct Hook Hook_disphookunter;

extern struct NewMenu NewMenu[];

LONG MyInit(void);

/* Prototypes for functions defined in
Hook.c
 */

LONG __asm __saveds __far conhooktreib(register __a0 struct Hook * , register __a1 struct NodeTreib * , register __a2 APTR );

void __asm __saveds __far deshooktreib(register __a0 struct Hook * , register __a1 struct NodeTreib * , register __a2 APTR );

LONG __asm __saveds __far cmphooktreib(register __a0 struct Hook * , register __a1 struct NodeTreib * , register __a2 struct NodeTreib * );

void __asm __saveds __far disphooktreib(register __a0 struct Hook * , register __a1 struct NodeTreib * , register __a2 char ** );

LONG __asm __saveds __far conhookunter(register __a0 struct Hook * , register __a1 struct NodeUnter * , register __a2 APTR );

void __asm __saveds __far deshookunter(register __a0 struct Hook * , register __a1 struct NodeUnter * , register __a2 APTR );

LONG __asm __saveds __far cmphookunter(register __a0 struct Hook * , register __a1 struct NodeUnter * , register __a2 struct NodeUnter * );

void __asm __saveds __far disphookunter(register __a0 struct Hook * , register __a1 struct NodeUnter * , register __a2 char ** );

/* Prototypes for functions defined in
Loop.c
 */

extern BOOL datelistopen;

extern struct NodeTreib oldtreib;

extern struct NodeUnter oldunter;

void DisableTreibGads(void);

void EnableTreibGads(void);

void ClearTreib(void);

void EnableTreib(void);

void DisableTreib(void);

void DisableUnterGads(void);

void EnableUnterGads(void);

void ClearDisableUnter(void);

void EnableUnter(void);

void DisableUnter(void);

extern BOOL changetreib;

extern BOOL changeunter;

void Loop(void);

void TreibLoop(void);

void UnterLoop(void);

void LoopNeu(LONG);

/* Prototypes for functions defined in
Liste.c
 */

extern struct DateTime theday;

LONG ConvertToDays(char * );

void ConvertToString(LONG , char * );

LONG ReCalcTreib(void);

void FillTreib(struct NodeTreib * );

void FillUnter(struct NodeUnter * );

LONG CheckTreibList(LONG );

/* Prototypes for functions defined in
Main.c
 */

extern struct AppString AppStrings[];

extern struct AppString AppStrings[];

extern struct FileRequester * Rq;

extern struct DiskObject * DiskObj;

extern struct Library * MUIMasterBase;

extern struct Library * LocaleBase;

extern struct Library * IconBase;

extern struct IntuitionBase * IntuitionBase;

extern struct Catalog * mycat;

extern struct Daten Daten;

extern char Version[80];
extern char WTitel[80];

extern char Dir[150];

extern char FileName[300];
extern char PrtName[300];

extern char TitelString1[100];

extern char TitelString2[100];

extern char Start_Kennzeichen[20];

extern char Start_Datum[20];

extern LONG Start_Day;

extern LONG Start_KM;

extern LONG Start_Format;

void fail(APTR );

int CXBRK(void);

int _CXBRK(void);

void chkabort(void);

extern LONG __stack;

//int main(int , char ** );

void SaveAll(char * );

void InsertAll(char * );

void RemoveAll(void);

extern char Buffer[];

void PrintAll(char *);

void WriteMyIcon(char * , char * );

extern struct MUI_Command commands[];


/* Prototypes for functions defined in
A.c
 */

/* Prototypes for functions defined in
File.c
 */

LONG GetFileName5(struct FileRequester * , char * , char * , char * , ULONG , WORD );

LONG GetFileName6(struct FileRequester * , char * , char * , char * , char * , char * , ULONG , WORD );

 LONG ShowRequest2(struct Window *Window,
                   char *Title,
                   char *Text, 
                   char *GadgetText, 
                   ...);

#define MAXTEXTSTRING 257
struct NodeTreib 
{ 
//   struct Node we_Node;
   char   Datum[30]; 
   char   kmstring[30];
   char   deltakmstring[30];
   char   Literstring[30];
   char   Preisstring[30];
   char   Verbrauchstring[40];
   LONG   Days;
   LONG   kmStand;
   LONG   deltakm;
   DOUBLE Liter;
   DOUBLE Preis;
   DOUBLE Verbrauch;
};

struct NodeUnter 
{ 
//   struct Node we_Node;
   char   Datum[20];
   char   Titelstring[MAXTEXTSTRING+1]; // 50
   char   Bemerkungstring[MAXTEXTSTRING+1]; // 50
   char   DispTitel[80];
   char   DispRem[80];
   char   Preisstring[20];
   LONG   Days;
   DOUBLE Preis;
};

struct Daten
{
        char SDatum[20];
        char EDatum[20];
        char Literstring[40];
        char UnterGesstring[40];
        char TreibGesstring[40];
        char UnterGesKMstring[40];
        char TreibGesKMstring[40];
        char Verbrauchstring[40];
        char Gesstring[40];
        char GesKMstring[40];
        char kmstring[40];

        
        LONG   Kilometer;
        DOUBLE Liter;
        DOUBLE Verbrauch;
        
        DOUBLE TreibGes;
        DOUBLE UnterGes;
};

#define VERSION "3.11"
#define DATE    "(13.01.96)"
