<?xml version="1.0"?>
<!--
Copyright (c) 2002-2003 World Wide Web Consortium,
(Massachusetts Institute of Technology, Institut National de
Recherche en Informatique et en Automatique, Keio University). All
Rights Reserved. This program is distributed under the W3C's Document
Intellectual Property License. This program is distributed 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.
See W3C License http://www.w3.org/Consortium/Legal/ for more details.
-->
<!--This file is an extract of interface definitions from Document Object Model (DOM) Level 3 Events Specification-->
<library xmlns:xlink="http://www.w3.org/1999/xlink">
  <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"/>.</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 name should be anas defined in<bibref ref="Namespaces"/>and is case-sensitive.</p>
        <p>If the attribute<code>Event.namespaceURI</code>is different from<code>null</code>, this attribute represents a<termref def="dt-localname">local name</termref>.</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"/>.</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"/>.</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"/>). 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 (in milliseconds relative to the epoch) at which the event was created. 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, a value of<code>0</code>will be returned. Examples of epoch time are the time of the system start or 0:0:0 UTC 1st January 1970.</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>currentTarget</code>have been triggered (see<specref ref="Events-propagation-and-groups"/>). 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>preventDefault</code>for that effect.</p>
        </note>
      </descr>
      <parameters/>
      <returns type="void">
        <descr>
          <p/>
        </descr>
      </returns>
      <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"/>), 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>stopPropagation</code>or<code>stopImmediatePropagation</code>for that effect.</p>
        </note>
      </descr>
      <parameters/>
      <returns type="void">
        <descr>
          <p/>
        </descr>
      </returns>
      <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(namespaceURIArg, eventTypeArg, ...)</code>method.</p>
      </descr>
      <parameters>
        <param name="eventTypeArg" type="DOMString" attr="in">
          <descr>
            <p>Specifies<code>Event.type</code>.</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/>
        </descr>
      </returns>
      <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="isCustom" id="Events-Event-isCustom" since="DOM Level 3">
      <descr>
        <p>This method will always return<code>false</code>, unless the event implements the<code>CustomEvent</code>interface.</p>
      </descr>
      <parameters/>
      <returns type="boolean">
        <descr>
          <p><code>false</code>, unless the event object implements the<code>CustomEvent</code>interface.</p>
        </descr>
      </returns>
      <raises/>
    </method>
    <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>stopPropagation</code>its effect is immediate (see<specref ref="Events-propagation-and-groups"/>). 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/>
      <returns type="void">
        <descr>
          <p/>
        </descr>
      </returns>
      <raises/>
    </method>
    <method name="isDefaultPrevented" id="Events-Event-isDefaultPrevented" since="DOM Level 3">
      <descr>
        <p>This method will return<code>true</code>if the method<code>Event.preventDefault()</code>has been called for this event,<code>false</code>otherwise.</p>
      </descr>
      <parameters/>
      <returns type="boolean">
        <descr>
          <p><code>true</code>if<code>Event.preventDefault()</code>has been called for this event.</p>
        </descr>
      </returns>
      <raises/>
    </method>
    <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>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>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/>
        </descr>
      </returns>
      <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"/>. The interface allows registration, removal or query of event listeners, and dispatch of events to an event target.</p>
      <p>When used with<specref ref="Events-flow"/>, 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>multiple times on the same<code>EventTarget</code>with the same parameters (<code>namespaceURI</code>,<code>type</code>,<code>listener</code>, and<code>useCapture</code>) is considered to be a no-op and thus independently of the event group. They do not cause the<code>EventListener</code>to be called more than once and do not cause a change in the triggering order. In order to guarantee that an event listener will be added to the event target for the specified event group, one needs to invoke<code>removeEventListener</code>or<code>removeEventListenerNS</code>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.</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/>
        </descr>
      </returns>
      <raises/>
    </method>
    <method name="removeEventListener" id="Events-EventTarget-removeEventListener">
      <descr>
        <p>This method allows the removal of event listeners from the default group.</p>
        <p>Calling<code>removeEventListener</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="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/>
        </descr>
      </returns>
      <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 in the tree.</p>
            <p>NOT_SUPPORTED_ERR: Raised if the<code>Event</code>object has not been created using<code>DocumentEvent.createEvent()</code>or does not support the interface<code>CustomEvent</code>.</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>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>
        <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"/>). Use<code>null</code>to attach the event listener to the default group.</p>
          </descr>
        </param>
      </parameters>
      <returns type="void">
        <descr/>
      </returns>
      <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.</p>
        <p>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>Specifies the<code>Event.type</code>associated with the event for which the user registered the event listener.</p>
          </descr>
        </param>
        <param name="listener" type="EventListener" attr="in">
          <descr>
            <p>The<code>EventListener</code>parameter indicates 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/>
        </descr>
      </returns>
      <raises/>
    </method>
    <method name="willTriggerNS" since="DOM Level 3" id="Events3-willTriggerNS">
      <descr>
        <p>This method allows the DOM application to know if an event listener, attached to this<code>EventTarget</code>or one of its ancestors, will be triggered by the specified event type during the dispatch of the event to this event target or one of its descendants.</p>
      </descr>
      <parameters>
        <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
            <p>Specifies the<code>Event.namespaceURI</code>associated with the event.</p>
          </descr>
        </param>
        <param name="type" type="DOMString" attr="in">
          <descr>
            <p>Specifies the<code>Event.type</code>associated with the event.</p>
          </descr>
        </param>
      </parameters>
      <returns type="boolean">
        <descr>
          <p><code>true</code>if an event listener will be triggered on the<code>EventTarget</code>with the specified event type,<code>false</code>otherwise.</p>
        </descr>
      </returns>
      <raises/>
    </method>
    <method name="hasEventListenerNS" since="DOM Level 3" id="Events3-hasEventListenerNS">
      <descr>
        <p>This method allows the DOM application to know if this<code>EventTarget</code>contains an event listener registered for the specified event type. This is useful for determining at which nodes within a hierarchy altered handling of specific event types has been introduced, but should not be used to determine whether the specified event type triggers an event listener (see<code>EventTarget.willTriggerNS()</code>).</p>
      </descr>
      <parameters>
        <param name="namespaceURI" type="DOMString" attr="in">
          <descr>
            <p>Specifies the<code>Event.namespaceURI</code>associated with the event.</p>
          </descr>
        </param>
        <param name="type" type="DOMString" attr="in">
          <descr>
            <p>Specifies the<code>Event.type</code>associated with the event.</p>
          </descr>
        </param>
      </parameters>
      <returns type="boolean">
        <descr>
          <p><code>true</code>if an event listener is registered on this<code>EventTarget</code>for the specified event type,<code>false</code>otherwise.</p>
        </descr>
      </returns>
      <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/>
        </descr>
      </returns>
      <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>
  <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/>
      </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,<code>{"http://www.w3.org/2001/xml-events", "DOMActivate"}</code>for example, and set its context information, e.g.<code>UIEvent.detail</code>in this example.</p>
            <p>The<code>createEvent</code>method is used in creating<code>Event</code>s when it is either inconvenient or unnecessary for the user to create an<code>Event</code>themselves. In cases where the implementation provided<code>Event</code>is insufficient, users may supply their own<code>Event</code>implementations for use with the<code>EventTarget.dispatchEvent()</code>method. However, the DOM implementation needs access to the attributes<code>Event.currentTarget</code>and<code>Event.eventPhase</code>to appropriately propagate the event in the DOM tree. Therefore users'<code>Event</code>implementations might need to support the<code>CustomEvent</code>interface for that effect.</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/>
    </method>
  </interface>
  <interface name="CustomEvent" inherits="Event" id="Events-CustomEvent" since="DOM Level 3">
    <descr>
      <p>The<code>CustomEvent</code>interface gives access to the attributes<code>Event.currentTarget</code>and<code>Event.eventPhase</code>. It is intended to be used by the DOM Events implementation to access the underlying current target and event phase while dispatching a custom<code>Event</code>in the tree; it is also intended to be implemented, and<emph>not used</emph>, by DOM applications.</p>
      <p>The methods contained in this interface are not intended to be used by a DOM application, especially during the dispatch on the<code>Event</code>object. Changing the current target or the current phase may result in unpredictable results of the event flow. The DOM Events implementation should ensure that both methods return the appropriate current target and phase before invoking each event listener on the current target to protect DOM applications from malicious event listeners.</p>
      <note>
        <p>If this interface is supported by the event object,<code>Event.isCustom()</code>must return<code>true</code>.</p>
      </note>
    </descr>
    <method name="setDispatchState" id="Events-CustomEvent-setCurrentTarget">
      <descr>
        <p>The<code>setDispatchState</code>method is used by the DOM Events implementation to set the values of<code>Event.currentTarget</code>and<code>Event.eventPhase</code>. It also reset the states of<code>isPropagationStopped</code>and<code>isImmediatePropagationStopped</code>.</p>
      </descr>
      <parameters>
        <param name="target" type="EventTarget" attr="in">
          <descr>
            <p>Specifies the new value for the<code>Event.currentTarget</code>attribute.</p>
          </descr>
        </param>
        <param name="phase" type="unsigned short" attr="in">
          <descr>
            <p>Specifies the new value for the<code>Event.eventPhase</code>attribute.</p>
          </descr>
        </param>
      </parameters>
      <returns type="void">
        <descr/>
      </returns>
      <raises/>
    </method>
    <method name="isPropagationStopped" id="Events-Event-isPropagationStopped">
      <descr>
        <p>This method will return<code>true</code>if the method<code>stopPropagation()</code>has been called for this event,<code>false</code>in any other cases.</p>
      </descr>
      <parameters/>
      <returns type="boolean">
        <descr>
          <p><code>true</code>if the event propagation has been stopped in the current group.</p>
        </descr>
      </returns>
      <raises/>
    </method>
    <method name="isImmediatePropagationStopped" id="Events-Event-isImmediatePropagationStopped">
      <descr>
        <p>The<code>isImmediatePropagationStopped</code>method is used by the DOM Events implementation to know if the method<code>stopImmediatePropagation()</code>has been called for this event. It returns<code>true</code>if the method has been called,<code>false</code>otherwise.</p>
      </descr>
      <parameters/>
      <returns type="boolean">
        <descr>
          <p><code>true</code>if the event propagation has been stopped immediately in the current group.</p>
        </descr>
      </returns>
      <raises/>
    </method>
  </interface>
  <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>.</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/>
        </descr>
      </returns>
      <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/>
        </descr>
      </returns>
      <raises/>
    </method>
  </interface>
  <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"/>. Characters should be normalized as defined by the Unicode normalization form<term>NFC</term>, defined in<bibref ref="UnicodeNormalization"/>. 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/>
      </returns>
      <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/>
      </returns>
      <raises/>
    </method>
  </interface>
  <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. Currently this attribute is used with the mouseover event to indicate the<code>EventTarget</code>which the pointing device exited and with the mouseout event to indicate the<code>EventTarget</code>which the pointing device entered.</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>.</p>
          </descr>
        </param>
      </parameters>
      <returns type="void">
        <descr>
          <p/>
        </descr>
      </returns>
      <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"/>.</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/>
    </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>Aseparated 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/>
        </descr>
      </returns>
      <raises/>
    </method>
  </interface>
  <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"/>". 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"/>.</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"/>.</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/>
    </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>Aseparated list of modifier key identifiers to be activated on this object.</p>
          </descr>
        </param>
      </parameters>
      <returns type="void">
        <descr/>
      </returns>
      <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>Aseparated 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/>
      </returns>
      <raises/>
    </method>
  </interface>
  <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<code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code>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<code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code>events, and of the<code>CharacterData</code>node in<code>{"http://www.w3.org/2001/xml-events", "DOMCharacterDataModified"}</code>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<code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code>events, and of the<code>CharacterData</code>node in<code>{"http://www.w3.org/2001/xml-events", "DOMCharacterDataModified"}</code>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<code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code>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<code>{"http://www.w3.org/2001/xml-events", "DOMAttrModified"}</code>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/>
        </descr>
      </returns>
      <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/>
        </descr>
      </returns>
      <raises/>
    </method>
  </interface>
  <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/>
        </descr>
      </returns>
      <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/>
        </descr>
      </returns>
      <raises/>
    </method>
  </interface>
</library>
