{
	menus: {
		fileBaseMainMenu: {
            desc: File Base
            art: FMENU
            prompt: fileMenuCommand
            config: {
                interrupt: realtime
            }
            submit: [
                {
                    value: { menuOption: "L" }
                    action: @menu:fileBaseListEntries
                }
                {
                    value: { menuOption: "B" }
                    action: @menu:fileBaseBrowseByAreaSelect
                }
                {
                    value: { menuOption: "F" }
                    action: @menu:fileBaseFilterEditor
                }
                {
                    value: { menuOption: "Q" }
                    action: @systemMethod:prevMenu
                }
                {
                    value: { menuOption: "G" }
                    action: @menu:fullLogoffSequence
                }
                {
                    value: { menuOption: "D" }
                    action: @menu:fileBaseDownloadManager
                }
                {
                    value: { menuOption: "W" }
                    action: @menu:fileBaseWebDownloadManager
                }
                {
                    value: { menuOption: "U" }
                    action: @menu:fileBaseUploadFiles
                }
                {
                    value: { menuOption: "S" }
                    action: @menu:fileBaseSearch
                }
                {
                    value: { menuOption: "P" }
                    action: @menu:fileBaseSetNewScanDate
                }
                {
                    value: { menuOption: "E" }
                    action: @menu:fileBaseExportListFilter
                }
            ]
        }

        fileBaseListEntries: {
            module: file_area_list
            desc: Browsing Files
            config: {
                art: {
                    browse: FBRWSE
                    details: FDETAIL
                    detailsGeneral: FDETGEN
                    detailsNfo: FDETNFO
                    detailsFileList: FDETLST
                    help: FBHELP
                }
            }
            form: {
                0: {
                    mci: {
                        MT1: {
                            mode: preview
                            acceptsFocus: false
                        }

                        HM2: {
                            focus: true
                            submit: true
                            argName: navSelect
                            items: [
                                "prev", "next", "details", "toggle queue", "rate", "change filter", "help", "quit"
                            ]
                            focusItemIndex: 1
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { navSelect: 0 }
                                action: @method:prevFile
                            }
                            {
                                value: { navSelect: 1 }
                                action: @method:nextFile
                            }
                            {
                                value: { navSelect: 2 }
                                action: @method:viewDetails
                            }
                            {
                                value: { navSelect: 3 }
                                action: @method:toggleQueue
                            }
                            {
                                value: { navSelect: 4 }
                                action: @menu:fileBaseGetRatingForSelectedEntry
                            }
                            {
                                value: { navSelect: 5 }
                                action: @menu:fileBaseFilterEditor
                            }
                            {
                                value: { navSelect: 6 }
                                action: @method:displayHelp
                            }
                            {
                                value: { navSelect: 7 }
                                action: @systemMethod:prevMenu
                            }
                        ]
                    }

                    actionKeys: [
                        {
                            keys: [ "w", "shift + w" ]
                            action: @method:showWebDownloadLink
                        }
                        {
                            keys: [ "escape", "q", "shift + q" ]
                            action: @systemMethod:prevMenu
                        }
                        {
                            keys: [ "t", "shift + t" ]
                            action: @method:toggleQueue
                        }
                        {
                            keys: [ "f", "shift + f" ]
                            action: @menu:fileBaseFilterEditor
                        }
                        {
                            keys: [ "v", "shift + v" ]
                            action: @method:viewDetails
                        }
                        {
                            keys: [ "r", "shift + r" ]
                            action: @menu:fileBaseGetRatingForSelectedEntry
                        }
                        {
                            keys: [ "?" ]
                            action: @method:displayHelp
                        }
                        {
                            keys: [ "down arrow", "up arrow", "page up", "page down" ]
                            action: @method:movementKeyPressed
                        }
                    ]
                }

                1: {
                    mci: {
                        HM1: {
                            focus: true
                            submit: true
                            argName: navSelect
                            items: [
                                "general", "nfo/readme", "file listing"
                            ]
                        }
                    }

                    actionKeys: [
                        {
                            keys: [ "escape", "q", "shift + q" ]
                            action: @method:detailsQuit
                        }
                    ]
                }

                2: {
                    //  details - general
                    mci: {}
                }

                3: {
                    //  details - nfo/readme
                    mci: {
                        MT1: {
                            mode: preview
                        }
                    }
                }

                4: {
                    //  details - file listing
                    mci: {
                        VM1: {

                        }
                    }
                }
            }
        }

        fileBaseBrowseByAreaSelect: {
            desc: Browsing File Areas
            module: file_base_area_select
            art: FAREASEL
            form: {
                0: {
                    mci: {
                        VM1: {
                            focus: true
                            argName: areaTag
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { areaTag: null }
                                action: @method:selectArea
                            }
                        ]
                    }

                    actionKeys: @reference:common.quitToPrev
                }
            }
        }

        fileBaseFilterEditor: {
            desc: File Filter Editor
            module: file_area_filter_edit
            art: FFILEDT
            form: {
                0: {
                    mci: {
                        ET1: {
                            argName: searchTerms
                        }
                        ET2: {
                            maxLength: 64
                            argName: tags
                        }
                        SM3: {
                            maxLength: 64
                            argName: areaIndex
                        }
                        SM4: {
                            items: [
                                "upload date",
                                "uploaded by",
                                "downloads",
                                "rating",
                                "estimated year",
                                "size",
                            ]
                            argName: sortByIndex
                        }
                        SM5: {
                            items: [
                                "decending",
                                "ascending"
                            ]
                            argName: orderByIndex
                        }
                        ET6: {
                            maxLength: 64
                            argName: name
                            validate: @systemMethod:validateNonEmpty
                        }
                        HM7: {
                            focus: true
                            items: [
                                "prev", "next", "make active", "save", "new", "delete"
                            ]
                            argName: navSelect
                            focusItemIndex: 1
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { navSelect: 0 }
                                action: @method:prevFilter
                            }
                            {
                                value: { navSelect: 1 }
                                action: @method:nextFilter
                            }
                            {
                                value: { navSelect: 2 }
                                action: @method:makeFilterActive
                            }
                            {
                                value: { navSelect: 3 }
                                action: @method:saveFilter
                            }
                            {
                                value: { navSelect: 4 }
                                action: @method:newFilter
                            }
                            {
                                value: { navSelect: 5 }
                                action: @method:deleteFilter
                            }
                        ]
                    }

                    actionKeys: [
                        {
                            keys: [ "escape" ]
                            action: @systemMethod:prevMenu
                        }
                    ]
                }
            }
        }

        fileBaseDownloadManager: {
            desc: Download Manager
            module: file_base_download_manager
            config: {
                art: {
                    queueManager: FDLMGR
                    /*
                    NYI
                    details: FDLDET
                    */
                }
                emptyQueueMenu: fileBaseDownloadManagerEmptyQueue
            }
            form: {
                0: {
                    mci: {
                        VM1: {
                            argName: queueItem
                        }
                        HM2: {
                            focus: true
                            items: [ "download all", "quit" ]
                            argName: navSelect
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { navSelect: 0 }
                                action: @method:downloadAll
                            }
                            {
                                value: { navSelect: 1 }
                                action: @systemMethod:prevMenu
                            }
                        ]
                    }

                    actionKeys: [
                        {
                            keys: [ "a", "shift + a" ]
                            action: @method:downloadAll
                        }
                        {
                            keys: [ "delete", "r", "shift + r" ]
                            action: @method:removeItem
                        }
                        {
                            keys: [ "c", "shift + c" ]
                            action: @method:clearQueue
                        }
                        {
                            keys: [ "escape", "q", "shift + q" ]
                            action: @systemMethod:prevMenu
                        }
                    ]
                }
            }
        }

        fileBaseDownloadManagerEmptyQueue: {
            desc: Empty Download Queue
            art: FEMPTYQ
            config: {
                pause: true
                menuFlags: [ "noHistory", "popParent" ]
            }
        }

        fileBaseWebDownloadManager: {
            desc: Web D/L Manager
            module: file_base_web_download_manager
            config: {
                art: {
                    queueManager: FWDLMGR
                    batchList: BATDLINF
                }
                emptyQueueMenu: fileBaseDownloadManagerEmptyQueue
            }
            form: {
                0: {
                    mci: {
                        VM1: {
                            argName: queueItem
                        }
                        HM2: {
                            focus: true
                            items: [ "get batch link", "quit", "help" ]
                            argName: navSelect
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { navSelect: 0 }
                                action: @method:getBatchLink
                            }
                            {
                                value: { navSelect: 1 }
                                action: @systemMethod:prevMenu
                            }
                        ]
                    }

                    actionKeys: [
                        {
                            keys: [ "b", "shift + b" ]
                            action: @method:getBatchLink
                        }
                        {
                            keys: [ "delete", "r", "shift + r" ]
                            action: @method:removeItem
                        }
                        {
                            keys: [ "c", "shift + c" ]
                            action: @method:clearQueue
                        }
                        {
                            keys: [ "escape", "q", "shift + q" ]
                            action: @systemMethod:prevMenu
                        }
                    ]
                }
            }
        }

        fileBaseUploadFiles: {
            desc: Uploading
            module: upload
            config: {
                interrupt: never
                art: {
                    options: ULOPTS
                    fileDetails: ULDETAIL
                    processing: ULCHECK
                    dupes: ULDUPES
                }
            }

            form: {
                //  options
                0: {
                    mci: {
                        SM1: {
                            argName: areaSelect
                            focus: true
                        }
                        TM2: {
                            argName: uploadType
                            items: [ "blind", "supply filename" ]
                        }
                        ET3: {
                            argName: fileName
                            maxLength: 255
                            validate: @method:validateNonBlindFileName
                        }
                        HM4: {
                            argName: navSelect
                            items: [ "continue", "cancel" ]
                            submit: true
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { navSelect: 0 }
                                action: @method:optionsNavContinue
                            }
                            {
                                value: { navSelect: 1 }
                                action: @systemMethod:prevMenu
                            }
                        ]
                    }

                    "actionKeys" : [
                        {
                            "keys"      : [ "escape" ],
                            action: @systemMethod:prevMenu
                        }
                    ]
                }

                1: {
                    mci: { }
                }

                //  file details entry
                2: {
                    mci: {
                        MT1: {
                            argName: shortDesc
                            tabSwitchesView: true
                            focus: true
                        }

                        ET2: {
                            argName: tags
                        }

                        ME3: {
                            argName: estYear
                            maskPattern: "####"
                        }

                        BT4: {
                            argName: continue
                            text: continue
                            submit: true
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { continue: null }
                                action: @method:fileDetailsContinue
                            }
                        ]
                    }
                }

                //  dupes
                3: {
                    mci: {
                        VM1: {
                            /*
                            Use 'dupeInfoFormat' to custom format:

                            areaDesc
                            areaName
                            areaTag
                            desc
                            descLong
                            fileId
                            fileName
                            fileSha256
                            storageTag
                            uploadTimestamp

                            */

                            mode: preview
                        }
                    }
                }
            }
        }

        fileBaseSearch: {
            module: file_base_search
            desc: Searching Files
            art: FSEARCH
            form: {
                0: {
                    mci: {
                        ET1: {
                            focus: true
                            argName: searchTerms
                        }
                        BT2: {
                            argName: search
                            text: search
                            submit: true
                        }
                        ET3: {
                            maxLength: 64
                            argName: tags
                        }
                        SM4: {
                            maxLength: 64
                            argName: areaIndex
                        }
                        SM5: {
                            items: [
                                "upload date",
                                "uploaded by",
                                "downloads",
                                "rating",
                                "estimated year",
                                "size",
                                "filename",
                            ]
                            argName: sortByIndex
                        }
                        SM6: {
                            items: [
                                "decending",
                                "ascending"
                            ]
                            argName: orderByIndex
                        }
                        BT7: {
                            argName: advancedSearch
                            text: advanced search
                            submit: true
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { search: null }
                                action: @method:search
                            }
                            {
                                value: { advancedSearch: null }
                                action: @method:search
                            }
                        ]
                    }

                    actionKeys: [
                        {
                            keys: [ "escape" ]
                            action: @systemMethod:prevMenu
                        }
                    ]
                }
            }
        }

        fileBaseSetNewScanDate: {
            module: set_newscan_date
            desc: File Base
            art: SETFNSDATE
            config: {
                target: file
                scanDateFormat: YYYYMMDD
            }
            form: {
                0: {
                    mci: {
                        ME1: {
                            focus: true
                            submit: true
                            argName: scanDate
                            maskPattern: "####/##/##"
                        }
                    }
                    submit: {
                        *: [
                            {
                                value: { scanDate: null }
                                action: @method:scanDateSubmit
                            }
                        ]
                    }
                    actionKeys: @reference:common.quitToPrev
                }
            }
        }

        fileBaseExportListFilter: {
            module: file_base_search
            art: FBLISTEXPSEARCH
            config: {
                fileBaseListEntriesMenu: fileBaseExportList
            }
            form: {
                0: {
                    mci: {
                        ET1: {
                            focus: true
                            argName: searchTerms
                        }
                        BT2: {
                            argName: search
                            text: search
                            submit: true
                        }
                        ET3: {
                            maxLength: 64
                            argName: tags
                        }
                        SM4: {
                            maxLength: 64
                            argName: areaIndex
                        }
                        SM5: {
                            items: [
                                "upload date",
                                "uploaded by",
                                "downloads",
                                "rating",
                                "estimated year",
                                "size",
                                "filename"
                            ]
                            argName: sortByIndex
                        }
                        SM6: {
                            items: [
                                "decending",
                                "ascending"
                            ]
                            argName: orderByIndex
                        }
                        BT7: {
                            argName: advancedSearch
                            text: advanced search
                            submit: true
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { search: null }
                                action: @method:search
                            }
                            {
                                value: { advancedSearch: null }
                                action: @method:search
                            }
                        ]
                    }

                    actionKeys: [
                        {
                            keys: [ "escape" ]
                            action: @systemMethod:prevMenu
                        }
                    ]
                }
            }
        }

        fileBaseExportList: {
            module: file_base_user_list_export
            art: FBLISTEXP
            config: {
                pause: true
                templates: {
                    entry: file_list_entry.asc
                }
            }
            form: {
                0: {
                    mci:  {
                        TL1: { }
                        TL2: { }
                    }
                }
            }
        }

        fileBaseExportListNoResults: {
            desc: Browsing Files
            art: FBNORES
            config: {
                pause: true
                menuFlags: [ "noHistory", "popParent" ]
            }
        }

        //	Referenced by various menus
        fileBaseGetRatingForSelectedEntry: {
            desc: Rating a File
            prompt: fileBaseRateEntryPrompt
            config: {
                cls: true
            }
            submit: [
            	//  :TODO: handle esc/q
                {
                    //  pass data back to caller
                    value: { rating: null }
                    action: @systemMethod:prevMenu
                }
            ]
        }

        //	default menu entry used by the 'file_area_list' module
       	//	when there are no search results for the provided criteria
        fileBaseListEntriesNoResults: {
            desc: Browsing Files
            art: FBNORES
            config: {
                pause: true
                menuFlags: [ "noHistory", "popParent" ]
            }
        }

        //	default menu entry used by the 'file_base_download_manager' module
        //	for protocol selection
        fileTransferProtocolSelection: {
            desc: Protocol selection
            module: file_transfer_protocol_select
            art: FPROSEL
            form: {
                0: {
                    mci: {
                        VM1: {
                            focus: true
                            argName: protocol
                        }
                    }

                    submit: {
                        *: [
                            {
                                value: { protocol: null }
                                action: @method:selectProtocol
                            }
                        ]
                    }

                    actionKeys: [
                        {
                            keys: [ "escape" ]
                            action: @systemMethod:prevMenu
                        }
                    ]
                }
            }
        }

        //	default menu entry used by the 'upload' module for when
        //	no areas are available for the user to upload to
        fileBaseNoUploadAreasAvail: {
            desc: File Base
            art: ULNOAREA
            config: {
                pause: true
                menuFlags: [ "noHistory", "popParent" ]
            }
        }

        //	default menu entry used by the 'file_transfer_protocol_select' module
        //	when performing user downloads
        sendFilesToUser: {
            desc: Downloading
            module: file_transfer
            config: {
                //  defaults - generally use extraArgs
                protocol: zmodem8kSexyz
                direction: send
            }
        }

        //	default menu entry used by the 'file_transfer_protocol_select' module
        //	when performing user uploads
        recvFilesFromUser: {
            desc: Uploading
            module: file_transfer
            config: {
                //  defaults - generally use extraArgs
                protocol: zmodem8kSexyz
                direction: recv
            }
        }
	}

	prompts: {
		fileMenuCommand: {
			art: FILPMPT
			mci: {
				TL1: {}
				ET2: {
					argName: menuOption
					width: 20
					maxLength: 20
					textStyle: upper
					focus: true
				}
			}
		}

		fileBaseRateEntryPrompt: {
			art: RATEFILE
			mci: {
				SM1: {
					argName: rating
					items: [ "-----", "*----", "**---", "***--", "****-", "*****" ]
				}
			}

			actionKeys: [
				{
					keys: [ "escape" ]
					action: @systemMethod:prevMenu
				}
			]
		}

		fileBaseTagEntryPrompt: {
			art: TAGFILE
			mci: {
				ET1: {
					argName: tags
				}
			}
		}
	}
}