Patch title: Release 90 bulk changes
Abstract:
File: /protocol/http/style/default.style
Key:
    Removed line
    Added line
   
# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


# Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
#
# This program is free software; you can redistribute it and
# modify it under the terms of the GNU General Public Licens
# as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be us
# but WITHOUT ANY WARRANTY; without even the implied warrant
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See 
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public 
# version 2 along with this program; if not, write to the Fr
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 


  html_tag common
  tag_prototype common
    attr bgcolor ColorRGB888 (color rgb 255 255 255)
    attr body Str
    attr url_icon Str
    attr has_html4 CBool true
    attr head Str
    attr css Str
    attr header Str
    attr footer Str
    hidden

    attr bgcolor ColorRGB888 (color rgb 255 255 255)
    attr body Str
    attr url_icon Str
    attr has_html4 CBool true
    attr head Str
    attr css Str
    attr header Str
    attr footer Str
    hidden

  html_tag page_header
  tag_prototype page_header
    void
    void
  html_tag page_footer
  tag_prototype page_footer
    void

    void

  html_tag link label target
  tag_prototype link label target
    attr label Str encode
    attr target Str
    attr section Str
    attr options Str
    attr label Str encode
    attr target Str
    attr section Str
    attr options Str
    attr relative
    attr no_extension

    attr no_extension

  html_tag section name
  tag_prototype section name
    attr name Str encode

    attr name Str encode

  html_tag note label
  tag_prototype note label
    attr label Str
    subpage target

    attr label Str
    subpage target

  html_tag image src -> img
  tag_prototype image src -> img
    attr src Str

    attr src Str

  html_tag how target
  tag_prototype how target
    attr target Str
    attr section Str
    attr options Str
    attr target Str
    attr section Str
    attr options Str
    attr relative
    attr no_extension

    attr no_extension

  html_tag title label
  tag_prototype title label
    attr label Str encode
    attr logo Str
    attr link Str
    attr small
    sequence font
      attr face Str
      attr size Float 36
      attr ssr Bool false # 'ssr' stands for 'server side re
    attr color ColorRGB888 (color rgb 0 0 0)
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr round Int 0
    attr bgcolor ColorRGB888 (color rgb 255 255 255) 

    attr label Str encode
    attr logo Str
    attr link Str
    attr small
    sequence font
      attr face Str
      attr size Float 36
      attr ssr Bool false # 'ssr' stands for 'server side re
    attr color ColorRGB888 (color rgb 0 0 0)
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr round Int 0
    attr bgcolor ColorRGB888 (color rgb 255 255 255) 

  html_tag chapter label
  tag_prototype chapter label
    attr label Str encode

    attr label Str encode

  html_tag header label
  tag_prototype header label
    attr label Str encode
    attr level Int 0
    body
    sequence font
      attr face Str
      attr size Float 36
      attr ssr Bool false
    sequence factor
      attr factor1 Float 4/5
      attr factor2 Float 3/5
      attr factor3 Float 2/5
    attr color ColorRGB888 (color rgb 0 0 0)
    attr tabulation Int 3
    sequence shade
      attr shade1 Float 0
      attr shade2 Float 0
      attr shade3 Float 0
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr round Int 0
    attr bgcolor ColorRGB888 (color rgb 255 255 255) 
    sequence bgshade
      attr bgshade1 Float 0
      attr bgshade2 Float 0
      attr bgshade3 Float 0


    attr label Str encode
    attr level Int 0
    body
    sequence font
      attr face Str
      attr size Float 36
      attr ssr Bool false
    sequence factor
      attr factor1 Float 4/5
      attr factor2 Float 3/5
      attr factor3 Float 2/5
    attr color ColorRGB888 (color rgb 0 0 0)
    attr tabulation Int 3
    sequence shade
      attr shade1 Float 0
      attr shade2 Float 0
      attr shade3 Float 0
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr round Int 0
    attr bgcolor ColorRGB888 (color rgb 255 255 255) 
    sequence bgshade
      attr bgshade1 Float 0
      attr bgshade2 Float 0
      attr bgshade3 Float 0


  html_tag para -> p
  tag_prototype para -> p
    body
    newline

    body
    newline

  html_tag eol -> br
  tag_prototype eol -> br
    newline

    newline

  html_tag center
  tag_prototype center
    body

    body

  html_tag bold -> b
  tag_prototype bold -> b
    body

    body

  html_tag italic -> i
  tag_prototype italic -> i
    body

    body

  html_tag big
  tag_prototype big
    body

    body

  html_tag small
  tag_prototype small
    body

    body

  html_tag fixed
  tag_prototype fixed
    body
    attr is_active CBool false

    body
    attr is_active CBool false

  html_tag font
  tag_prototype font
    sequence font
      attr face Str
      attr size Float 12
      attr ssr Bool false
    attr color ColorRGB888 (color rgb 0 0 0)
    attr linebreak CBool true
    body

    sequence font
      attr face Str
      attr size Float 12
      attr ssr Bool false
    attr color ColorRGB888 (color rgb 0 0 0)
    attr linebreak CBool true
    body

  html_tag highlight label
  tag_prototype highlight label
    attr label Str encode
    attr size Str "-2"
    attr color ColorRGB888 (color rgb 255 0 0)

    attr label Str encode
    attr size Str "-2"
    attr color ColorRGB888 (color rgb 255 0 0)

  html_tag list -> ul
  tag_prototype list -> ul
    body
    newline

    body
    newline

  html_tag item -> li
  tag_prototype item -> li
    body
    newline

    body
    newline

  html_tag table
  tag_prototype table
    attr columns Int undefined
    attr padding Int 4 -> cellpadding
    attr spacing Int 0 -> cellspacing
    attr border Int 1
    body
    newline
    attr cursor Int undefined

    attr columns Int undefined
    attr padding Int 4 -> cellpadding
    attr spacing Int 0 -> cellspacing
    attr border Int 1
    body
    newline
    attr cursor Int undefined

  html_tag row -> tr
  tag_prototype row -> tr
    body
    newline

    body
    newline

  html_tag cell -> td
  tag_prototype cell -> td
    attr header
    attr color ColorRGB888 -> bgcolor
    body
    newline
    attr header_color ColorRGB888 (color rgb 208 208 208)
    attr header
    attr color ColorRGB888 -> bgcolor
    body
    newline
    attr header_color ColorRGB888 (color rgb 208 208 208)
    attr header_shade Float -0.1


  html_tag box
  tag_prototype box
    attr header Str encode
    attr color ColorRGB888 (color rgb 255 255 255)
    attr transparent
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr round Int 0
    attr width Str
    attr left
    attr right
    sequence hfont
      attr hface Str
      attr hsize Float 36
      attr hssr Bool false
    attr hcolor ColorRGB888 (color rgb 0 0 0)
    body
    newline

    attr header Str encode
    attr color ColorRGB888 (color rgb 255 255 255)
    attr transparent
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr round Int 0
    attr width Str
    attr left
    attr right
    sequence hfont
      attr hface Str
      attr hsize Float 36
      attr hssr Bool false
    attr hcolor ColorRGB888 (color rgb 0 0 0)
    body
    newline

  html_tag button label
  tag_prototype button label
    attr label Str encode
    attr noeol
    subpage target
    sequence font
      attr face Str
      attr size Float
      attr ssr Bool false
    attr tcolor ColorRGB888 (color rgb 0 0 0)
    attr extend Float undefined
    attr center CBool true
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr bcolor ColorRGB888

    attr label Str encode
    attr noeol
    subpage target
    sequence font
      attr face Str
      attr size Float
      attr ssr Bool false
    attr tcolor ColorRGB888 (color rgb 0 0 0)
    attr extend Float undefined
    attr center CBool true
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr bcolor ColorRGB888

  html_tag icon src
  tag_prototype icon src
    attr src Str
    attr help Str encode
    subpage target
    sequence isize
      attr isize_x Float undefined
      attr isize_y Float undefined
    attr dull Float undefined
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr bcolor ColorRGB888


    attr src Str
    attr help Str encode
    subpage target
    sequence isize
      attr isize_x Float undefined
      attr isize_y Float undefined
    attr dull Float undefined
    attr button Str
    sequence bsize
      attr bsize_x Float undefined
      attr bsize_y Float undefined
    sequence margin
      attr margin_left Float undefined
      attr margin_top Float undefined
      attr margin_right Float undefined
      attr margin_bottom Float undefined
    attr bcolor ColorRGB888


  html_tag input
  tag_prototype input
    attr label Str encode
    attr type Str
    attr name Str
    attr value Str encode
    attr length Int undefined -> size
    attr database
    attr is_read_only CBool false

    attr label Str encode
    attr type Str
    attr name Str
    attr value Str encode
    attr length Int undefined -> size
    attr database
    attr is_read_only CBool false

  html_tag textarea
  tag_prototype textarea
    attr label Str encode
    attr name Str
    attr value Str
    attr columns Int -> cols
    attr rows Int
    attr database

    attr label Str encode
    attr name Str
    attr value Str
    attr columns Int -> cols
    attr rows Int
    attr database

  html_tag select_begin
  tag_prototype select_begin
    attr label Str encode
    attr name Str
    attr value Str encode
    attr database
    attr is_active CBool false
    attr selected_label Str
    attr label Str encode
    attr name Str
    attr value Str encode
    attr database
    attr is_active CBool false
    attr selected_label Str
  html_tag select_end
  tag_prototype select_end
    attr database

    attr database

  html_tag option label value
  tag_prototype option label value
    attr label Str encode
    attr value Str encode

    attr label Str encode
    attr value Str encode

  html_tag pdata
  tag_prototype pdata
    attr label Str encode
    attr path Str
    attr value Str encode
    attr length Int
    attr columns Int
    attr rows Int

    attr label Str encode
    attr path Str
    attr value Str encode
    attr length Int
    attr columns Int
    attr rows Int

  html_tag listing
  tag_prototype listing
    body



    body



function full_url target has_section section has_options opt
  arg Str target section options ; arg CBool has_section has
function full_url target has_section section has_options options relative no_extension -> url
  arg Str target section options ; arg CBool has_section has_options relative no_extension ; arg Str url
  url := http_encode target
  var Str without_path := url (url search_last "/" -1)+1 url
  if not no_extension and without_path:len<>0 and (without_p
    url += ".html"
  if has_section
    url += "#"+http_encode:section
  if has_options
    url += "?"+http_encode:options
  url := http_encode target
  var Str without_path := url (url search_last "/" -1)+1 url
  if not no_extension and without_path:len<>0 and (without_p
    url += ".html"
  if has_section
    url += "#"+http_encode:section
  if has_options
    url += "?"+http_encode:options
  if relative
    url := replace url ":" "%3A"

style_setup
  text_hook :> the_function '. standard_text_hook' HtmlPage 
  begin_hook :> the_function '. standard_begin_hook' HtmlPag
  end_hook :> the_function '. standard_end_hook' HtmlPage
  
  push input is_read_only false

style_setup
  text_hook :> the_function '. standard_text_hook' HtmlPage 
  begin_hook :> the_function '. standard_begin_hook' HtmlPag
  end_hook :> the_function '. standard_end_hook' HtmlPage
  
  push input is_read_only false
  html_attributes_setup
  tag_attributes_setup


  style_tag page_header
  tag_html page_header
    void
    void
  style_tag page_footer
  tag_html page_footer
    void

    void

  style_tag link
    write "<a href=[dq]"+(full_url target has:section sectio
  tag_html link
    write "<a href=[dq]"+(full_url target has:section section has:options (attribute link options) has:relative has:no_extension)+"[dq]" # using 'attribute link options' instead of simply 'options' is required in order not to get page:options
    write_attributes
    write ">"
    write label
    write "</a>"

    write_attributes
    write ">"
    write label
    write "</a>"

  style_tag section
  tag_html section
    write "<a name=[dq]"+name+"[dq]></a>"

    write "<a name=[dq]"+name+"[dq]></a>"

  style_tag note
  tag_html note
    write "<a href=[dq]"+request:encoded_path+"?"+target+"[d

    write "<a href=[dq]"+request:encoded_path+"?"+target+"[d

  style_tag image
  tag_html image
    write "<img src=[dq]"+src+"[dq]"
    write_attributes
    write ">"

    write "<img src=[dq]"+src+"[dq]"
    write_attributes
    write ">"

  style_tag how
    write "<a href=[dq]"+(full_url target has:section sectio
  tag_html how
    write "<a href=[dq]"+(full_url target has:section section has:options (attribute how options) has:relative has:no_extension)+"[dq]>"
    write "<img src=[dq]"+common_path+"icon/how.png[dq] bord
    write "</a>"

    write "<img src=[dq]"+common_path+"icon/how.png[dq] bord
    write "</a>"

  style_tag title
  tag_html title
    head "<title>"+label+"</title>[lf]"
    if has:logo
      write "<table width=[dq]100%[dq]><tr><td width=[dq]100
    if button<>"" or round>0
      box button button bsize bsize_x bsize_y margin margin_
        center
          font font face size ssr color color linebreak fals
            text html_decode:label
    else
      if ssr
        var Str url := "text "+(string html_decode:label)+" 
        write "<center><img src=[dq]"+common_path+http_encod
      else
        write "<h1><center>"+label+"</center></h1>"
    if has:logo
      write "</td><td>"
      if has:link
        write "<a href=[dq]"+link+"[dq]>"
      write "<img src=[dq]"+logo+"[dq]"+(shunt has:link " bo
      if has:link
        write "</a>"
      write "</td></tr></table>"
    write "<br>[lf]"

    head "<title>"+label+"</title>[lf]"
    if has:logo
      write "<table width=[dq]100%[dq]><tr><td width=[dq]100
    if button<>"" or round>0
      box button button bsize bsize_x bsize_y margin margin_
        center
          font font face size ssr color color linebreak fals
            text html_decode:label
    else
      if ssr
        var Str url := "text "+(string html_decode:label)+" 
        write "<center><img src=[dq]"+common_path+http_encod
      else
        write "<h1><center>"+label+"</center></h1>"
    if has:logo
      write "</td><td>"
      if has:link
        write "<a href=[dq]"+link+"[dq]>"
      write "<img src=[dq]"+logo+"[dq]"+(shunt has:link " bo
      if has:link
        write "</a>"
      write "</td></tr></table>"
    write "<br>[lf]"

  style_tag chapter
  tag_html chapter
    write "<br><br>[lf]"
    if (attribute header button)<>"" or (attribute header ro
      box button (attribute header button) bsize (attribute 
        font font (attribute header face) (attribute header 
          if (attribute header ssr)
            text (repeat (attribute header tabulation) " ")+
          else
            fixed text:(repeat (attribute header tabulation)
    else
      if (attribute header ssr)
        var Str url := "text "+(string html_decode:label)+" 
        write "<p><img src=[dq]"+common_path+http_encode:url
      else
        write "<h1>"+label+"</h1>[lf]"

    write "<br><br>[lf]"
    if (attribute header button)<>"" or (attribute header ro
      box button (attribute header button) bsize (attribute 
        font font (attribute header face) (attribute header 
          if (attribute header ssr)
            text (repeat (attribute header tabulation) " ")+
          else
            fixed text:(repeat (attribute header tabulation)
    else
      if (attribute header ssr)
        var Str url := "text "+(string html_decode:label)+" 
        write "<p><img src=[dq]"+common_path+http_encode:url
      else
        write "<h1>"+label+"</h1>[lf]"

  style_open header
  tag_html_open header
    write "<br>[lf]"
    push level level+1
    var Float f := shunt level=1 factor1 level=2 factor2 fac
    if button<>"" or round>0
      box button button bsize bsize_x*f bsize_y*f margin mar
        font font face size*f ssr color (shade color (shunt 
          if ssr
            text (repeat tabulation " ")+html_decode:label
          else
            fixed text:(repeat tabulation " ") ; text html_d
    else
      if ssr
        var Str url := "text "+(string html_decode:label)+" 
        write "<p><img src=[dq]"+common_path+http_encode:url
      else
        write "<h"+(string level+1)+">"+label+"</h"+(string 
    write "<br>[lf]"
    push level level+1
    var Float f := shunt level=1 factor1 level=2 factor2 fac
    if button<>"" or round>0
      box button button bsize bsize_x*f bsize_y*f margin mar
        font font face size*f ssr color (shade color (shunt 
          if ssr
            text (repeat tabulation " ")+html_decode:label
          else
            fixed text:(repeat tabulation " ") ; text html_d
    else
      if ssr
        var Str url := "text "+(string html_decode:label)+" 
        write "<p><img src=[dq]"+common_path+http_encode:url
      else
        write "<h"+(string level+1)+">"+label+"</h"+(string 
  style_close header
  tag_html_close header
    void

    void

  style_open big
  tag_html_open big
    write "<font size=[dq]+1[dq]>"
    write "<font size=[dq]+1[dq]>"
  style_close big
  tag_html_close big
    write "</font>"

    write "</font>"

  style_tag small
  tag_html small
    write "<font size=[dq]-1[dq]>"
    write "<font size=[dq]-1[dq]>"
  style_close small
  tag_html_close small
    write "</font>"

    write "</font>"

  style_open fixed
  tag_html_open fixed
    write "<tt>"
    push is_active true
    write "<tt>"
    push is_active true
  style_close fixed
  tag_html_close fixed
    write "</tt>"

    write "</tt>"

  style_open font
  tag_html_open font
    if (attribute common has_html4)
      var Str st := ""
      if has:face
        st += "font-family: "+face+"; "
      if has:size
        st += "font-size: "+(string size "fixed 0")+"pt; "
      if has:color
        st += "color: "+(string color "html")+"; "
      write "<span style=[dq]"
      write (st 0 (max st:len-2 0))
      write "[dq]>"
    else
      write "<font"
      if has:face
        write " face=[dq]"+face+"[dq]"
      if has:size
        write " size=[dq]"+(string size "fixed 0")+"pt[dq]"
      if has:color
        write " color=[dq]"+(string color "html")+"[dq]"
      write_attributes
      write ">"
    # if (attributes option "bold")
    #   write "<b>"
    if (attribute common has_html4)
      var Str st := ""
      if has:face
        st += "font-family: "+face+"; "
      if has:size
        st += "font-size: "+(string size "fixed 0")+"pt; "
      if has:color
        st += "color: "+(string color "html")+"; "
      write "<span style=[dq]"
      write (st 0 (max st:len-2 0))
      write "[dq]>"
    else
      write "<font"
      if has:face
        write " face=[dq]"+face+"[dq]"
      if has:size
        write " size=[dq]"+(string size "fixed 0")+"pt[dq]"
      if has:color
        write " color=[dq]"+(string color "html")+"[dq]"
      write_attributes
      write ">"
    # if (attributes option "bold")
    #   write "<b>"
  style_close font
  tag_html_close font
    # if (attributes option "bold")
    #   write "</b>"
    if (attribute common has_html4)
      write "</span>"
    else
      write "</font>"

    # if (attributes option "bold")
    #   write "</b>"
    if (attribute common has_html4)
      write "</span>"
    else
      write "</font>"

  style_tag highlight
  tag_html highlight
    write "<tt> </tt>"
    write "<font size=[dq]"+size+"[dq] color=[dq]"+(string c
    write label
    write "</b></font>"

    write "<tt> </tt>"
    write "<font size=[dq]"+size+"[dq] color=[dq]"+(string c
    write label
    write "</b></font>"

  style_open table
  tag_html_open table
    push cursor (shunt has:columns (cast 0 Int) undefined)
    write "<table border=[dq]"+string:border+"[dq] cellpaddi
    write_attributes
    write ">[lf]"
    push cursor (shunt has:columns (cast 0 Int) undefined)
    write "<table border=[dq]"+string:border+"[dq] cellpaddi
    write_attributes
    write ">[lf]"
  style_close table
  tag_html_close table
    write "</table>[lf]"

    write "</table>[lf]"

  style_open cell
  tag_html_open cell
    if (attribute table cursor)<>undefined and (attribute ta
      write "<tr>[lf]"
    write "<td"
    if has:color
      write " bgcolor=[dq]"+(string color "html")+"[dq]"
    if (attribute table cursor)<>undefined and (attribute ta
      write "<tr>[lf]"
    write "<td"
    if has:color
      write " bgcolor=[dq]"+(string color "html")+"[dq]"
      push common bgcolor color
    eif has:header
    eif has:header
      write " bgcolor=[dq]"+(string header_color "html")+"[d
      # write " bgcolor=[dq]"+(string header_color "html")+"[dq]"
      write " bgcolor=[dq]"+(string (shade (attribute common bgcolor) header_shade) "html")+"[dq]"
    write_attributes
    write ">"
    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "<font face=[dq]"+(attribute font face)+"[dq] co
    write_attributes
    write ">"
    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "<font face=[dq]"+(attribute font face)+"[dq] co
  style_close cell
  tag_html_close cell
    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "</font>"
    write "</td>[lf]"
    if (attribute table cursor)<>undefined
      attribute table cursor += 1
      if (attribute table cursor)%(attribute table columns)=
        write "</tr>[lf]"

    var Pointer:ColorRGB888 fc :> attribute font color
    if (attribute font face)<>"" or fc:r<>0 or fc:g<>0 or fc
      write "</font>"
    write "</td>[lf]"
    if (attribute table cursor)<>undefined
      attribute table cursor += 1
      if (attribute table cursor)%(attribute table columns)=
        write "</tr>[lf]"

  style_open box
  tag_html_open box
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    var CBool colored := not has:transparent and (button<>""
    write "<table cellspacing=[dq]0[dq] cellpadding=[dq]"+st
    if has:width
      write " width=[dq]"+width+"[dq]"
    if has:left
      write " align=[dq]left[dq]"
    if has:right
      write " align=[dq]right[dq]"
    # write_attributes
    write "><tr>[lf]"
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
      write "<td><img src=[dq]"+common_path+"border%200"+htt
      write "<td background=[dq]"+common_path+"border%201"+h
      write "<td><img src=[dq]"+common_path+"border%202"+htt
      write "</tr><tr>[lf]"
      if has:header
        write "<td background=[dq]"+common_path+"border%203"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]"+common_path+http_encode:url+
        else
          write header
        write "</center></td>[lf]"
        write "<td background=[dq]"+common_path+"border%205"
        write "</tr><tr>[lf]"
        write "<td><img src=[dq]"+common_path+"border%203"+h
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td><img src=[dq]"+common_path+"border%205"+h
        write "</tr><tr>[lf]"
        var Str opt := " button [dq]"+button+"[dq]"+(shunt b
        write "<td><img src=[dq]"+common_path+"border%203"+h
        write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
        write "<td><img src=[dq]"+common_path+"border%205"+h
      write "</tr><tr>[lf]"
      write "<td background=[dq]"+common_path+"border%203"+h
    eif round>0
      var Str opt := " size "+string:round+" "+string:round+
      write "<td><img src=[dq]"+common_path+"corner%200"+htt
      write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
      write "<td><img src=[dq]"+common_path+"corner%201"+htt
      write "</tr><tr>[lf]"
      if has:header
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]"+common_path+http_encode:url+
        else
          write header
        write "</center></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
    else
      if has:header
        write "<td"+(shunt colored " bgcolor=[dq]#"+string:c
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]"+common_path+http_encode:url+
        else
          write header
        write "</center></td>[lf]"
        write "</tr><tr>[lf]"
    write "<td width=[dq]100%[dq] height=[dq]100%[dq]"
    if colored
      write " bgcolor=[dq]#"+string:c2+"[dq]"
    write ">"
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    var CBool colored := not has:transparent and (button<>""
    write "<table cellspacing=[dq]0[dq] cellpadding=[dq]"+st
    if has:width
      write " width=[dq]"+width+"[dq]"
    if has:left
      write " align=[dq]left[dq]"
    if has:right
      write " align=[dq]right[dq]"
    # write_attributes
    write "><tr>[lf]"
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
      write "<td><img src=[dq]"+common_path+"border%200"+htt
      write "<td background=[dq]"+common_path+"border%201"+h
      write "<td><img src=[dq]"+common_path+"border%202"+htt
      write "</tr><tr>[lf]"
      if has:header
        write "<td background=[dq]"+common_path+"border%203"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]"+common_path+http_encode:url+
        else
          write header
        write "</center></td>[lf]"
        write "<td background=[dq]"+common_path+"border%205"
        write "</tr><tr>[lf]"
        write "<td><img src=[dq]"+common_path+"border%203"+h
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td><img src=[dq]"+common_path+"border%205"+h
        write "</tr><tr>[lf]"
        var Str opt := " button [dq]"+button+"[dq]"+(shunt b
        write "<td><img src=[dq]"+common_path+"border%203"+h
        write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
        write "<td><img src=[dq]"+common_path+"border%205"+h
      write "</tr><tr>[lf]"
      write "<td background=[dq]"+common_path+"border%203"+h
    eif round>0
      var Str opt := " size "+string:round+" "+string:round+
      write "<td><img src=[dq]"+common_path+"corner%200"+htt
      write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
      write "<td><img src=[dq]"+common_path+"corner%201"+htt
      write "</tr><tr>[lf]"
      if has:header
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]><center>"
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]"+common_path+http_encode:url+
        else
          write header
        write "</center></td>[lf]"
        write "<td bgcolor=[dq]#"+string:c+"[dq]></td>[lf]"
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
        write "<td colspan=[dq]3[dq] height=[dq]"+string:rou
        write "</tr><tr>[lf]"
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
    else
      if has:header
        write "<td"+(shunt colored " bgcolor=[dq]#"+string:c
        if hssr
          var Str url := "text "+(string html_decode:header)
          write "<img src=[dq]"+common_path+http_encode:url+
        else
          write header
        write "</center></td>[lf]"
        write "</tr><tr>[lf]"
    write "<td width=[dq]100%[dq] height=[dq]100%[dq]"
    if colored
      write " bgcolor=[dq]#"+string:c2+"[dq]"
    write ">"
    html_stack mark
    tag_stack mark
    if colored
      push common bgcolor c2
    if colored
      push common bgcolor c2
  style_close box
    html_stack rewind
  tag_html_close box
    tag_stack rewind
    write "</td>[lf]"
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
      write "<td background=[dq]"+common_path+"border%205"+h
      write "</tr><tr>[lf]"
      write "<td><img src=[dq]"+common_path+"border%206"+htt
      write "<td background=[dq]"+common_path+"border%207"+h
      write "<td><img src=[dq]"+common_path+"border%208"+htt
    eif round>0
      var Str opt := " size "+string:round+" color [dq]"+str
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
      write "<td><img src=[dq]"+common_path+"corner%202"+htt
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "<td><img src=[dq]"+common_path+"corner%203"+htt
    write "</tr></table>[lf]"

    write "</td>[lf]"
    var ColorRGB888 c := color
    var ColorRGB888 c2 := shade c 0.5
    if not has:header
      c2 := c
    if button<>""
      var Str opt := " button [dq]"+button+"[dq]"+(shunt bsi
      write "<td background=[dq]"+common_path+"border%205"+h
      write "</tr><tr>[lf]"
      write "<td><img src=[dq]"+common_path+"border%206"+htt
      write "<td background=[dq]"+common_path+"border%207"+h
      write "<td><img src=[dq]"+common_path+"border%208"+htt
    eif round>0
      var Str opt := " size "+string:round+" color [dq]"+str
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "</tr><tr>[lf]"
      write "<td><img src=[dq]"+common_path+"corner%202"+htt
      write "<td bgcolor=[dq]#"+string:c2+"[dq]></td>[lf]"
      write "<td><img src=[dq]"+common_path+"corner%203"+htt
    write "</tr></table>[lf]"

  style_tag input
  tag_html input
    write label
    write "<input type=[dq]"+type+"[dq] name=[dq]"+name+"[dq
    if length=defined
      write " size=[dq]"+string:length+"[dq]"
    if has:database
      write (shunt browser="konqueror" " onFocus=[dq]textin(
    write_attributes
    if smart_input and (bgcolor:r<>255 or bgcolor:g<>255 or 
      write " style=[dq]border: 0; background-color: #"+stri
    write ">[lf]"

    write label
    write "<input type=[dq]"+type+"[dq] name=[dq]"+name+"[dq
    if length=defined
      write " size=[dq]"+string:length+"[dq]"
    if has:database
      write (shunt browser="konqueror" " onFocus=[dq]textin(
    write_attributes
    if smart_input and (bgcolor:r<>255 or bgcolor:g<>255 or 
      write " style=[dq]border: 0; background-color: #"+stri
    write ">[lf]"

  style_tag textarea
  tag_html textarea
    write label
    write "<textarea name=[dq]"+name+"[dq] cols=[dq]"+string
    if has:database
      write (shunt browser="konqueror" " onFocus=[dq]textin(
    if smart_input and (bgcolor:r<>255 or bgcolor:g<>255 or 
      write " style=[dq]border: 0; background-color: #"+stri
    write_attributes
    write ">"
    write value
    write "</textarea>[lf]"

    write label
    write "<textarea name=[dq]"+name+"[dq] cols=[dq]"+string
    if has:database
      write (shunt browser="konqueror" " onFocus=[dq]textin(
    if smart_input and (bgcolor:r<>255 or bgcolor:g<>255 or 
      write " style=[dq]border: 0; background-color: #"+stri
    write_attributes
    write ">"
    write value
    write "</textarea>[lf]"

  style_tag select_begin
  tag_html select_begin
    write label
    write "<select name=[dq]"+name+"[dq]"
    if has:database
      write (shunt browser="konqueror" " onFocus=[dq]textin(
    if smart_input and (bgcolor:r<>255 or bgcolor:g<>255 or 
      write " style=[dq]border-width: 0; background-color: #
    write ">[lf]"
    write label
    write "<select name=[dq]"+name+"[dq]"
    if has:database
      write (shunt browser="konqueror" " onFocus=[dq]textin(
    if smart_input and (bgcolor:r<>255 or bgcolor:g<>255 or 
      write " style=[dq]border-width: 0; background-color: #
    write ">[lf]"
  style_tag select_end
  tag_html select_end
    write "</select>[lf]"

    write "</select>[lf]"

  style_tag option
  tag_html option
    if (attribute select_begin is_active)
      write "<option"
      if value=(attribute select_begin value)
        write " selected"
      write " value=[dq]"+value+"[dq]"
      write ">"
      write label
      write "</option>[lf]"
    else
      if value=(attribute select_begin value)
        attribute select_begin selected_label := label
     
    if (attribute select_begin is_active)
      write "<option"
      if value=(attribute select_begin value)
        write " selected"
      write " value=[dq]"+value+"[dq]"
      write ">"
      write label
      write "</option>[lf]"
    else
      if value=(attribute select_begin value)
        attribute select_begin selected_label := label
     
  style_tag pdata
  tag_html pdata
    if has:rows
      write label+"[lf]"
      write "<table><tr><td><pre>[lf]"
    else
      write label+"<tt>[lf]"
    write "<pdata path=[dq]"+path+"[dq]>"+value+"</pdata>[lf
    if has:rows
      write "</pre></td></tr></table>[lf]"
    else
      write "</tt>[lf]"


    if has:rows
      write label+"[lf]"
      write "<table><tr><td><pre>[lf]"
    else
      write label+"<tt>[lf]"
    write "<pdata path=[dq]"+path+"[dq]>"+value+"</pdata>[lf
    if has:rows
      write "</pre></td></tr></table>[lf]"
    else
      write "</tt>[lf]"


  style_tag button
  tag_html button
    if button=""
      write "<input type=[dq]submit[dq] name=[dq]"+target+"[
    else
      var Str action := "[dq]button_pressed('"+target+"')[dq
      var Str event := shunt browser="netscape" "onMouseUp" 
      var Str url := common_path+"button"+(http_encode " [dq
      write "<img src=[dq]"+url+"[dq] align=[dq]middle[dq] "
    if not has:noeol
      write "<br>[lf]"

    if button=""
      write "<input type=[dq]submit[dq] name=[dq]"+target+"[
    else
      var Str action := "[dq]button_pressed('"+target+"')[dq
      var Str event := shunt browser="netscape" "onMouseUp" 
      var Str url := common_path+"button"+(http_encode " [dq
      write "<img src=[dq]"+url+"[dq] align=[dq]middle[dq] "
    if not has:noeol
      write "<br>[lf]"

  style_tag icon
  tag_html icon
    var Str action := "[dq]button_pressed('"+target+"')[dq]"
    var Str event := shunt browser="netscape" "onMouseUp" "o
    var Str url := src
    if button<>""
      url := common_path+"icon"+(http_encode " [dq]"+src+"[d
    write "<img src=[dq]"+url+"[dq] align=[dq]middle[dq] alt

    var Str action := "[dq]button_pressed('"+target+"')[dq]"
    var Str event := shunt browser="netscape" "onMouseUp" "o
    var Str url := src
    if button<>""
      url := common_path+"icon"+(http_encode " [dq]"+src+"[d
    write "<img src=[dq]"+url+"[dq] align=[dq]middle[dq] alt

  style_open listing
  tag_html_open listing
    write "<p>[lf]<tt>[lf]"
    push fixed is_active true
    write "<p>[lf]<tt>[lf]"
    push fixed is_active true
  style_close listing
  tag_html_close listing
    write "</tt>[lf]</p>[lf]"



method p read_only_begin
  arg_rw HtmlPage p
    write "</tt>[lf]</p>[lf]"



method p read_only_begin
  arg_rw HtmlPage p
  p:html_stack mark
  p:tag_stack mark
  p push input is_read_only true

method p read_only_begin c
  arg_rw HtmlPage p ; arg CBool c
  p push input is_read_only true

method p read_only_begin c
  arg_rw HtmlPage p ; arg CBool c
  p:html_stack mark
  p:tag_stack mark
  if c
    p push input is_read_only true

method p read_only_end
  arg_rw HtmlPage p
  if c
    p push input is_read_only true

method p read_only_end
  arg_rw HtmlPage p
  p:html_stack rewind
  p:tag_stack rewind


method p html_select_begin label ident data fun
  arg_rw HtmlPage p ; arg Str label ; arg Str ident ; arg Un


method p html_select_begin label ident data fun
  arg_rw HtmlPage p ; arg Str label ; arg Str ident ; arg Un
  p:html_stack mark
  p:tag_stack mark
  p push select_begin value (to_string data "raw" fun)
  p push select_begin is_active true
  p select_begin label label name ident

method p html_select_end
  arg_rw HtmlPage p
  p select_end
  p push select_begin value (to_string data "raw" fun)
  p push select_begin is_active true
  p select_begin label label name ident

method p html_select_end
  arg_rw HtmlPage p
  p select_end
  p:html_stack rewind
  p:tag_stack rewind
 
if database

  method p data_select_begin label d
    arg_rw HtmlPage p ; arg Str label ; arg Data_ d
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
 
if database

  method p data_select_begin label d
    arg_rw HtmlPage p ; arg Str label ; arg Data_ d
    if (d:interface get d addressof:(var Str value) Str)=fai
      value := ""
    p:html_stack mark
    p:tag_stack mark
    p push select_begin value html_encode:value
    if (p attribute input is_read_only)
      p push select_begin is_active false
      p push select_begin label html_encode:label
      p push pdata path d:path
      p push select_begin selected_label ""
    else
      p push select_begin is_active true
      var Str dpath := replace (replace d:path "&#" "(") ";"
      p select_begin label label name "/"+(p:request generat
  
  method p data_select_end
    arg_rw HtmlPage p
    if (p attribute input is_read_only)
      p pdata label html_decode:(p attribute select_begin la
    else
      p select_end database
    p push select_begin value html_encode:value
    if (p attribute input is_read_only)
      p push select_begin is_active false
      p push select_begin label html_encode:label
      p push pdata path d:path
      p push select_begin selected_label ""
    else
      p push select_begin is_active true
      var Str dpath := replace (replace d:path "&#" "(") ";"
      p select_begin label label name "/"+(p:request generat
  
  method p data_select_end
    arg_rw HtmlPage p
    if (p attribute input is_read_only)
      p pdata label html_decode:(p attribute select_begin la
    else
      p select_end database
    p:html_stack rewind
    p:tag_stack rewind
   
meta '. select' e
  if e:size<4 or not (e:0 cast HtmlPage) or not (e:1 cast St
    return
  e:2:compile ?
  var CBool data := database and e:2:is_data
  if not data
    var Str name := shunt e:2:size=0 e:2:ident e:2:(e:2:size
    if name=""
      return
    var Link:Type type :> e:2:result:type:real_data_type
    if not (e:2 cast type)
      return
    var Pointer:Function function :> type get_generic_method
    if addressof:function=null or addressof:function=address
      return
    notify_editable_variable e:2
  var Bool eol := true
  var Int i := 3
  while i<e:size-1
    if e:i:ident="noeol"
      eol := false
      i += 1
    else
      return
  (e e:size-1) compile ?
  e suckup e:0 ; e suckup e:1 ; e suckup e:2
  if database and data
    e add (instruction (the_function '. data_select_begin' H
  else
    e add (instruction (the_function '. html_select_begin' H
  e suckup (e e:size-1)
  if database and data
    e add (instruction (the_function '. data_select_end' Htm
  else
    e add (instruction (the_function '. html_select_end' Htm
  if eol
    e add (instruction (the_function '. text' HtmlPage Str) 
  e set_void_result



   
meta '. select' e
  if e:size<4 or not (e:0 cast HtmlPage) or not (e:1 cast St
    return
  e:2:compile ?
  var CBool data := database and e:2:is_data
  if not data
    var Str name := shunt e:2:size=0 e:2:ident e:2:(e:2:size
    if name=""
      return
    var Link:Type type :> e:2:result:type:real_data_type
    if not (e:2 cast type)
      return
    var Pointer:Function function :> type get_generic_method
    if addressof:function=null or addressof:function=address
      return
    notify_editable_variable e:2
  var Bool eol := true
  var Int i := 3
  while i<e:size-1
    if e:i:ident="noeol"
      eol := false
      i += 1
    else
      return
  (e e:size-1) compile ?
  e suckup e:0 ; e suckup e:1 ; e suckup e:2
  if database and data
    e add (instruction (the_function '. data_select_begin' H
  else
    e add (instruction (the_function '. html_select_begin' H
  e suckup (e e:size-1)
  if database and data
    e add (instruction (the_function '. data_select_end' Htm
  else
    e add (instruction (the_function '. html_select_end' Htm
  if eol
    e add (instruction (the_function '. text' HtmlPage Str) 
  e set_void_result