Library for constructing static and dynamic HTML pages. This paper contains a description of the basic ideas behind an old version of this library.
An application written with this library can be transformed into a cgi script by the command
> cypm exec curry2cgi -m mainPage -o /home/joe/cgi-bin/prog.cgi Prog
            where Prog
            is the name of the Curry program with
the cgi script, /home/joe/cgi-bin/prog.cgi
            is
the desired location of the
compiled cgi script, and mainPage
            is the Curry expression
(of type IO HtmlPage) computing the HTML page (where cypm
            is the command calling the Curry Package Manager).
          
Author: Michael Hanus (with extensions by Bernd Brassel and Marco Comini)
Version: October 2020
| defaultEncoding
                  ::  StringThe default encoding used in generated HTML documents. | 
| hStruct
                  :: HTML a => String -> [a] -> aAn HTML structure with a given tag and no attributes. | 
| idOfHtmlRef
                  ::  HtmlRef -> StringInternal identifier of a HtmlRef (intended only for internal use in other libraries!). | 
| toHtmlExp
                  ::  BaseHtml -> HtmlExpTransforms a static into a dynamic HTML document. | 
| fromHtmlExp
                  ::  HtmlExp -> BaseHtmlTransforms a dynamic HTML into a static one by dropping references and event handlers. | 
| textOf
                  ::  [BaseHtml] -> StringExtracts the textual contents of a list of HTML expressions. | 
| fromFormReader
                  ::  FormReader a -> IO aTransforms a FormReaderaction into a standard IO action. | 
| toFormReader
                  ::  IO a -> FormReader aTransforms an IO action into a FormReaderaction. | 
| simpleFormDef
                  ::  [HtmlExp] -> HtmlFormDef ()A definition of a simple form which does not require session data. | 
| simpleFormDefWithID
                  ::  String -> [HtmlExp] -> HtmlFormDef ()A definition of a simple form, which does not require session data, with a unique identifier (usually, the qualified name of the operation defining the form). | 
| formDef
                  ::  FormReader a -> (a -> [HtmlExp]) -> HtmlFormDef aA definition of a form which consists of a FormReaderaction
and a mapping from data into an HTML expression
(which usually contains event handlers to produce the form answers). | 
| formDefWithID
                  ::  String -> FormReader a -> (a -> [HtmlExp]) -> HtmlFormDef aA definition of a form with a unique identifier (usually, the qualified name of the operation defining the form). | 
| formDefId
                  ::  HtmlFormDef a -> StringReturns the identifier of a form definition. | 
| setFormDefId
                  ::  String -> HtmlFormDef a -> HtmlFormDef aSets the identifier of a form definition. | 
| formDefRead
                  ::  HtmlFormDef a -> IO aReturns the FormReaderaction of a form definition. | 
| formDefView
                  ::  HtmlFormDef a -> a -> [HtmlExp]Returns the view operation of a form definition. | 
| instHtmlRefs
                  ::  [HtmlExp] -> Int -> ([HtmlExp],Int)Instantiates all HtmlRefs with a unique tag in HTML expressions. | 
| pageEnc
                  ::  String -> PageParamAn encoding scheme for a HTML page. | 
| pageCookie
                  ::  (String,String) -> PageParamA cookie to be sent to the client's browser when a HTML page is requested. | 
| pageCSS
                  ::  String -> PageParamA URL for a CSS file for a HTML page. | 
| pageMetaInfo
                  ::  [(String,String)] -> PageParamMeta information for a HTML page. | 
| pageLinkInfo
                  ::  [(String,String)] -> PageParamLink information for a HTML page. | 
| pageBodyAttr
                  ::  (String,String) -> PageParamOptional attribute for the body element of the web page. | 
| page
                  ::  String -> [BaseHtml] -> HtmlPageA basic HTML web page with the default encoding. | 
| headerPage
                  ::  String -> [BaseHtml] -> HtmlPageA standard HTML web page where the title is included in the body as the first header. | 
| addPageParam
                  ::  HtmlPage -> PageParam -> HtmlPageAdds a parameter to an HTML page. | 
| addCookies
                  ::  [(String,String)] -> HtmlPage -> HtmlPageAdds simple cookie to an HTML page. | 
| addHttpHeader
                  ::  String -> String -> HtmlPage -> HtmlPageAdds a HTTP header to a HTML page. | 
| formatCookie
                  ::  (String,String,[CookieParam]) -> String | 
| answerText
                  ::  String -> HtmlPageA textual result instead of an HTML page as a result for active web pages. | 
| answerEncText
                  ::  String -> String -> HtmlPageA textual result instead of an HTML page as a result for active web pages where the encoding is given as the first parameter. | 
| redirectPage
                  ::  String -> HtmlPageGenerates a redirection page to a given URL. | 
| expires
                  ::  Int -> HtmlPage -> HtmlPageAdds expire time to given HTML page. | 
| htxt
                  :: HTML a => String -> aBasic text as HTML expression. | 
| htxts
                  :: HTML a => [String] -> [a]A list of strings represented as a list of HTML expressions. | 
| hempty
                  :: HTML a => aAn empty HTML expression. | 
| nbsp
                  :: HTML a => aNon breaking Space | 
| h1
                  :: HTML a => [a] -> aHeader 1 | 
| h2
                  :: HTML a => [a] -> aHeader 2 | 
| h3
                  :: HTML a => [a] -> aHeader 3 | 
| h4
                  :: HTML a => [a] -> aHeader 4 | 
| h5
                  :: HTML a => [a] -> aHeader 5 | 
| h6
                  :: HTML a => [a] -> aHeader 6 | 
| par
                  :: HTML a => [a] -> aParagraph | 
| section
                  :: HTML a => [a] -> aSection | 
| header
                  :: HTML a => [a] -> aHeader | 
| 
                  :: HTML a => [a] -> aFooter | 
| emphasize
                  :: HTML a => [a] -> aEmphasize | 
| strong
                  :: HTML a => [a] -> aStrong (more emphasized) text. | 
| bold
                  :: HTML a => [a] -> aBoldface | 
| italic
                  :: HTML a => [a] -> aItalic | 
| 
                  :: HTML a => [a] -> aNavigation | 
| code
                  :: HTML a => [a] -> aProgram code | 
| center
                  :: HTML a => [a] -> aCentered text | 
| blink
                  :: HTML a => [a] -> aBlinking text | 
| teletype
                  :: HTML a => [a] -> aTeletype font | 
| pre
                  :: HTML a => [a] -> aUnformatted input, i.e., keep spaces and line breaks and don't quote special characters. | 
| verbatim
                  :: HTML a => String -> aVerbatim (unformatted), special characters (<,>,&,") are quoted. | 
| address
                  :: HTML a => [a] -> aAddress | 
| href
                  :: HTML a => String -> [a] -> aHypertext reference | 
| anchor
                  :: HTML a => String -> [a] -> aAn anchored text with a hypertext reference inside a document. | 
| ulist
                  :: HTML a => [[a]] -> aUnordered list. | 
| ulistWithClass
                  :: HTML a => String -> String -> [[a]] -> aAn unordered list with classes for the entire list and the list elements. | 
| ulistWithItemClass
                  :: HTML a => String -> [(String,[a])] -> aAn unordered list with classes for the entire list individual classes for the list elements. | 
| olist
                  :: HTML a => [[a]] -> aOrdered list. | 
| olistWithClass
                  :: HTML a => String -> String -> [[a]] -> aAn ordered list with classes for the entire list and the list elements. | 
| olistWithItemClass
                  :: HTML a => String -> [(String,[a])] -> aAn ordered list with classes for the entire list individual classes for the list elements. | 
| litem
                  :: HTML a => [a] -> aA single list item (usually not explicitly used) | 
| dlist
                  :: HTML a => [([a],[a])] -> aDescription list | 
| table
                  :: HTML a => [[[a]]] -> aTable with a matrix of items where each item is a list of HTML expressions. | 
| tableWithClass
                  :: HTML a => String -> String -> String -> [[[a]]] -> aTable with a matrix of items (each item is a list of HTML expressions) with classes for the entire table, each row, and each data element. | 
| headedTable
                  :: HTML a => [[[a]]] -> aSimilar to tablebut introduces header tags for the first row. | 
| hrule
                  :: HTML a => aHorizontal rule | 
| breakline
                  :: HTML a => aBreak a line | 
| image
                  :: HTML a => String -> String -> aImage | 
| styleSheet
                  :: HTML a => String -> aDefines a style sheet to be used in this HTML document. | 
| style
                  :: HTML a => String -> [a] -> aProvides a style for HTML elements. | 
| textstyle
                  :: HTML a => String -> String -> aProvides a style for a basic text. | 
| blockstyle
                  :: HTML a => String -> [a] -> aProvides a style for a block of HTML elements. | 
| inline
                  :: HTML a => [a] -> aJoins a list of HTML elements into a single HTML element. | 
| block
                  :: HTML a => [a] -> aJoins a list of HTML elements into a block. | 
| 
                  :: HTML a => String -> String -> aA hidden field to pass a value referenced by a fixed name. | 
| formElem
                  ::  HtmlFormDef a -> BaseHtmlA form embedded in an HTML expression. | 
| button
                  ::  String -> ((HtmlRef -> String) -> IO HtmlPage) -> HtmlExpA button to submit a form with a label string and an event handler. | 
| resetButton
                  ::  String -> HtmlExpReset button with a label string | 
| imageButton
                  ::  String -> ((HtmlRef -> String) -> IO HtmlPage) -> HtmlExpSubmit button in form of an imag. | 
| textField
                  ::  HtmlRef -> String -> HtmlExpInput text field with a reference and an initial contents | 
| password
                  ::  HtmlRef -> HtmlExpInput text field (where the entered text is obscured) with a reference | 
| textArea
                  ::  HtmlRef -> (Int,Int) -> String -> HtmlExpInput text area with a reference, height/width, and initial contents | 
| checkBox
                  ::  HtmlRef -> String -> HtmlExpA checkbox with a reference and a value. | 
| checkedBox
                  ::  HtmlRef -> String -> HtmlExpA checkbox that is initially checked with a reference and a value. | 
| radioMain
                  ::  HtmlRef -> String -> HtmlExpA main button of a radio (initially "on") with a reference and a value. | 
| radioMainOff
                  ::  HtmlRef -> String -> HtmlExpA main button of a radio (initially "off") with a reference and a value. | 
| radioOther
                  ::  HtmlRef -> String -> HtmlExpA further button of a radio (initially "off") with a reference (identical to the main button of this radio) and a value. | 
| selection
                  ::  HtmlRef -> [(String,String)] -> HtmlExpA selection button with a reference and a list of name/value pairs. | 
| selectionInitial
                  ::  HtmlRef -> [(String,String)] -> Int -> HtmlExpA selection button with a reference, a list of name/value pairs, and a preselected item in this list. | 
| multipleSelection
                  ::  HtmlRef -> [(String,String,Bool)] -> HtmlExpA selection button with a reference and a list of name/value/flag pairs. | 
| htmlQuote
                  ::  String -> StringQuotes special characters ( <,>,&,", umlauts) in a string
as HTML special characters. | 
| htmlIsoUmlauts
                  ::  String -> StringTranslates umlauts in iso-8859-1 encoding into HTML special characters. | 
| addAttr
                  :: HTML a => a -> (String,String) -> aAdds an attribute (name/value pair) to an HTML element. | 
| addAttrs
                  :: HTML a => a -> [(String,String)] -> aAdds a list of attributes (name/value pair) to an HTML element. | 
| addClass
                  :: HTML a => a -> String -> aAdds a class attribute to an HTML element (if the class attribute is not empty). | 
| showBaseHtmls
                  ::  [BaseHtml] -> StringTransforms a list of HTML expressions into string representation. | 
| showBaseHtml
                  ::  BaseHtml -> StringTransforms a single HTML expression into string representation. | 
| showHtmlPage
                  ::  HtmlPage -> StringTransforms HTML page into string representation. | 
| htmlPrelude
                  ::  StringStandard header for generated HTML pages. | 
| htmlTagAttrs
                  ::  [(String,String)]Standard attributes for element "html". | 
| getUrlParameter
                  ::  IO StringGets the parameter attached to the URL of the script. | 
| urlencoded2string
                  ::  String -> StringTranslates an URL encoded string into equivalent ASCII string. | 
| string2urlencoded
                  ::  String -> StringTranslates arbitrary strings into equivalent URL encoded strings. | 
| getCookies
                  ::  IO [(String,String)]Gets the cookies sent from the browser for the current CGI script. | 
| coordinates
                  ::  (HtmlRef -> String) -> Maybe (Int,Int)For image buttons: retrieve the coordinates where the user clicked within the image. | 
The data type to represent static HTML expressions.
Constructors:
BaseText
                    ::  String -> BaseHtml
                : a text string without any further structure
              BaseStruct
                    ::  String ->  Attrs ->  [BaseHtml] -> BaseHtml
                : a structure with a tag, attributes, and
                            HTML expressions inside the structure
              BaseAction
                    ::  (IO HtmlExp) -> BaseHtml
                : an action that computes a general HTML expression
                           which will be inserted when the HTML document
                           is shown (used to implement form expressions)
              The (abstract) data type for representing references to input elements in HTML forms.
Constructors:
The type for representing cgi environments, i.e., mappings from cgi references to the corresponding values of the input elements.
              Type synonym: HtmlEnv = HtmlRef -> String
            
The type of event handlers occurring in HTML forms.
              Type synonym: HtmlHandler = HtmlEnv -> IO HtmlPage
            
The data type for representing HTML expressions with input elements, i.e., all elements which might occur inside a form.
Constructors:
HtmlText
                    ::  String -> HtmlExp
                : a text string without any further structure
              HtmlStruct
                    ::  String ->  Attrs ->  [HtmlExp] -> HtmlExp
                : a structure with a tag, attributes, and
                             HTML expressions inside the structure
              HtmlAction
                    ::  (IO HtmlExp) -> HtmlExp
                : an action that computes an HTML expression
                             which will be inserted when the HTML document
                             is shown (used to implement form expressions)
              HtmlInput
                    ::  HtmlRef ->  HtmlExp -> HtmlExp
                : an input element (described by the second
                             argument) with a cgi reference
              HtmlEvent
                    ::  HtmlRef ->  HtmlHandler ->  HtmlExp -> HtmlExp
                : an input element (first arg) identified
                             by a cgi reference with an associated
                             event handler (typically, a submit button)
              
              The type FormReader
              is a monad with operations to read data
to invoke an HTML form.
It is assumed that a FormReader
              action reads only data and does not
change the environment, since the action is applied twice
when executing a form.
A typical action of this kind is HTML.Session.getSessionData.
            
              The FormReader
              type encapsulates IO actions in order to enforce
the correct use of forms.
            
Constructors:
The data type for representing HTML forms embedded into HTML pages.
              A form definition consists of a unique identifier of form (usually,
the qualified name of the operation defining the form),
a FormReader
              action and a mapping from data
into an HTML expression (which usually contains event handlers
to produce the form answers).
            
Constructors:
The data type for representing HTML pages. Since the HTML document shown in this page is a base HTML expression, it is ensured that input elements and event handlers occur only in embedded forms.
Constructors:
HtmlPage
                    ::  String ->  [PageParam] ->  [BaseHtml] -> HtmlPage
                : an HTML page with title t, optional parameters
                         (e.g., cookies) ps, and contents hs
              HtmlAnswer
                    ::  String ->  String -> HtmlPage
                : an answer in an arbitrary format where t
        is the content type (e.g., "text/plain") and c is the contents
              
              The possible parameters of an HTML page.
The parameters of a cookie (PageCookie) are its name and value and
optional parameters (expiration date, domain, path (e.g., the path "/"
makes the cookie valid for all documents on the server), security) which
are collected in a list.
            
Constructors:
PageEnc
                    ::  String -> PageParam
                : the encoding scheme of this page
              PageCookie
                    ::  String ->  String ->  [CookieParam] -> PageParam
                : a cookie to be sent to the
                                     client's browser
              PageCSS
                    ::  String -> PageParam
                : a URL for a CSS file for this page
              HttpHeader
                    ::  String ->  String -> PageParam
                : additional HTTP header included in this page
              PageJScript
                    ::  String -> PageParam
                : a URL for a Javascript file for this page
              PageMeta
                    ::  [(String,String)] -> PageParam
                : meta information (in form of attributes) for this page
              PageLink
                    ::  [(String,String)] -> PageParam
                : link information (in form of attributes) for this page
              PageHeadInclude
                    ::  BaseHtml -> PageParam
                : HTML expression to be included in page header
              PageBodyAttr
                    ::  (String,String) -> PageParam
                : optional attribute for the body element of the
                          page (more than one occurrence is allowed)
              The possible parameters of a cookie.
Constructors:
CookieExpire
                    ::  ClockTime -> CookieParam
              CookieDomain
                    ::  String -> CookieParam
              CookiePath
                    ::  String -> CookieParam
              CookieSecure
                    :: CookieParam
              | 
                       The default encoding used in generated HTML documents. 
 | 
| 
                       Internal identifier of a HtmlRef (intended only for internal use in other libraries!). 
 | 
| 
                       Transforms a dynamic HTML into a static one by dropping references and event handlers. | 
| 
                       Extracts the textual contents of a list of HTML expressions. For instance, textOf [BaseText "xy", BaseStruct "a" [] [BaseText "bc"]] == "xy bc" | 
| 
                       
                      Transforms a  
 | 
| 
                       
                      Transforms an IO action into a  
 | 
| 
                       A definition of a simple form which does not require session data. 
                      The unique identifier required for the implementation of forms
is added by the  | 
| 
                       A definition of a simple form, which does not require session data, with a unique identifier (usually, the qualified name of the operation defining the form). | 
| 
                       
                      A definition of a form which consists of a  
                      The unique identifier required for the implementation of forms
is added by the  
 | 
| 
                       
                      A definition of a form with a unique identifier (usually,
the qualified name of the operation defining the form).
A form contains a  
 | 
| 
                       Returns the identifier of a form definition. 
 | 
| 
                       
                      Sets the identifier of a form definition.
Only intended for internal use in the  
 | 
| 
                       
                      Returns the  
 | 
| 
                       Returns the view operation of a form definition. 
 | 
| 
                       Instantiates all HtmlRefs with a unique tag in HTML expressions. Only internally used. Parameters: HTML expressions, number for cgi-refs Result: translated HTML expressions, new number for cgi-refs 
 | 
| 
                       An encoding scheme for a HTML page. 
 | 
| 
                       A cookie to be sent to the client's browser when a HTML page is requested. 
 | 
| 
                       A URL for a CSS file for a HTML page. 
 | 
| 
                       
                      Meta information for a HTML page. The argument is a list of
attributes included in the  
 | 
| 
                       
                      Link information for a HTML page. The argument is a list of
attributes included in the  
 | 
| 
                       Optional attribute for the body element of the web page. More than one occurrence is allowed, i.e., all such attributes are collected. 
 | 
| 
                       A basic HTML web page with the default encoding. 
 
 
 
 | 
| 
                       A standard HTML web page where the title is included in the body as the first header. 
 
 
 | 
| 
                       Adds a parameter to an HTML page. 
 
 
 
 | 
| 
                       Adds simple cookie to an HTML page. The cookies are sent to the client's browser together with this page. 
 
 
 | 
| 
                       Adds a HTTP header to a HTML page. Headers are sent to the client's browser together with the page. 
 
 
 | 
| 
                       | 
| 
                       A textual result instead of an HTML page as a result for active web pages. 
 
 
 
 | 
| 
                       A textual result instead of an HTML page as a result for active web pages where the encoding is given as the first parameter. 
 
 
 
 | 
| 
                       
                      Generates a redirection page to a given URL.
This is implemented via the HTTP response header  
 
 | 
| 
                       Adds expire time to given HTML page. 
 
 | 
| Basic text as HTML expression. The text may contain special HTML chars (like <,>,&,") which will be quoted so that they appear as in the parameter string. | 
| 
                       A list of strings represented as a list of HTML expressions. The strings may contain special HTML chars that will be quoted. | 
| Unformatted input, i.e., keep spaces and line breaks and don't quote special characters. | 
| 
                       An anchored text with a hypertext reference inside a document. | 
| Unordered list. 
 
 | 
| 
                       An unordered list with classes for the entire list and the list elements. The class annotation will be ignored if it is empty. 
 
 | 
| 
                       An unordered list with classes for the entire list individual classes for the list elements. The class annotation will be ignored if it is empty. 
 
 | 
| Ordered list. 
 
 | 
| 
                       An ordered list with classes for the entire list and the list elements. The class annotation will be ignored if it is empty. 
 
 | 
| 
                       An ordered list with classes for the entire list individual classes for the list elements. The class annotation will be ignored if it is empty. 
 
 | 
| 
                       Description list 
 
 | 
| 
                       Table with a matrix of items where each item is a list of HTML expressions. | 
| 
                       Table with a matrix of items (each item is a list of HTML expressions) with classes for the entire table, each row, and each data element. The class annotation will be ignored if it is empty. 
 
 | 
| 
                       
                      Similar to  | 
| 
                       Image 
 
 | 
| 
                       Defines a style sheet to be used in this HTML document. 
 
 | 
| 
                       
                      Provides a style for HTML elements.
The style argument is the name of a style class defined in a
style definition (see  
 
 | 
| 
                       Provides a style for a basic text. The style argument is the name of a style class defined in an external style sheet. 
 
 | 
| 
                       Provides a style for a block of HTML elements. The style argument is the name of a style class defined in an external style sheet. This element is used (in contrast to "style") for larger blocks of HTML elements since a line break is placed before and after these elements. 
 
 | 
| Joins a list of HTML elements into a single HTML element. Although this construction has no rendering, it is sometimes useful for programming when several HTML elements must be put together. 
 
 | 
| Joins a list of HTML elements into a block. A line break is placed before and after these elements. 
 
 | 
| 
                       
                      A form embedded in an HTML expression.
The parameter is a form defined as an exported top-level operation
in the CGI program so that it can be accessed by the main program.
The URL of the generated form is the same as the main page, i.e.,
the current URL parameter is passed to the form (which is
useful for REST-based programming with URL parameters).
The form uses a hidden field named  Since form elements can not be nested, see HTML, the form element itself is a static HTML expression. | 
| 
                       A button to submit a form with a label string and an event handler. | 
| 
                       Reset button with a label string | 
| 
                       Submit button in form of an imag. 
 
 | 
| 
                       Input text field (where the entered text is obscured) with a reference | 
| 
                       Input text area with a reference, height/width, and initial contents | 
| 
                       A checkbox with a reference and a value. The value is returned if checkbox is on, otherwise "" is returned. | 
| 
                       A checkbox that is initially checked with a reference and a value. The value is returned if checkbox is on, otherwise "" is returned. | 
| 
                       A main button of a radio (initially "on") with a reference and a value. The value is returned of this button is on. A complete radio button suite always consists of a main button (radiomain) and some further buttons (radioothers) with the same reference. Initially, the main button is selected (or nothing is selected if one uses radiomainoff instead of radio_main). The user can select another button but always at most one button of the radio can be selected. The value corresponding to the selected button is returned in the environment for this radio reference. | 
| 
                       A main button of a radio (initially "off") with a reference and a value. The value is returned of this button is on. | 
| 
                       A further button of a radio (initially "off") with a reference (identical to the main button of this radio) and a value. The value is returned of this button is on. | 
| 
                       A selection button with a reference and a list of name/value pairs. The names are shown in the selection and the value is returned for the selected name. | 
| 
                       A selection button with a reference, a list of name/value pairs, and a preselected item in this list. The names are shown in the selection and the value is returned for the selected name. 
 
 
 | 
| 
                       
                      A selection button with a reference and a list of name/value/flag pairs.
The names are shown in the selection and the value is returned
if the corresponding name is selected. If flag is True, the
corresonding name is initially selected. If more than one name
has been selected, all values are returned in one string
where the values are separated by newline ( | 
| 
                       
                      Quotes special characters ( | 
| 
                       Translates umlauts in iso-8859-1 encoding into HTML special characters. | 
| 
                       Adds an attribute (name/value pair) to an HTML element. 
 | 
| 
                       Adds a list of attributes (name/value pair) to an HTML element. 
 | 
| 
                       Adds a class attribute to an HTML element (if the class attribute is not empty). 
 | 
| 
                       Transforms a list of HTML expressions into string representation. | 
| 
                       Transforms a single HTML expression into string representation. | 
| 
                       Transforms HTML page into string representation. 
 
 
 | 
| 
                       Standard header for generated HTML pages. 
 | 
| 
                       Standard attributes for element "html". 
 | 
| 
                       Gets the parameter attached to the URL of the script. For instance, if the script is called with URL "http://.../script.cgi?parameter", then "parameter" is returned by this I/O action. Note that an URL parameter should be "URL encoded" to avoid the appearance of characters with a special meaning. Use the functions "urlencoded2string" and "string2urlencoded" to decode and encode such parameters, respectively. | 
| 
                       Translates an URL encoded string into equivalent ASCII string. | 
| 
                       Translates arbitrary strings into equivalent URL encoded strings. | 
| 
                       Gets the cookies sent from the browser for the current CGI script. The cookies are represented in the form of name/value pairs since no other components are important here. | 
| 
                       For image buttons: retrieve the coordinates where the user clicked within the image. |