home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / khtepm14.zip / kenHTepm.e < prev   
Text File  |  1996-10-20  |  126KB  |  3,050 lines

  1.  
  2.         /*************************************************/
  3.         /*                                               */
  4.         /*                                               */
  5.         /*                   kenHTepm                    */
  6.         /*   Portions copyright c. Ken Arway 1996        */
  7.         /*                                               */
  8.         /*   See kenHTepm.doc for instructions.          */
  9.         /*                                               */
  10.         /*   DISCLAIMER:  I make  no claims, expressed   */
  11.         /*   or implied,  as to  the fitness   of this   */
  12.         /*   code or  its suitability  for any purpose   */
  13.         /*   whatsoever.  I will not be liable for any   */
  14.         /*   damages  of any  kind resulting  from the   */
  15.         /*   use of this code by anybody  at all.  Use   */
  16.         /*   of this  code is   entirely at   your own   */
  17.         /*   risk.                                       */
  18.         /*                                               */
  19.         /*                                               */
  20.         /*************************************************/
  21.  
  22.  
  23. compile if not defined(SMALL)  -- If SMALL not defined, then being separately compiled
  24.       define INCLUDING_FILE = 'kenHTepm.e'
  25.  
  26.    const
  27.       tryinclude 'MYCNF.E'     -- the user's configuration customizations.
  28.  
  29. ;  MY_HTML_ADDRESS = ''        -- Can include something like one of:
  30. ;  MY_HTML_ADDRESS = 'Your Name<br>name@location.com'
  31. ;  MY_HTML_ADDRESS = '<a href="ME.html">Your Name Here</a><br><a href="mailto:yourid@yournode.site.org">yourid@yournode.site.org</a>'
  32.                                -- This will be added at the end of each document created.
  33.                                -- It will be after a <hr> and inside an <address>.
  34.    const
  35.       MY_HTML_ADDRESS =     ''
  36.       MY_TIMEZONE =         'CDT'
  37.       WANT_HTML_MONOFONT =  '1' -- 1 enables, 0 disables
  38.       MY_HTML_MARGINS =     '1 80 1'
  39.       MY_HTML_TABS =        '3'
  40.       MY_HTML_STRIP =       'e:\os2apps\HTMLutil\unh.exe'
  41.       MY_HTML_CHECK =       'e:\os2apps\HTMLutil\WebLint\weblint.cmd -f kenlint.rc'
  42.       MY_COM_PROG =         'd:\telecom\term2.exe'
  43.       MY_TELNET =           'telnetpm.exe'
  44.       MY_FTP =              'ftppm.exe'
  45.       MY_BROWSER =          'd:\tcpip\bin\explore.exe -t 8 -q'
  46.       MY_COLOR_REF =        '/WIN /F e:\winapps\HTMlib\colwiz.exe'
  47.       MY_HTML_REF =         '/WIN /F winhelp.exe e:\winapps\HTMlib\html.hlp'
  48.    
  49.     compile if not defined(SITE_CONFIG)
  50.        const SITE_CONFIG = 'SITECNF.E'
  51.     compile endif
  52.     compile if SITE_CONFIG
  53.        tryinclude SITE_CONFIG
  54.     compile endif
  55.    
  56.    const
  57.        compile if not defined(WANT_DYNAMIC_PROMPTS)
  58.          WANT_DYNAMIC_PROMPTS = 1
  59.        compile endif
  60.        compile if not defined(NLS_LANGUAGE)
  61.          NLS_LANGUAGE = 'ENGLISH'
  62.        compile endif
  63.        include NLS_LANGUAGE'.E'
  64.        include 'STDCONST.E'
  65.  
  66.    const
  67.        MUST_BE_LINKED_MSG = 'For proper operation, this .ex file must be linked, not executed.'
  68.  
  69.  
  70.    defmain
  71.       universal HTML_tags_menu_flag
  72.       universal defaultmenu, activemenu
  73.       call winmessagebox('kenHTepm   ', MUST_BE_LINKED_MSG, MB_CANCEL + MB_CUAWARNING + MB_MOVEABLE)
  74.       if HTML_tags_menu_flag = '1' then
  75.          deletemenu defaultmenu, 62, 0, 0
  76.          call maybe_show_menu()
  77.          HTML_tags_menu_flag = '0'
  78.       endif
  79. compile endif  -- (SMALL)
  80.  
  81. const
  82.    HTMLVERSION=                 '1.4'
  83.    HTMLTAGS_BAR_MSG=            '~kHTML'
  84.       FORMAT_MENU_MSG=          'Formatting St~yles'
  85.          PHYSICAL_MENU_MSG=     '~Physical'
  86.             BOLD_MENU_MSG=      '~Bold'
  87.             ITALIC_MENU_MSG=    '~Italic'
  88.             TTYPE_MENU_MSG=     '~Typewriter'
  89.             UNDER_MENU_MSG=     '~Underline'
  90.             PRE_MENU_MSG=       '~Preformatted'
  91.             STRIKE_MENU_MSG=    '~Struckthrough'
  92.             SUBSCR_MENU_MSG=    'Subs~cript'
  93.             SUPERSCR_MENU_MSG=  'Supe~rscript'
  94.             BIG_MENU_MSG=       'Bi~g text'
  95.             SMALL_MENU_MSG=     'Smal~l text'
  96.             BLINK_MENU_MSG=     'Blin~king'
  97.          LOGICAL_MENU_MSG=      '~Logical'
  98.             EMPH_MENU_MSG=      '~Emphasized'
  99.             STRONG_MENU_MSG=    '~Strong emph.'
  100.             ADDRESS_MENU_MSG=   '~Address'
  101.             CITE_MENU_MSG=      '~Citation'
  102.             BLOCK_MENU_MSG=     '~Blockquote'
  103.             DFN_MENU_MSG=       '~Def. instance'
  104.             CODE_MENU_MSG=      'C~ode'
  105.             KEYB_MENU_MSG=      '~Keyboard'
  106.             SAMP_MENU_MSG=      'Sa~mple'
  107.             VAR_MENU_MSG=       '~Variable'
  108.          FONT_MENU_MSG=         '~Fonts'
  109.             FONTSIZE_MENU_MSG=  '~Size'
  110.             FONTCLR_MENU_MSG=   '~Color'
  111.             FONTFACE_MENU_MSG=  '~Face'
  112.             BASEFONT_MENU_MSG=  '~Basefont'
  113.          HEAD_MENU_MSG=         '~Headings'
  114.             H1_MENU_MSG=        'Head ~1'
  115.             H2_MENU_MSG=        'Head ~2'
  116.             H3_MENU_MSG=        'Head ~3'
  117.             H4_MENU_MSG=        'Head ~4'
  118.             H5_MENU_MSG=        'Head ~5'
  119.             H6_MENU_MSG=        'Head ~6'
  120.          CENTER_MENU_MSG=       '~Center'
  121.          CMNT_MENU_MSG=         'Co~mment'
  122.          MCOL_MENU_MSG=         'M~ulti-col'
  123.       SEP_MENU_MSG=             '~Separators'
  124.          PARA_MENU_MSG=         '~Paragraph'
  125.          BREAK_MENU_MSG=        'Line ~break'
  126.          RULE_MENU_MSG=         'Horiz. ~rule'
  127.          DIV_MENU_MSG=          '~Divisions'
  128.       LISTS_MENU_MSG=           '~Lists'
  129.          TABLE_MENU_MSG=        'Ta~ble'
  130.          OLIST_MENU_MSG=        '~Ordered list'
  131.          ULIST_MENU_MSG=        '~Unordered list'
  132.          LITEM_MENU_MSG=        'List ~item'
  133.          LHEAD_MENU_MSG=        'List ~header'
  134.          DEFLIST_MENU_MSG=      '~Definition list'
  135.          DEFLISTTERM_MENU_MSG=  'Def. list ~term'
  136.          DEFLISTDEF_MENU_MSG=   'Def. list de~finition'
  137.          DIRLIST_MENU_MSG=      'Di~rectory list'
  138.          MENULIST_MENU_MSG=     '~Menu list'
  139.       ANCHOR_MENU_MSG=          'Lin~ks & objects'
  140.          IMAGE_MENU_MSG=        '~Image inline'
  141.          IMAP_MENU_MSG=         '~Map'
  142.          AREA_MENU_MSG=         'A~rea'
  143.          TARGET_MENU_MSG=       'Create ~anchor'
  144.          INTLINK_MENU_MSG=      'I~nternal link'
  145.          EXTLINK_MENU_MSG=      'E~xternal link'
  146.          EMBED_MENU_MSG=        '~Embed'
  147.             EMBGEN_MENU_MSG =   '~General'
  148.             LVID_MENU_MSG =     'Live~Video'
  149.             LAUD_MENU_MSG =     'Live~Audio'
  150.             L3D_MENU_MSG =      'Live~3D'
  151.             QT_MENU_MSG =       '~QuickTime'
  152.             EMBPARAM_MENU_MSG=  '~Parameters'
  153.          OBJ_MENU_MSG=          '~Objects'
  154.       FORMS_MENU_MSG=           '~Forms'
  155.          DEFFORMS_MENU_MSG=     '~Define Form'
  156.          FLBL_MENU_MSG=         '~Label'
  157.          FFLDSET_MENU_MSG=      '~Fieldset'
  158.          INPUTTYPE_MENU_MSG=    '~Input types'
  159.          FSUBMIT_MENU_MSG=      '~Submit'
  160.          FRESET_MENU_MSG=       '~Reset'
  161.          FTEXT_MENU_MSG=        '~Text'
  162.          FTAREA_MENU_MSG=       'Text ~area'
  163.          FPASS_MENU_MSG=        '~Password'
  164.          FCHK_MENU_MSG=         '~Checkbox'
  165.          FRAD_MENU_MSG=         '~Radio button'
  166.          FSEL_MENU_MSG=         '~Selection'
  167.          FSOPT_MENU_MSG=        'Sel. ~options'
  168.          FBTN_MENU_MSG=         '~Button'
  169.          FFILE_MENU_MSG=        '~File'
  170.          FHID_MENU_MSG=         '~Hidden'
  171.          FIMG_MENU_MSG=         '~Image'
  172.       FRAMES_MENU_MSG=          'Fra~mes'
  173.          FRAMES_DOC_MENU_MSG =  '~New document'
  174.          FRAMESET_MENU_MSG =    'Frame~set'
  175.          FRAME_MENU_MSG =       '~Frame'
  176.          FR_TARGET_MENU_MSG =   'Choose ~target'
  177.          FR_BTRGT_MENU_MSG =    '~Base target'
  178.          NOFRAME_MENU_MSG =     'N~o frames'
  179.          FR_SUBDOC_MENU_MSG =   'S~ub document'
  180.       JAVA_MENU_MSG=            '~Java applets'
  181.          JAPP_MENU_MSG=         '~Applet'
  182.          JPARAM_MENU_MSG=       '~Parameters'
  183.       SPEC_MENU_MSG=            'S~pecial characters'
  184.          ACCENTS_MENU_MSG=      'Accen~ts'
  185.          QUOTES_MENU_MSG=       '~" "'
  186.          AMPSND_MENU_MSG=       '~&'
  187.          LESS_MENU_MSG=         '~<'
  188.          GRTR_MENU_MSG=         '~>'
  189.          SPACES_MENU_MSG=       'S~paces & dashes'
  190.             SPACER_MENU_MSG=    'S~pacer'
  191.             NBRSPACE_MENU_MSG=  'Non-~brk space'
  192.             EMSP_MENU_MSG=      'e~m space'
  193.             ENSP_MENU_MSG=      'e~n space'
  194.             THSP_MENU_MSG=      '~thin space'
  195.             EMD_MENU_MSG=       'em ~dash'
  196.             END_MENU_MSG=       'en d~ash'
  197.             SHY_MENU_MSG=       'soft h~yphen'
  198.          UPDTD_MENU_MSG=        'Last ~updated...'
  199.          COPYRT_MENU_MSG=       '╕ ~Copyright symbol'
  200.          TM_MENU_MSG=           '~Trademark symbol'
  201.          REG_MENU_MSG=          '⌐ ~Registered symbol'
  202.          CENTS_MENU_MSG=        '¢ c~ents'
  203.          FRACMATH_MENU_MSG=     '~Fractions, math'
  204.             OFOURTH_MENU_MSG=   '¼ one-~fourth'
  205.             HALF_MENU_MSG=      '½ one-~half'
  206.             TFOURTHS_MENU_MSG=  '≤ ~three-fourths'
  207.             SUPER1_MENU_MSG=    '√ superscript ~1'
  208.             SUPER2_MENU_MSG=    '² superscript ~2'
  209.             SUPER3_MENU_MSG=    'ⁿ superscript ~3'
  210.             MULT_MENU_MSG=      '₧ ~multiplication'
  211.             DIVIDE_MENU_MSG=    '÷ ~division'
  212.             PLUSMINUS_MENU_MSG= '± ~plus or minus'
  213.             DEGREE_MENU_MSG=    '° de~gree'
  214.          SYMBOLS_MENU_MSG=      'S~ymbols'
  215.             LMOT_MENU_MSG=      '« ~left guillemot'
  216.             RMOT_MENU_MSG=      '» ~right guillemot'
  217.             MIDDOT_MENU_MSG=    '· middle do~t'
  218.             MICRO_MENU_MSG=     'µ ~micro'
  219.             PARSYM_MENU_MSG=    '⌠ ~paragraph symbol'
  220.             SECT_MENU_MSG=      '⌡ ~section symbol'
  221.             PSTER_MENU_MSG=     '£ Pound st~erling'
  222.             YEN_MENU_MSG=       '¥ ~Yen'
  223.             GENCURR_MENU_MSG=   '╧ General ~currency'
  224.          ACCENTC_MENU_MSG=      '~Accented characters'
  225.       CSTMTAG_MENU_MSG=         'C~ustom tags'
  226.       DOC_MENU_MSG=             '~Documents'
  227.          HTMLDOC_MENU_MSG=      'Create ~New'
  228.          BHREF_MENU_MSG=        '~Base HREF'
  229.          HLINK_MENU_MSG=        '~Link tag'
  230.          META_MENU_MSG=         '~Meta tag'
  231.          HSCRIPT_MENU_MSG=      'S~cript tag'
  232.          HSPAN_MENU_MSG=        'S~pan tag'
  233.          HSTYLE_MENU_MSG=       'St~yle tag'
  234.          CONN_MENU_MSG=         '~Connections'
  235.             FTP_MENU_MSG=       '~FTP'
  236.             TEL_MENU_MSG=       '~Telnet'
  237.             TERM2_MENU_MSG=     'Co~mm program'
  238.             WEBEX_MENU_MSG=     '~Browser'
  239.          PREVIEW_MENU_MSG=      'Pre~view'
  240.       REF_MENU_MSG=             '~References/utilities'
  241.          WEBLINT_MENU_MSG=      'Check synta~x'
  242.          STRIPHTM_MENU_MSG=     '~Strip tags'
  243.          HTMLCOL_MENU_MSG=      'HTML ~Colors'
  244.          HTMLLIB_MENU_MSG=      'HTML ~Library'
  245.       ABOUT_MENU_MSG=           'Ab~out'
  246.  
  247. compile if WANT_DYNAMIC_PROMPTS
  248. HTMLTAGS_BARP_MSG=               \1'Create HTML tags'
  249.    FORMAT_MENUP_MSG=             \1'Formatting styles'
  250.       PHYSICAL_MENUP_MSG=        \1'Add physical styles'
  251.          BOLD_MENUP_MSG=         \1'Apply as bold type'
  252.          ITALIC_MENUP_MSG=       \1'Apply as italic type'
  253.          TTYPE_MENUP_MSG=        \1'Apply as typewriter (monospaced) type'
  254.          UNDER_MENUP_MSG=        \1'Apply as underlined type'
  255.          PRE_MENUP_MSG=          \1'Tag lines as preformatted text'
  256.          STRIKE_MENUP_MSG=       \1'Apply as struckthrough text'
  257.          SUBSCR_MENUP_MSG=       \1'Apply as subscript text'
  258.          SUPERSCR_MENUP_MSG=     \1'Apply as superscript text'
  259.          BIG_MENUP_MSG=          \1'Apply as big text'
  260.          SMALL_MENUP_MSG=        \1'Apply as small text'
  261.          BLINK_MENUP_MSG=        \1'Apply as blinking text'
  262.       LOGICAL_MENUP_MSG=         \1'Add logical styles'
  263.          EMPH_MENUP_MSG=         \1'Apply as emphasized text (typically, italic)'
  264.          STRONG_MENUP_MSG=       \1'Apply as strongly emphasized text (typically, bold)'
  265.          ADDRESS_MENUP_MSG=      \1'Tag as an address (typically, italic & may be indented)'
  266.          CITE_MENUP_MSG=         \1'For a citation (typically, italic)'
  267.          BLOCK_MENUP_MSG=        \1'Blockquoted text (usually, wider indents, may be italic)'
  268.          DFN_MENUP_MSG=          \1'For the defining instance of a term (typically, italic)'
  269.          CODE_MENUP_MSG=         \1'For an example of code (typically, monospaced)'
  270.          KEYB_MENUP_MSG=         \1'For text typed by user (typically, monospaced)'
  271.          SAMP_MENUP_MSG=         \1'For a sequence of literal characters (typically, monospaced)'
  272.          VAR_MENUP_MSG=          \1'For a variable name (typically, italic)'
  273.       FONT_MENUP_MSG=            \1'Specify font attributes'
  274.          FONTSIZE_MENUP_MSG=     \1'Specify font size'
  275.          FONTCLR_MENUP_MSG=      \1'Specify font color'
  276.          FONTFACE_MENUP_MSG=     \1'Specify font face'
  277.          BASEFONT_MENUP_MSG=     \1'Specify the base font size for FONT elements'
  278.          HEAD_MENUP_MSG=         \1'Apply heading levels'
  279.          H1_MENUP_MSG=           \1'Heading level 1 (largest size)'
  280.          H2_MENUP_MSG=           \1'Heading level 2'
  281.          H3_MENUP_MSG=           \1'Heading level 3'
  282.          H4_MENUP_MSG=           \1'Heading level 4'
  283.          H5_MENUP_MSG=           \1'Heading level 5'
  284.          H6_MENUP_MSG=           \1'Heading level 6 (smallest size)'
  285.       CENTER_MENUP_MSG=          \1'Center the element(s) within the width of the window'
  286.       CMNT_MENUP_MSG=            \1'Insert a comment'
  287.       MCOL_MENUP_MSG=            \1'Create multi-column layouts'
  288.    SEP_MENUP_MSG=                \1'Add separation elements'
  289.       PARA_MENUP_MSG=            \1'Apply opening & closing paragraph tags'
  290.       BREAK_MENUP_MSG=           \1'Insert a forced line break'
  291.       RULE_MENUP_MSG=            \1'Insert a horizontal rule'
  292.       DIV_MENUP_MSG=             \1'Create a document division'
  293.    LISTS_MENUP_MSG=              \1'Create tables and lists & add list items'
  294.       TABLE_MENUP_MSG=           \1'Create a table from the marked lines'
  295.       OLIST_MENUP_MSG=           \1'Create an ordered list (numbered items)'
  296.       ULIST_MENUP_MSG=           \1'Create an unordered list (bulletted items)'
  297.       LITEM_MENUP_MSG=           \1'Add a list item'
  298.       LHEAD_MENUP_MSG=           \1'Add a list header'
  299.       DEFLIST_MENUP_MSG=         \1'Create a definition (or glossary) list'
  300.       DEFLISTTERM_MENUP_MSG=     \1'Add a definition list term'
  301.       DEFLISTDEF_MENUP_MSG=      \1'Add a definition list definition (typically, indented)'
  302.       DIRLIST_MENUP_MSG=         \1'Create directory list (short elements, < 20 chars each)'
  303.       MENULIST_MENUP_MSG=        \1'Create menu list (typically one line per item)'
  304.    ANCHOR_MENUP_MSG=             \1'Add anchors & links, and images'
  305.       IMAGE_MENUP_MSG=           \1'Add an inline image'
  306.       IMAP_MENUP_MSG=            \1'Define a client-side imagemap'
  307.       AREA_MENUP_MSG=            \1'Specify shape co-ordinates for client-side imagemap'
  308.       TARGET_MENUP_MSG=          \1'Create a named anchor here'
  309.       INTLINK_MENUP_MSG=         \1'Link to a target in this document'
  310.       EXTLINK_MENUP_MSG=         \1'Link to an external source'
  311.       EMBED_MENUP_MSG=           \1'Embed an object'
  312.          EMBGEN_MENUP_MSG =      \1'Basic, generalized embedding code'
  313.          LVID_MENUP_MSG =        \1'Insert a LiveVideo object'
  314.          LAUD_MENUP_MSG =        \1'Insert a LiveAudio object'
  315.          L3D_MENUP_MSG =         \1'Insert a Live3D object'
  316.          QT_MENUP_MSG =          \1'Insert a QuickTime movie object'
  317.          EMBPARAM_MENUP_MSG =    \1'Object parameters'
  318.       OBJ_MENUP_MSG=             \1'Create an inline object'
  319.    FORMS_MENUP_MSG=              \1'Create input forms'
  320.       DEFFORMS_MENUP_MSG=        \1'Define a form'
  321.       FLBL_MENUP_MSG=            \1'Add a form label'
  322.       FFLDSET_MENUP_MSG=         \1'Set a field attribute'
  323.       INPUTTYPE_MENUP_MSG=       \1'Define input fields & types'
  324.       FSUBMIT_MENUP_MSG=         \1'Create a "submit" button'
  325.       FRESET_MENUP_MSG=          \1'Create a "reset" button'
  326.       FTEXT_MENUP_MSG=           \1'Create a text input field'
  327.       FTAREA_MENUP_MSG=          \1'Create a textarea input field'
  328.       FPASS_MENUP_MSG=           \1'Create a password input field'
  329.       FCHK_MENUP_MSG=            \1'Create checkboxes'
  330.       FRAD_MENUP_MSG=            \1'Create radio buttons'
  331.       FSEL_MENUP_MSG=            \1'Create selection fields'
  332.       FSOPT_MENUP_MSG=           \1'Set selection field options'
  333.       FBTN_MENUP_MSG=            \1'Create button inputs'
  334.       FFILE_MENUP_MSG=           \1'Create a file submission field'
  335.       FHID_MENUP_MSG=            \1'Create a hidden input field'
  336.       FIMG_MENUP_MSG=            \1'Create an image input area'
  337.    FRAMES_MENUP_MSG=             \1'Create framed window areas'
  338.       FRAMES_DOC_MENUP_MSG =     \1'Create a new basic frames document'
  339.       FRAMESET_MENUP_MSG =       \1'Add a frameset element'
  340.       FRAME_MENUP_MSG =          \1'Add a frame item'
  341.       FR_TARGET_MENUP_MSG =      \1'Choose an existing target frame'
  342.       FR_BTRGT_MENUP_MSG =       \1'Set a base target window for all links'
  343.       NOFRAME_MENUP_MSG =        \1'Add an element displayed in non-frames browsers'
  344.       FR_SUBDOC_MENUP_MSG =      \1'Insert a sub-document for non-frames browsers'
  345.    JAVA_MENUP_MSG=               \1'Insert tags to display Java applets'
  346.       JAPP_MENUP_MSG=            \1'General applet tag'
  347.       JPARAM_MENUP_MSG=          \1'Applet parameters'
  348.    SPEC_MENUP_MSG=               \1'Insert special characters'
  349.       SPECx_MENUP_MSG=           \1'Insert the code for the indicated character'
  350.       ACCENTS_MENUP_MSG=         \1'Insert individual accents'
  351.       QUOTES_MENUP_MSG=          \1'Insert the code to render a pair of double quotes'
  352.       AMPSND_MENUP_MSG=          \1'Insert the code to render an ampersand'
  353.       LESS_MENUP_MSG=            \1'Insert the code to render the "<" symbol'
  354.       GRTR_MENUP_MSG=            \1'Insert the code to render the ">" symbol'
  355.       SPACES_MENUP_MSG=          \1'Code for spaces, dashes & soft hyphen'
  356.          EMSP_MENUP_MSG=         \1'Insert the code for an em space'
  357.          ENSP_MENUP_MSG=         \1'Insert the code for an en space (1/2 em)'
  358.          THSP_MENUP_MSG=         \1'Insert the code for a thin space (1/6 em)'
  359.          EMD_MENUP_MSG=          \1'Insert the code for an em dash'
  360.          END_MENUP_MSG=          \1'Insert the code for an en dash (1/2 em)'
  361.          SHY_MENUP_MSG=          \1'Insert the code for a soft hyphen'
  362.          NBRSPACE_MENUP_MSG=     \1'Insert the code to render a non-breaking space'
  363.          SPACER_MENUP_MSG=       \1'Create spacer elements'
  364.       UPDTD_MENUP_MSG=           \1'Insert the current date and time as the last update'
  365.       COPYRT_MENUP_MSG=          \1'Insert the code to render the "copyright" symbol'
  366.       TM_MENUP_MSG=              \1'Insert the code to render the "trademark" symbol'
  367.       REG_MENUP_MSG=             \1'Insert the code to render the "registered" symbol'
  368.       CENTS_MENUP_MSG=           \1'Insert the code to render the "cents" symbol'
  369.       FRACMATH_MENUP_MSG=        \1'Insert the code for fractions and math symbols'
  370.          OFOURTH_MENUP_MSG=      \1'Insert the code to render the "one-fourth" symbol'
  371.          HALF_MENUP_MSG=         \1'Insert the code to render the "one-half" symbol'
  372.          TFOURTHS_MENUP_MSG=     \1'Insert the code to render the "three-fourths" symbol'
  373.          SUPER1_MENUP_MSG=       \1'Insert the code to render a superscript "one"'
  374.          SUPER2_MENUP_MSG=       \1'Insert the code to render a superscript "two"'
  375.          SUPER3_MENUP_MSG=       \1'Insert the code to render a superscript "three"'
  376.          MULT_MENUP_MSG=         \1'Insert the code to render the "multiplication" symbol'
  377.          DIVIDE_MENUP_MSG=       \1'Insert the code to render the "division" symbol'
  378.          PLUSMINUS_MENUP_MSG=    \1'Insert the code to render the "plus or minus" symbol'
  379.          DEGREE_MENUP_MSG=       \1'Insert the code to render the "degree" symbol'
  380.       SYMBOLS_MENUP_MSG=         \1'Insert the code for various other symbols'
  381.          LMOT_MENUP_MSG=         \1'Insert the code to render the "left guillemot" symbol'
  382.          RMOT_MENUP_MSG=         \1'Insert the code to render the "right guillemot" symbol'
  383.          MIDDOT_MENUP_MSG=       \1'Insert the code to render a "middle dot"'
  384.          MICRO_MENUP_MSG=        \1'Insert the code to render the "micro" symbol'
  385.          PARSYM_MENUP_MSG=       \1'Insert the code to render the "paragraph" symbol'
  386.          SECT_MENUP_MSG=         \1'Insert the code to render the "section" symbol'
  387.          PSTER_MENUP_MSG=        \1'Insert the code to render the "Pound sterling" symbol'
  388.          YEN_MENUP_MSG=          \1'Insert the code to render the "Yen" symbol'
  389.          GENCURR_MENUP_MSG=      \1'Insert the code to render the "general currency" symbol'
  390.       ACCENTC_MENUP_MSG=         \1'Insert the code to render various accented characters'
  391.          ACCENTCx_MENUP_MSG=     \1'Insert the code to render the indicated accented character'
  392.    CSTMTAG_MENUP_MSG=            \1'Insert a user-defined tag'
  393.    DOC_MENUP_MSG=                \1'General document tags'
  394.       HTMLDOC_MENUP_MSG =        \1'Create a basic HTML document'
  395.       BHREF_MENUP_MSG=           \1'Add a BASE HREF tag'
  396.       HLINK_MENUP_MSG=           \1'Add a LINK tag'
  397.       META_MENUP_MSG =           \1'Add a META tag'
  398.       HSCRIPT_MENUP_MSG=         \1'Add a SCRIPT tag'
  399.       HSPAN_MENUP_MSG=           \1'Add a SPAN tag'
  400.       HSTYLE_MENUP_MSG=          \1'Add a STYLE tag'
  401.       CONN_MENUP_MSG=            \1'Establish an Internet connection'
  402.          FTP_MENUP_MSG=          \1'Start an FTP session'
  403.          TEL_MENUP_MSG=          \1'Start a Telnet session'
  404.          TERM2_MENUP_MSG=        \1'Start a communications session'
  405.          WEBEX_MENUP_MSG=        \1'Start a Web browser session'
  406.       PREVIEW_MENUP_MSG=         \1'View this document in browser'
  407.    REF_MENUP_MSG=                \1'HTML references & utilities'
  408.       WEBLINT_MENUP_MSG =        \1'Check HTML syntax'
  409.       STRIPHTM_MENUP_MSG =       \1'Remove HTML tags from the document'
  410.       HTMLCOL_MENUP_MSG=         \1'Color Wizard'
  411.       HTMLLIB_MENUP_MSG=         \1'HTML Library'
  412.    ABOUT_MENUP_MSG=              \1'Copyright notice'
  413.  
  414. compile else
  415. HTMLTAGS_BAR_MSG=             ''
  416.    FORMAT_MENUP_MSG=          ''
  417.       PHYSICAL_MENUP_MSG=     ''
  418.          BOLD_MENUP_MSG=      ''
  419.          ITALIC_MENUP_MSG=    ''
  420.          TTYPE_MENUP_MSG=     ''
  421.          UNDER_MENUP_MSG=     ''
  422.          PRE_MENUP_MSG=       ''
  423.          STRIKE_MENUP_MSG=    ''
  424.          SUBSCR_MENUP_MSG=    ''
  425.          SUPERSCR_MENUP_MSG=  ''
  426.          BIG_MENUP_MSG=       ''
  427.          SMALL_MENUP_MSG=     ''
  428.          BLINK_MENUP_MSG=     ''
  429.       LOGICAL_MENUP_MSG=      ''
  430.          EMPH_MENUP_MSG=      ''
  431.          STRONG_MENUP_MSG=    ''
  432.          ADDRESS_MENUP_MSG=   ''
  433.          CITE_MENUP_MSG=      ''
  434.          BLOCK_MENUP_MSG=     ''
  435.          DFN_MENUP_MSG=       ''
  436.          CODE_MENUP_MSG=      ''
  437.          KEYB_MENUP_MSG=      ''
  438.          SAMP_MENUP_MSG=      ''
  439.          VAR_MENUP_MSG=       ''
  440.       FONT_MENUP_MSG=         ''
  441.          FONTSIZE_MENUP_MSG=  ''
  442.          FONTCLR_MENUP_MSG=   ''
  443.          FONTFACE_MENUP_MSG=  ''
  444.          BASEFONT_MENUP_MSG=  ''
  445.       HEAD_MENUP_MSG=         ''
  446.          H1_MENUP_MSG=        ''
  447.          H2_MENUP_MSG=        ''
  448.          H3_MENUP_MSG=        ''
  449.          H4_MENUP_MSG=        ''
  450.          H5_MENUP_MSG=        ''
  451.          H6_MENUP_MSG=        ''
  452.       CENTER_MENUP_MSG=       ''
  453.       CMNT_MENUP_MSG=         ''
  454.       MCOL_MENUP_MSG=         ''
  455.    SEP_MENUP_MSG=             ''
  456.       PARA_MENUP_MSG=         ''
  457.       BREAK_MENUP_MSG=        ''
  458.       RULE_MENUP_MSG=         ''
  459.       DIV_MENUP_MSG=          ''
  460.    LISTS_MENUP_MSG=           ''
  461.       TABLE_MENUP_MSG=        ''
  462.       OLIST_MENUP_MSG=        ''
  463.       ULIST_MENUP_MSG=        ''
  464.       LITEM_MENUP_MSG=        ''
  465.       LHEAD_MENUP_MSG=        ''
  466.       DEFLIST_MENUP_MSG=      ''
  467.       DEFLISTTERM_MENUP_MSG=  ''
  468.       DEFLISTDEF_MENUP_MSG=   ''
  469.       DIRLIST_MENUP_MSG=      ''
  470.       MENULIST_MENUP_MSG=     ''
  471.    ANCHOR_MENUP_MSG=          ''
  472.       IMAGE_MENUP_MSG=        ''
  473.       IMAP_MENUP_MSG=         ''
  474.       AREA_MENUP_MSG=         ''
  475.       TARGET_MENUP_MSG=       ''
  476.       INTLINK_MENUP_MSG=      ''
  477.       EXTLINK_MENUP_MSG=      ''
  478.       EMBED_MENUP_MSG=        ''
  479.          EMBGEN_MENUP_MSG =   ''
  480.          LVID_MENUP_MSG =     ''
  481.          LAUD_MENUP_MSG =     ''
  482.          L3D_MENUP_MSG =      ''
  483.          QT_MENUP_MSG =       ''
  484.          EMBPARAM_MENUP_MSG = ''
  485.       OBJ_MENUP_MSG=          ''
  486.    FORMS_MENUP_MSG=           ''
  487.       DEFFORMS_MENUP_MSG=     ''
  488.       FLBL_MENUP_MSG=         ''
  489.       FFLDSET_MENUP_MSG=      ''
  490.       INPUTTYPE_MENUP_MSG=    ''
  491.       FSUBMIT_MENUP_MSG=      ''
  492.       FRESET_MENUP_MSG=       ''
  493.       FTEXT_MENUP_MSG=        ''
  494.       FTAREA_MENUP_MSG=       ''
  495.       FPASS_MENUP_MSG=        ''
  496.       FCHK_MENUP_MSG=         ''
  497.       FRAD_MENUP_MSG=         ''
  498.       FSEL_MENUP_MSG=         ''
  499.       FSOPT_MENUP_MSG=        ''
  500.       FBTN_MENUP_MSG=         ''
  501.       FFILE_MENUP_MSG=        ''
  502.       FHID_MENUP_MSG=         ''
  503.       FIMG_MENUP_MSG=         ''
  504.    FRAMES_MENUP_MSG=          ''
  505.       FRAMES_DOC_MENUP_MSG =  ''
  506.       FRAMESET_MENUP_MSG =    ''
  507.       FRAME_MENUP_MSG =       ''
  508.       FR_TARGET_MENUP_MSG =   ''
  509.       FR_BTRGT_MENUP_MSG =    ''
  510.       NOFRAME_MENUP_MSG =     ''
  511.       FR_SUBDOC_MENUP_MSG =   ''
  512.    JAVA_MENUP_MSG=            ''
  513.       JAPP_MENUP_MSG=         ''
  514.       JPARAM_MENUP_MSG=       ''
  515.    SPEC_MENUP_MSG=            ''
  516.       ACCENTS_MENUP_MSG=      ''
  517.       QUOTES_MENUP_MSG=       ''
  518.       AMPSND_MENUP_MSG=       ''
  519.       LESS_MENUP_MSG=         ''
  520.       GRTR_MENUP_MSG=         ''
  521.       SPACES_MENUP_MSG=       ''
  522.       EMSP_MENUP_MSG=         ''
  523.       ENSP_MENUP_MSG=         ''
  524.       THSP_MENUP_MSG=         ''
  525.       EMD_MENUP_MSG=          ''
  526.       END_MENUP_MSG=          ''
  527.       SHY_MENUP_MSG=          ''
  528.       NBRSPACE_MENUP_MSG=     ''
  529.       SPACER_MENUP_MSG=       ''
  530.       UPDTD_MENUP_MSG=        ''
  531.       COPYRT_MENUP_MSG=       ''
  532.       TM_MENUP_MSG=           ''
  533.       REG_MENUP_MSG=          ''
  534.       CENTS_MENUP_MSG=        ''
  535.       FRACMATH_MENUP_MSG=     ''
  536.          OFOURTH_MENUP_MSG=   ''
  537.          HALF_MENUP_MSG=      ''
  538.          TFOURTHS_MENUP_MSG=  ''
  539.          SUPER1_MENUP_MSG=    ''
  540.          SUPER2_MENUP_MSG=    ''
  541.          SUPER3_MENUP_MSG=    ''
  542.          MULT_MENUP_MSG=      ''
  543.          DIVIDE_MENUP_MSG=    ''
  544.          PLUSMINUS_MENUP_MSG= ''
  545.          DEGREE_MENUP_MSG=    ''
  546.       SYMBOLS_MENUP_MSG=      ''
  547.          LMOT_MENUP_MSG=      ''
  548.          RMOT_MENUP_MSG=      ''
  549.          MIDDOT_MENUP_MSG=    ''
  550.          MICRO_MENUP_MSG=     ''
  551.          PARSYM_MENUP_MSG=    ''
  552.          SECT_MENUP_MSG=      ''
  553.          PSTER_MENUP_MSG=     ''
  554.          YEN_MENUP_MSG=       ''
  555.          GENCURR_MENUP_MSG=   ''
  556.       ACCENTC_MENUP_MSG=      ''
  557.          ACCENTCx_MENUP_MSG=  ''
  558.    CSTMTAG_MENUP_MSG=         ''
  559.    DOC_MENUP_MSG=             ''
  560.       HTMLDOC_MENUP_MSG =     ''
  561.       BHREF_MENUP_MSG=        ''
  562.       HLINK_MENUP_MSG=        ''
  563.       META_MENUP_MSG =        ''
  564.       HSCRIPT_MENUP_MSG=      ''
  565.       HSPAN_MENUP_MSG=        ''
  566.       HSTYLE_MENUP_MSG=       ''
  567.       CONN_MENUP_MSG=         ''
  568.          FTP_MENUP_MSG=       ''
  569.          TEL_MENUP_MSG=       ''
  570.          TERM2_MENUP_MSG=     ''
  571.          WEBEX_MENUP_MSG=     ''
  572.       PREVIEW_MENUP_MSG=      ''
  573.    REF_MENUP_MSG=             ''
  574.       WEBLINT_MENUP_MSG =     ''
  575.       STRIPHTM_MENUP_MSG =    ''
  576.       HTMLCOL_MENUP_MSG=      ''
  577.       HTMLLIB_MENUP_MSG=      ''
  578.    ABOUT_MENUP_MSG=           ''
  579. compile endif -- WANT_DYNAMIC_PROMPTS
  580.  
  581.    ANCHOR_TITLE_MSG =        'Anchor - Create here'
  582.    ANCHOR_PROMPT_MSG =       'Enter the name for this anchor'
  583.    EXTLINK_TITLE_MSG =       'Anchor - External link'
  584.    EXTLINK_PROMPT_MSG =      'Enter the URL for this anchor'
  585.    EXTLINK_LIST_MSG =        'Select the external link'
  586.    DRAGDROP_TITLE_MSG =      'Dropped file'
  587.    DRAGDROP_PROMPT_MSG =     'Enter optional alternate text'
  588.    NO_ANCHORS_MSG =          'No anchors defined in this file.'
  589.    INTLINK_TITLE_MSG =       'Anchor - Internal link'
  590.    INTLINK_PROMPT_MSG =      'Select the anchor to link to'
  591.    URL_LIST_PROMPT_MSG =     'Select the URL to link to'
  592.    MODIFIED_PROMPT_MSG =     'Document has been modified.  Save changes?'
  593.    IMAGE_TITLE_MSG =         'Image'
  594.    IMAGE_PROMPT_MSG =        'Enter the URL for this image'
  595.    IMAGE_LIST_MSG =          'Select the URL for this image'
  596.    HTML_EXTENSIONS=          'HTM HTML'
  597.    CSTMTAG_TITLE_MSG =       'Custom tag   '
  598.    CSTMTAG_PROMPT_MSG =      'Enter the custom tag to use'
  599.    CSTMTAG_LIST_MSG=         'Select the custom tag to use'
  600.    HLINK_TITLE_MSG =         'Referenced document'
  601.    HLINK_PROMPT_MSG =        'Enter the URL for this reference'
  602.    HLINK_LIST_MSG =          'Select the URL for this reference'
  603.    FORM_TITLE_MSG =          'Define form'
  604.    FORM_PROMPT_MSG =         'URL of program that will process the form'
  605.    FORM_LIST_MSG =           'Select the URL for form processing'
  606.    BHREF_TITLE_MSG=          'Base HREF'
  607.    BHREF_PROMPT_MSG=         'Enter the base HREF URL for this document'
  608.    BHREF_LIST_MSG=           'Select the base HREF URL'
  609.    FRSET_TITLE_MSG =         'Frameset sizes'
  610.    FRSET_PROMPT_MSG =        'Sizes'
  611.    FRAMELINK_TITLE_MSG =     'Frame -- name   '
  612.    FRAMELINK_PROMPT_MSG =    'Enter the name for this frame'
  613.    FRAMELINK_LIST_MSG =      'Select the frame name'
  614.    FRTARGET_TITLE_MSG =      'Target frame'
  615.    FRTARGET_PROMPT_MSG =     'Choose the target frame'
  616.    OBJ_TITLE_MSG =           'Object'
  617.    OBJ_PROMPT_MSG =          'Enter the URL for this object'
  618.    OBJ_LIST_MSG =            'Select the URL for the object'
  619.    RECT_TITLE_MSG =          'Co-ordinates of rectangle:   '
  620.    RECT_PROMPT_MSG =         'left-x, top-y, right-x, bottom-y'
  621.    CIRC_TITLE_MSG =          'Co-ordinates of circle:   '
  622.    CIRC_PROMPT_MSG =         'center-x, center-y, radius'
  623.    POLY_TITLE_MSG =          'Co-ordinates of polygon:   '
  624.    POLY_PROMPT_MSG =         'x1, y1, x2, y2, x3, y3, ...'
  625.    DEFSHAPE_TITLE_MSG =      'Default shape   '
  626.    DEFSHAPE_PROMPT_MSG =     'Co-ordinates are optional.'
  627.  
  628.    OK_MSG =                  '~OK'
  629.    CANCEL_MSG =              'Cancel'  -- This is also in ENGLISH.E
  630.    TOP_MSG =                 '~Top'
  631.    MID_MSG =                 '~Middle'
  632.    BOT_MSG =                 '~Bottom'
  633.    LIST_MSG =                '~List...'
  634.    EDITLIST_MSG =            '~Edit list...'
  635.  
  636.    SELECT_MSG =              '~Select'
  637.    NONE_MSG =                '~None'
  638.  
  639. definit
  640.    universal defaultmenu, activemenu
  641.    universal activeaccel
  642.    universal HTML_tags_menu_flag
  643.    deletemenu defaultmenu, 6, 0, 0  -- delete the existing Help menu (we want it to stay at the right)
  644.  
  645. ;  Last number used:  62294
  646.    buildsubmenu defaultmenu, 62, HTMLTAGS_BAR_MSG, HTMLTAGS_BARP_MSG, 0, 0
  647.       buildmenuitem defaultmenu, 62, 62000, FORMAT_MENU_MSG, FORMAT_MENUP_MSG, 17, 0
  648.          buildmenuitem defaultmenu, 62, 62001, PHYSICAL_MENU_MSG, PHYSICAL_MENUP_MSG, 17, 0
  649.             buildmenuitem defaultmenu, 62, 62002, BOLD_MENU_MSG, 'HTML_insert2 B'BOLD_MENUP_MSG, 0, 0
  650.             buildmenuitem defaultmenu, 62, 62003, ITALIC_MENU_MSG, 'HTML_insert2 I'ITALIC_MENUP_MSG, 0, 0
  651.             buildmenuitem defaultmenu, 62, 62004, TTYPE_MENU_MSG, 'HTML_insert2 TT'TTYPE_MENUP_MSG, 0, 0
  652.             buildmenuitem defaultmenu, 62, 62005, UNDER_MENU_MSG, 'HTML_insert2 U'UNDER_MENUP_MSG, 0, 0
  653.             buildmenuitem defaultmenu, 62, 62006, \0, '', 4, 0
  654.  
  655.             buildmenuitem defaultmenu, 62, 62007, PRE_MENU_MSG, 'HTML_lineinsert2 PRE'PRE_MENUP_MSG, 0, 0
  656.             buildmenuitem defaultmenu, 62, 62008, \0, '', 4, 0
  657.  
  658.             buildmenuitem defaultmenu, 62, 62009, STRIKE_MENU_MSG, 'HTML_insert2 STRIKE'STRIKE_MENUP_MSG, 0, 0
  659.             buildmenuitem defaultmenu, 62, 62010, SUBSCR_MENU_MSG, 'HTML_insert2 SUB'SUBSCR_MENUP_MSG, 0, 0
  660.             buildmenuitem defaultmenu, 62, 62011, SUPERSCR_MENU_MSG, 'HTML_insert2 SUP'SUPERSCR_MENUP_MSG, 0, 0
  661.             buildmenuitem defaultmenu, 62, 62012, BIG_MENU_MSG, 'HTML_insert2 BIG'BIG_MENUP_MSG, 0, 0
  662.             buildmenuitem defaultmenu, 62, 62013, SMALL_MENU_MSG, 'HTML_insert2 SMALL'SMALL_MENUP_MSG, 0, 0
  663.             buildmenuitem defaultmenu, 62, 62014, BLINK_MENU_MSG, 'HTML_insert2 BLINK'BLINK_MENUP_MSG, 32769,0
  664.  
  665.          buildmenuitem defaultmenu, 62, 62015, LOGICAL_MENU_MSG, LOGICAL_MENUP_MSG, 17, 0
  666.             buildmenuitem defaultmenu, 62, 62016, EMPH_MENU_MSG, 'HTML_insert2 EM'EMPH_MENUP_MSG, 0, 0
  667.             buildmenuitem defaultmenu, 62, 62017, STRONG_MENU_MSG, 'HTML_insert2 STRONG'STRONG_MENUP_MSG, 0, 0
  668.             buildmenuitem defaultmenu, 62, 62018, \0, '', 4, 0
  669.  
  670.             buildmenuitem defaultmenu, 62, 62019, ADDRESS_MENU_MSG, 'HTML_lineinsert2 ADDRESS'ADDRESS_MENUP_MSG, 0, 0
  671.             buildmenuitem defaultmenu, 62, 62020, CITE_MENU_MSG, 'HTML_insert2 CITE'CITE_MENUP_MSG, 0, 0
  672.             buildmenuitem defaultmenu, 62, 62021, BLOCK_MENU_MSG, 'HTML_lineinsert2 BLOCKQUOTE'BLOCK_MENUP_MSG, 0, 0
  673.             buildmenuitem defaultmenu, 62, 62022, \0, '', 4, 0
  674.                                                                                        
  675.             buildmenuitem defaultmenu, 62, 62023, DFN_MENU_MSG, 'HTML_insert2 DFN'DFN_MENUP_MSG, 0, 0
  676.             buildmenuitem defaultmenu, 62, 62024, CODE_MENU_MSG, 'HTML_lineinsert2 CODE'CODE_MENUP_MSG, 0, 0
  677.             buildmenuitem defaultmenu, 62, 62025, KEYB_MENU_MSG, 'HTML_insert2 KBD'KEYB_MENUP_MSG, 0, 0
  678.             buildmenuitem defaultmenu, 62, 62026, SAMP_MENU_MSG, 'HTML_insert2 SAMP'SAMP_MENUP_MSG, 0, 0
  679.             buildmenuitem defaultmenu, 62, 62027, VAR_MENU_MSG, 'HTML_insert2 VAR'VAR_MENUP_MSG, 32769, 0
  680.  
  681.          buildmenuitem defaultmenu, 62, 62028, FONT_MENU_MSG, FONT_MENUP_MSG, 17, 0
  682.             buildmenuitem defaultmenu, 62, 62206, FONTSIZE_MENU_MSG, 'HTML_font SIZE=""'FONTSIZE_MENUP_MSG, 0,0
  683.             buildmenuitem defaultmenu, 62, 62207, FONTCLR_MENU_MSG, 'HTML_font COLOR="#"'FONTCLR_MENUP_MSG, 0, 0
  684.             buildmenuitem defaultmenu, 62, 62236, FONTFACE_MENU_MSG, 'HTML_font FACE=""'FONTFACE_MENUP_MSG, 0, 0
  685.             buildmenuitem defaultmenu, 62, 62237, BASEFONT_MENU_MSG, 'HTML_basefont'BASEFONT_MENUP_MSG, 32769, 0
  686.  
  687.          buildmenuitem defaultmenu, 62, 62029, HEAD_MENU_MSG, HEAD_MENUP_MSG, 17, 0
  688.             buildmenuitem defaultmenu, 62, 62030, H1_MENU_MSG, 'HTML_insert2 H1'H1_MENUP_MSG, 0, 0
  689.             buildmenuitem defaultmenu, 62, 62031, H2_MENU_MSG, 'HTML_insert2 H2'H2_MENUP_MSG, 0, 0
  690.             buildmenuitem defaultmenu, 62, 62032, H3_MENU_MSG, 'HTML_insert2 H3'H3_MENUP_MSG, 0, 0
  691.             buildmenuitem defaultmenu, 62, 62033, H4_MENU_MSG, 'HTML_insert2 H4'H4_MENUP_MSG, 0, 0
  692.             buildmenuitem defaultmenu, 62, 62034, H5_MENU_MSG, 'HTML_insert2 H5'H5_MENUP_MSG, 0, 0
  693.             buildmenuitem defaultmenu, 62, 62035, H6_MENU_MSG, 'HTML_insert2 H6'H6_MENUP_MSG, 32769, 0
  694.             buildmenuitem defaultmenu, 62, 62036, \0, '', 4, 0
  695.  
  696.          buildmenuitem defaultmenu, 62, 62037, CENTER_MENU_MSG, 'HTML_insert2 CENTER'CENTER_MENUP_MSG, 0, 0
  697.          buildmenuitem defaultmenu, 62, 62208, CMNT_MENU_MSG, 'HTML_comment'CMNT_MENUP_MSG, 0, 0
  698.          buildmenuitem defaultmenu, 62, 62278, MCOL_MENU_MSG, 'HTML_mcol'MCOL_MENUP_MSG, 32769, 0
  699.  
  700.       buildmenuitem defaultmenu, 62, 62038, SEP_MENU_MSG, SEP_MENUP_MSG, 17, 0
  701.          buildmenuitem defaultmenu, 62, 62039, PARA_MENU_MSG, 'HTML_PARA'PARA_MENUP_MSG, 0, 0
  702.          buildmenuitem defaultmenu, 62, 62040, BREAK_MENU_MSG, 'HTML_keyin <BR>'BREAK_MENUP_MSG, 0, 0
  703.          buildmenuitem defaultmenu, 62, 62041, RULE_MENU_MSG, 'HTML_IL <HR>'RULE_MENUP_MSG, 0, 0
  704.          buildmenuitem defaultmenu, 62, 62277, \0, '', 4, 0
  705.          buildmenuitem defaultmenu, 62, 62235, DIV_MENU_MSG, 'HTML_DIV'DIV_MENUP_MSG, 32769, 0
  706.  
  707.       buildmenuitem defaultmenu, 62, 62042, LISTS_MENU_MSG, LISTS_MENUP_MSG, 17, 0
  708.          buildmenuitem defaultmenu, 62, 62043, TABLE_MENU_MSG,  'HTML_table'TABLE_MENUP_MSG, 0, 0
  709.          buildmenuitem defaultmenu, 62, 62044, \0, '', 4, 0
  710.  
  711.          buildmenuitem defaultmenu, 62, 62045, OLIST_MENU_MSG, 'HTML_LIST OL'OLIST_MENUP_MSG, 0, 0
  712.          buildmenuitem defaultmenu, 62, 62046, ULIST_MENU_MSG, 'HTML_LIST UL'ULIST_MENUP_MSG, 0, 0
  713.          buildmenuitem defaultmenu, 62, 62047, LITEM_MENU_MSG, 'HTML_keyin <LI>'LITEM_MENUP_MSG, 0, 0
  714.          buildmenuitem defaultmenu, 62, 62048, LHEAD_MENU_MSG, 'HTML_insert2 LH'LHEAD_MENUP_MSG, 0, 0
  715.          buildmenuitem defaultmenu, 62, 62049, \0, '', 4, 0
  716.  
  717.          buildmenuitem defaultmenu, 62, 62050, DEFLIST_MENU_MSG, 'HTML_LIST DL'DEFLIST_MENUP_MSG, 0, 0
  718.          buildmenuitem defaultmenu, 62, 62051, DEFLISTTERM_MENU_MSG, 'HTML_keyin <DT>'DEFLISTTERM_MENUP_MSG, 0, 0
  719.          buildmenuitem defaultmenu, 62, 62052, DEFLISTDEF_MENU_MSG, 'HTML_keyin <DD>'DEFLISTDEF_MENUP_MSG, 0, 0
  720.          buildmenuitem defaultmenu, 62, 62053, \0, '', 4, 0
  721.  
  722.          buildmenuitem defaultmenu, 62, 62054, DIRLIST_MENU_MSG, 'HTML_LIST DIR'DIRLIST_MENUP_MSG, 0, 0
  723.          buildmenuitem defaultmenu, 62, 62055, MENULIST_MENU_MSG, 'HTML_LIST MENU'MENULIST_MENUP_MSG, 32769, 0
  724.  
  725.       buildmenuitem defaultmenu, 62, 62056, ANCHOR_MENU_MSG, ANCHOR_MENUP_MSG, 17, 0
  726.          buildmenuitem defaultmenu, 62, 62057, IMAGE_MENU_MSG, 'HTML_IMAGE'IMAGE_MENUP_MSG, 0, 0
  727.          buildmenuitem defaultmenu, 62, 62238, IMAP_MENU_MSG, 'HTML_IMAP'IMAP_MENUP_MSG, 0, 0
  728.          buildmenuitem defaultmenu, 62, 62239, AREA_MENU_MSG, 'HTML_AREA'AREA_MENUP_MSG, 0, 0
  729.          buildmenuitem defaultmenu, 62, 62240, \0, '', 4, 0
  730.          buildmenuitem defaultmenu, 62, 62058, TARGET_MENU_MSG, 'HTML_TARGET'TARGET_MENUP_MSG, 0, 0
  731.          buildmenuitem defaultmenu, 62, 62241, \0, '', 4, 0
  732.          buildmenuitem defaultmenu, 62, 62059, INTLINK_MENU_MSG, 'HTML_INT_LINK'INTLINK_MENUP_MSG, 0, 0
  733.          buildmenuitem defaultmenu, 62, 62060, EXTLINK_MENU_MSG, 'HTML_EXT_LINK'EXTLINK_MENUP_MSG, 0, 0
  734.          buildmenuitem defaultmenu, 62, 62242, \0, '', 4, 0
  735.          buildmenuitem defaultmenu, 62, 62279, EMBED_MENU_MSG, EMBED_MENUP_MSG, 17, 0
  736.             buildmenuitem defaultmenu, 62, 62283, EMBGEN_MENU_MSG, 'HTML_embed gen'EMBGEN_MENUP_MSG, 0, 0
  737.             buildmenuitem defaultmenu, 62, 62284, \0, '', 4, 0
  738.             buildmenuitem defaultmenu, 62, 62285, LAUD_MENU_MSG, 'HTML_embed laud'LAUD_MENUP_MSG, 0, 0
  739.             buildmenuitem defaultmenu, 62, 62286, LVID_MENU_MSG, 'HTML_embed lvid'LVID_MENUP_MSG, 0, 0
  740.             buildmenuitem defaultmenu, 62, 62287, L3D_MENU_MSG, 'HTML_embed l3d'L3D_MENUP_MSG, 0, 0
  741.             buildmenuitem defaultmenu, 62, 62288, QT_MENU_MSG, 'HTML_qt'QT_MENUP_MSG, 0, 0
  742.             buildmenuitem defaultmenu, 62, 62289, \0, '', 4, 0
  743.             buildmenuitem defaultmenu, 62, 62290, EMBPARAM_MENU_MSG, 'HTML_embparam'EMBPARAM_MENUP_MSG, 32769, 0
  744.          buildmenuitem defaultmenu, 62, 62243, OBJ_MENU_MSG, 'HTML_OBJ'OBJ_MENUP_MSG, 32769, 16384
  745.          buildmenuitem defaultmenu, 62, 62061, \0, '', 4, 0
  746.  
  747.  
  748.       buildmenuitem defaultmenu, 62, 62169, DOC_MENU_MSG, DOC_MENUP_MSG, 17, 0
  749.          buildmenuitem defaultmenu, 62, 62172, HTMLDOC_MENU_MSG, 'HTML_DOC'HTMLDOC_MENUP_MSG, 0, 0
  750.          buildmenuitem defaultmenu, 62, 62230, \0, '', 4, 0
  751.          buildmenuitem defaultmenu, 62, 62231, BHREF_MENU_MSG, 'HTML_BHREF'BHREF_MENUP_MSG, 0, 0
  752.          buildmenuitem defaultmenu, 62, 62232, HLINK_MENU_MSG, 'HTML_HLINK'HLINK_MENUP_MSG, 0, 0
  753.          buildmenuitem defaultmenu, 62, 62210, META_MENU_MSG, 'HTML_META'META_MENUP_MSG, 0, 0
  754.          buildmenuitem defaultmenu, 62, 62233, HSCRIPT_MENU_MSG, 'HTML_HSCRIPT'HSCRIPT_MENUP_MSG, 0, 0
  755.          buildmenuitem defaultmenu, 62, 62259, HSPAN_MENU_MSG, 'HTML_HSPAN'HSPAN_MENUP_MSG, 0, 0
  756.          buildmenuitem defaultmenu, 62, 62234, HSTYLE_MENU_MSG, 'HTML_HSTYLE'HSTYLE_MENUP_MSG, 32769, 0
  757.  
  758.       buildmenuitem defaultmenu, 62, 62069, FRAMES_MENU_MSG, FRAMES_MENUP_MSG, 17, 0
  759.          buildmenuitem defaultmenu, 62, 62266, FRAMES_DOC_MENU_MSG, 'FR_DOC'FRAMES_DOC_MENUP_MSG, 0, 0
  760.          buildmenuitem defaultmenu, 62, 62267, \0, '', 4, 0 
  761.          buildmenuitem defaultmenu, 62, 62268, FRAMESET_MENU_MSG, 'FRAMESET'FRAMESET_MENUP_MSG, 0, 0
  762.          buildmenuitem defaultmenu, 62, 62269, FRAME_MENU_MSG, 'FRAME'FRAME_MENUP_MSG, 0, 0
  763.          buildmenuitem defaultmenu, 62, 62274, \0, '', 4, 0
  764.          buildmenuitem defaultmenu, 62, 62273, FR_TARGET_MENU_MSG, 'FR_TARGET'FR_TARGET_MENUP_MSG, 0, 0
  765.          buildmenuitem defaultmenu, 62, 62275, FR_BTRGT_MENU_MSG, 'FR_TARGET BASE'FR_BTRGT_MENUP_MSG, 0, 0
  766.          buildmenuitem defaultmenu, 62, 62270, \0, '', 4, 0 
  767.          buildmenuitem defaultmenu, 62, 62271, NOFRAME_MENU_MSG, 'HTML_lineinsert2 NOFRAMES'NOFRAME_MENUP_MSG, 0, 0
  768.          buildmenuitem defaultmenu, 62, 62272, FR_SUBDOC_MENU_MSG, 'FR_SUB_DOC'FR_SUBDOC_MENUP_MSG, 32769, 0
  769.          buildmenuitem defaultmenu, 62, 62276, \0, '', 4, 0
  770.  
  771.       buildmenuitem defaultmenu, 62, 62062, FORMS_MENU_MSG, FORMS_MENUP_MSG, 17, 0
  772.          buildmenuitem defaultmenu, 62, 62063, DEFFORMS_MENU_MSG, 'HTML_FORM'DEFFORMS_MENUP_MSG, 0, 0
  773.          buildmenuitem defaultmenu, 62, 62257, FLBL_MENU_MSG, 'HTML_flbl'FLBL_MENUP_MSG, 0, 16384
  774.          buildmenuitem defaultmenu, 62, 62258, FFLDSET_MENU_MSG, 'HTML_ffldset'FFLDSET_MENUP_MSG, 0, 16384
  775.          buildmenuitem defaultmenu, 62, 62212, \0, '', 4, 0
  776.  
  777.          buildmenuitem defaultmenu, 62, 62064, INPUTTYPE_MENU_MSG, INPUTTYPE_MENUP_MSG, 17, 0
  778.             buildmenuitem defaultmenu, 62, 62065, FTEXT_MENU_MSG, 'HTML_ftxtpwd TEXT'FTEXT_MENUP_MSG, 0, 0
  779.             buildmenuitem defaultmenu, 62, 62066, FTAREA_MENU_MSG, 'HTML_ftarea'FTAREA_MENUP_MSG, 0, 0
  780.             buildmenuitem defaultmenu, 62, 62067, FPASS_MENU_MSG, 'HTML_ftxtpwd PASSWORD'FPASS_MENUP_MSG, 0, 0
  781.             buildmenuitem defaultmenu, 62, 62068, \0, '', 4, 0
  782.  
  783.             buildmenuitem defaultmenu, 62, 62244, FCHK_MENU_MSG, 'HTML_fchk'FCHK_MENUP_MSG, 0, 0
  784.             buildmenuitem defaultmenu, 62, 62245, FRAD_MENU_MSG, 'HTML_frad'FRAD_MENUP_MSG, 0, 0
  785.             buildmenuitem defaultmenu, 62, 62246, \0, '', 4, 0
  786.             buildmenuitem defaultmenu, 62, 62247, FSEL_MENU_MSG, 'HTML_fsel'FSEL_MENUP_MSG, 0, 0
  787.             buildmenuitem defaultmenu, 62, 62248, FSOPT_MENU_MSG, 'HTML_fsopt'FSOPT_MENUP_MSG, 0, 0
  788.             buildmenuitem defaultmenu, 62, 62249, \0, '', 4, 0
  789.             buildmenuitem defaultmenu, 62, 62250, FBTN_MENU_MSG, 'HTML_fbtn'FBTN_MENUP_MSG, 0, 16384
  790.             buildmenuitem defaultmenu, 62, 62251, FFILE_MENU_MSG, 'HTML_ffile'FFILE_MENUP_MSG, 0, 0
  791.             buildmenuitem defaultmenu, 62, 62252, FHID_MENU_MSG, 'HTML_fhid'FHID_MENUP_MSG, 0, 0
  792.             buildmenuitem defaultmenu, 62, 62253, FIMG_MENU_MSG, 'HTML_fimg'FIMG_MENUP_MSG, 32769, 0
  793.  
  794.          buildmenuitem defaultmenu, 62, 62256, \0, '', 4, 0
  795.          buildmenuitem defaultmenu, 62, 62254, FSUBMIT_MENU_MSG, 'HTML_fsubres Submit'FSUBMIT_MENUP_MSG, 0, 0
  796.          buildmenuitem defaultmenu, 62, 62255, FRESET_MENU_MSG, 'HTML_fsubres Reset'FRESET_MENUP_MSG, 32769, 0
  797.  
  798.       buildmenuitem defaultmenu, 62, 62216, JAVA_MENU_MSG, JAVA_MENUP_MSG, 17, 0
  799.       buildmenuitem defaultmenu, 62, 62217, JAPP_MENU_MSG, 'HTML_JAPP'JAPP_MENUP_MSG, 0, 0
  800.       buildmenuitem defaultmenu, 62, 62218, JPARAM_MENU_MSG, 'HTML_JPARAM'JPARAM_MENUP_MSG, 32769, 0
  801.  
  802.       buildmenuitem defaultmenu, 62, 62070, SPEC_MENU_MSG, SPEC_MENUP_MSG, 17, 0
  803.          buildmenuitem defaultmenu, 62, 62071, QUOTES_MENU_MSG, 'HTML_same2 "'QUOTES_MENUP_MSG, 0, 0
  804.          buildmenuitem defaultmenu, 62, 62072, AMPSND_MENU_MSG, 'HTML_keyin &'AMPSND_MENUP_MSG, 0, 0
  805.          buildmenuitem defaultmenu, 62, 62073, LESS_MENU_MSG, 'HTML_keyin <'LESS_MENUP_MSG, 0, 0
  806.          buildmenuitem defaultmenu, 62, 62074, GRTR_MENU_MSG, 'HTML_keyin >'GRTR_MENUP_MSG, 0, 0
  807.          buildmenuitem defaultmenu, 62, 62076, \0, '', 4, 0
  808.  
  809.          buildmenuitem defaultmenu, 62, 62077, UPDTD_MENU_MSG, 'HTML_UPDATED'UPDTD_MENUP_MSG, 0, 0
  810.          buildmenuitem defaultmenu, 62, 62078, \0, '', 4, 0
  811.  
  812.          buildmenuitem defaultmenu, 62, 62079, COPYRT_MENU_MSG, 'HTML_keyin ©'COPYRT_MENUP_MSG, 0, 0
  813.          buildmenuitem defaultmenu, 62, 62219, TM_MENU_MSG, 'sayerror "Not implemented yet."'/*'HTML_keyin ™'*/TM_MENUP_MSG, 0, 16384
  814.          buildmenuitem defaultmenu, 62, 62080, REG_MENU_MSG, 'HTML_keyin ®'REG_MENUP_MSG, 0, 0
  815.          buildmenuitem defaultmenu, 62, 62082, \0, '', 4, 0
  816.  
  817.          buildmenuitem defaultmenu, 62, 62083, FRACMATH_MENU_MSG, FRACMATH_MENUP_MSG, 17, 0
  818.             buildmenuitem defaultmenu, 62, 62084, OFOURTH_MENU_MSG, 'HTML_keyin ¼'OFOURTH_MENUP_MSG, 0, 0
  819.             buildmenuitem defaultmenu, 62, 62085, HALF_MENU_MSG, 'HTML_keyin ½'HALF_MENUP_MSG, 0, 0
  820.             buildmenuitem defaultmenu, 62, 62086, TFOURTHS_MENU_MSG, 'HTML_keyin ¾'TFOURTHS_MENUP_MSG, 0, 0
  821.             buildmenuitem defaultmenu, 62, 62087, \0, '', 4, 0
  822.  
  823.             buildmenuitem defaultmenu, 62, 62088, SUPER1_MENU_MSG, 'HTML_keyin ¹'SUPER1_MENUP_MSG, 0, 0
  824.             buildmenuitem defaultmenu, 62, 62089, SUPER2_MENU_MSG, 'HTML_keyin ²'SUPER2_MENUP_MSG, 0, 0
  825.             buildmenuitem defaultmenu, 62, 62090, SUPER3_MENU_MSG, 'HTML_keyin ³'SUPER3_MENUP_MSG, 0, 0
  826.             buildmenuitem defaultmenu, 62, 62091, \0, '', 4, 0
  827.  
  828.             buildmenuitem defaultmenu, 62, 62092, MULT_MENU_MSG, 'HTML_keyin ×'MULT_MENUP_MSG, 0, 0
  829.             buildmenuitem defaultmenu, 62, 62093, DIVIDE_MENU_MSG, 'HTML_keyin ÷'DIVIDE_MENUP_MSG, 0, 0
  830.             buildmenuitem defaultmenu, 62, 62094, PLUSMINUS_MENU_MSG, 'HTML_keyin ±'PLUSMINUS_MENUP_MSG, 0, 0
  831.             buildmenuitem defaultmenu, 62, 62095, DEGREE_MENU_MSG, 'HTML_keyin °'DEGREE_MENUP_MSG, 0, 0
  832.             buildmenuitem defaultmenu, 62, 62203, \0, '', 4, 0
  833.  
  834.             buildmenuitem defaultmenu, 62, 62204, 'º (mas~c. ord.)', 'HTML_keyin º'SPECx_MENUP_MSG, 0, 0
  835.             buildmenuitem defaultmenu, 62, 62205, 'ª (f~em. ord.)', 'HTML_keyin ª'SPECx_MENUP_MSG, 32769, 0
  836.  
  837.          buildmenuitem defaultmenu, 62, 62096, SYMBOLS_MENU_MSG, SYMBOLS_MENUP_MSG, 17, 0
  838.             buildmenuitem defaultmenu, 62, 62097, LMOT_MENU_MSG, 'HTML_keyin «'LMOT_MENUP_MSG, 0, 0
  839.             buildmenuitem defaultmenu, 62, 62098, RMOT_MENU_MSG, 'HTML_keyin »'RMOT_MENUP_MSG, 0, 0
  840.             buildmenuitem defaultmenu, 62, 62099, MIDDOT_MENU_MSG, 'HTML_keyin ·'MIDDOT_MENUP_MSG, 0, 0
  841.             buildmenuitem defaultmenu, 62, 62100, MICRO_MENU_MSG, 'HTML_keyin µ'MICRO_MENUP_MSG, 0, 0
  842.             buildmenuitem defaultmenu, 62, 62101, PARSYM_MENU_MSG, 'HTML_keyin ¶'PARSYM_MENUP_MSG, 0, 0
  843.             buildmenuitem defaultmenu, 62, 62102, SECT_MENU_MSG, 'HTML_keyin §'SECT_MENUP_MSG, 0, 0
  844.             buildmenuitem defaultmenu, 62, 62103, \0, '', 4, 0
  845.  
  846.             buildmenuitem defaultmenu, 62, 62104, PSTER_MENU_MSG, 'HTML_keyin £'PSTER_MENUP_MSG, 0, 0
  847.             buildmenuitem defaultmenu, 62, 62105, YEN_MENU_MSG, 'HTML_keyin ¥'YEN_MENUP_MSG, 0, 0
  848.             buildmenuitem defaultmenu, 62, 62106, GENCURR_MENU_MSG, 'HTML_keyin ¤'GENCURR_MENUP_MSG, 0, 0
  849.             buildmenuitem defaultmenu, 62, 62200, \0, '', 4, 0
  850.  
  851.             buildmenuitem defaultmenu, 62, 62201, '¬ (~not)', 'HTML_keyin ¬'SPECx_MENUP_MSG, 0, 0
  852.             buildmenuitem defaultmenu, 62, 62202, '▌ (bro~ken vbar)', 'HTML_keyin ¦'SPECx_MENUP_MSG, 32769, 0
  853.  
  854.          buildmenuitem defaultmenu, 62, 62107, ACCENTC_MENU_MSG, ACCENTC_MENUP_MSG, 17, 0
  855.             buildmenuitem defaultmenu, 62, 62213, ACCENTS_MENU_MSG, ACCENTS_MENUP_MSG, 17, 0
  856.             buildmenuitem defaultmenu, 62, 62194, '∩ (~acute)',     'HTML_keyin ´'SPECx_MENUP_MSG, 0, 0
  857.             buILdmenuitem defaultmenu, 62, 62195, '∙ (~umlaut)',    'HTML_keyin ¨'SPECx_MENUP_MSG, 0, 0
  858.             buildmenuitem defaultmenu, 62, 62214, 'ε (~macron)',    'HTML_keyin ¯'SPECx_MENUP_MSG, 0, 0
  859.             buildmenuitem defaultmenu, 62, 62215, '≈ (~cedilla)',   'HTML_keyin ¸'SPECx_MENUP_MSG, 32769, 0
  860.             buildmenuitem defaultmenu, 62, 62196, \0, '', 4, 0
  861.  
  862.             buildmenuitem defaultmenu, 62, 62108, '~A, a', ACCENTCx_MENUP_MSG, 17, 0    
  863.                buildmenuitem defaultmenu, 62, 62109, '╖ (A + `)',  'HTML_keyin À'ACCENTCx_MENUP_MSG, 0, 0
  864.                buildmenuitem defaultmenu, 62, 62110, "╡ (A + ')",  'HTML_keyin Á'ACCENTCx_MENUP_MSG, 0, 0
  865.                buildmenuitem defaultmenu, 62, 62111, '╢ (A + ^)',  'HTML_keyin Â'ACCENTCx_MENUP_MSG, 0, 0
  866.                buildmenuitem defaultmenu, 62, 62112, '╟ (A + ~~)', 'HTML_keyin Ã'ACCENTCx_MENUP_MSG, 0, 0
  867.                buildmenuitem defaultmenu, 62, 62113, 'Ä (A + ∙)',  'HTML_keyin Ä'ACCENTCx_MENUP_MSG, 0, 0
  868.                buildmenuitem defaultmenu, 62, 62114, 'Å (A + °)',  'HTML_keyin Å'ACCENTCx_MENUP_MSG, 0, 0
  869.                buildmenuitem defaultmenu, 62, 62115, 'Æ (A + E)',  'HTML_keyin Æ'ACCENTCx_MENUP_MSG, 0, 0
  870.                buildmenuitem defaultmenu, 62, 62260, \0, '', 4, 0
  871.                buildmenuitem defaultmenu, 62, 62116, 'à (a + `)',  'HTML_keyin à'ACCENTCx_MENUP_MSG, 0, 0
  872.                buildmenuitem defaultmenu, 62, 62117, "á (a + ')",  'HTML_keyin á'ACCENTCx_MENUP_MSG, 0, 0
  873.                buildmenuitem defaultmenu, 62, 62118, 'â (a + ^)',  'HTML_keyin â'ACCENTCx_MENUP_MSG, 0, 0
  874.                buildmenuitem defaultmenu, 62, 62119, '╞ (a + ~~)', 'HTML_keyin ã'ACCENTCx_MENUP_MSG, 0, 0
  875.                buildmenuitem defaultmenu, 62, 62120, 'ä (a + ∙)',  'HTML_keyin ä'ACCENTCx_MENUP_MSG, 0, 0
  876.                buildmenuitem defaultmenu, 62, 62121, 'å (a + °)',  'HTML_keyin å'ACCENTCx_MENUP_MSG, 0, 0
  877.                buildmenuitem defaultmenu, 62, 62122, 'æ (a + e)',  'HTML_keyin æ'ACCENTCx_MENUP_MSG, 32769, 0
  878.  
  879.             buildmenuitem defaultmenu, 62, 62123, 'Ç',          'HTML_keyin Ç'ACCENTCx_MENUP_MSG, 0, 0
  880.             buildmenuitem defaultmenu, 62, 62124, 'ç',          'HTML_keyin ç'ACCENTCx_MENUP_MSG, 0, 0
  881.  
  882.             buildmenuitem defaultmenu, 62, 62125, '~E, e', ACCENTCx_MENUP_MSG, 17, 0     
  883.                buildmenuitem defaultmenu, 62, 62126, '╘ (E + `)',  'HTML_keyin È'ACCENTCx_MENUP_MSG, 0, 0
  884.                buildmenuitem defaultmenu, 62, 62127, "É (E + ')",  'HTML_keyin É'ACCENTCx_MENUP_MSG, 0, 0
  885.                buildmenuitem defaultmenu, 62, 62128, '╥ (E + ^)',  'HTML_keyin Ê'ACCENTCx_MENUP_MSG, 0, 0
  886.                buildmenuitem defaultmenu, 62, 62129, '╙ (E + ∙)',  'HTML_keyin Ë'ACCENTCx_MENUP_MSG, 0, 0
  887.                buildmenuitem defaultmenu, 62, 62261, \0, '', 4, 0
  888.                buildmenuitem defaultmenu, 62, 62130, 'è (e + `)',  'HTML_keyin è'ACCENTCx_MENUP_MSG, 0, 0
  889.                buildmenuitem defaultmenu, 62, 62131, "é (e + ')",  'HTML_keyin é'ACCENTCx_MENUP_MSG, 0, 0
  890.                buildmenuitem defaultmenu, 62, 62132, 'ê (e + ^)',  'HTML_keyin ê'ACCENTCx_MENUP_MSG, 0, 0
  891.                buildmenuitem defaultmenu, 62, 62133, 'ë (e + ∙)',  'HTML_keyin ë'ACCENTCx_MENUP_MSG, 32769, 0
  892.  
  893.             buildmenuitem defaultmenu, 62, 62134, '~I, i', ACCENTCx_MENUP_MSG, 17, 0     
  894.                buildmenuitem defaultmenu, 62, 62135, '▐ (I + `)',  'HTML_keyin Ì'ACCENTCx_MENUP_MSG, 0, 0
  895.                buildmenuitem defaultmenu, 62, 62136, "╓ (I + ')",  'HTML_keyin Í'ACCENTCx_MENUP_MSG, 0, 0
  896.                buildmenuitem defaultmenu, 62, 62137, '╫ (I + ^)',  'HTML_keyin Î'ACCENTCx_MENUP_MSG, 0, 0
  897.                buildmenuitem defaultmenu, 62, 62138, '╪ (I + ∙)',  'HTML_keyin Ï'ACCENTCx_MENUP_MSG, 0, 0
  898.                buildmenuitem defaultmenu, 62, 62262, \0, '', 4, 0
  899.                buildmenuitem defaultmenu, 62, 62139, 'ì (i + `)',  'HTML_keyin ì'ACCENTCx_MENUP_MSG, 0, 0
  900.                buildmenuitem defaultmenu, 62, 62140, "í (i + ')",  'HTML_keyin í'ACCENTCx_MENUP_MSG, 0, 0
  901.                buildmenuitem defaultmenu, 62, 62141, 'î (i + ^)',  'HTML_keyin î'ACCENTCx_MENUP_MSG, 0, 0
  902.                buildmenuitem defaultmenu, 62, 62142, 'ï (i + ∙)',  'HTML_keyin ï'ACCENTCx_MENUP_MSG, 32769, 0
  903.  
  904.             buildmenuitem defaultmenu, 62, 62187, '╤ (ETH)', 'HTML_keyin Ð'SPECx_MENUP_MSG, 0, 0
  905.             buildmenuitem defaultmenu, 62, 62188, '╨ (eth)', 'HTML_keyin ð'SPECx_MENUP_MSG, 0, 0
  906.  
  907.             buildmenuitem defaultmenu, 62, 62143, 'Ñ', 'HTML_keyin Ñ'ACCENTCx_MENUP_MSG, 0, 0
  908.             buildmenuitem defaultmenu, 62, 62144, 'ñ', 'HTML_keyin ñ'ACCENTCx_MENUP_MSG, 0, 0
  909.  
  910.             buildmenuitem defaultmenu, 62, 62145, '~O, o', ACCENTCx_MENUP_MSG, 17, 0     
  911.                buildmenuitem defaultmenu, 62, 62146, 'π (O + `)',  'HTML_keyin Ò'ACCENTCx_MENUP_MSG, 0, 0
  912.                buildmenuitem defaultmenu, 62, 62147, "α (O + ')",  'HTML_keyin Ó'ACCENTCx_MENUP_MSG, 0, 0
  913.                buildmenuitem defaultmenu, 62, 62148, 'Γ (O + ^)',  'HTML_keyin Ô'ACCENTCx_MENUP_MSG, 0, 0
  914.                buildmenuitem defaultmenu, 62, 62149, 'σ (O + ~~)', 'HTML_keyin Õ'ACCENTCx_MENUP_MSG, 0, 0
  915.                buildmenuitem defaultmenu, 62, 62150, 'Ö (O + ∙)',  'HTML_keyin Ö'ACCENTCx_MENUP_MSG, 0, 0
  916.                buildmenuitem defaultmenu, 62, 62191, '¥ (O + /)',  'HTML_keyin Ø'ACCENTCx_MENUP_MSG, 0,0
  917.                buildmenuitem defaultmenu, 62, 62263, \0, '', 4, 0
  918.                buildmenuitem defaultmenu, 62, 62151, 'ò (o + `)',  'HTML_keyin ò'ACCENTCx_MENUP_MSG, 0, 0
  919.                buildmenuitem defaultmenu, 62, 62152, "ó (o + ')",  'HTML_keyin ó'ACCENTCx_MENUP_MSG, 0, 0
  920.                buildmenuitem defaultmenu, 62, 62153, 'ô (o + ^)',  'HTML_keyin ô'ACCENTCx_MENUP_MSG, 0, 0
  921.                buildmenuitem defaultmenu, 62, 62154, 'Σ (o + ~~)', 'HTML_keyin õ'ACCENTCx_MENUP_MSG, 0, 0
  922.                buildmenuitem defaultmenu, 62, 62155, 'ö (o + ∙)',  'HTML_keyin ö'ACCENTCx_MENUP_MSG, 0, 0
  923.                buildmenuitem defaultmenu, 62, 62192, '¢ (o + /)',  'HTML_keyin ø'ACCENTCx_MENUP_MSG, 32769, 0
  924.  
  925.             buildmenuitem defaultmenu, 62, 62156, '~U, u', ACCENTCx_MENUP_MSG, 17, 0    
  926.                buildmenuitem defaultmenu, 62, 62157, 'δ (U + `)',  'HTML_keyin Ù'ACCENTCx_MENUP_MSG, 0, 0
  927.                buildmenuitem defaultmenu, 62, 62158, "Θ (U + ')",  'HTML_keyin Ú'ACCENTCx_MENUP_MSG, 0, 0
  928.                buildmenuitem defaultmenu, 62, 62159, 'Ω (U + ^)',  'HTML_keyin Û'ACCENTCx_MENUP_MSG, 0, 0
  929.                buildmenuitem defaultmenu, 62, 62160, 'Ü (U + ∙)',  'HTML_keyin Ü'ACCENTCx_MENUP_MSG, 0, 0
  930.                buildmenuitem defaultmenu, 62, 62264, \0, '', 4, 0
  931.                buildmenuitem defaultmenu, 62, 62161, 'ù (u + `)',  'HTML_keyin ù'ACCENTCx_MENUP_MSG, 0, 0
  932.                buildmenuitem defaultmenu, 62, 62162, "ú (u + ')",  'HTML_keyin ú'ACCENTCx_MENUP_MSG, 0, 0
  933.                buildmenuitem defaultmenu, 62, 62163, 'û (u + ^)',  'HTML_keyin û'ACCENTCx_MENUP_MSG, 0, 0
  934.                buildmenuitem defaultmenu, 62, 62164, 'ü (u + ∙)',  'HTML_keyin ü'ACCENTCx_MENUP_MSG, 32769, 0
  935.  
  936.             buildmenuitem defaultmenu, 62, 62165, '~Y, y', ACCENTCx_MENUP_MSG, 17, 0     
  937.                buildmenuitem defaultmenu, 62, 62166, "φ (Y + ')",  'HTML_keyin Ý'ACCENTCx_MENUP_MSG, 0, 0
  938.                buildmenuitem defaultmenu, 62, 62265, \0, '', 4, 0
  939.                buildmenuitem defaultmenu, 62, 62167, "∞ (y + ')",  'HTML_keyin ý'ACCENTCx_MENUP_MSG, 0, 0
  940.                buildmenuitem defaultmenu, 62, 62168, 'ÿ (y + ∙)',  'HTML_keyin ÿ'ACCENTCx_MENUP_MSG, 32769, 0
  941.  
  942.             buildmenuitem defaultmenu, 62, 62193, 'ß (~s + z)',   'HTML_keyin ß'SPECx_MENUP_MSG, 0, 0
  943.             buildmenuitem defaultmenu, 62, 62189, 'Φ (THORN)', 'HTML_keyin Þ'SPECx_MENUP_MSG, 0, 0
  944.             buildmenuitem defaultmenu, 62, 62190, 'τ (thorn)', 'HTML_keyin þ'SPECx_MENUP_MSG, 0, 0
  945.             buildmenuitem defaultmenu, 62, 62197, \0, '', 4, 0
  946.  
  947.             buildmenuitem defaultmenu, 62, 62198, '¿ inv. ~ques.',   'HTML_keyin ¿'SPECx_MENUP_MSG, 0, 0
  948.             buildmenuitem defaultmenu, 62, 62199, '¡ inv. e~xcl.',   'HTML_keyin ¡'SPECx_MENUP_MSG, 32769, 0
  949.  
  950.          buildmenuitem defaultmenu, 62, 62186, \0, '', 4, 0
  951.          buildmenuitem defaultmenu, 62, 62221, SPACES_MENU_MSG, SPACES_MENUP_MSG, 17, 0
  952.          buildmenuitem defaultmenu, 62, 62280, SPACER_MENU_MSG, 'HTML_spacer'SPACER_MENUP_MSG, 0, 0
  953.          buildmenuitem defaultmenu, 62, 62281, \0, '', 4, 0
  954.          buildmenuitem defaultmenu, 62, 62075, NBRSPACE_MENU_MSG, 'HTML_keyin  'NBRSPACE_MENUP_MSG, 0, 0
  955.          buildmenuitem defaultmenu, 62, 62222, EMSP_MENU_MSG, 'sayerror "Not implemented yet."'/*'HTML_keyin  '*/EMSP_MENUP_MSG, 0, 16384
  956.          buildmenuitem defaultmenu, 62, 62223, ENSP_MENU_MSG, 'sayerror "Not implemented yet."'/*'HTML_keyin  '*/ENSP_MENUP_MSG, 0, 16384
  957.          buildmenuitem defaultmenu, 62, 62224, THSP_MENU_MSG, 'sayerror "Not implemented yet."'/*'HTML_keyin  '*/THSP_MENUP_MSG, 0, 16384
  958.          buildmenuitem defaultmenu, 62, 62225, \0, '', 4, 0
  959.          buildmenuitem defaultmenu, 62, 62226, EMD_MENU_MSG, 'sayerror "Not implemented yet."'/*'HTML_keyin —'*/EMD_MENUP_MSG, 0, 16384
  960.          buildmenuitem defaultmenu, 62, 62227, END_MENU_MSG, 'sayerror "Not implemented yet."'/*'HTML_keyin –'*/END_MENUP_MSG, 0, 16384
  961.          buildmenuitem defaultmenu, 62, 62228, \0, '', 4, 0
  962.          buildmenuitem defaultmenu, 62, 62229, SHY_MENU_MSG, 'HTML_keyin ­'SHY_MENUP_MSG, 32769, 0
  963.          buildmenuitem defaultmenu, 62, 62220, \0, '', 4, 0
  964.          buildmenuitem defaultmenu, 62, 62081, CENTS_MENU_MSG, 'HTML_keyin ¢'CENTS_MENUP_MSG, 32769, 0
  965.  
  966.       buildmenuitem defaultmenu, 62, 62211, CSTMTAG_MENU_MSG, 'CSTM_TAG'CSTMTAG_MENUP_MSG, 0, 0
  967.          buildmenuitem defaultmenu, 62, 62173, \0, '', 4, 0
  968.  
  969.          buildmenuitem defaultmenu, 62, 62174, CONN_MENU_MSG, CONN_MENUP_MSG, 17, 0
  970.             buildmenuitem defaultmenu, 62, 62175, FTP_MENU_MSG, 'HTML_CONNECT '||MY_FTP FTP_MENUP_MSG, 0, 0
  971.             buildmenuitem defaultmenu, 62, 62176, TEL_MENU_MSG, 'HTML_CONNECT '||MY_TELNET TEL_MENUP_MSG, 0, 0
  972.             buildmenuitem defaultmenu, 62, 62177, TERM2_MENU_MSG, 'HTML_CONNECT '||MY_COM_PROG TERM2_MENUP_MSG, 0, 0
  973.             buildmenuitem defaultmenu, 62, 62178, WEBEX_MENU_MSG, 'HTML_CONNECT '||MY_BROWSER WEBEX_MENUP_MSG, 32769, 0
  974.             buildmenuitem defaultmenu, 62, 62179, \0, '', 4, 0
  975.  
  976.          buildmenuitem defaultmenu, 62, 62180, PREVIEW_MENU_MSG, 'HTML_BROWSE '||MY_BROWSER PREVIEW_MENUP_MSG, 0, 0
  977.  
  978.       buildmenuitem defaultmenu, 62, 62181, REF_MENU_MSG, REF_MENUP_MSG, 17, 0
  979.          buildmenuitem defaultmenu, 62, 62170, WEBLINT_MENU_MSG, 'HTML_SYNTAX '||MY_HTML_CHECK WEBLINT_MENUP_MSG, 0, 0
  980.          buildmenuitem defaultmenu, 62, 62171, STRIPHTM_MENU_MSG, 'HTML_STRIP '||MY_HTML_STRIP STRIPHTM_MENUP_MSG, 0, 0
  981.          buildmenuitem defaultmenu, 62, 62209, \0, '', 4, 0
  982.          buildmenuitem defaultmenu, 62, 62182, HTMLCOL_MENU_MSG, 'start '||MY_COLOR_REF HTMLCOL_MENUP_MSG, 0, 0
  983.          buildmenuitem defaultmenu, 62, 62183, HTMLLIB_MENU_MSG, 'start '||MY_HTML_REF HTMLLIB_MENUP_MSG, 32769, 0
  984.          buildmenuitem defaultmenu, 62, 62184, \0, '', 4, 0
  985.  
  986.       buildmenuitem defaultmenu, 62, 62185, ABOUT_MENU_MSG, 'HTML_ABOUT'ABOUT_MENUP_MSG, 0, 0
  987.  
  988.  
  989.    call readd_help_menu()
  990.    call maybe_show_menu()
  991.    HTML_tags_menu_flag = '1'
  992.  
  993.    compile if WANT_HTML_MONOFONT = '1'
  994.    'monofont'
  995.    compile endif
  996.    'mc /ma '||MY_HTML_MARGINS' /tabs '||MY_HTML_TABS
  997.    'postme HTML_MOUSE_INIT'
  998.  
  999.  
  1000. defexit
  1001.    universal defaultmenu, activemenu
  1002.    universal HTML_tags_menu_flag
  1003.    deletemenu defaultmenu,62,0,0
  1004.    call maybe_show_menu()
  1005.    HTML_tags_menu_flag = '0'
  1006.  
  1007.  
  1008. defc HTML_MOUSE_INIT
  1009.    call register_mousehandler(1,'2 CLICK 6','HTML_POPUP_MENU')
  1010.  
  1011.  
  1012. defc HTML_keyin  -- aka HTML_I
  1013.    i_s = insert_state()
  1014.    if not i_s then insert_toggle; endif
  1015.    keyin arg(1)
  1016.    if not i_s then insert_toggle; endif
  1017.  
  1018.  
  1019. defc HTML_suf = -- Suffix line with arg
  1020.    replaceline textline(.line)arg(1), .line
  1021.    call einsert_line()
  1022.  
  1023.  
  1024. defc HTML_IL = -- InsertLine
  1025.    i_s = insert_state()
  1026.       if not i_s then insert_toggle; endif
  1027.    insertline arg(1), .line+1
  1028.    '+1'
  1029.    end_line
  1030.  
  1031.  
  1032. defc HTML_break  -- Insert tag & break line
  1033.    i_s = insert_state()
  1034.       if not i_s then insert_toggle; endif
  1035.    keyin arg(1)
  1036.    split
  1037.    '+1'
  1038.    .col = 0
  1039.  
  1040.  
  1041. defc HTML_IML = -- Insert Many Lines
  1042.    i_s = insert_state()
  1043.       if not i_s then insert_toggle; endif
  1044.    parse value strip(arg(1),'L') with delim 2 rest
  1045.    do while rest <> ''
  1046.       parse value rest with line (delim) rest
  1047.       keyin line
  1048.       call einsert_line()
  1049.    enddo
  1050.    end_line
  1051.  
  1052.  
  1053. defc HTML_same2
  1054.    tag = arg(1)
  1055.    if marktype() then
  1056.       getmark firstline,lastline,firstcol,lastcol,fileid
  1057.       call HTML_insert_tags(tag,tag)
  1058.    else
  1059.     keyin (tag)(tag)
  1060.     .col=.col - length(tag)
  1061.    endif
  1062.  
  1063.  
  1064. defc HTML_insert2  -- Insert opening & closing tags
  1065.    s_tag = '<'||arg(1)'>'
  1066.    e_tag = '</'||arg(1)'>'
  1067.    call HTML_insert_tags(s_tag, e_tag)
  1068.  
  1069.  
  1070. defc HTML_lineinsert2  -- Insert opening & closing tags on multiple lines 
  1071.    s_tag = '<'||arg(1)'>'
  1072.    e_tag = '</'||arg(1)'>'
  1073.    call HTML_insert_linetags(s_tag, e_tag)
  1074.  
  1075.  
  1076. defproc HTML_insert_tags(start_tag, end_tag)
  1077.    mt = marktype()
  1078.    if marktype() then  -- Block, Line or Character mark
  1079.          getfileid fid
  1080.          getmark firstline,lastline,firstcol,lastcol,fileid
  1081.          if fid<>fileid then
  1082.             sayerror 'Wrong file - check mark'
  1083.             return
  1084.          endif
  1085.          if lastline = .last then
  1086.             .line = lastline
  1087.             insert
  1088.          endif
  1089.          if pos(leftstr(mt, 1), 'L') then -- Line mark
  1090.             .line = firstline
  1091.             call einsert_line()
  1092.             savecol = .col
  1093.                i_s = insert_state()
  1094.                if not i_s then insert_toggle; endif
  1095.             deleteline
  1096.             '-2'
  1097.             call einsert_line()
  1098.             .col = savecol
  1099.             keyin start_tag
  1100.             .line = lastline+1
  1101.             call einsert_line()
  1102.             keyin end_tag
  1103.             call pset_mark(firstline+1, lastline+1, firstcol, lastcol, mt, fileid)
  1104.                if not i_s then insert_toggle; endif
  1105.             return
  1106.          elseif pos(leftstr(mt, 1), 'BC') then -- Block or Character mark
  1107.             call pset_mark(firstline+1, lastline+1, firstcol, lastcol, mt, fileid)
  1108.             .col = lastcol+1
  1109.          endif
  1110.    else -- no mark
  1111.       firstline = .line; lastline = .line
  1112.       lastcol = .col
  1113.       firstcol = .col
  1114.    endif  -- marktypes
  1115.    lastline
  1116.    i_s = insert_state()
  1117.    if not i_s then insert_toggle; endif
  1118.    keyin end_tag
  1119.    firstline
  1120.    .col=firstcol
  1121.    keyin start_tag
  1122.    if arg(3) <> '' & not pos(' ', arg(3)) then  -- Set an optional bookmark
  1123.       'bm' arg(3) 4 firstline firstcol
  1124.    endif
  1125.    if pos(leftstr(mt,1), 'BC') then  -- Block or Character mark
  1126.       l = length(start_tag)
  1127.       call pset_mark(firstline, lastline, firstcol+l, lastcol+(l*(lastline=firstline)), mt, fileid)
  1128.       .line = lastline
  1129.       .col = lastcol+length(start_tag)+length(end_tag)+1
  1130.       if firstline <> lastline then
  1131.          unmark
  1132.       endif
  1133.    endif
  1134.    if not i_s then insert_toggle; endif
  1135.  
  1136.  
  1137. defproc HTML_insert_linetags(start_tag, end_tag)
  1138.    mt = marktype()
  1139.    if marktype() then  -- Block, Line or Character mark
  1140.          getfileid fid
  1141.          getmark firstline,lastline,firstcol,lastcol,fileid
  1142.          if fid<>fileid then
  1143.             sayerror 'Wrong file - check mark'
  1144.             return
  1145.          endif
  1146.          if lastline = .last then
  1147.             .line = lastline
  1148.             insert
  1149.          endif
  1150.       if pos(leftstr(mt, 1), 'BC') then -- Block or Character mark
  1151.          .col=lastcol+1
  1152.          lastline
  1153.          i_s = insert_state()
  1154.          if not i_s then insert_toggle; endif
  1155.          keyin end_tag
  1156.          firstline
  1157.          .col=firstcol
  1158.          keyin start_tag
  1159.          l = length(start_tag)
  1160.          call pset_mark(firstline, lastline, firstcol+l, lastcol+(l*(lastline=firstline)), mt, fileid)
  1161.          .line = lastline
  1162.          if firstline = lastline then
  1163.             .col = lastcol+length(start_tag)+length(end_tag)+1
  1164.          else
  1165.             .col = lastcol+length(end_tag)+1
  1166.             unmark
  1167.          endif
  1168.          if not i_s then insert_toggle; endif
  1169.       elseif pos(leftstr(mt, 1), 'L') then -- Line mark
  1170.          .line = firstline
  1171.          call einsert_line()
  1172.          savecol = .col
  1173.          deleteline
  1174.          '-2'
  1175.          call einsert_line()
  1176.          .col = savecol
  1177.             i_s = insert_state()
  1178.             if not i_s then insert_toggle; endif
  1179.          keyin start_tag
  1180.          .line = lastline+1
  1181.          call einsert_line()
  1182.          keyin end_tag
  1183.          call pset_mark(firstline+1, lastline+1, firstcol, lastcol, mt, fileid)
  1184.             if not i_s then insert_toggle; endif
  1185.       endif -- Block, Line or Character marks
  1186.    else  -- no mark
  1187.       savecol = .col
  1188.       i_s = insert_state()
  1189.          if not i_s then insert_toggle; endif
  1190.       keyin start_tag
  1191.       call einsert_line()
  1192.       keyin end_tag
  1193.       insertline ' '
  1194.       '-1'
  1195.       .col = savecol+3
  1196.         if not i_s then insert_toggle; endif
  1197.    endif -- marktypes
  1198.  
  1199.  
  1200. defc HTML_META
  1201.    name = listbox("HTTP-EQUIV",
  1202.       "/Author/Owner/Reply-to/Expires/Keywords/Description/<empty>",,6,50,7,15)
  1203.    if name == '' then
  1204.       return
  1205.    endif
  1206.    if name = '<empty>' then
  1207.       name = ''
  1208.    endif
  1209.    content = entrybox("Contents of META tag   ")
  1210.       if content == '' then
  1211.          return; endif
  1212.    i_s = insert_state()
  1213.       if not i_s then insert_toggle; endif
  1214.    keyin '<META HTTP-EQUIV="'name'" CONTENT="'content'">'
  1215.    if name = '' then
  1216.       .col = 19
  1217.    endif
  1218.  
  1219.  
  1220. defc HTML_BHREF
  1221.    res = HTML_geturl(BHREF_TITLE_MSG, BHREF_PROMPT_MSG, BHREF_LIST_MSG, url)
  1222.    if res > 1 | url='' then return; endif
  1223.    if not res then
  1224.       call HTML_logurl(url)
  1225.    endif
  1226.    baseurl = url
  1227.    i_s = insert_state()
  1228.       if not i_s then insert_toggle; endif
  1229.    keyin '<BASE HREF="'||html_path(baseurl)'">'
  1230.  
  1231.  
  1232. defc HTML_HLINK
  1233.    relrev = listbox("Relationship   ","/REL/REV/",,6,50)
  1234.    if relrev = '' then
  1235.       return
  1236.    endif
  1237.    relrevstr = entrybox('Value for REL or REV   ')
  1238.       if relrevstr = '' then
  1239.          return
  1240.       endif
  1241.    relrev = relrev'="'||relrevstr'"'
  1242.    res = HTML_geturl(HLINK_TITLE_MSG, HLINK_PROMPT_MSG, HLINK_LIST_MSG, url)
  1243.    if res > 1 | url='' then return; endif
  1244.    if not res then
  1245.       call HTML_logurl(url)
  1246.    endif
  1247.    linkurl = url
  1248.    linktitle = entrybox("Title for referenced URL   ",,"<none>")
  1249.       if linktitle = '' then
  1250.          return
  1251.       elseif linktitle = '<none>' then
  1252.          linktitle = ''
  1253.       else linktitle = ' TITLE="'||linktitle'"'
  1254.       endif
  1255.    i_s = insert_state()
  1256.       if not i_s then insert_toggle; endif
  1257.    keyin '<LINK '||relrev' HREF="'html_path(linkurl)'"'||linktitle'>'
  1258.  
  1259.  
  1260. defc HTML_HSCRIPT
  1261.    lang = entrybox("Script language?   ",,'<none>')
  1262.       if lang = '' then
  1263.          return
  1264.       endif
  1265.       if lang = '<none>' then
  1266.          lang = ''
  1267.       elseif lang then
  1268.          lang = ' LANGUAGE="'||lang'"'
  1269.       endif
  1270.    s_tag = '<SCRIPT'||lang'>'
  1271.    e_tag = '</SCRIPT>'
  1272.    call HTML_insert_linetags(s_tag, e_tag)
  1273.  
  1274.  
  1275. defc HTML_HSPAN
  1276.    s_tag= '<SPAN>'
  1277.    e_tag= '</SPAN>'
  1278.    call HTML_insert_linetags(s_tag, e_tag)
  1279.  
  1280.  
  1281. defc HTML_HSTYLE
  1282.    s_tag = '<STYLE>'
  1283.    e_tag = '</STYLE>'
  1284.    call HTML_insert_linetags(s_tag, e_tag)
  1285.  
  1286.  
  1287. defc HTML_DIV
  1288.    divalign = listbox("Alignment","/Left/Center/Right",, 6, 50,,15)
  1289.    if divalign = '' then
  1290.       return
  1291.    endif
  1292.    s_tag = '<DIV ALIGN="'||upcase(divalign)'">'
  1293.    e_tag = '</DIV>'
  1294.    call HTML_insert_linetags(s_tag, e_tag)
  1295.  
  1296.  
  1297. defc HTML_PARA
  1298.    i_s = insert_state()
  1299.       if not i_s then insert_toggle; endif
  1300.    if not marktype() then  -- no mark
  1301.       'HTML_lineinsert2 P'
  1302.    else   -- Block, Line or Character mark
  1303.       mt = marktype()
  1304.       getfileid fid
  1305.       getmark firstline,lastline,firstcol,lastcol,fileid
  1306.       if fid<>fileid then
  1307.          sayerror 'ERROR:  Wrong file -- check mark!'
  1308.          return
  1309.       endif
  1310.       if not pos(leftstr(mt, 1), 'L') then -- not a Line mark
  1311.          sayerror 'ERROR:  Mark must be a line mark!'
  1312.          return
  1313.       endif
  1314.       if lastline = .last then
  1315.          .line = .last
  1316.          insert
  1317.       endif
  1318.       .line = firstline
  1319.       insertline '<P>'
  1320.       numtags = '1'
  1321.       i=firstline+2
  1322.       do forever
  1323.          if i >= lastline+numtags+1 then
  1324.             .line = lastline+numtags+1
  1325.             insertline '</P>'
  1326.             unmark
  1327.             leave
  1328.          endif
  1329.          .line = i
  1330.          getline parline
  1331.          if word(parline, 1) then  -- line contains text
  1332.             if substr(parline, 1, 1) = ' ' | substr(parline, 1, 1) = '    ' then -- line begins with space or tab
  1333.                insertline '</P>'
  1334.                insertline ' '
  1335.                insertline '<P>'
  1336.                numtags = numtags+3
  1337.                i = i+numtags+1
  1338.             else i = i+1 -- line is interior of a paragraph
  1339.             endif
  1340.          else   -- line is empty
  1341.             insertline '</P>'
  1342.             '+1'
  1343.             insertline '<P>'
  1344.             numtags = numtags+2
  1345.             i = i+numtags+1
  1346.          endif  -- word
  1347.       enddo
  1348.       unmark
  1349.    endif -- marktype
  1350.  
  1351.  
  1352. defc HTML_DOC
  1353.    oldmod = .modify
  1354.    start_line = .line
  1355.    'HTML_IML |<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN">|<HTML>|<HEAD>|<TITLE></TITLE>|</HEAD>||<BODY>||<H1></H1>||</BODY>|</HTML>'
  1356. compile if MY_HTML_ADDRESS <> ''
  1357.    getsearch save_search
  1358.    'xcom l |</BODY>|-'
  1359.    insertline '<HR>'
  1360.    insertline ''
  1361.    insertline '<ADDRESS>'
  1362.    setsearch save_search
  1363.    my_upper_address = upcase(MY_HTML_ADDRESS)
  1364.    p0 = 1
  1365.    do forever
  1366.       p1 = pos('<BR>', my_upper_address, p0)
  1367.       if not p1 then
  1368.          insertline '   '||substr(MY_HTML_ADDRESS, p0)
  1369.          leave
  1370.       endif
  1371.       insertline '   '||substr(MY_HTML_ADDRESS, p0, p1+4-p0)
  1372.       p0 = p1+4
  1373.    enddo
  1374.    insertline '</ADDRESS>'
  1375.    insertline ''
  1376. compile endif -- defined(MY_HTML_ADDRESS)
  1377.    .line = start_line+3; end_line; .col=.col-8
  1378.    .modify = oldmod
  1379.  
  1380.  
  1381. defc HTML_embed
  1382.    embedflag = arg(1)
  1383.    defW = '<none>'
  1384.    defH = '<none>'
  1385.    controls = ''
  1386.    master = ''
  1387.    res = HTML_geturl(OBJ_TITLE_MSG, OBJ_PROMPT_MSG, OBJ_LIST_MSG, url)
  1388.       if res > 1 | url='' then return; endif
  1389.       if not res then
  1390.          call HTML_logurl(url)
  1391.       endif
  1392.    source = ' SRC="'||html_path(url)'"'
  1393.    if embedflag = 'l3d' then  -- Live3D object
  1394.       'HTML_keyin <EMBED'||source'>'
  1395.       return
  1396.    endif  -- Live3D object
  1397.    if embedflag = 'laud' then  -- LiveAudio object
  1398.       hidden = listbox("Hidden?   ", "/No/Yes/", "/OK/Cancel/",3,25,2)
  1399.          if hidden = '' then return; endif
  1400.       if hidden = 'Yes' then
  1401.          'HTML_keyin <EMBED'||source' HIDDEN="TRUE">'
  1402.          return
  1403.       else 
  1404.          controls = listbox("Controls   ", "/Console (default) 144W x 60H /Small console 144W x 15H/"||
  1405.                             "Play button 37W x 22H/Pause button 37W x 22H/Stop button 37W x 22H/Volume lever 74W x 20H/",
  1406.                             "/OK/Cancel/",3,25,6)
  1407.             if controls = '' then return
  1408.             elseif controls = 'Console (default) 144W x 60H' then
  1409.                controls = ''
  1410.                defW = '144'
  1411.                defH = '60'
  1412.             else parse value controls with c1 c2 defW . defH
  1413.                defW = strip(defW, 'T', 'W')
  1414.                defH = strip(defH, 'T', 'H')
  1415.                controls = ' CONTROLS="'||upcase(c1||c2)'"'
  1416.             endif
  1417.          master = listbox("Master control?   ", "/Yes/No/","/OK/Cancel",3,25,2)
  1418.             if master = '' then
  1419.                return
  1420.             elseif master = 'Yes' then
  1421.                master = ' MASTERSOUND'
  1422.             else master = ''
  1423.             endif
  1424.       endif  -- hidden
  1425.    endif -- Live Audio object
  1426.    if embedflag = 'lvid' then  -- LiveVideo object
  1427.       size = listbox("Size of object   ", "/120W x 90H/160W x 120H/240W x 180H/"||
  1428.                        "320W x 240H/Other", "/OK/Cancel/",3,25,5)
  1429.          if size = '' then
  1430.             return
  1431.          elseif size = 'Other' then
  1432.             width = entrybox("Width   ") 
  1433.                if width = '' then return; endif
  1434.             size = ' WIDTH="'||width'"'
  1435.             height = entrybox("Height   ") 
  1436.                if height = '' then return; endif
  1437.             size = size' HEIGHT="'||height'"'
  1438.          else parse value size with width . height
  1439.             width = ' WIDTH="'||strip(width, 'T', 'W')'"'
  1440.             height = ' HEIGHT="'||strip(height, 'T', 'H')'"'
  1441.          endif
  1442.    else
  1443.    endif -- LiveVideo
  1444.    alttext = ''
  1445.    if embedflag <> 'lvid' then  -- not LiveVideo
  1446.       name = entrybox('Name of the object   ')
  1447.          if name = '' then
  1448.             return
  1449.          else name = ' NAME="'||name'"'
  1450.          endif
  1451.       width = entrybox('Width of object   ','/OK/Cancel/',defW)
  1452.          if width = '' then return; endif
  1453.          if width = '<none>' then
  1454.             width = ''
  1455.          else  width = ' WIDTH="'||width'"'
  1456.          endif
  1457.       height = entrybox('Height of object   ','/OK/Cancel/',defH)
  1458.          if height = '' then return; endif
  1459.          if height = '<none>' then
  1460.             height = ''
  1461.          else height = ' HEIGHT="'||height'"'
  1462.          endif
  1463.    endif  -- not LiveVideo
  1464.    size = width||height
  1465.    align = listbox("Applet alignment   ",
  1466.              "/Bottom (default)/Left/Center/Right/Top/Middle"||
  1467.              "/TextTop/AbsMiddle/Baseline/AbsBottom/","/OK/Cancel/",3,25,10)
  1468.       if align = '' then
  1469.          return
  1470.       elseif align = 'Bottom (default)' then
  1471.          align = ' ALIGN="BOTTOM"'
  1472.       else align = ' ALIGN="'upcase(align)'"'
  1473.       endif
  1474.    if embedflag = 'gen' then  -- general embedded object
  1475.       alttext = entrybox('Alternate text   ',,'<none>')
  1476.          if alttext = '' then return; endif
  1477.          if alttext = '<none>' then
  1478.             alttext = ''
  1479.          else  alttext = ' ALT="'||alttext'"'
  1480.          endif
  1481.    endif -- general embedded object
  1482.    'HTML_keyin <EMBED'||source||size||align||alttext||controls||master'>'
  1483.  
  1484.  
  1485. defc HTML_qt
  1486.    res = HTML_geturl(OBJ_TITLE_MSG, OBJ_PROMPT_MSG, OBJ_LIST_MSG, url)
  1487.       if res > 1 | url='' then return; endif
  1488.       if not res then
  1489.          call HTML_logurl(url)
  1490.       endif
  1491.    source = ' SRC="'||html_path(url)'" PLUGINSPAGE="http://quicktime.apple.com"'
  1492.    width = entrybox('Width of object   ')
  1493.       if width = '' then return; endif
  1494.       width = ' WIDTH="'||width'"'
  1495.    height = entrybox('Height of object   ', ,'(add 24 for console)')
  1496.       if height = '' then return; endif
  1497.       height = ' HEIGHT="'||height'"'
  1498.    'HTML_keyin <EMBED'||source||width||height'>'
  1499.  
  1500.  
  1501. defc HTML_embparam
  1502.    paramname = entrybox("Parameter name:   ")
  1503.       if paramname = '' then
  1504.          return
  1505.       endif
  1506.    paramvalue = entrybox("Value of parameter:   ",,'<none>')
  1507.       if paramvalue = '' then return; endif
  1508.       if paramvalue = '<none>' then
  1509.          paramvalue = ''
  1510.       else paramvalue = '="'||paramvalue'"'
  1511.       endif
  1512.    embparam = paramname||paramvalue
  1513.    i_s = insert_state()
  1514.       if not i_s then insert_toggle; endif
  1515.    keyin embparam
  1516.  
  1517.  
  1518. defc HTML_OBJ
  1519.    sayerror 'Not implemented yet.'
  1520.  
  1521.  
  1522. defc HTML_spacer
  1523.    type = listbox("Type of spacer   ", "/Horizontal/Vertical/Block/", , 3, 25)
  1524.       if type = '' then return; endif
  1525.    type = ' TYPE="'||upcase(type)'"'
  1526.    if type = ' TYPE="HORIZONTAL"' | type = ' TYPE="VERTICAL"' then
  1527.       size = entrybox("Spacer size      ")
  1528.          if size = '' then return; endif
  1529.       size = ' SIZE="'||size'"'
  1530.       align = ''
  1531.    else  -- Block
  1532.       sizeW = entrybox("Width   ")
  1533.          if sizeW = '' then return; endif
  1534.       sizeH = entrybox("Height   ")
  1535.          if sizeH = '' then return; endif
  1536.       align = listbox("Spacer alignment   ",
  1537.          "/Left (default)/Right/Top/Middle/Bottom"||
  1538.          "/TextTop/AbsMiddle/Baseline/AbsBottom/",,3,25,9)
  1539.          if align == '' then
  1540.             return
  1541.          elseif align = 'Left (default)' then
  1542.             align = ' ALIGN="LEFT"'
  1543.          else align = ' ALIGN="'||upcase(align)
  1544.          endif
  1545.       size = ' WIDTH="'||sizeW'" HEIGHT="'||sizeH'"'||align'"'  -- Block 
  1546.    endif
  1547.    'HTML_keyin <SPACER'||type||size'>'
  1548.  
  1549.  
  1550. defc FR_DOC
  1551.    oldmod = .modify
  1552.    start_line = .line
  1553.    buttons = '/~Rows/~Cols/Cancel/'
  1554.    parse value entrybox(FRSET_TITLE_MSG, buttons, , '',200,
  1555.           atoi(1) || atoi(0) || gethwndc(APP_HANDLE) ||
  1556.           FRSET_PROMPT_MSG) with button 2 sizes \0
  1557.    if button = \3 | sizes = '' then
  1558.       return 3
  1559.    elseif button = \1 then
  1560.       fr_sizes = 'ROWS="'||sizes'"'
  1561.    else
  1562.       fr_sizes = 'COLS="'||sizes'"'
  1563.    endif
  1564.    'HTML_IML |<HTML>|<HEAD>|<TITLE></TITLE>|</HEAD>'||
  1565.    '||<FRAMESET '||fr_sizes'>||||<NOFRAMES>||</NOFRAMES>||</FRAMESET>|</HTML>'
  1566.    .line = start_line+2; end_line; .col=.col-8
  1567.    .modify = oldmod
  1568.  
  1569.  
  1570. defc FR_SUB_DOC
  1571.    oldmod = .modify
  1572.    start_line = .line
  1573.    'HTML_IML |<HEAD>||</HEAD>'||
  1574.    '||<BODY>||<H1></H1>||</BODY>'
  1575.    delete
  1576.    .line = start_line+6; end_line; .col=.col-5
  1577.    .modify = oldmod
  1578.  
  1579.  
  1580.  
  1581. defc FRAMESET
  1582.    start_line = .line
  1583.    buttons = '/~Rows/~Cols/Cancel/'
  1584.    parse value entrybox(FRSET_TITLE_MSG, buttons, , '',200,
  1585.           atoi(1) || atoi(0) || gethwndc(APP_HANDLE) ||
  1586.           FRSET_PROMPT_MSG) with button 2 sizes \0
  1587.    if button = \3 | sizes = '' then
  1588.       return 3
  1589.    elseif button = \1 then
  1590.       fr_sizes = 'ROWS="'||sizes'"'
  1591.    else
  1592.       fr_sizes = 'COLS="'||sizes'"'
  1593.    endif
  1594.    s_tag = '<FRAMESET '||fr_sizes'>'
  1595.    e_tag = '</FRAMESET>'
  1596.    call HTML_insert_linetags(s_tag, e_tag)
  1597.  
  1598.  
  1599. defc FRAME
  1600.    universal linktype, frameflag
  1601.    frameflag = '0'
  1602.    linktype = ''
  1603.    res = HTML_geturl(EXTLINK_TITLE_MSG, EXTLINK_PROMPT_MSG, EXTLINK_LIST_MSG, url)
  1604.    if res > 1 | url='' then 
  1605.       return; endif
  1606.    if not res then
  1607.       call HTML_logurl(url)
  1608.    endif
  1609.    frame_src = 'SRC="'||url'"'
  1610.    frameflag = '1'
  1611.    res = HTML_geturl(FRAMELINK_TITLE_MSG, FRAMELINK_PROMPT_MSG, FRAMELINK_LIST_MSG, url)
  1612.    if res > 1 | url='' then 
  1613.       frameflag = '0'
  1614.       return; endif
  1615.    if not res then
  1616.       call HTML_logurl(url)
  1617.    endif
  1618.    frame_name = ' NAME="'||url'"'
  1619.    frame_scroll = listbox("Scrollable?   ", "/Auto (default)/Yes/No/",,3,25)
  1620.       if frame_scroll = '' then
  1621.          frameflag = '0'
  1622.          return; endif
  1623.       if frame_scroll = 'Auto (default)' then
  1624.          frame_scroll = ''
  1625.       else frame_scroll = ' SCROLLING="'||upcase(frame_scroll)'"'
  1626.       endif
  1627.    frame_resize = listbox("Resizable?   ", "/Yes/No/",,3,25)
  1628.       if frame_resize = '' then
  1629.          frameflag = '0'
  1630.          return; endif
  1631.       if frame_resize = 'Yes' then
  1632.          frame_resize = ''
  1633.       else frame_resize = ' NORESIZE'
  1634.       endif
  1635.    i_s = insert_state()
  1636.       if not i_s then insert_toggle; endif
  1637.    frameflag = '0'
  1638.    keyin '<FRAME '||frame_src||frame_name||frame_scroll||frame_resize'>'
  1639.  
  1640.  
  1641. defc FR_TARGET
  1642.    universal linktype, frameflag
  1643.    frameflag = '1'
  1644.    linktype = ''
  1645.    res = HTML_geturl(FRTARGET_TITLE_MSG, FRTARGET_PROMPT_MSG, FRTARGET_LIST_MSG, url)
  1646.    if res > 1 | url='' then
  1647.       frameflag = '0'
  1648.    return; endif
  1649.    if not res then
  1650.       call HTML_logurl(url)
  1651.    endif
  1652.    i_s = insert_state()
  1653.       if not i_s then insert_toggle; endif
  1654.    frameflag = '0'
  1655.    if arg(1) = 'BASE' then
  1656.       keyin '<BASE TARGET="'||url'">'
  1657.    else
  1658.       keyin 'TARGET="'||url'" '
  1659.    endif
  1660.  
  1661.  
  1662.  
  1663. defc HTML_font
  1664.    type = arg(1)
  1665.    mt = marktype()
  1666.    if marktype() then
  1667.       getmark firstline,lastline,firstcol,lastcol,fileid
  1668.       if pos(leftstr(mt, 1), 'L') then -- line mark
  1669.          .line = firstline
  1670.          call einsert_line()
  1671.          savecol = .col
  1672.          deleteline
  1673.          '-1'
  1674.          call HTML_insert_linetags('<FONT '||type'>','</FONT>')
  1675.          .line = firstline
  1676.          if type = 'COLOR="#"' then
  1677.             .col = savecol+14
  1678.          else
  1679.             .col = savecol+12
  1680.          endif
  1681.       else
  1682.          call HTML_insert_tags('<FONT '||type'>','</FONT>')
  1683.          .line = firstline
  1684.          if type = 'COLOR="#"' then
  1685.             .col = firstcol+14
  1686.          else
  1687.             .col = firstcol+12
  1688.          endif
  1689.       endif
  1690.    else
  1691.       i_s = insert_state()
  1692.          if not i_s then insert_toggle; endif
  1693.       keyin '<FONT '||type'></FONT>'
  1694.       .col=.col - 9
  1695.    endif
  1696.  
  1697.  
  1698. defc HTML_basefont
  1699.    basefont = entrybox("Base font size   ")
  1700.       if basefont = '' then
  1701.          return
  1702.       else
  1703.          i_s = insert_state()
  1704.             if not i_s then insert_toggle; endif
  1705.          keyin '<BASEFONT SIZE="'||basefont'">'
  1706.       endif
  1707.  
  1708.  
  1709. defc HTML_LIST
  1710.    mt = marktype()
  1711.    if not marktype() then  -- no mark
  1712.       if arg(1)=='DL' then
  1713.          param ='|<'||arg(1)'>|   <DT>|</'||arg(1)'>|'
  1714.       else
  1715.          param ='|<'||arg(1)'>|   <LI>|</'||arg(1)'>|'
  1716.       endif
  1717.       'HTML_IML 'param
  1718.       getline nextline, .line+1
  1719.       listclosetags = '</OL> </UL> </DL> </DIR> </MENU>'
  1720.       closetag = strip(nextline)
  1721.       if pos(closetag, listclosetags) then
  1722.          deleteline
  1723.       endif
  1724.       '-1'
  1725.       begin_line
  1726.       deletechar
  1727.       deletechar
  1728.       deletechar
  1729.       '-1'
  1730.       end_line
  1731.    else     -- Block, Line or Character mark
  1732.       i_s = insert_state()
  1733.          if not i_s then insert_toggle; endif
  1734.       getfileid fid
  1735.       getmark firstline,lastline,firstcol,lastcol,fileid
  1736.       if fid<>fileid then
  1737.          sayerror 'ERROR:  Wrong file -- check mark!'
  1738.          return
  1739.       endif
  1740.       if not pos(leftstr(mt, 1), 'L') then -- not a Line mark
  1741.          sayerror 'ERROR:  Mark must be a line mark!'
  1742.          return
  1743.       endif
  1744.       if lastline = .last then
  1745.          .line = .last
  1746.          insert
  1747.       endif
  1748.       .line = firstline
  1749.       insertline '<'||arg(1)'>'
  1750.       do i=firstline+1 to lastline+1
  1751.          .line = i
  1752.          getline listline
  1753.          if arg(1) = 'DL' then
  1754.             replaceline '   <DT>'||strip(listline, 'L')
  1755.          else
  1756.             replaceline '   <LI>'||strip(listline, 'L')
  1757.          endif
  1758.       enddo
  1759.       '+1'
  1760.       insertline '</'||arg(1)'>'
  1761.       unmark
  1762.    endif
  1763.  
  1764.  
  1765. defc HTML_FORM
  1766.    res = HTML_geturl(FORM_TITLE_MSG, FORM_PROMPT_MSG, FORM_LIST_MSG, url)
  1767.    if res > 1 | url='' then
  1768.       return; endif
  1769.    if not res then
  1770.       call HTML_logurl(url)
  1771.    endif
  1772.    action = url
  1773.    method = listbox("Request Method   ",
  1774.                       "/GET/POST/",,6,40)
  1775.       if method=='' then
  1776.         return
  1777.       endif
  1778.    s_tag = '<FORM ACTION="'||html_path(action)'" METHOD="'||method'">'
  1779.    e_tag = '</FORM>'
  1780.    call HTML_insert_linetags(s_tag, e_tag)
  1781.  
  1782.  
  1783. defc HTML_flbl
  1784.    sayerror 'Not implemented yet'
  1785.  
  1786.  
  1787. defc HTML_ffldset
  1788.    sayerror 'Not implemented yet'
  1789.  
  1790.  
  1791. defc HTML_fsubres
  1792.    type = arg(1)
  1793.    valor = entrybox("Text of the Button   ",,type)
  1794.       if valor = '' then
  1795.          return; endif
  1796.    tag ='<INPUT TYPE="'||upcase(type)'" VALUE="'||valor'">'
  1797.    i_s = insert_state()
  1798.       if not i_s then insert_toggle; endif
  1799.    keyin tag
  1800.  
  1801.  
  1802. defc HTML_ftxtpwd
  1803.    type = arg(1)
  1804.    name = entrybox('Name of Variable?   ')
  1805.       if  name == '' then return; endif
  1806.    valor = entrybox("Text visible in field   ",,"<none>")
  1807.       if valor = '' then
  1808.          return
  1809.       elseif valor = '<none>' then
  1810.          valor = ''
  1811.       endif
  1812.    size = entrybox("Size of entry field   ",,"<default>")
  1813.       if size = '' then
  1814.          return
  1815.       elseif size = '<default>' then
  1816.          size = ''
  1817.       endif
  1818.    maxlen = entrybox("Maximum length of entry   ",,"<default>")
  1819.       if maxlen = '' then
  1820.          return
  1821.       elseif maxlen = '<default>' then
  1822.          maxlen = ''
  1823.       endif
  1824.    tag='<INPUT TYPE="'||type'" NAME="'||name'"'
  1825.    if valor<>"" then
  1826.       tag=tag' VALUE="'||valor'"'
  1827.    endif
  1828.    if size <> '' then
  1829.       tag = tag' SIZE="'||size'"'
  1830.    endif
  1831.    if maxlen <> '' then
  1832.       tag = tag' MAXLENGTH="'||maxlen'"'
  1833.    endif
  1834.    tag = tag'>'
  1835.    i_s = insert_state()
  1836.       if not i_s then insert_toggle; endif
  1837.    keyin tag
  1838.  
  1839.  
  1840. defc HTML_ftarea
  1841.    name = entrybox("Name of variable   ")
  1842.       if name = '' then
  1843.          return; endif
  1844.    rows = entrybox("Number of rows   ")
  1845.       if rows = '' then
  1846.          return; endif
  1847.       if not isnum(rows) then
  1848.          beep()
  1849.          sayerror 'ERROR:  value must be a number!'
  1850.          return
  1851.       endif
  1852.    cols = entrybox("Number of columns   ")
  1853.       if cols = '' then
  1854.          return; endif
  1855.       if not isnum(cols) then
  1856.          beep()
  1857.          sayerror 'ERROR:  value must be a number!'
  1858.          return
  1859.       endif
  1860.    default = listbox("Default Text?   ","/No/Yes/",,6,50)
  1861.       if default = '' then
  1862.          return; endif
  1863.    if default == "Yes" then
  1864.       defText = entrybox("Enter the Default Text   ")
  1865.    else
  1866.       defText = ""
  1867.    endif
  1868.    i_s = insert_state()
  1869.       if not i_s then insert_toggle; endif
  1870.    keyin '<TEXTAREA NAME="'||name'" ROWS='||rows' COLS='||cols'>'||defText'</TEXTAREA>'
  1871.  
  1872.  
  1873. defc HTML_fchk
  1874.    name = entrybox("Name of input variable?   ")
  1875.       if  name = '' then return; endif
  1876.    valor = entrybox("Value returned when checked     ")
  1877.       if  valor = '' then return; endif
  1878.    chktxt = entrybox("Text with checkbox   ")
  1879.       if chktxt = '' then return; endif
  1880.    tag = '<INPUT TYPE="CHECKBOX" NAME="'||name'" VALUE="'||valor'"'
  1881.    defchk = listbox("Checked by default?      ","/No/Yes/",,6,20)
  1882.       if defchk = '' then return; endif
  1883.       if defchk = 'Yes' then
  1884.          tag = tag' CHECKED>'
  1885.       else
  1886.          tag =tag'>'
  1887.       endif
  1888.    i_s = insert_state()
  1889.       if not i_s then insert_toggle; endif
  1890.    keyin tag||chktxt
  1891.  
  1892.  
  1893. defc HTML_frad
  1894.    universal option_Array, radline, radchkflag
  1895.    radchkflag = '0'
  1896.    i_s = insert_state()
  1897.       if not i_s then insert_toggle; endif
  1898.    options=''
  1899.    rad_name = entrybox('Name of Radio Variable?      ')
  1900.       if  rad_name == '' then return; endif
  1901.    rad_num = listbox('How many buttons?      ',"/1/2/3/4/5/More",,6,20,6)
  1902.       if rad_num ='' then return; endif
  1903.       if rad_num == 'More' then
  1904.          rad_num = entrybox('Enter number of buttons     ')
  1905.       endif
  1906.       if not isnum(rad_num) then
  1907.          beep()
  1908.          sayerror 'ERROR:  value must be a number!'
  1909.          return
  1910.       endif
  1911.    dispo = listbox("Button arrangement      ","/Column/Row/",,6,20)
  1912.       if dispo = '' then return; endif
  1913.       if dispo = "Row" then
  1914.          separator = " "
  1915.       else
  1916.          separator = "<BR>"
  1917.       endif
  1918.       do_array 1, opt_id, option_array
  1919.          for i =1  to rad_num
  1920.             opt = entrybox('Text with Button 'i'      ')
  1921.                if opt = '' then return; endif
  1922.             rad_value = entrybox('Value returned when checked      ')
  1923.                if rad_value = '' then return; endif
  1924.             if radchkflag <> '1' then
  1925.                rad_chk = listbox("Checked by default?      ","/No/Yes/",,6,20)
  1926.                   if rad_chk = '' then
  1927.                      return
  1928.                   elseif rad_chk = 'Yes' then
  1929.                      radchkflag = '1'
  1930.                      rad_chk = ' CHECKED'
  1931.                   else rad_chk = ''
  1932.                   endif
  1933.             else rad_chk = ''
  1934.             endif
  1935.             option_str = '<INPUT TYPE="RADIO" NAME="'||rad_name'" VALUE="'||rad_value'"'||rad_chk'>'opt||separator
  1936.             do_array 2, opt_id, i, option_Str
  1937.          endfor
  1938.      for i = 1 to rad_num
  1939.         do_array 3, opt_id, i, radline
  1940.         keyin radline
  1941.         call einsert_line()
  1942.      endfor
  1943.    radchkflag = '0'
  1944.  
  1945.  
  1946. defc HTML_fsel
  1947.    i_s = insert_state()
  1948.       if not i_s then insert_toggle; endif
  1949.    multiselect = 0
  1950.    NotMoreChecks = 0
  1951.    savecol = .col
  1952.    name = entrybox('Name of select variable   ')
  1953.    if name == "" then
  1954.       return
  1955.    endif
  1956.    sel_num = entrybox("Number of options?   ")
  1957.    if sel_num = '' then return; endif
  1958.    if not isnum(sel_num) then
  1959.       beep()
  1960.       sayerror 'ERROR:  value must be a number!'
  1961.       return
  1962.    endif
  1963.    size = entrybox('Number of visible options?   ')
  1964.    if size == "" then
  1965.       return
  1966.    endif
  1967.    if not isnum(size) then
  1968.       beep()
  1969.       sayerror 'ERROR:  value must be a number!'
  1970.       return
  1971.    endif
  1972.    multi = listbox('Multiple selections?   ',"/No/Yes/",,6,40,2,30)
  1973.    if multi=='' then
  1974.       return
  1975.    else
  1976.       if multi=="Yes" then
  1977.          multiselect=1
  1978.          multi = ' MULTIPLE'
  1979.       else
  1980.          multi=""
  1981.       endif
  1982.    endif
  1983.    s_tag= '<SELECT NAME="'||name'" SIZE='||size || multi'>'
  1984.    e_tag = '</SELECT>'
  1985.    'HTML_keyin' s_tag
  1986.    for i = 1 to sel_num
  1987.      valor = entrybox('Value of option 'i'   ')
  1988.         if valor = '' then return; endif
  1989.      text = entrybox('Text of option 'i'   ')
  1990.         if text = '' then return; endif
  1991.      if  NotMoreChecks then
  1992.          select = ""
  1993.      else
  1994.          select = listbox('Selected by default?        ',"/No/Yes/",,6,40)
  1995.          if select = '' then return; endif
  1996.      endif
  1997.      tag_1 = '<OPTION VALUE="'||valor'"'
  1998.      if select=='Yes' then
  1999.          tag_1 = tag_1' SELECTED'
  2000.          if not multiselect then
  2001.             NotMoreChecks=1
  2002.          endif
  2003.      endif
  2004.      tag_1 = tag_1'>'
  2005.      insert
  2006.      .col = savecol+3
  2007.      'HTML_keyin' tag_1 text
  2008.    endfor
  2009.    insert
  2010.    .col = savecol
  2011.    'HTML_keyin' e_tag
  2012.  
  2013.  
  2014. defc HTML_fsopt
  2015.    valor = entrybox('Value of option   ')
  2016.       if valor = '' then return; endif
  2017.    text = entrybox('Text of option   ')
  2018.       if text = '' then return; endif
  2019.    select = listbox('Selected by default?   ',"/No/Yes/",,6,20)
  2020.       if select = '' then return; endif
  2021.    tag_1 = '<OPTION VALUE="'||valor'"'
  2022.    if select=='Yes' then
  2023.       tag_1 = tag_1' SELECTED'
  2024.    endif
  2025.    tag_1 = tag_1'>'
  2026.    i_s = insert_state()
  2027.       if not i_s then insert_toggle; endif
  2028.    keyin tag_1 text
  2029.  
  2030.  
  2031. defc HTML_fbtn
  2032.    sayerror 'Not implemented yet'
  2033.  
  2034.  
  2035. defc HTML_ffile
  2036.    name = entrybox('Name for field   ')
  2037.       if name = '' then return; endif
  2038.    i_s = insert_state()
  2039.       if not i_s then insert_toggle; endif
  2040.    keyin '<INPUT TYPE="FILE" NAME="'||name'">'
  2041.  
  2042.  
  2043. defc HTML_fhid
  2044.    name = entrybox('Name for hidden field   ')
  2045.       if name = '' then return; endif
  2046.    valor = entrybox('Value for hidden field   ')
  2047.       if valor = '' then return; endif
  2048.    i_s = insert_state()
  2049.       if not i_s then insert_toggle; endif
  2050.    keyin '<INPUT TYPE="HIDDEN" NAME="'||name'" VALUE="'||valor'">'
  2051.  
  2052.  
  2053. defc HTML_fimg
  2054.    name = entrybox('Name for image item   ')
  2055.       if name = '' then return; endif
  2056.    res = HTML_geturl(IMAGE_TITLE_MSG, IMAGE_PROMPT_MSG, IMAGE_LIST_MSG, url)
  2057.    if res > 1 | url='' then
  2058.       return; endif
  2059.    if not res then
  2060.       call HTML_logurl(url)
  2061.    endif
  2062.    source = url
  2063.    align = listbox('Image alignment   ',
  2064.                    "/Bottom (default)/Left/Right/Top/Middle"||
  2065.                    "/TextTop/AbsMiddle/Baseline/AbsBottom/",,6,20,9)
  2066.       if align = '' then return; endif
  2067.       if align = 'Bottom (default)' then
  2068.          align = 'BOTTOM'
  2069.       else
  2070.          align = upcase(align)
  2071.       endif
  2072.    imgval = entrybox('Alternate text   ',,'<none>')
  2073.       if imgval = '' then return; endif
  2074.       if imgval = '<none>' then
  2075.          imgval = ''
  2076.       else
  2077.          imgval = ' VALUE="'||imgval'"'
  2078.       endif
  2079.    i_s = insert_state()
  2080.       if not i_s then insert_toggle; endif
  2081.    keyin '<INPUT TYPE="IMAGE" NAME="'||name'" SRC="'||html_path(source)'" ALIGN="'||align'"'||imgval'>'
  2082.  
  2083.  
  2084. defc HTML_TABLE
  2085.    i_s = insert_state()
  2086.       if not i_s then insert_toggle; endif
  2087.    mt = marktype()
  2088.    if marktype() =='' then
  2089.       table_info="-----Table Option-----"||chr(10)||
  2090.                   "requires line-marked data in the form:"||chr(10)||chr(10)||
  2091.                   "Table caption"||chr(10)||
  2092.                   "      * | ColName2 | ColName3 | ColName4"||chr(10)||
  2093.                   "RowName2 | data | data | data"||chr(10)||
  2094.                   "RowName3 | data | data | data"||chr(10)||
  2095.                   " ...."||chr(10)||
  2096.                   "(use a lone asterisk as a placeholder"||chr(10)||
  2097.                   "for empty cells/data)"
  2098.       beep()
  2099.       call WinMessageBox('kenHTepm macro for EPM   ',table_info,16384)
  2100.       return
  2101.    elseif pos(leftstr(mt, 1), 'BC') then
  2102.       linemarkmsg = "Data must be line-marked"
  2103.       beep()
  2104.       call WinMessageBox('kenHTepm macro for EPM   ',linemarkmsg, 16384)
  2105.       return
  2106.    endif
  2107.  
  2108.    hdr_opts = listbox("Header cells?   ","/Both/Top row/Left column/none/",, 6, 50)
  2109.       if hdr_opts = '' then return; endif
  2110.    call pend_mark()
  2111.    my_end_line = .line
  2112.     if my_end_line = .last then
  2113.        insert
  2114.     endif
  2115.    call pbegin_mark()
  2116.    my_init_line = .line
  2117.    nrows=my_end_line-my_init_line-1
  2118.    getline caption,my_init_line
  2119.  
  2120.    .line=my_end_line+1
  2121. ; remove font attributes
  2122.    insertline '<TABLE BORDER=3>'
  2123.       if caption <> '*'
  2124.          then captionline= '<CAPTION><B>'caption'</B></CAPTION>'
  2125.          insertline captionline
  2126.       endif
  2127.    rowstarttag='<TR>'
  2128.    rowendtag='</TR>'
  2129.    for linea = my_init_line + 1 to my_end_line
  2130.       hdrflag = '0'
  2131.       getline linea_actual,linea
  2132.       insertline substr('',1,3)rowstarttag
  2133.       parse value linea_actual with data '|' linea_actual
  2134.       while data <> ' ' do
  2135.          if data='*'
  2136.             then data='<BR>'
  2137.          endif
  2138.          if hdr_opts = 'Both' | hdr_opts = 'Top row' then
  2139.             if linea = my_init_line + 1 then
  2140.                dataitem='<TH>'data'</TH>'
  2141.                insertline substr('',1,6)dataitem
  2142.                parse value linea_actual with data '|' linea_actual
  2143.             else
  2144.                if hdr_opts = 'Both' then
  2145.                   if hdrflag = '0' then
  2146.                      dataitem='<TH>'data'</TH>'
  2147.                      insertline substr('',1,6)dataitem
  2148.                      parse value linea_actual with data '|' linea_actual
  2149.                      hdrflag = '1'
  2150.                   else
  2151.                      dataitem='<TD>'data'</TD>'
  2152.                      insertline substr('',1,6)dataitem
  2153.                      parse value linea_actual with data '|' linea_actual
  2154.                   endif
  2155.                else
  2156.                   dataitem='<TD>'data'</TD>'
  2157.                   insertline substr('',1,6)dataitem
  2158.                   parse value linea_actual with data '|' linea_actual
  2159.                endif
  2160.             endif
  2161.          elseif hdr_opts = 'Left column' then
  2162.             if hdrflag = '0' then
  2163.                dataitem='<TH>'data'</TH>'
  2164.                insertline substr('',1,6)dataitem
  2165.                parse value linea_actual with data '|' linea_actual
  2166.                hdrflag = '1'
  2167.             else
  2168.                dataitem='<TD>'data'</TD>'
  2169.                insertline substr('',1,6)dataitem
  2170.                parse value linea_actual with data '|' linea_actual
  2171.             endif
  2172.          else -- no headers
  2173.             dataitem='<TD>'data'</TD>'
  2174.             insertline substr('',1,6)dataitem
  2175.             parse value linea_actual with data '|' linea_actual
  2176.          endif
  2177.       endwhile
  2178.       insertline substr('',1,3)rowendtag
  2179.    endfor
  2180.    insertline '</TABLE>'
  2181.    call pbegin_mark()
  2182.    aclin=.line-1
  2183.    for i = 1  to nrows +2
  2184.        getline linea,aclin+i
  2185.        newlinea='<!-- 'linea' -->'
  2186.        replaceline newlinea,aclin+i
  2187.    endfor
  2188.     insertline"",aclin+i
  2189.     insert
  2190.    unmark
  2191.    .line=my_end_line+6
  2192.  
  2193.  
  2194. defc HTML_comment
  2195.    i_s = insert_state()
  2196.       if not i_s then insert_toggle; endif
  2197.    if marktype() then
  2198.       call HTML_insert_linetags('<!-- ',' -->')
  2199.    else
  2200.       keyin('<!--  -->')
  2201.       .col=.col - 4
  2202.    endif
  2203.  
  2204.  
  2205. defc HTML_mcol
  2206.    cols = listbox("Number of columns   ", "/2/3/4/more/", , 6, 20, 4)
  2207.       if cols = '' then return; endif
  2208.       if cols = 'more' then
  2209.          cols = entrybox("Number of columns     ")
  2210.             if not isnum(cols) then
  2211.                beep()
  2212.                sayerror 'ERROR:  value must be a number!'
  2213.                return
  2214.             endif
  2215.       endif -- "more"
  2216.    cols = 'COLS="'||cols'"'
  2217.    gutter = entrybox("Gutter width   ", ,"10 (default)")
  2218.       if gutter = '' then return; endif
  2219.       if gutter = '10 (default)' then
  2220.          gutter = 'GUTTER="10"'
  2221.       else
  2222.          gutter = 'GUTTER="'||gutter'"'
  2223.       endif
  2224.    width = entrybox("Total column width   ", ,"100%")
  2225.       if width = '' then return; endif
  2226.       width = 'WIDTH="'||width'"'
  2227.    s_tag = '<MULTICOL '||cols gutter width'>'
  2228.    e_tag = '</MULTICOL>'
  2229.    call HTML_insert_linetags(s_tag, e_tag)
  2230.  
  2231.  
  2232. defc CSTM_TAG
  2233.    universal linktype, tagflag
  2234.    tagflag = '1'
  2235.    linktype = ''
  2236.    res = HTML_geturl(CSTMTAG_TITLE_MSG, CSTMTAG_PROMPT_MSG, CSTMTAG_LIST_MSG, url)
  2237.    if res > 1 | url='' then
  2238.       tagflag = '0'
  2239.    return; endif
  2240.    if not res then
  2241.       call HTML_logurl(url)
  2242.    endif
  2243.    i_s = insert_state()
  2244.       if not i_s then insert_toggle; endif
  2245.    tagflag = '0'
  2246.    keyin html_path(url)
  2247.  
  2248.  
  2249. defc HTML_TARGET
  2250.    universal name, imapflag
  2251.    parse value entrybox(ANCHOR_TITLE_MSG,'/'OK_MSG'/'Cancel_MSG'/',\0,'',200,
  2252.           atoi(1) || atoi(0) || gethwndc(APP_HANDLE) ||
  2253.           ANCHOR_PROMPT_MSG) with button 2 name \0
  2254.    if button<>\1 then return; endif
  2255.    if name='' then return; endif
  2256.    if imapflag = '1' then
  2257.       name = name
  2258.    else
  2259.       call HTML_insert_tags('<A NAME="'||name'">', '</A>', name)
  2260.    endif
  2261.  
  2262.  
  2263. defc HTML_INT_LINK
  2264.    universal EPM_utility_array_ID, anchor, usemapflag
  2265.    do_array 3, EPM_utility_array_ID, 'bmi.0', bmcount          -- Index says how many bookmarks there are
  2266.    if bmcount = 0 then sayerror NO_ANCHORS_MSG; return; endif
  2267.    getfileid startfid
  2268.    'xcom e /c bookmark'
  2269.    if rc<>-282 then  -- -282 = sayerror("New file")
  2270.       sayerror ERROR__MSG rc BAD_TMP_FILE__MSG sayerrortext(rc)
  2271.       return
  2272.    endif
  2273.    browse_mode = browse()     -- query current state
  2274.    if browse_mode then call browse(0); endif
  2275.    .autosave = 0
  2276.    getfileid bmfid
  2277.    display -2
  2278.    do i=1 to bmcount
  2279.       do_array 3, EPM_utility_array_ID, 'bmi.'i, markname   -- Get name number i
  2280.       if markname='' then iterate; endif  -- has been deleted
  2281.        -- Find that bookmark name
  2282.       if get_array_value(EPM_utility_array_ID, 'bmn.'markname, bmindex) then  -- Unexpected; ignore it & continue
  2283.          iterate
  2284.       endif
  2285.       parse value bmindex with bmindex fid .
  2286.       if fid<>startfid then
  2287.          iterate
  2288.       endif
  2289.       insertline markname, bmfid.last+1, bmfid
  2290.    enddo
  2291.    activatefile bmfid
  2292.    if .last>2 then
  2293.       call sort(2, .last, 1, 40, bmfid, 'I')
  2294.    endif
  2295.    if browse_mode then call browse(1); endif  -- restore browse state
  2296.    display 2
  2297.    if not .modify then  -- Nothing added?
  2298.       sayerror NO_ANCHORS_MSG
  2299.       'xcom quit'
  2300.       return
  2301.    endif
  2302.    buflen = filesize() + .last + 1
  2303.    bufhndl = buffer(CREATEBUF, 'LISTBOX', buflen, 1 )  -- create a private buffe
  2304.    if not bufhndl then sayerror 'CREATEBUF' ERROR_NUMBER__MSG RC; return; endif
  2305.    noflines = buffer(PUTBUF, bufhndl, 1, 0, APPENDCR)
  2306.    .modify = 0
  2307.    'xcom quit'
  2308. ;  display 1
  2309.    if not noflines then sayerror 'PUTBUF' ERROR_NUMBER__MSG RC; return; endif
  2310.    usedsize = buffer(USEDSIZEBUF,bufhndl)
  2311.    parse value listbox(INTLINK_TITLE_MSG,
  2312.  compile if EPM32
  2313.                        \0 || atol(usedsize) || atoi(32) || atoi(bufhndl),
  2314.  compile else
  2315.                        \0 || atoi(usedsize) || atoi(bufhndl) || atoi(32),
  2316.  compile endif -- EPM32
  2317.                        '/'OK_MSG'/'Cancel_MSG'/',1,5,min(noflines,12),30,
  2318.  compile if EVERSION >= 5.60
  2319.                        gethwndc(APP_HANDLE) || atoi(1) || atoi(1) || atoi(0) || INTLINK_PROMPT_MSG) with button 2 anchor \0
  2320.  compile else
  2321.                        atoi(1) || atoi(1) || atoi(0) || gethwndc(APP_HANDLE) || INTLINK_PROMPT_MSG) with button 2 anchor \0
  2322.  compile endif
  2323.    call buffer(FREEBUF, bufhndl)
  2324.    if button <> \1 then
  2325.       anchor = ''
  2326.    return; endif
  2327.    if usemapflag = '1' then
  2328.       if button <> \1 then
  2329.          anchor = ''
  2330.       return
  2331.       else 
  2332.       anchor = '#'||anchor
  2333.       endif
  2334.    else
  2335.       call HTML_insert_tags('<A HREF="#'||anchor'">', '</A>')
  2336.    endif
  2337.  
  2338.  
  2339. defc HTML_EXT_LINK
  2340.    universal linktype
  2341.    linktype = listbox("Select type of link:   ",
  2342.     "/http/Local file/FTP"||
  2343.     "/mail/gopher/news/telnet/WAIS/",
  2344.     "/Enter/Cancel", 8, 36, 8, 25)
  2345.    if linktype == '' then
  2346.       return
  2347.    elseif linktype == 'Local file'  then
  2348.       linktype = 'file:///'
  2349.    elseif linktype == 'mail' then
  2350.           linktype = 'mailto:'
  2351.    else
  2352.        linktype = linktype'://'
  2353.    endif
  2354.    res = HTML_geturl(EXTLINK_TITLE_MSG, EXTLINK_PROMPT_MSG, EXTLINK_LIST_MSG, url)
  2355.    if res > 1 | url='' then return; endif
  2356.    if not res then
  2357.       call HTML_logurl(url)
  2358.    endif
  2359.    linktype = ''
  2360.    call HTML_insert_tags('<A HREF="'||html_path(url)'">', '</A>')
  2361.  
  2362.  
  2363. defproc HTML_logurl(url)
  2364.    logfile = url_list_filename()\0
  2365.    url = url\13\10\0
  2366.    call windowmessage(1,  getpminfo(EPMINFO_EDITCLIENT),
  2367.  compile if EVERSION >= 5.60
  2368.                       5496,        -- EPM_EDIT_LOGAPPEND
  2369.  compile else
  2370.                       5453,        -- EPM_EDIT_LOGAPPEND
  2371.  compile endif
  2372.                       ltoa(offset(logfile) || selector(logfile), 10),
  2373.                       ltoa(offset(url) || selector(url), 10) )
  2374.  
  2375.  
  2376. defproc get_progdir(param)
  2377.    universal prog_name, prog_dir, prog_param
  2378.    prog_name = ''
  2379.    prog_dir = ''
  2380.    prog_param = ''
  2381.    parse value param with prog_name prog_param
  2382.    slash = lastpos('\', prog_name)
  2383.    if slash then
  2384.       prog_dir = leftstr(prog_name, (slash-1))
  2385.       prog_name = substr(prog_name, (slash+1))
  2386.    endif
  2387.    if prog_dir then
  2388.    'cd '||prog_dir
  2389.    endif
  2390.    return
  2391.  
  2392.  
  2393. ; This routine puts up an entry box to request a URL.  If a logfile exists,
  2394. ; the entrybox will have a "List" button, which if selected will bring up a
  2395. ; listbox containing previously-entered URLs.
  2396. ; Return codes:
  2397. ;    0 - All OK, URL entered; log it.
  2398. ;    1 - All OK, URL selected from list; do not log it.
  2399. ;    2 - All OK, user asked to edit log file; do not continue
  2400. ;    3 - User cancelled a dialog
  2401. ;    4 - An unexpected error occurred
  2402. defproc HTML_geturl(title_msg, prompt_msg, list_prompt_msg, var url)
  2403.    universal linktype, tagflag, javaflag, frameflag
  2404.    logfile = url_list_filename()
  2405.    if exist(logfile) then
  2406.       buttons = '/'OK_MSG'/'LIST_MSG'/'Cancel_MSG'/'
  2407.       list_button = \2
  2408.    else
  2409.       buttons = '/'OK_MSG'/'Cancel_MSG'/'
  2410.       list_button = \9  -- Never gonna happen
  2411.    endif
  2412.    parse value entrybox(title_msg, buttons, linktype, '', 200,
  2413.           atoi(1) || atoi(0) || gethwndc(APP_HANDLE) ||
  2414.           prompt_msg) with button 2 url \0
  2415.    if button=list_button then
  2416.       getfileid startfid
  2417.       'xcom e /d' logfile
  2418.       if rc then
  2419.          sayerror ERROR__MSG rc '"'logfile'" -' sayerrortext(rc)
  2420.          return 4
  2421.       endif
  2422.       browse_mode = browse()     -- query current state
  2423.       if browse_mode then call browse(0); endif
  2424.       if .last>2 then
  2425.          getfileid urlfid
  2426.          call sort(2, .last, 1, 40, urlfid, 'I')
  2427.       endif
  2428.       replaceline \13 || textline(1), 1
  2429.       if browse_mode then call browse(1); endif  -- restore browse state
  2430.       call listbox_buffer_from_file(startfid, bufhndl, noflines, usedsize)
  2431.       parse value listbox(title_msg,
  2432.     compile if EPM32
  2433.                           \0 || atol(usedsize) || atoi(32) || atoi(bufhndl),
  2434.     compile else
  2435.                           \0 || atoi(usedsize) || atoi(bufhndl) || atoi(32),
  2436.     compile endif -- EPM32
  2437.                           '/'OK_MSG'/'EDITLIST_MSG'/'Cancel_MSG,1,5,min(noflines,12),0,
  2438.     compile if EVERSION >= 5.60
  2439.                           gethwndc(APP_HANDLE) || atoi(1) || atoi(1) || atoi(0) || list_prompt_msg) with button 2 url \0
  2440.     compile else
  2441.                           atoi(1) || atoi(1) || atoi(0) || gethwndc(APP_HANDLE) || list_prompt_msg) with button 2 url \0
  2442.     compile endif
  2443.       call buffer(FREEBUF, bufhndl)
  2444.       if button=\2 then
  2445.          'e' logfile
  2446.          return 2
  2447.       elseif button<>\1 then
  2448.          return 3
  2449.       endif
  2450.       return 1
  2451.    elseif button<>\1 then
  2452.       return 3
  2453.    endif
  2454.    return 0
  2455.  
  2456.  
  2457. ; Add HTM, HTML to create an anchor. (Lisa)
  2458. defc DRAGDROP_HTM, DRAGDROP_HTML
  2459.    if wordpos(filetype(), HTML_EXTENSIONS) then
  2460.       'HTML_keyin <a href="'html_path(arg(1))'"></a>'
  2461.       .col = .col-4
  2462.    else
  2463.       'e "'arg(1)'"'
  2464.    endif
  2465.  
  2466.  
  2467. defc DRGDRPTYP_WEBEXPLORER_URL
  2468.    if wordpos(filetype(), HTML_EXTENSIONS) then
  2469.       'e "'arg(1)'"'
  2470.       if rc then return; endif
  2471.       url = textline(1)
  2472.       'quit'
  2473.       if pos('<', url) then
  2474.          parse value url with '<' url '>'
  2475.       endif
  2476.       url = word(url, 1)
  2477.       if pos('://', url) then
  2478.          'HTML_keyin <A HREF="'html_path(url)'"></A>'
  2479.          .col = .col-4
  2480.       else
  2481.          sayerror "Doesn't appear to be a URL:  <"url'>'
  2482.       endif
  2483.    else
  2484.       'e "'arg(1)'"'
  2485.    endif
  2486.  
  2487.  
  2488. defc DRAGDROP_GIF, DRAGDROP_JPG, DRAGDROP_JPEG, DRAGDROP_PNG =
  2489.    universal anchor, usemapflag
  2490.    dot=lastpos('.', arg(1))
  2491.    if pos('/', arg(1)) then
  2492.       slash = lastpos('/', arg(1))
  2493.    elseif pos('\', arg(1)) then
  2494.       slash = lastpos('\', arg(1))
  2495.    endif
  2496.    if slash then
  2497.       alttext=substr(arg(1), slash+1, dot-slash-1)
  2498.    else
  2499.       alttext=substr(arg(1), 1, dot-1)
  2500.    endif
  2501.    alttext = entrybox("Alternate text for non-graphics display      ",,alttext)
  2502.       if alttext = '' then
  2503.          return
  2504.       else alttext = ' ALT="'alttext'"'
  2505.       endif
  2506.    ialign = listbox("Image alignment   ",
  2507.       "/Bottom (default)/Left/Right/Top/Middle"||
  2508.       "/TextTop/AbsMiddle/Baseline/AbsBottom/",,3,25,9)
  2509.       if ialign == '' then
  2510.          return
  2511.       elseif ialign = 'Bottom (default)' then
  2512.          ialign = ' ALIGN="BOTTOM"'
  2513.       else ialign = ' ALIGN="'||upcase(ialign)'"'
  2514.       endif
  2515.    ismap = listbox("Image Map?   ","/No/ISMAP/USEMAP/",,3,25,3)
  2516.       if ismap = '' then
  2517.          return
  2518.       endif
  2519.       if ismap=='ISMAP' then
  2520.          ismap=' ISMAP'
  2521.       elseif ismap = 'No' then
  2522.          ismap=''
  2523.       else 
  2524.          maploc = listbox("Imagemap location   ","/Internal/External/",,3,25,2)
  2525.          if maploc = '' then
  2526.             return
  2527.          elseif maploc = 'Internal' then
  2528.             usemapflag = '1'
  2529.             'HTML_INT_LINK'
  2530.                if anchor = '' then
  2531.                   usemapflag = '0'
  2532.                   return
  2533.                endif
  2534.             ismap = ' USEMAP="'||anchor'"'
  2535.             usemapflag = '0'
  2536.          else 
  2537.             res = HTML_geturl(EXTLINK_TITLE_MSG, EXTLINK_PROMPT_MSG, EXTLINK_LIST_MSG, url)
  2538.             if res > 1 | url='' then return; endif
  2539.             if not res then
  2540.                call HTML_logurl(url)
  2541.             endif
  2542.                if ismap = '' then
  2543.                   return
  2544.                else
  2545.                ismap = ' USEMAP="'||html_path(url)'"'
  2546.                endif
  2547.          endif
  2548.       endif
  2549.       'HTML_keyin <IMG SRC="'html_path(arg(1))'"'|| ialign || alttext || ismap ||'>'
  2550. ; Possible enhancement:  Read first 10 bytes of image; if first 3 = 'GIF' then
  2551. ; W =  atoi(substr(image,7,2)); H  =  atoi(substr(image,9,2));
  2552. ; add to <img   "height="H "width="W
  2553.  
  2554.  
  2555. defc HTML_IMAGE
  2556.    universal anchor, usemapflag, javaflag
  2557.    usemapflag = '0'
  2558.    res = HTML_geturl(IMAGE_TITLE_MSG, IMAGE_PROMPT_MSG, IMAGE_LIST_MSG, url)
  2559.    if res > 1 | url='' then return; endif
  2560.    if not res then
  2561.       call HTML_logurl(url)
  2562.    endif
  2563.    dot=lastpos('.', url)
  2564.    if pos('/', url) then
  2565.       slash = lastpos('/', url)
  2566.    elseif pos('\', url) then
  2567.       slash = lastpos('\', url)
  2568.    endif
  2569.    if slash then
  2570.       alttext=substr(url, slash+1, dot-slash-1)
  2571.    else
  2572.       alttext=substr(url, 1, dot-1)
  2573.    endif
  2574.    alttext = entrybox("Alternate text for non-graphics display      ",,alttext)
  2575.       if alttext = '' then
  2576.          return
  2577.       else alttext = ' ALT="'alttext'"'
  2578.       endif
  2579.    ialign = listbox("Image alignment   ",
  2580.       "/Bottom (default)/Left/Right/Top/Middle"||
  2581.       "/TextTop/AbsMiddle/Baseline/AbsBottom/",,3,25,9)
  2582.       if ialign == '' then
  2583.          return
  2584.       elseif ialign = 'Bottom (default)' then
  2585.          ialign = ' ALIGN="BOTTOM"'
  2586.       else ialign = ' ALIGN="'||upcase(ialign)'"'
  2587.       endif
  2588.    ismap = listbox("Image Map?   ","/No/ISMAP/USEMAP/",,3,25,3)
  2589.       if ismap = '' then
  2590.          return
  2591.       endif
  2592.       if ismap=='ISMAP' then
  2593.          ismap=' ISMAP'
  2594.       elseif ismap = 'No' then
  2595.          ismap=''
  2596.       else 
  2597.          maploc = listbox("Imagemap location   ","/Internal/External/",,3,25,2)
  2598.          if maploc = '' then
  2599.             return
  2600.          elseif maploc = 'Internal' then
  2601.             usemapflag = '1'
  2602.             'HTML_INT_LINK'
  2603.                if anchor = '' then
  2604.                   usemapflag = '0'
  2605.                   return
  2606.                endif
  2607.             ismap = ' USEMAP="'||anchor'"'
  2608.             usemapflag = '0'
  2609.          else 
  2610.             res = HTML_geturl(EXTLINK_TITLE_MSG, EXTLINK_PROMPT_MSG, EXTLINK_LIST_MSG, url)
  2611.             if res > 1 | url='' then return; endif
  2612.             if not res then
  2613.                call HTML_logurl(url)
  2614.             endif
  2615.                if ismap = '' then
  2616.                   return
  2617.                else
  2618.                ismap = ' USEMAP="'||html_path(url)'"'
  2619.                endif
  2620.          endif
  2621.       endif
  2622.    if javaflag <> '1' then
  2623.       'HTML_keyin <IMG SRC="'html_path(url)'"'|| ialign || alttext || ismap ||'>'
  2624.    else
  2625.       return html_path(url)
  2626.    endif
  2627.  
  2628.  
  2629. defc HTML_IMAP
  2630.    universal name, imapflag
  2631.    imapflag = '0'
  2632.    mt = marktype()
  2633.    if marktype() then  -- Block, Line or Character mark
  2634.          getfileid fid
  2635.          getmark firstline,lastline,firstcol,lastcol,fileid
  2636.          if fid<>fileid then
  2637.             sayerror 'Wrong file - check mark'
  2638.             return
  2639.          endif
  2640.    else
  2641.       firstline = .line
  2642.       firstcol=.col
  2643.    endif
  2644.    imapflag = '1'
  2645.    'HTML_TARGET'
  2646.    if name <> '' & not pos(' ', name) then  -- Set an optional bookmark
  2647.       'bm' name 4 firstline firstcol
  2648.    endif
  2649.    imapflag = '0'
  2650.    if name = '' then
  2651.       return
  2652.    endif
  2653.    s_tag = '<MAP NAME="'||name'">'
  2654.    e_tag = '</MAP>'
  2655.    call HTML_insert_linetags(s_tag, e_tag)
  2656.  
  2657.  
  2658. defc HTML_AREA
  2659.    universal anchor, usemapflag
  2660.    usemapflag = '0'
  2661.    buttons = '/OK/Cancel/'
  2662.    deftext = ''
  2663.    shape = listbox("Type of shape   ","/Rectangle/Polygon/Circle/Default/",,3,25,4)
  2664.       if shape = '' then
  2665.          return
  2666.       elseif shape = 'Default' then
  2667.          shape = ' SHAPE="DEFAULT"'
  2668.          shapes_TITLE_MSG = DEFSHAPE_TITLE_MSG
  2669.          shapes_PROMPT_MSG = DEFSHAPE_PROMPT_MSG
  2670.          deftext = '<none>'
  2671.       elseif shape = 'Rectangle' then
  2672.          shape = ' SHAPE="RECT"'
  2673.          shapes_TITLE_MSG = RECT_TITLE_MSG
  2674.          shapes_PROMPT_MSG = RECT_PROMPT_MSG
  2675.       elseif shape = 'Polygon' then
  2676.          shape = ' SHAPE="POLY"'
  2677.          shapes_TITLE_MSG = POLY_TITLE_MSG
  2678.          shapes_PROMPT_MSG = POLY_PROMPT_MSG
  2679.       elseif shape = 'Circle' then
  2680.          shape = ' SHAPE="CIRCLE"'
  2681.          shapes_TITLE_MSG = CIRC_TITLE_MSG
  2682.          shapes_PROMPT_MSG = CIRC_PROMPT_MSG
  2683.       endif
  2684.    parse value entrybox(shapes_TITLE_MSG, buttons, deftext, '',200,
  2685.           atoi(1) || atoi(0) || gethwndc(APP_HANDLE) ||
  2686.           shapes_PROMPT_MSG) with button 2 coords \0
  2687.    if button = \2 | coords = '' then
  2688.       return 3
  2689.    elseif button = \1 then
  2690.       if coords = '<none>' then
  2691.          coords = ''
  2692.       else
  2693.          coords = ' COORDS="'||coords'"'
  2694.       endif
  2695.    endif
  2696.    areaalt = entrybox("Alternate text   ")
  2697.       if areaalt = '' then
  2698.          return
  2699.       endif
  2700.       areaalt = ' ALT="'||areaalt'"'
  2701.    areahref = listbox("Destination?   ","/NOHREF/HREF/",,3,25,2)
  2702.       if areahref = '' then
  2703.          return
  2704.       elseif areahref = 'NOHREF' then
  2705.          areaurl = ' NOHREF'
  2706.       else
  2707.          loc = listbox("Destination location?     ","/External/Internal/",,3,25,2)
  2708.             if loc = '' then
  2709.                return
  2710.             elseif loc = 'External' then
  2711.                res = HTML_geturl(EXTLINK_TITLE_MSG, EXTLINK_PROMPT_MSG, EXTLINK_LIST_MSG, url)
  2712.                if res > 1 | url='' then return; endif
  2713.                if not res then
  2714.                   call HTML_logurl(url)
  2715.                endif
  2716.                if url = '' then
  2717.                   return
  2718.                else
  2719.                   areaurl = ' HREF="'||html_path(url)'"'
  2720.                endif
  2721.             else  -- loc='Internal'
  2722.                usemapflag = '1'
  2723.                'HTML_INT_LINK'
  2724.                   if anchor = '' then
  2725.                      usemapflag = '0'
  2726.                      return
  2727.                   else
  2728.                      areaurl = ' HREF="'||anchor'"'
  2729.                      usemapflag = '0'
  2730.                   endif
  2731.             endif
  2732.       endif
  2733.    'HTML_keyin <AREA'||shape||coords||areaurl||areaalt'>'
  2734.  
  2735.  
  2736. defproc html_path(pathname)
  2737.    ls = lastpos('\', .filename)
  2738.    if ls then
  2739.       thispath = upcase(leftstr(.filename, ls))
  2740.       if upcase(leftstr(pathname, ls)) = thispath then  -- We can use a relative path.
  2741.          pathname = substr(pathname, ls+1)
  2742.       endif
  2743.    endif
  2744.    return translate(pathname, '/', '\')
  2745.  
  2746.  
  2747. defproc url_list_filename()
  2748.    universal appname, tagflag, frameflag
  2749.       inifile = queryprofile(0, appname, 'EPMIniPath')
  2750.       if tagflag <> '1' & frameflag <> '1' then
  2751.          url_file = leftstr(inifile, lastpos('\', inifile)) || 'url.lst'
  2752.       elseif tagflag = '1' then
  2753.          url_file = leftstr(inifile, lastpos('\', inifile)) || 'cstmtag.lst'
  2754.       elseif frameflag = '1' then
  2755.          url_file = leftstr(inifile, lastpos('\', inifile)) || 'targetfr.lst'
  2756.       endif
  2757.       if leftstr(url_file,1)='\' then  -- relative to boot drive
  2758. compile if EVERSION >= 6
  2759.          drivenum = 1234
  2760.          call dynalink32('DOSCALLS',          -- dynamic link library name
  2761.                          '#348',              -- ordinal for DOS32QuerySysInfo
  2762.                          atol(5)          ||  -- Start index (QSV_BOOT_DRIVE)
  2763.                          atol(5)          ||  -- End index (QSV_BOOT_DRIVE)
  2764.                          address(drivenum)||  -- buffer
  2765.                          atol(4),2)           -- Buffer length
  2766.          url_file = chr(96+ltoa(drivenum, 10))':'url_file
  2767. compile else
  2768.          globalseg = 12
  2769.          localseg = 12
  2770.  
  2771.          call dynalink('DOSCALLS',             -- dynamic link library name
  2772.                        '#8',                   -- ordinal value for DosGetInfoSeg
  2773.                        selector(globalseg) ||  -- string selector
  2774.                        offset(globalseg)   ||  -- string offset
  2775.                        selector(localseg)  ||  -- string selector
  2776.                        offset(localseg) )      -- string offset
  2777.  
  2778.          globalseg=itoa(globalseg,10)
  2779.          url_file = chr(96+itoa(peek(globalseg,36,2), 10))':'url_file
  2780. compile endif
  2781.       endif
  2782.    return url_file
  2783.  
  2784.  
  2785. defc HTML_ABOUT
  2786.      aboutinfo="--Version "||HTMLVERSION'-----'||chr(10)||
  2787.              "     Portions copyright c. Ken Arway 1996."||chr(10)||chr(10)||
  2788.              "           Special thanks to Larry Margolis"||chr(10)||
  2789.              "        and also to Eduardo Areitio"||chr(10)||
  2790.              "        for their kind permission to use"||chr(10)||
  2791.              "        some of their source code."||chr(10)||
  2792.              "           Without their prior work, this "||chr(10)||
  2793.              "        macro would not have been possible."
  2794.     call WinMessageBox('kenHTepm -- HTML macro for EPM   ',aboutinfo,16384)
  2795.      return
  2796.  
  2797.  
  2798. defc HTML_POPUP_MENU
  2799.    tagtype = listbox("Select Tag Type   ",
  2800.            "/Table/Font Size/Paragraph/"||
  2801.            "Target/Internal Link/External Link/Image/"||
  2802.            "Ordered list/Unordered list/Font Color/"||
  2803.            "Define Form/Select/Option/Text Area/",
  2804.            "/OK/Cancel",0,0,9,30)
  2805.    if tagtype="" then return
  2806.    elseif tagtype='Table'           then 'HTML_TABLE'
  2807.    elseif tagtype='Font Size'       then 'HTML_font SIZE=""'
  2808.    elseif tagtype='Paragraph'       then 'HTML_PARA'
  2809.    elseif tagtype='Target'          then 'HTML_TARGET'
  2810.    elseif tagtype='Internal Link'   then 'HTML_INT_LINK'
  2811.    elseif tagtype='External Link'   then 'HTML_EXT_LINK'
  2812.    elseif tagtype='Image'           then 'HTML_IMAGE'
  2813.    elseif tagtype='Ordered list'    then 'HTML_LIST OL'
  2814.    elseif tagtype='Unordered list'  then 'HTML_LIST UL'
  2815.    elseif tagtype='Font Color'      then 'HTML_font COLOR=""'
  2816.    elseif tagtype='Define Form'     then 'HTML_FORM'
  2817.    elseif tagtype='Select'          then 'HTML_fsel'
  2818.    elseif tagtype='Option'          then 'HTML_fsopt'
  2819.    elseif tagtype='Text Area'       then 'HTML_ftarea'
  2820.    endif
  2821.  
  2822.  
  2823. defc HTML_JAPP
  2824.    universal javaflag
  2825.    javaflag = '1'
  2826.    savecol = .col
  2827.    code = entrybox("Java class      ")
  2828.       if code = '' then
  2829.          javaflag = '0'
  2830.          return
  2831.       endif
  2832.       code = '   CODE="'code'"'
  2833.    height = entrybox("Height   ")
  2834.       if height = '' then
  2835.          javaflag = '0'
  2836.          return
  2837.       endif
  2838.       height = 'HEIGHT='height
  2839.    width = entrybox("Width   ")
  2840.       if width = '' then
  2841.          javaflag = '0'
  2842.          return
  2843.       endif
  2844.       width = 'WIDTH='width
  2845.    appletname = entrybox("Name   ",,'<none>')
  2846.       if appletname = '' then
  2847.          javaflag = '0'
  2848.          return
  2849.       elseif appletname = '<none>' then
  2850.          appletname = ''
  2851.       else appletname = ' NAME="'appletname'"'
  2852.       endif
  2853.    codebase = listbox("Codebase URL?   ","/No/Yes/","/OK/Cancel/", 3, 25)
  2854.       if codebase = '' then
  2855.          javaflag = '0'
  2856.          return
  2857.       elseif codebase = 'No' then
  2858.          codebase = ''
  2859.       else 
  2860.          res = HTML_geturl(EXTLINK_TITLE_MSG, EXTLINK_PROMPT_MSG, EXTLINK_LIST_MSG, url)
  2861.          if res > 1 | url='' then
  2862.             javaflag = '0'
  2863.          return; endif
  2864.          if not res then
  2865.             call HTML_logurl(url)
  2866.          endif
  2867.          if url = '' then
  2868.             javaflag = '0'
  2869.             return
  2870.          else
  2871.             codebase = ' CODEBASE="'||html_path(url)'"'
  2872.          endif
  2873.       endif
  2874.    align = listbox("Applet alignment   ",
  2875.                    "/Bottom (default)/Left/Right/Top/Middle"||
  2876.                    "/TextTop/AbsMiddle/Baseline/AbsBottom/","/OK/Cancel/",3,25,9)
  2877.       if align = '' then
  2878.          javaflag = '0'
  2879.          return
  2880.       elseif align = 'Bottom (default)' then
  2881.          align = ' ALIGN="BOTTOM"'
  2882.       else align = ' ALIGN="'upcase(align)'"'
  2883.       endif
  2884.    jaltimage = listbox("Alternate image?   ","/No/Yes/","/OK/Cancel/", 3, 25)
  2885.       if jaltimage = '' then
  2886.          javaflag = '0'
  2887.          return
  2888.       elseif jaltimage = 'No' then
  2889.          jaltimage = ''
  2890.       else 
  2891.          linktype = ''
  2892.          res = HTML_geturl(IMAGE_TITLE_MSG, IMAGE_PROMPT_MSG, IMAGE_LIST_MSG, url)
  2893.          if res > 1 | url='' then
  2894.             javaflag = '0'
  2895.          return; endif
  2896.          if not res then
  2897.             call HTML_logurl(url)
  2898.          endif
  2899.          if url = '' then
  2900.             javaflag = '0'
  2901.             return
  2902.          else
  2903.             jaltimage = html_path(url)
  2904.             jaltimage = '<IMG SRC="'||jaltimage'" |' height width||align 
  2905.          endif
  2906.       endif
  2907.    alttext = entrybox("Alternate text      ",,"<none>")
  2908.       if alttext = '' then
  2909.          javaflag = '0'
  2910.          return
  2911.       endif
  2912.       if alttext = '<none>' then
  2913.          jalttext = ''
  2914.       else jalttext = ' ALT="'||alttext'">'
  2915.       endif
  2916.       if jaltimage = '' & jalttext then
  2917.          jalttext = '<TEXTFLOW>'||alttext'</TEXTFLOW>' 
  2918.       elseif jaltimage & jalttext = '' then
  2919.          jalttext = '>'
  2920.       endif
  2921.    javaflag = '0'
  2922.    'HTML_IML |<APPLET'codebase'|'code||
  2923.       '|'height width||appletname||align||
  2924.       '>|'||jaltimage||jalttext
  2925.    .col = savecol
  2926.    keyin '</APPLET>'
  2927.  
  2928.  
  2929. defc HTML_JPARAM
  2930.    paramname = entrybox("Parameter name:   ")
  2931.       if paramname = '' then
  2932.          return
  2933.       else paramname = ' NAME="'||paramname'"'
  2934.       endif
  2935.    paramvalue = entrybox("Value of parameter:   ",,'<none>')
  2936.       if paramvalue = '' then
  2937.          return
  2938.       endif
  2939.       if paramvalue = '<none>' then
  2940.          paramvalue = ''
  2941.       else paramvalue = ' VALUE="'||paramvalue'"'
  2942.       endif
  2943.    jparam = '<PARAM'||paramname||paramvalue'>'
  2944.    i_s = insert_state()
  2945.       if not i_s then insert_toggle; endif
  2946.    keyin jparam
  2947.  
  2948.  
  2949. defc HTML_UPDATED
  2950.    universal countryinfo
  2951.         if countryinfo then    -- See if countryinfo has been set.
  2952.        compile if EPM32
  2953.          time_sep = substr(countryinfo,24,1)
  2954.        compile else
  2955.          time_sep = substr(countryinfo,18,1)
  2956.        compile endif
  2957.         else
  2958.          time_sep = ':'
  2959.         endif
  2960.             parse value gettime(0) with ':' mm ':' ss . ';' h24 ':'
  2961.             timeinfo = h24 || time_sep || mm
  2962.             parse value getdate(0) with WeekDay Month Day ', ' Year';'MonthNum
  2963.             dateinfo = day leftstr(month, 3) year   -- 7 Mar 1995
  2964.    i_s = insert_state()
  2965.       if not i_s then insert_toggle; endif
  2966.    keyin 'Last updated on' dateinfo', at' timeinfo MY_TIMEZONE'.'
  2967.  
  2968.  
  2969. defc HTML_CONNECT
  2970.    universal prog_name, prog_dir, prog_param
  2971.    param = arg(1)
  2972.    current_dir = directory()
  2973.    get_progdir(param)
  2974.    if arg(1) = MY_TELNET | arg(1) = MY_BROWSER then
  2975.       'start linkup.exe '||prog_name prog_param
  2976.    elseif arg(1) = MY_FTP then
  2977.       CurrFile = .filename
  2978.       slash = lastpos('\', CurrFile)
  2979.       local_dir = leftstr(CurrFile, (slash-1))
  2980.       if pos('FTPPM', upcase(MY_FTP)) then
  2981.          'start linkup.exe ftppm.exe 0 0 0 0 0 '||local_dir' 0 * -a 2'
  2982.       else
  2983.          'start linkup.exe '||prog_name prog_param
  2984.       endif
  2985.    else
  2986.       'start '||prog_name
  2987.    endif
  2988.    call directory(current_dir)
  2989.  
  2990.  
  2991. defc HTML_BROWSE
  2992.    if .modify then
  2993.       result = winmessagebox('Preview', MODIFIED_PROMPT_MSG, MB_YESNOCANCEL + MB_ICONQUESTION + MB_MOVEABLE)
  2994.       if result=MBID_YES then
  2995.          'save'
  2996.       elseif result=MBID_NO then
  2997.          -- nop
  2998.       else
  2999.          return
  3000.       endif
  3001.    endif
  3002.    current_dir = directory()
  3003.    CurrFile = .filename
  3004.    place = lastpos('\', CurrFile)-1
  3005.    NewDir = leftstr(CurrFile, place)
  3006.    'cd '||NewDir
  3007.    'start '||MY_BROWSER' file:///"'||CurrFile'"'
  3008.    call directory(current_dir)
  3009.  
  3010.  
  3011. defc HTML_STRIP
  3012.    universal prog_name, prog_dir, prog_param
  3013.    param = arg(1)
  3014.    current_dir = directory()
  3015.    call get_progdir(param)
  3016.    CurrFile = .filename
  3017.    place = lastpos('.', CurrFile)-1
  3018.    CurrName = leftstr(CurrFile, place)
  3019.    TargetFile = CurrName'.txt'
  3020.    if pos ('UNH', upcase(MY_HTML_STRIP)) then
  3021.       TargetURL = CurrName'.url'
  3022.       prog_name prog_param CurrFile TargetFile TargetURL
  3023.       call directory(current_dir)
  3024.       'e /d '||TargetFile TargetURL
  3025.    else
  3026.       'start '||prog_name prog_param
  3027.       call directory(current_dir)
  3028.    endif
  3029.  
  3030.  
  3031. defc HTML_SYNTAX
  3032.    universal prog_name, prog_dir, prog_param
  3033.    param = arg(1)
  3034.    current_dir = directory()
  3035.    call get_progdir(param)
  3036.    CurrFile = .filename
  3037.    place = lastpos('.', CurrFile)-1
  3038.    CurrName = leftstr(CurrFile, place)
  3039.    if pos('WEBLINT', upcase(MY_HTML_CHECK)) then
  3040.       TargetFile = CurrName'.lint'
  3041.       prog_name prog_param CurrFile' > '||TargetFile
  3042.       call directory(current_dir)
  3043.       'e /d '||TargetFile
  3044.    else
  3045.       'start '||prog_name prog_param
  3046.       call directory(current_dir)
  3047.    endif
  3048.  
  3049.  
  3050.