/* EZCronGUI v1.4 by Jim Hines. 1995 All Rights Reserved.
** EZCronGUI is The Graphic User Interface for EZCron, 1994-1995 Jim Hines.
** 12-13-95 Added Speech Function to test subrtn.
** 12-22-95 Added Purge Function.
** 12-24-95 Added multi-windowing on prefs window
** 12-31-95 Added multi-windowing on time and date fields
** 			Changed the main gui interface window and moved the new config
**			button to the edit screen. Removed the Quik Add button altogether.
*/

LF= '0a'x
options results

	if ~show("L","rexxsupport.library") then
   		call addlib("rexxsupport.library", 0, -30)
	
	if ~show('L','rexxreqtools.library') then
   		call addlib("rexxreqtools.library", 0, -30, 0)
		
	if ~showlist( 'p', 'VAREXX' ) then do
   		address command 'run >nil: varexx'
		call delay(25)
		waitforport
		waitforport
	end

	address VAREXX
	call openport("MAINWINPORT")  
	load 'EZCron:EZC.gui MAINWINPORT'      
	host = result     
	address value host
	show project0     

startup:

	if showlist('P', 'ACRON_REXX') then do
		settext text '"EZCron is Currently Running"'
	end

	if ~showlist('P', 'ACRON_REXX') then do
		settext text '"EZCron is NOT Currently Running"'
	end

/* ===== MAIN LOOP =======*/
mainloop:

	do forever    /* Wait for the user to close the window */
		date = Date(USA)
		settext datewin date
		setlist eventlist clear  /* CLEAR THE LISTVIEW WINDOW */


/* ===== READ AND PARSE THE CONFIG FILE ===== */

		config = 's:cron.config'		/* Name of file for reading events from */
		event. = 0

		if ~open(cronfile, config,'READ') then do
			exit 20
		end

		errors = 0

		do until eof(cronfile)
			/* Grab the line, parse the event and ignore the comments */
			linein = readln(cronfile)
			parse var linein line '#'

			next = event.0 + 1

    	    parse var line event.next.command event.next.pargs1 event.next.pargs2,
			event.next.pargs3 event.next.pargs4 event.next.time event.next.date,
			event.next.sfx event.next.txt

			event.next.date = translate(event.next.date, 'abcdefghijklmnopqrstuvwxyz',,
							'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
							/* THE ABOVE TRANSLATES THE DATE TO LOWERCASE IF NOT NUMERIC */

			event.next.time = translate(event.next.time, 'abcdefghijklmnopqrstuvwxyz',,
							'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
							/* THE ABOVE TRANSLATES THE TIME TO LOWERCASE IF NOT NUMERIC */


			if line ~= '' then do  /* This keeps the commented out lines from appearing */
				setlist Eventlist event.next.command event.next.pargs1 event.next.pargs2 event.next.pargs3 event.next.pargs4 event.next.time event.next.date event.next.txt '************************'
			end

			select
				when event.next.command = '' then iterate
				when event.next.command = '' then do
					iterate
				end
				otherwise event.0 = next
			end
		end                                /* end of: do until EOF */
		call close(cronfile)

/* =====END OF PARSE SECTION == */

		do forever  /* THIS DO LOOP CONTROLS THE CLOCK AND CHECKS FOR A PACKET */
			packet = getpkt( "MAINWINPORT" )
			clock = time('N')         /* THIS IS THE TIME WITH SECONDS IN 24HR */
			clock2 = LEFT(clock,5)    /* THIS GET RID OF THE SECONDS */
			sec = right(clock, 2)  /* Get Seconds */
			settext time clock
			call delay(48)

/*		do forever  /* THIS DO LOOP CONTROLS THE CLOCK AND CHECKS FOR A PACKET */
			packet = getpkt( "MAINWINPORT" )
			
            newtime = time(s)                              /* Thanks Andy! */
            if oldtime ~= newtime then do
                clock = time('N')         /* THIS IS THE TIME WITH SECONDS IN 24HR */
                clock2 = LEFT(clock,5)    /* THIS GET RID OF THE SECONDS */
                sec = right(clock, 2)  /* Get Seconds */
                settext time clock
            end
            oldtime = newtime
*/	
			if packet ~= '00000000'x then do /* This is not a null message */
				class  = getarg(packet)    /* Get the information about the message */
			        type = word(class, 1)
			        msg = substr(class, 1,9) 
				call classes()
			end
		end


classes:

/* =====CLASS CLOSEWINDOW ===== */
		if class = closewindow then do
			settext text 'Exiting EZCron'
			call exiting() 
		end

/* =====CLASS PAGEEDIT ===== */
		if class = pageedit then call eventedit()


/* =====CLASS AC_TOGGLE ===== */ 

		if class = AC_Toggle then do
			if ~showlist('P', 'ACRON_REXX') then do	
				address command 'run >nil: rx >nil: EZCron start'
				waitforport
				settext text '"EZCron is now Running"'
				call mainloop()
			end	
			else
				if showlist('P', 'ACRON_REXX') then do	
				address command 'run >nil: rx >nil: EZCron stop'
				busy set /* Turn on busy pointer */
			
					do until ~showlist('P', 'ACRON_REXX')
						clock = time('N')
						sec = right(clock, 2)  /* Get Seconds */
						sec2 = 59 - sec        /* 59 (seconds) minus sec) */
						settext text '"EZCron will exit in"' sec2 'seconds.'
						settext time clock
						call delay(48)
					end
				settext text '"EZCron is NOT Currently Running"'
			end
		busy /* Turn off Busy Pointer */
		call mainloop()
		end
	end 		/* End of first big do forever loop */

/* ===== EDITEVENT SUBROUTINE ========= */

eventedit:
	hide
	show editwindow
	set sortgad blankgad1 disable

eventparse:
	drop field  /* this drops any field variable that may be set */
	address value host  /* this is so the correct window's buttons work after closing other windows */
	drop ev et ed arg1 arg2 arg3 arg4 sfx txt /* this drops any variables that may be present */

	do forever
		setlist selectevent clear
		config = 's:cron.config'	/* Name of file for reading events from */
		event. = 0
	
		if ~open(cronfile, config,'READ') then do
			exit 20
		end
	
		errors = 0
		do until eof(cronfile)
			linein = readln(cronfile)
			parse var linein line '#'
			next = event.0 + 1
	
	        parse var line event.next.command event.next.pargs1 event.next.pargs2,
			event.next.pargs3 event.next.pargs4 event.next.time	event.next.date,
			event.next.sfx event.next.txt

			event.next.date = translate(event.next.date, 'abcdefghijklmnopqrstuvwxyz',,
							'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
							/* THE ABOVE TRANSLATES THE DATE TO LOWERCASE IF NOT NUMERIC */

			event.next.time = translate(event.next.time, 'abcdefghijklmnopqrstuvwxyz',,
							'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
							/* THE ABOVE TRANSLATES THE TIME TO LOWERCASE IF NOT NUMERIC */


			event.next.txt = strip(event.next.txt) /* This Gets rid of the leading & trailing spaces in the LAST variable
													  If new fields are added, the variable must be changed to reflect this */
	
			if line ~= '' then do  /* This keeps the commented out lines from appearing */
				setlist selectevent event.next.command
			end
		
			select
				when event.next.command = '' then iterate
				when event.next.command = '' then do
					iterate
				end
				otherwise event.0 = next
			end
		end
		call close(cronfile)

/* ===== END OF PARSE  */

waitforpkt:
		call waitpkt( "MAINWINPORT" )    /* Wait for a message from Varexx */
		packet = getpkt( "MAINWINPORT" )        /* Get the message */

	   	if packet ~= '00000000'x then do /* This is not a null message */
			class  = getarg(packet)    /* Get the information about the message */
	   	    type = word(class, 1)
	       	msg = substr(class, 12,100)
			say 'Message Var = ' msg
			say 'Class Var = ' class
			say 'Type Var = ' type

/* ===== CLASS EXIT EDITOR ===== */
			if class = end then do /* This is the exit button */
				hide
				show project0
				call startup()
			end

/* ===== CLASS QUIT PROGRAM ===== */

			if class = closewindow then call exiting()

/* ===== CLASS PREFSGAD ===== */

			if class = prefsgad then do
				call openport(PREFSWINPORT)
				spawn PREFSWINPORT
				host2 = result
				address value host2
				show prefswindow
				call prefs()
			end

/* ===== CLASS EDIT ===== */		
			if class = EDIT then do
				if ~exists('EZCron:prefs/txted.prefs') then address command 'ed s:cron.config'
				if exists('EZCron:prefs/txted.prefs') then do
					open(edconfig, 'EZCron:prefs/txted.prefs', 'r')
					linein = readln(edconfig)
					address command linein 's:cron.config'
					close(edconfig)
				end
			end

/* ===== CLASS TEST EVENT ===== */
/* TEST ONLY TAKES THE FIRST TWO ARGUMENTS AND SFX AS OF RIGHT NOW */

			if class = testevent then do
				if exists('EZCron:prefs/sfx.prefs') then do
					open(sfxconfig, 'EZCron:prefs/sfx.prefs', 'r')
					sfxplayer = readln(sfxconfig)
					close(sfxconfig)
				end

				read event
				ev = RESULT
	
				read arg1
				arg1 = RESULT
	
				read sfx
				fx = RESULT
				if fx = '-' then fx = ''
	
				read txtstr
				tx = result
				
				if ev ~= textreminder then do
					address command 'run >nil: 'ev arg1
				end
	
				if fx ~= '' then do
						address command 'run >nil:' sfxplayer fx
				end
	
				if ev = TEXTREMINDER then do
					address command 'run >nil: rx >nil: ezcron:rexx/Reminder.rexx' tx
					if showlist(h,SPEAK) then do
						address command 'echo' tx '>speak:'
					end
				end
	
				drop ev arg1 fx tx sfxplayer
			end
	
/* ===== CLASS GETFILE ===== */

			if class = getfile then do
				clock = time('N')
				clock2 = LEFT(clock,5)
				filename = rtfilerequest(, , "Pick a File To Run",OK, "rt_reqpos = reqpos_centerscr")
				settext event filename
				settext event_time clock2
				settext event_date Date(USA)
				settext arg1 '-'
				settext arg2 '-'
				settext arg3 '-'
				settext arg3 '-'
				settext sfx '-'
				settext txtstr '-'
			end

/* ===== CLASS NEW CONFIG ===== */ 
		if class = AC_New then do
			if ~exists('s:cron.config') then do
					open(MkCfg, 's:cron.config',W)
					writeln(MkCfg, 'TEXTREMINDER - - - - 22:00 Friday - Be Sure to Send E-Mail to the Author of EZCron')
					close(MkCfg)
			end
		else
			call rtezrequest("A cron.config file already exists."||LF||"Do you wish to overwrite it?.", "_Yes|_No", , "rt_reqpos = reqpos_centerscr")
			if rtresult == 1 then do
				if exists('s:cron.config.old') then address command 'delete s:cron.config.old'
				address command 'rename s:cron.config s:cron.config.old'
				call delay(3)
				open(MkCfg, 's:cron.config','w')
				writeln(MkCfg, 'TEXTREMINDER - - - - 22:00 Friday - Be Sure to Send E-Mail to the Author of EZCron')
				close(MkCfg)
			end
		end     

	
/* ===== CLASS REQUESTER GADS ===== */

			if class = arg1gad then do
				argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
				if argname = '' then argname = '-'
				settext arg1 argname
			end
	
			if class = arg2gad then do
				argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
				if argname = '' then argname = '-'
				settext arg2 argname
			end
	
			if class = arg3gad then do
				argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
				if argname = '' then argname = '-'
				settext arg3 argname
			end
	
			if class = arg4gad then do
				argname = rtfilerequest(, , "Pick a file argument",OK, "rt_reqpos = reqpos_centerscr")
				if argname = '' then argname = '-'
				settext arg4 argname
			end
	
			if class = sfxgad then do
				read sfx
				sfxtxt = result
				parse var sfxtxt device ':'
				if device = '-' then device = 'sys'
				argname = rtfilerequest(device':',, "Pick a soundfile",OK, "rt_reqpos = reqpos_centerscr")
				if argname = '' then argname = '-'
				settext sfx argname
			end
	
			if class = txtgad then do
				read txtstr
				txt = result
				if txt = '-' then txt = '' 
				argname = rtgetstring(txt,'Enter Reminder String', 'Reminder Requester', ,'rt_reqpos = reqpos_centerscr')
				if argname = '' then call eventparse()
				clock = time('N')
				clock2 = LEFT(clock,5)
				settext txtstr argname
				settext event TextReminder
				settext event_time clock2
				settext event_date Date(USA)
				settext arg1 '-'
				settext arg2 '-'
				settext arg3 '-'
				settext arg3 '-'
				settext sfx '-'
				drop txt
			end

			if class = datehelp then do
				call rtezrequest( " DATE HELP" || LF ||,
				" "	|| LF ||,
				" These are possible date fields." || LF ||,
				" "	|| LF ||,
				" "	|| LF ||,
				" 01/01/95       * Run event once on a given date." || LF ||,
				" "	|| LF ||,			
				" Monday-Friday  * Run event every named day of week." || LF ||,
				" "	|| LF ||,
				" Daily          * Run event every day." || LF ||,
				" "	|| LF ||,
				" Monthly-12     * Run event every month on given date." || LF ||,
				"                  The date is specified AFTER the hyphen." || LF ||,
				"                  This example would run the event on the" || LF ||,
				"                  12th of each month" || LF ||,
				" "	|| LF ||,
	            " ", "OKay", ,)
			call eventparse()
			end


			if class = timehelp then do
				call rtezrequest( " TIME HELP" || LF ||,
				" "	|| LF ||,
				" These are possible time fields." || LF ||,
				" "	|| LF ||,
				" "	|| LF ||,
				" 14:40    * Run the event at 2:40pm." || LF ||,
				" "	|| LF ||,
				" Minute   * Run event once every minute." || LF ||,
				" "	|| LF ||,			
				" Hourly   * Run event every hour on the hour." || LF ||,
				" "	|| LF ||,
	            " ", "OKay", ,)
			call eventparse()
			end

			if class = datefields then do
				call openport(DATEWINPORT)
				spawn DATEWINPORT
				host3 = result
				address value host3
				show datewindow
				call datefields()
			end

			if class = timefields then do
				call openport(TIMEWINPORT)
				spawn TIMEWINPORT
				host4 = result
				address value host4
				show timewindow
				call timefields()
			end

/* ===== CLASS PURGE EVENT ===== */
			if class = purgegad then do

				address command 'copy s:cron.config s:cron.config.old'
				address command 'delete s:cron.config'
				open(dfile, 's:cron.config', 'W') /* create it again*/
				close(dfile)

				do i = 1 to event.0
					say event.i.date
					parse var event.i.date month '/' day '/' year
					
					if day ~= '' & if year ~= '' then do 
						sortdate = '19'year''month''day
						eventdate = date('c',sortdate,'s')        /* number of days since..*/

						currentdate = date(s) /* 19951221 */
						sortcurrent = date('c', currentdate, 's') /* number of days since..*/
						a = sortcurrent-eventdate
						say 'a equals =' a
						if a > 0 then event.i.command = delete  /* this are the files you DONT want to write */
					end

					if event.i.command ~= delete then do	
						open(dfile, 's:cron.config', 'a')
						writeln(dfile, event.i.command event.i.pargs1 event.i.pargs2,
						event.i.pargs3 event.i.pargs4 event.i.time,
						event.i.date event.i.sfx event.i.txt)
						drop result
					end
					close(dfile)
					drop total
				end
			end

/* ===== CLASS UPDATE (MODIFY) EVENT ===== */
			if class = update then do

				read event
				ev = result
				if ev = '' then call message('No Event Field.')
				if ev = '' then call eventparse()
				if ev = 'None Selected' then call message('No Event Field.')
				if ev = 'None Selected' then call eventparse()

 				event.en.command = ''
				event.en.time = ''
				event.en.date = ''
				event.en.pargs1 = ''
				event.en.pargs2 = ''
				event.en.pargs3 = ''
				event.en.pargs4 = ''
				event.en.sfx = ''
				event.en.txt = ''
	
				address command 'copy s:cron.config s:cron.config.old'
				address command 'delete s:cron.config'
				open(dfile, 's:cron.config', 'W') /* create it again*/
				close(dfile)
	
				read selectevent var h
				open(dfile, 's:cron.config', 'a')
				do n = 1 to h.count
					if event.n.time = '' then h.n = delete

					if h.n ~= delete then
					writeln(dfile, h.n event.n.pargs1 event.n.pargs2,
					event.n.pargs3 event.n.pargs4 event.n.time,
					event.n.date event.n.sfx event.n.txt)
					drop result
				end
				close(dfile)

				read event
				ev = result
				if ev = '' then call message('No Event Field.')
				if ev = '' then call eventparse()
				if ev = 'None Selected' then call message('No Event Field.')
				if ev = 'None Selected' then call eventparse()
				
				read event_time
				et = result
				if et = '' then	call message('No Time Field.')
	
				read event_date
				ed = result
				if ed = '' then call message('No Date Field.')

	 			read arg1
				arg1 = result
				if arg1 = '' then arg1 = '-'
				read arg2
				arg2 = result
				if arg2 = '' then arg2 = '-'
	 			read arg3
				arg3 = result
				if arg3 = '' then arg3 = '-'
				read arg4
				arg4 = result
				if arg4 = '' then arg4 = '-'
	
				read sfx
				sfx = result
				if sfx = '' then sfx = '-'
	
				read txtstr
				txt = result
				if txt = '' then txt = '-'
				
				open(dfile, 's:cron.config', 'a')
				writeln(dfile, ev arg1 arg2 arg3 arg4 et ed sfx txt)
				close(dfile)
				drop ev et ed arg1 arg2 arg3 arg4 sfx txt
			end



/* ===== CLASS ADDEVENT ===== */

			if class = addevent then do
				read event
				ev = result
				if ev = '' then call message('No Event Field.')
				if ev = 'None Selected' then call message('No Event Field.')
				
				read event_time
				et = result
				if et = '' then	call message('No Time Field.')
	
				read event_date
				ed = result
				if ed = '' then call message('No Date Field.')
		
	 			read arg1
				arg1 = result
				if arg1 = '' then arg1 = '-'
				read arg2
				arg2 = result
				if arg2 = '' then arg2 = '-'
	 			read arg3
				arg3 = result
				if arg3 = '' then arg3 = '-'
				read arg4
				arg4 = result
				if arg4 = '' then arg4 = '-'
	
				read sfx
				sfx = result
				if sfx = '' then sfx = '-'
	
				read txtstr
				txt = result
				if txt = '' then txt = '-'
				
				if ev = '' then call eventparse()
				if ev = 'None Selected' then call eventparse()
				if et = '' then call eventparse()
				if ed = '' then call eventparse()

				open(dfile, 's:cron.config', 'a')
				writeln(dfile, ev arg1 arg2 arg3 arg4 et ed sfx txt)
				close(dfile)
				drop ev et ed arg1 arg2 arg3 arg4 sfx txt
			call eventparse()
			end
			

/* ===== SELECTEVENT ===== */			

			if msg ~= '' & type = 'SELECTEVENT' then do
	
				settext event msg
				read selectevent NUMBER
				en = RESULT  /* en is the event number */
				say 'en = ' en
									
				settext event_time event.en.time
				settext event_date event.en.date
				settext arg1 event.en.pargs1
				settext arg2 event.en.pargs2
				settext arg3 event.en.pargs3
				settext arg4 event.en.pargs4
				settext sfx event.en.sfx
				settext txtstr event.en.txt
	
				say 'event.en.sfx =' event.en.sfx
				say 'event.en.txt =' event.en.txt
				say 'event.0 = ' event.0
			end
	
/* ===== CLASS DELETE EVENT ===== */

			if class = delete_event then do
				event.en.command = ''
				event.en.time = ''
				event.en.date = ''
				event.en.pargs1 = ''
				event.en.pargs2 = ''
				event.en.pargs3 = ''
				event.en.pargs4 = ''
				event.en.sfx = ''
				event.en.txt = ''
	
				address command 'copy s:cron.config s:cron.config.old'
				address command 'delete s:cron.config'
				open(dfile, 's:cron.config', 'W') /* create it again*/
				close(dfile)
	
				read selectevent var h
				open(dfile, 's:cron.config', 'a')
				do n = 1 to h.count
					if event.n.time = '' then h.n = delete
	
					if h.n ~= delete then
					writeln(dfile, h.n event.n.pargs1 event.n.pargs2,
					event.n.pargs3 event.n.pargs4 event.n.time,
					event.n.date event.n.sfx event.n.txt)
					drop result
				end
				close(dfile)
	
				settext event 'None Selected'
				settext event_time 'NA'
				settext event_date 'NA'
				settext arg1 '-'
				settext arg2 '-'
				settext arg3 '-'
				settext arg3 '-'
				settext sfx '-'
				settext txtstr '-'
				
				call eventparse()
			end /* Above routine end */
		end    	/* rexx portcheck end */
	end		    /* do forever main loop end */
	exit		/* end of program....subs follow */




message: procedure

    call rtezrequest( arg(1),'Okay!','EZCron ERROR','rt_reqpos = reqpos_centerscr rtez_flags=ezreqf_centertext',)
	return


/* ===== PREFERENCES ===== */

prefs:
	set time_format date_format gadget42 disable
	call waitpkt( "PREFSWINPORT" )    /* Wait for a message from Varexx */
	packet = getpkt( "PREFSWINPORT" )        /* Get the message */

	if packet ~= '00000000'x then do /* This is not a null message */
		class  = getarg(packet)    /* Get the information about the message */
	   	type = word(class, 1)
	       	msg = substr(class, 12,100)
			say 'class =' class
			say 'msg =' msg

			if class = 'CLOSEWINDOW PrefsWindow' then do  /* This is strange */
				hide
				call eventparse()
			end

			if class = exitprefs then do
				hide
				call eventparse()
			end
	
			if class = texteditor then do
				editor = rtfilerequest(, , "Pick a text editor",OK, "rt_reqpos = reqpos_centerscr")
				if rtresult == 0 then call prefs() /*This get out of the edprefs function */
				open(edconfig,'EZCron:prefs/txted.prefs', 'w')
				writeln(edconfig, editor)
				close(edconfig)
				drop editor
			end
				
			if class = sfxplayer then do
				player = rtfilerequest(, , "Pick a sound player",OK, "rt_reqpos = reqpos_centerscr")
				if rtresult == 0 then call prefs() /*This get out of the edprefs function */
				open(edconfig,'EZCron:prefs/sfx.prefs', 'w')
				writeln(edconfig, player)
				close(edconfig)
				drop player
			end
			call prefs()
	end	

/* ===== DATE FIELD REQUESTER ===== */

datefields:
	field = ''
	do forever
		call waitpkt( "DATEWINPORT" )    /* Wait for a message from Varexx */
		packet = getpkt( "DATEWINPORT" )        /* Get the message */
	
		if packet ~= '00000000'x then do /* This is not a null message */
			class  = getarg(packet)    /* Get the information about the message */
		   	type = word(class, 1)
			msg = substr(class, 11,25)

			if field = '' then field = date(usa)
			say 'field before the if string is' field
			if msg = '0' then field = Date(USA)
			if msg = '1' then field = 'Daily'
			if msg = '2' then field = 'Monthly-'right(date(S),2)  /* Monthly-13 */ 
			if msg = '3' then field = 'Sunday'
			if msg = '4' then field = 'Monday'
			if msg = '5' then field = 'Tuesday'
			if msg = '6' then field = 'Wednesday'
			if msg = '7' then field = 'Thursday'
			if msg = '8' then field = 'Friday'
			if msg = '9' then field = 'Saturday'
			if msg = '10' then field = 'Sunday'
		
			if class = 'CLOSEWINDOW DateWindow' then do
				hide
				address value host
				call eventparse()
			end
	
			if class = exitdate then do
				hide
				address value host
				call eventparse()
			end

			if class = okay then do
				hide
				address value host
				settext event_date field
				call eventparse()
			end
		end	
	end

/* ===== TIME FIELD REQUESTER ===== */

timefields:
	field = ''
	do forever
		call waitpkt( "TIMEWINPORT" )    /* Wait for a message from Varexx */
		packet = getpkt( "TIMEWINPORT" )        /* Get the message */
	
		if packet ~= '00000000'x then do /* This is not a null message */
			class  = getarg(packet)    /* Get the information about the message */
		   	type = word(class, 1)
			msg = substr(class, 11,25)

			if field = '' then field = LEFT(time('N'),5)
			if msg = '0' then field = LEFT(time('N'),5)
			if msg = '1' then field = 'Minute'
			if msg = '2' then field = 'Hourly'

			if class = 'CLOSEWINDOW timewindow' then do
				hide
				address value host
				call eventparse()
			end
	
			if class = exittime then do
				hide
				address value host
				call eventparse()
			end

			if class = okay then do
				hide
				address value host
				settext event_time field
				call eventparse()
			end
		end	
	end

/* ===== EXIT AND CLEAN UP ===== */

exiting:
	address command 'run >nil: avail flush'
	'hide unload'  /* Hide the window and unload the gui file from memory */
	call delay(15)
	call closeport( "MAINWINPORT" )  /* Close the port */
	address command 'run >nil: vxc'
exit
