<?xml version="1.0" encoding="us-ascii"?>
<spec w3c-doctype="wd" role="public">
<?command-options --map Copyright-Notice copyright-notice
--map Introduction     introduction
--map TOC              expanded-toc
--map Core             core
--map Events           events
--map idl              idl-definitions
--map ecma-binding     ecma-script-binding
--map java-binding     java-binding
--map Index            def-index
--map Objects          object-index
--map References       references
--map Errors           errors
--map Level-3-AS       abstract-schemas
--map Load-Save        load-save
--map XPath            xpath
--map KeySet           keyset
?>
<?command-options --map -IndexFile-       def-index
--map -OjbectIndexFile- object-index
--strip-references
--strip-glossary
?>
<?command-options --map-type ECMAScript void void
--map-type ECMAScript "unsigned short" Number
--map-type ECMAScript "unsigned int" Number
--map-type ECMAScript "unsigned long" Number
--map-type ECMAScript short Number
--map-type ECMAScript long Number
--map-type ECMAScript float Number
--map-type ECMAScript double Number
--map-type ECMAScript boolean Boolean
--map-type ECMAScript Object Object
--map-type ECMAScript DOMString String
--map-type ECMAScript DOMTimeStamp Number
--map-type ECMAScript DOMObject Object
--map-type ECMAScript DOMUserData "any type"
--map-type ECMAScript LSInputStream Object
--map-type ECMAScript LSOutputStream Object
--map-type ECMAScript LSReader "this is an error and shouldn't be used."
--map-type ECMAScript LSWriter "this is an error and shouldn't be used."
--map-type ECMAScript DOMSystemException Object

--map-type Java void void
--map-type Java Object Object
--map-type Java DOMString String
--map-type Java "unsigned short" short
--map-type Java "unsigned int" int
--map-type Java "unsigned long" int
--map-type Java long int
--map-type Java short short
--map-type Java float float
--map-type Java double double
--map-type Java boolean boolean
--map-type Java DOMTimeStamp long
--map-type Java DOMObject Object
--map-type Java DOMUserData Object
--map-type Java LSInputStream java.io.InputStream
--map-type Java LSOutputStream java.io.OutputStream
--map-type Java LSReader java.io.Reader
--map-type Java LSWriter java.io.Writer
--map-type Java DOMSystemException Exception
?>
 <header>
  <title>
   Document Object Model (DOM) Level 3 Events Specification
  </title>

  <version>
   1.0
  </version>

  <w3c-designation>WD-DOM-Level-3-Events-20060413</w3c-designation>

  <w3c-doctype>W3C Working Draft</w3c-doctype>

  <pubdate>
   <day>13</day>

   <month>April</month>

   <year>2006</year>
  </pubdate>

  <publoc>
   <loc href="http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413</loc>
  </publoc>

  <altlocs>
   <loc role="html" href="http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/xml-source.xml" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">XML
   file</loc>
   <loc role="postscript" href="http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/DOM3-Events.ps" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">PostScript
   file</loc>
   <loc role="pdf" href="http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/DOM3-Events.pdf" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">PDF
   file</loc>
   <loc role="html" href="http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/DOM3-Events.html" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">single
   HTML file</loc>
   <loc role="zip" href="http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/DOM3-Events.zip" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">ZIP
   file</loc>
  </altlocs>

  <latestloc>
   <loc href="http://www.w3.org/TR/DOM-Level-3-Events" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/TR/DOM-Level-3-Events</loc>
  </latestloc>

  <prevlocs>
   <loc href="http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/</loc>
  </prevlocs>

  <authlist>
   <author role="editor">
    <name>Bj&#246;rn H&#246;hrmann</name>

    <email href="mailto:bjoern@hoehrmann.de" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">bjoern@hoehrmann.de</email>
   </author>

   <author role="editor">
    <name>Philippe Le H&#233;garet</name>

    <affiliation>W3C (until November 2003)</affiliation>
   </author>

   <author role="editor">
    <name>Tom Pixley</name>

    <affiliation>Netscape Communications Corporation (until July 2002)</affiliation>
   </author>
  </authlist>

  <abstract id="id-abstract">
   <p>
    This specification defines the Document Object Model Events Level 3,
    a generic platform- and language-neutral event system which allows
    registration of event handlers, describes event flow through a tree
    structure, and provides basic contextual information for each event.
    The Document Object Model Events Level 3 builds on the Document
    Object Model Events Level 2
    <bibref role="normative" ref="DOM2Events"></bibref>.
   </p>
  </abstract>

  <status id="Level-3-status">
   <p>
    <emph>This section describes the status of this document at the time
    of its publication. Other documents may supersede this document. A
    list of current W3C publications and the latest revision of this
    technical report can be found in the
    <loc href="http://www.w3.org/TR/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">W3C
    technical reports index</loc> at http://www.w3.org/TR/. </emph>
   </p>

   <p>
    This document is the 13 April 2006
    <loc href="http://www.w3.org/2005/10/Process-20051014/tr.html#RecsWD" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Working
    Draft</loc> of the DOM Level 3 Events specification. This document
    has been produced by the
    <loc href="http://www.w3.org/2006/webapi/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Web
    API Working Group</loc>, part of the
    <loc href="http://www.w3.org/2006/rwc/Activity" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Rich
    Web Clients Activity</loc> in the
    <loc href="http://www.w3.org/Interaction/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Interaction
    Domain</loc>. The previous version of this document was a
    <loc href="http://www.w3.org/2005/10/Process-20051014/tr.html#WGNote" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Working
    Group Note</loc> published by the
    <loc href="http://www.w3.org/DOM/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">DOM
    Working Group</loc> in November 2003. This version moves the
    specification back onto the W3C Recommendation Track.
   </p>

   <p>
    Feedback on this document is welcome and comments should be sent to
    the
    <loc href="http://lists.w3.org/Archives/Public/public-webapi/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">publicly
    archived</loc> mailing list
    <loc href="mailto:public-webapi@w3.org" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">public-webapi@w3.org</loc>
    (see
    <loc href="http://www.w3.org/Mail/Request" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">instructions</loc>).
    Please send a separate mail for each issue and use the prefix
    'DOM3EV:' in the subject. For more information refer to the
    <loc href="http://www.w3.org/2006/webapi/track/products/2" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">list
    of open issues</loc> under consideration by the Working Group and
    <loc href="changes.html#Changes" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Appendix
    B: Changes</loc>.
   </p>

   <p>
    Publication as a Working Draft does not imply endorsement by the W3C
    Membership. This is a draft document and may be updated, replaced or
    obsoleted by other documents at any time. It is inappropriate to
    cite this document as other than work in progress.
   </p>

   <p>
    This document was produced by a group operating under the
    <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">5
    February 2004 W3C Patent Policy</loc>. W3C maintains a
    <loc role="disclosure" href="http://www.w3.org/2004/01/pp-impl/38482/status" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">public
    list of any patent disclosures</loc> made in connection with the
    deliverables of the group; that page also includes instructions for
    disclosing a patent. An individual who has actual knowledge of a
    patent which the individual believes contains
    <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Essential
    Claim(s)</loc> must disclose the information in accordance with
    <loc href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">section
    6 of the W3C Patent Policy</loc>.
   </p>
  </status>

  <sourcedesc>
   <p>
    Created in electronic form.
   </p>
  </sourcedesc>

  <langusage>
   <language id="en">English</language>
  </langusage>

  <revisiondesc>
   <p>
    $Revision: 1.2 $
   </p>
  </revisiondesc>
<?GENERATE-TOC?>
 </header>

 <front>
  <div1 id="TOC">
   <head>
    Expanded Table of Contents
   </head>
<?GENERATE-EXPANDED-TOC?>
  </div1>

  <div1 id="Copyright-Notice">
   <head>
    W3C Copyright Notices and Licenses
   </head>

   <p role="important">
    Copyright &#169; 2006
    <loc href="http://www.w3.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">World
    Wide Web Consortium</loc>,
    (<loc href="http://www.lcs.mit.edu/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Massachusetts
    Institute of Technology</loc>,
    <loc href="http://www.ercim.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">European
    Research Consortium for Informatics and Mathematics</loc>,
    <loc href="http://www.keio.ac.jp/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Keio
    University</loc>). All Rights Reserved.
   </p>

   <p>
    This document is published under the
    <specref ref="Copyright-notice-document"></specref>. The bindings
    within this document are published under the
    <specref ref="Copyright-notice-software"></specref>. The software
    license requires "Notice of any changes or modifications to the W3C
    files, including the date changes were made." Consequently, modified
    versions of the DOM bindings must document that they do not conform
    to the W3C standard; in the case of the IDL definitions, the pragma
    prefix can no longer be 'w3c.org'; in the case of the Java language
    binding, the package names can no longer be in the 'org.w3c'
    package.
   </p>

   <div2 id="Copyright-notice-document">
    <head>
     W3C<sup>&#174;</sup> Document Copyright Notice and License
    </head>

    <note>
     <p>
      This section is a copy of the W3C<sup>&#174;</sup> Document Notice
      and License and could be found at
      <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231</loc>.
     </p>
    </note>

    <p role="important">
     Copyright &#169; 2006
     <loc href="http://www.w3.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">World
     Wide Web Consortium</loc>,
     (<loc href="http://www.lcs.mit.edu/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Massachusetts
     Institute of Technology</loc>,
     <loc href="http://www.ercim.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">European
     Research Consortium for Informatics and Mathematics</loc>,
     <loc href="http://www.keio.ac.jp/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Keio
     University</loc>). All Rights Reserved.
    </p>

    <p role="important">
     http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231
    </p>

    <p>
     Public documents on the W3C site are provided by the copyright
     holders under the following license. By using and/or copying this
     document, or the W3C document from which this statement is linked,
     you (the licensee) agree that you have read, understood, and will
     comply with the following terms and conditions:
    </p>

    <p>
     Permission to copy, and distribute the contents of this document,
     or the W3C document from which this statement is linked, in any
     medium for any purpose and without fee or royalty is hereby
     granted, provided that you include the following on
     <emph>ALL</emph> copies of the document, or portions thereof, that
     you use:
    </p>

    <olist>
     <item>
      <p>
       A link or URL to the original W3C document.
      </p>
     </item>

     <item>
      <p>
       The pre-existing copyright notice of the original author, or if
       it doesn't exist, a notice (hypertext is preferred, but a textual
       representation is permitted) of the form: "Copyright &#169;
       [$date-of-document]
       <loc href="http://www.w3.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">World
       Wide Web Consortium</loc>,
       (<loc href="http://www.lcs.mit.edu/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Massachusetts
       Institute of Technology</loc>,
       <loc href="http://www.ercim.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">European
       Research Consortium for Informatics and Mathematics</loc>,
       <loc href="http://www.keio.ac.jp/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Keio
       University</loc>). All Rights Reserved.
       <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231</loc>"
      </p>
     </item>

     <item>
      <p>
       <emph>If it exists</emph>, the STATUS of the W3C document.
      </p>
     </item>
    </olist>

    <p>
     When space permits, inclusion of the full text of this
     <emph role="important">NOTICE</emph> should be provided. We request
     that authorship attribution be provided in any software, documents,
     or other items or products that you create pursuant to the
     implementation of the contents of this document, or any portion
     thereof.
    </p>

    <p>
     No right to create modifications or derivatives of W3C documents is
     granted pursuant to this license. However, if additional
     requirements (documented in the
     <loc href="http://www.w3.org/Consortium/Legal/IPR-FAQ" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Copyright
     FAQ</loc>) are satisfied, the right to create modifications or
     derivatives is sometimes granted by the W3C to individuals
     complying with those requirements.
    </p>

    <p>
     THIS DOCUMENT IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO
     REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT
     NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
     PARTICULAR PURPOSE, NON-INFRINGEMENT, OR TITLE; THAT THE CONTENTS
     OF THE DOCUMENT ARE SUITABLE FOR ANY PURPOSE; NOR THAT THE
     IMPLEMENTATION OF SUCH CONTENTS WILL NOT INFRINGE ANY THIRD PARTY
     PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
    </p>

    <p>
     COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
     SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
     DOCUMENT OR THE PERFORMANCE OR IMPLEMENTATION OF THE CONTENTS
     THEREOF.
    </p>

    <p>
     The name and trademarks of copyright holders may NOT be used in
     advertising or publicity pertaining to this document or its
     contents without specific, written prior permission. Title to
     copyright in this document will at all times remain with copyright
     holders.
    </p>
   </div2>

   <div2 id="Copyright-notice-software">
    <head>
     W3C<sup>&#174;</sup> Software Copyright Notice and License
    </head>

    <note>
     <p>
      This section is a copy of the W3C<sup>&#174;</sup> Software
      Copyright Notice and License and could be found at
      <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231</loc>
     </p>
    </note>

    <p role="important">
     Copyright &#169; 2006
     <loc href="http://www.w3.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">World
     Wide Web Consortium</loc>,
     (<loc href="http://www.lcs.mit.edu/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Massachusetts
     Institute of Technology</loc>,
     <loc href="http://www.ercim.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">European
     Research Consortium for Informatics and Mathematics</loc>,
     <loc href="http://www.keio.ac.jp/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Keio
     University</loc>). All Rights Reserved.
    </p>

    <p role="important">
     http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
    </p>

    <p>
     This work (and included software, documentation such as READMEs, or
     other related items) is being provided by the copyright holders
     under the following license. By obtaining, using and/or copying
     this work, you (the licensee) agree that you have read, understood,
     and will comply with the following terms and conditions.
    </p>

    <p>
     Permission to copy, modify, and distribute this software and its
     documentation, with or without modification, for any purpose and
     without fee or royalty is hereby granted, provided that you include
     the following on ALL copies of the software and documentation or
     portions thereof, including modifications:
    </p>

    <olist>
     <item>
      <p>
       The full text of this NOTICE in a location viewable to users of
       the redistributed or derivative work.
      </p>
     </item>

     <item>
      <p>
       Any pre-existing intellectual property disclaimers, notices, or
       terms and conditions. If none exist, the
       <specref ref="Copyright-short-notice"></specref> should be
       included (hypertext is preferred, text is permitted) within the
       body of any redistributed or derivative code.
      </p>
     </item>

     <item>
      <p>
       Notice of any changes or modifications to the files, including
       the date changes were made. (We recommend you provide URIs to the
       location from which the code is derived.)
      </p>
     </item>
    </olist>

    <p>
     THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT
     HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED,
     INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
     FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE
     OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS,
     COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
    </p>

    <p>
     COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT,
     SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE
     SOFTWARE OR DOCUMENTATION.
    </p>

    <p>
     The name and trademarks of copyright holders may NOT be used in
     advertising or publicity pertaining to the software without
     specific, written prior permission. Title to copyright in this
     software and any associated documentation will at all times remain
     with copyright holders.
    </p>
   </div2>

   <div2 id="Copyright-short-notice">
    <head>
     W3C<sup>&#174;</sup> Short Software Notice
    </head>

    <note>
     <p>
      This section is a copy of the W3C<sup>&#174;</sup> Short Software
      Notice and could be found at
      <loc href="http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231</loc>
     </p>
    </note>

    <p role="important">
     Copyright &#169; 2006
     <loc href="http://www.w3.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">World
     Wide Web Consortium</loc>,
     (<loc href="http://www.lcs.mit.edu/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Massachusetts
     Institute of Technology</loc>,
     <loc href="http://www.ercim.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">European
     Research Consortium for Informatics and Mathematics</loc>,
     <loc href="http://www.keio.ac.jp/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Keio
     University</loc>). All Rights Reserved.
    </p>

    <p>
     Copyright &#169; [$date-of-software]
     <loc href="http://www.w3.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">World
     Wide Web Consortium</loc>,
     (<loc href="http://www.lcs.mit.edu/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Massachusetts
     Institute of Technology</loc>,
     <loc href="http://www.ercim.org/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">European
     Research Consortium for Informatics and Mathematics</loc>,
     <loc href="http://www.keio.ac.jp/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Keio
     University</loc>). All Rights Reserved. This work is distributed
     under the W3C<sup>&#174;</sup> Software License [1] in the hope
     that it will be useful, but WITHOUT ANY WARRANTY; without even the
     implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.
    </p>

    <p>
     [1]
     http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
    </p>
   </div2>
  </div1>
 </front>

 <body>
  <div1 id="Events">
   <head>
    Document Object Model Events
   </head>

   <orglist role="editors">
    <member>
     <name>Bj&#246;rn H&#246;hrmann</name>
    </member>

    <member>
     <name>Philippe Le H&#233;garet</name>

     <affiliation>W3C (until November 2003)</affiliation>
    </member>

    <member>
     <name>Tom Pixley</name>

     <affiliation>Netscape Communications Corporation (until July 2002)</affiliation>
    </member>
   </orglist>
<?GENERATE-MINI-TOC?>
   <div2 id="Events-overview">
    <head>
     Introduction
    </head>

    <p>
     DOM Events is designed with two main goals. The first goal is the
     design of an <termref def="dt-event">event</termref> system which
     allows registration of event listeners and describes event flow
     through a tree structure. Additionally, the specification will
     provide standard modules of events for user interface control and
     document mutation notifications, including defined contextual
     information for each of these event modules.
    </p>

    <p>
     The second goal of the DOM Events is to provide a common subset of
     the current event systems used in <termref def="dt-DOM-Level-0">DOM
     Level 0</termref> browsers. This is intended to foster
     interoperability of existing scripts and content. It is not
     expected that this goal will be met with full backwards
     compatibility. However, the specification attempts to achieve this
     when possible.
    </p>

    <p>
     The following sections of the specification define both the
     specification for the DOM Event Model and a number of conformant
     event modules designed for use within the model. The DOM Event
     Model consists of:
    </p>

    <ulist>
     <item>
      <p>
       The <specref ref="Events-flow"></specref>, which describe the
       flow of events in a tree-based structure.
      </p>
     </item>

     <item>
      <p>
       A set of interfaces to access contextual information on events
       and to register event listeners.
      </p>
     </item>
    </ulist>

    <div3 id="Events-flows">
     <head>
      Event flows
     </head>

     <p>
      This document specifies an event flow for tree-based structures:
      <specref ref="Events-flow"></specref>. While it is expected that
      HTML and XML applications will follow this event flow,
      applications might reuse the interfaces defined in this document
      for non tree-based structures. In that case, it is the
      responsibility of such applications to define their event flow and
      how it relates to the <specref ref="Events-flow"></specref>. An
      example of such use can be found in
      <bibref role="informative" ref="DOMLS"></bibref>.
     </p>
    </div3>

    <div3 id="Conformance">
     <head>
      Conformance
     </head>

     <p>
      An implementation is DOM Level 3 Events conformant if it supports
      the Core module defined in <bibref ref="DOM2Core"></bibref>, the
      <specref ref="Events-flow"></specref> and the interfaces with
      their associated semantics defined in
      <specref ref="Events-interface"></specref>. An implementation
      conforms to a DOM Level 3 Events module if it conforms to DOM
      Level 3 Events and the event types defined in the module. An
      implementation conforms to an event type if it conforms to its
      associated semantics and DOM interfaces. For example, an
      implementation conforms to the DOM Level 3 User Interface Events
      module (see
      <specref ref="Events-eventgroupings-uievents"></specref>) if it
      conforms to DOM Level 3 Events (i.e. implements all the basic
      interfaces), can generate the event types
      <termref def="event-DOMActivate">DOMActivate</termref>,
      <termref def="event-DOMFocusIn">DOMFocusIn</termref>,
      <termref def="event-DOMFocusOut">DOMFocusOut</termref>,
      <termref def="event-focus">focus</termref>, and
      <termref def="event-blur">blur</termref> accordingly to their
      semantics, supports the <code>UIEvent</code> interface, and
      conforms to the DOM Level 2 Core module.
     </p>

     <note>
      <p>
       An implementation which does not conform to an event module can
       still implement the DOM interfaces associated with it. The DOM
       application can then create an event object using the
       <code>DocumentEvent.createEvent()</code> method and dispatch an
       event type associated with this interface using the
       <code>EventTarget.dispatchEvent()</code> method.
      </p>
     </note>

     <p>
      A DOM application may use the <code>hasFeature(feature,
      version)</code> method of the <code>DOMImplementation</code>
      interface with parameter values <code>"Events"</code> and
      <code>"3.0"</code> (respectively) to determine whether or not DOM
      Level 3 Events is supported by the implementation. In order to
      fully support DOM Level 3 Events, an implementation must also
      support the "Core" feature defined in the DOM Level 2 Core
      specification <bibref ref="DOM2Core"></bibref> and use the
      <specref ref="Events-flow"></specref>. For additional information
      about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref ref="DOMCore"></bibref>. DOM Level 3 Events is built on
      top of DOM Level 2 Events <bibref ref="DOM2Events"></bibref>, i.e.
      a DOM Level 3 Events implementation where
      <code>hasFeature("Events", "3.0")</code> returns <code>true</code>
      must also return <code>true</code> when the <code>version</code>
      number is <code>"2.0"</code>, <code>""</code> or,
      <code>null</code>.
     </p>

     <p>
      Each event module describes its own feature string in the event
      module listing.
     </p>

     <note>
      <p>
       This specification is to be understood in the context of the DOM
       Level 3 Core specification <bibref ref="DOMCore"></bibref> and
       the general considerations for DOM implementations apply. For
       example, handling of <termref def="dt-namespaceURI">namespace
       URIs</termref> is discussed in
       <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#Namespaces-Considerations" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">XML
       Namespaces</xspecref>, and behavior in exceptional circumstances
       (such as when a <code>null</code> argument is passed when
       <code>null</code> was not expected) is discussed under
       <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-17189187" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">DOMException</xspecref>.
      </p>
     </note>
    </div3>
   </div2>

   <div2 id="Events-flow">
    <head>
     DOM event flow
    </head>

    <p>
     <termdef id="dt-event-flow" term="DOM event flow">
      The DOM event flow is the process through which the
      <termref def="dt-event">event</termref> originates from the DOM
      Events implementation and is dispatched into a tree.
     </termdef>
     Each event has an <termref def="dt-event-target">event
     target</termref>, a targeted node in the case of the DOM Event
     flow, toward which the event is dispatched by the DOM Events
     implementation.
    </p>

    <div3 id="Events-phases">
     <head>
      Phases
     </head>

     <p>
      The event is dispatched following a path from the root of the tree
      to this <termref def="dt-target-node">target node</termref>. It
      can then be handled locally at the target node level or from any
      target's ancestors higher in the tree. The event dispatching (also
      called event propagation) occurs in three phases and the following
      order:
     </p>

     <olist>
      <item>
       <p>
        The <termref def="dt-capture-phase">capture phase</termref>: the
        event is dispatched to the target's ancestors from the root of
        the tree to the direct parent of the
        <termref def="dt-target-node">target node</termref>.
       </p>
      </item>

      <item>
       <p>
        The <termref def="dt-target-phase">target phase</termref>: the
        event is dispatched to the <termref def="dt-target-node">target
        node</termref>.
       </p>
      </item>

      <item>
       <p>
        The <termref def="dt-bubbling-phase">bubbling phase</termref>:
        the event is dispatched to the target's ancestors from the
        direct parent of the <termref def="dt-target-node">target
        node</termref> to the root of the tree.
       </p>
      </item>
     </olist>

     <graphic source="images/eventflow.png" alt="graphical representation of an event dispatched in a DOM tree using the DOM event flow" xlink:actuate="onLoad" xlink:show="embed" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink"></graphic>

     <p>
      The target's ancestors are determined before the initial dispatch
      of the event. If the target node is removed during the
      dispatching, or a target's ancestor is added or removed, the event
      propagation will always be based on the target node and the
      target's ancestors determined before the dispatch.
     </p>

     <p>
      Some events may not necessarily accomplish the three phases of the
      DOM event flow, e.g. the event could only be defined for one or
      two phases. As an example, events defined in this specification
      will always accomplish the capture and target phases but some will
      not accomplish the bubbling phase ("bubbling events" versus
      "non-bubbling events", see also the <code>Event.bubbles</code>
      attribute).
     </p>
    </div3>

    <div3 id="Events-listeners">
     <head>
      Event listeners
     </head>

     <p>
      Each node encountered during the dispatch of the event may contain
      event listeners.
     </p>

     <div4 id="Events-listeners-registration">
      <head>
       Registration of event listeners
      </head>

      <p>
       Event listeners can be registered on all nodes in the tree for a
       specific type of event (<specref ref="Event-types"></specref>) or
       event category
       (<specref ref="Events-EventTypes-category"></specref>), phase,
       and group (<specref ref="Event-groups"></specref>).
      </p>

      <p>
       If the event listener is being registered on a node while an
       event gets processed on this node, the event listener will not be
       triggered during the current phase but may be triggered during a
       later phase in the event flow, i.e. the
       <termref def="dt-bubbling-phase">bubbling phase</termref>.
      </p>
     </div4>

     <div4 id="Event-groups">
      <head>
       Event groups
      </head>

      <p>
       An event listener is always part of a group. It is either
       explicitly in a group if a group has been specified at the
       registration or implicitly in the default group if no group has
       been specified. Within a group, event listeners are ordered in
       their order of registration. If two event listeners {A1, A2},
       which are part of the same group, are registered one after the
       other (A1, then A2) for the same phase, the DOM event flow
       guarantees their triggering order (A1, then A2). If the two
       listeners are not part of the same group, no specification is
       made as to the order in which they will be triggered.
      </p>

      <p>
       In general, a DOM application does not need to define and use a
       separate group unless other event listeners, external to the DOM
       application, may change the event propagation (e.g. from a
       concurrent DOM application, from imported functionalities that
       rely on the event system, etc.).
      </p>

      <note>
       <p>
        While this specification does not specify a full ordering (i.e.
        groups are still unordered), it does specify ordering within a
        group. This implies that if the event listeners {A1, A2, B1,
        B2}, with A and B being two different groups, are registered for
        the same phase in the order A1, A2, B1, and B2, the following
        triggering orders are possible and conform to the DOM event
        flow:
       </p>

       <ulist>
        <item>
         <p>
          {A1, A2, B1, B2}
         </p>
        </item>

        <item>
         <p>
          {A1, B1, A2, B2}
         </p>
        </item>

        <item>
         <p>
          {B1, A1, A2, B2}
         </p>
        </item>

        <item>
         <p>
          {A1, B1, B2, A2}
         </p>
        </item>

        <item>
         <p>
          {B1, A1, B2, A2}
         </p>
        </item>

        <item>
         <p>
          {B1, B2, A1, A2}
         </p>
        </item>
       </ulist>

       <p>
        DOM Events implementations may impose priorities on groups but
        DOM applications must not rely on it. Unlike this specification,
        <bibref ref="DOM2Events"></bibref> did not specify any
        triggering order for event listeners.
       </p>
      </note>
     </div4>

     <div4 id="Events-listeners-activation">
      <head>
       Triggering an event listener
      </head>

      <p>
       When the event is dispatched through the tree, from node to node,
       event listeners registered on the node are triggered if the
       following three conditions are all met:
      </p>

      <olist>
       <item>
        <p>
         they were registered for the same type of event, or the same
         category.
        </p>
       </item>

       <item>
        <p>
         they were registered for the same phase;
        </p>
       </item>

       <item>
        <p>
         the event propagation has not been stopped for the group.
        </p>
       </item>
      </olist>
     </div4>

     <div4 id="Events-listeners-removal">
      <head>
       Removing an event listener
      </head>

      <p>
       If an event listener is removed from a node while an event is
       being processed on the node, it will not be triggered by the
       current actions. Once removed, the event listener is never
       invoked again (unless registered again for future processing).
      </p>
     </div4>

     <div4 id="Events-listeners-reentrance">
      <head>
       Reentrance
      </head>

      <p>
       It is expected that actions taken by an event listener may cause
       additional events to be dispatched. Additional events should be
       handled in a synchronous manner and may cause reentrance into the
       event model. If an event listener fires a new event using
       <code>EventTarget.dispatchEvent()</code>, the event propagation
       that causes the event listener to be triggered will resume only
       after the event propagation of the new event is completed.
      </p>

      <p>
       Since implementations may have restrictions such as stack-usage
       or other memory requirements, applications should not depend on
       how many synchronous events may be triggered.
      </p>
     </div4>

     <div4 id="Events-propagation-and-groups">
      <head>
       Event propagation and event groups
      </head>

      <p>
       All event listeners are part of a group (see
       <specref ref="Events-listeners-registration"></specref>). An
       event listener may prevent event listeners that are part of a
       same group from being triggered. The effect can be:
      </p>

      <ulist>
       <item>
        <p>
         immediate: no more event listeners from the same group will be
         triggered by the event object (see
         <code>Event.stopImmediatePropagation()</code>);
        </p>
       </item>

       <item>
        <p>
         deferred until all event listeners from the same group have
         been triggered on the current node, i.e. the event listeners of
         the same group attached on other nodes will not be triggered
         (see <code>Event.stopPropagation()</code>).
        </p>
       </item>
      </ulist>

      <p>
       If two event listeners are registered for two different groups,
       one cannot prevent the other from being triggered.
      </p>
     </div4>
    </div3>
   </div2>

   <div2 id="Events-flow-cancelation">
    <head>
     Default actions and cancelable events
    </head>

    <p>
     Implementations may have a default action associated with an event
     type. An example is the
     <bibref ref="HTML40" role="informative"></bibref> form element.
     When the user submits the form (e.g. by pressing on a submit
     button), the event <termref def="event-submit">submit</termref> is
     dispatched to the element and the default action for this event
     type is generally to send a request to a Web server with the
     parameters from the form.
    </p>

    <p>
     The default actions are not part of the DOM Event flow. Before
     invoking a default action, the implementation must first dispatch
     the event as described in the
     <specref ref="Events-flow"></specref>.
    </p>

    <p>
     <termdef id="dt-cancelable-event" term="cancelable event">
      A <term>cancelable event</term> is an event associated with a
      default action which is allowed to be canceled during the DOM
      event flow.
     </termdef>
     At any phase during the event flow, the triggered event listeners
     have the option of canceling the default action or allowing the
     default action to proceed. In the case of the hyperlink in the
     browser, canceling the action would have the result of not
     activating the hyperlink. Not all events defined in this
     specification are cancelable events. See also
     <specref ref="cancelable_keys"></specref>.
    </p>

    <p>
     Different implementations will specify their own default actions,
     if any, associated with each event. The DOM Events specification
     does not attempt to specify these actions.
    </p>

    <p>
     This specification does not provide mechanisms for accessing
     default actions or adding new ones.
    </p>

    <p>
     Implementations could react to an event before dispatching it and
     do changes on the display and the DOM tree. In such case, if a DOM
     attribute is changed before the event is fired, cancelling the
     device event type will also reverse the change. A good example is
     the attribute <code>HTMLInputElement.checked</code>: as described
     in <bibref role="informative" ref="DOM2HTML"></bibref>, the value
     of this property may be changed before the dispatch of the event;
     the user clicks on the radio button, the radio button is being
     checked (or unchecked) on the display, the attribute
     <code>HTMLInputElement.checked</code> is changed as well, and then
     the device event type <termref def="event-click">click</termref> is
     being dispatched. If the default action of the device event type is
     prevented, or if the default action attached to the
     <termref def="event-DOMActivate">DOMActivate</termref> event type
     is prevented, the property <code>HTMLInputElement.checked</code>
     will need to be changed back to its original value.
    </p>
   </div2>

   <div2 id="Events-flow-activation">
    <head>
     Activation requests and behavior
    </head>

    <p>
     Event targets may have associated <term>activation behavior</term>
     that implementations perform in response to an <term>activation
     request</term>. As an example, the typical activiation behavior
     associated with hyperlinks is to follow the link. Activation
     requests are typically initiated by users through an input device.
    </p>

    <p>
     In terms of this specification, the activation behavior of the
     event target is the default action of the event type
     <termref def="event-DOMActivate">DOMActivate</termref>. DOM
     applications should use this event type whenever they wish to make
     or react to an activation request.
    </p>

    <p>
     Implementations dispatch the <code>DOMActivate</code> event as
     default action of a <termref def="event-click">click</termref>
     event. This click event is either part of the activation request
     (e.g., a user requests activiation using a mouse), or synthesized
     by the implementation to accomodate legacy applications. Context
     information of such a <code>click</code> event is implementation
     dependent.
    </p>

    <p>
     When implementations dispatch a synthesized <code>click</code>
     event, the expectation is that they do so as default action of
     another event type. For example, when a user activates a hyperlink
     using a keyboard, the <code>click</code> event would be dispatched
     as default action of respective keyboard event.
    </p>

    <p>
     Implementations are, however, required to dispatch the synthesized
     <code>click</code> event as described above even if they do not
     dispatch such an event (e.g., when activation is requested by a
     voice command since this specification does not address event types
     for voice input).
    </p>

    <note>
     <p>
      The activation of an event target is device dependent but is also
      application dependent, e.g. a link in a document can be activated
      using a mouse click or a mouse double click.
     </p>
    </note>
   </div2>

   <div2 id="Event-types">
    <head>
     Event types
    </head>

    <p>
     Each event is associated with a type, called <term>event
     type</term>. The event type is composed of a
     <termref def="dt-localname">local name</termref> and a
     <termref def="dt-namespaceURI">namespace URI</termref> as used in
     <bibref ref="DOMCore"></bibref>. All events defined in this
     specification are in no namespace.
    </p>

    <div3 id="Events-EventTypes-category">
     <head>
      Event types and event categories
     </head>

     <p>
      An event type could be part of one or more categories. A category
      is represented using a <termref def="dt-localname">local
      name</termref> and a <termref def="dt-namespaceURI">namespace
      URI</termref> as defined in <bibref ref="Namespaces11"></bibref>.
      The event types defined in this specification are not associated
      with one or more event categories and this specification does not
      provide methods to associate them. Other specifications may create
      and associate event categories with event listeners but in such
      case would need to inform the dispatch mechanism of those event
      categories. An example of the use of categories is given at
      <specref ref="Events-registration-voicexmlevents"></specref>.
     </p>
    </div3>

    <div3 id="Events-EventTypes-complete">
     <head>
      Complete list of event types
     </head>

     <p>
      Depending on the level of DOM support, or the devices used for
      display (e.g. screen) or interaction (e.g., mouse, keyboard, touch
      screen, and voice), these event types can be generated by the
      implementation. When used with an
      <bibref ref="XML" role="informative"></bibref> or
      <bibref ref="HTML40" role="informative"></bibref> application, the
      specifications of those languages may restrict the semantics and
      scope (in particular the possible target nodes) associated with an
      event type. Refer to the specification defining the language used
      in order to find those restrictions or to find event types that
      are not defined in this document.
     </p>

     <p>
      The following table provides a non-normative summary of the event
      types defined in this specification. All event types are in no
      namespace and this specification refers to them by their local
      name only. All events will accomplish the capture and target
      phases, but not all of them will accomplish the bubbling phase
      (see also <specref ref="Events-flow"></specref>). Some events are
      not <termref def="dt-cancelable-event">cancelable</termref> (see
      <specref ref="Events-flow-cancelation"></specref>). Some events
      will only be dispatched to a specific set of possible targets,
      specified using node types. Contextual information related to the
      event type is accessible using DOM interfaces.
     </p>

     <table summary="This table contains the complete list of event types  defined by DOM Level 3 Events. The first column contains the  local name of the event type. The second column indicates if  the event accomplish the bubbling phase or not (all events  accomplish the capture and target phases). The third column  indicates if the default action associated with the event can be  canceled. The fourth column indicates the nodes that can be  target of the event. the fifth (and last) column indicates the  DOM interface implemented by the event object." cellpadding="0" cellspacing="0">
      <tbody>
       <tr>
        <th colspan="1" rowspan="1">
         type
        </th>

        <th colspan="1" rowspan="1">
         Bubbling phase
        </th>

        <th colspan="1" rowspan="1">
         Cancelable
        </th>

        <th colspan="1" rowspan="1">
         Target node types
        </th>

        <th colspan="1" rowspan="1">
         DOM interface
        </th>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMActivate">DOMActivate</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>UIEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMFocusIn">DOMFocusIn</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>UIEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMFocusOut">DOMFocusOut</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>UIEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-focus">focus</termref>
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>UIEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-blur">blur</termref>
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>UIEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-textInput">textInput</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>TextEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-click">click</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MouseEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-mousedown">mousedown</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MouseEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-mouseup">mouseup</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MouseEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-mouseover">mouseover</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MouseEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-mousemove">mousemove</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MouseEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-mouseout">mouseout</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MouseEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-keydown">keydown</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>KeyboardEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-keyup">keyup</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>KeyboardEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMSubtreeModified">DOMSubtreeModified</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Document</code>, <code>DocumentFragment</code>,
         <code>Element</code>, <code>Attr</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMNodeInserted">DOMNodeInserted</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
         <code>Comment</code>, <code>CDATASection</code>,
         <code>DocumentType</code>, <code>EntityReference</code>,
         <code>ProcessingInstruction</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMNodeRemoved">DOMNodeRemoved</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
         <code>Comment</code>, <code>CDATASection</code>,
         <code>DocumentType</code>, <code>EntityReference</code>,
         <code>ProcessingInstruction</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</termref>
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
         <code>Comment</code>, <code>CDATASection</code>,
         <code>DocumentType</code>, <code>EntityReference</code>,
         <code>ProcessingInstruction</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</termref>
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>, <code>Attr</code>, <code>Text</code>,
         <code>Comment</code>, <code>CDATASection</code>,
         <code>DocumentType</code>, <code>EntityReference</code>,
         <code>ProcessingInstruction</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMAttrModified">DOMAttrModified</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMCharacterDataModified">DOMCharacterDataModified</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Text</code>, <code>Comment</code>,
         <code>CDATASection</code>, <code>ProcessingInstruction</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMElementNameChanged">DOMElementNameChanged</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationNameEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-DOMAttributeNameChanged">DOMAttributeNameChanged</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>MutationNameEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-load">load</termref>
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Document</code>, <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-unload">unload</termref>
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Document</code>, <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-abort">abort</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-error">error</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-select">select</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-change">change</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-submit">submit</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-reset">reset</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>Event</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-resize">resize</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Document</code>, <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>UIEvent</code>
        </td>
       </tr>

       <tr>
        <td colspan="1" rowspan="1">
         <termref def="event-scroll">scroll</termref>
        </td>

        <td colspan="1" rowspan="1">
         Yes
        </td>

        <td colspan="1" rowspan="1">
         No
        </td>

        <td colspan="1" rowspan="1">
         <code>Document</code>, <code>Element</code>
        </td>

        <td colspan="1" rowspan="1">
         <code>UIEvent</code>
        </td>
       </tr>
      </tbody>
     </table>

     <p>
      As an example, the event <termref def="event-load">load</termref>
      will trigger event listeners attached on <code>Element</code>
      nodes for that event and on the capture and target phases. This
      event cannot be cancelled. If an event listener for the
      <termref def="event-load">load</termref> event is attached to a
      node other than <code>Document</code> or <code>Element</code>
      nodes, or if it is attached to the bubbling phase only, this event
      listener cannot be triggered.
     </p>

     <p>
      The event objects associated with the event types described above
      may contain context information. Refer to the description of the
      DOM interfaces for further information.
     </p>
    </div3>

    <div3 id="Events-dom2-compatibility">
     <head>
      Compatibility with DOM Level 2 Events
     </head>

     <p>
      <termref def="dt-namespaceURI">Namespace URIs</termref> were only
      introduced in DOM Level 3 Events and were not part of DOM Level 2
      Events. All event types in this specification are defined to be in
      no namespace, DOM Level 2 methods have been modified to refer to
      event types in no namespace when adding or removing event
      listeners and initializing event objects, and new methods have
      been added to provide equivalent functionality for event types in
      a namespace. A future draft of this document will provide
      guidelines on defining new event types.
     </p>

     <p>
      DOM Level 3 Events considers the <code>Event.type</code> attribute
      to be case-sensitive, while DOM Level 2 Events considers
      <code>Event.type</code> to be case-insensitive.
     </p>
    </div3>
   </div2>

   <div2 id="Events-registration">
    <head>
     Event listener registration
    </head>

    <note>
     <p>
      This section is non-normative.
     </p>
    </note>

    <p>
     There are mainly two ways to associate an event listener to a node
     in the tree:
    </p>

    <olist>
     <item>
      <p>
       at the programming level using the <code>EventTarget</code>
       methods.
      </p>
     </item>

     <item>
      <p>
       at the document level using
       <bibref role="informative" ref="XMLEvents"></bibref> or an ad-hoc
       syntax, as the ones provided in
       <bibref role="informative" ref="XHTML10"></bibref> or
       <bibref role="informative" ref="SVG1"></bibref>.
      </p>
     </item>
    </olist>

    <div3 id="Events-Registration-interfaces">
     <head>
      Using the <code>EventTarget</code> methods
     </head>

     <p>
      The user can attach an event listener using the methods on the
      <code>EventTarget</code> interface:
     </p>
<eg xml:space="preserve">aCircle.addEventListener("DOMActivate", aListener, false);</eg>
     <p>
      The methods do not provide the ability to register the same event
      listener more than once for the same event type and the same
      phase. It is not possible to register an event listener:
     </p>

     <ulist>
      <item>
       <p>
        for only one of the
        <termref def="dt-target-phase">target</termref> and
        <termref def="dt-bubbling-phase">bubbling</termref> phases since
        those phases are coupled during the registration (but the
        listener itself could ignore events during one of these phases
        if desired).
       </p>
      </item>

      <item>
       <p>
        for a specific event category.
       </p>
      </item>
     </ulist>

     <p>
      To register an event listener, DOM applications use the methods
      <code>EventTarget.addEventListener()</code> and
      <code>EventTarget.addEventListenerNS()</code>.
     </p>

     <p>
      An <code>EventListener</code> being registered on an
      <code>EventTarget</code> may choose to have that
      <code>EventListener</code> triggered during the capture phase by
      specifying the <code>useCapture</code> parameter of the
      <code>EventTarget.addEventListener()</code> or
      <code>EventTarget.addEventListenerNS()</code> methods to be
      <code>true</code>. If <code>false</code>, the
      <code>EventListener</code> will be triggered during the target and
      bubbling phases.
     </p>
    </div3>

    <div3 id="Events-registration-xmlevents">
     <head>
      Using XML Events
     </head>

     <p>
      In <bibref role="informative" ref="XMLEvents"></bibref>, event
      listeners are attached using elements and attributes:
     </p>
<eg xml:space="preserve">&lt;listener event="DOMActivate" observer="aCircle" handler="#aListener"
          phase="default" propagate="stop"/&gt;</eg>
     <p>
      Event listeners can only be registered on <code>Element</code>
      nodes, other <code>Node</code> types are not addressable, and
      cannot be registered for a specific group either, they are always
      attached to the default group. The
      <termref def="dt-target-phase">target phase</termref> and the
      <termref def="dt-bubbling-phase">bubbling phase</termref> are
      coupled during the registration.
      <bibref role="informative" ref="XMLEvents"></bibref> does not
      address namespaces in event types.
     </p>
    </div3>

    <div3 id="Events-registration-voicexmlevents">
     <head>
      Using VoiceXML Events
     </head>

     <p>
      In <bibref role="informative" ref="VoiceXML20"></bibref>, event
      listeners are attached using elements:
     </p>
<eg xml:space="preserve">&lt;form&gt;
  &lt;field&gt;
    &lt;prompt&gt;Please say something&lt;/prompt&gt;
    &lt;catch event="error.noauthorization"&gt;
     &lt;prompt&gt;You don't have the authorization!&lt;/prompt&gt;
    &lt;/catch&gt;
    &lt;catch event="connection.disconnect.hangup"&gt;
     &lt;prompt&gt;Connection error&lt;/prompt&gt;
    &lt;/catch&gt;
    &lt;catch event="connection.disconnect"&gt;
     &lt;prompt&gt;Connection error&lt;/prompt&gt;
    &lt;/catch&gt;
  &lt;/field&gt;
  &lt;catch event="error"&gt;
    &lt;prompt&gt;Unknown error&lt;/prompt&gt;
  &lt;/catch&gt;
&lt;/form&gt;</eg>
     <p>
      Event listeners can only be registered on <code>Element</code>
      nodes, other <code>Node</code> types are not addressable, and
      cannot be registered for a specific group either, they are always
      attached to the default group. The
      <termref def="dt-target-phase">target phase</termref> and the
      <termref def="dt-bubbling-phase">bubbling phase</termref> are
      coupled during the registration.
      <bibref role="informative" ref="VoiceXML20"></bibref> does not
      address namespaces in event types but uses the notion of event
      categories. The event type
      <code>"connection.disconnect.hangup"</code> could be associated to
      the event categories
      <code>{"http://www.example.org/2003/voicexml",
      "connection"}</code> and
      <code>{"http://www.example.org/2003/voicexml",
      "connection.disconnect"}</code>.
     </p>
    </div3>

    <div3 id="Events-registration-html40">
     <head>
      Using XML or HTML attributes
     </head>

     <p>
      In languages such as
      <bibref role="informative" ref="HTML40"></bibref>,
      <bibref role="informative" ref="XHTML10"></bibref>, or
      <bibref role="informative" ref="SVG1"></bibref>, event listeners
      are specified as attributes:
     </p>
<eg xml:space="preserve">&lt;circle id="aCircle" onactivate="aListener(evt)"
        cx="300" cy="225" r="100" fill="red"/&gt;</eg>
     <p>
      Since only one attribute with the same name can appear on an
      element, it is not possible to register more than one event
      listener on a single <code>EventTarget</code> for the event type.
      Also, event listeners can only be registered on
      <code>Element</code> nodes for the
      <termref def="dt-target-phase">target phase</termref> and
      <termref def="dt-bubbling-phase">bubbling phase</termref>, other
      <code>Node</code> types and the
      <termref def="dt-capture-phase">capture phase</termref> are not
      addressable with these languages. Event listeners cannot be
      registered for a specific group either, they are always attached
      to the default group.
     </p>
    </div3>
   </div2>

   <div2 id="Events-interface">
    <head>
     Basic interfaces
    </head>

    <p>
     The interfaces described in this section are fundamental to DOM
     Level 3 Events and must always be supported by the implementation.
    </p>

    <definitions>
     <interface name="Event" id="Events-Event" since="DOM Level 2">
      <descr>
       <p>
        The <code>Event</code> interface is used to provide contextual
        information about an event to the listener processing the event.
        An object which implements the <code>Event</code> interface is
        passed as the parameter to an <code>EventListener</code>. More
        specific context information is passed to event listeners by
        deriving additional interfaces from <code>Event</code> which
        contain information directly relating to the type of event they
        represent. These derived interfaces are also implemented by the
        object passed to the event listener.
       </p>

       <p>
        To create an instance of the <code>Event</code> interface, use
        the <code>DocumentEvent.createEvent("Event")</code> method call.
       </p>
      </descr>

      <group id="Events-Event-eventPhaseType" name="PhaseType">
       <descr>
        <p>
         An integer indicating which phase of the event flow is being
         processed as defined in <specref ref="Events-flow"></specref>.
        </p>
       </descr>

       <constant name="CAPTURING_PHASE" id="CAPTURING_PHASE" type="unsigned short" value="1">
        <descr>
         <p>
          The current event phase is the
          <termref def="dt-capture-phase">capture phase</termref>.
         </p>
        </descr>
       </constant>

       <constant name="AT_TARGET" id="AT_TARGET" type="unsigned short" value="2">
        <descr>
         <p>
          The current event is in the
          <termref def="dt-capture-phase">target phase</termref>, i.e.
          it is being evaluated at the
          <termref def="dt-event-target">event target</termref>.
         </p>
        </descr>
       </constant>

       <constant name="BUBBLING_PHASE" id="BUBBLING_PHASE" type="unsigned short" value="3">
        <descr>
         <p>
          The current event phase is the
          <termref def="dt-bubbling-phase">bubbling phase</termref>.
         </p>
        </descr>
       </constant>
      </group>

      <attribute type="DOMString" name="type" readonly="yes" id="Events-Event-type">
       <descr>
        <p>
         The <termref def="dt-localname">local name</termref> of the
         event type. The name must be an
         <loc href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#NT-NCName" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">NCName</loc>
         as defined in <bibref ref="Namespaces11"></bibref> and is
         case-sensitive.
        </p>
       </descr>
      </attribute>

      <attribute type="EventTarget" name="target" readonly="yes" id="Events-Event-target">
       <descr>
        <p>
         Used to indicate the <termref def="dt-event-target">event
         target</termref>. This attribute contains the
         <termref def="dt-target-node">target node</termref> when used
         with the <specref ref="Events-flow"></specref>.
        </p>
       </descr>
      </attribute>

      <attribute type="EventTarget" name="currentTarget" readonly="yes" id="Events-Event-currentTarget">
       <descr>
        <p>
         Used to indicate the <code>EventTarget</code> whose
         <code>EventListeners</code> are currently being processed. This
         is particularly useful during the capture and bubbling phases.
         This attribute could contain the
         <termref def="dt-target-node">target node</termref> or a target
         ancestor when used with the
         <specref ref="Events-flow"></specref>.
        </p>
       </descr>
      </attribute>

      <attribute type="unsigned short" name="eventPhase" readonly="yes" id="Events-Event-eventPhase">
       <descr>
        <p>
         Used to indicate which phase of event flow is currently being
         accomplished.
        </p>
       </descr>
      </attribute>

      <attribute type="boolean" name="bubbles" readonly="yes" id="Events-Event-canBubble">
       <descr>
        <p>
         Used to indicate whether or not an event is a bubbling event.
         If the event can bubble the value is <code>true</code>,
         otherwise the value is <code>false</code>.
        </p>
       </descr>
      </attribute>

      <attribute type="boolean" name="cancelable" readonly="yes" id="Events-Event-canCancel">
       <descr>
        <p>
         Used to indicate whether or not an event can have its default
         action prevented (see also
         <specref ref="Events-flow-cancelation"></specref>). If the
         default action can be prevented the value is <code>true</code>,
         otherwise the value is <code>false</code>.
        </p>
       </descr>
      </attribute>

      <attribute type="DOMTimeStamp" name="timeStamp" readonly="yes" id="Events-Event-timeStamp">
       <descr>
        <p>
         Used to specify the time at which the event was created in
         milliseconds relative to 1970-01-01T00:00:00Z. Due to the fact
         that some systems may not provide this information the value of
         <code>timeStamp</code> may be not available for all events.
         When not available, the value is <code>0</code>.
        </p>
       </descr>
      </attribute>

      <method name="stopPropagation" id="Events-Event-stopPropagation">
       <descr>
        <p>
         This method is used to prevent event listeners of the same
         group to be triggered but its effect is deferred until all
         event listeners attached on the
         <code>Event.currentTarget</code> have been triggered (see
         <specref ref="Events-propagation-and-groups"></specref>). Once
         it has been called, further calls to that method have no
         additional effect.
        </p>

        <note>
         <p>
          This method does not prevent the default action from being
          invoked; use <code>Event.preventDefault()</code> for that
          effect.
         </p>
        </note>
       </descr>

       <parameters></parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>

      <method name="preventDefault" id="Events-Event-preventDefault">
       <descr>
        <p>
         If an event is cancelable, the <code>preventDefault</code>
         method is used to signify that the event is to be canceled,
         meaning any default action normally taken by the implementation
         as a result of the event will not occur (see also
         <specref ref="Events-flow-cancelation"></specref>), and thus
         independently of event groups. Calling this method for a
         non-cancelable event has no effect.
        </p>

        <note>
         <p>
          This method does not stop the event propagation; use
          <code>Event.stopPropagation()</code> or
          <code>Event.stopImmediatePropagation()</code> for that effect.
         </p>
        </note>
       </descr>

       <parameters></parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>

      <method name="initEvent" id="Events-Event-initEvent">
       <descr>
        <p>
         The <code>initEvent</code> method is used to initialize the
         value of an <code>Event</code> created through the
         <code>DocumentEvent.createEvent</code> method. This method may
         only be called before the <code>Event</code> has been
         dispatched via the <code>EventTarget.dispatchEvent()</code>
         method. If the method is called several times before invoking
         <code>EventTarget.dispatchEvent</code>, only the final
         invocation takes precedence. This method has no effect if
         called after the event has been dispatched. If called from a
         subclass of the <code>Event</code> interface only the values
         specified in this method are modified, all other attributes are
         left unchanged.
        </p>

        <p>
         This method sets the <code>Event.type</code> attribute to
         <code>eventTypeArg</code>, and <code>Event.namespaceURI</code>
         to <code>null</code>. To initialize an event with a namespace
         URI, use the <code>Event.initEventNS()</code> method.
        </p>
       </descr>

       <parameters>
        <param name="eventTypeArg" type="DOMString" attr="in">
         <descr>
          <p>
           Specifies <code>Event.type</code>, the
           <termref def="dt-localname">local name</termref> of the event
           type.
          </p>
         </descr>
        </param>

        <param name="canBubbleArg" type="boolean" attr="in">
         <descr>
          <p>
           Specifies <code>Event.bubbles</code>. This parameter
           overrides the intrinsic bubbling behavior of the event.
          </p>
         </descr>
        </param>

        <param name="cancelableArg" type="boolean" attr="in">
         <descr>
          <p>
           Specifies <code>Event.cancelable</code>. This parameter
           overrides the intrinsic cancelable behavior of the event.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>

      <attribute readonly="yes" type="DOMString" name="namespaceURI" id="Events-Event-namespaceURI" since="DOM Level 3">
       <descr>
        <p>
         The <termref def="dt-namespaceURI">namespace URI</termref>
         associated with this event at creation time, or
         <code>null</code> if it is unspecified.
        </p>

        <p>
         For events initialized with a DOM Level 2 Events method, such
         as <code>Event.initEvent()</code>, this is always
         <code>null</code>.
        </p>
       </descr>
      </attribute>

      <method name="stopImmediatePropagation" id="Events-Event-stopImmediatePropagation" since="DOM Level 3">
       <descr>
        <p>
         This method is used to prevent event listeners of the same
         group to be triggered and, unlike
         <code>Event.stopPropagation()</code> its effect is immediate
         (see <specref ref="Events-propagation-and-groups"></specref>).
         Once it has been called, further calls to that method have no
         additional effect.
        </p>

        <note>
         <p>
          This method does not prevent the default action from being
          invoked; use <code>Event.preventDefault()</code> for that
          effect.
         </p>
        </note>
       </descr>

       <parameters></parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>

      <attribute type="boolean" name="defaultPrevented" id="Events-Event-defaultPrevented" readonly="yes" since="DOM Level 3">
       <descr>
        <p>
         Used to indicate whether <code>Event.preventDefault()</code>
         has been called for this event.
        </p>
       </descr>
      </attribute>

      <method name="initEventNS" id="Events-Event-initEventNS" since="DOM Level 3">
       <descr>
        <p>
         The <code>initEventNS</code> method is used to initialize the
         value of an <code>Event</code> object and has the same behavior
         as <code>Event.initEvent()</code>.
        </p>
       </descr>

       <parameters>
        <param name="namespaceURIArg" type="DOMString" attr="in">
         <descr>
          <p>
           Specifies <code>Event.namespaceURI</code>, the
           <termref def="dt-namespaceURI">namespace URI</termref>
           associated with this event, or <code>null</code> if no
           namespace.
          </p>
         </descr>
        </param>

        <param name="eventTypeArg" type="DOMString" attr="in">
         <descr>
          <p>
           Refer to the <code>Event.initEvent()</code> method for a
           description of this parameter.
          </p>
         </descr>
        </param>

        <param name="canBubbleArg" type="boolean" attr="in">
         <descr>
          <p>
           Refer to the <code>Event.initEvent()</code> method for a
           description of this parameter.
          </p>
         </descr>
        </param>

        <param name="cancelableArg" type="boolean" attr="in">
         <descr>
          <p>
           Refer to the <code>Event.initEvent()</code> method for a
           description of this parameter.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>
     </interface>

     <interface name="CustomEvent" inherits="Event" id="Events-CustomEvent" since="DOM Level 3">
      <descr>
       <p>
        The CustomEvent interface is the recommended interface for
        application-specific event types. Unlike the <code>Event</code>
        interface, it allows applications to provide contextual
        information about the event type. Application-specific event
        types should have an associated namespace to avoid clashes with
        future general-purpose event types.
       </p>

       <p>
        To create an instance of the <code>CustomEvent</code> interface,
        use the <code>DocumentEvent.createEvent("CustomEvent")</code>
        method call.
       </p>
      </descr>

      <attribute id="Events-CustomEvent-detail" name="detail" type="DOMObject" readonly="yes">
       <descr>
        <p>
         Specifies some detail information about the <code>Event</code>.
        </p>
       </descr>
      </attribute>

      <method name="initCustomEventNS" id="Events-Event-initCustomEventNS">
       <descr>
        <p>
         The <code>initCustomEventNS</code> method is used to initialize
         the value of a <code>CustomEvent</code> object and has the same
         behavior as <code>Event.initEventNS()</code>.
        </p>
       </descr>

       <parameters>
        <param name="namespaceURI" type="DOMString" attr="in">
         <descr>
          <p>
           Refer to the <code>Event.initEventNS()</code> method for a
           description of this parameter.
          </p>
         </descr>
        </param>

        <param name="typeArg" type="DOMString" attr="in">
         <descr>
          <p>
           Refer to the <code>Event.initEventNS()</code> method for a
           description of this parameter.
          </p>
         </descr>
        </param>

        <param name="canBubbleArg" type="boolean" attr="in">
         <descr>
          <p>
           Refer to the <code>Event.initEventNS()</code> method for a
           description of this parameter.
          </p>
         </descr>
        </param>

        <param name="cancelableArg" type="boolean" attr="in">
         <descr>
          <p>
           Refer to the <code>Event.initEventNS()</code> method for a
           description of this parameter.
          </p>
         </descr>
        </param>

        <param name="detailArg" type="DOMObject" attr="in">
         <descr>
          <p>
           Specifies <code>CustomEvent.detail</code>. This value may be
           <code>null</code>.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>
     </interface>

     <interface name="EventTarget" id="Events-EventTarget" since="DOM Level 2">
      <descr>
       <p>
        The <code>EventTarget</code> interface is implemented by all the
        objects which could be <termref def="dt-event-target">event
        targets</termref> in an implementation which supports the
        <specref ref="Events-flows"></specref>. The interface allows
        registration and removal of event listeners, and dispatch of
        events to an event target.
       </p>

       <p>
        When used with <specref ref="Events-flow"></specref>, this
        interface is implemented by all
        <termref def="dt-target-node">target nodes</termref> and target
        ancestors, i.e. all DOM <code>Nodes</code> of the tree support
        this interface when the implementation conforms to DOM Level 3
        Events and, therefore, this interface can be obtained by using
        binding-specific casting methods on an instance of the
        <code>Node</code> interface.
       </p>

       <p>
        Invoking <code>addEventListener</code> or
        <code>addEventListenerNS</code> repeatedly on the same
        <code>EventTarget</code> with the same values for the parameters
        <code>namespaceURI</code>, <code>type</code>,
        <code>listener</code>, and <code>useCapture</code> has no
        effect. Doing so does not cause the <code>EventListener</code>
        to be called more than once and does not cause a change in the
        triggering order. In order to register a listener for a
        different event group (<specref ref="Event-groups"></specref>)
        the previously registered listener has to be removed first.
       </p>
      </descr>

      <method name="addEventListener" id="Events-EventTarget-addEventListener">
       <descr>
        <p>
         This method allows the registration of an event listener in the
         default group and, depending on the <code>useCapture</code>
         parameter, on the capture phase of the DOM event flow or its
         target and bubbling phases. Invoking this method is equivalent
         to invoking <code>addEventListenerNS</code> with the same
         values for the parameters <code>type</code>,
         <code>listener</code>, and <code>useCapture</code>, and the
         value <code>null</code> for the parameters
         <code>namespaceURI</code> and <code>evtGroup</code>.
        </p>
       </descr>

       <parameters>
        <param name="type" type="DOMString" attr="in">
         <descr>
          <p>
           Specifies the <code>Event.type</code> associated with the
           event for which the user is registering.
          </p>
         </descr>
        </param>

        <param name="listener" type="EventListener" attr="in">
         <descr>
          <p>
           The <code>listener</code> parameter takes an object
           implemented by the user which implements the
           <code>EventListener</code> interface and contains the method
           to be called when the event occurs.
          </p>
         </descr>
        </param>

        <param name="useCapture" type="boolean" attr="in">
         <descr>
          <p>
           If true, <code>useCapture</code> indicates that the user
           wishes to add the event listener for the
           <termref def="dt-capture-phase">capture phase</termref> only,
           i.e. this event listener will not be triggered during the
           <termref def="dt-target-phase">target</termref> and
           <termref def="dt-bubbling-phase">bubbling</termref> phases.
           If <code>false</code>, the event listener will only be
           triggered during the target and bubbling phases.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>

      <method name="removeEventListener" id="Events-EventTarget-removeEventListener">
       <descr>
        <p>
         This method allows the removal of event listeners from the
         default group. Calling <code>removeEventListener</code> with
         arguments which do not identify any currently registered
         <code>EventListener</code> on the <code>EventTarget</code> has
         no effect. The <code>Event.namespaceURI</code> for which the
         user registered the event listener is implied and is
         <code>null</code>.
        </p>

        <note>
         <p>
          Event listeners registered for other event groups than the
          default group cannot be removed using this method; see
          <code>EventTarget.removeEventListenerNS()</code> for that
          effect.
         </p>
        </note>
       </descr>

       <parameters>
        <param name="type" type="DOMString" attr="in">
         <descr>
          <p>
           Specifies the <code>Event.type</code> for which the user
           registered the event listener.
          </p>
         </descr>
        </param>

        <param name="listener" type="EventListener" attr="in">
         <descr>
          <p>
           The <code>EventListener</code> to be removed.
          </p>
         </descr>
        </param>

        <param name="useCapture" type="boolean" attr="in">
         <descr>
          <p>
           Specifies whether the <code>EventListener</code> being
           removed was registered for the capture phase or not. If a
           listener was registered twice, once for the capture phase and
           once for the target and bubbling phases, each must be removed
           separately. Removal of an event listener registered for the
           capture phase does not affect the same event listener
           registered for the target and bubbling phases, and vice
           versa.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>

      <method name="dispatchEvent" id="Events-EventTarget-dispatchEvent" version="DOM Level 3">
       <descr>
        <p>
         This method allows the dispatch of events into the
         implementation's event model. The
         <termref def="dt-event-target">event target</termref> of the
         event is the <code>EventTarget</code> object on which
         <code>dispatchEvent</code> is called.
        </p>
       </descr>

       <parameters>
        <param name="evt" type="Event" attr="in">
         <descr>
          <p>
           The event to be dispatched.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="boolean">
        <descr>
         <p>
          Indicates whether any of the listeners which handled the event
          called <code>Event.preventDefault()</code>. If
          <code>Event.preventDefault()</code> was called the returned
          value is <code>false</code>, else it is <code>true</code>.
         </p>
        </descr>
       </returns>

       <raises>
        <exception name="EventException">
         <descr>
          <p>
           UNSPECIFIED_EVENT_TYPE_ERR: Raised if the
           <code>Event.type</code> was not specified by initializing the
           event before <code>dispatchEvent</code> was called.
           Specification of the <code>Event.type</code> as
           <code>null</code> or an empty string will also trigger this
           exception.
          </p>

          <p>
           DISPATCH_REQUEST_ERR: Raised if the <code>Event</code> object
           is already being dispatched.
          </p>
         </descr>
        </exception>

        <exception name="DOMException">
         <descr>
          <p>
           NOT_SUPPORTED_ERR: Raised if the <code>Event</code> object
           has not been created using
           <code>DocumentEvent.createEvent()</code>.
          </p>

          <p>
           INVALID_CHARACTER_ERR: Raised if <code>Event.type</code> is
           not an
           <xspecref href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#NT-NCName" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">NCName</xspecref>
           as defined in <bibref ref="Namespaces11"></bibref>.
          </p>
         </descr>
        </exception>
       </raises>
      </method>

      <method name="addEventListenerNS" id="Events-EventTargetGroup-addEventListenerNS" since="DOM Level 3">
       <descr>
        <p>
         This method allows the registration of an event listener in a
         specified group or the default group and, depending on the
         <code>useCapture</code> parameter, on the capture phase of the
         DOM event flow or its target and bubbling phases.
        </p>
       </descr>

       <parameters>
        <param name="namespaceURI" type="DOMString" attr="in">
         <descr>
          <p>
           Specifies the <code>Event.namespaceURI</code> associated with
           the event for which the user is registering.
          </p>
         </descr>
        </param>

        <param name="type" type="DOMString" attr="in">
         <descr>
          <p>
           Refer to the <code>EventTarget.addEventListener()</code>
           method for a description of this parameter.
          </p>
         </descr>
        </param>

        <param name="listener" type="EventListener" attr="in">
         <descr>
          <p>
           Refer to the <code>EventTarget.addEventListener()</code>
           method for a description of this parameter.
          </p>
         </descr>
        </param>

        <param name="useCapture" type="boolean" attr="in">
         <descr>
          <p>
           Refer to the <code>EventTarget.addEventListener()</code>
           method for a description of this parameter.
          </p>
         </descr>
        </param>

        <param name="evtGroup" type="DOMObject" attr="in">
         <descr>
          <p>
           The object that represents the event group to associate with
           the <code>EventListener</code> (see also
           <specref ref="Events-propagation-and-groups"></specref>). Use
           <code>null</code> to attach the event listener to the default
           group.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr></descr>
       </returns>

       <raises></raises>
      </method>

      <method name="removeEventListenerNS" id="Events-EventTargetGroup-removeEventListenerNS" since="DOM Level 3">
       <descr>
        <p>
         This method allows the removal of an event listener,
         independently of the associated event group. Calling
         <code>removeEventListenerNS</code> with arguments which do not
         identify any currently registered <code>EventListener</code> on
         the <code>EventTarget</code> has no effect.
        </p>
       </descr>

       <parameters>
        <param name="namespaceURI" type="DOMString" attr="in">
         <descr>
          <p>
           Specifies the <code>Event.namespaceURI</code> associated with
           the event for which the user registered the event listener.
          </p>
         </descr>
        </param>

        <param name="type" type="DOMString" attr="in">
         <descr>
          <p>
           Refer to the <code>EventTarget.removeEventListener()</code>
           method for a description of this parameter.
          </p>
         </descr>
        </param>

        <param name="listener" type="EventListener" attr="in">
         <descr>
          <p>
           Refer to the <code>EventTarget.removeEventListener()</code>
           method for a description of this parameter.
          </p>
         </descr>
        </param>

        <param name="useCapture" type="boolean" attr="in">
         <descr>
          <p>
           Refer to the <code>EventTarget.removeEventListener()</code>
           method for a description of this parameter.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>
     </interface>

     <interface id="Events-EventListener" name="EventListener" since="DOM Level 2" role="ecmascript-function">
      <descr>
       <p>
        The <code>EventListener</code> interface is the primary way for
        handling events. Users implement the <code>EventListener</code>
        interface and register their event listener on an
        <code>EventTarget</code>. The users should also remove their
        <code>EventListener</code> from its <code>EventTarget</code>
        after they have completed using the listener.
       </p>

       <p>
        Copying a <code>Node</code>, with methods such as
        <code>Node.cloneNode</code> or <code>Range.cloneContents</code>,
        does not copy the event listeners attached to it. Event
        listeners must be attached to the newly created
        <code>Node</code> afterwards if so desired.
       </p>

       <p>
        Moving a <code>Node</code>, with methods
        <code>Document.adoptNode</code>, <code>Node.appendChild</code>,
        or <code>Range.extractContents</code>, does not affect the event
        listeners attached to it.
       </p>
      </descr>

      <method name="handleEvent" id="Events-EventListener-handleEvent">
       <descr>
        <p>
         This method is called whenever an event occurs of the event
         type for which the <code>EventListener</code> interface was
         registered.
        </p>
       </descr>

       <parameters>
        <param name="evt" type="Event" attr="in">
         <descr>
          <p>
           The <code>Event</code> contains contextual information about
           the <termref def="dt-event">event</termref>.
          </p>
         </descr>
        </param>
       </parameters>

       <returns type="void">
        <descr>
         <p></p>
        </descr>
       </returns>

       <raises></raises>
      </method>
     </interface>

     <exception id="Events-EventException" name="EventException" since="DOM Level 2">
      <descr>
       <p>
        Event operations may throw an <code>EventException</code> as
        specified in their method descriptions.
       </p>
      </descr>

      <component id="Events-EventException-code" name="code">
       <typename>unsigned short</typename>
      </component>
     </exception>

     <group id="Events-EventException-EventExceptionCode" name="EventExceptionCode" since="DOM Level 2">
      <descr>
       <p>
        An integer indicating the type of error generated.
       </p>
      </descr>

      <constant name="UNSPECIFIED_EVENT_TYPE_ERR" id="UNSPECIFIED_EVENT_TYPE_ERR" type="unsigned short" value="0">
       <descr>
        <p>
         If the <code>Event.type</code> was not specified by
         initializing the event before the method was called.
         Specification of the <code>Event.type</code> as
         <code>null</code> or an empty string will also trigger this
         exception.
        </p>
       </descr>
      </constant>

      <constant name="DISPATCH_REQUEST_ERR" id="DISPATCH_REQUEST_ERR" type="unsigned short" value="1" since="DOM Level 3">
       <descr>
        <p>
         If the <code>Event</code> object is already dispatched in the
         tree.
        </p>
       </descr>
      </constant>
     </group>
    </definitions>

    <div3 id="Events-document">
     <head>
      Event creation
     </head>

     <p>
      In most cases, the events dispatched by the DOM Events
      implementation are also created by the implementation. It is
      however possible to simulate events such as mouse events by
      creating the <code>Event</code> objects and dispatch them using
      the DOM Events implementation.
     </p>

     <p>
      Creating <code>Event</code> objects that are known to the DOM
      Events implementation is done using
      <code>DocumentEvent.createEvent()</code>. The application must
      then initialize the object by calling the appropriate
      initialization method before invoking
      <code>EventTarget.dispatchEvent()</code>. The <code>Event</code>
      objects created must be known by the DOM Events implementation;
      otherwise an event exception is thrown.
     </p>

     <definitions>
      <interface name="DocumentEvent" id="Events-DocumentEvent" since="DOM Level 2">
       <descr>
        <p>
         The <code>DocumentEvent</code> interface provides a mechanism
         by which the user can create an <code>Event</code> object of a
         type supported by the implementation. If the feature "Events"
         is supported by the <code>Document</code> object, the
         <code>DocumentEvent</code> interface must be implemented on the
         same object. If the feature "+Events" is supported by the
         <code>Document</code> object, an object that supports the
         <code>DocumentEvent</code> interface must be returned by
         invoking the method <code>Node.getFeature("+Events",
         "3.0")</code> on the <code>Document</code> object.
        </p>
       </descr>

       <method name="createEvent" id="Events-DocumentEvent-createEvent">
        <descr>
         <p></p>
        </descr>

        <parameters>
         <param name="eventType" type="DOMString" attr="in">
          <descr>
           <p>
            The <code>eventType</code> parameter specifies the name of
            the DOM Events interface to be supported by the created
            event object, e.g. <code>"Event"</code>,
            <code>"MouseEvent"</code>, <code>"MutationEvent"</code> and
            so on. If the <code>Event</code> is to be dispatched via the
            <code>EventTarget.dispatchEvent()</code> method the
            appropriate event init method must be called after creation
            in order to initialize the <code>Event</code>'s values.
           </p>

           <p>
            As an example, a user wishing to synthesize some kind of
            <code>UIEvent</code> would invoke
            <code>DocumentEvent.createEvent("UIEvent")</code>. The
            <code>UIEvent.initUIEventNS()</code> method could then be
            called on the newly created <code>UIEvent</code> object to
            set the specific type of user interface event to be
            dispatched,
            <termref def="event-DOMActivate">DOMActivate</termref> for
            example, and set its context information, e.g.
            <code>UIEvent.detail</code> in this example.
           </p>

           <note>
            <p>
             For backward compatibility reason, "UIEvents",
             "MouseEvents", "MutationEvents", and "HTMLEvents" feature
             names are valid values for the parameter
             <code>eventType</code> and represent respectively the
             interfaces "UIEvent", "MouseEvent", "MutationEvent", and
             "Event".
            </p>
           </note>
          </descr>
         </param>
        </parameters>

        <returns type="Event">
         <descr>
          <p>
           The newly created event object.
          </p>
         </descr>
        </returns>

        <raises>
         <exception name="DOMException">
          <descr>
           <p>
            NOT_SUPPORTED_ERR: Raised if the implementation does not
            support the <code>Event</code> interface requested.
           </p>
          </descr>
         </exception>
        </raises>
       </method>

       <method name="canDispatch" id="Events-DocumentEvent-canDispatch" since="DOM Level 3">
        <descr>
         <p>
          Test if the implementation can generate events of a specified
          type.
         </p>
        </descr>

        <parameters>
         <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies the <code>Event.namespaceURI</code> of the event.
           </p>
          </descr>
         </param>

         <param name="type" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies the <code>Event.type</code> of the event.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="boolean">
         <descr>
          <p>
           <code>true</code> if the implementation can generate and
           dispatch this event type, <code>false</code> otherwise.
          </p>
         </descr>
        </returns>

        <raises></raises>
       </method>
      </interface>
     </definitions>
    </div3>
   </div2>

   <div2 id="Events-eventgroupings">
    <head>
     Event module definitions
    </head>

    <p>
     The DOM Event Model allows a DOM implementation to support multiple
     modules of events. The model has been designed to allow addition of
     new event modules if required. The DOM will not attempt to define
     all possible events. For purposes of interoperability, the DOM
     defines a module of user interface events including lower level
     device dependent events and a module of document mutation events.
    </p>

    <div3 id="Events-eventgroupings-uievents">
     <head>
      User Interface event types
     </head>

     <p>
      The User Interface event module contains basic event types
      associated with user interfaces.
     </p>

     <definitions>
      <interface name="UIEvent" inherits="Event" id="Events-UIEvent" since="DOM Level 2">
       <descr>
        <p>
         The <code>UIEvent</code> interface provides specific contextual
         information associated with User Interface events.
        </p>

        <p>
         To create an instance of the <code>UIEvent</code> interface,
         use the <code>DocumentEvent.createEvent("UIEvent")</code>
         method call.
        </p>
       </descr>

       <attribute type="views::AbstractView" name="view" readonly="yes" id="Events-UIEvent-view">
        <descr>
         <p>
          The <code>view</code> attribute identifies the
          <code>AbstractView</code> from which the event was generated.
         </p>
        </descr>
       </attribute>

       <attribute id="Events-UIEvent-detail" name="detail" type="long" readonly="yes">
        <descr>
         <p>
          Specifies some detail information about the
          <code>Event</code>, depending on the type of event.
         </p>
        </descr>
       </attribute>

       <method name="initUIEvent" id="Events-Event-initUIEvent">
        <descr>
         <p>
          The <code>initUIEvent</code> method is used to initialize the
          value of a <code>UIEvent</code> object and has the same
          behavior as <code>Event.initEvent()</code>.
         </p>
        </descr>

        <parameters>
         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Specifies <code>UIEvent.view</code>. This value may be
            <code>null</code>.
           </p>
          </descr>
         </param>

         <param name="detailArg" type="long" attr="in">
          <descr>
           <p>
            Specifies <code>UIEvent.detail</code>.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>

       <method name="initUIEventNS" id="Events-Event-initUIEventNS" since="DOM Level 3">
        <descr>
         <p>
          The <code>initUIEventNS</code> method is used to initialize
          the value of a <code>UIEvent</code> object and has the same
          behavior as <code>Event.initEventNS()</code>.
         </p>
        </descr>

        <parameters>
         <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="detailArg" type="long" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>
      </interface>
     </definitions>

     <p>
      The User Interface event types are listed below. A DOM application
      may use the <code>hasFeature(feature, version)</code> method of
      the <code>DOMImplementation</code> interface with parameter values
      <code>"UIEvents"</code> and <code>"3.0"</code> (respectively) to
      determine whether or not the DOM Level 3 User Interface event
      module are supported by the implementation. In order to fully
      support this module, an implementation must also support the
      <code>"Events"</code> feature defined in this specification and
      the <code>"Views"</code> feature defined in the DOM Level 2 Views
      specification <bibref ref="DOM2Views"></bibref>. For additional
      information about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref role="informative" ref="DOMCore"></bibref>. The DOM Level
      3 User Interface Events module is built on top of the DOM Level 2
      User Interface Events <bibref ref="DOM2Events"></bibref> module,
      i.e. a DOM Level 3 User Interface Events implementation where
      <code>hasFeature("UIEvents", "3.0")</code> returns
      <code>true</code> must also return <code>true</code> when the
      <code>version</code> number is <code>"2.0"</code>, <code>""</code>
      or, <code>null</code>.
     </p>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMActivate"><termref def="event-DOMActivate">DOMActivate</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMActivate</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> is in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         Refer to <specref ref="Events-flow-activation"></specref>.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMFocusIn"><termref def="event-DOMFocusIn">DOMFocusIn</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMFocusIn</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>http://www.w3.org/2001/xml-events</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> is in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         An <termref def="dt-event-target">event target</termref>
         receives focus. The focus is given to the element before the
         dispatch of this event type. This event type is dispatched
         after the event type
         <termref def="event-focus">focus</termref>.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMFocusOut"><termref def="event-DOMFocusOut">DOMFocusOut</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMFocusOut</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>http://www.w3.org/2001/xml-events</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            Element
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> is in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         An <termref def="dt-event-target">event target</termref> loses
         focus. The focus is taken from the element before the dispatch
         of this event type. This event type is dispatched after the
         event type <termref def="event-blur">blur</termref>.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-focus"><termref def="event-focus">focus</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>focus</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> is in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         An <termref def="dt-event-target">event target</termref>
         receives focus. The focus is given to the element before the
         dispatch of this event type.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-blur"><termref def="event-blur">blur</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>blur</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> is in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         An <termref def="dt-event-target">event target</termref> loses
         focus. The focus is taken from the element before the dispatch
         of this event type.
        </p>
       </def>
      </gitem>
     </glist>
    </div3>

    <div3 id="Events-TextEvents-Interfaces">
     <head>
      Text events types
     </head>

     <p>
      The text event module originates from the
      <bibref ref="HTML40" role="informative"></bibref>
      <code>onkeypress</code> attribute. Unlike this attribute, the
      event type <termref def="event-textInput">textInput</termref>
      applies only to characters and is designed for use with any text
      input devices, not just keyboards. Refer to Appendix A,
      "<specref ref="KeySet"></specref>", for examples on how text
      events are used in combination with keyboard events.
     </p>

     <definitions>
      <interface name="TextEvent" inherits="UIEvent" id="Events-TextEvent" since="DOM Level 3">
       <descr>
        <p>
         The <code>TextEvent</code> interface provides specific
         contextual information associated with Text Events.
        </p>

        <p>
         To create an instance of the <code>TextEvent</code> interface,
         use the <code>DocumentEvent.createEvent("TextEvent")</code>
         method call.
        </p>
       </descr>

       <attribute type="DOMString" name="data" id="Events-UIEvent-data" readonly="yes">
        <descr>
         <p>
          <code>data</code> holds the value of the characters generated
          by the character device. This may be a single Unicode
          character or a non-empty sequence of Unicode characters
          <bibref ref="Unicode"></bibref>. Characters should be
          normalized as defined by the Unicode normalization form
          <term>NFC</term>, defined in
          <bibref ref="UnicodeNormalization"></bibref>. This attribute
          cannot be null or contain the empty string.
         </p>
        </descr>
       </attribute>

       <method name="initTextEvent" id="Events-Event-initTextEvent">
        <descr>
         <p>
          The <code>initTextEvent</code> method is used to initialize
          the value of a <code>TextEvent</code> object and has the same
          behavior as <code>UIEvent.initUIEvent()</code>. The value of
          <code>UIEvent.detail</code> remains undefined.
         </p>
        </descr>

        <parameters>
         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="dataArg" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies <code>TextEvent.data</code>.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr></descr>
        </returns>

        <raises></raises>
       </method>

       <method name="initTextEventNS" id="Events-Event-initTextEventNS">
        <descr>
         <p>
          The <code>initTextEventNS</code> method is used to initialize
          the value of a <code>TextEvent</code> object and has the same
          behavior as <code>UIEvent.initUIEventNS()</code>. The value of
          <code>UIEvent.detail</code> remains undefined.
         </p>
        </descr>

        <parameters>
         <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="type" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="dataArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>TextEvent.initTextEvent()</code> method
            for a description of this parameter.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr></descr>
        </returns>

        <raises></raises>
       </method>
      </interface>
     </definitions>

     <p>
      The text event type is listed below. A DOM application may use the
      <code>hasFeature(feature, version)</code> method of the
      <code>DOMImplementation</code> interface with parameter values
      <code>"TextEvents"</code> and <code>"3.0"</code> (respectively) to
      determine whether or not the Text event module is supported by the
      implementation. In order to fully support this module, an
      implementation must also support the <code>"UIEvents"</code>
      feature defined in this specification. For additional information
      about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref role="informative" ref="DOMCore"></bibref>.
     </p>

     <glist role="event-definition">
      <gitem>
       <label id="event-textInput"><termref def="event-textInput">textInput</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>textInput</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>TextEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> and <code>TextEvent.data</code>
            are in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         One or more characters have been entered. The characters can
         originate from a variety of sources. For example, it could be
         characters resulting from a key being pressed or released on a
         keyboard device, characters resulting from the processing of an
         <termref def="dt-ime">input method editor</termref>, or
         resulting from a voice command. Where a "paste" operation
         generates a simple sequence of characters, i.e. a text without
         any structure or style information, this event type should be
         generated as well.
        </p>
       </def>
      </gitem>
     </glist>
    </div3>

    <div3 id="Events-eventgroupings-mouseevents">
     <head>
      Mouse event types
     </head>

     <p>
      The Mouse event module originates from the
      <bibref ref="HTML40" role="informative"></bibref>
      <code>onclick</code>, <code>ondblclick</code>,
      <code>onmousedown</code>, <code>onmouseup</code>,
      <code>onmouseover</code>, <code>onmousemove</code>, and
      <code>onmouseout</code> attributes. This event module is
      specifically designed for use with pointing input devices, such as
      a mouse or a trackball.
     </p>

     <definitions>
      <interface name="MouseEvent" inherits="UIEvent" id="Events-MouseEvent" since="DOM Level 2">
       <descr>
        <p>
         The <code>MouseEvent</code> interface provides specific
         contextual information associated with Mouse events.
        </p>

        <p>
         In the case of nested elements mouse events are always targeted
         at the most deeply nested element. Ancestors of the targeted
         element may use bubbling to obtain notification of mouse events
         which occur within theirs descendent elements.
        </p>

        <p>
         To create an instance of the <code>MouseEvent</code> interface,
         use the <code>DocumentEvent.createEvent("MouseEvent")</code>
         method call.
        </p>

        <note>
         <p>
          When initializing <code>MouseEvent</code> objects using
          <code>initMouseEvent</code> or <code>initMouseEventNS</code>,
          implementations should use the client coordinates
          <code>clientX</code> and <code>clientY</code> for calculation
          of other coordinates (such as target coordinates exposed by
          <termref def="dt-DOM-Level-0">DOM Level 0</termref>
          implementations).
         </p>
        </note>
       </descr>

       <attribute type="long" name="screenX" readonly="yes" id="Events-MouseEvent-screenX">
        <descr>
         <p>
          The horizontal coordinate at which the event occurred relative
          to the origin of the screen coordinate system.
         </p>
        </descr>
       </attribute>

       <attribute type="long" name="screenY" readonly="yes" id="Events-MouseEvent-screenY">
        <descr>
         <p>
          The vertical coordinate at which the event occurred relative
          to the origin of the screen coordinate system.
         </p>
        </descr>
       </attribute>

       <attribute type="long" name="clientX" readonly="yes" id="Events-MouseEvent-clientX">
        <descr>
         <p>
          The horizontal coordinate at which the event occurred relative
          to the DOM implementation's client area.
         </p>
        </descr>
       </attribute>

       <attribute type="long" name="clientY" readonly="yes" id="Events-MouseEvent-clientY">
        <descr>
         <p>
          The vertical coordinate at which the event occurred relative
          to the DOM implementation's client area.
         </p>
        </descr>
       </attribute>

       <attribute type="boolean" name="ctrlKey" readonly="yes" id="Events-MouseEvent-ctrlKey">
        <descr>
         <p>
          <code>true</code> if the control (Ctrl) key modifier is
          activated.
         </p>
        </descr>
       </attribute>

       <attribute type="boolean" name="shiftKey" readonly="yes" id="Events-MouseEvent-shiftKey">
        <descr>
         <p>
          <code>true</code> if the shift (Shift) key modifier is
          activated.
         </p>
        </descr>
       </attribute>

       <attribute type="boolean" name="altKey" readonly="yes" id="Events-MouseEvent-altKey">
        <descr>
         <p>
          <code>true</code> if the alt (alternative) key modifier is
          activated.
         </p>

         <note>
          <p>
           The Option key modifier on Macintosh systems must be
           represented using this key modifier.
          </p>
         </note>
        </descr>
       </attribute>

       <attribute type="boolean" name="metaKey" readonly="yes" id="Events-MouseEvent-metaKey">
        <descr>
         <p>
          <code>true</code> if the meta (Meta) key modifier is
          activated.
         </p>

         <note>
          <p>
           The Command key modifier on Macintosh system must be
           represented using this meta key.
          </p>
         </note>
        </descr>
       </attribute>

       <attribute type="unsigned short" name="button" readonly="yes" id="Events-MouseEvent-button">
        <descr>
         <p>
          During mouse events caused by the depression or release of a
          mouse button, <code>button</code> is used to indicate which
          mouse button changed state. <code>0</code> indicates the
          normal button of the mouse (in general on the left or the one
          button on Macintosh mice, used to activate a button or select
          text). <code>2</code> indicates the contextual property (in
          general on the right, used to display a context menu) button
          of the mouse if present. <code>1</code> indicates the extra
          (in general in the middle and often combined with the mouse
          wheel) button. Some mice may provide or simulate more buttons,
          and values higher than <code>2</code> can be used to represent
          such buttons.
         </p>
        </descr>
       </attribute>

       <attribute type="EventTarget" name="relatedTarget" readonly="yes" id="Events-MouseEvent-relatedTarget">
        <descr>
         <p>
          Used to identify a secondary <code>EventTarget</code> related
          to a UI event, depending on the type of event.
         </p>
        </descr>
       </attribute>

       <method name="initMouseEvent" id="Events-Event-initMouseEvent">
        <descr>
         <p>
          The <code>initMouseEvent</code> method is used to initialize
          the value of a <code>MouseEvent</code> object and has the same
          behavior as <code>UIEvent.initUIEvent()</code>.
         </p>
        </descr>

        <parameters>
         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="detailArg" type="long" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="screenXArg" type="long" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.screenX</code>.
           </p>
          </descr>
         </param>

         <param name="screenYArg" type="long" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.screenY</code>.
           </p>
          </descr>
         </param>

         <param name="clientXArg" type="long" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.clientX</code>.
           </p>
          </descr>
         </param>

         <param name="clientYArg" type="long" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.clientY</code>.
           </p>
          </descr>
         </param>

         <param name="ctrlKeyArg" type="boolean" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.ctrlKey</code>.
           </p>
          </descr>
         </param>

         <param name="altKeyArg" type="boolean" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.altKey</code>.
           </p>
          </descr>
         </param>

         <param name="shiftKeyArg" type="boolean" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.shiftKey</code>.
           </p>
          </descr>
         </param>

         <param name="metaKeyArg" type="boolean" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.metaKey</code>.
           </p>
          </descr>
         </param>

         <param name="buttonArg" type="unsigned short" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.button</code>.
           </p>
          </descr>
         </param>

         <param name="relatedTargetArg" type="EventTarget" attr="in">
          <descr>
           <p>
            Specifies <code>MouseEvent.relatedTarget</code>. This value
            may be <code>null</code>.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>

       <method id="Events-MouseEvent-getModifierState" name="getModifierState" since="DOM Level 3">
        <descr>
         <p>
          This methods queries the state of a modifier using a key
          identifier. See also <specref ref="Modifiers"></specref>.
         </p>
        </descr>

        <parameters>
         <param name="keyIdentifierArg" type="DOMString" attr="in">
          <descr>
           <p>
            A modifier key identifier, as defined by the
            <code>KeyboardEvent.keyIdentifier</code> attribute. Common
            modifier keys are <code>"Alt"</code>,
            <code>"AltGraph"</code>, <code>"CapsLock"</code>,
            <code>"Control"</code>, <code>"Meta"</code>,
            <code>"NumLock"</code>, <code>"Scroll"</code>, or
            <code>"Shift"</code>.
           </p>

           <note>
            <p>
             If an application wishes to distinguish between right and
             left modifiers, this information could be deduced using
             keyboard events and <code>KeyboardEvent.keyLocation</code>.
            </p>
           </note>
          </descr>
         </param>
        </parameters>

        <returns type="boolean">
         <descr>
          <p>
           <code>true</code> if it is modifier key and the modifier is
           activated, <code>false</code> otherwise.
          </p>
         </descr>
        </returns>

        <raises></raises>
       </method>

       <method name="initMouseEventNS" id="Events-Event-initMouseEventNS" since="DOM Level 3">
        <descr>
         <p>
          The <code>initMouseEventNS</code> method is used to initialize
          the value of a <code>MouseEvent</code> object and has the same
          behavior as <code>UIEvent.initUIEventNS()</code>.
         </p>
        </descr>

        <parameters>
         <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="detailArg" type="long" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="screenXArg" type="long" attr="in">
          <descr>
           <p>
            Refer to the <code>MouseEvent.initMouseEvent()</code> method
            for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="screenYArg" type="long" attr="in">
          <descr>
           <p>
            Refer to the <code>MouseEvent.initMouseEvent()</code> method
            for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="clientXArg" type="long" attr="in">
          <descr>
           <p>
            Refer to the <code>MouseEvent.initMouseEvent()</code> method
            for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="clientYArg" type="long" attr="in">
          <descr>
           <p>
            Refer to the <code>MouseEvent.initMouseEvent()</code> method
            for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="buttonArg" type="unsigned short" attr="in">
          <descr>
           <p>
            Refer to the <code>MouseEvent.initMouseEvent()</code> method
            for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="relatedTargetArg" type="EventTarget" attr="in">
          <descr>
           <p>
            Refer to the <code>MouseEvent.initMouseEvent()</code> method
            for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="modifiersList" type="DOMString" attr="in">
          <descr>
           <p>
            A
            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">white
            space</xspecref> separated list of modifier key identifiers
            to be activated on this object. As an example,
            <code>"Control Alt"</code> will activated the control and
            alt modifiers.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>
      </interface>
     </definitions>

     <p>
      The Mouse event types are listed below. In the case of nested
      elements, mouse event types are always targeted at the most deeply
      nested element. Ancestors of the targeted element may use bubbling
      to obtain notification of mouse events which occur within its
      descendent elements.
     </p>

     <p>
      A DOM application may use the <code>hasFeature(feature,
      version)</code> method of the <code>DOMImplementation</code>
      interface with parameter values <code>"MouseEvents"</code> and
      <code>"3.0"</code> (respectively) to determine whether or not the
      Mouse event module is supported by the implementation. In order to
      fully support this module, an implementation must also support the
      "UIEvents" feature defined in this specification. For additional
      information about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref role="informative" ref="DOMCore"></bibref>. The DOM Level
      3 Mouse Events module is built on top of the DOM Level 2 Mouse
      Events <bibref ref="DOM2Events"></bibref> module, i.e. a DOM Level
      3 Mouse Events implementation where
      <code>hasFeature("MouseEvents", "3.0")</code> returns
      <code>true</code> must also return <code>true</code> when the
      <code>version</code> number is <code>"2.0"</code>, <code>""</code>
      or, <code>null</code>.
     </p>

     <glist role="event-definition">
      <gitem>
       <label id="event-click"><termref def="event-click">click</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>click</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent.screenX</code>,
            <code>MouseEvent.screenY</code>,
            <code>MouseEvent.clientX</code>,
            <code>MouseEvent.clientY</code>,
            <code>MouseEvent.altKey</code>,
            <code>MouseEvent.ctrlKey</code>,
            <code>MouseEvent.shiftKey</code>,
            <code>MouseEvent.metaKey</code>,
            <code>MouseEvent.button</code>, and
            <code>UIEvent.view</code> are in use. The
            <code>UIEvent.detail</code> attribute indicates the number
            of consecutive clicks of a pointing device button during a
            user action. The attribute value is <code>1</code> when the
            user begins this action and increments by <code>1</code> for
            each click. The notion of consecutive clicks depends on the
            environment configuration. For example, a "double click"
            will not happen if there is a long delay between the two
            clicks, even if the pointing device did not move.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A pointing device button is clicked over an element. The
         definition of a click depends on the environment configuration;
         i.e. may depend on the screen location or the delay between the
         press and release of the pointing device button. In any case,
         the target node must be the same between the
         <termref def="event-mousedown">mousedown</termref>,
         <termref def="event-mouseup">mouseup</termref>, and
         <termref def="event-click">click</termref>. The sequence of
         these events is:
         <termref def="event-mousedown">mousedown</termref>,
         <termref def="event-mouseup">mouseup</termref>, and
         <termref def="event-click">click</termref>. It depends on the
         environment configuration whether the event type
         <termref def="event-click">click</termref> can occur if one or
         more of the event types
         <termref def="event-mouseover">mouseover</termref>,
         <termref def="event-mousemove">mousemove</termref>, and
         <termref def="event-mouseout">mouseout</termref> occur between
         the press and release of the pointing device button. In the
         case of nested elements, this event type is always targeted at
         the most deeply nested element. In addition, the event type is
         dispatched as described in
         <specref ref="Events-flow-activation"></specref>.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-mousedown"><termref def="event-mousedown">mousedown</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>mousedown</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent.screenX</code>,
            <code>MouseEvent.screenY</code>,
            <code>MouseEvent.clientX</code>,
            <code>MouseEvent.clientY</code>,
            <code>MouseEvent.altKey</code>,
            <code>MouseEvent.ctrlKey</code>,
            <code>MouseEvent.shiftKey</code>,
            <code>MouseEvent.metaKey</code>,
            <code>MouseEvent.button</code>, and
            <code>UIEvent.view</code> are in use. The
            <code>UIEvent.detail</code> attribute indicates the number
            of consecutive clicks, incremented by one, of a pointing
            device button during a user action. For example, if no click
            happened before the mousedown, <code>UIEvent.detail</code>
            will contain the value <code>1</code>.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A pointing device button is pressed over an element. In the
         case of nested elements, this event type is always targeted at
         the most deeply nested element.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-mouseup"><termref def="event-mouseup">mouseup</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>mouseup</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent.screenX</code>,
            <code>MouseEvent.screenY</code>,
            <code>MouseEvent.clientX</code>,
            <code>MouseEvent.clientY</code>,
            <code>MouseEvent.altKey</code>,
            <code>MouseEvent.ctrlKey</code>,
            <code>MouseEvent.shiftKey</code>,
            <code>MouseEvent.metaKey</code>,
            <code>MouseEvent.button</code>, and
            <code>UIEvent.view</code> are in use. The
            <code>UIEvent.detail</code> attribute indicates the number
            of consecutive clicks, incremented by one, of a pointing
            device button during a user action.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A pointing device button is released over an element. In the
         case of nested elements, this event type is always targeted at
         the most deeply nested element.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-mouseover"><termref def="event-mouseover">mouseover</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>mouseover</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent.screenX</code>,
            <code>MouseEvent.screenY</code>,
            <code>MouseEvent.clientX</code>,
            <code>MouseEvent.clientY</code>,
            <code>MouseEvent.altKey</code>,
            <code>MouseEvent.ctrlKey</code>,
            <code>MouseEvent.shiftKey</code>,
            <code>MouseEvent.metaKey</code>, and
            <code>UIEvent.view</code> are in use.
            <code>MouseEvent.relatedTarget</code> indicates the
            <termref def="dt-event-target">event target</termref> a
            pointing device is exiting, if any.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A pointing device is moved onto an element. In the case of
         nested elements, this event type is always targeted at the most
         deeply nested element.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-mousemove"><termref def="event-mousemove">mousemove</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>mousemove</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent.screenX</code>,
            <code>MouseEvent.screenY</code>,
            <code>MouseEvent.clientX</code>,
            <code>MouseEvent.clientY</code>,
            <code>MouseEvent.altKey</code>,
            <code>MouseEvent.ctrlKey</code>,
            <code>MouseEvent.shiftKey</code>,
            <code>MouseEvent.metaKey</code>, and
            <code>UIEvent.view</code> are in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A pointing device is moved while it is over an element. In the
         case of nested elements, this event type is always targeted at
         the most deeply nested element.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-mouseout"><termref def="event-mouseout">mouseout</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>mouseout</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MouseEvent.screenX</code>,
            <code>MouseEvent.screenY</code>,
            <code>MouseEvent.clientX</code>,
            <code>MouseEvent.clientY</code>,
            <code>MouseEvent.altKey</code>,
            <code>MouseEvent.ctrlKey</code>,
            <code>MouseEvent.shiftKey</code>,
            <code>MouseEvent.metaKey</code>, and
            <code>UIEvent.view</code> are in use.
            <code>MouseEvent.relatedTarget</code> indicates the
            <termref def="dt-event-target">event target</termref> a
            pointing device is entering, if any.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A pointing device is moved away from an element. In the case of
         nested elements, this event type is always targeted at the most
         deeply nested element.
        </p>
       </def>
      </gitem>
     </glist>

     <p>
      As an example, a "double click" on a mouse device will produce the
      following events (the value of <code>UIEvent.detail</code> is
      indicated in parenthesis):
     </p>

     <olist>
      <item>
       <p>
        <code>"mousedown"</code> (<code>1</code>)
       </p>
      </item>

      <item>
       <p>
        <code>"mouseup"</code> (<code>1</code>)
       </p>
      </item>

      <item>
       <p>
        <code>"click"</code> (<code>1</code>)
       </p>
      </item>

      <item>
       <p>
        <code>"mousedown"</code> (<code>2</code>)
       </p>
      </item>

      <item>
       <p>
        <code>"mouseup"</code> (<code>2</code>)
       </p>
      </item>

      <item>
       <p>
        <code>"click"</code> (<code>2</code>)
       </p>
      </item>
     </olist>
    </div3>

    <div3 id="Events-KeyboardEvents-Interfaces">
     <head>
      Keyboard event types
     </head>

     <p>
      Keyboard events are device dependent, i.e. they rely on the
      capabilities of the input devices and how they are mapped in the
      operating systems. It is therefore highly recommended to rely on
      <specref ref="Events-TextEvent"></specref> when dealing with
      character input.
     </p>

     <definitions>
      <interface name="KeyboardEvent" inherits="UIEvent" id="Events-KeyboardEvent" since="DOM Level 3">
       <descr>
        <p>
         The <code>KeyboardEvent</code> interface provides specific
         contextual information associated with keyboard devices. Each
         keyboard event references a key using an identifier. Keyboard
         events are commonly directed at the element that has the focus.
        </p>

        <p>
         The <code>KeyboardEvent</code> interface provides convenient
         attributes for some common modifiers keys:
         <code>KeyboardEvent.ctrlKey</code>,
         <code>KeyboardEvent.shiftKey</code>,
         <code>KeyboardEvent.altKey</code>,
         <code>KeyboardEvent.metaKey</code>. These attributes are
         equivalent to use the method
         <code>KeyboardEvent.getModifierState(keyIdentifierArg)</code>
         with "Control", "Shift", "Alt", or "Meta" respectively.
        </p>

        <p>
         To create an instance of the <code>KeyboardEvent</code>
         interface, use the
         <code>DocumentEvent.createEvent("KeyboardEvent")</code> method
         call.
        </p>
       </descr>

       <group id="ID-KeyboardEvent-KeyLocationCode" name="KeyLocationCode">
        <descr>
         <p>
          This set of constants is used to indicate the location of a
          key on the device. In case a DOM implementation wishes to
          provide a new location information, a value different from the
          following constant values must be used.
         </p>
        </descr>

        <constant name="DOM_KEY_LOCATION_STANDARD" id="DOM_KEY_LOCATION_STANDARD" type="unsigned long" value="0x00">
         <descr>
          <p>
           The key activation is not distinguished as the left or right
           version of the key, and did not originate from the numeric
           keypad (or did not originate with a virtual key corresponding
           to the numeric keypad). Example: the 'Q' key on a PC 101 Key
           US keyboard.
          </p>
         </descr>
        </constant>

        <constant name="DOM_KEY_LOCATION_LEFT" id="DOM_KEY_LOCATION_LEFT" type="unsigned long" value="0x01">
         <descr>
          <p>
           The key activated is in the left key location (there is more
           than one possible location for this key). Example: the left
           Shift key on a PC 101 Key US keyboard.
          </p>
         </descr>
        </constant>

        <constant name="DOM_KEY_LOCATION_RIGHT" id="DOM_KEY_LOCATION_RIGHT" type="unsigned long" value="0x02">
         <descr>
          <p>
           The key activation is in the right key location (there is
           more than one possible location for this key). Example: the
           right Shift key on a PC 101 Key US keyboard.
          </p>
         </descr>
        </constant>

        <constant name="DOM_KEY_LOCATION_NUMPAD" id="DOM_KEY_LOCATION_NUMPAD" type="unsigned long" value="0x03">
         <descr>
          <p>
           The key activation originated on the numeric keypad or with a
           virtual key corresponding to the numeric keypad. Example: the
           '1' key on a PC 101 Key US keyboard located on the numeric
           pad.
          </p>
         </descr>
        </constant>
       </group>

       <attribute type="DOMString" name="keyIdentifier" id="Events-KeyboardEvent-keyIdentifier" readonly="yes">
        <descr>
         <p>
          <code>keyIdentifier</code> holds the identifier of the key.
          The key identifiers are defined in Appendix A.2
          "<specref ref="KeySet-Set"></specref>". Implementations that
          are unable to identify a key must use the key identifier
          <code>"Unidentified"</code>.
         </p>
        </descr>
       </attribute>

       <attribute id="Events-KeyboardEvent-keylocation" name="keyLocation" type="unsigned long" readonly="yes">
        <descr>
         <p>
          The <code>keyLocation</code> attribute contains an indication
          of the location of they key on the device, as described in
          <specref ref="ID-KeyboardEvent-KeyLocationCode"></specref>.
         </p>
        </descr>
       </attribute>

       <attribute name="ctrlKey" id="Events-KeyboardEvent-ctrlKey" type="boolean" readonly="yes">
        <descr>
         <p>
          <code>true</code> if the control (Ctrl) key modifier is
          activated.
         </p>
        </descr>
       </attribute>

       <attribute name="shiftKey" id="Events-KeyboardEvent-shiftKey" type="boolean" readonly="yes">
        <descr>
         <p>
          <code>true</code> if the shift (Shift) key modifier is
          activated.
         </p>
        </descr>
       </attribute>

       <attribute name="altKey" id="Events-KeyboardEvent-altKey" type="boolean" readonly="yes">
        <descr>
         <p>
          <code>true</code> if the alternative (Alt) key modifier is
          activated.
         </p>

         <note>
          <p>
           The Option key modifier on Macintosh systems must be
           represented using this key modifier.
          </p>
         </note>
        </descr>
       </attribute>

       <attribute name="metaKey" id="Events-KeyboardEvent-metaKey" type="boolean" readonly="yes">
        <descr>
         <p>
          <code>true</code> if the meta (Meta) key modifier is
          activated.
         </p>

         <note>
          <p>
           The Command key modifier on Macintosh systems must be
           represented using this key modifier.
          </p>
         </note>
        </descr>
       </attribute>

       <method id="Events-KeyboardEvent-getModifierState" name="getModifierState">
        <descr>
         <p>
          This methods queries the state of a modifier using a key
          identifier. See also <specref ref="Modifiers"></specref>.
         </p>
        </descr>

        <parameters>
         <param name="keyIdentifierArg" type="DOMString" attr="in">
          <descr>
           <p>
            A modifier key identifier. Common modifier keys are
            <code>"Alt"</code>, <code>"AltGraph"</code>,
            <code>"CapsLock"</code>, <code>"Control"</code>,
            <code>"Meta"</code>, <code>"NumLock"</code>,
            <code>"Scroll"</code>, or <code>"Shift"</code>.
           </p>

           <note>
            <p>
             If an application wishes to distinguish between right and
             left modifiers, this information could be deduced using
             keyboard events and <code>KeyboardEvent.keyLocation</code>.
            </p>
           </note>
          </descr>
         </param>
        </parameters>

        <returns type="boolean">
         <descr>
          <p>
           <code>true</code> if it is modifier key and the modifier is
           activated, <code>false</code> otherwise.
          </p>
         </descr>
        </returns>

        <raises></raises>
       </method>

       <method name="initKeyboardEvent" id="Events-KeyboardEvent-initKeyboardEvent">
        <descr>
         <p>
          The <code>initKeyboardEvent</code> method is used to
          initialize the value of a <code>KeyboardEvent</code> object
          and has the same behavior as
          <code>UIEvent.initUIEvent()</code>. The value of
          <code>UIEvent.detail</code> remains undefined.
         </p>
        </descr>

        <parameters>
         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="keyIdentifierArg" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies <code>KeyboardEvent.keyIdentifier</code>.
           </p>
          </descr>
         </param>

         <param name="keyLocationArg" type="unsigned long" attr="in">
          <descr>
           <p>
            Specifies <code>KeyboardEvent.keyLocation</code>.
           </p>
          </descr>
         </param>

         <param name="modifiersList" type="DOMString" attr="in">
          <descr>
           <p>
            A
            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">white
            space</xspecref> separated list of modifier key identifiers
            to be activated on this object.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr></descr>
        </returns>

        <raises></raises>
       </method>

       <method name="initKeyboardEventNS" id="Events-KeyboardEvent-initKeyboardEventNS">
        <descr>
         <p>
          The <code>initKeyboardEventNS</code> method is used to
          initialize the value of a <code>KeyboardEvent</code> object
          and has the same behavior as
          <code>UIEvent.initUIEventNS()</code>. The value of
          <code>UIEvent.detail</code> remains undefined.
         </p>
        </descr>

        <parameters>
         <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="viewArg" type="views::AbstractView" attr="in">
          <descr>
           <p>
            Refer to the <code>UIEvent.initUIEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="keyIdentifierArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="keyLocationArg" type="unsigned long" attr="in">
          <descr>
           <p>
            Refer to the <code>KeyboardEvent.initKeyboardEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="modifiersList" type="DOMString" attr="in">
          <descr>
           <p>
            A
            <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">white
            space</xspecref> separated list of modifier key identifiers
            to be activated on this object. As an example,
            <code>"Control Alt"</code> will activated the control and
            alt modifiers.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr></descr>
        </returns>

        <raises></raises>
       </method>
      </interface>
     </definitions>

     <p>
      Depending on the character generation device, keyboard events may
      or may not be generated.
     </p>

     <p>
      The keyboard event types are listed below. A DOM application may
      use the <code>hasFeature(feature, version)</code> method of the
      <code>DOMImplementation</code> interface with parameter values
      <code>"KeyboardEvents"</code> and <code>"3.0"</code>
      (respectively) to determine whether or not the Keyboard event
      module is supported by the implementation. In order to fully
      support this module, an implementation must also support the
      <code>"UIEvents"</code> feature defined in this specification. For
      additional information about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref role="informative" ref="DOMCore"></bibref>.
     </p>

     <glist role="event-definition">
      <gitem>
       <label id="event-keydown"><termref def="event-keydown">keydown</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>keydown</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>KeyboardEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code>,
            <code>KeyboardEvent.keyIdentifier</code>,
            <code>KeyboardEvent.keyLocation</code>,
            <code>KeyboardEvent.altKey</code>,
            <code>KeyboardEvent.shiftKey</code>,
            <code>KeyboardEvent.ctrlKey</code>, and
            <code>KeyboardEvent.metaKey</code> are in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A key is pressed down. This event type is device dependent and
         relies on the capabilities of the input devices and how they
         are mapped in the operating system. This event type is
         generated after the keyboard mapping but before the processing
         of an <termref def="dt-ime">input method editor</termref>. This
         event should logically happen before the event
         <termref def="event-keyup">keyup</termref> is produced. Whether
         a <termref def="event-keydown">keydown</termref> contributes or
         not to the generation of a text event is implementation
         dependent.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-keyup"><termref def="event-keyup">keyup</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>keyup</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>KeyboardEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code>,
            <code>KeyboardEvent.keyIdentifier</code>, and
            <code>KeyboardEvent.keyLocation</code> are in use.
            <code>KeyboardEvent.altKey</code>,
            <code>KeyboardEvent.shiftKey</code>,
            <code>KeyboardEvent.ctrlKey</code>, and
            <code>KeyboardEvent.metaKey</code> are in use unless the
            <code>KeyboardEvent.keyIdentifier</code> corresponds to the
            key modifier itself.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A key is released. This event type is device dependent and
         relies on the capabilities of the input devices and how they
         are mapped in the operating system. This event type is
         generated after the keyboard mapping but before the processing
         of an <termref def="dt-ime">input method editor</termref>. This
         event should logically happen after the event
         <termref def="event-keydown">keydown</termref> is produced.
         Whether a keyup contributes or not to the generation of a text
         event is implementation dependent.
        </p>
       </def>
      </gitem>
     </glist>
    </div3>

    <div3 id="Events-eventgroupings-mutationevents">
     <head>
      Mutation and mutation name event types
     </head>

     <p>
      The mutation and mutation name event modules are designed to allow
      notification of any changes to the structure of a document,
      including attribute, text, or name modifications. It may be noted
      that none of the event types associated with the modules are
      designated as cancelable. This stems from the fact that it is very
      difficult to make use of existing DOM interfaces which cause
      document modifications if any change to the document might or
      might not take place due to cancelation of the resulting event.
      Although this is still a desired capability, it was decided that
      it would be better left until the addition of transactions into
      the DOM.
     </p>

     <p>
      Many single modifications of the tree can cause multiple mutation
      events to be dispatched. Rather than attempt to specify the
      ordering of mutation events due to every possible modification of
      the tree, the ordering of these events is left to the
      implementation.
     </p>

     <definitions>
      <interface name="MutationEvent" inherits="Event" id="Events-MutationEvent" since="DOM Level 2">
       <descr>
        <p>
         The <code>MutationEvent</code> interface provides specific
         contextual information associated with Mutation events.
        </p>

        <p>
         To create an instance of the <code>MutationEvent</code>
         interface, use the
         <code>DocumentEvent.createEvent("MutationEvent")</code> method
         call.
        </p>
       </descr>

       <group id="Events-MutationEvent-attrChangeType" name="attrChangeType">
        <descr>
         <p>
          An integer indicating in which way the <code>Attr</code> was
          changed.
         </p>
        </descr>

        <constant name="MODIFICATION" id="MODIFICATION" type="unsigned short" value="1">
         <descr>
          <p>
           The <code>Attr</code> was modified in place.
          </p>
         </descr>
        </constant>

        <constant name="ADDITION" id="ADDITION" type="unsigned short" value="2">
         <descr>
          <p>
           The <code>Attr</code> was just added.
          </p>
         </descr>
        </constant>

        <constant name="REMOVAL" id="REMOVAL" type="unsigned short" value="3">
         <descr>
          <p>
           The <code>Attr</code> was just removed.
          </p>
         </descr>
        </constant>
       </group>

       <attribute type="Node" name="relatedNode" readonly="yes" id="Events-MutationEvent-relatedNode">
        <descr>
         <p>
          <code>relatedNode</code> is used to identify a secondary node
          related to a mutation event. For example, if a mutation event
          is dispatched to a node indicating that its parent has
          changed, the <code>relatedNode</code> is the changed parent.
          If an event is instead dispatched to a subtree indicating a
          node was changed within it, the <code>relatedNode</code> is
          the changed node. In the case of the
          <termref def="event-DOMAttrModified">DOMAttrModified</termref>
          event it indicates the <code>Attr</code> node which was
          modified, added, or removed.
         </p>
        </descr>
       </attribute>

       <attribute type="DOMString" name="prevValue" readonly="yes" id="Events-MutationEvent-prevValue">
        <descr>
         <p>
          <code>prevValue</code> indicates the previous value of the
          <code>Attr</code> node in
          <termref def="event-DOMAttrModified">DOMAttrModified</termref>
          events, and of the <code>CharacterData</code> node in
          <termref def="event-DOMCharacterDataModified">DOMCharacterDataModified</termref>
          events.
         </p>
        </descr>
       </attribute>

       <attribute type="DOMString" name="newValue" readonly="yes" id="Events-MutationEvent-newValue">
        <descr>
         <p>
          <code>newValue</code> indicates the new value of the
          <code>Attr</code> node in
          <termref def="event-DOMAttrModified">DOMAttrModified</termref>
          events, and of the <code>CharacterData</code> node in
          <termref def="event-DOMCharacterDataModified">DOMCharacterDataModified</termref>
          events.
         </p>
        </descr>
       </attribute>

       <attribute type="DOMString" name="attrName" readonly="yes" id="Events-MutationEvent-attrName">
        <descr>
         <p>
          <code>attrName</code> indicates the name of the changed
          <code>Attr</code> node in a
          <termref def="event-DOMAttrModified">DOMAttrModified</termref>
          event.
         </p>
        </descr>
       </attribute>

       <attribute type="unsigned short" name="attrChange" readonly="yes" id="Events-MutationEvent-attrChange">
        <descr>
         <p>
          <code>attrChange</code> indicates the type of change which
          triggered the
          <termref def="event-DOMAttrModified">DOMAttrModified</termref>
          event. The values can be <code>MODIFICATION</code>,
          <code>ADDITION</code>, or <code>REMOVAL</code>.
         </p>
        </descr>
       </attribute>

       <method name="initMutationEvent" id="Events-Event-initMutationEvent">
        <descr>
         <p>
          The <code>initMutationEvent</code> method is used to
          initialize the value of a <code>MutationEvent</code> object
          and has the same behavior as <code>Event.initEvent()</code>.
         </p>
        </descr>

        <parameters>
         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEvent()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="relatedNodeArg" type="Node" attr="in">
          <descr>
           <p>
            Specifies <code>MutationEvent.relatedNode</code>.
           </p>
          </descr>
         </param>

         <param name="prevValueArg" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies <code>MutationEvent.prevValue</code>. This value
            may be null.
           </p>
          </descr>
         </param>

         <param name="newValueArg" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies <code>MutationEvent.newValue</code>. This value
            may be null.
           </p>
          </descr>
         </param>

         <param name="attrNameArg" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies <code>MutationEvent.attrname</code>. This value
            may be null.
           </p>
          </descr>
         </param>

         <param name="attrChangeArg" type="unsigned short" attr="in">
          <descr>
           <p>
            Specifies <code>MutationEvent.attrChange</code>. This value
            may be null.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>

       <method name="initMutationEventNS" id="Events-Event-initMutationEventNS" since="DOM Level 3">
        <descr>
         <p>
          The <code>initMutationEventNS</code> method is used to
          initialize the value of a <code>MutationEvent</code> object
          and has the same behavior as <code>Event.initEventNS()</code>.
         </p>
        </descr>

        <parameters>
         <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>Event.initEventNS()</code> method for a
            description of this parameter.
           </p>
          </descr>
         </param>

         <param name="relatedNodeArg" type="Node" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="prevValueArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="newValueArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="attrNameArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="attrChangeArg" type="unsigned short" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>
      </interface>
     </definitions>

     <p>
      The mutation event types are listed below. A DOM application may
      use the <code>hasFeature(feature, version)</code> method of the
      <code>DOMImplementation</code> interface with parameter values
      <code>"MutationEvents"</code> and <code>"3.0"</code>
      (respectively) to determine whether or not the Mutation event
      module is supported by the implementation. In order to fully
      support this module, an implementation must also support the
      <code>"Events"</code> feature defined in this specification. For
      additional information about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref role="informative" ref="DOMCore"></bibref>. This
      <code>MutationEvent</code> interface is built on top of the DOM
      Level 2 Mutation Events <bibref ref="DOM2Events"></bibref> module,
      i.e. a DOM Level 3 <code>MutationEvent</code> interface
      implementation where
      <code>hasFeature("MutationEvents","3.0")</code> returns
      <code>true</code> must also return <code>true</code> when the
      <code>version</code> number is <code>"2.0"</code>, <code>""</code>
      or, <code>null</code>.
     </p>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMSubtreeModified"><termref def="event-DOMSubtreeModified">DOMSubtreeModified</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMSubtreeModified</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Document</code>, <code>DocumentFragment</code>,
            <code>Element</code>, <code>Attr</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            None
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         This is a general event for notification of all changes to the
         document. It can be used instead of the more specific mutation
         and mutation name events listed below. It may be dispatched
         after a single modification to the document or, at the
         implementation's discretion, after multiple changes have
         occurred. The latter use should generally be used to
         accommodate multiple changes which occur either simultaneously
         or in rapid succession. The target of this event is the lowest
         common parent of the changes which have taken place. This event
         is dispatched after any other events caused by the mutation(s)
         have occurred.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMNodeInserted"><termref def="event-DOMNodeInserted">DOMNodeInserted</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMNodeInserted</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
            <code>Comment</code>, <code>CDATASection</code>,
            <code>DocumentType</code>, <code>EntityReference</code>,
            <code>ProcessingInstruction</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent.relatedNode</code> holds the parent node
            of the node that has been inserted or, in case of
            <code>Attr</code> nodes, the <code>ownerElement</code> of
            the <code>Attr</code> node.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A node has been added as a
         <termref def="dt-child">child</termref> of another node or, in
         case of <code>Attr</code> nodes, has been added to an
         <code>Element</code>. This event is dispatched after the
         insertion has taken place. The
         <termref def="dt-target-node">target node</termref> of this
         event is the node being inserted.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMNodeRemoved"><termref def="event-DOMNodeRemoved">DOMNodeRemoved</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMNodeRemoved</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
            <code>Comment</code>, <code>CDATASection</code>,
            <code>DocumentType</code>, <code>EntityReference</code>,
            <code>ProcessingInstruction</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent.relatedNode</code> holds the parent node
            of the node being removed or, in case of <code>Attr</code>
            nodes, the <code>ownerElement</code> of the
            <code>Attr</code> node.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A node is being removed from its parent node or, in case of
         <code>Attr</code> nodes, removed from its
         <code>ownerElement</code>. This event is dispatched before the
         removal takes place. The <termref def="dt-target-node">target
         node</termref> of this event is the node being removed.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMNodeRemovedFromDocument"><termref def="event-DOMNodeRemovedFromDocument">DOMNodeRemovedFromDocument</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMNodeRemovedFromDocument</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
            <code>Comment</code>, <code>CDATASection</code>,
            <code>DocumentType</code>, <code>EntityReference</code>,
            <code>ProcessingInstruction</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            None
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A node is being removed from a document, either through direct
         removal of the node or removal of a subtree in which it is
         contained; <code>Attr</code> nodes are considered part of an
         <code>Element</code>'s subtree. This event is dispatched before
         the removal takes place. The
         <termref def="dt-target-node">target node</termref> of this
         event type is the node being removed. If the node is being
         directly removed, the event type
         <termref def="event-DOMNodeRemoved">DOMNodeRemoved</termref>
         occurs before this event type.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMNodeInsertedIntoDocument"><termref def="event-DOMNodeInsertedIntoDocument">DOMNodeInsertedIntoDocument</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMNodeInsertedIntoDocument</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>, <code>Attr</code>, <code>Text</code>,
            <code>Comment</code>, <code>CDATASection</code>,
            <code>DocumentType</code>, <code>EntityReference</code>,
            <code>ProcessingInstruction</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            None
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A node has been inserted into a document, either through direct
         insertion of the node or insertion of a subtree in which it is
         contained; <code>Attr</code> nodes are considered part of an
         <code>Element</code>'s subtree. This event is dispatched after
         the insertion has taken place. The
         <termref def="dt-target-node">target node</termref> of this
         event is the node being inserted. If the node is being directly
         inserted, the event type
         <termref def="event-DOMNodeInserted">DOMNodeInserted</termref>
         occurs before this event type.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMAttrModified"><termref def="event-DOMAttrModified">DOMAttrModified</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMAttrModified</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent.attrName</code> and
            <code>MutationEvent.attrChange</code> are in use. The value
            of <code>MutationEvent.relatedNode</code> indicates the
            <code>Attr</code> node that has been modified, added, or
            removed. If the <code>Attr</code> node has been added,
            <code>MutationEvent.newValue</code> is in use. If the
            <code>Attr</code> node has been removed,
            <code>MutationEvent.prevValue</code> is in use. If the
            <code>Attr</code> node has been modified,
            <code>MutationEvent.newValue</code> and
            <code>MutationEvent.prevValue</code> are in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         Occurs after <code>Attr.value</code> has been modified and
         after an <code>Attr</code> node has been added to or removed
         from an <code>Element</code>. The
         <termref def="dt-target-node">target node</termref> of this
         event is the <code>Element</code> node where the change
         occured. It is implementation dependent whether this event type
         occurs when the children of the <code>Attr</code> node are
         changed in ways that do not affect the value of
         <code>Attr.value</code>.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMCharacterDataModified"><termref def="event-DOMCharacterDataModified">DOMCharacterDataModified</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMCharacterDataModified</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Text</code>, <code>Comment</code>,
            <code>CDATASection</code>,
            <code>ProcessingInstruction</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationEvent.prevValue</code>, and
            <code>MutationEvent.newValue</code> are in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         Occurs after <code>CharacterData.data</code> or
         <code>ProcessingInstruction.data</code> have been modified but
         the node itself has not been inserted or deleted. The
         <termref def="dt-target-node">target node</termref> of this
         event is the <code>CharacterData</code> node or the
         <code>ProcessingInstruction</code> node.
        </p>
       </def>
      </gitem>
     </glist>

     <definitions>
      <interface name="MutationNameEvent" inherits="MutationEvent" id="Events-MutationNameEvent" since="DOM Level 3">
       <descr>
        <p>
         The <code>MutationNameEvent</code> interface provides specific
         contextual information associated with Mutation name event
         types.
        </p>

        <p>
         To create an instance of the <code>MutationNameEvent</code>
         interface, use the
         <code>Document.createEvent("MutationNameEvent")</code> method
         call.
        </p>
       </descr>

       <attribute type="DOMString" name="prevNamespaceURI" readonly="yes" id="Events-MutationNameEvent-prevNamespaceURI">
        <descr>
         <p>
          The previous value of the <code>relatedNode</code>'s
          <code>namespaceURI</code>.
         </p>
        </descr>
       </attribute>

       <attribute type="DOMString" name="prevNodeName" readonly="yes" id="Events-MutationNameEvent-prevNodeName">
        <descr>
         <p>
          The previous value of the <code>relatedNode</code>'s
          <code>nodeName</code>.
         </p>
        </descr>
       </attribute>

       <method name="initMutationNameEvent" id="Events-Event-initMutationNameEvent" since="DOM Level 3">
        <descr>
         <p>
          The <code>initMutationNameEvent</code> method is used to
          initialize the value of a <code>MutationNameEvent</code>
          object and has the same behavior as
          <code>MutationEvent.initMutationEvent()</code>.
         </p>
        </descr>

        <parameters>
         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="relatedNodeArg" type="Node" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="prevNamespaceURIArg" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies <code>MutationNameEvent.prevNamespaceURI</code>.
            This value may be <code>null</code>.
           </p>
          </descr>
         </param>

         <param name="prevNodeNameArg" type="DOMString" attr="in">
          <descr>
           <p>
            Specifies <code>MutationNameEvent.prevNodeName</code>.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>

       <method name="initMutationNameEventNS" id="Events-Event-initMutationNameEventNS" since="DOM Level 3">
        <descr>
         <p>
          The <code>initMutationNameEventNS</code> method is used to
          initialize the value of a <code>MutationNameEvent</code>
          object and has the same behavior as
          <code>MutationEvent.initMutationEventNS()</code>.
         </p>
        </descr>

        <parameters>
         <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the
            <code>MutationEvent.initMutationEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="typeArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the
            <code>MutationEvent.initMutationEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="canBubbleArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the
            <code>MutationEvent.initMutationEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="cancelableArg" type="boolean" attr="in">
          <descr>
           <p>
            Refer to the
            <code>MutationEvent.initMutationEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="relatedNodeArg" type="Node" attr="in">
          <descr>
           <p>
            Refer to the
            <code>MutationEvent.initMutationEventNS()</code> method for
            a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="prevNamespaceURIArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>

         <param name="prevNodeNameArg" type="DOMString" attr="in">
          <descr>
           <p>
            Refer to the <code>MutationEvent.initMutationEvent()</code>
            method for a description of this parameter.
           </p>
          </descr>
         </param>
        </parameters>

        <returns type="void">
         <descr>
          <p></p>
         </descr>
        </returns>

        <raises></raises>
       </method>
      </interface>
     </definitions>

     <p>
      The mutation name event types are listed below. A DOM application
      may use the <code>hasFeature(feature, version)</code> method of
      the <code>DOMImplementation</code> interface with parameter values
      "MutationNameEvents" and "3.0" (respectively) to determine whether
      or not the Mutation Name event module is supported by the
      implementation. In order to fully support this module, an
      implementation must also support the <code>"MutationEvents"</code>
      feature defined in this specification and the <code>"Core"</code>
      feature defined in the DOM Level 3 Core specification
      <bibref ref="DOMCore"></bibref>. For additional information about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref role="informative" ref="DOMCore"></bibref>.
     </p>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMElementNameChanged"><termref def="event-DOMElementNameChanged">DOMElementNameChanged</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMElementNameChanged</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationNameEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationNameEvent.prevNamespaceURI</code>, and
            <code>MutationNameEvent.prevNodeName</code> are in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         Occurs after the <code>namespaceURI</code> and/or the
         <code>nodeName</code> of an <code>Element</code> node have been
         modified (e.g., the element was renamed using
         <code>Document.renameNode()</code>). The
         <termref def="dt-target-node">target node</termref> of this
         event is the renamed <code>Element</code> node.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-DOMAttributeNameChanged"><termref def="event-DOMAttributeNameChanged">DOMAttributeNameChanged</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>DOMAttributeNameChanged</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationNameEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>MutationNameEvent.prevNamespaceURI</code>, and
            <code>MutationNameEvent.prevNodeName</code> are in use. The
            value of <code>MutationEvent.relatedNode</code> contains the
            renamed <code>Attr</code> node.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         Occurs after the <code>namespaceURI</code> and/or the
         <code>nodeName</code> of a <code>Attr</code> node have been
         modified (e.g., the attribute was renamed using
         <code>Document.renameNode()</code>). The
         <termref def="dt-target-node">target node</termref> of this
         event is the <code>Element</code> node whose <code>Attr</code>
         has been renamed.
        </p>
       </def>
      </gitem>
     </glist>
    </div3>

    <div3 id="Events-eventgroupings-basicevents">
     <head>
      Basic event types
     </head>

     <p>
      This event module contains basic event types associated with
      document manipulation.
     </p>

     <p>
      A DOM application may use the <code>hasFeature(feature,
      version)</code> method of the <code>DOMImplementation</code>
      interface with parameter values <code>"BasicEvents"</code> and
      <code>"3.0"</code> (respectively) to determine whether or not the
      basic event module is supported by the implementation. In order to
      fully support this module, an implementation must also support the
      <code>"Events"</code> feature defined in this specification. For
      additional information about
      <xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/introduction.html#ID-Conformance" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">conformance</xspecref>,
      please see the DOM Level 3 Core specification
      <bibref role="informative" ref="DOMCore"></bibref>.
     </p>

     <p>
      The basic event types are listed below.
     </p>

     <p>
      The event types <termref def="event-resize">resize</termref> and
      <termref def="event-scroll">scroll</termref> implement the
      <code>UIEvent</code> interface. All other basic event types
      implement at least the basic <code>Event</code> interface.
      However, they may be generated from a user interface; in that
      case, the event objects also implements the <code>UIEvent</code>
      interface and <code>UIEvent.view</code> is in use.
     </p>

     <glist role="event-definition">
      <gitem>
       <label id="event-load"><termref def="event-load">load</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>load</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Document</code>, <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         The DOM Implementation finishes loading the resource (such as
         the document) and any dependent resources (such as images,
         style sheets, or scripts). Dependent resources that fail to
         load will not prevent this event from firing if the resource
         that loaded them is still accessible via the DOM. If this event
         type is dispatched, implementations are required to dispatch
         this event at least on the <code>Document</code> node.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-unload"><termref def="event-unload">unload</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>unload</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Document</code>, <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         The DOM implementation removes from the environment the
         resource (such as the document) or any dependent resources
         (such as images, style sheets, scripts). The document is
         unloaded after the dispatch of this event type. If this event
         type is dispatched, implementations are required to dispatch
         this event at least on the <code>Document</code> node.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-abort"><termref def="event-abort">abort</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>abort</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         The loading of the document, or a resource linked from it, is
         stopped before being entirely loaded.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-error"><termref def="event-error">error</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>error</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A resource failed to load, or has been loaded but cannot be
         interpreted according to its semantics such as an invalid
         image, a script execution error, or non-well-formed XML.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-select"><termref def="event-select">select</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>select</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A user selects some text. DOM Level 3 Events does not provide
         contextual information to access the selected text. The
         selection occured before the dispatch of this event type.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-change"><termref def="event-change">change</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>change</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A control loses the input focus and its value has been modified
         since gaining focus. This event type is dispatched before the
         event type <termref def="event-blur">blur</termref>.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-submit"><termref def="event-submit">submit</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>submit</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A form, such as
         <bibref role="informative" ref="HTML40"></bibref>,
         <bibref role="informative" ref="XHTML10"></bibref>, or
         <bibref role="informative" ref="XForms10"></bibref> form, is
         submitted.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-reset"><termref def="event-reset">reset</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>reset</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>Event</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> may be in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A form, such as
         <bibref role="informative" ref="HTML40"></bibref>,
         <bibref role="informative" ref="XHTML10"></bibref>, or
         <bibref role="informative" ref="XForms10"></bibref> form, is
         reset.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-resize"><termref def="event-resize">resize</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>resize</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Document</code>, <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> is in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A document view or an element has been resized. The resize
         occured before the dispatch of this event type.
        </p>
       </def>
      </gitem>
     </glist>

     <glist role="event-definition">
      <gitem>
       <label id="event-scroll"><termref def="event-scroll">scroll</termref></label>

       <def>
        <table summary="This table contains information about the semantics of the given event type" border="0" cellspacing="0" cellpadding="2">
         <tbody>
          <tr>
           <th colspan="1" rowspan="1">
            Type
           </th>

           <td colspan="1" rowspan="1">
            <code>scroll</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Namespace
           </th>

           <td colspan="1" rowspan="1">
            <code>None</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Interface
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Cancelable
           </th>

           <td colspan="1" rowspan="1">
            No
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Bubbles
           </th>

           <td colspan="1" rowspan="1">
            Yes
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Target
           </th>

           <td colspan="1" rowspan="1">
            <code>Document</code>, <code>Element</code>
           </td>
          </tr>

          <tr>
           <th colspan="1" rowspan="1">
            Context info
           </th>

           <td colspan="1" rowspan="1">
            <code>UIEvent.view</code> is in use.
           </td>
          </tr>
         </tbody>
        </table>

        <p>
         A document view or an element has been scrolled. The scroll
         occured before the dispatch of this event type.
        </p>
       </def>
      </gitem>
     </glist>
    </div3>
   </div2>
  </div1>
 </body>

 <back>
  <div1 id="KeySet">
   <head>
    Keyboard events and key identifiers
   </head>

   <orglist role="editors">
    <member>
     <name>Bj&#246;rn H&#246;hrmann</name>
    </member>

    <member>
     <name>Philippe Le H&#233;garet</name>

     <affiliation>W3C (until November 2003)</affiliation>
    </member>
   </orglist>
<?GENERATE-MINI-TOC?>
   <p>
    This section contains necessary information regarding keyboard
    events:
   </p>

   <ulist>
    <item>
     <p>
      Relations between keys, such as dead keys or modifiers keys.
     </p>
    </item>

    <item>
     <p>
      Relations between keyboard events, their default actions, and text
      events.
     </p>
    </item>

    <item>
     <p>
      The set of key identifiers, and guidelines on how to extend this
      set.
     </p>
    </item>
   </ulist>

   <note>
    <p>
     This section uses serbian and kanji characters which are not always
     available (or are misrepresented) in the alternative versions or
     printed versions of this specification.
    </p>
   </note>

   <div2 id="KeySet-intro">
    <head>
     Introduction
    </head>

    <p>
     Each keyboard event references a key using a <code>DOMString</code>
     key identifier. The set contained in this appendix is based on the
     sets of keycodes from:
    </p>

    <ulist>
     <item>
      <p>
       the interface <code>java.awt.event.KeyEvent</code> of the Java 2
       Platform v1.4
       <bibref ref="KeyEvent" role="informative"></bibref>;
      </p>
     </item>

     <item>
      <p>
       the enumeration <code>System.Windows.Forms.Keys</code> of the
       Microsoft .NET Framework 1.0
       <bibref ref="Keys" role="informative"></bibref>.
      </p>
     </item>
    </ulist>

    <p>
     While implementations are recommended to use the most relevant
     identifier for a key independently of the platform or keyboard
     layout mappings, DOM applications should not make assumption on the
     ability of keyboard devices to generate them. When using keyboard
     events, <quote>consider using numbers and function keys (F4, F5,
     and so on) instead of letters in shortcut-key combinations</quote>
     (<bibref ref="DWW95" role="informative"></bibref>) given that most
     keyboard layouts will provide keys for those.
    </p>

    <p>
     <code>"U+0000"</code>, <code>"U+0001"</code>, ...,
     <code>"U+10FFFF"</code> are Unicode based key identifiers
     (<bibref ref="Unicode"></bibref>). When a key cannot be mapped to
     Unicode, a specific identifier is used (see also
     <specref ref="Guide"></specref>). In any case, no assumption should
     be made between the sequence of keyboard events and the text
     events. The following three examples illustrate the concept of
     keyboard layout mappings and its relation with keyboard events
     (following the <specref ref="Guide"></specref>, the 'Q' key is
     mapped to the Latin Capital Letter Q key).
    </p>

    <p>
     The keystroke <code>"U+0051"</code> (Latin Capital Letter Q key)
     will produce (on a PC/AT US keyboard using a US keyboard layout
     mapping and without any modifier activated) the Unicode character
     <code>q</code> (Latin Small Letter Q):
    </p>

    <olist>
     <item>
      <p>
       <code>"keydown"</code>: <code>"U+0051"</code> (Latin Capital
       Letter Q key)
      </p>
     </item>

     <item>
      <p>
       <code>"textInput"</code>: <code>"q"</code>
      </p>
     </item>

     <item>
      <p>
       <code>"keyup"</code>: <code>"U+0051"</code>
      </p>
     </item>
    </olist>

    <p>
     If the keyboard layout mapping is switched to a french mapping,
     pressing the same key will produce:
    </p>

    <olist>
     <item>
      <p>
       <code>"keydown"</code>: <code>"U+0041"</code> (Latin Capital
       Letter A key)
      </p>
     </item>

     <item>
      <p>
       <code>"textInput"</code>: <code>"a"</code>
      </p>
     </item>

     <item>
      <p>
       <code>"keyup"</code>: <code>"U+0041"</code>
      </p>
     </item>
    </olist>

    <p>
     If the keyboard layout mapping is switched to a serbian (cyrillic)
     mapping, pressing the same key will produce:
    </p>

    <olist>
     <item>
      <p>
       <code>"keydown"</code>: <code>"U+0409"</code> (Cyrillic Capital
       Letter LJE)
      </p>
     </item>

     <item>
      <p>
       <code>"textInput"</code>: <code>"&#1113;"</code>
      </p>
     </item>

     <item>
      <p>
       <code>"keyup"</code>: <code>"U+0409"</code>
      </p>
     </item>
    </olist>

    <note>
     <p>
      The order between the text event and keyboard events may differ
      depending on the keyboard devices.
     </p>
    </note>

    <div3 id="Modifiers">
     <head>
      Modifier keys
     </head>

     <p>
      Keyboard input uses modifier keys to change the normal behavior of
      a key. Keys associated with modifiers generate, like other keys,
      <termref def="event-keydown">keydown</termref> and
      <termref def="event-keyup">keyup</termref> events as shown in the
      example below. Some modifiers are activated while the key is being
      pressed down or maintained pressed such as <code>"Alt"</code>,
      <code>"Control"</code>, <code>"Shift"</code>,
      <code>"AltGraph"</code>, or <code>"Meta"</code>. Others modifiers
      are activated depending on their state such as
      <code>"CapsLock"</code>, <code>"NumLock"</code>, or
      <code>"Scroll"</code>. Change in the state happens when the
      modifier key is being pressed down. The <code>KeyboardEvent</code>
      interface provides convenient attributes for some common modifiers
      keys: <code>KeyboardEvent.ctrlKey</code>,
      <code>KeyboardEvent.shiftKey</code>,
      <code>KeyboardEvent.altKey</code>,
      <code>KeyboardEvent.metaKey</code>. Some operating systems
      simulate the <code>"AltGraph"</code> modifier key with the
      combination of the <code>"Alt</code> and <code>"Control"</code>
      modifier keys. Implementations are encouraged to use the
      <code>"AltGraph"</code> modifier key.
     </p>

     <p>
      The following example describes a possible sequence of keys to
      generate the Unicode character Q (Latin Capital Letter Q) on a
      PC/AT US keyboard using a US mapping:
     </p>

     <olist>
      <item>
       <p>
        <code>"keydown"</code>: <code>"Shift"</code>, shiftKey
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0051"</code> (Latin Capital
        Letter Q key), shiftKey
       </p>
      </item>

      <item>
       <p>
        <code>"textInput"</code>: <code>"Q"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0051"</code>, shiftKey
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"Shift"</code>
       </p>
      </item>
     </olist>

     <p>
      The following example describes a possible sequence of keys that
      does not generate a Unicode character (using the same
      configuration):
     </p>

     <olist>
      <item>
       <p>
        <code>"keydown"</code>: <code>"Control"</code>, ctrlKey
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0056"</code> (Latin Capital
        Letter V key), ctrlKey
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0056"</code>, ctrlKey
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"Control"</code>
       </p>
      </item>
     </olist>
    </div3>

    <div3 id="DeadKeys">
     <head>
      Dead keys
     </head>

     <p>
      Keyboard input uses dead keys for the input of composed character
      sequences. Unlike the handwriting sequence, in which users enter
      the base character first, keyboard input requires to enter a
      special state when a dead key is pressed and emit the character(s)
      only when one of a limited number of "legal" base character is
      entered.
     </p>

     <p>
      The dead keys are represented in the key identifiers set using
      combining diacritical marks. The sequence of keystrokes "U+0302"
      (Combining Circumflex Accent key) and "U+0045" (Latin Capital
      Letter E key) will likely produce (on a PC/AT french keyboard
      using a french mapping and without any modifier activated) the
      Unicode character &#234; (Latin Small Letter E With Circumflex),
      as preferred by the Unicode Normalization Form <term>NFC</term>:
     </p>

     <olist>
      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0302"</code> (Combining
        Circumflex Accent key)
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0302"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0045"</code> (Latin Capital
        Letter E key)
       </p>
      </item>

      <item>
       <p>
        <code>"textInput"</code>: <code>"&#233;"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0045"</code>
       </p>
      </item>
     </olist>
    </div3>

    <div3 id="IME">
     <head>
      Input Method Editors
     </head>

     <p>
      <termdef id="dt-ime" term="Input Method Editor">
       Also known as <term>front end processor</term>, an <term>input
       method editor</term> (IME) is an application that performs the
       conversion between keystrokes and ideographs or other characters,
       usually by user-guided dictionary lookup.
      </termdef>
     </p>

     <p>
      This specification does not provide a representation of the input
      method editor (IME) events, i.e. the IME's functions and the IME
      context are not represented in this set. As an example, receiving
      a <termref def="event-keydown">keydown</termref> for the "Accept"
      key identifier does not necessarily imply that the text currently
      selected in the IME is being accepted. It only indicates that a
      keystroke happened, disconnected from the IME Accept
      functionality. Depending on the device in use, the IME Accept
      functionality can be obtain using the Accept key or the Return
      key. Keyboard events cannot be used to determine the current state
      of the input method editor.
     </p>

     <p>
      Keyboard events correspond to the events generated by the input
      device after the keyboard layout mapping but before the processing
      of the input method editor.
     </p>

     <p>
      The following example describes a possible sequence of keys to
      generate the Unicode character &#24066; (Kanji character, part of
      CJK Unified Ideographs) using Japanese input methods. This example
      assumes that the input method editor is activated and in the
      Japanese-Romaji input mode. The keys <code>"Convert"</code> and
      <code>"Accept"</code> may be replaced by others depending on the
      input device in use and the configuration of the IME, e.g. it
      could be respectively "U+0020" (Space key) and "Enter".
     </p>

     <olist>
      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0053"</code> (Latin Capital
        Letter S key)
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0053"</code> (Latin Capital
        Letter S key)
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0049"</code> (Latin Capital
        Letter I key)
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0049"</code> (Latin Capital
        Letter I key)
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"Convert"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"Convert"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"Accept"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"textInput"</code>: <code>"&#24066;"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"Accept"</code>
       </p>
      </item>
     </olist>
    </div3>

    <div3 id="cancelable_keys">
     <head>
      Default actions and cancelable keyboard events
     </head>

     <p>
      Canceling the default action of a
      <termref def="event-keydown">keydown</termref> event does not
      affect its respective <termref def="event-keyup">keyup</termref>
      event; it will however prevent the respective
      <termref def="event-textInput">textInput</termref> event from
      being generated. The following example describes a possible
      sequence of keys to generate the Unicode character Q (Latin
      Capital Letter Q) on a PC/AT US keyboard using a US mapping:
     </p>

     <olist>
      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0051"</code> (Latin Capital
        Letter Q key), shiftKey
       </p>

       <p>
        the default action of the
        <termref def="event-keydown">keydown</termref> event is
        prevented, e.g. by invoking <code>Event.preventDefault()</code>
        during the dispatch of the keydown event object.
       </p>
      </item>

      <item>
       <p>
        No <code>"textInput"</code> is generated.
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0051"</code>, shiftKey
       </p>
      </item>
     </olist>

     <p>
      If the key is a modifier key, the keystroke is taken into account
      for the modifiers states. The following example describes a
      possible sequence of keys to generate the Unicode character Q
      (Latin Capital Letter Q) on a PC/AT US keyboard using a US
      mapping:
     </p>

     <olist>
      <item>
       <p>
        <code>"keydown"</code>: <code>"Shift"</code>, shiftKey
       </p>

       <p>
        the default action of the keydown event is prevented.
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0051"</code> (Latin Capital
        Letter Q key), shiftKey
       </p>
      </item>

      <item>
       <p>
        <code>"textInput"</code>: <code>"Q"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0051"</code>, shiftKey
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"Shift"</code>
       </p>
      </item>
     </olist>

     <p>
      If the key is part of a sequence of several keystrokes, whether it
      is a dead key or it is contributing to an Input Method Editor
      sequence, the keystroke is ignored (not taken into account) only
      if the default action is canceled on the
      <termref def="event-keydown">keydown</termref> event. Canceling a
      dead key on a <termref def="event-keyup">keyup</termref> event has
      not effect on <termref def="event-textInput">textInput</termref>
      events. The following example uses the keystrokes
      <code>"U+0302"</code> (Combining Circumflex Accent key) and
      <code>"U+0045"</code> (Latin Capital Letter E key) (on a PC/AT
      french keyboard using a french mapping and without any modifier
      activated):
     </p>

     <olist>
      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0302"</code> (Combining
        Circumflex Accent key)
       </p>

       <p>
        the default action of the keydown event is prevented
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0302"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keydown"</code>: <code>"U+0045"</code> (Latin Capital
        Letter E key)
       </p>
      </item>

      <item>
       <p>
        <code>"textInput"</code>: <code>"a"</code>
       </p>
      </item>

      <item>
       <p>
        <code>"keyup"</code>: <code>"U+0045"</code>
       </p>
      </item>
     </olist>
    </div3>

    <div3 id="Guide">
     <head>
      Guidelines for defining key identifiers
     </head>

     <note role="important">
      <p>
       This section is non-normative.
      </p>
     </note>

     <p>
      The list of key identifiers contained in this appendix is not
      exhaustive and input devices may have to define their own key
      identifiers. Here is a algorithm to determine which key identifier
      to use:
     </p>

     <olist>
      <item>
       <p>
        Determine a representation for the key by looking at the
        keyboard layout mapping in use (and not the keyboard device in
        use). This representation should be unique, as human friendly as
        possible, platform independent, and consistent. For example, on
        PC/AT US keyboards with a US mapping, the 'Q' key is mapped to
        the key identifier "U+0051" (Latin Capital Letter Q key), the
        '1/!' key is mapped to the key identifier "U+0031" (Digit One
        key), the key '`/~' is mapped to the key identifier "U+0060"
        (Grave Accent key), and the 'Enter' key is mapped to the key
        identifier "Enter".
       </p>
      </item>

      <item>
       <p>
        Find an appropriate mapping in the Unicode character set. There
        might not always be an appropriate and obvious mapping: the
        Unicode set contains characters and symbols, the key might
        generate different characters depending on the operating system,
        ... In general, unless the representation of the key can be
        mapped to a unique Unicode character, it is better to create a
        new one.
       </p>
      </item>

      <item>
       <p>
        If no appropriate mapping was found, create a key identifier as
        human friendly as possible. The key identifier must not contain
        white spaces. As an example, the Enter key is mapped to the key
        identifier "Enter" and not to "U+000A" (Line Feed), given that
        this key generates the character "U+000A" on Unix operating
        systems and the characters "U+000D" and "U+000A" on Windows
        operating systems.
       </p>
      </item>
     </olist>
    </div3>
   </div2>

   <div2 id="KeySet-Set">
    <head>
     Key identifiers set
    </head>

    <note>
     <p>
      The keycodes <code>Multiply</code>, <code>Add</code>,
      <code>Substract</code>, <code>Decimal</code>,
      <code>Separator</code>, <code>Divide</code>, <code>NumPad0</code>,
      <code>NumPad1</code>, <code>NumPad2</code>, <code>NumPad3</code>,
      <code>NumPad4</code>, <code>NumPad5</code>, <code>NumPad6</code>,
      <code>NumPad7</code>, <code>NumPad8</code>, and
      <code>NumPad9</code> are not part of this set. Use
      <code>KeyboardEvent.keyLocation</code> to know if a key originated
      from the numeric keypad.
     </p>
    </note>

    <glist>
     <gitem>
      <label id="key-Accept">"Accept"</label>

      <def>
       <p>
        The Accept (Commit) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Again">"Again"</label>

      <def>
       <p>
        The Again key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-AllCandidates">"AllCandidates"</label>

      <def>
       <p>
        The All Candidates key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Alphanumeric">"Alphanumeric"</label>

      <def>
       <p>
        The Alphanumeric key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Alt">"Alt"</label>

      <def>
       <p>
        The Alt (Menu) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-AltGraph">"AltGraph"</label>

      <def>
       <p>
        The Alt-Graph key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Apps">"Apps"</label>

      <def>
       <p>
        The Application key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Attn">"Attn"</label>

      <def>
       <p>
        The ATTN key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-BrowserBack">"BrowserBack"</label>

      <def>
       <p>
        The Browser Back key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-BrowserFavorites">"BrowserFavorites"</label>

      <def>
       <p>
        The Browser Favorites key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-BrowserForward">"BrowserForward"</label>

      <def>
       <p>
        The Browser Forward key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-BrowserHome">"BrowserHome"</label>

      <def>
       <p>
        The Browser Home key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-BrowserRefresh">"BrowserRefresh"</label>

      <def>
       <p>
        The Browser Refresh key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-BrowserSearch">"BrowserSearch"</label>

      <def>
       <p>
        The Browser Search key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-BrowserStop">"BrowserStop"</label>

      <def>
       <p>
        The Browser Stop key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-CapsLock">"CapsLock"</label>

      <def>
       <p>
        The Caps Lock (Capital) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Clear">"Clear"</label>

      <def>
       <p>
        The Clear key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-CodeInput">"CodeInput"</label>

      <def>
       <p>
        The Code Input key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Compose">"Compose"</label>

      <def>
       <p>
        The Compose key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Control">"Control"</label>

      <def>
       <p>
        The Control (Ctrl) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Crsel">"Crsel"</label>

      <def>
       <p>
        The Crsel key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Convert">"Convert"</label>

      <def>
       <p>
        The Convert key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Copy">"Copy"</label>

      <def>
       <p>
        The Copy key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Cut">"Cut"</label>

      <def>
       <p>
        The Cut key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Down">"Down"</label>

      <def>
       <p>
        The Down Arrow key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-End">"End"</label>

      <def>
       <p>
        The End key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Enter">"Enter"</label>

      <def>
       <p>
        The Enter key.
       </p>

       <note>
        <p>
         This key identifier is also used for the Return (Macintosh
         numpad) key.
        </p>
       </note>
      </def>
     </gitem>

     <gitem>
      <label id="key-EraseEof">"EraseEof"</label>

      <def>
       <p>
        The Erase EOF key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Execute">"Execute"</label>

      <def>
       <p>
        The Execute key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Exsel">"Exsel"</label>

      <def>
       <p>
        The Exsel key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F1">"F1"</label>

      <def>
       <p>
        The F1 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F2">"F2"</label>

      <def>
       <p>
        The F2 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F3">"F3"</label>

      <def>
       <p>
        The F3 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F4">"F4"</label>

      <def>
       <p>
        The F4 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F5">"F5"</label>

      <def>
       <p>
        The F5 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F6">"F6"</label>

      <def>
       <p>
        The F6 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F7">"F7"</label>

      <def>
       <p>
        The F7 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F8">"F8"</label>

      <def>
       <p>
        The F8 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F9">"F9"</label>

      <def>
       <p>
        The F9 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F10">"F10"</label>

      <def>
       <p>
        The F10 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F11">"F11"</label>

      <def>
       <p>
        The F11 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F12">"F12"</label>

      <def>
       <p>
        The F12 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F13">"F13"</label>

      <def>
       <p>
        The F13 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F14">"F14"</label>

      <def>
       <p>
        The F14 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F15">"F15"</label>

      <def>
       <p>
        The F15 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F16">"F16"</label>

      <def>
       <p>
        The F16 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F17">"F17"</label>

      <def>
       <p>
        The F17 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F18">"F18"</label>

      <def>
       <p>
        The F18 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F19">"F19"</label>

      <def>
       <p>
        The F19 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F20">"F20"</label>

      <def>
       <p>
        The F20 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F21">"F21"</label>

      <def>
       <p>
        The F21 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F22">"F22"</label>

      <def>
       <p>
        The F22 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F23">"F23"</label>

      <def>
       <p>
        The F23 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-F24">"F24"</label>

      <def>
       <p>
        The F24 key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-FinalMode">"FinalMode"</label>

      <def>
       <p>
        The Final Mode (Final) key used on some asian keyboards.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Find">"Find"</label>

      <def>
       <p>
        The Find key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-FullWidth">"FullWidth"</label>

      <def>
       <p>
        The Full-Width Characters key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-HalfWidth">"HalfWidth"</label>

      <def>
       <p>
        The Half-Width Characters key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-HangulMode">"HangulMode"</label>

      <def>
       <p>
        The Hangul (Korean characters) Mode key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-HanjaMode">"HanjaMode"</label>

      <def>
       <p>
        The Hanja (Korean characters) Mode key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Help">"Help"</label>

      <def>
       <p>
        The Help key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Hiragana">"Hiragana"</label>

      <def>
       <p>
        The Hiragana (Japanese Kana characters) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Home">"Home"</label>

      <def>
       <p>
        The Home key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Insert">"Insert"</label>

      <def>
       <p>
        The Insert (Ins) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-JapaneseHiragana">"JapaneseHiragana"</label>

      <def>
       <p>
        The Japanese-Hiragana key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-JapaneseKatakana">"JapaneseKatakana"</label>

      <def>
       <p>
        The Japanese-Katakana key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-JapaneseRomaji">"JapaneseRomaji"</label>

      <def>
       <p>
        The Japanese-Romaji key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-JunjaMode">"JunjaMode"</label>

      <def>
       <p>
        The Junja Mode key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-KanaMode">"KanaMode"</label>

      <def>
       <p>
        The Kana Mode (Kana Lock) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-KanjiMode">"KanjiMode"</label>

      <def>
       <p>
        The Kanji (Japanese name for ideographic characters of Chinese
        origin) Mode key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Katakana">"Katakana"</label>

      <def>
       <p>
        The Katakana (Japanese Kana characters) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-LaunchApplication1">"LaunchApplication1"</label>

      <def>
       <p>
        The Start Application One key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-LaunchApplication2">"LaunchApplication2"</label>

      <def>
       <p>
        The Start Application Two key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-LaunchMail">"LaunchMail"</label>

      <def>
       <p>
        The Start Mail key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Left">"Left"</label>

      <def>
       <p>
        The Left Arrow key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Meta">"Meta"</label>

      <def>
       <p>
        The Meta key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-MediaNextTrack">"MediaNextTrack"</label>

      <def>
       <p>
        The Media Next Track key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-MediaPlayPause">"MediaPlayPause"</label>

      <def>
       <p>
        The Media Play Pause key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-MediaPreviousTrack">"MediaPreviousTrack"</label>

      <def>
       <p>
        The Media Previous Track key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-MediaStop">"MediaStop"</label>

      <def>
       <p>
        The Media Stok key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-ModeChange">"ModeChange"</label>

      <def>
       <p>
        The Mode Change key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Nonconvert">"Nonconvert"</label>

      <def>
       <p>
        The Nonconvert (Don't Convert) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-NumLock">"NumLock"</label>

      <def>
       <p>
        The Num Lock key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-PageDown">"PageDown"</label>

      <def>
       <p>
        The Page Down (Next) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-PageUp">"PageUp"</label>

      <def>
       <p>
        The Page Up key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Paste">"Paste"</label>

      <def>
       <p>
        The Paste key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Pause">"Pause"</label>

      <def>
       <p>
        The Pause key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Play">"Play"</label>

      <def>
       <p>
        The Play key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-PreviousCandidate">"PreviousCandidate"</label>

      <def>
       <p>
        The Previous Candidate function key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-PrintScreen">"PrintScreen"</label>

      <def>
       <p>
        The Print Screen (PrintScrn, SnapShot) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Process">"Process"</label>

      <def>
       <p>
        The Process key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Props">"Props"</label>

      <def>
       <p>
        The Props key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Right">"Right"</label>

      <def>
       <p>
        The Right Arrow key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-RomanCharacters">"RomanCharacters"</label>

      <def>
       <p>
        The Roman Characters function key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Scroll">"Scroll"</label>

      <def>
       <p>
        The Scroll Lock key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Select">"Select"</label>

      <def>
       <p>
        The Select key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-SelectMedia">"SelectMedia"</label>

      <def>
       <p>
        The Select Media key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Shift">"Shift"</label>

      <def>
       <p>
        The Shift key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Stop">"Stop"</label>

      <def>
       <p>
        The Stop key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Up">"Up"</label>

      <def>
       <p>
        The Up Arrow key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Undo">"Undo"</label>

      <def>
       <p>
        The Undo key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-VolumeDown">"VolumeDown"</label>

      <def>
       <p>
        The Volume Down key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-VolumeMute">"VolumeMute"</label>

      <def>
       <p>
        The Volume Mute key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-VolumeUp">"VolumeUp"</label>

      <def>
       <p>
        The Volume Up key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Win">"Win"</label>

      <def>
       <p>
        The Windows Logo key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-Zoom">"Zoom"</label>

      <def>
       <p>
        The Zoom key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0008">"U+0008"</label>

      <def>
       <p>
        The Backspace (Back) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0009">"U+0009"</label>

      <def>
       <p>
        The Horizontal Tabulation (Tab) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0018">"U+0018"</label>

      <def>
       <p>
        The Cancel key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-001B">"U+001B"</label>

      <def>
       <p>
        The Escape (Esc) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0020">"U+0020"</label>

      <def>
       <p>
        The Space (Spacebar) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0021">"U+0021"</label>

      <def>
       <p>
        The Exclamation Mark (Factorial, Bang) key (!).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0022">"U+0022"</label>

      <def>
       <p>
        The Quotation Mark (Quote Double) key (").
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0023">"U+0023"</label>

      <def>
       <p>
        The Number Sign (Pound Sign, Hash, Crosshatch, Octothorpe) key
        (#).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0024">"U+0024"</label>

      <def>
       <p>
        The Dollar Sign (milreis, escudo) key ($).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0026">"U+0026"</label>

      <def>
       <p>
        The Ampersand key (&amp;).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0027">"U+0027"</label>

      <def>
       <p>
        The Apostrophe (Apostrophe-Quote, APL Quote) key (').
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0028">"U+0028"</label>

      <def>
       <p>
        The Left Parenthesis (Opening Parenthesis) key (().
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0029">"U+0029"</label>

      <def>
       <p>
        The Right Parenthesis (Closing Parenthesis) key ()).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-002A">"U+002A"</label>

      <def>
       <p>
        The Asterix (Star) key (*).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-002B">"U+002B"</label>

      <def>
       <p>
        The Plus Sign (Plus) key (+).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-002C">"U+002C"</label>

      <def>
       <p>
        The Comma (decimal separator) sign key (,).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-002D">"U+002D"</label>

      <def>
       <p>
        The Hyphen-minus (hyphen or minus sign) key (-).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-002E">"U+002E"</label>

      <def>
       <p>
        The Full Stop (period, dot, decimal point) key (.).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-002F">"U+002F"</label>

      <def>
       <p>
        The Solidus (slash, virgule, shilling) key (/).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0030">"U+0030"</label>

      <def>
       <p>
        The Digit Zero key (0).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0031">"U+0031"</label>

      <def>
       <p>
        The Digit One key (1).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0032">"U+0032"</label>

      <def>
       <p>
        The Digit Two key (2).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0033">"U+0033"</label>

      <def>
       <p>
        The Digit Three key (3).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0034">"U+0034"</label>

      <def>
       <p>
        The Digit Four key (4).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0035">"U+0035"</label>

      <def>
       <p>
        The Digit Five key (5).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0036">"U+0036"</label>

      <def>
       <p>
        The Digit Six key (6).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0037">"U+0037"</label>

      <def>
       <p>
        The Digit Seven key (7).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0038">"U+0038"</label>

      <def>
       <p>
        The Digit Eight key (8).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0039">"U+0039"</label>

      <def>
       <p>
        The Digit Nine key (9).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-003A">"U+003A"</label>

      <def>
       <p>
        The Colon key (:).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-003B">"U+003B"</label>

      <def>
       <p>
        The Semicolon key (;).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-003C">"U+003C"</label>

      <def>
       <p>
        The Less-Than Sign key (&lt;).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-003D">"U+003D"</label>

      <def>
       <p>
        The Equals Sign key (=).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-003E">"U+003E"</label>

      <def>
       <p>
        The Greater-Than Sign key (&gt;).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-003F">"U+003F"</label>

      <def>
       <p>
        The Question Mark key (?).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0040">"U+0040"</label>

      <def>
       <p>
        The Commercial At (@) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0041">"U+0041"</label>

      <def>
       <p>
        The Latin Capital Letter A key (A).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0042">"U+0042"</label>

      <def>
       <p>
        The Latin Capital Letter B key (B).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0043">"U+0043"</label>

      <def>
       <p>
        The Latin Capital Letter C key (C).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0044">"U+0044"</label>

      <def>
       <p>
        The Latin Capital Letter D key (D).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0045">"U+0045"</label>

      <def>
       <p>
        The Latin Capital Letter E key (E).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0046">"U+0046"</label>

      <def>
       <p>
        The Latin Capital Letter F key (F).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0047">"U+0047"</label>

      <def>
       <p>
        The Latin Capital Letter G key (G).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0048">"U+0048"</label>

      <def>
       <p>
        The Latin Capital Letter H key (H).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0049">"U+0049"</label>

      <def>
       <p>
        The Latin Capital Letter I key (I).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-004A">"U+004A"</label>

      <def>
       <p>
        The Latin Capital Letter J key (J).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-004B">"U+004B"</label>

      <def>
       <p>
        The Latin Capital Letter K key (K).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-004C">"U+004C"</label>

      <def>
       <p>
        The Latin Capital Letter L key (L).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-004D">"U+004D"</label>

      <def>
       <p>
        The Latin Capital Letter M key (M).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-004E">"U+004E"</label>

      <def>
       <p>
        The Latin Capital Letter N key (N).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-004F">"U+004F"</label>

      <def>
       <p>
        The Latin Capital Letter O key (O).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0050">"U+0050"</label>

      <def>
       <p>
        The Latin Capital Letter P key (P).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0051">"U+0051"</label>

      <def>
       <p>
        The Latin Capital Letter Q key (Q).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0052">"U+0052"</label>

      <def>
       <p>
        The Latin Capital Letter R key (R).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0053">"U+0053"</label>

      <def>
       <p>
        The Latin Capital Letter S key (S).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0054">"U+0054"</label>

      <def>
       <p>
        The Latin Capital Letter T key (T).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0055">"U+0055"</label>

      <def>
       <p>
        The Latin Capital Letter U key (U).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0056">"U+0056"</label>

      <def>
       <p>
        The Latin Capital Letter V key (V).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0057">"U+0057"</label>

      <def>
       <p>
        The Latin Capital Letter W key (W).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0058">"U+0058"</label>

      <def>
       <p>
        The Latin Capital Letter X key (X).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0059">"U+0059"</label>

      <def>
       <p>
        The Latin Capital Letter Y key (Y).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-005A">"U+005A"</label>

      <def>
       <p>
        The Latin Capital Letter Z key (Z).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-005B">"U+005B"</label>

      <def>
       <p>
        The Left Square Bracket (Opening Square Bracket) key ([).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-005C">"U+005C"</label>

      <def>
       <p>
        The Reverse Solidus (Backslash) key (\).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-005D">"U+005D"</label>

      <def>
       <p>
        The Right Square Bracket (Closing Square Bracket) key (]).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-005E">"U+005E"</label>

      <def>
       <p>
        The Circumflex Accent key (^).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-005F">"U+005F"</label>

      <def>
       <p>
        The Low Sign (Spacing Underscore, Underscore) key (_).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0060">"U+0060"</label>

      <def>
       <p>
        The Grave Accent (Back Quote) key (`).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-007B">"U+007B"</label>

      <def>
       <p>
        The Left Curly Bracket (Opening Curly Bracket, Opening Brace,
        Brace Left) key ({).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-007C">"U+007C"</label>

      <def>
       <p>
        The Vertical Line (Vertical Bar, Pipe) key (|).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-007D">"U+007D"</label>

      <def>
       <p>
        The Right Curly Bracket (Closing Curly Bracket, Closing Brace,
        Brace Right) key (}).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-007F">"U+007F"</label>

      <def>
       <p>
        The Delete (Del) Key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-00A1">"U+00A1"</label>

      <def>
       <p>
        The Inverted Exclamation Mark key (&#161;).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0300">"U+0300"</label>

      <def>
       <p>
        The Combining Grave Accent (Greek Varia, Dead Grave) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0301">"U+0301"</label>

      <def>
       <p>
        The Combining Acute Accent (Stress Mark, Greek Oxia, Tonos, Dead
        Eacute) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0302">"U+0302"</label>

      <def>
       <p>
        The Combining Circumflex Accent (Hat, Dead Circumflex) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0303">"U+0303"</label>

      <def>
       <p>
        The Combining Tilde (Dead Tilde) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0304">"U+0304"</label>

      <def>
       <p>
        The Combining Macron (Long, Dead Macron) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0306">"U+0306"</label>

      <def>
       <p>
        The Combining Breve (Short, Dead Breve) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0307">"U+0307"</label>

      <def>
       <p>
        The Combining Dot Above (Derivative, Dead Above Dot) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0308">"U+0308"</label>

      <def>
       <p>
        The Combining Diaeresis (Double Dot Abode, Umlaut, Greek
        Dialytika, Double Derivative, Dead Diaeresis) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-030A">"U+030A"</label>

      <def>
       <p>
        The Combining Ring Above (Dead Above Ring) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-030B">"U+030B"</label>

      <def>
       <p>
        The Combining Double Acute Accent (Dead Doubleacute) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-030C">"U+030C"</label>

      <def>
       <p>
        The Combining Caron (Hacek, V Above, Dead Caron) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0327">"U+0327"</label>

      <def>
       <p>
        The Combining Cedilla (Dead Cedilla) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0328">"U+0328"</label>

      <def>
       <p>
        The Combining Ogonek (Nasal Hook, Dead Ogonek) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-0345">"U+0345"</label>

      <def>
       <p>
        The Combining Greek Ypogegrammeni (Greek Non-Spacing Iota Below,
        Iota Subscript, Dead Iota) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-20AC">"U+20AC"</label>

      <def>
       <p>
        The Euro Currency Sign key (&#8364;).
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-3099">"U+3099"</label>

      <def>
       <p>
        The Combining Katakana-Hiragana Voiced Sound Mark (Dead Voiced
        Sound) key.
       </p>
      </def>
     </gitem>

     <gitem>
      <label id="key-U-309A">"U+309A"</label>

      <def>
       <p>
        The Combining Katakana-Hiragana Semi-Voiced Sound Mark (Dead
        Semivoiced Sound) key.
       </p>
      </def>
     </gitem>
    </glist>
   </div2>
  </div1>

  <div1 id="Changes">
   <head>
    Changes
   </head>

   <orglist role="editors">
    <member>
     <name>Bj&#246;rn H&#246;hrmann</name>
    </member>

    <member>
     <name>Philippe Le H&#233;garet</name>

     <affiliation>W3C (until November 2003)</affiliation>
    </member>
   </orglist>

   <div2 id="DOMEvents3NoteChanges">
    <head>
     Changes since November 2003
    </head>

    <p>
     Numerous clarifications to the interfaces and event types have been
     made. The <code>HTMLEvents</code> module is no longer defined in
     this document. The event types <code>focus</code> and
     <code>blur</code> have been added to the <code>UIEvents</code>
     module. For changes to the introduction of namespaces see
     <specref ref="Events-dom2-compatibility"></specref>.
    </p>

    <glist>
     <gitem>
      <label>Interface <code>CustomEvent</code></label>

      <def>
       <p>
        Objects that implement the CustomEvent interface are now created
        by the implementation through
        <code>DocumentEvent.createEvent()</code>. Applications can no
        longer create their own Event objects and have them dispatched
        by the DOM implementation. The interface members associated with
        this functionality have been removed and the
        <code>CustomEvent.initCustomEventNS()</code> method has been
        added.
       </p>
      </def>
     </gitem>

     <gitem>
      <label>Interface <code>EventTarget</code></label>

      <def>
       <p>
        The methods <code>EventTarget.hasEventListenerNS()</code> and
        <code>EventTarget.willTriggerNS()</code> have been removed.
       </p>

       <p>
        <code>EventTarget.dispatchEvent()</code> now raises an exception
        if the <code>Event.type</code> attribute is syntactically
        invalid.
       </p>
      </def>
     </gitem>

     <gitem>
      <label>Interface <code>Event</code></label>

      <def>
       <p>
        The method <code>Event.isCustom()</code> has been removed; it is
        not longer necessary due to the changes made to the
        <code>CustomEvent</code> interface.
       </p>

       <p>
        The method <code>Event.isDefaultPrevented()</code> has been
        turned into an attribute named
        <code>Event.defaultPrevented</code>.
       </p>

       <p>
        <code>Event.timeStamp</code> is now a <code>Number</code> in the
        ECMAScript binding; a proposed correction to make the same
        change in <bibref ref="DOMCore"></bibref> is forthcoming.
       </p>
      </def>
     </gitem>
    </glist>
   </div2>

   <div2 id="DOMEvents2to3Changes">
    <head>
     Changes between DOM Level 2 Events and DOM Level 3 Events
    </head>

    <note>
     <p>
      This section lists changes between DOM Level 2 Events and the DOM
      Level 3 Events Working Group Note published November 2003. This
      section will be merged with the preceding section (and list only
      changes between DOM Level 2 Events and this specification) in a
      future draft of this document.
     </p>
    </note>

    <p>
     This new specification provides a better separation between the DOM
     event flow, the event types, and the DOM interfaces.
    </p>

    <div3 id="DOMEvents2to3Changes-flow">
     <head>
      Changes to DOM Level 2 event flow
     </head>

     <p>
      This new specification introduced two new concepts in the event
      flow:
     </p>

     <ulist>
      <item>
       <p>
        event groups: unlike DOM Level 2 Events,
        <code>Event.stopPropagation()</code> does no longer stop the
        event propagation entirely. It only stops it for a given event
        group.
       </p>
      </item>

      <item>
       <p>
        partial ordering of event listeners: within an event group,
        event listeners are now ordered while ordering was unspecified
        in DOM Level 2 Events.
       </p>
      </item>
     </ulist>
    </div3>

    <div3 id="DOMEvents2to3Changes-event-types">
     <head>
      Changes to DOM Level 2 event types
     </head>

     <p>
      Lots of clarifications have been made on the event types. The
      conformance is now explicitly defined against the event types, and
      not only in terms of interfaces required by the event types.
      Support for namespaces and the features
      <code>"BasicEvents"</code>, <code>"TextEvents"</code>,
      <code>"KeyboardEvents"</code>, and
      <code>"MutationNameEvents"</code> have been introduced.
     </p>

     <p>
      The DOM Level 2 Event <termref def="event-load">load</termref>
      event type can now be dispatched to more
      <bibref role="informative" ref="HTML40"></bibref> elements.
      <termref def="event-blur">blur</termref> and
      <termref def="event-focus">focus</termref> have been clarified and
      restricted to <bibref role="informative" ref="HTML40"></bibref>
      applications only.
     </p>
    </div3>

    <div3 id="DOMLevel2to3Changes">
     <head>
      Changes to DOM Level 2 Events interfaces
     </head>

     <glist>
      <gitem>
       <label>Interface <code>Event</code></label>

       <def>
        <p>
         The <code>Event</code> interface has a new attribute
         <code>Event.namespaceURI</code>, and a four new methods:
         <code>Event.isCustom()</code>,
         <code>Event.stopImmediatePropagation()</code>,
         <code>Event.isDefaultPrevented()</code>, and
         <code>Event.initEventNS</code>.
        </p>
       </def>
      </gitem>

      <gitem>
       <label>Interface <code>EventTarget</code></label>

       <def>
        <p>
         The <code>EventTarget</code> interface has four new methods:
         <code>EventTarget.addEventListenerNS(namespaceURI, type,
         listener, useCapture, evtGroup)</code>,
         <code>EventTarget.removeEventListenerNS(namespaceURI, type,
         listener, useCapture)</code>,
         <code>EventTarget.willTriggerNS(namespaceURI, type)</code>,
         <code>EventTarget.hasEventListenerNS(namespaceURI,
         type)</code>. The method
         <code>EventTarget.dispatchEvent(evt)</code> was modified.
        </p>
       </def>
      </gitem>

      <gitem>
       <label>Interface <code>DocumentEvent</code></label>

       <def>
        <p>
         The <code>DocumentEvent</code> interface has one new method:
         <code>DocumentEvent.canDispatch(namespaceURI, type)</code>.
        </p>
       </def>
      </gitem>

      <gitem>
       <label>Interface <code>UIEvent</code></label>

       <def>
        <p>
         The <code>UIEvent</code> interface has a new method
         <code>UIEvent.initUIEventNS(...)</code>.
        </p>
       </def>
      </gitem>

      <gitem>
       <label>Interface <code>MouseEvent</code></label>

       <def>
        <p>
         The <code>MouseEvent</code> interface has two new methods
         <code>MouseEvent.getModifierState(keyIdentifierArg)</code> and
         <code>MouseEvent.initMouseEventNS(...)</code>.
        </p>
       </def>
      </gitem>

      <gitem>
       <label>Interface <code>MutationEvent</code></label>

       <def>
        <p>
         The <code>MutationEvent</code> interface has a new method
         <code>MutationEvent.initMutationEventNS(...)</code>.
        </p>
       </def>
      </gitem>

      <gitem>
       <label>Exception <code>EventException</code></label>

       <def>
        <p>
         The <code>DISPATCH_REQUEST_ERR</code> constant has been added.
        </p>
       </def>
      </gitem>
     </glist>
    </div3>

    <div3 id="DOMLevel3Addons">
     <head>
      New Interfaces
     </head>

     <p>
      The interfaces <code>CustomEvent</code>, <code>TextEvent</code>,
      <code>KeyboardEvent</code>, and <code>MutationNameEvent</code>
      were added to the Events module.
     </p>
    </div3>
   </div2>
  </div1>

  <div1 role="idl" id="idl">
   <head>
    IDL Definitions
   </head>

   <p>
    This appendix contains the complete OMG IDL
    <bibref ref="OMGIDL"></bibref> for the Level 3 Document Object Model
    Events definitions.
   </p>

   <p>
    The IDL files are also available as:
    <loc href="idl.zip" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/idl.zip</loc>
   </p>
<?GENERATE-IDL Events events dom.w3c.org dom views?>
  </div1>

  <div1 role="java-binding" id="java-binding">
   <head>
    Java Language Binding
   </head>

   <p>
    This appendix contains the complete Java
    <bibref ref="Java"></bibref> bindings for the Level 3 Document
    Object Model Events.
   </p>

   <p>
    The Java files are also available as
    <loc href="java-binding.zip" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">http://www.w3.org/TR/2006/WD-DOM-Level-3-Events-20060413/java-binding.zip</loc>
   </p>
<?GENERATE-JAVA Events org.w3c.dom events?>
  </div1>

  <div1 role="ecma-binding" id="ecma-binding">
   <head>
    ECMAScript Language Binding
   </head>

   <p>
    This appendix contains the complete ECMAScript
    <bibref ref="ECMAScript"></bibref> binding for the Level 3 Document
    Object Model Events definitions.
   </p>
<?GENERATE-ECMA Events?>
  </div1>

  <div1 role="acknowledgements" id="contributors">
   <head>
    Acknowledgements
   </head>

   <p>
    Many people contributed to the DOM specifications (Level 1, 2 or 3),
    including participants of the DOM Working Group and the DOM Interest
    Group. We especially thank the following:
   </p>

   <p>
    Andrew Watson (Object Management Group), Andy Heninger (IBM), Angel
    Diaz (IBM), Arnaud Le Hors (W3C and IBM), Ashok Malhotra (IBM and
    Microsoft), Ben Chang (Oracle), Bill Smith (Sun), Bill Shea (Merrill
    Lynch), Bob Sutor (IBM), Chris Lovett (Microsoft), Chris Wilson
    (Microsoft), David Brownell (Sun), David Ezell (Hewlett-Packard
    Company), David Singer (IBM), Dimitris Dimitriadis (Improve AB and
    invited expert), Don Park (invited), Elena Litani (IBM), Eric
    Vasilik (Microsoft), Gavin Nicol (INSO), Ian Jacobs (W3C), James
    Clark (invited), James Davidson (Sun), Jared Sorensen (Novell),
    Jeroen van Rotterdam (X-Hive Corporation), Joe Kesselman (IBM), Joe
    Lapp (webMethods), Joe Marini (Macromedia), Johnny Stenback
    (Netscape/AOL), Jon Ferraiolo (Adobe), Jonathan Marsh (Microsoft),
    Jonathan Robie (Texcel Research and Software AG), Kim Adamson-Sharpe
    (SoftQuad Software Inc.), Lauren Wood (SoftQuad Software Inc.,
    <emph>former Chair</emph>), Laurence Cable (Sun), Mark Davis (IBM),
    Mark Scardina (Oracle), Martin D&#252;rst (W3C), Mary Brady (NIST),
    Mick Goulish (Software AG), Mike Champion (Arbortext and Software
    AG), Miles Sabin (Cromwell Media), Patti Lutsky (Arbortext), Paul
    Grosso (Arbortext), Peter Sharpe (SoftQuad Software Inc.), Phil
    Karlton (Netscape), Philippe Le H&#233;garet (W3C, <emph>W3C Team
    Contact and former Chair</emph>), Ramesh Lekshmynarayanan (Merrill
    Lynch), Ray Whitmer (iMall, Excite@Home, and Netscape/AOL,
    <emph>Chair</emph>), Rezaur Rahman (Intel), Rich Rollman
    (Microsoft), Rick Gessner (Netscape), Rick Jelliffe (invited), Rob
    Relyea (Microsoft), Scott Isaacs (Microsoft), Sharon Adler (INSO),
    Steve Byrne (JavaSoft), Tim Bray (invited), Tim Yu (Oracle), Tom
    Pixley (Netscape/AOL), Vidur Apparao (Netscape), Vinod Anupam
    (Lucent).
   </p>

   <p>
    After publication of this document as Working Group Note in November
    2003, the participants of the WebAPI Working Group resumed
    development of this document:
   </p>

   <p>
    Anne van Kesteren (Opera Software), Arun Ranganathan (AOL),
    Bj&#246;rn H&#246;hrmann, Charles McCathieNevile (Opera Software,
    <emph>Co-Chair</emph>), Christophe Jolif (ILOG), Dean Jackson (W3C,
    <emph>W3C Team Contact</emph>), Doug Schepers (Vectoreal), Gorm Haug
    Eriksen (Opera Software), Ian Davis (Talis Information Limited), Ian
    Hickson (Google), John Robinson (AOL), Jonas Sicking (Mozilla
    Foundation), Luca Mascaro (HTML Writers Guild), Maciej Stachowiak
    (Apple Computer), Marc Hadley (Sun Microsystems), Michael Shenfield
    (Research In Motion), Robin Berjon, (Expway, <emph>Co-Chair</emph>)
    , Scott Hayman (Research In Motion), St&#233;phane Sire (IntuiLab),
    T.V. Raman (Google),
   </p>

   <p>
    Thanks to all those who have helped to improve this specification by
    sending suggestions and corrections (Please, keep bugging us with
    your issues!).
   </p>

   <p>
    Many thanks to Brad Pettit, Dylan Schiemann, David Flanagan, Steven
    Pemberton, Curt Arnold, Al Gilman, Misha Wolf, Sigurd Lerstad,
    Michael B. Allen, Alexander J. Vincent, Martin D&#252;rst, Ken
    Rehor, and, Cameron McCormack, for their review and comments of this
    document.
   </p>

   <p>
    Special thanks to the
    <loc href="http://www.w3.org/DOM/Test" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">DOM
    Conformance Test Suites</loc> contributors: Fred Drake, Mary Brady
    (NIST), Rick Rivello (NIST), Robert Clary (Netscape), Neil Delima
    (IBM), with a special mention to Curt Arnold.
   </p>

   <div2 id="Productions">
    <head>
     Production Systems
    </head>

    <p>
     This specification was written in XML. The HTML, OMG IDL, Java and
     ECMAScript bindings were all produced automatically.
    </p>

    <p>
     Thanks to Joe English, author of
     <loc href="http://www.flightlab.com/cost" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">cost</loc>,
     which was used as the basis for producing DOM Level 1. Thanks also
     to Gavin Nicol, who wrote the scripts which run on top of cost.
     Arnaud Le Hors and Philippe Le H&#233;garet maintained the scripts.
    </p>

    <p>
     After DOM Level 1, we used
     <loc href="http://xml.apache.org/xerces-j" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Xerces</loc>
     as the basis DOM implementation and wish to thank the authors.
     Philippe Le H&#233;garet and Arnaud Le Hors wrote the
     <loc href="http://dev.w3.org/cvsweb/java/classes/org/w3c/tools/specgenerator/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Java
     programs</loc> which are the DOM application.
    </p>

    <p>
     Thanks also to Jan K&#228;rrman, author of
     <loc href="http://user.it.uu.se/~jan/html2ps.html" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">html2ps</loc>,
     which we use in creating the PostScript version of the
     specification.
    </p>
   </div2>
  </div1>

  <div1 role="glossary" id="glossary">
   <head>
    Glossary
   </head>

   <orglist role="editors">
    <member>
     <name>Arnaud Le Hors</name>

     <affiliation>W3C</affiliation>
    </member>

    <member>
     <name>Robert S. Sutor</name>

     <affiliation>IBM Research (for DOM Level 1)</affiliation>
    </member>
   </orglist>

   <p>
    Some of the following term definitions have been borrowed or
    modified from similar definitions in other W3C or standards
    documents. See the links within the definitions for more
    information.
   </p>

   <glist>
    <gitem>
     <label id="dt-ancestor">ancestor</label>

     <def>
      <p>
       An <term>ancestor</term> node of any node A is any node above A
       in a tree model, where "above" means "toward the root."
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-API">API</label>

     <def>
      <p>
       An <term>API</term> is an Application Programming Interface, a
       set of functions or methods used to access some functionality.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-bubbling-phase">bubbling phase</label>

     <def>
      <p>
       The process by which an <termref def="dt-event">event</termref>
       can be handled by one of the target ancestors after being handled
       by the <termref def="dt-target-node">target node</termref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-capture-phase">capture phase</label>

     <def>
      <p>
       The process by which an <termref def="dt-event">event</termref>
       can be handled by one of the target ancestors before being
       handled by the <termref def="dt-target-node">target
       node</termref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-child">child</label>

     <def>
      <p>
       A <term>child</term> is an immediate descendant node of a node.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-convenience">convenience</label>

     <def>
      <p>
       A <term>convenience method</term> is an operation on an object
       that could be accomplished by a program consisting of more basic
       operations on the object. Convenience methods are usually
       provided to make the API easier and simpler to use or to allow
       specific programs to create more optimized implementations for
       common operations. A similar definition holds for a
       <term>convenience property</term>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-deprecation">deprecation</label>

     <def>
      <p>
       When new releases of specifications are released, some older
       features may be marked as being <term>deprecated</term>. This
       means that new work should not use the features and that although
       they are supported in the current release, they may not be
       supported or available in future releases.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-descendant">descendant</label>

     <def>
      <p>
       A <term>descendant</term> node of any node A is any node below A
       in a tree model, where "below" means "away from the root."
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-document-element">document element</label>

     <def>
      <p>
       There is only one document element in a <code>Document</code>.
       This element node is a child of the <code>Document</code> node.
       See
       <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#dt-root" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Well-Formed
       XML Documents</xspecref> in XML
       <bibref role="informative" ref="XML"></bibref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-document-order">document order</label>

     <def>
      <p>
       There is an ordering, <term>document order</term>, defined on all
       the nodes in the document corresponding to the order in which the
       first character of the XML representation of each node occurs in
       the XML representation of the document after expansion of general
       entities. Thus, the <termref def="dt-document-element">document
       element</termref> node will be the first node. Element nodes
       occur before their children. Thus, document order orders element
       nodes in order of the occurrence of their start-tag in the XML
       (after expansion of entities). The attribute nodes of an element
       occur after the element and before its children. The relative
       order of attribute nodes is implementation-dependent.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-DOM-Level-0">DOM Level 0</label>

     <def>
      <p>
       The term "DOM Level 0" refers to a mix (not formally specified)
       of HTML document functionalities offered by Netscape Navigator
       version 3.0 and Microsoft Internet Explorer version 3.0. In some
       cases, attributes or methods have been included for reasons of
       backward compatibility with "DOM Level 0".
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-ECMAScript">ECMAScript</label>

     <def>
      <p>
       The programming language defined by the ECMA-262 standard
       <bibref role="informative" ref="ECMAScript"></bibref>. As stated
       in the standard, the originating technology for ECMAScript was
       JavaScript <bibref role="informative" ref="JavaScript"></bibref>.
       Note that in the ECMAScript binding, the word "property" is used
       in the same sense as the IDL term "attribute."
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-element">element</label>

     <def>
      <p>
       Each document contains one or more elements, the boundaries of
       which are either delimited by start-tags and end-tags, or, for
       empty elements by an empty-element tag. Each element has a type,
       identified by name, and may have a set of attributes. Each
       attribute has a name and a value. See
       <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#sec-logical-struct" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">Logical
       Structures</xspecref> in XML
       <bibref role="informative" ref="XML"></bibref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-event">event</label>

     <def>
      <p>
       An event is the representation of some asynchronous occurrence
       (such as a mouse click on the presentation of the element, or the
       removal of child node from an element, or any of unthinkably many
       other possibilities) that gets associated with an
       <termref def="dt-event-target">event target</termref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-event-target">event target</label>

     <def>
      <p>
       The object to which an <termref def="dt-event">event</termref> is
       targeted.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-infoitem">information item</label>

     <def>
      <p>
       An information item is an abstract representation of some
       component of an XML document. See the
       <bibref role="informative" ref="InfoSet"></bibref> for details.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-implementation">hosting implementation</label>

     <def>
      <p>
       A [hosting] implementation is a software module that provides an
       implementation of the DOM interfaces so that a client application
       can use them. Some examples of hosting implementations are
       browsers, editors and document repositories.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-HTML">HTML</label>

     <def>
      <p>
       The HyperText Markup Language (<term>HTML</term>) is a simple
       markup language used to create hypertext documents that are
       portable from one platform to another. HTML documents are SGML
       documents with generic semantics that are appropriate for
       representing information from a wide range of applications.
       <bibref role="informative" ref="HTML40"></bibref>
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-implementor">implementor</label>

     <def>
      <p>
       Companies, organizations, and individuals that claim to support
       the Document Object Model as an API for their products.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-inheritance">inheritance</label>

     <def>
      <p>
       In object-oriented programming, the ability to create new classes
       (or interfaces) that contain all the methods and properties of
       another class (or interface), plus additional methods and
       properties. If class (or interface) D inherits from class (or
       interface) B, then D is said to be <term>derived</term> from B. B
       is said to be a <term>base</term> class (or interface) for D.
       Some programming languages allow for multiple inheritance, that
       is, inheritance from more than one class or interface.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-interface">interface</label>

     <def>
      <p>
       An <term>interface</term> is a declaration of a set of methods
       with no information given about their implementation. In object
       systems that support interfaces and inheritance, interfaces can
       usually inherit from one another.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-lang-binding">language binding</label>

     <def>
      <p>
       A programming <term>language binding</term> for an IDL
       specification is an implementation of the interfaces in the
       specification for the given language. For example, a Java
       language binding for the Document Object Model IDL specification
       would implement the concrete Java classes that provide the
       functionality exposed by the interfaces.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-live">live</label>

     <def>
      <p>
       An object is <term>live</term> if any change to the underlying
       document structure is reflected in the object.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-localname">local name</label>

     <def>
      <p>
       See
       <xtermref role="informative" href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-localname" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">local
       name</xtermref> in
       <bibref role="informative" ref="Namespaces11"></bibref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-method">method</label>

     <def>
      <p>
       A <term>method</term> is an operation or function that is
       associated with an object and is allowed to manipulate the
       object's data.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-namespaceprefix">namespace prefix</label>

     <def>
      <p>
       A <term>namespace prefix</term> is a string that associates an
       element or attribute name with a <term>namespace URI</term> in
       XML. See
       <xtermref href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-prefix" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">namespace
       prefix</xtermref> in
       <bibref role="informative" ref="Namespaces11"></bibref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-namespaceURI">namespace URI</label>

     <def>
      <p>
       A <term>namespace URI</term> is a URI that identifies an XML
       namespace. This is called the
       <xtermref href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/#dt-NSName" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">namespace
       name</xtermref> in
       <bibref role="informative" ref="Namespaces11"></bibref>. See also
       sections 1.3.2
       "<xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#baseURIs-Considerations" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">DOM
       URIs</xspecref>" and 1.3.3
       "<xspecref href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#Namespaces-Considerations" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">XML
       Namespaces</xspecref>" regarding URIs and namespace URIs handling
       and comparison in the DOM APIs.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-object-model">object model</label>

     <def>
      <p>
       An <term>object model</term> is a collection of descriptions of
       classes or interfaces, together with their member data, member
       functions, and class-static operations.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-parent">parent</label>

     <def>
      <p>
       A <term>parent</term> is an immediate ancestor node of a node.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-sibling">sibling</label>

     <def>
      <p>
       Two nodes are <term>siblings</term> if they have the same parent
       node.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-string-compare">string comparison</label>

     <def>
      <p>
       When string matching is required, it is to occur as though the
       comparison was between 2 sequences of code points from
       <bibref role="informative" ref="Unicode"></bibref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-target-node">target node</label>

     <def>
      <p>
       The target node is the node representing the
       <termref def="dt-event-target">event target</termref> to which an
       <termref def="dt-event">event</termref> is targeted using the DOM
       event flow.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-target-phase">target phase</label>

     <def>
      <p>
       The process by which an <termref def="dt-event">event</termref>
       can be handled by the <termref def="dt-event-target">event
       target</termref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-token">token</label>

     <def>
      <p>
       An information item such as an
       <xtermref href="http://www.w3.org/TR/REC-xml.html#NT-Name" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">XML
       Name</xtermref> which has been
       <termref def="dt-tokenized">tokenized</termref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-tokenized">tokenized</label>

     <def>
      <p>
       The description given to various information items (for example,
       attribute values of various types, but not including the
       StringType CDATA) after having been processed by the XML
       processor. The process includes stripping leading and trailing
       white space, and replacing multiple space characters by one. See
       the definition of
       <xtermref href="http://www.w3.org/TR/REC-xml.html#NT-TokenizedType" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">tokenized
       type</xtermref>.
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-XML">XML</label>

     <def>
      <p>
       Extensible Markup Language (<term>XML</term>) is an extremely
       simple dialect of SGML which is completely described in this
       document. The goal is to enable generic SGML to be served,
       received, and processed on the Web in the way that is now
       possible with HTML. XML has been designed for ease of
       implementation and for interoperability with both SGML and HTML.
       <bibref role="informative" ref="XML"></bibref>
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-XML-name">XML name</label>

     <def>
      <p>
       See
       <xspecref href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-Name" xlink:actuate="onRequest" xlink:show="new" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">XML
       name</xspecref> in the XML specification
       (<bibref role="informative" ref="XML"></bibref>).
      </p>
     </def>
    </gitem>

    <gitem>
     <label id="dt-XML-namespace">XML namespace</label>

     <def>
      <p>
       An <term>XML namespace</term> is a collection of names,
       identified by a URI reference
       <bibref role="informative" ref="URIRef"></bibref>, which are used
       in XML documents as element types and attribute names.
       <bibref role="informative" ref="Namespaces"></bibref>
      </p>
     </def>
    </gitem>
   </glist>
  </div1>

  <div1 role="references" id="References">
   <head>
    References
   </head>

   <p>
    For the latest version of any W3C specification please consult the
    list of
    <loc href="http://www.w3.org/TR" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">W3C
    Technical Reports</loc> available at http://www.w3.org/TR.
   </p>

   <blist>
    <bibl id="Charmod" key="CharModel" href="http://www.w3.org/TR/2003/WD-charmod-20030822/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Character
     Model for the World Wide Web 1.0</titleref>, M. D&#252;rst, F.
     Yergeau, R. Ishida, M. Wolf, T. Texin, Editors. World Wide Web
     Consortium, August 2003. This version of the Character Model for
     the World Wide Web Specification is
     http://www.w3.org/TR/2003/WD-charmod-20030822/. The
     <loc href="http://www.w3.org/TR/charmod/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of Character Model</loc> is available at
     http://www.w3.org/TR/charmod/.
    </bibl>

    <bibl id="DOM2Core" key="DOM Level 2 Core" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Document
     Object Model Level 2 Core Specification</titleref>, A. Le Hors, et
     al., Editors. World Wide Web Consortium, November 2000. This
     version of the DOM Level 2 Core Recommendation is
     http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113. The
     <loc href="http://www.w3.org/TR/DOM-Level-2-Core" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of DOM Level 2 Core</loc> is available at
     http://www.w3.org/TR/DOM-Level-2-Core.
    </bibl>

    <bibl id="DOMCore" key="DOM Level 3 Core" href="http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Document
     Object Model Level 3 Core Specification</titleref>, A. Le Hors, et
     al., Editors. World Wide Web Consortium, April 2004. This version
     of the Document Object Model Level 3 Core Specification is
     http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407. The
     <loc href="http://www.w3.org/TR/DOM-Level-3-Core" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of DOM Level 3 Core</loc> is available at
     http://www.w3.org/TR/DOM-Level-3-Core.
    </bibl>

    <bibl id="DOM2Events" key="DOM Level 2 Events" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Document
     Object Model Level 2 Events Specification</titleref>, T. Pixley,
     Editor. World Wide Web Consortium, November 2000. This version of
     the Document Object Model Level 2 Events Specification is
     http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113. The
     <loc href="http://www.w3.org/TR/DOM-Level-2-Events" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of Document Object Model Level 2 Events</loc> is available
     at http://www.w3.org/TR/DOM-Level-2-Events.
    </bibl>

    <bibl id="DOMLS" key="DOM Level 3 Load and Save" href="http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Document
     Object Model Level 3 Load and Save Specification</titleref>, J.
     Stenback, A. Heninger, Editors. World Wide Web Consortium, April
     2004. This version of the DOM Level 3 Load and Save Specification
     is http://www.w3.org/TR/2004/REC-DOM-Level-3-LS-20040407. The
     <loc href="http://www.w3.org/TR/DOM-Level-3-LS" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of DOM Level 3 Load and Save</loc> is available at
     http://www.w3.org/TR/DOM-Level-3-LS.
    </bibl>

    <bibl id="DOM2HTML" key="DOM Level 2 HTML" href="http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Document
     Object Model Level 2 HTML Specification</titleref>, J. Stenback, et
     al., Editors. World Wide Web Consortium, January 2003. This version
     of the Document Object Model Level 2 HTML Recommendation is
     http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109. The
     <loc href="http://www.w3.org/TR/DOM-Level-2-HTML" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of Document Object Model Level 2 HTML</loc> is available at
     http://www.w3.org/TR/DOM-Level-2-HTML.
    </bibl>

    <bibl id="DOM2Views" key="DOM Level 2 Views" href="http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Document
     Object Model Level 2 Views Specification</titleref>, A. Le Hors, L.
     Cable, Editors. World Wide Web Consortium, November 2000. This
     version of the Document Object Model Level 2 Views Recommendation
     is http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113. The
     <loc href="http://www.w3.org/TR/DOM-Level-2-Views" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of Document Object Model Level 2 Views</loc> is available
     at http://www.w3.org/TR/DOM-Level-2-Views.
    </bibl>

    <bibl id="DWW95" key="DWW95" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Developing
     International Software for Windows 95 and Windows NT: A Handbook
     for International Software Design</titleref>, N. Kano, Author.
     Microsoft Press, 1995. ISBN 1-55615-840-8.
    </bibl>

    <bibl id="ECMAScript" key="ECMAScript" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">ECMAScript
     Language Specification</titleref>, Third Edition. European Computer
     Manufacturers Association, Standard ECMA-262, December 1999. This
     version of the ECMAScript Language is available from
     http://www.ecma-international.org/.
    </bibl>

    <bibl id="HTML40" key="HTML 4.01" href="http://www.w3.org/TR/1999/REC-html401-19991224/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">HTML
     4.01 Specification</titleref>, D. Raggett, A. Le Hors, and I.
     Jacobs, Editors. World Wide Web Consortium, December 1999. This
     version of the HTML 4.01 Recommendation is
     http://www.w3.org/TR/1999/REC-html401-19991224. The
     <loc href="http://www.w3.org/TR/html4" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of HTML 4</loc> is available at http://www.w3.org/TR/html4.
    </bibl>

    <bibl id="ISO10646" key="ISO/IEC 10646" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">ISO/IEC
     10646-2000 (E). Information technology - Universal Multiple-Octet
     Coded Character Set (UCS) - Part 1: Architecture and Basic
     Multilingual Plane</titleref>, as, from time to time, amended,
     replaced by a new edition or expanded by the addition of new parts.
     [Geneva]: International Organization for Standardization, 2000. See
     also
     <loc href="http://www.iso.ch" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">International
     Organization for Standardization</loc>, available at
     http://www.iso.ch, for the latest version.
    </bibl>

    <bibl id="Java" key="Java" href="http://java.sun.com/docs/books/jls" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">The
     Java Language Specification</titleref>, J. Gosling, B. Joy, and G.
     Steele, Authors. Addison-Wesley, September 1996. Available at
     http://java.sun.com/docs/books/jls
    </bibl>

    <bibl id="JavaIDL" key="Java IDL" href="http://java.sun.com/products/jdk/1.2/docs/guide/idl" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Java
     IDL</titleref>. Sun Microsystems. Available at
     http://java.sun.com/products/jdk/1.2/docs/guide/idl
    </bibl>

    <bibl id="JavaScript" key="JavaScript" href="http://developer.netscape.com/tech/javascript/resources.html" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">JavaScript
     Resources</titleref>. Netscape Communications Corporation.
     Available at
     http://developer.netscape.com/tech/javascript/resources.html
    </bibl>

    <bibl id="JScript" key="JScript" href="http://msdn.microsoft.com/scripting/default.htm" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">JScript
     Resources</titleref>. Microsoft. Available at
     http://msdn.microsoft.com/scripting/default.htm
    </bibl>

    <bibl id="KeyEvent" key="KeyEvent for Java" href="http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/KeyEvent.html" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Java
     2 SDK, Standard Edition Documentation, Version 1.4.2, Class
     java.awt.events.KeyEvent</titleref>. Sun Microsystems. Available at
     http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/KeyEvent.html.
    </bibl>

    <bibl id="Keys" key="Keys enumeration for .Net" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsKeysClassTopic.asp" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">.NET
     Framework Class Library, Keys Enumeration</titleref>. Microsoft.
     Available at
     http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWindowsFormsKeysClassTopic.asp.
    </bibl>

    <bibl id="MSIDL" key="MIDL" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/midl/midl/midl_language_reference.asp" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">MIDL
     Language Reference</titleref>. Microsoft. Available at
     http://msdn.microsoft.com/library/default.asp?url=/library/en-us/midl/midl/midl_language_reference.asp.
    </bibl>

    <bibl id="OMGIDL" key="OMG IDL" href="http://www.omg.org/technology/documents/formal/corba_2.htm" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <quote>OMG IDL Syntax and Semantics</quote> defined in
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">The
     Common Object Request Broker: Architecture and Specification,
     version 2</titleref>, Object Management Group. The latest version
     of CORBA version 2.0 is available at
     http://www.omg.org/technology/documents/formal/corba_2.htm.
    </bibl>

    <bibl id="IRIRef" key="IETF IRIs" href="http://www.w3.org/International/iri-edit/draft-duerst-iri-03.txt" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Internationalized
     Resource Identifiers (IRIs)</titleref>, M. D&#252;rst, and M.
     Suignard, Authors. Internet Engineering Task Force, March 2003.
     Available at
     http://www.w3.org/International/iri-edit/draft-duerst-iri-03.txt.
    </bibl>

    <bibl id="URIRef" key="IETF RFC 2396" href="http://www.ietf.org/rfc/rfc2396.txt" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Uniform
     Resource Identifiers (URI): Generic Syntax</titleref>, T.
     Berners-Lee, R. Fielding, L. Masinter, Authors. Internet
     Engineering Task Force, August 1998. Available at
     http://www.ietf.org/rfc/rfc2396.txt.
    </bibl>

    <bibl id="SVG1" key="SVG 1.1" href="http://www.w3.org/TR/2003/REC-SVG11-20030114/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Scalable
     Vector Graphics (SVG) 1.1 Specification</titleref>, J. Ferraiolo,
     &#34276;&#27810; &#28147; (FUJISAWA Jun), and D. Jackson, Editors.
     World Wide Web Consortium, January 2003. This version of the SVG
     1.1 Recommendation is
     http://www.w3.org/TR/2003/REC-SVG11-20030114/. The
     <loc href="http://www.w3.org/TR/SVG11/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of SVG 1.1</loc> is available at
     http://www.w3.org/TR/SVG11/.
    </bibl>

    <bibl id="Unicode" key="Unicode" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">The
     Unicode Standard, Version 4</titleref>, ISBN 0-321-18578-1, as
     updated from time to time by the publication of new versions. The
     Unicode Consortium, 2003. See also
     <loc href="http://www.unicode.org/unicode/standard/versions" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">Versions
     of the Unicode Standard</loc>, available at
     http://www.unicode.org/unicode/standard/versions, for latest
     version and additional information on versions of the standard and
     of the Unicode Character Database.
    </bibl>

    <bibl id="UnicodeNormalization" key="UAX #15" href="http://www.unicode.org/reports/tr15/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Unicode
     Normalization Forms</titleref>, The Unicode Standard Annex #15. The
     Unicode Consortium, 2005. The latest version of this annex is
     available at http://www.unicode.org/reports/tr15/.
    </bibl>

    <bibl id="VoiceXML20" key="VoiceXML 2.0" href="http://www.w3.org/TR/2004/REC-voicexml20-20040316/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Voice
     Extensible Markup Language (VoiceXML) Version 2.0</titleref>, S.
     McGlashan, et al., Editors. World Wide Web Consortium, March 2004.
     This version of the Voice Extensible Markup Language Version 2.0
     Recommendation is
     http://www.w3.org/TR/2004/REC-voicexml20-20040316/. The
     <loc href="http://www.w3.org/TR/voicexml20/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of Voice Extensible Markup Language Version 2.0</loc> is
     available at http://www.w3.org/TR/voicexml20/.
    </bibl>

    <bibl id="XForms10" key="XForms 1.0" href="http://www.w3.org/TR/2006/REC-xforms-20060314/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XForms
     1.0 (Second Edition)</titleref>, M. Dubinko, et al., Editors. World
     Wide Web Consortium, March 2006. This version of the XForms 1.0
     Recommendation is http://www.w3.org/TR/2006/REC-xforms-20060314/.
     The
     <loc href="http://www.w3.org/TR/xforms/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of XForms 1.0</loc> is available at
     http://www.w3.org/TR/xforms/.
    </bibl>

    <bibl id="XHTML10" key="XHTML 1.0" href="http://www.w3.org/TR/2002/REC-xhtml1-20020801" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XHTML
     1.0: The Extensible HyperText Markup Language (Second
     Edition)</titleref>, S. Pemberton, et al., Authors. World Wide Web
     Consortium, August 2002. This version of the XHTML 1.0
     Recommendation is http://www.w3.org/TR/2002/REC-xhtml1-20020801.
     The
     <loc href="http://www.w3.org/TR/xhtml1" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of XHTML 1.0</loc> is available at
     http://www.w3.org/TR/xhtml1.
    </bibl>

    <bibl id="XML" key="XML 1.0" href="http://www.w3.org/TR/2004/REC-xml-20040204" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Extensible
     Markup Language (XML) 1.0 (Third Edition)</titleref>, T. Bray, J.
     Paoli, C. M. Sperberg-McQueen, et. al, Editors. World Wide Web
     Consortium, February 2004. This version of the XML 1.0
     Recommendation is http://www.w3.org/TR/2004/REC-xml-20040204. The
     <loc href="http://www.w3.org/TR/REC-xml" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of XML 1.0</loc> is available at
     http://www.w3.org/TR/REC-xml.
    </bibl>

    <bibl id="XML11" key="XML 1.1" href="http://www.w3.org/TR/2004/REC-xml11-20040204/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XML
     1.1</titleref>, T. Bray, and al., Editors. World Wide Web
     Consortium, February 2004. This version of the XML 1.1
     Recommendation is http://www.w3.org/TR/2004/REC-xml11-20040204. The
     <loc href="http://www.w3.org/TR/xml11/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of XML 1.1</loc> is available at
     http://www.w3.org/TR/xml11.
    </bibl>

    <bibl id="InfoSet" key="XML Information Set" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XML
     Information Set</titleref>, J. Cowan and R. Tobin, Editors. World
     Wide Web Consortium, February 2004. This version of the XML
     Information Set Recommendation is
     http://www.w3.org/TR/2004/REC-xml-infoset-20040204. The
     <loc href="http://www.w3.org/TR/xml-infoset/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of XML Information Set</loc> is available at
     http://www.w3.org/TR/xml-infoset.
    </bibl>

    <bibl id="XMLEvents" key="XML Events" href="http://www.w3.org/TR/2003/REC-xml-events-20031014" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">XML
     Events</titleref>, S. McCarron, S. Pemberton, and T.V. Raman,
     Editors. World Wide Web Consortium, October 2003. This version of
     the XML Events Recommendation is
     http://www.w3.org/TR/2003/REC-xml-events-20031014. The
     <loc href="http://www.w3.org/TR/xml-events/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of XML Events</loc> is available at
     http://www.w3.org/TR/xml-events.
    </bibl>

    <bibl id="Namespaces" key="XML Namespaces" href="http://www.w3.org/TR/1999/REC-xml-names-19990114/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Namespaces
     in XML</titleref>, T. Bray, D. Hollander, and A. Layman, Editors.
     World Wide Web Consortium, 14 January 1999. This version of the
     Namespaces in XML Recommendation is
     http://www.w3.org/TR/1999/REC-xml-names-19990114. The
     <loc href="http://www.w3.org/TR/REC-xml-names/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of Namespaces in XML</loc> is available at
     http://www.w3.org/TR/REC-xml-names.
    </bibl>

    <bibl id="Namespaces11" key="XML Namespaces 1.1" href="http://www.w3.org/TR/2004/REC-xml-names11-20040204/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple" xmlns:xlink="http://www.w3.org/1999/xlink">
     <titleref xlink:actuate="onRequest" xlink:show="new" xlink:type="simple">Namespaces
     in XML 1.1</titleref>, T. Bray, D. Hollander, A. Layman, and R.
     Tobin, Editors. World Wide Web Consortium, February 2004. This
     version of the Namespaces in XML 1.1 Specification is
     http://www.w3.org/TR/2004/REC-xml-names11-20040204/. The
     <loc href="http://www.w3.org/TR/xml-names11/" xlink:actuate="onRequest" xlink:show="replace" xlink:type="simple">latest
     version of Namespaces in XML 1.1</loc> is available at
     http://www.w3.org/TR/xml-names11/.
    </bibl>
   </blist>
  </div1>

  <div1 role="index" id="Index">
   <head>
    Index
   </head>
<?GENERATE-DEFINITION-INDEX?>
  </div1>
 </back>
</spec>
