MESSAGE "Generating Office Library..."

Off_Lib  = "OFFICE"

CREATELIB Off_Lib SIZE 128


PROC Change_Date(Sign)
  if (SYSMODE() = "CoEdit") AND (FIELDTYPE() = "D") then
    if ISBLANK([]) then
      [] = TODAY()
      else if (Sign = 43) then
             [] = [] + 1
             else [] = [] - 1
           endif  
    endif
    else RETURN 0
  endif  
  RETURN 1
ENDPROC
WRITELIB Off_Lib Change_Date


PROC Main_Table_Edit()
  ; allowing editing of current table image, do not break wait
  if (SYSMODE() = "Main") then
    COEDITKEY
    MENUDISABLE "Edit\Mode"
    MENUDISABLE "Ask"
    MENUENABLE  "Main\Mode"
  endif
  RETURN 1                         
ENDPROC
WRITELIB Off_Lib Main_Table_Edit

PROC Main_Table_End_Edit()
  ; exit edit mode, if possible, do not break out of wait cycle
  if (HELPMODE() = "LookupHelp") then  ; if user was in lookup help and pressed
    RETURN 0                           ; F2 to select, do not exit wait loop
  endif  
  if NOT ISVALID() then            ; if in coedit and field data is not valid,
    MESSAGE "Error: The data for this field is not valid."
    RETURN 1                       ; do not exit wait
  endif  
  if ISFIELDVIEW() then            ; if in field view, do not exit wait loop
    DO_IT!
    RETURN 1
  endif  
  DO_IT!
  if (SYSMODE() = "Main") then     ; record posted successfully
    MENUDISABLE "Main\Mode"
    MENUENABLE  "Edit\Mode"
    MENUENABLE  "Ask"
  else ECHO NORMAL                 ; key violation exists
       DO_IT!
  endif       
  RETURN 1
ENDPROC
WRITELIB Off_Lib Main_Table_End_Edit


PROC Main_Table_Clear()
  ; exit edit mode by calling main mode, clear workspace and exit wait
  if (SYSMODE() = "CoEdit") then
    Main_Table_End_Edit()
  endif
  if (SYSMODE() = "Main") then
    ECHO OFF
    CLEARALL
    ECHO NORMAL     
    RETURN 2                     ; back in main mode so exit wait
    else RETURN 1                ; cannot get to main mode - wait continues
  endif
ENDPROC
WRITELIB Off_Lib Main_Table_Clear


PROC Display_Memo(Tbl)
  ; move to proper table image, then memo field, enter field view and pop up
  ; memo window - if available, wait until F2 is pressed
  if ISFIELDVIEW() then            ; if in field view, do not exit wait loop
    DO_IT!
  endif  
  if NOT ISVALID() then            ; if in coedit and field data is not valid,
    RETURN 0                       ; do not exit wait
  endif  
  MOVETO Tbl
  MOVETO FIELD "Memo"
  SHOWPULLDOWN
  ENDMENU
  CLEARSPEEDBAR
  if (Field() = "Memo") then
    ECHO OFF
    FIELDVIEW
    WINDOW HANDLE CURRENT TO Memo_Win
    DYNARRAY Atts[]
    DYNARRAY Colors[]
    Colors["1"] = 31
    Atts["ORIGINROW"] = 13
    Atts["ORIGINCOL"] = 0
    Atts["CANMOVE"]   = False
    Atts["CANRESIZE"] = False
    Atts["CANCLOSE"]  = False
    Atts["HEIGHT"]    = 11
    Atts["WIDTH"]     = 80
    Atts["HASSHADOW"] = FALSE
    Atts["TITLE"]     = " Memo "
    WINDOW SETATTRIBUTES Memo_Win FROM Atts
    WINDOW SETCOLORS Memo_Win FROM Colors
    PROMPT " Press F2 when finished."
    ECHO NORMAL
    WAIT FIELD
    UNTIL "F2"
    DO_IT!
    else MESSAGE "No memo field is available in this context."
  endif  
ENDPROC
WRITELIB Off_Lib Display_Memo


PROC Main_Table_Menu()
  SHOWPULLDOWN
    "Modify"    : "Toggle between edit and main mode"               : "Modify"
      SUBMENU
        "Edit Mode - F9" : "Allow data to be edited, deleted, etc." : "Edit\Mode",
        "Main Mode - F2" : "Discontinue editing"                    : "Main\Mode"
      ENDSUBMENU,
    "Ask"          : "Select data to report on"          : "Ask",
    "Close"        : "Return to main menu when finished" : ""
      SUBMENU
        "No      " : "Continue working with this table"  : "Close\No",
        "Yes - F8" : "Return to main menu"               : "Close\Yes"
      ENDSUBMENU
  ENDMENU    
  if ISEMPTY(TABLE()) then
    Main_Table_Edit()
    else if (SYSMODE() = "Main") then
           MENUDISABLE  "Main\Mode"
           else MENUDISABLE "Edit\Mode"
                MENUDISABLE "Ask"
         endif
  endif
ENDPROC
WRITELIB Off_Lib Main_Table_Menu


PROC Main_Table_View(Tbl, R, C)
  ; place table on workspace in form view
  ECHO OFF
  VIEW Tbl
  WINDOW MOVE GETWINDOW() TO -100, -100
  Main_Table_Menu()
  PICKFORM "1"
  WINDOW HANDLE CURRENT TO Form_Win
  DYNARRAY Win_Atts[]
  Win_Atts["ORIGINROW"] = R
  Win_Atts["ORIGINCOL"] = C
  Win_Atts["CANMOVE"]   = False
  Win_Atts["CANRESIZE"] = False
  Win_Atts["CANCLOSE"]  = False
  WINDOW SETATTRIBUTES Form_Win FROM Win_Atts
ENDPROC
WRITELIB Off_lib Main_Table_View


PROC View_Answer_Table(Tbl, R, C)
  WINDOW MOVE GETWINDOW() TO -100, -100
  PICKFORM "1"
  WINDOW HANDLE CURRENT TO Form_Win
  DYNARRAY Win_Atts[]
  Win_Atts["TITLE"] = "RECORDS MATCHING SELECTION CRITERIA"
  Win_Atts["ORIGINROW"] = R
  Win_Atts["ORIGINCOL"] = C
  Win_Atts["CANMOVE"]   = False
  Win_Atts["CANRESIZE"] = False
  Win_Atts["CANCLOSE"]  = False
  WINDOW SETATTRIBUTES Form_Win FROM Win_Atts
ENDPROC
WRITELIB Off_Lib View_Answer_Table


PROC Answer_Table_Wait_Proc(TriggerType, EventInfo, CycleNumber)
  PRIVATE Key_Code, Menu_Pick
  if (TriggerType = "ARRIVEFIELD") then
    PROMPT Fld_Prompt[FIELD()]
    RETURN 1
  endif
  if (EventInfo["TYPE"] = "KEY") then     ; check for hot keys 
    Key_Code = EventInfo["KEYCODE"]
    SWITCH
        ; F9 - COEDIT
        CASE (Key_Code = -67) : RETURN Edit_Mode()
        ; F2 - DO_IT!
        CASE (Key_Code = -60) : if ISEMPTY(Subset_Table) then
                                  RETURN Clear_Table()
                                  else RETURN Main_Mode()
                                endif  
        ; F8 - CLEAR
        CASE (Key_Code = -66) : RETURN Clear_Table()
        ; DELETE
        CASE (Key_Code = -83) : if (SYSMODE() = "CoEdit") then
                                  RETURN Display_Delete_Box()
                                  else RETURN 1
                                endif    
        ; Alt-M - Memo
        CASE (Key_Code = -50) : Display_Memo(Subset_Table)
                                EXECPROC Answer_Menu
                                RETURN 1
        ; Alt-B - Summarize Account Balances
        CASE (Key_Code = -48) : Summarize_Accounts(Subset_Table, IMAGENO())
                                EXECPROC Answer_Menu
                                RETURN 1
        CASE (Key_Code = 43)  : RETURN Change_Date(43)
        CASE (Key_Code = 45)  : RETURN Change_Date(45)
        OTHERWISE             : SOUND 400 100 RETURN 1             
    ENDSWITCH
  endif; if key was pressed
  if (EventInfo["MESSAGE"] = "MENUSELECT") then  ; now menu selections
    Menu_Pick = EventInfo["MENUTAG"]
    SWITCH
      CASE (Menu_Pick = "Edit\Mode")  : RETURN Edit_Mode()
      CASE (Menu_Pick = "Main\Mode")  : if ISEMPTY(Subset_Table) then
                                          RETURN Clear_Table()
                                          else RETURN Main_Mode()
                                        endif  
      CASE (Menu_Pick = "Assemble")   : if (SYSMODE() = "CoEdit") then
                                          MESSAGE("You must exit edit mode.")
                                          else Select_Forms()
                                        endif   
                                        RETURN 1
      CASE (Menu_Pick = "Return\Yes") : RETURN Clear_Table()
      CASE (Menu_Pick = "Return\No")  : RETURN 1
      OTHERWISE                       : SOUND 400 100 RETURN 1
    ENDSWITCH
  endif
  SOUND 400 100 RETURN 1     
ENDPROC
WRITELIB Off_Lib Answer_Table_Wait_Proc


RELEASE PROCS ALL


PLAY "Setup"
PLAY "Rolodex"
PLAY "Filcabnt"
PLAY "Ledger"
PLAY "Utility"
PLAY "Pension"
PLAY "Qdro"
PLAY "Form_Mgr"


; do not PLAY procedures that are no longer used
;PLAY "Calendar"
;PLAY "Timecard"
;PLAY "Trust"


MESSAGE "All procedures successfully written to office library."
SLEEP 2000
MESSAGE ""