* ----------------------------------------------------------------------
* KNOWHOW.PRG		AUTHOR Jos Kingston	March 1995
* ----------------------------------------------------------------------

CLOSE ALL
CLEAR ALL
RELEASE ALL
RELEASE POPUPS
RELEASE WINDOWS
RELEASE SCREENS
CLEAR
SET TALK OFF
SET ESCAPE OFF
SET STATUS OFF
SET SCOREBOARD OFF
SET PATH TO KNOWBANK; PROGRAM
SET BORDER TO


@ 6,20 SAY "LOADING YOUR WORK AND YOUR HEALTH PROGRAM"

DO Setkeys	&& Makes sure joblkup and topic tables will hook properly

Finished = "N"
DO WHILE Finished = "N"

	SET CURSOR OFF

	DO OpenScr

	IF Finished = "N"

		SET CURSOR ON
		CatString = SPACE(8)
		FirstCat = SPACE(2)
		SecondCat = SPACE(2)
		ThirdCat = SPACE(2)
		DO GetJob

	ENDIF
	
	DEACTIVATE WINDOW TEXTBOX

ENDDO


ON KEY
SET STATUS ON
SET SCOREBOARD ON
SET ESCAPE ON
SET CURSOR ON
SET TALK ON
RELEASE ALL
RELEASE POPUPS
RELEASE WINDOWS
RELEASE SCREENS
CLEAR
CLEAR ALL


* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
PROCEDURE Setkeys	&& Called from top level
* -----------------------------------------------------------------------

	SELECT C
	USE Current
	SET SAFETY OFF
	ZAP
	CLOSE DATABASES

	SELECT A
	USE Joblkup ALIAS Jobnames
	COPY STRUCTURE TO Program\Current
	SET SAFETY ON

	SET FIELDS TO ALL
	FieldString = FLDLIST()
	SET FIELDS OFF

	SELECT B
	USE Cat_Prob ALIAS Topiclines ORDER Topcats
	GO TOP
	SCAN
		REPLACE Key WITH .F.
		Topic = TC
		IF Topic $ FieldString
			REPLACE Key WITH .T.
		ENDIF
	ENDSCAN




	CLOSE ALL

RETURN
* -----------------------------------------------------------------------


* -----------------------------------------------------------------------
PROCEDURE OpenScr		&& Called from Top Level
* -----------------------------------------------------------------------


  CLEAR
  @ 0,20 SAY "Sheffield Trade Union Studies Centre"
  @ 1,2 FILL TO 1,77
  @ 1,17 SAY " YOUR WORK AND YOUR HEALTH KNOWLEDGE BANK " COLOR GB+/N

  @ 24,43 SAY " PRESS ANY KEY TO RUN THE PROGRAM " COLOR GB+/N
  @ 3,2 CLEAR TO 23,77
  @ 3,2 TO 23,77 DOUBLE COLOR n/w
  DEFINE WINDOW TEXTBOX FROM 4,4 TO 22,75 NONE COLOR ,N/GB
  ACTIVATE WINDOW TEXTBOX


  Carryon = "N"
  DO WHILE Carryon = "N" .AND. Finished = "N"
	CLEAR
	@ 0,3 SAY " From this screen, you have access to a KNOWLEDGE BANK. " COLOR W+/N
	@ 2,6 SAY "It contains information about HAZARDS and" 
	@ 3,6 SAY "HEALTH PROBLEMS which could arise from your work." 

	@ 5,3 SAY " IT TELLS YOU ABOUT: " COLOR BG/N
	@ 7,4 SAY "* Ways that your work could be damaging to your health."
	@ 8,4 SAY "* Your employer's responsibilities."
	@ 9,4 SAY "* How to prevent your work causing health problems."
	@ 10,4 SAY "* Your rights to compensation and benefits"
	@ 11,6 SAY    "if you have an illness or injury caused by work."

	@ 13,33 SAY " USE IT TO FIND OUT MORE ABOUT: " COLOR BG/N
	@ 15,34 SAY "* The job you're doing now."
	@ 16,34 SAY "* A job you've done in the past."
	@ 17,34 SAY "* A job you're investigating."

	Keypress = INKEY(0)
	IF Keypress <> 17
		CarryOn = "Y"
	ENDIF
	IF Keypress = 17
		Finished = "Y" 
	ENDIF

  ENDDO

RETURN
* -----------------------------------------------------------------------
* -----------------------------------------------------------------------
* END OF SETUP AND OPENING SCREEN PROCEDURES
* -----------------------------------------------------------------------

* ----------------------------------------------------------------------
* BEGINNING OF PROCEDURES TO GET JOB NAME MATCHED TO KNOWLEDGE BANK
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
PROCEDURE GetJob
* -----------------------------------------------------------------------
* This looks like a lot of pussyfooting about just to get job name.
* The procedures are written to be "forgiving of spelling".
* For "vague" job names, more info needs to be got.
* This bit of program could probably be tidied up quite a lot.


	DEACTIVATE WINDOW TEXTBOX

	@ 0,0 CLEAR TO 0,79
	@ 24,0 CLEAR TO 24,79
	@ 3,10 SAY " ABOUT THE WORK: "
	@ 21,0 SAY "1" COLOR GB/N
	ACTIVATE WINDOW TEXTBOX
	CLEAR

	SELECT A
	USE Joblkup ALIAS JobNames ORDER JobTitle

	Nameconf = .F.
	DO WHILE Nameconf = .F.
	
		JobGot = SPACE(35)
		LocCat = SPACE(2)
		LocGot = .F.
		OrCat = .F.
		FullLoc = SPACE(15)
		@ 1, 3 CLEAR TO 1,66
		@ 1,3 SAY " Type in the name of the job, then press <Enter>: " COLOR GB+/N
		@ 6,10 TO 18,65 DOUBLE
		@ 8,12 SAY "When you tell the computer what JOB you do,"
		@ 9,12 SAY "have done, or want to investigate hazards of,"
		@ 10,12 SAY "it will FILTER OUT the information in the"
		@ 11,12 SAY "Knowledge Bank which is most likely to be"
		@ 12,12 SAY "relevant to you."
		@ 14,12 SAY "First, the computer has to match the name"
		@ 15,12 SAY "which you give to your job, to the job names"
		@ 16,12 SAY "which are used in the Knowledge Bank."

		@ 3,3 GET JobGot PICTURE "@!"
		READ
                
		* All job names tried by users are logged for program evaluation
                
		SELECT I
		USE Logfile ALIAS UserRec
		APPEND BLANK
		REPLACE NameTried WITH JobGot
		REPLACE Date WITH DATE()
		REPLACE Time WITH TIME()

		@ 6,10 CLEAR TO 18,65                
		DO Seekjob

* Returns from Seekjob with Current as active table

		IF LocGot = .F.
			 CatString = CA
		ENDIF
		SCString = SC

		FirstCat = LEFT(Catstring,2)
		SecondCat = SUBSTR(Catstring,4,2)
		ThirdCat = RIGHT(Catstring,2)
		FirstSub = LEFT(SCString,2)
		SecondSub = RIGHT(SCString,2)	

		DO AskView
		
		@ 1,3 CLEAR TO 18,58

	ENDDO


RETURN
* ------------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE Seekjob	&& 1st procedure called from GetJob
* ------------------------------------------------------------------------

	SELECT JobNames

	Closetry = .F.
	Jobgot = RTRIM(Jobgot)
	Jobtemp = Jobgot

	IF RIGHT(Jobtemp,1) = "S"
		Jobtemp = STUFF(Jobtemp,RAT("S",Jobtemp),1,"")          
	ENDIF

	IF RIGHT(Jobtemp,3) = "ING"
		Jobtemp = STUFF(Jobtemp,RAT("ING",Jobtemp),3,"")
	ENDIF

	IF RIGHT(Jobtemp,3) = "IES"
		Jobtemp = STUFF(Jobtemp,RAT("IES",Jobtemp),3,"")
	ENDIF
		
	Jobtemp = LTRIM(Jobtemp)
	Jobtemp = RTRIM(Jobtemp)
		
	SET FILTER TO (LEFT(Jobtemp,3) $ Jobname ;
        .AND. RIGHT(Jobtemp,5) $ Jobname) ;
	.OR. (LEFT(Jobtemp,5) $ Jobname ;
	.AND. RIGHT(Jobtemp,3) $ Jobname)
		
	DO Neartry
	
	IF Nameconf = .F.

		IF " OF " $ Jobtemp
			Jobtemp = STUFF(Jobtemp,AT(" OF ",Jobtemp),4,"") 
		ENDIF
	
		IF "MAK" $ Jobtemp .OR. "WORK" $ Jobtemp ;
		    .OR. "DRIV" $ Jobtemp .OR. "SALES" $ Jobtemp
			DO CASE
			    CASE "MAKER" $ Jobtemp
				Jobtemp = STUFF(Jobtemp,AT("MAKER",Jobtemp),5,"")
			    CASE "MAKING" $ Jobtemp
				Jobtemp = STUFF(Jobtemp,AT("MAKING",Jobtemp),6,"")
			    CASE "WORKER" $ Jobtemp
				Jobtemp = STUFF(Jobtemp,AT("WORKER",Jobtemp),6,"")
			    CASE "WORKING" $ Jobtemp
				Jobtemp = STUFF(Jobtemp,AT("WORKING",Jobtemp),7,"")
			    CASE "DRIVER" $ Jobtemp
				Jobtemp = STUFF(Jobtemp,AT("DRIVER",Jobtemp),6,"")
			    CASE "DRIVING" $ Jobtemp
				Jobtemp = STUFF(Jobtemp,AT("DRIVING",Jobtemp),7,"")
			    CASE "SALES" $ Jobtemp
				Jobtemp = STUFF(Jobtemp,AT("SALES",Jobtemp),5,"")       
			ENDCASE
	
			Jobtemp = RTRIM(Jobtemp)
			Jobtemp = LTRIM(Jobtemp)
			SET FILTER TO DIFFERENCE(Jobtemp,Jobname) >=4 ;
					.OR. LEFT(Jobtemp,3) = LEFT(Jobname,3)

			DO Neartry                              

		ENDIF

	    ENDIF
	
	
	IF Nameconf = .F.

		SET FILTER TO DIFFERENCE(Jobgot,Jobname) >= 4 ;
		.OR. LEFT(Jobgot,3) = LEFT(Jobname,3) ;
		.OR. (LEFT(Jobgot,5) $ Jobname .OR. RIGHT(Jobgot,5) $ Jobname) 
		
		LOCATE FOR JobName > " "
		x = 0
		DO JobPop
	ENDIF
	
RETURN
* -----------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE Neartry		&& Called from SeekJob
* ------------------------------------------------------------------------

		LOCATE FOR JobName > " "
		IF FOUND()
		    Closetry = .T.
		    DEFINE POPUP LikeNames FROM 5,24 TO 18,60
		    x = 1
		    SCAN
			DEFINE BAR x OF LikeNames PROMPT Jobname
			x = x + 1
		    ENDSCAN
		    DO JobPop
		    Closetry = .F.
		ENDIF

RETURN
* -------------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE JobPop		&& Called from SeekJob and Neartry
* ------------------------------------------------------------------------
	
	NoMatch = .F.
	IF Closetry = .F.

	    IF FOUND()
		DEFINE POPUP LikeNames FROM 5,24 TO 18,60 PROMPT FIELD Jobname
	    ELSE
		NoMatch = .T.
	    ENDIF

	ENDIF
	
	IF NoMatch = .F.
		
		ON SELECTION POPUP LikeNames DO Getname WITH PROMPT()

		@ 4,3 SAY "These are job names in the Knowledge Bank"
		@ 5,3 SAY "which the computer"
		@ 6,3 SAY "thinks sound like"
		@ 7,3 SAY "what you typed."
		@ 9,3 SAY " Highlight closest  " COLOR GB/N
		@ 10,3 SAY " then press <Enter>." COLOR GB/N
		@ 11,3 SAY " Use arrow keys to  " COLOR GB/N
		@ 12,3 SAY " scroll down list.  " COLOR GB/N
		@ 13,3 SAY " Press <Esc> if no  " COLOR GB/N
		@ 14,3 SAY " suitable choices.  " COLOR GB/N
		@ 16,3 SAY "NOTE:"
		@ 17,3 SAY "Sometimes computers"
		@ 18,3 SAY "have funny ideas!"

		IF x > 12
		  ACTIVATE SCREEN
		  @ 24,3 SAY "TO VIEW MORE: Use up and down arrow keys, OR <Page Up>, <Page Down> keys." COLOR W+/N
		  ACTIVATE WINDOW Textbox
 		ENDIF
	
		DO Keytrap
		*SET ORDER TO Jobtitle
		ACTIVATE POPUP LikeNames
		ACTIVATE SCREEN
		@ 24,3 CLEAR TO 24,75
		ACTIVATE WINDOW Textbox
		*SET ORDER TO
		DO Trapkill
* Returns from GetName procedure with Current job active table

	ENDIF
	
	SET FILTER TO

RETURN
* -------------------------------------------------------------------------


* -----------------------------------------------------------------------
PROCEDURE Getname		&& Called from JobPop (LikeNames popup)
* -----------------------------------------------------------------------

PARAMETERS Prompt

	IF NoMatch = .F.
		Nameconf = .T.
		STORE Prompt TO Jobgot

		DECLARE Thisjob[30]
		COPY TO ARRAY Thisjob FOR Jobgot $ Jobname

		SELECT UserRec
		REPLACE LkupJob WITH JobGot
		

		SELECT J
		USE Current ALIAS ThisJob
		APPEND FROM ARRAY Thisjob

		Catstring = CA		
		OrCat = .F.
		*FirstCat = LEFT(CA,2)

		IF CA = "XS" .OR. (L >= "1" .AND. L <= "9") .OR. ("\" $ CA .OR. "/" $ CA)
			DO GetMoreInf
		ENDIF


	ENDIF

	DEACTIVATE POPUP
RETURN
* ------------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE GetMoreInf		&& Called from GetName
* -----------------------------------------------------------------------

	@ 4,3 CLEAR TO 18,60
	DO CASE
	    CASE CA = "XS"

		@ 8,10 SAY "We need to know more about"
		@ 9,10 SAY "exactly what you do in your work."
		@ 10,10 SAY "Please choose a more informative"
		@ 11,10 SAY "Jobname"
		WAIT

	    CASE "\" $ CA .OR. "/" $ CA

		OrCat = .T.

		@ 4,3 SAY "The Knowledge Bank recognises"
		@ 5,3 SAY "more than one workplace"
		@ 6,3 SAY "for this job. Please select"
		@ 7,3 SAY "the appropriate one:"

		SELECT B
		USE Jobcats ALIAS Catjobs ORDER Category
		SET FILTER TO Catjobs->CA $ Catstring .AND. Catjobs->SC = "  "
		GO TOP
		DEFINE POPUP Locations FROM 2,35 TO 10,69
		x = 1
		SCAN 
			DEFINE BAR x OF Locations PROMPT Category
			x = x + 1
		ENDSCAN
		DEFINE BAR x OF Locations PROMPT "NONE OF THESE"

		ON SELECTION POPUP Locations DO Storeloc WITH Prompt()

		DO Keytrap
		ACTIVATE POPUP Locations
		DO Trapkill
		USE IN B
		SELECT ThisJob


	    CASE L >= "1" .AND. L <= "9"

		@ 1,1 CLEAR TO 1,50
		@ 3,1 SAY Jobgot COLOR N/GB
		@ 6,1 SAY " MORE INFORMATION WANTED!" COLOR GB+/N 
		@ 8,1 SAY " Please select          " COLOR GB/N
		@ 9,1 SAY " the category which     " COLOR GB/N
		@ 10,1 SAY " fits your work best    " COLOR GB/N
		@ 11,1 SAY " from the list          " COLOR GB/N
		@ 12,1 SAY " on the right.          " COLOR GB/N

		SELECT B
		USE Jobcats ALIAS Catjobs ORDER Category
		SET FILTER TO ThisJob->L $ LC 
		GO TOP
		DEFINE POPUP Locations FROM 0,35 TO 18,69
		x = 1
		SCAN
			DEFINE BAR x OF Locations PROMPT Category
			x = x + 1
		ENDSCAN
		DEFINE BAR x OF Locations PROMPT "NONE OF THESE"

		ON SELECTION POPUP Locations DO Storeloc WITH Prompt()

		DO Keytrap
		ACTIVATE POPUP Locations
		DO Trapkill
		USE IN B
		SELECT Thisjob

	ENDCASE
	@ 3,1 CLEAR TO 18,60

RETURN
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
PROCEDURE StoreLoc		&& Called from GetMoreInf
* -----------------------------------------------------------------------
PARAMETERS Prompt


	LOCATE FOR Category = Prompt
	FullLoc = Prompt
	LocCat = CA
	
	IF OrCat = .T.
		CatString = CA
	ELSE
		CatString = CatString + "," + LocCat
	ENDIF

	LocGot = .T.
	DEACTIVATE POPUP
RETURN
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
PROCEDURE AskView	&& 3rd procedure called from GetJob
* ----------------------------------------------------------------------

	Jobgot = RTRIM(Jobgot)

	IF Nameconf = .T. .AND. FullLoc <> "NONE OF THESE"
		@ 1,1 CLEAR TO 3,58
		@ 1,3 SAY "Job chosen from Knowledge Bank: "
		@ 4,1 CLEAR TO 18,58
		IF LocGot = .T.
			@ 3,3 SAY Jobgot + " " + FullLoc COLOR BG+/N
		ELSE
			@ 3,3 SAY Jobgot COLOR BG+/N
		ENDIF
		
		@ 6,3 SAY "View Knowledge Bank information for this job?"
		@ 10,36 SAY  " Use arrow keys     " COLOR GB/N
		@ 11,36 SAY  " to highlight choice" COLOR GB/N
		@ 12,36 SAY " then press Enter.  " COLOR GB/N

		Answer = " "
		DO YesNo
		IF Answer = "Y"
			USE IN A
			DO Viewbank
		ELSE
			DO Getout
		ENDIF

	ELSE
		@ 3,3 SAY Jobgot COLOR BG+/N
		@ 1,3 CLEAR TO 1,68
		IF FullLoc <> "NONE OF THESE"
			@ 1,3 SAY "This name isn't in the Knowledge Bank:"
		ELSE
			@ 1,3 SAY "This job name isn't informative enough:"
		ENDIF

		@ 4,3 CLEAR TO 18,58
		@ 6,3 SAY "Try an alternative name for this job?"
		Answer = " "
		DO YesNo
		IF Answer = "N"
			DO Getout
		ENDIF

	ENDIF

RETURN
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
* END OF PROCEDURES TO GET JOB NAME
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
* BEGINNING OF PROCEDURES TO DISPLAY "COMMONEST PROBLEMS" SCREEN
* -----------------------------------------------------------------------
* Programming from here onwards is better than for job name

* ------------------------------------------------------------------------
PROCEDURE Viewbank		&& Called from AskView
* ------------------------------------------------------------------------

* Procedure entered with Current (Thisjob) as active table
* Extracts required internal variables from Current (Thisjob)

	Jobgot = RTRIM(Jobgot)
	Supervisor = S
*	NoofFields = FLDCOUNT()

	IF LocGot = .T. .AND. FullLoc <> "NONE OF THESE"
		Jobgot = Jobgot + " " + FullLoc
	ENDIF

	SELECT A
	USE Cat_Prob ALIAS Genlist ORDER TopCats

	SET FILTER TO ((JC = " ") ;
	 .OR. (FirstCat $ JC .AND. .NOT. " "  $ FirstCat) ;
	 .OR. (SecondCat $ JC .AND. .NOT. " " $ SecondCat) ;
	 .OR. (ThirdCat $ JC .AND. .NOT. " " $ ThirdCat)) ;
	 .AND. ((SC = " ") ;
	 .OR.   (FirstSub $ SC .AND. .NOT. " " $ FirstSub) ;
	 .OR. (SecondSub $ SC .AND. .NOT. " " $ SecondSub)) ;		  
	.AND. (Jobname = " " .OR. Jobname = Jobgot)

	GO TOP

	SCAN

		Jobcat1 = LEFT(JC,2)
		Jobcat2 = SUBSTR(JC,4,2)
		Jobcat3 = RIGHT(JC,2)

		TopicCode = TC

		REPLACE D WITH .T.

		IF Key = .Y.

			SELECT ThisJob
	

			IF &TopicCode > " " .AND. Genlist->SC = " ";
			   .AND. ((Jobcat1 $ &TopicCode .AND. Jobcat1 <> " ") ;
				   .OR. (Jobcat2 $ &TopicCode .AND. Jobcat2 <> " ") ;
				   .OR.	(Jobcat3 $ &TopicCode .AND. Jobcat2 <> " ")) ;

				REPLACE Genlist->D WITH .F.

			ENDIF

			SELECT Genlist
		

		ENDIF

*		IF JC = LocCat .AND. E_P <> "E" .AND. OrCat = .F.
*			REPLACE D WITH .F.
*		ENDIF
		

	ENDSCAN

	GO TOP
	SCAN FOR D = .T.

		ThisTopic = TC
		ThisSubTop = TS
		Duplicated = .F.

		SKIP 1
		IF .NOT. EOF() .AND. TC = ThisTopic .AND. TS = ThisSubTop
			Duplicated = .T.
		ENDIF

		SKIP -1
		IF Duplicated = .T.
			REPLACE D WITH .F.
		ENDIF
	
		IF ((LocGot = .T. .AND. LocCat $ JC .AND. OrCat = .F.) ;
		    .OR. (ThisJob->S = .T.)) ;
		   .AND. E_P <> "E"
			
			REPLACE D WITH .F.

		ENDIF


	ENDSCAN

			
			
	DO ShowProbs

	*BROWSE
	*WAIT


	IF LASTKEY() = 27
			
		CarryOn = "N"
		DO Logsess

	ENDIF


	SET WINDOW OF MEMO TO
	SET BORDER TO
	DEACTIVATE POPUP


RETURN
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE ShowProbs
* -------------------------------------------------------------------------

	DEACTIVATE WINDOW Textbox

	SET BORDER TO NONE
	DEFINE POPUP Linkdisp FROM 5,4 TO 22,75

	GO TOP
	x = 1
	SCAN FOR D = .T.
		DEFINE BAR x OF Linkdisp PROMPT " " + HazProbs + " -  " + HPAreas
		x = x + 1
	ENDSCAN

	IF x = 1
		DEFINE BAR x OF Linkdisp PROMPT "No specific hazards or health problems listed for this job."
	ELSE
		x = x + 1
		DEFINE BAR x of Linkdisp PROMPT " I want to know about something not covered by any of these topics."

	ENDIF
	
	ON SELECTION POPUP Linkdisp DO GetTopic WITH Prompt()

	DO SetEndKey

	CarryOn = "Y"
	DO WHILE CarryOn = "Y"

		ScreenBanner = " COMMONEST PROBLEMS FOR: " + Jobgot
		IntroLine = " HAZARDS of this work may cause  ... HEALTH PROBLEMS in these areas: "
		IntroLine2 = " "
	
		DO Template
		IF x > 16
			@ 22,4 SAY "TO VIEW MORE: Use up and down arrow keys, OR <Page Up>, <Page Down> keys." COLOR GB/N
		ENDIF
		@ 21,0 SAY "2" COLOR GB/N
		@ 24,56 FILL TO 24,79
		@ 24,58 SAY "Quit this job: <End>" COLOR GB+/N
		SAVE SCREEN TO CommProbs

		DO Keytrap
		ACTIVATE POPUP Linkdisp
		DO Trapkill

	ENDDO

RETURN
* -----------------------------------------------------------------------


* -------------------------------------------------------------------------
PROCEDURE GetTopic
* -------------------------------------------------------------------------
PARAMETERS Prompt
	
	TopicGot = SPACE(30)
	RelTop1 = SPACE(20)
	RelTop2 = SPACE(20)
	Issue = SPACE(3)		
	SubTop = SPACE(2)
	AllTops = .F.


	SELECT B
	USE Topics ALIAS Topicfile ORDER TopCats

	DO CASE

		CASE "I want to know" $ Prompt

			AllTops = .T.

			@ 4,4 CLEAR TO 22,75 	
			DEFINE POPUP TopicPop FROM 4,3 TO 23,40 PROMPT FIELD TopicName
			@ 2,4 FILL TO 2,76
			@ 2,4 SAY "KNOWLEDGE BANK TOPICS LIST" COLOR GB+/N
			@ 8,42 SAY  " Select the Knowledge Bank      " COLOR GB/N
			@ 9,42 SAY  " topic you want                 " COLOR GB/N
			@ 10,42 SAY " from the list on the left.     " COLOR GB/N
			@ 17,42 SAY " View more: <PageUp>,<PageDown> " COLOR GB/N

			ON SELECTION POPUP TopicPop DO AllTopics WITH PROMPT()        

			ACTIVATE POPUP TopicPop	

			SELECT TopicFile

		OTHERWISE
        
			Hazard = SUBSTR(Prompt,2,35)
			Symptom = RIGHT(Prompt,30)
        
			SELECT Genlist
			GO TOP
			LOCATE FOR Hazprobs = Hazard .AND. HPAreas = Symptom
			Issue = TC
			SubTop = TS
			RelTops = Related

			SELECT TopicFile
			GO TOP
			SEEK LEFT(RelTops,3)
			IF FOUND()
				RelTop1 = TopicName
			ENDIF
        
			GO TOP
			SEEK RIGHT(RelTops,3)
			IF FOUND()
				RelTop2 = TopicName
			ENDIF
			
			GO TOP
			LOCATE FOR TC = Issue .AND. SubTop = TS        
			TopicGot = RTRIM(TopicName)

	ENDCASE

	DO ShowTopic
	
	RELEASE SCREEN TopicIntro

	RESTORE SCREEN FROM CommProbs

RETURN
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE ShowTopic
* -------------------------------------------------------------------------

	ScreenBanner = " Information about: " + RTRIM(TopicGot) + " for " + Jobgot
	IntroLine = " "
	IntroLine2 = " "
	
	DO Template


	SET BORDER TO
	DEFINE WINDOW Memotext FROM 4,4 TO 22,54 NONE COLOR ,N/W
	@ 1,1 GET TopicText OPEN WINDOW Memotext
	
	
	IF POPUP() <> "INFOPOP"
	DEFINE POPUP Infopop FROM 5,55 to 21,76
	DEFINE BAR 1 OF Infopop PROMPT "HAZARDS INFORMATION"
	DEFINE BAR 2 OF Infopop PROMPT "MEDICAL INFORMATION"
	DEFINE BAR 3 OF Infopop PROMPT "PREVENTION"
	DEFINE BAR 4 OF Infopop PROMPT "LEGAL INFORMATION"
	DEFINE BAR 5 OF Infopop PROMPT "COMPENSATION"
	DEFINE BAR 6 OF Infopop PROMPT "ACTION"
	DEFINE BAR 8 OF Infopop PROMPT "DEFINITIONS"
	DEFINE BAR 10 OF Infopop PROMPT "Related Topics:" SKIP
	ENDIF

	DO CASE

		CASE RelTop1 <> SPACE(20)

			DEFINE BAR 11 OF Infopop PROMPT RelTop1

		CASE RelTop2 <> SPACE(20)

			DEFINE BAR 12 OF Infopop PROMPT RelTop2

		OTHERWISE
			IF RelTop1 = SPACE(20)
				DEFINE BAR 11 OF Infopop PROMPT "" SKIP
			ELSE
				DEFINE BAR 12 OF Infopop PROMPT "" SKIP
			ENDIF			
	ENDCASE
	@ 21,0 SAY "3" COLOR GB/N

	SAVE SCREEN TO TopicIntro	

	ON SELECTION POPUP Infopop DO GetInfo WITH Bar(), Prompt()
	IF POPUP() <> "INFOPOP"
		DO Keytrap
		ACTIVATE POPUP Infopop
		DO Trapkill
	ENDIF

	RELEASE SCREEN LawInfo

RETURN

* ---------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE AllTopics
* ------------------------------------------------------------------------
PARAMETERS Prompt

	TopicGot = RTRIM(Prompt)
	LOCATE FOR TopicGot $ TopicName
	Issue = TC
	SubTop = TS

	DEACTIVATE POPUP

RETURN
* ------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE GetInfo
* ------------------------------------------------------------------------

PARAMETERS Bar, Prompt


	* Law tables have to be set up here so can be accessed
	* from Prevention as well as Legal Info selection.

			SELECT D
			USE Lawlkup ALIAS LawNames ORDER LawId

			SELECT E
			USE Lawlines ALIAS LawSumm

			DO FilterSet

			SELECT F
			USE Reglines ALIAS LawRegs ORDER LawRegs


	DO CASE
		CASE BAR = 1

			InfoType = "Hazards"
			PickField = "Hazname"
			
			USE IN H
			SELECT H
			USE Hazlkup ALIAS Hazards ORDER Hazsubs

			DO StandardInf


		CASE BAR = 2

			InfoType = "Health Problems"
			PickField = "HPName"

			USE IN H
			SELECT H
			USE Medlkup ALIAS HealthPr ORDER HPName

			DO StandardInf
			
		CASE BAR = 3

			SELECT C 
			USE PrevLkup ALIAS PrevInfo

			DO PrevInf
		
		CASE BAR = 4

			DO LegalInf

		CASE BAR = 5

			USE IN D
			SELECT D
			USE CompLkup ALIAS CompNames

			DO CompInf
			

		CASE BAR = 6

			DO ActInf

		CASE BAR = 8

			SELECT G
			USE Glossary ALIAS Jargon ORDER Glosterm

			DO GlossDef

		CASE BAR = 11 .OR. BAR = 12

			SELECT TopicFile

			IF PROMPT > " "
				IF BAR = 11
					LOCATE FOR RelTop1 = TopicName
				ELSE	
					LOCATE FOR RelTop2 = TopicName
				ENDIF
			ENDIF

			TopicGot = TopicName
			Issue = TC
			SubTop = TS

			RelTop1 = SPACE(20)
			RelTop2 = SPACE(20)
			DO ShowTopic		
	

		ENDCASE
	

RETURN
* ------------------------------------------------------------------------

* --------------------------------------------------------------------------
* END OF TOPIC OPENING SCREEN PROCEDURES
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
* BEGINNING OF STANDARD INFORMATION PROCEDURES
* (Used for hazard and health problem info)
* ------------------------------------------------------------------------
* -------------------------------------------------------------------------
PROCEDURE StandardInf		&& Called from GetInfo
* -------------------------------------------------------------------------

	ScreenBanner = UPPER(InfoType) + " INFORMATION FOR: " + RTRIM(TopicGot) + " - " + Jobgot
	IntroLine = " "
	IntroLine2 = " "

	DO Template
	DO FilterSet

	GO TOP
*	BROWSE
*	WAIT

	DEFINE POPUP StdPop FROM 4,39 TO 22,75
	x = 1
	SCAN FOR MEMLINES(Notes) >= 1
		DEFINE BAR x of StdPop PROMPT &Pickfield
		x = x + 1
	ENDSCAN

	x = x + 1
	DEFINE BAR x OF StdPop PROMPT "Show full " + Infotype + " list"

	ON SELECTION POPUP StdPop DO ShowInfo WITH PROMPT()

	DO ExplInfo

	@ 21,0 SAY "4" COLOR GB/N
	IF Infotype = "Hazards"
		@ 22,0 SAY "H" COLOR GB/N
	ELSE
		@ 22,0 SAY "M" COLOR GB/N
	ENDIF

	SAVE SCREEN TO InfoIntro
	DO Keytrap
	ACTIVATE POPUP StdPop
	DO Trapkill
*	SET CURSOR OFF
*	WAIT ""
*	SET CURSOR ON

	RELEASE POPUPS StdPop, FullList
	SELECT TopicFile
	RELEASE SCREENS InfoIntro
	RESTORE SCREEN FROM TopicIntro


RETURN
* -------------------------------------------------------------------------

* ------------------------------------------------------------
PROCEDURE FilterSet
* ------------------------------------------------------------

   IF Subtop > " "
	SubToParam = "((Subtop $ TSC) .OR. (TSC <= SPACE(3)))"
   ELSE
	SubToParam = "(TSC <= SPACE(2))"
   ENDIF

	SET FILTER TO ((Issue $ TC .OR. TC = " ") .AND. &SubToParam) ; 
        .AND. ((JC = " ") ; 
	 .OR. (FirstCat $ JC .AND. .NOT. " "   $ FirstCat) ;
	 .OR. (SecondCat $ JC .AND. .NOT. " " $ SecondCat) ;
	 .OR. (ThirdCat $ JC .AND. .NOT. " " $ ThirdCat) ;
	 .OR. (FirstSub $ JSC .AND. .NOT. " " $ FirstSub) ;
	 .OR. (SecondSub $ JSC .AND. .NOT. " " $ SecondSub)) ;
	.AND. .NOT. (JCX > " "  .AND. FirstCat $ JCX) ;
	.AND. .NOT. (JCX > " " .AND. SecondCat $ JCX) ;
	.AND. .NOT. (JCX > " " .AND. ThirdCat $ JCX) ;
	.AND. .NOT. Issue $ TCX 

*BROWSE
*WAIT

RETURN
* ----------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE ShowInfo
* -------------------------------------------------------------------------
PARAMETERS Prompt

IF LASTKEY() = 13

	Infogot = Prompt

	IF "Show full" $ Infogot

		@ 4,4 CLEAR TO 22,75 	
		SET FILTER TO
		DEFINE POPUP FullList FROM 4,39 TO 22,75 PROMPT FIELD &PickField
		@ 2,4 FILL TO 2,76
		@ 2,4 SAY " KNOWLEDGE BANK " + UPPER(InfoType) + " LIST" COLOR GB+/N
		@ 8,6 SAY  " Select from the       " COLOR GB/N
		@ 9,6 SAY  " Knowledge Bank        " COLOR GB/N
		@ 10,6 FILL TO 10,28
		@ 10,7 SAY InfoType COLOR GB/N
		@ 11,6 SAY " in the list.          " COLOR GB/N
		@ 16,6 SAY " View more: <PageUp>,  " COLOR GB/N
		@ 17,6 SAY "            <PageDown> " COLOR GB/N

		ON SELECTION POPUP FullList DO AllEntries WITH PROMPT()        

		ACTIVATE POPUP FullList	

	ELSE

		DO GetNotes


	ENDIF	

	RESTORE SCREEN FROM InfoIntro

*	DO FilterSet


	@ 3,4 CLEAR TO 3,75

ENDIF

RETURN
* -----------------------------------------------------------------------

* ------------------------------------------------------------
PROCEDURE GetNotes
* ------------------------------------------------------------

		LOCATE FOR &PickField = InfoGot
		@ 3,4 CLEAR TO 22,76
		@ 3,6 SAY RTRIM(&PickField) COLOR N/GB 

		DEFINE WINDOW DefNotes FROM 4,6 TO 22,76 NONE COLOR N/W,N/W
		SAVE SCREEN TO DefScreen
		SET CURSOR OFF
		IF MEMLINES(Notes) >= 1
			@ 4,1 GET Notes OPEN WINDOW DefNotes
			WAIT ""
		ELSE
			ACTIVATE WINDOW DefNotes
			@ 2,2 SAY "Nothing in Knowledge Bank yet"
			WAIT ""
			DEACTIVATE WINDOW DefNotes		
		ENDIF

		SET CURSOR ON	
		RESTORE SCREEN FROM DefScreen
		RELEASE SCREEN DefScreen
		RELEASE WINDOWS DefNotes	

RETURN
* ------------------------------------------------------------

* ------------------------------------------------------------
PROCEDURE AllEntries
* ------------------------------------------------------------
PARAMETERS Prompt

	InfoGot = Prompt
	SAVE SCREEN TO ThisScreen	
	DO GetNotes
	@ 3,4 CLEAR TO 3,75
	RESTORE SCREEN FROM ThisScreen
	RELEASE SCREENS ThisScreen


*	DEACTIVATE POPUP

RETURN
* ------------------------------------------------------------


* -------------------------------------------------------------------------
PROCEDURE ExplInfo
* -------------------------------------------------------------------------

	IF x > 2

		@ 6,4 SAY "For the topic of"
		@ 7,4 SAY RTRIM(Topicgot) + ","
 		@ 8,4 SAY "the Popup lists"
		@ 9,4 SAY "the " + InfoType
		@ 10,4 SAY "you're most likely to          "
		@ 11,4 SAY "be concerned about as      "
	
		IF LEFT(JobGot,1) $ "AEIOU"
			@ 12,4 SAY "an"
			Hor = 7
		ELSE
			@ 12,4 SAY "a"
			Hor = 6
		ENDIF
	
		@ 12,Hor SAY LOWER(RTRIM(JobGot)) + "."


	ELSE

		@ 5,4 SAY "Knowledge bank has no"
		@ 6,4 SAY "specific " + InfoType
		@ 7,4 SAY "information for this"
		@ 8,4 SAY "job and topic."
		@ 9,4 SAY "The previous screen gives"
		@ 10,4 SAY "you general information"
		@ 11,4 SAY "about the "
		@ 12,4 SAY Infotype + " of"
		@ 13,4 SAY RTRIM(Topicgot) + "."

		@ 16,4 FILL TO 20,29
		@ 16,4 SAY " Press <Esc> to return  " COLOR GB/N
		@ 17,4 SAY " to previous screen.    " COLOR GB/N
		@ 18,4 SAY " Press <Enter> to view  " COLOR GB/N
		@ 19,4 SAY " full " + InfoType COLOR GB/N
		@ 20,4 SAY " listing.               " COLOR GB/N

	ENDIF

	IF x > 17

		@ 16,6 SAY " The picklist doesn't  " COLOR GB/N
		@ 17,6 SAY " all fit in the box ..." COLOR GB/N
		@ 18,6 SAY " Press <Page Down> key " COLOR GB/N
		@ 19,6 SAY " for more choices.     " COLOR GB/N

	ENDIF

	IF AllTops = .T.

		@ 16,6 SAY " If you chose a topic  " COLOR GB/N
		@ 17,6 SAY " which isn't usually   " COLOR GB/N
		@ 18,6 SAY " relevant to this job, " COLOR GB/N
		@ 19,6 SAY " the list displayed may" COLOR GB/N
		@ 20,6 SAY " not seem very logical." COLOR GB/N
	ENDIF

RETURN
* ------------------------------------------------------------------------
* END OF HAZARDS/HEALTH PROBLEM INFORMATION PROCEDURES
* ------------------------------------------------------------------------

* ------------------------------------------------------------------------
* BEGINNING OF PREVENTION INFORMATION PROCEDURES
* ------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE PrevInf		&& Called from GetInfo
* ------------------------------------------------------------------------
 
	ScreenBanner = " PREVENTION INFO: " + RTRIM(TopicGot) + " - " + Jobgot
	IntroLine = " "
	IntroLine2 = " "
	
	DO Template

	
	DEFINE POPUP Prevlink FROM 9,48 TO 12,73
	DEFINE BAR 1 OF Prevlink PROMPT "GUIDELINES & ADVICE"
	DEFINE BAR 2 OF Prevlink PROMPT "LEGAL INFORMATION"

	ON SELECTION POPUP Prevlink DO PrevType WITH BAR()

	SELECT PrevInfo

	LOCATE FOR TC = "GEN"
	DEFINE WINDOW PrevOpen FROM 4,6 TO 21,74 NONE COLOR N/W,N/W
	@ 3,1 GET Notes OPEN WINDOW PrevOpen

	@ 21,0 SAY "4" COLOR GB/N
	@ 22,0 SAY "P" COLOR GB/N

	SAVE SCREEN TO PrevIntro

	DO Keytrap
	ACTIVATE POPUP Prevlink
	DO Trapkill
	RELEASE WINDOWS PrevOpen
	RELEASE POPUPS Prevlink
	
	SELECT TopicFile
	RELEASE SCREEN PrevIntro
	RELEASE SCREEN PrevScreen
	RESTORE SCREEN FROM TopicIntro


RETURN
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
PROCEDURE PrevType		&& Called from PrevInf
* -----------------------------------------------------------------------
PARAMETERS Bar

	DO CASE

	CASE BAR() = 2

		PrevType = "LEGAL"

	CASE BAR() = 1

		PrevType = "ADVICE"

	ENDCASE
	
	IF PrevType = "LEGAL"

		DO LegalInf

	ELSE
		DO PrevAdvice	

	ENDIF
	
	RESTORE SCREEN FROM PrevIntro

RETURN
* -----------------------------------------------------------------------


* -------------------------------------------------------------------------
PROCEDURE PrevAdvice		&& Called from Prevtype
* -------------------------------------------------------------------------


	SELECT PrevInfo 
*	SET FILTER TO ;
*	(TC = " ");
*	.OR. (Issue $ TC .AND. (TSC = " " .OR. TSC = SubTop))

	DO FilterSet

	DEFINE POPUP Prevtypes FROM 6,4 TO 22,75
	x = 1
	SCAN FOR TC <> "GEN"
		DEFINE BAR x OF Prevtypes PROMPT Prevline
		x = x + 1
	ENDSCAN

	IF x = 1
		DEFINE BAR x OF Prevtypes PROMPT;
		 "No further prevention information for this topic." SKIP
		DEFINE BAR x + 1 OF Prevtypes PROMPT;
		 "Please refer to LEGAL information & opening Topic Screen." SKIP
	ENDIF

	ON SELECTION POPUP Prevtypes DO PrevNotes WITH PROMPT()
	ON POPUP Prevtypes DO ShowPrev WITH PROMPT()

	ScreenBanner = " Preventative measures: " + RTRIM(TopicGot) + " - " + Jobgot
	IntroLine = "These are the main preventative measures you should think"
	IntroLine2 = "about taking in relation to " + LOWER(TopicGot) + ":"
	
	DO Template

	@ 21,0 SAY "4" COLOR GB/N
	@ 22,0 SAY "P" COLOR GB/N

	SAVE SCREEN TO PrevScreen

	DO KeyTrap		
	ACTIVATE POPUP Prevtypes
	DO TrapKill
	SET ORDER TO


RETURN
* -------------------------------------------------------------------------


* ------------------------------------------------------------------------
PROCEDURE PREVNOTES
* ------------------------------------------------------------------------

PARAMETERS Prompt


	LOCATE FOR Prompt = Prevline
	LawRef = LAWID

	@ 4,4 CLEAR TO 22,75
	@ 4,4 SAY PrevLine COLOR W+/N

	DEFINE WINDOW Prevtext FROM 8,4 TO 22,75 NONE COLOR N/W,N/W
	
	SET CURSOR OFF
	
	IF MEMLINES(Notes) >= 1

		SAVE SCREEN TO PrevsGot		
		@ 0,1 GET Notes OPEN WINDOW Prevtext
		SET CURSOR OFF
		WAIT ""
		IF LawRef <> " "
			DO LinkLaw
		ENDIF
		SET CURSOR ON
		RESTORE SCREEN FROM PrevsGot
		RELEASE SCREEN PrevsGot

	ELSE
		
		IF LawRef = " "		
		
			ACTIVATE WINDOW Prevtext	
			@ 3,3 SAY "No Knowledge Bank info on this."
			WAIT ""
			DEACTIVATE WINDOW PrevText

		ELSE
			DO LinkLaw
		ENDIF

	ENDIF

	SET CURSOR ON
	
	RELEASE WINDOWS Prevtext
	RESTORE SCREEN FROM PrevScreen



RETURN
* ------------------------------------------------------------

* ------------------------------------------------------------
PROCEDURE LinkLaw
* ------------------------------------------------------------

			SELECT LawNames
			SEEK LawRef
			@ 4,4 CLEAR TO 22,75
			@ 6,4 SAY LawTitle COLOR N/GB
			@ 7,4 SAY Year

			DO LawDisp


			SELECT PrevInfo

RETURN
* ------------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE ShowPrev
* ------------------------------------------------------------------------
PARAMETERS Prompt


	LOCATE FOR Prevline = Prompt
	IF MEMLINES(Notes) > 1
		@ 22,8 SAY " Press <Enter> for more information " COLOR GB/N
	ELSE
		@ 22,8 TO 22,44
	ENDIF


RETURN
* ------------------------------------------------------------------------
* END OF PREVENTION INFORMATION PROCEDURES
* ------------------------------------------------------------------------


* ------------------------------------------------------------------------
* BEGINNING OF LEGAL INFORMATION PROCEDURES
* -------------------------------------------------------------------------
* -------------------------------------------------------------------------
PROCEDURE LegalInf		&& Called from GetInfo
* -------------------------------------------------------------------------

	ScreenBanner = " Legal information: " + RTRIM(TopicGot) + " - " + Jobgot
	IntroLine = "These are the laws which you are most likely to find relevant"
	IntroLine2 = " "
	
	DO Template
	DEFINE POPUP Lawlink FROM 8,4 TO 22,75

	SELECT LawSumm
	GO TOP
	x = 1
	SCAN
		DEFINE BAR x OF Lawlink PROMPT Lawline
		x = x + 1
	ENDSCAN


	ON POPUP Lawlink DO LawNames WITH PROMPT()
	ON SELECTION POPUP Lawlink DO RegLines WITH PROMPT()

	IF x > 12
		@ 23,40 SAY " View more: <PageUp>,<PageDown> " COLOR GB/N
	ENDIF

	@ 21,0 SAY "4" COLOR GB/N
	@ 22,0 SAY "L" COLOR GB/N

	SAVE SCREEN TO LawInfo

	DO KeyTrap		
	ACTIVATE POPUP Lawlink
	DO TrapKill

	SELECT TopicFile

	RESTORE SCREEN FROM TopicIntro

RETURN
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE LawNames 		&& Called from LegalInf
* -------------------------------------------------------------------------
PARAMETERS Prompt

	LOCATE FOR Prompt = LawLine
	LawRef = LawID

	SELECT LawNames
	SEEK LawRef
	@ 6,4 CLEAR TO 7,74
	@ 6,4 SAY LawTitle COLOR N/GB
	@ 7,4 SAY Year

	SELECT LawSumm

RETURN
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE Reglines		&& Called from LegalInf
* -------------------------------------------------------------------------
PARAMETERS Prompt

	LOCATE FOR Prompt = LawLine
	LawRef = LawID

	DO LawDisp

	SELECT LawSumm

RETURN
* -------------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE LawDisp
* ------------------------------------------------------------------------

	SELECT LawNames
	SEEK LawRef
	LawGot = LawTitle
	Date = Year

	SET CURSOR OFF
	SAVE SCREEN TO LawScreen
	
	DEFINE WINDOW Lawtext FROM 9,5 TO 21,74 NONE COLOR N/W,N/W

	IF MEMLINES(Notes) >= 1
		@ 1,1 GET Notes OPEN WINDOW Lawtext
		WAIT ""
	ELSE
		ACTIVATE WINDOW Lawtext	
		@ 3,3 SAY "No introductory info on this law in the Knowledge Bank."
		WAIT ""
		DEACTIVATE WINDOW LawText
	ENDIF

	RESTORE SCREEN FROM LawScreen

	SET CURSOR ON

	DO RegPop



	RELEASE WINDOWS LawText


RETURN
* ------------------------------------------------------------------------


* -------------------------------------------------------------------------
PROCEDURE RegPop
* ------------------------------------------------------------------------


	DEFINE POPUP Reglink FROM 8,4 TO 22,75
	SELECT LawRegs
	x = 1
	SCAN FOR LawID = LawRef
		DEFINE BAR x of Reglink PROMPT Regline
		x = x + 1
	ENDSCAN
	

	ON POPUP Reglink DO RegNumber WITH PROMPT()


	IF x > 1

		DEFINE WINDOW SeeRegs FROM 9,6 TO 19,60 DOUBLE
		ACTIVATE WINDOW SeeRegs
		@ 1,1 SAY "Do you want more specific information about"
		@ 2,1 SAY "the REGULATIONS under this law?"
		Vert = 4
		Hor = 20
		Answer = " "
		DO WindYesNo

		DEACTIVATE WINDOW SeeRegs
		RELEASE WINDOWS SeeRegs

		IF Answer = "Y"
		
			@ 4,4 CLEAR TO 5,76
			@ 4,4 SAY "Select a regulation you want to know more about:" COLOR N/W

			SAVE SCREEN TO SelectReg

			ACTIVATE POPUP Reglink


			RESTORE SCREEN FROM SelectReg

		ENDIF
	
	ENDIF



RETURN
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE RegNumber
* -------------------------------------------------------------------------
PARAMETERS Prompt


	LOCATE FOR Prompt = Regline
	@ 4,4 CLEAR TO 5,76

	@ 4,4 SAY " REGULATION "  COLOR W+/N
	@ 4,16 SAY Regno COLOR W+/N

	IF MEMLINES(Notes) < 1
	 	@ 24,0 FILL TO 24,32
	ENDIF

RETURN
* -------------------------------------------------------------------------
* END OF LAW INFORMATION PROCEDURES
* --------------------------------------------------------------------------


* ---------------------------------------------------------------------------
* BEGINNING OF COMPENSATION INFORMATION PROCEDURES
* -------------------------------------------------------------------------
	
* -------------------------------------------------------------------------
PROCEDURE CompInf		&& Called from GetInfo
* -------------------------------------------------------------------------

	ScreenBanner = " COMPENSATION INFORMATION: " + RTRIM(TopicGot) + " - " + Jobgot
	IntroLine = " "
	IntroLine2 = " "
	
	DO Template

	DEFINE POPUP Complink FROM 11,50 TO 14,75
	DEFINE BAR 1 OF Complink PROMPT "DSS COMPENSATION"
	DEFINE BAR 2 OF Complink PROMPT "COMMON LAW COMPENSATION"

	ON SELECTION POPUP Complink DO CompType WITH BAR()


	LOCATE FOR CompId = "GENCOMP"
	DEFINE WINDOW CompOpen FROM 4,4 TO 22,75 NONE COLOR N/W,N/W
	@ 3,1 GET Notes OPEN WINDOW CompOpen

	@ 21,0 SAY "4" COLOR GB/N
	@ 22,0 SAY "C" COLOR GB/N

	SAVE SCREEN TO CompIntro

	DO Keytrap
	ACTIVATE POPUP Complink
	DO Trapkill

	RELEASE WINDOWS CompOpen

	SELECT TopicFile
	RELEASE SCREEN CompIntro
	RESTORE SCREEN FROM TopicIntro

	USE IN D
	SELECT D
	USE Lawlkup ALIAS LawNames ORDER LawId


RETURN
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
PROCEDURE CompType		&& Called from CompInf
* -----------------------------------------------------------------------
PARAMETERS Bar

	DO CASE

	CASE BAR() = 1

		CompType = "DSS"

	CASE BAR() = 2

		CompType = "CLC"

	ENDCASE
	
	DO ShowComp


RETURN
* -----------------------------------------------------------------------


* -------------------------------------------------------------------------
PROCEDURE ShowComp		&& Called from Comptype
* -------------------------------------------------------------------------


	@ 2,4 CLEAR TO 2,76
	@ 2,4 TO 2,77 DOUBLE
	IF CompType = "DSS"
		@ 2,4 SAY " DSS COMPENSATION INFORMATION: ALL JOBS AND TOPICS " COLOR W+/N
	ELSE
		@ 2,4 SAY " COMMON LAW COMPENSATION: ALL JOBS AND TOPICS " COLOR W+/N
	ENDIF


	IF CompType = "DSS"

		SET ORDER TO CompNames
		GO TOP
		DEFINE POPUP Comptypes FROM 6,4 TO 22,75
		x = 1
		SCAN
			DEFINE BAR x OF Comptypes PROMPT Summary
			x = x + 1
		ENDSCAN

		ON POPUP Comptypes DO CompNames WITH PROMPT()
		ON SELECTION POPUP Comptypes DO DSSNotes WITH PROMPT()

		@ 3,4 CLEAR TO 6,76
		@ 5,4 SAY "The above compensation applies for the topic highlighted in the list:"

		DO KeyTrap		
		ACTIVATE POPUP Comptypes
		DO TrapKill
		SET ORDER TO

	ELSE
		LOCATE FOR Type = "EMP"
		DO CommNotes

	ENDIF		


	RESTORE SCREEN FROM CompIntro

RETURN
* -------------------------------------------------------------------------


* -------------------------------------------------------------------------
PROCEDURE CompNames	&& Called from DSSComp
* -------------------------------------------------------------------------
PARAMETERS Prompt

	LOCATE FOR Prompt = Summary
	@ 4,4 CLEAR TO 4,76
	@ 4,4 SAY CompName COLOR N/GB

RETURN
* -------------------------------------------------------------------------


* ------------------------------------------------------------------------
PROCEDURE DSSNotes	&& Called from DSSComp
* -------------------------------------------------------------------------

PARAMETERS Prompt


	LOCATE FOR Prompt = Summary

	DO CommNotes


RETURN
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE CommNotes		&& Called from ShowComp
* -------------------------------------------------------------------------

	SAVE SCREEN TO CompScreen
	@ 4,4 CLEAR TO 5,76
	@ 4,4 SAY CompName COLOR N/GB

	DEFINE WINDOW Comptext FROM 6,4 TO 22,76 NONE COLOR N/W,N/W
	
	SET CURSOR OFF
	IF MEMLINES(Notes) >= 1
		@ 0,1 GET Notes OPEN WINDOW Comptext
		WAIT ""
	ELSE
		
		ACTIVATE WINDOW Comptext	
		@ 3,3 SAY "No Knowledge Bank info on this compensation."
		WAIT ""
		DEACTIVATE WINDOW CompText
		
	ENDIF
	SET CURSOR ON
	
	RELEASE WINDOWS Comptext
	RESTORE SCREEN FROM CompScreen
	RELEASE SCREEN CompScreen


RETURN
* ------------------------------------------------------------------------
* END OF COMPENSATION PROCEDURES

* ------------------------------------------------------------------------
PROCEDURE ActInf
* -----------------------------------------------------------------------

	@ 21,0 SAY "4" COLOR GB/N
	@ 22,0 SAY "A" COLOR GB/N

	DEFINE WINDOW ActNotes FROM 4,4 TO 22,76 COLOR N/W,N/W
	ACTIVATE WINDOW ActNotes
	@ 1,8 SAY " ACTION INFORMATION hasn't yet been " COLOR GB+/N
	@ 2,8 SAY " added to the Knowledge Bank.       " COLOR GB+/N
	@ 4,8 SAY "It will include relevant organisations,"
	@ 5,8 SAY "campaigns, publications and so on."
	@ 6,8 SAY "It could be developed so that it"
	@ 7,8 SAY "hooked up to existing bibliographies"
	@ 8,8 SAY "and listings. All offers of possible"
	@ 9,8 SAY "data to use are very welcome."
	@ 10,8 SAY "Almost anything saved in a table format"
	@ 11,8 SAY "whether it's word processed, spreadsheet,"
	@ 12,8 SAY "or database, should be usable"
	@ 13,8 SAY "whatever software it was created in."

	@ 15,8 SAY " PRESS ANY KEY TO CONTINUE " COLOR GB+/N 

	SET CURSOR OFF
	WAIT ""
	SET CURSOR ON

	DEACTIVATE WINDOW ActNotes
	RELEASE WINDOWS ActNotes

	RESTORE SCREEN FROM TopicIntro


RETURN
* -----------------------------------------------------------------------


* GLOSSARY PROCEDUES (DEFINITIONS)
* -------------------------------------------------------------------------
PROCEDURE GlossDef
* -------------------------------------------------------------------------

	ScreenBanner = "DEFINITIONS: ALL JOBS AND TOPICS"
	IntroLine = " "
	IntroLine2 = " "

	DO Template

	SELECT Jargon
	GO TOP

	DEFINE POPUP GlossPop FROM 6,4 TO 22,46
	x = 1
	SCAN
		DEFINE BAR x OF  GlossPop PROMPT Term
		x = x + 1
	ENDSCAN

	ON SELECTION POPUP GlossPop DO GlossDisp WITH PROMPT()
	ON POPUP GlossPop DO ShowTerm WITH PROMPT()

	DO KeyTrap
	
	@ 8,48 SAY " The definition of the      " COLOR W/N
	@ 9,48 SAY " highlighted item displays  " COLOR W/N
	@ 10,48 SAY " above the picklist.        " COLOR W/N

	@ 19,48 SAY " Use <Page Up>, <Page Down> " COLOR GB/N
	@ 20,48 SAY " and Arrow Keys             " COLOR GB/N
	@ 21,48 SAY " to browse through the list." COLOR GB/N
	@ 21,0 SAY "4" COLOR GB/N
	@ 22,0 SAY "G" COLOR GB/N

	ACTIVATE POPUP GlossPop
	DO TrapKill

	SELECT TopicFile

	RESTORE SCREEN FROM TopicIntro

RETURN
* -----------------------------------------------------------------------


* -----------------------------------------------------------------------
PROCEDURE GlossDisp
* -----------------------------------------------------------------------
PARAMETERS Prompt

IF LASTKEY() = 13

	LOCATE FOR Term = Prompt

	DEFINE WINDOW DefNotes FROM 6,4 TO 22,76 COLOR N/W,N/W
	IF MEMLINES(Notes) >= 1
		SAVE SCREEN TO DefScreen
		@ 4,1 GET Notes OPEN WINDOW DefNotes
		SET CURSOR OFF
		WAIT ""
		SET CURSOR ON	
		RESTORE SCREEN FROM DefScreen
		RELEASE SCREEN DefScreen
	ENDIF

	RELEASE WINDOWS DefNotes

ENDIF

RETURN
* -----------------------------------------------------------------------

* -----------------------------------------------------------------------
PROCEDURE Showterm
* -----------------------------------------------------------------------
PARAMETERS Prompt

	LOCATE FOR Term = Prompt
	@ 4,4 CLEAR TO 5,76
	@ 4,4 SAY RTRIM(Term) COLOR N/GB
	@ 5,4 CLEAR TO 5,76
	@ 5,4 say LEFT(DefSumm,72)
	IF Memlines(Notes) > 1
		@ 12,48 SAY " Press <Enter> for more     " COLOR GB+/N
		@ 13,48 SAY " information                " COLOR GB+/N
	ELSE
		@ 12,48 CLEAR TO 13,76
	ENDIF

RETURN
* ------------------------------------------------------------------------
* END OF GLOSSARY DEFINITIONS PROCEDURES
* -----------------------------------------------------------------------

* -------------------------------------------------------------------------
* GETTING OUT AND LOGGING PROCEDURES
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE SetEndKey		&& Called from ViewBank
* -------------------------------------------------------------------------

ON KEY LABEL End DO ThatsIt

PROCEDURE ThatsIt

	DEFINE WINDOW Checkout FROM 6,20 TO 16,53 DOUBLE COLOR N/W
	ACTIVATE WINDOW Checkout
	@ 1,1 SAY " Sure you've finished viewing " COLOR GB+/N
	@ 2,1 SAY " information for this job?    " COLOR GB+/N
	Answer = " "
	Vert = 3
	Hor = 10
	DO WindYesNo
	IF Answer = "Y"
		CarryOn = "N"
		ACTIVATE SCREEN
		CLEAR
		DO LogSess
		DEACTIVATE WINDOW ALL

		RETURN TO MASTER
	ELSE
		DEACTIVATE WINDOW Checkout
	ENDIF
RETURN
* -------------------------------------------------------------------------

* ------------------------------------------------------------------------
PROCEDURE LogSess	&& Called from ViewBank
* ------------------------------------------------------------------------

	@ 4,5 CLEAR TO 20,75
	@ 4,10 TO 16,65 DOUBLE COLOR GB/W
	SET CURSOR OFF

	@ 6,12 SAY "Did you find the Knowledge Bank information"
	@ 7,12 SAY "for this job useful?"

	@ 11,16 SAY "No use at all"
	@ 12,16 SAY "Slightly useful"
	@ 13,16 SAY "Useful"
	@ 14,16 SAY "Very useful"
	
	@ 11,39 SAY " Select your rating " COLOR BG/N
	@ 12,39 SAY " then press <Enter> " COLOR BG/N

	DEFINE POPUP Rating FROM 9,33 TO 15,36

	DEFINE BAR 1 OF Rating PROMPT ""
	DEFINE BAR 2 OF Rating PROMPT "4"
	DEFINE BAR 3 OF Rating PROMPT "3"
	DEFINE BAR 4 OF Rating PROMPT "2"
	DEFINE BAR 5 OF Rating PROMPT "1"

	ON SELECTION POPUP Rating DO LogAdd WITH BAR()
	ACTIVATE POPUP Rating
	SET CURSOR ON

RETURN
* -------------------------------------------------------------------------

* -------------------------------------------------------------------------
PROCEDURE LogAdd		&& Called from LogSess
* -------------------------------------------------------------------------
PARAMETERS Bar

  IF Bar() <> 1

	@ 5,12 CLEAR TO 15,64
	SELECT UserRec

	DO CASE

		CASE Bar() = 5
			REPLACE Rating WITH 1
			@ 5,20 SAY "The Knowledge Bank is pleased"
			@ 6,20 SAY "that you found it useful."

		CASE Bar() = 4
			REPLACE Rating WITH 2
			@ 5,20 SAY "The Knowledge Bank is pleased"
			@ 6,20 SAY "that you found it useful."


		CASE Bar() = 3

			REPLACE Rating WITH 3

		CASE Bar() = 2

			REPLACE Rating WITH 4
			@ 5,20 SAY "Sorry the Knowledge Bank"
			@ 6,20 SAY "couldn't help you."
			@ 7,20 SAY "Occupational Health advice is available from:"




	ENDCASE					

	@ 10,20 SAY "Comments would be welcomed"
	@ 11,20 SAY "on how to improve the Program."
	@ 12,20 SAY "Please contact Jos Kingston"
	@ 13,20 SAY "(0114) 2810146"
	@ 14,20 SAY "Email: J.R.Kingston@SHU.AC.UK"

	@ 18,27 SAY "PRESS ANY KEY TO FINISH" COLOR GB+/N
	@ 24,0 CLEAR TO 24,79
	@ 24,14 SAY " This is the CLOSING SCREEN of the Knowledge Bank " COLOR GB+/N

	@ 0,3 SAY  "               Knowledge Engineers:   Taz Aziz, Maurice Birch"
	@ 1,3 SAY  "   Author/Programmer: Jos Kingston    Project Facilitator: Seb Schmoller"
	@ 2,3 SAY  "--------------------------------------------------------------------------" COLOR GB/W
	@ 20,3 SAY "--------------------------------------------------------------------------" COLOR GB/W
	@ 21,3 SAY "Developed by Sheffield Trade Union Studies Centre at Sheffield College with" 
	@ 22,3 SAY "funding from European Year of Safety, Hygiene & Health Protection at Work. "

	WAIT ""

	REPLACE TimeOut WITH TIME()

	DEACTIVATE POPUP

    ENDIF

RETURN

* -------------------------------------------------------------------------

* --------------------------------------------------------------------------
PROCEDURE Getout
* --------------------------------------------------------------------------
	Nameconf = .T.

RETURN
* -------------------------------------------------------------------------


* ------------------------------------------------------------------------
PROCEDURE AreYouSure	&& Not in use
* ------------------------------------------------------------------------

		@ 1,2 SAY "Are you sure you've finished"
		@ 2,2 SAY "looking at Knowledge Bank information"
		@ 3,2 SAY "for this job?"

		@ 5,2 SAY " Press <Esc>   " COLOR GB+/N
		@ 6,2 SAY " if you have finished"
		@ 8,2 SAY " Press <Enter> " COLOR GB+/N
		@ 9,2 SAY " to return to the Topics List for this job"

		Keypress = INKEY(0)
		IF Keypress = 27
			CarryOn = "N"
			DO Logsess
		ENDIF

RETURN
* ------------------------------------------------------------------------

* -------------------------------------------------------------------------
* END OF GETTING OUT AND LOGGING PROCEDURES
* -------------------------------------------------------------------------


* ------------------------------------------------------------------------
* SCREEN LAYOUT
* -------------------------------------------------------------------------
PROCEDURE Template	&& Basic screen layout
* -------------------------------------------------------------------------	

* Variables to be initialised from calling procedure
	
*	ScreenBanner = "SCREEN HEADER INFO APPEARS HERE"
*	IntroLine = "An introductory sentence appears here."
*	IntroLine2 = "A second introductory sentence might appear here."
	
	CLEAR
	@ 0,0 FILL TO 0,79
	@ 0,0 SAY "YOUR WORK AND YOUR HEALTH KNOWLEDGE BANK" COLOR W+/N
	@ 0,51 SAY "PRESS <End> TO QUIT THIS JOB" COLOR GB+/N
	@ 24,0 SAY "Highlight Topic & press <Enter>  Printout:<Print Screen>  Back one Screen:<Esc> " COLOR GB+/N
	@ 2,2 CLEAR TO 23,77
	@ 2,2 TO 23,77 DOUBLE COLOR N/W
	@ 2,4 FILL TO 2,75
	@ 2,4 SAY LEFT(ScreenBanner,71) COLOR GB+/N
	@ 4,4 SAY IntroLine
	@ 5,4 SAY IntroLine2

RETURN
* -------------------------------------------------------------------------



* ------------------------------------------------------------------------
* STANDARD UTILITY PROCEDURES
* ------------------------------------------------------------------------


* ------------------------------------------------------------------------
PROCEDURE YesNo 
* ------------------------------------------------------------------------

	* Standard "Yes/No" popup: related procedure GetYesNo

	DEFINE POPUP YesNo FROM 9,24 TO 13,34
	DEFINE BAR 1 OF YesNo PROMPT "Yes"
	DEFINE BAR 2 OF YesNo PROMPT "No"

	ON SELECTION POPUP YesNo DO GetYesNo WITH BAR()

	Answer = " "
	DO WHILE Answer = " "
		ACTIVATE POPUP YesNo
	ENDDO

RETURN

* ---------------------------------------------------------------

* --------------------------------------------------------------------
PROCEDURE OKEdit
* --------------------------------------------------------------------


	DEFINE POPUP Carryon FROM 16,50 TO 20,60
	DEFINE BAR 1 OF Carryon PROMPT "OK"
	DEFINE BAR 2 OF Carryon PROMPT "Edit"

	ON SELECTION POPUP Carryon DO GetOK WITH BAR()

	Add = " "
	DO WHILE Add = " "
		ACTIVATE POPUP CarryOn
	ENDDO


RETURN

* ----------------------------------------------------------------------------

* ----------------------------------------------------------------------------
PROCEDURE WindEdit
* ---------------------------------------------------------------------------
	
	* Variation on "Carry on" popup for use with variable co-ordinates
	
	DEFINE POPUP WindEdit FROM Vert, Hor TO Vert+4, Hor+10
	DEFINE BAR 1 OF WindEdit PROMPT "OK"
	DEFINE BAR 2 OF WindEdit PROMPT "Edit"


	ON SELECTION POPUP WindEdit DO GetOK WITH BAR()
	
	Add = " "
	DO WHILE Add = " "
		ACTIVATE POPUP  WindEdit
	ENDDO

RETURN
* --------------------------------------------------------------------------

* ------------------------------------------------------------
PROCEDURE WindYesNo
* ------------------------------------------------------------

	DEFINE POPUP WindYesNo FROM Vert, Hor TO Vert+4, Hor+9
	DEFINE BAR 1 OF WindYesNo PROMPT "Yes"
	DEFINE BAR 2 OF WindYesNo PROMPT "No"

	ON SELECTION POPUP WindYesNo DO GetYesNo WITH BAR()

	Answer = " "
	DO WHILE Answer = " "
		ACTIVATE POPUP WindYesNo
	ENDDO

RETURN

* ----------------------------------------------------------------      



* Procedures called from the standard popups:

* ---------------------------------------------------------------------------
PROCEDURE GetYesNo              && Called from YesNo popup
* ---------------------------------------------------------------------------

PARAMETERS Bar

	DO CASE
		CASE BAR() = 1
			Answer = "Y"
			DEACTIVATE POPUP
		
		CASE BAR() = 2
			Answer = "N"
			DEACTIVATE POPUP
	ENDCASE

	
RETURN



* -----------------------------------------------------------------
PROCEDURE GetOK         && Called from CarryOn popup
* -----------------------------------------------------------------

PARAMETERS Bar

    Add = " "

	DO CASE
		CASE BAR() = 1
			Add = "N"
			DEACTIVATE POPUP
		
		CASE BAR() = 2
			Add = "Y"
			DEACTIVATE POPUP
	ENDCASE


RETURN

* ---------------------------------------------------------------------



* -------------------------------------------------------------------------
PROCEDURE KeyTrap       && defines keys to prevent accidental popup escapes
* ------------------------------------------------------------------------- 

	ON KEY LABEL LeftArrow DO Badkey
	ON KEY LABEL RightArrow DO Badkey

RETURN

* N.B. DON'T FORGET to use TrapKill to reset key trap


PROCEDURE Badkey

	Retry
RETURN
* --------------------------------------------------------------------------


* --------------------------------------------------------------------------
PROCEDURE TrapKill
* --------------------------------------------------------------------------

	ON KEY LABEL LeftArrow
	ON KEY LABEL RightArrow
RETURN
* --------------------------------------------------------------------------

* --------------------------------------------------------------------------
* END OF STANDARD UTILITY PROCEDURES
* --------------------------------------------------------------------------

* END OF PROGRAM
