Use respec IDL formatting.
authorGary Kacmarcik <garykac@google.com>
Tue, 04 Jun 2013 13:07:53 -0700
changeset 417 3af9a4e6464d
parent 416 7c9bdb1ee920
child 418 4998aa3eb6a5
Use respec IDL formatting.

In respec, IDL info id specified in one place and a few different sections are auto-generated. This changelist converts the old IDL information into the new concise format.

It also changes the TOC depth to 5 and remove extra whitespace from the header.
html/DOM3-Events.html
--- a/html/DOM3-Events.html	Tue Jun 04 11:58:35 2013 -0700
+++ b/html/DOM3-Events.html	Tue Jun 04 13:07:53 2013 -0700
@@ -60,11 +60,11 @@
 		noIDLIn:  true,
 		inlineCSS:  true,
 		//noRecTrack:  true,
-		wg:         ["Web Applications Working Group"],
-		wgURI:    ["http://www.w3.org/2008/webapps/"],
+		wg: ["Web Applications Working Group"],
+		wgURI: ["http://www.w3.org/2008/webapps/"],
 		wgPublicList: "www-dom",
 		wgPatentURI: ["http://www.w3.org/2004/01/pp-impl/42538/status"],
-		maxTocLevel: 4
+		maxTocLevel: 5
 	};
 	</script>
 </head>
@@ -973,584 +973,409 @@
 
 		<section id="interface-Event">
 			<h2>Interface Event</h2>
-			<dl>
-				<dt><strong>Interface <em><a id="events-Event">Event</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
+
+			<p><em>Introduced in DOM Level 2</em></p>
+
+			<p>The <code>Event</code> interface provides basic contextual information about an event to all registered <a class="def" href="#glossary-event-handler">event handlers</a>.
+				Specific events can also implement other derived interfaces, for example the <a href="#events-UIEvent"><code>UIEvent</code></a> and <a href="#events-MouseEvent">
+				<code>MouseEvent</code></a> interfaces.</p>
+
+			<p>To create an instance of the <code>Event</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("Event")</code></a>
+				method call.</p>
+
+			<dl class="idl" title="interface Event">
+				<dt>// PhaseType</dt>
+
+				<dt>const unsigned short NONE = 0</dt>
 				<dd>
-					<p>The <code>Event</code> interface provides basic contextual information about an event to all registered <a class="def" href="#glossary-event-handler">event handlers</a>.
-						Specific events can also implement other derived interfaces, for example the <a href="#events-UIEvent"><code>UIEvent</code></a> and <a href="#events-MouseEvent">
-						<code>MouseEvent</code></a> interfaces.</p>
-
-					<p>To create an instance of the <code>Event</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("Event")</code></a>
-						method call.</p>
-
-					<dl>
-						<dt><strong>WebIDL Definition</strong></dt>
-						<dd>
-
-							<pre class="d3-idl" id="idl-interface-Event"><code>
-<span class="comment">// Introduced in DOM Level 2:</span>
-interface <a href="#events-Event">Event</a>
-{
-  <span class="comment">// PhaseType</span>
-  const unsigned short              <a href="#events-UNINIT">NONE</a>            = 0;
-  const unsigned short              <a href="#events-CAPTURING_PHASE">CAPTURING_PHASE</a> = 1;
-  const unsigned short              <a href="#events-AT_TARGET">AT_TARGET</a>       = 2;
-  const unsigned short              <a href="#events-BUBBLING_PHASE">BUBBLING_PHASE</a>  = 3;
-
-  readonly attribute DOMString      <a href="#events-event-type-type">type</a>;
-  readonly attribute <a href="#events-EventTarget">EventTarget</a>?   <a href="#events-event-type-target">target</a>;
-  readonly attribute <a href="#events-EventTarget">EventTarget</a>?   <a href="#events-event-type-currentTarget">currentTarget</a>;
-  readonly attribute unsigned short <a href="#events-event-type-eventPhase">eventPhase</a>;
-  readonly attribute boolean        <a href="#events-event-type-canBubble">bubbles</a>;
-  readonly attribute boolean        <a href="#events-event-type-canCancel">cancelable</a>;
-  readonly attribute DOMTimeStamp   <a href="#events-event-type-timeStamp">timeStamp</a>;
-  void                              <a href="#events-event-type-stopPropagation">stopPropagation</a>();
-  void                              <a href="#events-event-type-preventDefault">preventDefault</a>();
-  void                              <a href="#events-event-type-initEvent">initEvent</a>(DOMString <a href="#events-Event-initparam-eventTypeArg">eventTypeArg</a>,
-                                              boolean <a href="#events-Event-initparam-canBubbleArg">canBubbleArg</a>,
-                                              boolean <a href="#events-Event-initparam-cancelableArg">cancelableArg</a>);
-  <span class="comment">// Introduced in DOM Level 3:</span>
-  void                              <a href="#events-event-type-stopImmediatePropagation">stopImmediatePropagation</a>();
-  readonly attribute boolean        <a href="#events-event-type-defaultPrevented">defaultPrevented</a>;
-  readonly attribute boolean        <a href="#events-event-type-isTrusted">isTrusted</a>;
-};
-</code></pre>
-						</dd>
-
-						<dt><strong>Definition group <em><a id="events-event-type-eventPhaseType">PhaseType</a></em></strong></dt>
-						<dd>
-							<p>An integer indicating which phase of the event flow is being processed as defined in <a href="#event-flow">Event dispatch and DOM event flow</a>.</p>
-
-							<dl>
-								<dt><strong>Defined Constants</strong></dt>
-								<dd>
-									<dl>
-										<dt><a id="events-UNINIT"><code class="constant-name">NONE</code></a></dt>
-										<dd>The current event is not being dispatched, i.e., the <a href="#events-event-type-eventPhase">Event.eventPhase</a> is being observered prior to
-											calling <a href="#events-EventTarget-dispatchEvent">EventTarget.dispatchEvent()</a> or following the completion of the
-											<a class="def" href="#glossary-phase">event phases</a> of a given <code>Event</code>.</dd>
-
-										<dt><a id="events-AT_TARGET"><code class="constant-name">AT_TARGET</code></a></dt>
-										<dd>The current event is in the <a class="def" href="#glossary-target-phase">target phase</a>, i.e., it is being evaluated at the <a class="def"
-											href="#glossary-event-target">event target</a>.</dd>
-
-										<dt><a id="events-BUBBLING_PHASE"><code class="constant-name">BUBBLING_PHASE</code></a></dt>
-										<dd>The current event phase is the <a class="def" href="#glossary-bubbling-phase">bubbling phase</a>.</dd>
-
-										<dt><a id="events-CAPTURING_PHASE"><code class="constant-name">CAPTURING_PHASE</code></a></dt>
-										<dd>The current event phase is the <a class="def" href="#glossary-capture-phase">capture phase</a>.</dd>
-									</dl>
-								</dd>
-							</dl>
-						</dd>
-
-						<dt><strong>Attributes</strong></dt>
+					<p>The current event is not being dispatched, i.e., the <a href="#events-event-type-eventPhase">Event.eventPhase</a> is being observered prior to
+						calling <a href="#events-EventTarget-dispatchEvent">EventTarget.dispatchEvent()</a> or following the completion of the
+						<a class="def" href="#glossary-phase">event phases</a> of a given <code>Event</code>.</p>
+				</dd>
+
+				<dt>const unsigned short CAPTURING_PHASE = 1</dt>
+				<dd>
+					<p>The current event phase is the <a class="def" href="#glossary-capture-phase">capture phase</a>.</p>
+				</dd>
+
+				<dt>const unsigned short AT_TARGET = 2</dt>
+				<dd>
+					<p>The current event is in the <a class="def" href="#glossary-target-phase">target phase</a>, i.e., it is being evaluated at the <a class="def"
+						href="#glossary-event-target">event target</a>.</p>
+				</dd>
+
+				<dt>const unsigned short BUBBLING_PHASE = 3</dt>
+				<dd>
+					<p>The current event phase is the <a class="def" href="#glossary-bubbling-phase">bubbling phase</a>.</p>
+				</dd>
+
+				<dt>readonly attribute DOMString type</dt>
+				<dd>
+					<p>The name of the event type. <a href="#conf-specs">Specifications that define events</a>, <a href="#conf-authors">content authors</a>, and <a href="#conf-author-tools">
+						authoring tools</a> <span class="must">must</span> use case-sensitive event type names.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+				</dd>
+
+				<dt>readonly attribute EventTarget? target</dt>
+				<dd>
+					<p>Used to retrieve the <a class="def" href="#glossary-event-target">event target</a> associated with the <a href="#event-flow">Event dispatch and DOM
+						event flow</a>.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
+				</dd>
+
+				<dt>readonly attribute EventTarget? currentTarget</dt>
+				<dd>
+					<p>Used to retrieve the <a class="def" href="#glossary-current-event-target">current event target</a> whose <a href="#events-EventListener"><code>EventListeners</code></a>
+						are currently being processed. This is particularly useful during the capture and bubbling phases.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
+				</dd>
+
+				<dt>readonly attribute unsigned short eventPhase</dt>
+				<dd>
+					<p>Used to indicate the <a href="#event-phase">phase</a> of the event's current propagation path (capture, target, or bubble).
+						The event flow phases are defined in <a href="#event-flow">Event dispatch and DOM event flow</a>.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+				</dd>
+
+				<dt>readonly attribute boolean bubbles</dt>
+				<dd>
+					<p>Used to indicate whether or not an event is a bubbling event. If the event can bubble the value <span class="must">must</span> be <code>true</code>, otherwise the value <span class="must">must</span> be
+						<code>false</code>.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+				</dd>
+
+				<dt>readonly attribute boolean cancelable</dt>
+				<dd>
+					<p>Used to indicate whether or not an event can have its <a class="def" href="#glossary-default-action">default action</a> prevented (see also <a href="#event-flow-default-cancel">
+						Default actions and cancelable events</a>). If the <a class="def" href="#glossary-default-action">default action</a> can be prevented the value <span class="must">must</span> be <code>true</code>,
+						otherwise the value <span class="must">must</span> be <code>false</code>.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+
+					<p class="note"><strong>Note:</strong> Use <code>Event.defaultPrevented</code> to see whether a cancelable event has beened cancelled or not.</p>
+				</dd>
+
+				<dt>readonly attribute DOMTimeStamp timeStamp</dt>
+				<dd>
+					<p>Used to specify the time at which the event was created in milliseconds relative to 1970-01-01T00:00:00Z. This value is the <a class="def" href="#glossary-un-initialized-value">
+						un-initialized value</a> of this attribute.</p>
+				</dd>
+
+				<dt>void stopPropagation()</dt>
+				<dd>
+					<p>Prevents all other <a class="def" href="#glossary-event-handler">event listeners</a> from being triggered, excluding any remaining <a class="def"
+						href="#glossary-candidate-event-handlers">candiate event listeners</a>. Once it has been called, further calls to this method have no additional effect.</p>
+
+					<p class="note" id="note-stopPropagation-default"><strong>Note:</strong> This method does not prevent the <a class="def" href="#glossary-default-action">default action</a>
+						from being invoked; use <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> for that effect.</p>
+				</dd>
+
+				<dt>void preventDefault()</dt>
+				<dd>
+					<p>When this method is invoked, the event <span class="must">must</span> be canceled, meaning any <a class="def" href="#glossary-default-action">default actions</a> normally taken by the implementation
+						as a result of the event <span class="mustnot">must not</span> occur (see also <a href="#event-flow-default-cancel">Default actions and cancelable events</a>). Default actions which occur prior
+						to the event's dispatch (see <a href="#event-flow-default-cancel">Default actions and cancelable events</a>) are reverted. Calling this method for a non-cancelable
+						event <span class="must">must</span> have no effect.  If an event has more than one <a class="def" href="#glossary-default-action">default action</a>, each cancelable <a class="def" href="#glossary-default-action">
+						default action</a> <span class="must">must</span> be canceled.</p>
+
+					<p class="note"><strong>Note:</strong> This method does not stop the event propagation; use <a href="#events-event-type-stopPropagation">
+						<code>Event.stopPropagation()</code></a> or <a href="#events-event-type-stopImmediatePropagation"><code>Event.stopImmediatePropagation()</code></a> for that effect.</p>
+				</dd>
+
+				<dt>void initEvent()</dt>
+				<dd>
+					<p>Initializes attributes of an <code>Event</code>. The <code>Event</code> could have been created through the <a href="#events-DocumentEvent-createEvent">
+						<code>DocumentEvent.createEvent</code></a> method or by the implementation in response to a user action. For any <code>Event</code> created with the
+						<a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent</code></a> method, this method <span class="must">must</span> be called before the <code>Event</code>
+						is dispatched via the <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method. If the method is called several
+						times before invoking <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent</code></a>, only the final invocation takes precedence.
+						If this method is called during an invocation of <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent</code></a>, this method
+						<span class="must">must</span> do nothing and return immediately. 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 <span class="must">must</span> also reset the event object's internal-propagation and default-action-prevention states. This allows an event object to be "reset"
+						before being dispatched multiple times.</p>
+
+					<p class="example"><strong>Example:</strong> If an <code>EventListener</code> called <code>stopPropagation()</code> or <code>stopImmediatePropagation()</code> during
+						the event's previous dispatch, then after calling this method, the event can be re-dispatched (via <code>dispatchEvent</code>) and will propagate through all candidate
+						event listeners along its propagation path (as it did during the prior dispatch). Similarily, if an <code>EventListener</code> called <code>preventDefault()</code>
+						during the event's previous dispatch, then after calling this method, the event's <code>defaultPrevented</code> property will be <code>false</code>.</p>
+
+					<p class="warning" id="warning-initEvent-untrusted"><strong>Warning!</strong> For security reasons, events modified using <a href="#events-event-type-initEvent"><code>
+						Event.initEvent()</code></a> <span class="must">must</span> have a <code class="attribute-name"><a href="#events-event-type-isTrusted">isTrusted</a></code> attribute value of <code>false</code>.
+						See <a href="#trusted-events">trusted events</a> for more details.</p>
+
+					<p class="note"><strong>Authoring Note:</strong> <a class="def" href="#trusted-events">Trusted events</a> can have their <a class="def" href="#glossary-event-type">
+						event type</a> and other attributes changed using this method. However, this method always converts the <code>Event</code> from a trusted event to an untrusted
+						event (e.g., the <a href="#events-event-type-isTrusted"><code>Event.isTrusted</code></a> attribute will return <code>false</code>).</p>
+
+					<p class="note"><strong>Authoring Note:</strong> <a class="def" href="#trusted-events">Trusted events</a> are pre-initialized by the implementation before being dispatched.
+						As a result, it is not necessary to call <code>Event.initEvent()</code> prior to re-dispatching the trusted event--however calling <a href="#events-EventTarget-dispatchEvent">
+						<code>EventTarget.dispatchEvent()</code></a> will convert the <code>Event</code> from a trusted event to an untrusted event (e.g., the <a href="#events-event-type-isTrusted">
+						<code>Event.isTrusted</code></a> attribute will return <code>false</code>).</p>
+
+					<dl class="parameters">
+						<dt>DOMString eventTypeArg</dt>
 						<dd>
-							<dl>
-								<dt><code class="attribute-name"><a id="events-event-type-canBubble">bubbles</a></code> of type <code>boolean</code>, readonly</dt>
-								<dd>
-									<p>Used to indicate whether or not an event is a bubbling event. If the event can bubble the value <span class="must">must</span> be <code>true</code>, otherwise the value <span class="must">must</span> be
-										<code>false</code>.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-event-type-canCancel">cancelable</a></code> of type <code>boolean</code>, readonly</dt>
-								<dd>
-									<p>Used to indicate whether or not an event can have its <a class="def" href="#glossary-default-action">default action</a> prevented (see also <a href="#event-flow-default-cancel">
-										Default actions and cancelable events</a>). If the <a class="def" href="#glossary-default-action">default action</a> can be prevented the value <span class="must">must</span> be <code>true</code>,
-										otherwise the value <span class="must">must</span> be <code>false</code>.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-
-									<p class="note"><strong>Note:</strong> Use <code>Event.defaultPrevented</code> to see whether a cancelable event has beened cancelled or not.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-event-type-currentTarget">currentTarget</a></code> of type <a href="#events-EventTarget"><code>EventTarget</code></a>,
-									readonly</dt>
-								<dd>
-									<p>Used to retrieve the <a class="def" href="#glossary-current-event-target">current event target</a> whose <a href="#events-EventListener"><code>EventListeners</code></a>
-										are currently being processed. This is particularly useful during the capture and bubbling phases.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-event-type-defaultPrevented">defaultPrevented</a></code> of type <code>boolean</code>, readonly, introduced in <strong
-									class="version">DOM Level 3</strong></dt>
-								<dd>
-									<p>Used to indicate whether this event has been cancelled or not. <code>Event.defaultPrevented</code> <span class="must">must</span> return true if both <a href="#events-event-type-canCancel">
-										<code>Event.cancelable</code></a> is <code>true</code> and <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> has been called for
-										this event. Otherwise this attribute <span class="must">must</span> return <code>false</code>.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-
-									<p class="note"><strong>Note:</strong> Calling <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> after an event has been dispatched will reset
-										the internal default-prevented state of the event.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-event-type-isTrusted">isTrusted</a></code> of type <code>boolean</code>, readonly, introduced in <strong class="version">
-									DOM Level 3</strong></dt>
-								<dd>
-									<p>Used to indicate whether this event was generated by the <a class="def" href="#glossary-user-agent">user agent</a> (trusted) or by script (untrusted).  See <a
-										href="#trusted-events">trusted events</a> for more details.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-event-type-eventPhase">eventPhase</a></code> of type <code>unsigned short</code>, readonly</dt>
-								<dd>
-									<p>Used to indicate the <a href="#event-phase">phase</a> of the event's current propagation path (capture, target, or bubble).</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-								</dd>
-
-
-								<dt><code class="attribute-name"><a id="events-event-type-target">target</a></code> of type <a href="#events-EventTarget"><code>EventTarget</code></a>, readonly
-								</dt>
-								<dd>
-									<p>Used to retrieve the <a class="def" href="#glossary-event-target">event target</a> associated with the <a href="#event-flow">Event dispatch and DOM
-										event flow</a>.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-event-type-timeStamp">timeStamp</a></code> of type <code>DOMTimeStamp</code>, readonly</dt>
-								<dd>
-									<p>Used to specify the time at which the event was created in milliseconds relative to 1970-01-01T00:00:00Z. This value is the <a class="def" href="#glossary-un-initialized-value">
-										un-initialized value</a> of this attribute.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-event-type-type">type</a></code> of type <code>DOMString</code>, readonly</dt>
-								<dd>
-									<p>The name of the event type. <a href="#conf-specs">Specifications that define events</a>, <a href="#conf-authors">content authors</a>, and <a href="#conf-author-tools">
-										authoring tools</a> <span class="must">must</span> use case-sensitive event type names.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-								</dd>
-							</dl>
+							<p>Specifies <a href="#events-event-type-type"><code>Event.type</code></a>, the name of the event type.</p>
 						</dd>
-
-						<dt><strong>Methods</strong></dt>
+						
+						<dt>boolean canBubbleArg</dt>
 						<dd>
-							<dl>
-								<dt><code class="method-name"><a id="events-event-type-initEvent">initEvent</a></code></dt>
-								<dd>
-									<div class="method">
-										<p>Initializes attributes of an <code>Event</code>. The <code>Event</code> could have been created through the <a href="#events-DocumentEvent-createEvent">
-											<code>DocumentEvent.createEvent</code></a> method or by the implementation in response to a user action. For any <code>Event</code> created with the
-											<a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent</code></a> method, this method <span class="must">must</span> be called before the <code>Event</code>
-											is dispatched via the <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method. If the method is called several
-											times before invoking <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent</code></a>, only the final invocation takes precedence.
-											If this method is called during an invocation of <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent</code></a>, this method
-											<span class="must">must</span> do nothing and return immediately. 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 <span class="must">must</span> also reset the event object's internal-propagation and default-action-prevention states. This allows an event object to be "reset"
-											before being dispatched multiple times.</p>
-
-										<p class="example"><strong>Example:</strong> If an <code>EventListener</code> called <code>stopPropagation()</code> or <code>stopImmediatePropagation()</code> during
-											the event's previous dispatch, then after calling this method, the event can be re-dispatched (via <code>dispatchEvent</code>) and will propagate through all candidate
-											event listeners along its propagation path (as it did during the prior dispatch). Similarily, if an <code>EventListener</code> called <code>preventDefault()</code>
-											during the event's previous dispatch, then after calling this method, the event's <code>defaultPrevented</code> property will be <code>false</code>.</p>
-
-										<p class="warning" id="warning-initEvent-untrusted"><strong>Warning!</strong> For security reasons, events modified using <a href="#events-event-type-initEvent"><code>
-											Event.initEvent()</code></a> <span class="must">must</span> have a <code class="attribute-name"><a href="#events-event-type-isTrusted">isTrusted</a></code> attribute value of <code>false</code>.
-											See <a href="#trusted-events">trusted events</a> for more details.</p>
-
-										<p class="note"><strong>Authoring Note:</strong> <a class="def" href="#trusted-events">Trusted events</a> can have their <a class="def" href="#glossary-event-type">
-											event type</a> and other attributes changed using this method. However, this method always converts the <code>Event</code> from a trusted event to an untrusted
-											event (e.g., the <a href="#events-event-type-isTrusted"><code>Event.isTrusted</code></a> attribute will return <code>false</code>).</p>
-
-										<p class="note"><strong>Authoring Note:</strong> <a class="def" href="#trusted-events">Trusted events</a> are pre-initialized by the implementation before being dispatched.
-											As a result, it is not necessary to call <code>Event.initEvent()</code> prior to re-dispatching the trusted event--however calling <a href="#events-EventTarget-dispatchEvent">
-											<code>EventTarget.dispatchEvent()</code></a> will convert the <code>Event</code> from a trusted event to an untrusted event (e.g., the <a href="#events-event-type-isTrusted">
-											<code>Event.isTrusted</code></a> attribute will return <code>false</code>).</p>
-
-										<div class="parameters">
-											<strong>Parameters</strong>
-											<div class="paramtable">
-												<dl>
-													<dt><a id="events-Event-initparam-eventTypeArg"><code class="parameter-name">eventTypeArg</code></a> of type <code>DOMString</code></dt>
-													<dd><p>Specifies <a href="#events-event-type-type"><code>Event.type</code></a>, the name of the event type.</p></dd>
-
-													<dt><a id="events-Event-initparam-canBubbleArg"><code class="parameter-name">canBubbleArg</code></a> of type <code>boolean</code></dt>
-													<dd><p>Specifies <a href="#events-event-type-canBubble"><code>Event.bubbles</code></a>. This parameter overrides the intrinsic bubbling behavior of the event.</p></dd>
-
-													<dt><a id="events-Event-initparam-cancelableArg"><code class="parameter-name">cancelableArg</code></a> of type <code>boolean</code></dt>
-													<dd><p>Specifies <a href="#events-event-type-canCancel"><code>Event.cancelable</code></a>. This parameter overrides the intrinsic cancelable behavior of the event.</p></dd>
-												</dl>
-											</div>
-										</div>
-
-										<div><strong>No Return Value</strong></div>
-
-										<div><strong>No Exceptions</strong></div>
-									</div>
-								</dd>
-
-								<dt><code class="method-name"><a id="events-event-type-preventDefault">preventDefault</a></code></dt>
-								<dd>
-									<div class="method">
-										<p>When this method is invoked, the event <span class="must">must</span> be canceled, meaning any <a class="def" href="#glossary-default-action">default actions</a> normally taken by the implementation
-											as a result of the event <span class="mustnot">must not</span> occur (see also <a href="#event-flow-default-cancel">Default actions and cancelable events</a>). Default actions which occur prior
-											to the event's dispatch (see <a href="#event-flow-default-cancel">Default actions and cancelable events</a>) are reverted. Calling this method for a non-cancelable
-											event <span class="must">must</span> have no effect.  If an event has more than one <a class="def" href="#glossary-default-action">default action</a>, each cancelable <a class="def" href="#glossary-default-action">
-											default action</a> <span class="must">must</span> be canceled.</p>
-
-										<p class="note"><strong>Note:</strong> This method does not stop the event propagation; use <a href="#events-event-type-stopPropagation">
-											<code>Event.stopPropagation()</code></a> or <a href="#events-event-type-stopImmediatePropagation"><code>Event.stopImmediatePropagation()</code></a> for that effect.</p>
-
-										<div><strong>No Parameters</strong></div>
-
-										<div><strong>No Return Value</strong></div>
-
-										<div><strong>No Exceptions</strong></div>
-									</div>
-								</dd>
-
-								<dt><code class="method-name"><a id="events-event-type-stopImmediatePropagation">stopImmediatePropagation</a></code> introduced in <strong class="since">DOM Level
-									3</strong></dt>
-								<dd>
-									<div class="method">
-										<p>Prevents all other <a class="def" href="#glossary-event-handler">event listeners</a> from being triggered for this event dispatch, including any remaining
-											<a class="def" href="#glossary-candidate-event-handlers">candiate event listeners</a>. Once it has been called, further calls to this method have no additional
-											effect.</p>
-
-										<p class="note"><strong>Note:</strong> This method does not prevent the <a class="def" href="#glossary-default-action">default action</a> from being invoked;
-											use <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> for that effect.</p>
-
-										<div><strong>No Parameters</strong></div>
-
-										<div><strong>No Return Value</strong></div>
-
-										<div><strong>No Exceptions</strong></div>
-									</div>
-								</dd>
-
-								<dt><code class="method-name"><a id="events-event-type-stopPropagation">stopPropagation</a></code></dt>
-								<dd>
-									<div class="method">
-										<p>Prevents all other <a class="def" href="#glossary-event-handler">event listeners</a> from being triggered, excluding any remaining <a class="def"
-											href="#glossary-candidate-event-handlers">candiate event listeners</a>. Once it has been called, further calls to this method have no additional effect.</p>
-
-										<p class="note" id="note-stopPropagation-default"><strong>Note:</strong> This method does not prevent the <a class="def" href="#glossary-default-action">default action</a>
-											from being invoked; use <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> for that effect.</p>
-
-										<div><strong>No Parameters</strong></div>
-
-										<div><strong>No Return Value</strong></div>
-
-										<div><strong>No Exceptions</strong></div>
-									</div>
-								</dd>
-							</dl>
+							<p>Specifies <a href="#events-event-type-canBubble"><code>Event.bubbles</code></a>. This parameter overrides the intrinsic bubbling behavior of the event.</p>
+						</dd>
+
+						<dt>boolean cancelableArg</dt>
+						<dd>
+							<p>Specifies <a href="#events-event-type-canCancel"><code>Event.cancelable</code></a>. This parameter overrides the intrinsic cancelable behavior of the event.</p>
 						</dd>
 					</dl>
 				</dd>
+
+				<dt>// Introduced in DOM Level 3</dt>
+
+				<dt>void stopImmediatePropagation()</dt>
+				<dd>
+					<p><em>Introduced in DOM Level 3</em></p>
+
+					<p>Prevents all other <a class="def" href="#glossary-event-handler">event listeners</a> from being triggered for this event dispatch, including any remaining
+						<a class="def" href="#glossary-candidate-event-handlers">candiate event listeners</a>. Once it has been called, further calls to this method have no additional
+						effect.</p>
+
+					<p class="note"><strong>Note:</strong> This method does not prevent the <a class="def" href="#glossary-default-action">default action</a> from being invoked;
+						use <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> for that effect.</p>
+				</dd>
+
+				<dt>readonly attribute boolean defaultPrevented</dt>
+				<dd>
+					<p><em>Introduced in DOM Level 3</em></p>
+					
+					<p>Used to indicate whether this event has been cancelled or not. <code>Event.defaultPrevented</code> <span class="must">must</span> return true if both <a href="#events-event-type-canCancel">
+						<code>Event.cancelable</code></a> is <code>true</code> and <a href="#events-event-type-preventDefault"><code>Event.preventDefault()</code></a> has been called for
+						this event. Otherwise this attribute <span class="must">must</span> return <code>false</code>.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+
+					<p class="note"><strong>Note:</strong> Calling <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> after an event has been dispatched will reset
+						the internal default-prevented state of the event.</p>
+				</dd>
+
+				<dt>readonly attribute boolean isTrusted</dt>
+				<dd>
+					<p><em>Introduced in DOM Level 3</em></p>
+
+					<p>Used to indicate whether this event was generated by the <a class="def" href="#glossary-user-agent">user agent</a> (trusted) or by script (untrusted).  See <a
+						href="#trusted-events">trusted events</a> for more details.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+				</dd>
 			</dl>
 		</section>
 
 		<section id="interface-CustomEvent">
 			<h2>Interface CustomEvent</h2>
-			<dl>
-				<dt><strong>Interface <em><a id="events-CustomEvent">CustomEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
+
+			<p><em>Introduced in DOM Level 2</em></p>
+
+			<p>The <a href="#events-CustomEvent"><code>CustomEvent</code></a> interface is the <span class="recommended">recommended</span> interface for application-specific event types. Unlike the <a href="#events-Event">
+				<code>Event</code></a> interface, it allows applications to provide contextual information about the event type.</p>
+
+			<p class="note"><strong>Authoring Note:</strong> Use a prefix string on the event type name for application-specific event types to avoid clashes with future general-purpose
+				event types.</p>
+
+			<p>To create an instance of the <code>CustomEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("CustomEvent")</code></a>
+				method call.</p>
+
+			<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
+				CustomEvent objects.</p>
+
+			<dl class="idl" title="interface CustomEvent">
+				<dt>readonly attribute any detail</dt>
 				<dd>
-					<p>The <a href="#events-CustomEvent"><code>CustomEvent</code></a> interface is the <span class="recommended">recommended</span> interface for application-specific event types. Unlike the <a href="#events-Event">
-						<code>Event</code></a> interface, it allows applications to provide contextual information about the event type.</p>
-
-					<p class="note"><strong>Authoring Note:</strong> Use a prefix string on the event type name for application-specific event types to avoid clashes with future general-purpose
-						event types.</p>
-
-					<p>To create an instance of the <code>CustomEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("CustomEvent")</code></a>
-						method call.</p>
-
-					<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
-						CustomEvent objects.</p>
-
-					<dl>
-						<dt><strong>WebIDL Definition</strong></dt>
-						<dd>
-							<pre class="d3-idl" id="idl-interface-CustomEvent"><code>
-<span class="comment">// Introduced in DOM Level 3:</span>
-interface <a href="#events-CustomEvent">CustomEvent</a> : <a href="#events-Event">Event</a>
-{
-  readonly attribute any <a href="#events-CustomEvent-detail">detail</a>;
-};
-</code></pre>
-						</dd>
-
-						<dt><strong>Attributes</strong></dt>
-						<dd>
-							<dl>
-								<dt><code class="attribute-name"><a id="events-CustomEvent-detail">detail</a></code> of type <code>any</code>, readonly</dt>
-								<dd>
-									<p>Specifies some detail information about the <a href="#events-Event"><code>Event</code></a>.</p>
-
-									<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
-								</dd>
-							</dl>
-						</dd>
-					</dl>
+					<p>Specifies some detail information about the <a href="#events-Event"><code>Event</code></a>.</p>
+
+					<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
 				</dd>
 			</dl>
 		</section>
 
 		<section id="interface-EventTarget">
 			<h2>Interface EventTarget</h2>
-			<dl>
-				<dt><strong>Interface <em><a id="events-EventTarget">EventTarget</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
+
+			<p><em>Introduced in DOM Level 3</em></p>
+
+			<p>The <code>EventTarget</code> interface allows registration and removal of event listeners, and dispatch of events to an event target.</p>
+
+			<p class="note"><strong>Note:</strong> Though an event listener can be registered for any <a class="def" href="#glossary-event-target">event
+				target</a> node, the user agent only dispatches UA-generated (trusted) events on node types that are defined as event target types for that specific event type
+				(see the <a href="#event-types-list">List of DOM3 Event Types</a>); for example, a <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a>
+				event type registered on a text node will never be fired by the user agent, though a content author could dispatch an event of that type on the text node via script.</p>
+
+			<p>When used with the DOM event flow, this interface <span class="must">must</span> be implemented by all <a class="def" href="#glossary-event-target">event targets</a> 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>removeEventListener</code>) repeatedly on the same <code>EventTarget</code> with the same values for the parameters
+				<code>type</code>, <code>listener</code>, and <code>useCapture</code> has no effect. Doing so does not cause the event listener to be registered more than once and
+				does not cause a change in the triggering order.</p>
+
+			<p class="note"><strong>Note:</strong>  In addition to the <a href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a> method, some
+				<a class="def" href="#glossary-host-language">host languages</a> allow a content author to register event listeners by the use of attributes, e.g.,
+				<em><code>onclick="handleClick()"</code></em> (see [<cite><a class="informative" href="#references-HTML5">HTML5</a></cite>] for further examples). Due to the
+				language-specific details, this type of event listener registration is not defined in this specification. In general, many event types can be used as an attribute
+				in this way by adding the prefix <em><code>on-</code></em> to the event type name. Dispatching events to these listeners is expected to behave consistently with the
+				event registration and propagation defined in this specification, with the same interfaces, properties, and methods.</p>
+
+			<dl class="idl" title="interface EventTarget">
+				<dt>// Modified in DOM Level 3</dt>
+
+				<dt>void addEventListener()</dt>
 				<dd>
-					<p>The <code>EventTarget</code> interface allows registration and removal of event listeners, and dispatch of events to an event target.</p>
-
-					<p class="note"><strong>Note:</strong> Though an event listener can be registered for any <a class="def" href="#glossary-event-target">event
-						target</a> node, the user agent only dispatches UA-generated (trusted) events on node types that are defined as event target types for that specific event type
-						(see the <a href="#event-types-list">List of DOM3 Event Types</a>); for example, a <a class="eventtype" href="#event-type-mouseover"><code>mouseover</code></a>
-						event type registered on a text node will never be fired by the user agent, though a content author could dispatch an event of that type on the text node via script.</p>
-
-					<p>When used with the DOM event flow, this interface <span class="must">must</span> be implemented by all <a class="def" href="#glossary-event-target">event targets</a> 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>removeEventListener</code>) repeatedly on the same <code>EventTarget</code> with the same values for the parameters
-						<code>type</code>, <code>listener</code>, and <code>useCapture</code> has no effect. Doing so does not cause the event listener to be registered more than once and
-						does not cause a change in the triggering order.</p>
-
-					<p class="note"><strong>Note:</strong>  In addition to the <a href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a> method, some
-						<a class="def" href="#glossary-host-language">host languages</a> allow a content author to register event listeners by the use of attributes, e.g.,
-						<em><code>onclick="handleClick()"</code></em> (see [<cite><a class="informative" href="#references-HTML5">HTML5</a></cite>] for further examples). Due to the
-						language-specific details, this type of event listener registration is not defined in this specification. In general, many event types can be used as an attribute
-						in this way by adding the prefix <em><code>on-</code></em> to the event type name. Dispatching events to these listeners is expected to behave consistently with the
-						event registration and propagation defined in this specification, with the same interfaces, properties, and methods.</p>
-
-					<dl>
-						<dt><strong>WebIDL Definition</strong></dt>
-						<dd>
-
-							<pre class="d3-idl" id="idl-interface-"><code>
-<span class="comment">// Introduced in DOM Level 2:</span>
-interface <a href="#events-EventTarget">EventTarget</a>
-{
-  <span class="comment">// Modified in DOM Level 3:</span>
-  void    <a href="#events-EventTarget-addEventListener">addEventListener</a>(DOMString <a href="#events-EventTarget-aelparam-type">type</a>,
-                           <a href="#events-EventListener">EventListener</a>? <a href="#events-EventTarget-aelparam-listener">listener</a>,
-                           <em>optional</em> boolean <a href="#addEventListener_useCapture">useCapture</a> = false);
-  void    <a href="#events-EventTarget-removeEventListener">removeEventListener</a>(DOMString <a href="#events-EventTarget-relparam-type">type</a>,
-                              <a href="#events-EventListener">EventListener</a>? <a href="#events-EventTarget-relparam-listener">listener</a>,
-                              <em>optional</em> boolean <a href="#removeEventListener_useCapture">useCapture</a> = false);
-  boolean <a href="#events-EventTarget-dispatchEvent">dispatchEvent</a>(<a href="#events-Event">Event</a> <a href="#events-EventTarget-dispatchparam-event">event</a>);
-};
-</code></pre>
-						</dd>
-
-						<dt><strong>Methods</strong></dt>
+					<p><em>Modified in DOM Level 3</em></p>
+
+					<p>Registers an event listener on the <a href="#interface-EventTarget"><code>EventTarget</code></a>. The listener is registered for the capture phase if the
+						<code>useCapture</code> parameter is <code>true</code>, and for the bubble phase otherwise. When the event reaches the target element, listeners for both
+						the capture and bubble phases are triggered as part of the target phase.
+					</p>
+					
+					<dl class="parameters">
+						<dt>DOMString type</dt>
 						<dd>
-							<dl>
-								<dt><code class="method-name"><a id="events-EventTarget-addEventListener">addEventListener</a></code></dt>
-								<dd>
-									<div class="method">
-										<p>Registers an event listener on the <a href="#interface-EventTarget"><code>EventTarget</code></a>. The listener is registered for the capture phase if the
-											<code>useCapture</code> parameter is <code>true</code>, and for the bubble phase otherwise. When the event reaches the target element, listeners for both
-											the capture and bubble phases are triggered as part of the target phase.
-										</p>
-
-										<div class="parameters">
-											<p><strong>Parameters</strong></p>
-
-											<div class="paramtable">
-												<dl>
-													<dt><a id="events-EventTarget-aelparam-type"><code class="parameter-name">type</code></a> of type <code>DOMString</code></dt>
-													<dd><p>Specifies the <a href="#events-event-type-type"><code>Event.type</code></a> associated with the event for which the user is registering.</p></dd>
-
-													<dt><a id="events-EventTarget-aelparam-listener"><code class="parameter-name">listener</code></a> of type <a href="#events-EventListener"><code>EventListener
-														</code></a></dt>
-													<dd><p>The <code>listener</code> parameter <span class="must">must</span> be an object that implements the <a href="#events-EventListener"><code>EventListener</code></a> interface or a function.
-														If <code>listener</code> is a function then it <span class="must">must</span> be used as the callback for the event; otherwise, if <code>listener</code> implements <a href="#events-EventListener">
-														<code>EventListener</code></a>, then its <a href="#events-EventListener-handleEvent">handleEvent</a> method <span class="must">must</span> be used as the callback.</p></dd>
-
-													<dt><a id="addEventListener_useCapture"><code class="parameter-name">useCapture</code></a> of type <code>boolean</code></dt>
-													<dd>
-														<p>If true, <code>useCapture</code> indicates that the user wishes to add the event listener for the <a class="def" href="#glossary-capture-phase">capture</a>
-															and <a class="def" href="#glossary-target-phase">target</a> phases only, i.e., this event listener will not be triggered during the <a class="def"
-															href="#glossary-bubbling-phase"> bubbling</a> phase. If <code>false</code>, the event listener <span class="must">must</span> only be triggered during the <a class="def"
-															href="#glossary-target-phase">target</a> and <a class="def" href="#glossary-bubbling-phase">bubbling</a> phases.</p>
-
-														<p>This parameter <span class="must">must</span> be optional. If not provided, the <a href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a> method <span class="must">must</span> behave as if <a
-															href="#addEventListener_useCapture"><code class="parameter-name">useCapture</code></a> were specified to be <code>false</code>.</p>
-
-														<p class="note" id="addEventListener_useCapture-author"><strong>Authoring Note:</strong>  The <a href="#events-EventTarget-addEventListener"><code class="parameter-name">
-															useCapture</code></a> parameter was manditory in DOM2 Events [<a href="#references-DOM2Events">DOM2 Events</a>], and omitting this parameter could cause an error
-															in older implementations.</p>
-													</dd>
-												</dl>
-											</div>
-										</div>
-									<div><strong>No Return Value</strong></div>
-
-									<div><strong>No Exceptions</strong></div>
-								</div>
-								</dd>
-
-								<dt><code class="method-name"><a id="events-EventTarget-removeEventListener">removeEventListener</a></code></dt>
-								<dd>
-									<div class="method">
-										<p>Removes an event listener. Calling <code>removeEventListener</code> with arguments that do not identify any currently registered <a href="#events-EventListener"><code>
-											EventListener</code></a> on the <code>EventTarget</code> has no effect. </p>
-
-										<div class="parameters">
-											<p><strong>Parameters</strong></p>
-
-											<div class="paramtable">
-												<dl>
-													<dt><a id="events-EventTarget-relparam-type"><code class="parameter-name">type</code></a> of type <code>DOMString</code></dt>
-													<dd><p>Specifies the <a href="#events-event-type-type"><code>Event.type</code></a> for which the user registered the event listener.</p></dd>
-
-													<dt><a id="events-EventTarget-relparam-listener"><code class="parameter-name">listener</code></a> of type <a href="#events-EventListener"><code>EventListener</code></a></dt>
-													<dd><p>The <a href="#events-EventListener"><code>EventListener</code></a> to be removed.</p></dd>
-
-													<dt><code id="removeEventListener_useCapture" class="parameter-name">useCapture</code> of type <code>boolean</code></dt>
-													<dd>
-														<p>Specifies whether the <a href="#events-EventListener"><code>EventListener</code></a> being removed was registered for the capture phase or not. Implementations
-															<span class="must">must</span> treat the same listener that was registered twice with both <code>useCapture</code> true and <code>useCapture</code> false as independent registrations, and
-															remove them independently.</p>
-
-														<p class="note"><strong>Authoring Note:</strong>  If a listener was registered twice, once for the capture and target phases and once for the target and bubbling phases,
-															this represents two unique registrations. Removal of an event listener registered for the capture and target phases does not affect the same event listener registered
-															for the target and bubbling phases, and vice versa.</p>
-
-														<p>This parameter <span class="must">must</span> be optional. If not provided, the <a href="#events-EventTarget-removeEventListener">EventTarget.removeEventListener</a> method <span class="must">must</span> behave as if <a
-															href="#removeEventListener_useCapture"><code class="parameter-name">useCapture</code></a> were specified to be <code>false</code>.</p>
-
-														<p class="note"><strong>Authoring Note:</strong>  The <a href="#removeEventListener_useCapture"><code class="parameter-name">useCapture</code></a> parameter was manditory in DOM2
-															Events [<a href="#references-DOM2Events">DOM2 Events</a>], and omitting this parameter could cause an error in older implementations.</p>
-													</dd>
-												</dl>
-											</div>
-										</div>
-										<div><strong>No Return Value</strong></div>
-
-										<div><strong>No Exceptions</strong></div>
-									</div>
-								</dd>
-
-								<dt><code class="method-name"><a id="events-EventTarget-dispatchEvent">dispatchEvent</a></code> modified in <strong class="version">DOM Level 3</strong></dt>
-								<dd>
-									<div class="method">
-										<p>Dispatches an event into the implementation's event model. The <a class="def" href="#glossary-event-target">event target</a> of the event <span class="must">must</span> be the <code>EventTarget</code>
-											object on which <code>dispatchEvent</code> is called.</p>
-
-										<p class="warning"><strong>Warning!</strong>  For security reasons, events dispatched using <a href="#events-EventTarget-dispatchEvent">
-											<code>EventTarget.dispatchEvent()</code></a> <span class="must">must</span> have a <code class="attribute-name"><a href="#events-event-type-isTrusted">isTrusted</a></code> attribute value
-											of <code>false</code>.  See <a href="#trusted-events">trusted events</a> for more details.</p>
-
-										<p class="note"><strong>Note:</strong> while a dispatch (triggered by <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a>) is in progress, calls to
-											<a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> are ignored (the method returns immediately without side-effects) and calls to
-											<a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> result in an exception.</p>
-
-										<div class="parameters">
-											<p><strong>Parameters</strong></p>
-
-											<div class="paramtable">
-												<dl>
-													<dt><a id="events-EventTarget-dispatchparam-event"><code class="parameter-name">event</code></a> of type <a href="#events-Event"><code>Event</code></a></dt>
-													<dd><p>The event to be dispatched.</p></dd>
-
-													<dd>
-														<p class="note"><strong>Note: </strong>This parameter receives an <code>Event</code> object, or any object that inherits from <code>Event</code>, e.g., <code>MouseEvent</code>,
-															<code>KeyboardEvent</code>, <code>MutationEvent</code>, etc.</p>
-													</dd>
-												</dl>
-											</div>
-										</div>
-										<div class="return">
-											<p><strong>Return Value</strong></p>
-
-											<div class="returntable">
-												<table summary="Layout table: the first cell contains the type of the return value, the second contains a short description" border="0">
-													<tr>
-														<td><p><code>boolean</code></p></td>
-
-														<td><p>If after the event object finishes propagating through the DOM event flow its <a href="#events-event-type-defaultPrevented"><code>Event.defaultPrevented</code></a>
-															attribute is <code>false</code>, then this method returns <code>true</code>. Otherwise this method returns <code>false</code>.</p></td>
-													</tr>
-												</table>
-											</div>
-										</div>
-										<div class="exceptions">
-											<p><strong>Exceptions</strong></p>
-											<ul class="exception">
-												<li>If the <a href="#events-event-type-type"><code>Event.type</code></a> was not specified by initializing the event before <code>dispatchEvent</code> was called OR
-													the <a href="#events-Event"><code>Event</code></a> object is already being dispatched, a <code>DOMException</code> of type <em><code>InvalidStateError</code></em>
-													is thrown.</li>
-											</ul>
-										</div>
-									</div>
-								</dd>
-
-							</dl>
+							<p>Specifies the <a href="#events-event-type-type"><code>Event.type</code></a> associated with the event for which the user is registering.</p>
+						</dd>
+						
+						<dt>EventListener? listener</dt>
+						<dd>
+							<p>The <code>listener</code> parameter <span class="must">must</span> be an object that implements the <a href="#events-EventListener"><code>EventListener</code></a> interface or a function.
+								If <code>listener</code> is a function then it <span class="must">must</span> be used as the callback for the event; otherwise, if <code>listener</code> implements <a href="#events-EventListener">
+								<code>EventListener</code></a>, then its <a href="#events-EventListener-handleEvent">handleEvent</a> method <span class="must">must</span> be used as the callback.</p>
+						</dd>
+
+						<dt>optional boolean useCapture = false</dt>
+						<dd>
+							<p>If true, <code>useCapture</code> indicates that the user wishes to add the event listener for the <a class="def" href="#glossary-capture-phase">capture</a>
+								and <a class="def" href="#glossary-target-phase">target</a> phases only, i.e., this event listener will not be triggered during the <a class="def"
+								href="#glossary-bubbling-phase"> bubbling</a> phase. If <code>false</code>, the event listener <span class="must">must</span> only be triggered during the <a class="def"
+								href="#glossary-target-phase">target</a> and <a class="def" href="#glossary-bubbling-phase">bubbling</a> phases.</p>
+
+							<p>This parameter <span class="must">must</span> be optional. If not provided, the <a href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a> method <span class="must">must</span> behave as if <a
+								href="#addEventListener_useCapture"><code class="parameter-name">useCapture</code></a> were specified to be <code>false</code>.</p>
+
+							<p class="note" id="addEventListener_useCapture-author"><strong>Authoring Note:</strong>  The <a href="#events-EventTarget-addEventListener"><code class="parameter-name">
+								useCapture</code></a> parameter was manditory in DOM2 Events [<a href="#references-DOM2Events">DOM2 Events</a>], and omitting this parameter could cause an error
+								in older implementations.</p>
 						</dd>
 					</dl>
 				</dd>
+
+				<dt>void removeEventListener()</dt>
+				<dd>
+					<p><em>Modified in DOM Level 3</em></p>
+
+					<p>Removes an event listener. Calling <code>removeEventListener</code> with arguments that do not identify any currently registered <a href="#events-EventListener"><code>
+						EventListener</code></a> on the <code>EventTarget</code> has no effect. </p>
+
+					<dl class="parameters">
+						<dt>DOMString type</dt>
+						<dd>
+							<p>Specifies the <a href="#events-event-type-type"><code>Event.type</code></a> for which the user registered the event listener.</p>
+						</dd>
+						
+						<dt>EventListener? listener</dt>
+						<dd>
+							<p>The <a href="#events-EventListener"><code>EventListener</code></a> to be removed.</p>
+						</dd>
+
+						<dt>optional boolean useCapture = false</dt>
+						<dd>
+							<p>Specifies whether the <a href="#events-EventListener"><code>EventListener</code></a> being removed was registered for the capture phase or not. Implementations
+								<span class="must">must</span> treat the same listener that was registered twice with both <code>useCapture</code> true and <code>useCapture</code> false as independent registrations, and
+								remove them independently.</p>
+
+							<p class="note"><strong>Authoring Note:</strong>  If a listener was registered twice, once for the capture and target phases and once for the target and bubbling phases,
+								this represents two unique registrations. Removal of an event listener registered for the capture and target phases does not affect the same event listener registered
+								for the target and bubbling phases, and vice versa.</p>
+
+							<p>This parameter <span class="must">must</span> be optional. If not provided, the <a href="#events-EventTarget-removeEventListener">EventTarget.removeEventListener</a> method <span class="must">must</span> behave as if <a
+								href="#removeEventListener_useCapture"><code class="parameter-name">useCapture</code></a> were specified to be <code>false</code>.</p>
+
+							<p class="note"><strong>Authoring Note:</strong>  The <a href="#removeEventListener_useCapture"><code class="parameter-name">useCapture</code></a> parameter was manditory in DOM2
+								Events [<a href="#references-DOM2Events">DOM2 Events</a>], and omitting this parameter could cause an error in older implementations.</p>
+						</dd>
+					</dl>
+				</dd>
+
+				<dt>boolean dispatchEvent()</dt>
+				<dd>
+					<p><em>Modified in DOM Level 3</em></p>
+
+					<p>Dispatches an event into the implementation's event model. The <a class="def" href="#glossary-event-target">event target</a> of the event <span class="must">must</span> be the <code>EventTarget</code>
+						object on which <code>dispatchEvent</code> is called.</p>
+
+					<p>If after the event object finishes propagating through the DOM event flow its <a href="#events-event-type-defaultPrevented"><code>Event.defaultPrevented</code></a>
+						attribute is <code>false</code>, then this method returns <code>true</code>. Otherwise this method returns <code>false</code>.</p>
+
+					<p class="warning"><strong>Warning!</strong>  For security reasons, events dispatched using <a href="#events-EventTarget-dispatchEvent">
+						<code>EventTarget.dispatchEvent()</code></a> <span class="must">must</span> have a <code class="attribute-name"><a href="#events-event-type-isTrusted">isTrusted</a></code> attribute value
+						of <code>false</code>.  See <a href="#trusted-events">trusted events</a> for more details.</p>
+
+					<p class="note"><strong>Note:</strong> while a dispatch (triggered by <a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a>) is in progress, calls to
+						<a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> are ignored (the method returns immediately without side-effects) and calls to
+						<a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> result in an exception.</p>
+
+					<dl class="parameters">
+						<dt>Event event</dt>
+						<dd>
+							<p>The event to be dispatched.</p>
+							<p class="note"><strong>Note: </strong>This parameter receives an <code>Event</code> object, or any object that inherits from <code>Event</code>, e.g., <code>MouseEvent</code>,
+								<code>KeyboardEvent</code>, <code>MutationEvent</code>, etc.</p>
+						</dd>
+					</dl>
+
+					<p><strong>Exceptions:</strong>
+						If the <a href="#events-event-type-type"><code>Event.type</code></a> was not specified by initializing the event before <code>dispatchEvent</code> was called OR
+						the <a href="#events-Event"><code>Event</code></a> object is already being dispatched, a <code>DOMException</code> of type <em><code>InvalidStateError</code></em>
+						is thrown.</p>
+				</dd>
 			</dl>
 		</section>
 
 		<section id="interface-EventListener">
 			<h2>Interface EventListener</h2>
-			<dl>
-				<dt><strong>Interface <em><a id="events-EventListener">EventListener</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
+
+			<p><em>Introduced in DOM Level 2</em></p>
+
+			<p>The <code>EventListener</code> interface is the primary way to handle events. <code>EventListener</code> represents the callback object that the user agent will
+				invoke when dispatching an <code>Event</code> to an <a href="#events-EventTarget"><code>EventTarget</code></a>.</p>
+
+			<p class="note"><strong>Note:</strong> Authors define an object which implements the <code>EventListener</code> interface and register their event listener using <a
+				href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a>. In JavaScript, an <code>EventListener</code> can be either a function or an object
+				with a <code>handleEvent</code> member function.</p>
+
+			<p class="note"><strong>Note:</strong> It is a best practice for authors to remove their <code>EventListener</code> from its <a href="#events-EventTarget"><code>EventTarget</code></a>
+				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> [<cite><a class="informative"
+				href="#references-DOMRange">DOM Range</a></cite>], <span class="mustnot">must not</span> copy the event listeners attached to it.
+				Event listeners can be attached to the newly created <code>Node</code> afterwards, if so desired.</p>
+
+			<p>Moving a <code>Node</code>, with methods such as <code>Document.adoptNode</code>, <code>Node.appendChild</code>, or <code>Range.extractContents</code>
+				[<cite><a class="informative" href="#references-DOMRange">DOM Range</a></cite>], <span class="mustnot">must not</span> cause the event listeners attached to it to be removed or un-registered.</p>
+
+			<dl class="idl" title="interface EventListener">
+				<dt>void handleEvent()</dt>
 				<dd>
-					<p>The <code>EventListener</code> interface is the primary way to handle events. <code>EventListener</code> represents the callback object that the user agent will
-						invoke when dispatching an <code>Event</code> to an <a href="#events-EventTarget"><code>EventTarget</code></a>.</p>
-
-					<p class="note"><strong>Note:</strong> Authors define an object which implements the <code>EventListener</code> interface and register their event listener using <a
-						href="#events-EventTarget-addEventListener">EventTarget.addEventListener</a>. In JavaScript, an <code>EventListener</code> can be either a function or an object
-						with a <code>handleEvent</code> member function.</p>
-
-					<p class="note"><strong>Note:</strong> It is a best practice for authors to remove their <code>EventListener</code> from its <a href="#events-EventTarget"><code>EventTarget</code></a>
-						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> [<cite><a class="informative"
-						href="#references-DOMRange">DOM Range</a></cite>], <span class="mustnot">must not</span> copy the event listeners attached to it.
-						Event listeners can be attached to the newly created <code>Node</code> afterwards, if so desired.</p>
-
-					<p>Moving a <code>Node</code>, with methods such as <code>Document.adoptNode</code>, <code>Node.appendChild</code>, or <code>Range.extractContents</code>
-						[<cite><a class="informative" href="#references-DOMRange">DOM Range</a></cite>], <span class="mustnot">must not</span> cause the event listeners attached to it to be removed or un-registered.</p>
-
-					<dl>
-						<dt><strong>WebIDL Definition</strong></dt>
+					<p>This method <span class="must">must</span> be called whenever an event occurs of the event type for which the <code>EventListener</code> interface was registered.</p>
+
+					<dl class="parameters">
+						<dt>Event event</dt>
 						<dd>
-							<pre class="d3-idl" id="idl-interface-EventListener"><code>
-<span class="comment">// Introduced in DOM Level 2:</span>
-callback interface <a href="#events-EventListener">EventListener</a>
-{
-  void <a href="#events-EventListener-handleEvent">handleEvent</a>(<a href="#events-Event">Event</a> event);
-};
-</code></pre>
-						</dd>
-
-						<dt><strong>Methods</strong></dt>
-						<dd>
-							<dl>
-								<dt><code class="method-name"><a id="events-EventListener-handleEvent">handleEvent</a></code></dt>
-								<dd>
-									<div class="method">
-										<p>This method <span class="must">must</span> be called whenever an event occurs of the event type for which the <code>EventListener</code> interface was registered.</p>
-
-										<div class="parameters">
-											<p><strong>Parameters</strong></p>
-
-											<div class="paramtable">
-												<dl>
-													<dt><code class="parameter-name">event</code> of type <a href="#events-Event"><code>Event</code></a></dt>
-													<dd><p>The <a href="#events-Event"><code>Event</code></a> contains contextual information about the <a class="def" href="#glossary-event">event</a>.</p></dd>
-												</dl>
-											</div>
-										</div>
-										<div><strong>No Return Value</strong></div>
-
-										<div><strong>No Exceptions</strong></div>
-									</div>
-								</dd>
-							</dl>
+							<p>The <a href="#events-Event"><code>Event</code></a> contains contextual information about the <a class="def" href="#glossary-event">event</a>.</p>
 						</dd>
 					</dl>
 				</dd>
@@ -1559,117 +1384,74 @@
 
 		<section id="interface-DocumentEvent">
 			<h2>Interface DocumentEvent</h2>
-			<dl>
-				<dt><strong>Interface <em><a id="events-DocumentEvent">DocumentEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
+
+			<p><em>Introduced in DOM Level 2</em></p>
+
+			<p>The <code>DocumentEvent</code> interface provides a mechanism by which the user can create an <a href="#events-Event"><code>Event</code></a> object of a type supported
+				by the implementation. The <code>DocumentEvent</code> interface <span class="must">must</span> be implemented on the same object that implements the <code>Document</code> interface.</p>
+
+			<dl class="idl" title="Document implements DocumentEvent">
+			</dl>
+
+			<!-- NOTE: This is preserved as a [NoInterfaceObject] definition (rather than a partial interface Document { ..} because SVG also needs to implement this interface on their SVGSVGElement interface -->
+			<dl class="idl" title="[NoInterfaceObject] interface DocumentEvent">
+				<dt>Event createEvent()</dt>
 				<dd>
-					<p>The <code>DocumentEvent</code> interface provides a mechanism by which the user can create an <a href="#events-Event"><code>Event</code></a> object of a type supported
-						by the implementation. The <code>DocumentEvent</code> interface <span class="must">must</span> be implemented on the same object that implements the <code>Document</code> interface.</p>
-
-					<dl>
-						<dt><strong>WebIDL Definition</strong></dt>
-						<!-- NOTE: This is preserved as a [NoInterfaceObject] definition (rather than a partial interface Document { ..} because SVG also needs to implement this interface on their SVGSVGElement interface -->
-						<dd>
-							<pre class="d3-idl" id="idl-interface-DocumentEvent"><code>
-<span class="comment">// Introduced in DOM Level 2:</span>
-[NoInterfaceObject]
-interface <a href="#events-DocumentEvent">DocumentEvent</a>
-{
-  <span class="comment">// Modified in DOM Level 3:</span>
-  <a href="#events-Event">Event</a> <a href="#events-DocumentEvent-createEvent">createEvent</a>(DOMString eventInterface);
-};
-Document implements <a href="#events-DocumentEvent">DocumentEvent</a>;
-</code></pre>
-						</dd>
-
-						<dt><strong>Methods</strong></dt>
+					<p>Creates an event object of the type specified. Returns the newly created object.</p>
+
+					<p><strong>Exceptions:</strong>
+						If the implementation does not support the <a href="#events-Event"><code>Event</code></a> interface requested, a <code>DOMException</code> of type <em><code>NotSupportedError</code></em>
+						is thrown.</p>
+
+					<dl class="parameters">
+						<dt>DOMString eventInterface</dt>
 						<dd>
-							<dl>
-								<dt><code class="method-name"><a id="events-DocumentEvent-createEvent">createEvent</a></code></dt>
-								<dd>
-									<div class="method">
-										<p>Creates an event object of the type specified.</p>
-
-										<div class="parameters">
-											<p><strong>Parameters</strong></p>
-
-											<div class="paramtable">
-												<dl>
-													<dt><code class="parameter-name">eventInterface</code> of type <code>DOMString</code></dt>
-													<dd>
-														<p>The <code>eventInterface</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.</p>
-
-														<p class="note"><strong>Note: </strong>After calling <code>createEvent</code>, and prior to dispatching the event with the
-															<a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method, the
-															<a href="#events-Event"><code>Event</code></a> will need to be initialized with the appropriate event initialization
-															method (e.g., <code>initEvent</code>, <code>initMouseEvent</code>, etc.) in order to associate it with an event type and related values.</p>
-
-														<p class="example"><strong>Example:</strong>  A content author wishing to synthesize some kind of <a href="#events-UIEvent"><code>UIEvent</code></a>
-															would invoke <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>. The <a href="#events-event-type-initUIEvent"><code>
-															UIEvent.initUIEvent()</code></a> method could then be called on the newly created <a class="noxref" href="#events-UIEvent"><code>UIEvent</code></a> object to
-															set the specific type of user interface event to be dispatched, <a class="eventtype" href="#event-type-scroll"><code>scroll</code></a> for example, and set its
-															context information, e.g., <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a>.</p>
-
-														<p>For backward compatibility, the following case-insensitive feature names are valid values for the parameter <code>eventInterface</code>:</p>
-
-														<table class="data-table" summary="The first column contains the feature name, the second contains the resulting event interface returned by createEvent">
-															<tr>
-																<th>Legacy feature name</th>
-																<th>Resulting event interface</th>
-															</tr>
-															<tr>
-																<td><code>"Events"</code></td>
-																<td><a href="#interface-Event"><code>Event</code></a></td>
-															</tr>
-															<tr>
-																<td><code>"HTMLEvents"</code></td>
-																<td><a href="#interface-Event"><code>Event</code></a></td>
-															</tr>
-															<tr>
-																<td><code>"UIEvents"</code></td>
-																<td><a href="#events-UIEvent"><code>UIEvent</code></a></td>
-															</tr>
-															<tr>
-																<td><code>"MouseEvents"</code></td>
-																<td><a href="#events-MouseEvent"><code>MouseEvent</code></a></td>
-															</tr>
-															<tr>
-																<td><code>"MutationEvents"</code></td>
-																<td><a href="#events-MutationEvent"><code>MutationEvent</code></a></td>
-															</tr>
-														</table>
-
-														<p class="warning"><strong>Warning!</strong>  For security reasons, events generated using <a href="#events-DocumentEvent-createEvent">
-															<code>DocumentEvent.createEvent("Event")</code></a> <span class="must">must</span> have a <code class="attribute-name"><a href="#events-event-type-isTrusted">isTrusted</a></code> attribute
-															value of <code>false</code>.  See <a href="#trusted-events">trusted events</a> for more details.</p>
-													</dd>
-												</dl>
-											</div>
-										</div>
-										<div class="return">
-											<p><strong>Return Value</strong></p>
-
-											<div class="returntable">
-												<table summary="Layout table: the first cell contains the type of the return value, the second contains a short description" border="0">
-													<tr>
-														<td><a href="#events-Event"><code>Event</code></a></td>
-
-														<td>The newly created event object.</td>
-													</tr>
-												</table>
-											</div>
-										</div>
-										<div class="exceptions">
-											<p><strong>Exceptions</strong></p>
-
-											<ul class="exception">
-												<li>If the implementation does not support the <a href="#events-Event"><code>Event</code></a> interface requested, a <code>DOMException</code> of type <em><code>NotSupportedError</code></em>
-													is thrown.</li>
-											</ul>
-										</div>
-									</div>
-								</dd>
-							</dl>
+							<p>The <code>eventInterface</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.</p>
+
+							<p class="note"><strong>Note: </strong>After calling <code>createEvent</code>, and prior to dispatching the event with the
+								<a href="#events-EventTarget-dispatchEvent"><code>EventTarget.dispatchEvent()</code></a> method, the
+								<a href="#events-Event"><code>Event</code></a> will need to be initialized with the appropriate event initialization
+								method (e.g., <code>initEvent</code>, <code>initMouseEvent</code>, etc.) in order to associate it with an event type and related values.</p>
+
+							<p class="example"><strong>Example:</strong>  A content author wishing to synthesize some kind of <a href="#events-UIEvent"><code>UIEvent</code></a>
+								would invoke <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>. The <a href="#events-event-type-initUIEvent"><code>
+								UIEvent.initUIEvent()</code></a> method could then be called on the newly created <a class="noxref" href="#events-UIEvent"><code>UIEvent</code></a> object to
+								set the specific type of user interface event to be dispatched, <a class="eventtype" href="#event-type-scroll"><code>scroll</code></a> for example, and set its
+								context information, e.g., <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a>.</p>
+
+							<p>For backward compatibility, the following case-insensitive feature names are valid values for the parameter <code>eventInterface</code>:</p>
+
+							<table class="data-table" summary="The first column contains the feature name, the second contains the resulting event interface returned by createEvent">
+								<tr>
+									<th>Legacy feature name</th>
+									<th>Resulting event interface</th>
+								</tr>
+								<tr>
+									<td><code>"Events"</code></td>
+									<td><a href="#interface-Event"><code>Event</code></a></td>
+								</tr>
+								<tr>
+									<td><code>"HTMLEvents"</code></td>
+									<td><a href="#interface-Event"><code>Event</code></a></td>
+								</tr>
+								<tr>
+									<td><code>"UIEvents"</code></td>
+									<td><a href="#events-UIEvent"><code>UIEvent</code></a></td>
+								</tr>
+								<tr>
+									<td><code>"MouseEvents"</code></td>
+									<td><a href="#events-MouseEvent"><code>MouseEvent</code></a></td>
+								</tr>
+								<tr>
+									<td><code>"MutationEvents"</code></td>
+									<td><a href="#events-MutationEvent"><code>MutationEvent</code></a></td>
+								</tr>
+							</table>
+
+							<p class="warning"><strong>Warning!</strong>  For security reasons, events generated using <a href="#events-DocumentEvent-createEvent">
+								<code>DocumentEvent.createEvent("Event")</code></a> <span class="must">must</span> have a <code class="attribute-name"><a href="#events-event-type-isTrusted">isTrusted</a></code> attribute
+								value of <code>false</code>.  See <a href="#trusted-events">trusted events</a> for more details.</p>
 						</dd>
 					</dl>
 				</dd>
@@ -1698,7 +1480,8 @@
 
 				<p>The following table provides an informative summary of the event types defined in this specification.</p>
 
-				<table class="data-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.">
+				<table class="data-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.">
 					<tr>
 						<th>Event Type</th>
 						<th>Sync / Async</th>
@@ -2095,95 +1878,69 @@
 				<h3>User Interface Event Types</h3>
 				<p>The User Interface event module contains basic event types associated with user interfaces and document manipulation.</p>
 
-				<dl>
-					<dt><strong>Interface <em><a id="events-UIEvent">UIEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
-					<dd>
-						<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 <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>
-							method call.</p>
-
-						<dl>
-							<dt><strong>WebIDL Definition</strong></dt>
-							<dd>
-								<pre class="d3-idl" id="idl-interface-UIEvent"><code>
-<span class="comment">// Introduced in DOM Level 2:</span>
-interface <a href="#events-UIEvent">UIEvent</a> : <a href="#events-Event">Event</a>
-{
-  readonly attribute AbstractView? <a href="#events-UIEvent-view">view</a>;
-  readonly attribute long          <a href="#events-UIEvent-detail">detail</a>;
-  <span class="comment">// Deprecated in DOM Level 3:</span>
-  void                             <a href="#events-event-type-initUIEvent">initUIEvent</a>(DOMString typeArg,
-                                               boolean canBubbleArg,
-                                               boolean cancelableArg,
-                                               AbstractView? viewArg,
-                                               long detailArg);
-};
-</code></pre>
-							</dd>
-
-							<dt><strong>Attributes</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="attribute-name"><a id="events-UIEvent-detail">detail</a></code> of type <code>long</code>, readonly</dt>
-									<dd>
-										<p>Specifies some detail information about the <a href="#events-Event"><code>Event</code></a>, depending on the type of event.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-UIEvent-view">view</a></code> of type <code>AbstractView</code>, readonly</dt>
-									<dd>
-										<p>The <code>view</code> attribute identifies the <code>AbstractView</code> from which the event was generated.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
-									</dd>
-								</dl>
-							</dd>
-
-							<dt><strong>Methods</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="method-name"><a id="events-event-type-initUIEvent">initUIEvent</a></code></dt>
-									<dd>
-										<div class="method">
-											<p>Initializes attributes of an <code>UIEvent</code> object. This method has the same behavior as <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a>.</p>
-
-											<p class="warning"><strong>Warning!</strong> The <code>initUIEvent</code> method is deprecated, but supported for backwards-compatibility with widely-deployed
-												implementations. See <a href="#new-event-interface-initializers">Appendix A</a> for a suggested (informative-only) alternate initializer syntax.</p>
-
-											<div class="parameters">
-												<p><strong>Parameters</strong></p>
-
-												<div class="paramtable">
-													<dl>
-														<dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
-														<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
-
-														<dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
-														<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
-
-														<dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
-														<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
-
-														<dt><code class="parameter-name">viewArg</code> of type <code>AbstractView</code></dt>
-														<dd><p>Specifies <a href="#events-UIEvent-view"><code>UIEvent.view</code></a>. This value <span class="may">may</span> be <code>null</code>.</p></dd>
-
-														<dt><code class="parameter-name">detailArg</code> of type <code>long</code></dt>
-														<dd><p>Specifies <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a>.</p></dd>
-													</dl>
-												</div>
-											</div>
-											<div><strong>No Return Value</strong></div>
-
-											<div><strong>No Exceptions</strong></div>
-										</div>
-									</dd>
-								</dl>
-							</dd>
-						</dl>
-					</dd>
-				</dl>
+				<section id="interface-UIEvent">
+					<h4>Interface UIEvent</h4>
+
+					<p><em>Introduced in DOM Level 2</em></p>
+
+					<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 <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("UIEvent")</code></a>
+						method call.</p>
+
+					<dl class="idl" title="interface UIEvent : Event">
+						<dt>readonly attribute AbstractView? view</dt>
+						<dd>
+							<p>The <code>view</code> attribute identifies the <code>AbstractView</code> from which the event was generated.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
+						</dd>
+
+						<dt>readonly attribute long detail</dt>
+						<dd>
+							<p>Specifies some detail information about the <a href="#events-Event"><code>Event</code></a>, depending on the type of event.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+						
+						<dt>// Deprecated in DOM Level 3</dt>
+
+						<dt>void initUIEvent()</dt>
+						<dd>
+							<p>Initializes attributes of an <code>UIEvent</code> object. This method has the same behavior as <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a>.</p>
+
+							<p class="warning"><strong>Warning!</strong> The <code>initUIEvent</code> method is deprecated, but supported for backwards-compatibility with widely-deployed
+								implementations. See <a href="#new-event-interface-initializers">Appendix A</a> for a suggested (informative-only) alternate initializer syntax.</p>
+
+							<dl class="parameters">
+								<dt>DOMString typeArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>boolean canBubbleArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>boolean cancelableArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>AbstractView? viewArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-UIEvent-view"><code>UIEvent.view</code></a>. This value <span class="may">may</span> be <code>null</code>.</p>
+								</dd>
+
+								<dt>long detailArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a>.</p>
+								</dd>
+							</dl>
+						</dd>
+					</dl>
+				</section>
 
 				<p>The User Interface event types are listed below.  Some of these events use the <a href="#events-UIEvent"><code>UIEvent</code></a> interface if generated from a
 					user interface, but the <a href="#events-Event"><code>Event</code></a> interface otherwise, as detailed in each event.</p>
@@ -2687,50 +2444,35 @@
 					Guidelines 2.0</a> [<a href="#references-UAAG2">UAAG 2.0</a>], with particular attention on the <a href="http://www.w3.org/WAI/UA/2010/ED-UAAG20-20100308/#gl-focus-mechanism">
 					focus mechanism</a> and the terms defined in the <a href="http://www.w3.org/WAI/UA/2010/ED-UAAG20-20100308/#def-focus">glossary entry for focus</a>.</p>
 
-				<dl>
-					<dt><strong>Interface <em><a id="events-FocusEvent">FocusEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
-					<dd>
-						<p>The <code>FocusEvent</code> interface provides specific contextual information associated with Focus events.</p>
-
-						<p>
-							To create an instance of the <code>FocusEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("FocusEvent")</code></a>
-							method call.
-						</p>
-
-						<p class="note">
-							<strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
+				<section id="interface-FocusEvent">
+					<h4>Interface FocusEvent</h4>
+
+					<p><em>Introduced in DOM Level 3</em></p>
+
+					<p>The <code>FocusEvent</code> interface provides specific contextual information associated with Focus events.</p>
+
+					<p>
+						To create an instance of the <code>FocusEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("FocusEvent")</code></a>
+						method call.
+					</p>
+
+					<p class="note">
+						<strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
 						FocusEvent objects.
-						</p>
-
-						<dl>
-							<dt><strong>WebIDL Definition</strong></dt>
-							<dd>
-								<pre class="d3-idl" id="idl-interface-FocusEvent"><code>
-<span class="comment">// Introduced in DOM Level 3:</span>
-interface <a href="#events-FocusEvent">FocusEvent</a> : <a href="#events-UIEvent">UIEvent</a>
-{
-  readonly attribute <a href="#events-EventTarget">EventTarget</a>? <a href="#events-FocusEvent-relatedTarget">relatedTarget</a>;
-};
-</code></pre>
-							</dd>
-
-							<dt><strong>Attributes</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="attribute-name"><a id="events-FocusEvent-relatedTarget">relatedTarget</a></code> of type <a href="#events-EventTarget"><code>EventTarget</code></a>,
-										readonly</dt>
-									<dd>
-										<p>Used to identify a secondary <a href="#events-EventTarget"><code>EventTarget</code></a> related to a Focus event, depending on the type of event.</p>
-
-										<p>For security reasons with nested browsing contexts, when tabbing into or out of a nested context, the relevant EventTarget <span class="should">should</span> be <code>null</code>.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
-									</dd>
-								</dl>
-							</dd>
-						</dl>
-					</dd>
-				</dl>
+					</p>
+
+					<dl class="idl" title="interface FocusEvent : UIEvent">
+						<dt>readonly attribute EventTarget? relatedTarget</dt>
+						<dd>
+							<p>Used to identify a secondary <a href="#events-EventTarget"><code>EventTarget</code></a> related to a Focus event, depending on the type of event.</p>
+
+							<p>For security reasons with nested browsing contexts, when tabbing into or out of a nested context, the relevant EventTarget <span class="should">should</span> be <code>null</code>.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
+						</dd>
+
+					</dl>
+				</section>
 
 				<section id="events-focusevent-event-order">
 					<h4>Focus Event Order</h4>
@@ -3151,318 +2893,250 @@
 					<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>
 
-				<dl>
-					<dt><strong>Interface <em><a id="events-MouseEvent">MouseEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
-					<dd>
-						<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.</p>
-
-						<p class="note"><strong>Note:</strong> Ancestors of the targeted element can use event bubbling to obtain notifications of mouse events which occur within their descendent
-							elements.</p>
-
-						<p>To create an instance of the <code>MouseEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("MouseEvent")</code></a>
-							method call.</p>
-
-						<p class="note"><strong>Note:</strong> When initializing <code>MouseEvent</code> objects using <code>initMouseEvent</code>, implementations can use the client
-							coordinates <code>clientX</code> and <code>clientY</code> for calculation of other coordinates (such as target coordinates exposed by <a class="def" href="#glossary-DOM-Level-0">
-							DOM Level 0</a> implementations or other proprietary attributes, e.g., <code>pageX</code>).</p>
-
-						<dl>
-							<dt><strong>WebIDL Definition</strong></dt>
-							<dd>
-								<pre class="d3-idl" id="idl-interface-MouseEvent"><code>
-<span class="comment">// Modified in DOM Level 3:</span>
-interface <a href="#events-MouseEvent">MouseEvent</a> : <a href="#events-UIEvent">UIEvent</a> {
-  readonly attribute long           <a href="#events-MouseEvent-screenX">screenX</a>;
-  readonly attribute long           <a href="#events-MouseEvent-screenY">screenY</a>;
-  readonly attribute long           <a href="#events-MouseEvent-clientX">clientX</a>;
-  readonly attribute long           <a href="#events-MouseEvent-clientY">clientY</a>;
-  readonly attribute boolean        <a href="#events-MouseEvent-ctrlKey">ctrlKey</a>;
-  readonly attribute boolean        <a href="#events-MouseEvent-shiftKey">shiftKey</a>;
-  readonly attribute boolean        <a href="#events-MouseEvent-altKey">altKey</a>;
-  readonly attribute boolean        <a href="#events-MouseEvent-metaKey">metaKey</a>;
-  readonly attribute unsigned short <a href="#events-MouseEvent-button">button</a>;
-  readonly attribute unsigned short <a href="#events-MouseEvent-buttons">buttons</a>;
-  readonly attribute <a href="#events-EventTarget">EventTarget</a>?   <a href="#events-MouseEvent-relatedTarget">relatedTarget</a>;
-  <span class="comment">// Deprecated in DOM Level 3:</span>
-  void                              <a href="#events-event-type-initMouseEvent">initMouseEvent</a>(DOMString typeArg,
-                                                   boolean canBubbleArg,
-                                                   boolean cancelableArg,
-                                                   AbstractView? viewArg,
-                                                   long detailArg,
-                                                   long screenXArg,
-                                                   long screenYArg,
-                                                   long clientXArg,
-                                                   long clientYArg,
-                                                   boolean ctrlKeyArg,
-                                                   boolean altKeyArg,
-                                                   boolean shiftKeyArg,
-                                                   boolean metaKeyArg,
-                                                   unsigned short buttonArg,
-                                                   <a href="#events-EventTarget">EventTarget</a>? relatedTargetArg);
-  <span class="comment">// Introduced in DOM Level 3:</span>
-  boolean                           <a href="#events-MouseEvent-getModifierState">getModifierState</a>(DOMString keyArg);
-};
-</code></pre>
-							</dd>
-
-							<dt><strong>Attributes</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="attribute-name"><a id="events-MouseEvent-altKey">altKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd><p>Refer to the <a href="#events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a> attribute.</p></dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-button">button</a></code> of type <code>unsigned short</code>, readonly</dt>
-									<dd>During mouse events caused by the depression or release of a mouse button, <code>button</code> <span class="must">must</span> be used to indicate which pointer device button changed state.
-										<p>The value of the <a href="#events-MouseEvent-button"><code>MouseEvent.button</code></a> attribute <span class="must">must</span> be as follows:</p>
-
-										<ul>
-											<li><code>0</code> <span class="must">must</span> indicate the primary button of the device (in general, the left button  or the only button on single-button devices, used to activate a user
-												interface control or select text) or the un-initialized value.</li>
-											<li><code>1</code> <span class="must">must</span> indicate the auxiliary button (in general, the middle button, often combined with a mouse wheel).</li>
-											<li><code>2</code> <span class="must">must</span> indicate the secondary button (in general, the right button, often used to display a context menu).</li>
-										</ul>
-
-										<p>Some pointing devices provide or simulate more buttons, and values higher than <code>2</code> <span class="may">may</span> be used to represent such buttons.</p>
-
-										<p class="note"><strong>Note:</strong> The value of <code>button</code> is not updated for events not caused by the depression/release of a mouse button. In these
-											scenarios, take care not to interpret the value <code>0</code> as the left button, but rather as the <a class="def" href="#glossary-un-initialized-value">un-initialized
-											value</a></p>
-
-										<p class="note"><strong>Authoring Note:</strong> Some <a class="def" href="#glossary-default-action">default actions</a> related to events such as
-											<a class="eventtype"><code>mousedown</code></a> and <a class="eventtype"><code>mouseup</code></a> depend on the specific mouse button in use.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-buttons">buttons</a></code> of type <code>unsigned short</code>, readonly</dt>
-									<dd>
-										<p>During any mouse events, <code>buttons</code> <span class="must">must</span> be used to indicate which combination of mouse buttons are
-											currently being pressed, expressed as a bitmask.</p>
-
-										<p class="note"><strong>Note:</strong> Though similarly named, the values for the <code>buttons</code> attribute and the <a href="#events-MouseEvent-button"><code>button</code></a>
-											attribute are very different. The value of <code>button</code> is assumed to be valid during <a class="eventtype"><code>mousedown</code></a>/
-											<a class="eventtype"><code>mouseup</code></a> event handlers, whereas the <code>buttons</code> attribute reflects the state of the mouse's buttons for any
-											trusted <code>MouseEvent</code> object (while it is being dispatched), because it can represent the "no button currently active" state (0).</p>
-
-										<p>The value of the <a href="#events-MouseEvent-buttons"><code>MouseEvent.buttons</code></a> attribute <span class="must">must</span> be as follows:</p>
-
-										<ul>
-											<li><code>0</code> <span class="must">must</span> indicates no button is currently active.</li>
-											<li><code>1</code> <span class="must">must</span> indicate the primary button of the device (in general, the left button or the only button on single-button devices, used to activate a user
-												interface control or select text).</li>
-											<li><code>2</code> <span class="must">must</span> indicate the secondary button (in general, the right button, often used to display a context menu), if present.</li>
-											<li><code>4</code> <span class="must">must</span> indicate the auxiliary button (in general, the middle button, often combined with a mouse wheel).</li>
-										</ul>
-
-										<p>Some pointing devices provide or simulate more buttons.  To represent such buttons, the value <span class="must">must</span> be doubled for each successive button (in the binary series <code>
-											8</code>, <code>16</code>, <code>32</code>, ... ).</p>
-
-										<p class="note" id="buttons-mask"><strong>Note:</strong> Because the sum of any set of button values is a unique number, a content author can use a bitwise operation
-											to determine how many buttons are currently being pressed and which buttons they are, for an arbitrary number of mouse buttons on a device, e.g., the value <code>3</code>
-											indicates that the left and right button are currently both pressed, while the value <code>5</code> indicates that the left and middle button are currently both
-											pressed.</p>
-
-										<p class="note"><strong>Authoring Note: </strong>Some <a class="def" href="#glossary-default-action">default actions</a> related to events such as
-											<a class="eventtype"><code>mousedown</code></a> and <a class="eventtype"><code>mouseup</code></a> depend on the specific mouse button in use.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-clientX">clientX</a></code> of type <code>long</code>, readonly</dt>
-									<dd>
-										<p>The horizontal coordinate at which the event occurred relative to the viewport associated with the event.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-clientY">clientY</a></code> of type <code>long</code>, readonly</dt>
-									<dd>
-										<p>The vertical coordinate at which the event occurred relative to the viewport associated with the event.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-ctrlKey">ctrlKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p>Refer to the <a href="#events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a> attribute.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-metaKey">metaKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p>Refer to the <a href="#events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a> attribute.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-relatedTarget">relatedTarget</a></code> of type <a href="#events-EventTarget"><code>EventTarget</code></a>,
-										readonly</dt>
-									<dd>
-										<p>Used to identify a secondary <a href="#events-EventTarget"><code>EventTarget</code></a> related to a UI event, depending on the type of event.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-screenX">screenX</a></code> of type <code>long</code>, readonly</dt>
-									<dd>
-										<p>The horizontal coordinate at which the event occurred relative to the origin of the screen coordinate system.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-screenY">screenY</a></code> of type <code>long</code>, readonly</dt>
-									<dd>
-										<p>The vertical coordinate at which the event occurred relative to the origin of the screen coordinate system.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MouseEvent-shiftKey">shiftKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p>Refer to the <a href="#events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a> attribute.</p>
-									</dd>
-								</dl>
-							</dd>
-
-							<dt><strong>Methods</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="method-name"><a id="events-MouseEvent-getModifierState">getModifierState</a></code> introduced in <strong class="since">DOM Level 3</strong></dt>
-									<dd>
-										<div class="method">
-											<p>Queries the state of a modifier using a key value. See also <a href="#keys-Modifiers">Modifier keys</a>.</p>
-
-											<div class="parameters">
-												<p><strong>Parameters</strong></p>
-
-												<div class="paramtable">
-													<dl>
-														<dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-KeyboardEvent-getModifierState"><code>KeyboardEvent.getModifierState()</code></a> method for a description of this parameter.</p>
-														</dd>
-													</dl>
-												</div>
-											</div>
-											<div class="return">
-												<p><strong>Return Value</strong></p>
-
-												<div class="returntable">
-													<table summary="Layout table: the first cell contains the type of the return value, the second contains a short description" border="0">
-														<tr>
-															<td><code>boolean</code></td>
-															<td><code>true</code> if it is a modifier key and the modifier is activated, <code>false</code> otherwise.</td>
-														</tr>
-													</table>
-												</div>
-											</div>
-											<div><strong>No Exceptions</strong></div>
-										</div>
-									</dd>
-
-									<dt><code class="method-name"><a id="events-event-type-initMouseEvent">initMouseEvent</a></code></dt>
-									<dd>
-										<div class="method">
-											<p>Initializes attributes of a <code>MouseEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.</p>
-
-											<p class="warning"><strong>Warning!</strong> The <code>initMouseEvent</code> method is deprecated, but supported for backwards-compatibility with widely-deployed
-												implementations. See <a href="#new-event-interface-initializers">Appendix A</a> for a suggested (informative-only) alternate initializer syntax.</p>
-
-											<div class="parameters">
-												<p><strong>Parameters</strong></p>
-
-												<div class="paramtable">
-													<dl>
-														<dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">viewArg</code> of type <code>AbstractView</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">detailArg</code> of type <code>long</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">screenXArg</code> of type <code>long</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">screenYArg</code> of type <code>long</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">clientXArg</code> of type <code>long</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">clientYArg</code> of type <code>long</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">ctrlKeyArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">altKeyArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">shiftKeyArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">metaKeyArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">buttonArg</code> of type <code>unsigned short</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-button"><code>MouseEvent.button</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">relatedTargetArg</code> of type <a href="#events-EventTarget"><code>EventTarget</code></a></dt>
-														<dd>
-															<p>Specifies <a href="#events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a>. This value <span class="may">may</span> be <code>null</code>.</p>
-														</dd>
-													</dl>
-												</div>
-											</div>
-											<div><strong>No Return Value</strong></div>
-
-											<div><strong>No Exceptions</strong></div>
-										</div>
-									</dd>
-								</dl>
-							</dd>
-						</dl>
-					</dd>
-				</dl>
+				<section id="interface-MouseEvent">
+					<h4>Interface MouseEvent</h4>
+
+					<p><em>Introduced in DOM Level 2, modified in DOM Level 3</em></p>
+
+					<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.</p>
+
+					<p class="note"><strong>Note:</strong> Ancestors of the targeted element can use event bubbling to obtain notifications of mouse events which occur within their descendent
+						elements.</p>
+
+					<p>To create an instance of the <code>MouseEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("MouseEvent")</code></a>
+						method call.</p>
+
+					<p class="note"><strong>Note:</strong> When initializing <code>MouseEvent</code> objects using <code>initMouseEvent</code>, implementations can use the client
+						coordinates <code>clientX</code> and <code>clientY</code> for calculation of other coordinates (such as target coordinates exposed by <a class="def" href="#glossary-DOM-Level-0">
+						DOM Level 0</a> implementations or other proprietary attributes, e.g., <code>pageX</code>).</p>
+
+					<dl class="idl" title="interface MouseEvent : UIEvent">
+						<dt>readonly attribute long screenX</dt>
+						<dd>
+							<p>The horizontal coordinate at which the event occurred relative to the origin of the screen coordinate system.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute long screenY</dt>
+						<dd>
+							<p>The vertical coordinate at which the event occurred relative to the origin of the screen coordinate system.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute long clientX</dt>
+						<dd>
+							<p>The horizontal coordinate at which the event occurred relative to the viewport associated with the event.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute long clientY</dt>
+						<dd>
+							<p>The vertical coordinate at which the event occurred relative to the viewport associated with the event.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute boolean ctrlKey</dt>
+						<dd>
+							<p>Refer to the <a href="#events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a> attribute.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+						</dd>
+
+						<dt>readonly attribute boolean shiftKey</dt>
+						<dd>
+							<p>Refer to the <a href="#events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a> attribute.</p>
+						</dd>
+
+						<dt>readonly attribute boolean altKey</dt>
+						<dd>
+							<p>Refer to the <a href="#events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a> attribute.</p>
+						</dd>
+
+						<dt>readonly attribute boolean metaKey</dt>
+						<dd>
+							<p>Refer to the <a href="#events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a> attribute.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+						</dd>
+
+						<dt>readonly attribute unsigned short button</dt>
+						<dd>
+							<p>During mouse events caused by the depression or release of a mouse button, <code>button</code> <span class="must">must</span> be used to indicate which pointer device button changed state.</p>
+							<p>The value of the <a href="#events-MouseEvent-button"><code>MouseEvent.button</code></a> attribute <span class="must">must</span> be as follows:</p>
+
+							<ul>
+								<li><code>0</code> <span class="must">must</span> indicate the primary button of the device (in general, the left button  or the only button on single-button devices, used to activate a user
+									interface control or select text) or the un-initialized value.</li>
+								<li><code>1</code> <span class="must">must</span> indicate the auxiliary button (in general, the middle button, often combined with a mouse wheel).</li>
+								<li><code>2</code> <span class="must">must</span> indicate the secondary button (in general, the right button, often used to display a context menu).</li>
+							</ul>
+
+							<p>Some pointing devices provide or simulate more buttons, and values higher than <code>2</code> <span class="may">may</span> be used to represent such buttons.</p>
+
+							<p class="note"><strong>Note:</strong> The value of <code>button</code> is not updated for events not caused by the depression/release of a mouse button. In these
+								scenarios, take care not to interpret the value <code>0</code> as the left button, but rather as the <a class="def" href="#glossary-un-initialized-value">un-initialized
+								value</a></p>
+
+							<p class="note"><strong>Authoring Note:</strong> Some <a class="def" href="#glossary-default-action">default actions</a> related to events such as
+								<a class="eventtype"><code>mousedown</code></a> and <a class="eventtype"><code>mouseup</code></a> depend on the specific mouse button in use.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute unsigned short buttons</dt>
+						<dd>
+							<p>During any mouse events, <code>buttons</code> <span class="must">must</span> be used to indicate which combination of mouse buttons are
+								currently being pressed, expressed as a bitmask.</p>
+
+							<p class="note"><strong>Note:</strong> Though similarly named, the values for the <code>buttons</code> attribute and the <a href="#events-MouseEvent-button"><code>button</code></a>
+								attribute are very different. The value of <code>button</code> is assumed to be valid during <a class="eventtype"><code>mousedown</code></a>/
+								<a class="eventtype"><code>mouseup</code></a> event handlers, whereas the <code>buttons</code> attribute reflects the state of the mouse's buttons for any
+								trusted <code>MouseEvent</code> object (while it is being dispatched), because it can represent the "no button currently active" state (0).</p>
+
+							<p>The value of the <a href="#events-MouseEvent-buttons"><code>MouseEvent.buttons</code></a> attribute <span class="must">must</span> be as follows:</p>
+
+							<ul>
+								<li><code>0</code> <span class="must">must</span> indicates no button is currently active.</li>
+								<li><code>1</code> <span class="must">must</span> indicate the primary button of the device (in general, the left button or the only button on single-button devices, used to activate a user
+									interface control or select text).</li>
+								<li><code>2</code> <span class="must">must</span> indicate the secondary button (in general, the right button, often used to display a context menu), if present.</li>
+								<li><code>4</code> <span class="must">must</span> indicate the auxiliary button (in general, the middle button, often combined with a mouse wheel).</li>
+							</ul>
+
+							<p>Some pointing devices provide or simulate more buttons.  To represent such buttons, the value <span class="must">must</span> be doubled for each successive button (in the binary series <code>
+								8</code>, <code>16</code>, <code>32</code>, ... ).</p>
+
+							<p class="note" id="buttons-mask"><strong>Note:</strong> Because the sum of any set of button values is a unique number, a content author can use a bitwise operation
+								to determine how many buttons are currently being pressed and which buttons they are, for an arbitrary number of mouse buttons on a device, e.g., the value <code>3</code>
+								indicates that the left and right button are currently both pressed, while the value <code>5</code> indicates that the left and middle button are currently both
+								pressed.</p>
+
+							<p class="note"><strong>Authoring Note: </strong>Some <a class="def" href="#glossary-default-action">default actions</a> related to events such as
+								<a class="eventtype"><code>mousedown</code></a> and <a class="eventtype"><code>mouseup</code></a> depend on the specific mouse button in use.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute EventTarget? relatedTarget</dt>
+						<dd>
+							<p>Used to identify a secondary <a href="#events-EventTarget"><code>EventTarget</code></a> related to a UI event, depending on the type of event.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
+						</dd>
+
+						<dt>// Deprecated in DOM Level 3</dt>
+
+						<dt>void initMouseEvent()</dt>
+						<dd>
+							<p>Initializes attributes of a <code>MouseEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.</p>
+
+							<p class="warning"><strong>Warning!</strong> The <code>initMouseEvent</code> method is deprecated, but supported for backwards-compatibility with widely-deployed
+								implementations. See <a href="#new-event-interface-initializers">Appendix A</a> for a suggested (informative-only) alternate initializer syntax.</p>
+
+							<dl class="parameters">
+								<dt>DOMString typeArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>boolean canBubbleArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>boolean cancelableArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>AbstractView? viewArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>long detailArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>long screenXArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-screenX"><code>MouseEvent.screenX</code></a>.</p>
+								</dd>
+
+								<dt>long screenYArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-screenY"><code>MouseEvent.screenY</code></a>.</p>
+								</dd>
+
+								<dt>long clientXArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-clientX"><code>MouseEvent.clientX</code></a>.</p>
+								</dd>
+
+								<dt>long clientYArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-clientY"><code>MouseEvent.clientY</code></a>.</p>
+								</dd>
+
+								<dt>boolean ctrlKeyArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-ctrlKey"><code>MouseEvent.ctrlKey</code></a>.</p>
+								</dd>
+
+								<dt>boolean altKeyArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-altKey"><code>MouseEvent.altKey</code></a>.</p>
+								</dd>
+
+								<dt>boolean shiftKeyArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a>.</p>
+								</dd>
+
+								<dt>boolean metaKeyArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-metaKey"><code>MouseEvent.metaKey</code></a>.</p>
+								</dd>
+
+								<dt>unsigned short buttonArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-button"><code>MouseEvent.button</code></a>.</p>
+								</dd>
+
+								<dt>EventTarget? relatedTargetArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MouseEvent-relatedTarget"><code>MouseEvent.relatedTarget</code></a>. This value <span class="may">may</span> be <code>null</code>.</p>
+								</dd>
+							</dl>
+						</dd>
+
+						<dt>// Introduced in DOM Level 3</dt>
+
+						<dt>boolean getModifierState()</dt>
+						<dd>
+							<p><em>Introduced in DOM Level 3</em></p>
+
+							<p>Queries the state of a modifier using a key value. See also <a href="#keys-Modifiers">Modifier keys</a>.</p>
+
+							<p>Returns <code>true</code> if it is a modifier key and the modifier is activated, <code>false</code> otherwise.</p>
+
+							<dl class="parameters">
+								<dt>DOMString keyArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-KeyboardEvent-getModifierState"><code>KeyboardEvent.getModifierState()</code></a> method for a description of this parameter.</p>
+								</dd>
+							</dl>
+						</dd>
+
+					</dl>
+				</section>
 
 				<p id="current-click-count">Implementations <span class="must">must</span> maintain the <em>current click count</em> when generating mouse events. This <span class="must">must</span> be a non-negative integer indicating
 					the number of consecutive clicks of a pointing device button within a specific time. The delay after which the count resets is specific to the
@@ -4347,102 +4021,78 @@
 					on the wheel differently. For example, a vertical swipe on the edge of a trackpad from top to bottom can be interpreted as a wheel action intended to either scroll the
 					page down or to pan the page up (i.e., resulting in either a positive or negative deltaY value respectively).</p>
 
-				<dl>
-					<dt><strong>Interface <em><a id="events-WheelEvent">WheelEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
-					<dd>
-						<p>The <code>WheelEvent</code> interface provides specific contextual information associated with <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> events.</p>
-
-						<p>To create an instance of the <code>WheelEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("WheelEvent")</code></a>
-							method call.</p>
-
-						<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
-							WheelEvent objects.</p>
-
-						<dl>
-							<dt><strong>WebIDL Definition</strong></dt>
-							<dd>
-								<pre class="d3-idl" id="idl-interface-WheelEvent"><code>
-<span class="comment">// Introduced in DOM Level 3:</span>
-interface <a href="#events-WheelEvent">WheelEvent</a> : <a href="#events-MouseEvent">MouseEvent</a>
-{
-  <span class="comment">// DeltaModeCode</span>
-  const unsigned long              <a href="#events-DOM_DELTA_PIXEL">DOM_DELTA_PIXEL</a> = 0x00;
-  const unsigned long              <a href="#events-DOM_DELTA_LINE">DOM_DELTA_LINE</a>  = 0x01;
-  const unsigned long              <a href="#events-DOM_DELTA_PAGE">DOM_DELTA_PAGE</a>  = 0x02;
-
-  readonly attribute double         <a href="#events-WheelEvent-deltaX">deltaX</a>;
-  readonly attribute double         <a href="#events-WheelEvent-deltaY">deltaY</a>;
-  readonly attribute double         <a href="#events-WheelEvent-deltaZ">deltaZ</a>;
-  readonly attribute unsigned long <a href="#events-WheelEvent-deltaMode">deltaMode</a>;
-};
-</code></pre>
-							</dd>
-
-							<dt><strong>Definition group <em><a id="events-ID-WheelEvent-DeltaModeCode">DeltaModeCode</a></em></strong></dt>
-							<dd>
-								<p>This set of constants <span class="must">must</span> be used to indicate the units of measurement for the <a href="#glossary-delta"><code>delta</code></a> values.  The precise measurement
-									is specific to device, operating system, and application configurations.</p>
-
-								<dl>
-									<dt><strong>Defined Constants</strong></dt>
-									<dd>
-										<dl>
-											<dt><a id="events-DOM_DELTA_PIXEL"><code class="constant-name">DOM_DELTA_PIXEL</code></a></dt>
-											<dd>The units of measurement for the <a href="#glossary-delta"><code>delta</code></a> <span class="must">must</span> be pixels.  This is the most typical case in most operating system and implementation
-												configurations.</dd>
-
-											<dt><a id="events-DOM_DELTA_LINE"><code class="constant-name">DOM_DELTA_LINE</code></a></dt>
-											<dd>The units of measurement for the <a href="#glossary-delta"><code>delta</code></a> <span class="must">must</span> be individual lines of text.  This is the case for many form controls.</dd>
-
-											<dt><a id="events-DOM_DELTA_PAGE"><code class="constant-name">DOM_DELTA_PAGE</code></a></dt>
-											<dd>The units of measurement for the <a href="#glossary-delta"><code>delta</code></a> <span class="must">must</span> be pages, either defined as a single screen or as a demarcated page.</dd>
-										</dl>
-									</dd>
-								</dl>
-							</dd>
-
-							<dt><strong>Attributes</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="attribute-name"><a id="events-WheelEvent-deltaX">deltaX</a></code> of type <code>double</code>, readonly</dt>
-									<dd>
-										<p>In user agents where the default action of the <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> event is to scroll, the value <span class="must">must</span> be the measurement along
-											the x-axis (in pixels, lines, or pages) to be scrolled in the case where the event is not cancelled. Otherwise, this is an implementation-specific
-											measurement (in pixels, lines, or pages) of the movement of a wheel device around the x-axis.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-WheelEvent-deltaY">deltaY</a></code> of type <code>double</code>, readonly</dt>
-									<dd>
-										<p>In user agents where the default action of the <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> event is to scroll, the value <span class="must">must</span> be the measurement along
-											the y-axis (in pixels, lines, or pages) to be scrolled in the case where the event is not cancelled. Otherwise, this is an implementation-specific
-											measurement (in pixels, lines, or pages) of the movement of a wheel device around the y-axis.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-WheelEvent-deltaZ">deltaZ</a></code> of type <code>double</code>, readonly</dt>
-									<dd>
-										<p>In user agents where the default action of the <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> event is to scroll, the value <span class="must">must</span> be the measurement along
-											the z-axis (in pixels, lines, or pages) to be scrolled in the case where the event is not cancelled. Otherwise, this is an implementation-specific
-											measurement (in pixels, lines, or pages) of the movement of a wheel device around the z-axis.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-WheelEvent-deltaMode">deltaMode</a></code> of type <code>unsigned long</code>, readonly</dt>
-									<dd>
-										<p>The <code>deltaMode</code> attribute contains an indication of the units of measurement for the <a href="#glossary-delta"><code>delta</code></a> values.
-											The default value is <a href="#events-DOM_DELTA_PIXEL"><code class="constant-name">DOM_DELTA_PIXEL</code></a> (pixels).</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-								</dl>
-							</dd>
-						</dl>
-					</dd>
-				</dl>
+				<section id="interface-WheelEvent">
+					<h4>Interface WheelEvent</h4>
+
+					<p><em>Introduced in DOM Level 3</em></p>
+
+					<p>The <code>WheelEvent</code> interface provides specific contextual information associated with <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> events.</p>
+
+					<p>To create an instance of the <code>WheelEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("WheelEvent")</code></a>
+						method call.</p>
+
+					<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
+						WheelEvent objects.</p>
+
+					<dl class="idl" title="interface WheelEvent : MouseEvent">
+						<dt>// DeltaModeCode</dt>
+
+						<dt>const unsigned long DOM_DELTA_PIXEL = 0x00</dt>
+						<dd>
+							<p>The units of measurement for the <a href="#glossary-delta"><code>delta</code></a> <span class="must">must</span> be pixels.  This is the most typical case in most operating system and implementation
+								configurations.</p>
+						</dd>
+
+						<dt>const unsigned long DOM_DELTA_LINE  = 0x01</dt>
+						<dd>
+							<p>The units of measurement for the <a href="#glossary-delta"><code>delta</code></a> <span class="must">must</span> be individual lines of text.  This is the case for many form controls.</p>
+						</dd>
+
+						<dt>const unsigned long DOM_DELTA_PAGE  = 0x02</dt>
+						<dd>
+							<p>The units of measurement for the <a href="#glossary-delta"><code>delta</code></a> <span class="must">must</span> be pages, either defined as a single screen or as a demarcated page.</p>
+						</dd>
+
+						<dt>readonly attribute double deltaX</dt>
+						<dd>
+							<p>In user agents where the default action of the <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> event is to scroll, the value <span class="must">must</span> be the measurement along
+								the x-axis (in pixels, lines, or pages) to be scrolled in the case where the event is not cancelled. Otherwise, this is an implementation-specific
+								measurement (in pixels, lines, or pages) of the movement of a wheel device around the x-axis.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute double deltaY</dt>
+						<dd>
+							<p>In user agents where the default action of the <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> event is to scroll, the value <span class="must">must</span> be the measurement along
+								the y-axis (in pixels, lines, or pages) to be scrolled in the case where the event is not cancelled. Otherwise, this is an implementation-specific
+								measurement (in pixels, lines, or pages) of the movement of a wheel device around the y-axis.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute double deltaZ</dt>
+						<dd>
+							<p>In user agents where the default action of the <a class="eventtype" href="#event-type-wheel"><code>wheel</code></a> event is to scroll, the value <span class="must">must</span> be the measurement along
+								the z-axis (in pixels, lines, or pages) to be scrolled in the case where the event is not cancelled. Otherwise, this is an implementation-specific
+								measurement (in pixels, lines, or pages) of the movement of a wheel device around the z-axis.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute unsigned long deltaMode</dt>
+						<dd>
+							<p>The <code>deltaMode</code> attribute contains an indication of the units of measurement for the <a href="#glossary-delta"><code>delta</code></a> values.
+								The default value is <a href="#events-DOM_DELTA_PIXEL"><code class="constant-name">DOM_DELTA_PIXEL</code></a> (pixels).</p>
+
+							<p>This attribute <span class="must">must</span> be set to one of the DOM_DELTA constants to indicate the units of measurement for the <a href="#glossary-delta"><code>delta</code></a> values.  The precise measurement
+								is specific to device, operating system, and application configurations.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+					</dl>
+				</section>
 
 				<p>The Wheel event types are listed below.</p>
 
@@ -4548,259 +4198,195 @@
 				<p class="note"><strong>Authoring Note:</strong> Keyboard events are only one modality of providing textual input. For editing scenarios, consider also using the "input" event
 					defined in [<cite><a class="informative" href="#references-HTML5">HTML5</a></cite>] as an alternate to (or in addition to) keyboard events.</p>
 
-				<dl>
-					<dt><strong>Interface <em><a id="events-KeyboardEvent">KeyboardEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
-					<dd>
-						<p>The <code>KeyboardEvent</code> interface provides specific contextual information associated with keyboard devices. Each keyboard event references a key using a
-							value. 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: <a href="#events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>,
-							<a href="#events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>,
-							<a href="#events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>. These attributes are equivalent to using the method <a href="#events-KeyboardEvent-getModifierState">
-							<code>KeyboardEvent.getModifierState(keyArg)</code></a> with <code class="key">'Control'</code>, <code class="key">'Shift'</code>, <code class="key">'Alt'</code>,
-							or <code class="key">'Meta'</code> respectively.</p>
-
-						<p>To create an instance of the <code>KeyboardEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("KeyboardEvent")</code></a>
-							method call.</p>
-
-						<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
-							KeyboardEvent objects.</p>
-
-						<dl>
-							<dt><strong>WebIDL Definition</strong></dt>
-							<dd>
-								<pre class="d3-idl" id="idl-interface-KeyboardEvent"><code>
-<span class="comment">// Introduced in DOM Level 3:</span>
-interface <a href="#events-KeyboardEvent">KeyboardEvent</a> : <a href="#events-UIEvent">UIEvent</a>
-{
-  <span class="comment">// KeyLocationCode</span>
-  const unsigned long              <a href="#events-DOM_KEY_LOCATION_STANDARD">DOM_KEY_LOCATION_STANDARD</a> = 0x00;
-  const unsigned long              <a href="#events-DOM_KEY_LOCATION_LEFT">DOM_KEY_LOCATION_LEFT</a>     = 0x01;
-  const unsigned long              <a href="#events-DOM_KEY_LOCATION_RIGHT">DOM_KEY_LOCATION_RIGHT</a>    = 0x02;
-  const unsigned long              <a href="#events-DOM_KEY_LOCATION_NUMPAD">DOM_KEY_LOCATION_NUMPAD</a>   = 0x03;
-  const unsigned long              <a href="#events-DOM_KEY_LOCATION_MOBILE">DOM_KEY_LOCATION_MOBILE</a>   = 0x04;
-  const unsigned long              <a href="#events-DOM_KEY_LOCATION_JOYSTICK">DOM_KEY_LOCATION_JOYSTICK</a> = 0x05;
-
-  readonly attribute DOMString     <a href="#events-KeyboardEvent-char">char</a>;
-  readonly attribute DOMString     <a href="#events-KeyboardEvent-key">key</a>;
-  readonly attribute unsigned long <a href="#events-KeyboardEvent-location">location</a>;
-  readonly attribute boolean       <a href="#events-KeyboardEvent-ctrlKey">ctrlKey</a>;
-  readonly attribute boolean       <a href="#events-KeyboardEvent-shiftKey">shiftKey</a>;
-  readonly attribute boolean       <a href="#events-KeyboardEvent-altKey">altKey</a>;
-  readonly attribute boolean       <a href="#events-KeyboardEvent-metaKey">metaKey</a>;
-  readonly attribute boolean       <a href="#events-KeyboardEvent-repeat">repeat</a>;
-  readonly attribute DOMString     <a href="#events-KeyboardEvent-locale">locale</a>;
-  boolean                          <a href="#events-KeyboardEvent-getModifierState">getModifierState</a>(DOMString keyArg);
-};
-</code></pre>
-							</dd>
-
-							<dt><strong>Definition group <em><a id="events-ID-KeyboardEvent-KeyLocationCode">KeyLocationCode</a></em></strong></dt>
-							<dd>
-								<p>This set of constants <span class="must">must</span> be 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 <span class="must">must</span> be used.</p>
-
-								<dl>
-									<dt><strong>Defined Constants</strong></dt>
-									<dd>
-										<dl>
-											<dt><a id="events-DOM_KEY_LOCATION_STANDARD"><code class="constant-name">DOM_KEY_LOCATION_STANDARD</code></a></dt>
-											<dd>
-												<p>The key activation <span class="mustnot">must not</span> be 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).</p>
-
-												<p class="example"><strong>Example:</strong> the <code class="key">'Q'</code> key on a PC 101 Key US keyboard.</p>
-											</dd>
-
-											<dt><a id="events-DOM_KEY_LOCATION_LEFT"><code class="constant-name">DOM_KEY_LOCATION_LEFT</code></a></dt>
-											<dd>
-												<p>The key activated originated from the left key location (there is more than one possible location for this key).</p>
-
-												<p class="example"><strong>Example:</strong> the left <code class="key">'Control'</code> key on a PC 101 Key US keyboard.</p>
-											</dd>
-
-											<dt><a id="events-DOM_KEY_LOCATION_RIGHT"><code class="constant-name">DOM_KEY_LOCATION_RIGHT</code></a></dt>
-											<dd>
-												<p>The key activation originated from the right key location (there is more than one possible location for this key).</p>
-
-												<p class="example"><strong>Example:</strong> the right <code class="key">'Shift'</code> key on a PC 101 Key US keyboard.</p>
-											</dd>
-
-											<dt><a id="events-DOM_KEY_LOCATION_NUMPAD"><code class="constant-name">DOM_KEY_LOCATION_NUMPAD</code></a></dt>
-											<dd>
-												<p>The key activation originated on the numeric keypad or with a virtual key corresponding to the numeric keypad.</p>
-
-												<p class="example"><strong>Example:</strong> the <code class="key">'1'</code> key on a PC 101 Key US keyboard located on the numeric pad.</p>
-											</dd>
-
-											<dt><a id="events-DOM_KEY_LOCATION_MOBILE"><code class="constant-name">DOM_KEY_LOCATION_MOBILE</code></a></dt>
-											<dd>
-												<p>The key activation originated on a mobile device, either on a physical keypad or a virtual keyboard.</p>
-
-												<p class="example"><strong>Example:</strong> the <code class="key">'#'</code> key or softkey on a mobile device.</p>
-											</dd>
-
-											<dt><a id="events-DOM_KEY_LOCATION_JOYSTICK"><code class="constant-name">DOM_KEY_LOCATION_JOYSTICK</code></a></dt>
-											<dd>
-												<p>The key activation originated on a game controller or a joystick on a mobile device.</p>
-
-												<p class="example"><strong>Example:</strong> the <code class="key">'DownLeft'</code> key on a game controller.</p>
-											</dd>
-
-										</dl>
-									</dd>
-								</dl>
-							</dd>
-
-							<dt><strong>Attributes</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-altKey">altKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p><code>true</code> if the <a href="#key-Alt"><code class="key">'Alt'</code></a> (alternative) or <code>Option</code> key modifier was active.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-ctrlKey">ctrlKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p><code>true</code> if the <a href="#key-Control"><code class="key">'Control'</code></a> (control) key modifier was active.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-char">char</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p><code>char</code> holds the character value of the key pressed.  If the key press has a printed representation, then the value <span class="must">must</span> be a non-empty Unicode character
-											string, conforming to the <a href="#key-algorithm">algorithm for determining the key value</a> defined in this specification.  For a key associated with a macro
-											to insert multiple characters, the value of the <code>char</code> attribute will hold the entire sequence of characters.  For a key which does not have a character
-											representation, the value <span class="must">must</span> be the <a class="def" href="#glossary-empty-string">empty string</a>.</p>
-
-										<p class="note"><strong>Note:</strong> the <code>char</code> attribute is not related to the legacy <code>charCode</code> attribute and does
-											not have the same set of values.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-key">key</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p><code>key</code> holds the key value of the key pressed.  If the value is has a printed representation, it <span class="must">must</span> match the value of the <a href="#events-KeyboardEvent-char">
-											<code>KeyboardEvent.char</code></a> attribute; if the value is a control key which has no printed representation, it <span class="must">must</span> be one of the key values defined in the
-											<a href="#keys-keyvalues">key values set</a>, as determined by the <a href="#key-algorithm">algorithm for determining the key value</a>. Implementations that are
-											unable to identify a key <span class="must">must</span> use the key value <a href="#key-Unidentified"><code class="key">'Unidentified'</code></a>.</p>
-
-										<p class="note"><strong>Note:</strong> the <code>key</code> attribute is not related to the legacy <code>keyCode</code> attribute and does not have the same set of values.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-location">location</a></code> of type <code>unsigned long</code>, readonly</dt>
-									<dd>
-										<p>The <code>location</code> attribute contains an indication of the location of the key on the device, as described in <a href="#events-ID-KeyboardEvent-KeyLocationCode">
-											Keyboard event types</a>.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-metaKey">metaKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p><code>true</code> if the meta (Meta) key modifier was active.</p>
-
-										<p class="note"><strong>Note:</strong> The <code>'Command'</code> key modifier on Macintosh systems is represented using this key modifier.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-shiftKey">shiftKey</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p><code>true</code> if the shift (Shift) key modifier was active.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-repeat">repeat</a></code> of type <code>boolean</code>, readonly</dt>
-									<dd>
-										<p><code>true</code> if the key has been pressed in a sustained manner.  Holding down a key <span class="must">must</span> result in the repeating the events
-											<a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a>
-											(when supported by the user agent) in this order, at a rate determined by the system configuration. For mobile devices which have <em>long-key-press</em>
-											behavior, the first key event with a <a href="#events-KeyboardEvent-repeat">repeat</a> attribute value of <code>'true'</code> <span class="must">must</span> serve as an
-											indication of a <em>long-key-press</em>. The length of time that the key <span class="must">must</span> be pressed in order to begin repeating is configuration-dependent.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-KeyboardEvent-locale">locale</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p>The <code>locale</code> <code>DOMString</code> attribute contains a BCP-47 tag [<a href="#ref-BCP-47">BCP-47</a>] indicating the locale for which the keyboard originating
-											the event is configured, e.g. <code>"en-US"</code>. The <code>locale</code> <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">empty string</a> when inapplicable
-											or unknown, e.g. when this information is not exposed by the underlying platform.</p>
-
-										<p class="note"><strong>Note:</strong> <code>locale</code> does not necessarily indicate the locale of the data or the context in which
-											it is being entered.  For example, a French user often might not switch to an English keyboard setting when typing English, in which case the <code>locale</code>
-											will still indicate French.  Nor can it be used to definitively calculate the <q>physical</q> or <q>virtual</q> key associated with the event, or the character
-											printed on that key.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-								</dl>
-							</dd>
-
-							<dt><strong>Methods</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="method-name"><a id="events-KeyboardEvent-getModifierState">getModifierState</a></code></dt>
-									<dd>
-										<div class="method">
-											<p>Queries the state of a modifier using a key value. See also <a href="#keys-Modifiers">Modifier keys</a>.</p>
-
-											<div class="parameters">
-												<p><strong>Parameters</strong></p>
-
-												<div class="paramtable">
-													<dl>
-														<dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt>
-														<dd>
-															<p>A modifier key value.  Modifier keys defined in this specification are
-																<a href="#key-Alt"><code class="key">'Alt'</code></a>
-																<a href="#key-AltGraph"><code class="key">'AltGraph'</code></a>
-																<a href="#key-CapsLock"><code class="key">'CapsLock'</code></a>
-																<a href="#key-Control"><code class="key">'Control'</code></a>
-																<a href="#key-Fn"><code class="key">'Fn'</code></a>
-																<a href="#key-Meta"><code class="key">'Meta'</code></a>
-																<a href="#key-NumLock"><code class="key">'NumLock'</code></a>
-																<a href="#key-Scroll"><code class="key">'Scroll'</code></a>
-																<a href="#key-Shift"><code class="key">'Shift'</code></a>
-																<a href="#key-SymbolLock"><code class="key">'SymbolLock'</code></a>, and
-																<a href="#key-OS"><code class="key">'OS'</code></a>
-																User agents <span class="may">may</span> support additional implementation-specific modifier keys depending on the environment.</p>
-
-															<p class="note"><strong>Note:</strong> If an application wishes to distinguish between right and left modifiers, this information could be
-																deduced using keyboard events and <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>.</p>
-														</dd>
-													</dl>
-												</div>
-											</div>
-											<div class="return">
-												<p><strong>Return Value</strong></p>
-
-												<div class="returntable">
-													<table summary="Layout table: the first cell contains the type of the return value, the second contains a short description" border="0">
-														<tr>
-															<td><code>boolean</code></td>
-															<td><code>true</code> if it is a modifier key and the modifier is activated, <code>false</code> otherwise.</td>
-														</tr>
-													</table>
-												</div>
-											</div>
-
-											<div><strong>No Exceptions</strong></div>
-										</div>
-									</dd>
-								</dl>
-							</dd>
-						</dl>
-					</dd>
-				</dl>
+				<section id="interface-KeyboardEvent">
+					<h4>Interface KeyboardEvent</h4>
+
+					<p><em>Introduced in DOM Level 3</em></p>
+
+					<p>The <code>KeyboardEvent</code> interface provides specific contextual information associated with keyboard devices. Each keyboard event references a key using a
+						value. 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: <a href="#events-KeyboardEvent-ctrlKey"><code>KeyboardEvent.ctrlKey</code></a>,
+						<a href="#events-KeyboardEvent-shiftKey"><code>KeyboardEvent.shiftKey</code></a>, <a href="#events-KeyboardEvent-altKey"><code>KeyboardEvent.altKey</code></a>,
+						<a href="#events-KeyboardEvent-metaKey"><code>KeyboardEvent.metaKey</code></a>. These attributes are equivalent to using the method <a href="#events-KeyboardEvent-getModifierState">
+						<code>KeyboardEvent.getModifierState(keyArg)</code></a> with <code class="key">'Control'</code>, <code class="key">'Shift'</code>, <code class="key">'Alt'</code>,
+						or <code class="key">'Meta'</code> respectively.</p>
+
+					<p>To create an instance of the <code>KeyboardEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("KeyboardEvent")</code></a>
+						method call.</p>
+
+					<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
+						KeyboardEvent objects.</p>
+
+					<dl class="idl" title="interface KeyboardEvent : UIEvent">
+						<dt>// KeyLocationCode</dt>
+
+						<dt>const unsigned long DOM_KEY_LOCATION_STANDARD = 0x00</dt>
+						<dd>
+							<p>The key activation <span class="mustnot">must not</span> be 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).</p>
+
+							<p class="example"><strong>Example:</strong> the <code class="key">'Q'</code> key on a PC 101 Key US keyboard.</p>
+						</dd>
+
+						<dt>const unsigned long DOM_KEY_LOCATION_LEFT = 0x01</dt>
+						<dd>
+							<p>The key activated originated from the left key location (there is more than one possible location for this key).</p>
+
+							<p class="example"><strong>Example:</strong> the left <code class="key">'Control'</code> key on a PC 101 Key US keyboard.</p>
+						</dd>
+
+						<dt>const unsigned long DOM_KEY_LOCATION_RIGHT = 0x02</dt>
+						<dd>
+							<p>The key activation originated from the right key location (there is more than one possible location for this key).</p>
+
+							<p class="example"><strong>Example:</strong> the right <code class="key">'Shift'</code> key on a PC 101 Key US keyboard.</p>
+						</dd>
+
+						<dt>const unsigned long DOM_KEY_LOCATION_NUMPAD = 0x03</dt>
+						<dd>
+							<p>The key activation originated on the numeric keypad or with a virtual key corresponding to the numeric keypad.</p>
+
+							<p class="example"><strong>Example:</strong> the <code class="key">'1'</code> key on a PC 101 Key US keyboard located on the numeric pad.</p>
+						</dd>
+
+						<dt>const unsigned long DOM_KEY_LOCATION_MOBILE = 0x04</dt>
+						<dd>
+							<p>The key activation originated on a mobile device, either on a physical keypad or a virtual keyboard.</p>
+
+							<p class="example"><strong>Example:</strong> the <code class="key">'#'</code> key or softkey on a mobile device.</p>
+						</dd>
+
+						<dt>const unsigned long DOM_KEY_LOCATION_JOYSTICK = 0x05</dt>
+						<dd>
+							<p>The key activation originated on a game controller or a joystick on a mobile device.</p>
+
+							<p class="example"><strong>Example:</strong> the <code class="key">'DownLeft'</code> key on a game controller.</p>
+						</dd>
+
+						<dt>readonly attribute DOMString char</dt>
+						<dd>
+							<p><code>char</code> holds the character value of the key pressed.  If the key press has a printed representation, then the value <span class="must">must</span> be a non-empty Unicode character
+								string, conforming to the <a href="#key-algorithm">algorithm for determining the key value</a> defined in this specification.  For a key associated with a macro
+								to insert multiple characters, the value of the <code>char</code> attribute will hold the entire sequence of characters.  For a key which does not have a character
+								representation, the value <span class="must">must</span> be the <a class="def" href="#glossary-empty-string">empty string</a>.</p>
+
+							<p class="note"><strong>Note:</strong> the <code>char</code> attribute is not related to the legacy <code>charCode</code> attribute and does
+								not have the same set of values.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+						<dt>readonly attribute DOMString key</dt>
+						<dd>
+							<p><code>key</code> holds the key value of the key pressed.  If the value is has a printed representation, it <span class="must">must</span> match the value of the <a href="#events-KeyboardEvent-char">
+								<code>KeyboardEvent.char</code></a> attribute; if the value is a control key which has no printed representation, it <span class="must">must</span> be one of the key values defined in the
+								<a href="#keys-keyvalues">key values set</a>, as determined by the <a href="#key-algorithm">algorithm for determining the key value</a>. Implementations that are
+								unable to identify a key <span class="must">must</span> use the key value <a href="#key-Unidentified"><code class="key">'Unidentified'</code></a>.</p>
+
+							<p class="note"><strong>Note:</strong> the <code>key</code> attribute is not related to the legacy <code>keyCode</code> attribute and does not have the same set of values.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+						<dt>readonly attribute unsigned long location</dt>
+						<dd>
+							<p>The <code>location</code> attribute contains an indication of the location of the key on the device, as described in <a href="#events-ID-KeyboardEvent-KeyLocationCode">
+								Keyboard event types</a>.</p>
+
+							<p>This attribute <span class="must">must</span> be set to one of the DOM_KEY_LOCATION constants to indicate the location of a key on the device. In case a DOM implementation wishes to provide a new location value, a
+								value different from the defined constant values <span class="must">must</span> be used.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute boolean ctrlKey</dt>
+						<dd>
+							<p><code>true</code> if the <a href="#key-Control"><code class="key">'Control'</code></a> (control) key modifier was active.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+						</dd>
+
+						<dt>readonly attribute boolean shiftKey</dt>
+						<dd>
+							<p><code>true</code> if the shift (Shift) key modifier was active.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+						</dd>
+
+						<dt>readonly attribute boolean altKey</dt>
+						<dd>
+							<p><code>true</code> if the <a href="#key-Alt"><code class="key">'Alt'</code></a> (alternative) or <code>Option</code> key modifier was active.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+						</dd>
+
+						<dt>readonly attribute boolean metaKey</dt>
+						<dd>
+							<p><code>true</code> if the meta (Meta) key modifier was active.</p>
+
+							<p class="note"><strong>Note:</strong> The <code>'Command'</code> key modifier on Macintosh systems is represented using this key modifier.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+						</dd>
+
+						<dt>readonly attribute boolean repeat</dt>
+						<dd>
+							<p><code>true</code> if the key has been pressed in a sustained manner.  Holding down a key <span class="must">must</span> result in the repeating the events
+								<a class="eventtype" href="#event-type-keydown"><code>keydown</code></a>, <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a>
+								(when supported by the user agent) in this order, at a rate determined by the system configuration. For mobile devices which have <em>long-key-press</em>
+								behavior, the first key event with a <a href="#events-KeyboardEvent-repeat">repeat</a> attribute value of <code>'true'</code> <span class="must">must</span> serve as an
+								indication of a <em>long-key-press</em>. The length of time that the key <span class="must">must</span> be pressed in order to begin repeating is configuration-dependent.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>false</code>.</p>
+						</dd>
+
+						<dt>readonly attribute DOMString locale</dt>
+						<dd>
+							<p>The <code>locale</code> <code>DOMString</code> attribute contains a BCP-47 tag [<a href="#ref-BCP-47">BCP-47</a>] indicating the locale for which the keyboard originating
+								the event is configured, e.g. <code>"en-US"</code>. The <code>locale</code> <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">empty string</a> when inapplicable
+								or unknown, e.g. when this information is not exposed by the underlying platform.</p>
+
+							<p class="note"><strong>Note:</strong> <code>locale</code> does not necessarily indicate the locale of the data or the context in which
+								it is being entered.  For example, a French user often might not switch to an English keyboard setting when typing English, in which case the <code>locale</code>
+								will still indicate French.  Nor can it be used to definitively calculate the <q>physical</q> or <q>virtual</q> key associated with the event, or the character
+								printed on that key.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+						<dt>boolean getModifierState()</dt>
+						<dd>
+							<p>Queries the state of a modifier using a key value. See also <a href="#keys-Modifiers">Modifier keys</a>.</p>
+
+							<dl class="parameters">
+								<dt>DOMString keyArg</dt>
+								<dd>
+									<p>A modifier key value.  Modifier keys defined in this specification are
+										<a href="#key-Alt"><code class="key">'Alt'</code></a>
+										<a href="#key-AltGraph"><code class="key">'AltGraph'</code></a>
+										<a href="#key-CapsLock"><code class="key">'CapsLock'</code></a>
+										<a href="#key-Control"><code class="key">'Control'</code></a>
+										<a href="#key-Fn"><code class="key">'Fn'</code></a>
+										<a href="#key-Meta"><code class="key">'Meta'</code></a>
+										<a href="#key-NumLock"><code class="key">'NumLock'</code></a>
+										<a href="#key-Scroll"><code class="key">'Scroll'</code></a>
+										<a href="#key-Shift"><code class="key">'Shift'</code></a>
+										<a href="#key-SymbolLock"><code class="key">'SymbolLock'</code></a>, and
+										<a href="#key-OS"><code class="key">'OS'</code></a>
+										User agents <span class="may">may</span> support additional implementation-specific modifier keys depending on the environment.</p>
+
+									<p>Returns <code>true</code> if it is a modifier key and the modifier is activated, <code>false</code> otherwise.</p>
+
+									<p class="note"><strong>Note:</strong> If an application wishes to distinguish between right and left modifiers, this information could be
+										deduced using keyboard events and <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>.</p>
+								</dd>
+
+							</dl>
+						</dd>
+
+					</dl>
+				</section>
 
 				<p class="warning"><strong>Warning!</strong>  Legacy keyboard event implementations include three additional attributes, <code>keyCode</code>, <code>charCode</code>, and
 					<code>which</code>.  The <code>keyCode</code> attribute indicates a numeric value associated with a particular key on a computer keyboard,
@@ -5134,61 +4720,46 @@
 					or <q>candidate selection menu option</q>) might not be available through this interface, in which case the selection <span class="may">may</span> be represented by the <a class="def" href="#glossary-empty-string">
 					empty string</a>.</p>
 
-				<dl>
-					<dt><strong>Interface <em><a id="events-CompositionEvent">CompositionEvent</a></em></strong> (introduced in <strong class="since">DOM Level 3</strong>)</dt>
-					<dd>
-						<p>The <code>CompositionEvent</code> interface provides specific contextual information associated with Composition Events.</p>
-
-						<p>To create an instance of the <code>CompositionEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("CompositionEvent")</code></a>
-							method call.</p>
-
-						<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
-							CompositionEvent objects.</p>
-
-						<dl>
-							<dt><strong>WebIDL Definition</strong></dt>
-							<dd>
-								<pre class="d3-idl" id="idl-interface-CompositionEvent"><code>
-<span class="comment">// Introduced in DOM Level 3:</span>
-interface <a href="#events-CompositionEvent">CompositionEvent</a> : <a href="#events-UIEvent">UIEvent</a>
-{
-  readonly attribute DOMString? <a href="#events-CompositionEvent-data">data</a>;
-  readonly attribute DOMString  <a href="#events-CompositionEvent-locale">locale</a>;
-};
-</code></pre>
-							</dd>
-
-							<dt><strong>Attributes</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="attribute-name"><a id="events-CompositionEvent-data">data</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p><code>data</code> holds the value of the characters generated by an input method. This <span class="may">may</span> be a single Unicode character or a non-empty sequence of Unicode characters
-											[<cite><a class="normative" href="#references-Unicode">Unicode</a></cite>]. Characters <span class="should">should</span> be normalized as defined by the Unicode normalization form <em>NFC</em>,
-											defined in [<cite><a class="normative" href="#references-UnicodeNormalization">UAX #15</a></cite>]. This attribute <span class="may">may</span> be null or contain the <a class="def" href="#glossary-empty-string">
-											empty string</a>.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-CompositionEvent-locale">locale</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p>The <code>locale</code> <code>DOMString</code> attribute contains a BCP-47 tag [<a href="#ref-BCP-47">BCP-47</a>] indicating the locale for which the IME originating
-											the event is configured, e.g. <code>"ja"</code>, <code>"zh-Hans"</code>, <code>"ko"</code>. <span class="may">May</span> be the <a class="def" href="#glossary-empty-string">empty string</a>
-											when inapplicable or unknown, e.g. when this information is not exposed by the underlying platform or application.</p>
-
-										<p class="note"><strong>Note:</strong> <code>locale</code> does not necessarily indicate the locale of the data or the context in
-											which it is being entered.  For example, a French user often might not switch to an English keyboard setting when typing English, in which case the <code>locale</code>
-											will still indicate French, even though the data is actually English.  Similarly, an IME application could fail to distinguish between the locale of Chinese and
-											Kanji characters.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-								</dl>
-							</dd>
-						</dl>
-					</dd>
-				</dl>
+				<section id="interface-CompositionEvent">
+					<h4>Interface CompositionEvent</h4>
+
+					<p><em>Introduced in DOM Level 3</em></p>
+
+					<p>The <code>CompositionEvent</code> interface provides specific contextual information associated with Composition Events.</p>
+
+					<p>To create an instance of the <code>CompositionEvent</code> interface, use the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("CompositionEvent")</code></a>
+						method call.</p>
+
+					<p class="note"><strong>Authoring Note: </strong>See <a href="#new-event-interface-initializers">Appendix A</a> for information about programmatically initializing
+						CompositionEvent objects.</p>
+
+					<dl class="idl" title="interface CompositionEvent : UIEvent">
+						<dt>readonly attribute DOMString? data</dt>
+						<dd>
+							<p><code>data</code> holds the value of the characters generated by an input method. This <span class="may">may</span> be a single Unicode character or a non-empty sequence of Unicode characters
+								[<cite><a class="normative" href="#references-Unicode">Unicode</a></cite>]. Characters <span class="should">should</span> be normalized as defined by the Unicode normalization form <em>NFC</em>,
+								defined in [<cite><a class="normative" href="#references-UnicodeNormalization">UAX #15</a></cite>]. This attribute <span class="may">may</span> be null or contain the <a class="def" href="#glossary-empty-string">
+								empty string</a>.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+						<dt>readonly attribute DOMString locale</dt>
+						<dd>
+							<p>The <code>locale</code> <code>DOMString</code> attribute contains a BCP-47 tag [<a href="#ref-BCP-47">BCP-47</a>] indicating the locale for which the IME originating
+								the event is configured, e.g. <code>"ja"</code>, <code>"zh-Hans"</code>, <code>"ko"</code>. <span class="may">May</span> be the <a class="def" href="#glossary-empty-string">empty string</a>
+								when inapplicable or unknown, e.g. when this information is not exposed by the underlying platform or application.</p>
+
+							<p class="note"><strong>Note:</strong> <code>locale</code> does not necessarily indicate the locale of the data or the context in
+								which it is being entered.  For example, a French user often might not switch to an English keyboard setting when typing English, in which case the <code>locale</code>
+								will still indicate French, even though the data is actually English.  Similarly, an IME application could fail to distinguish between the locale of Chinese and
+								Kanji characters.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+					</dl>
+				</section>
 
 				<section id="events-composition-event-order">
 					<h4>Composition Event Order</h4>
@@ -5432,185 +5003,132 @@
 					addresses the use cases that mutation events solve, but in a more performant manner. Thus, this specification describes mutation events for reference and completeness of legacy
 					behavior, but <a class="def" href="#glossary-deprecated">deprecates</a> the use of the <a href="#events-MutationEvent"><code>MutationEvent</code></a> interface.</p>
 
-				<dl>
-					<dt><strong>Interface <em><a id="events-MutationEvent">MutationEvent</a></em></strong> (introduced in <strong class="since">DOM Level 2</strong>)</dt>
-					<dd>
-						<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 <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("MutationEvent")</code></a>
-							method call.</p>
-
-						<dl>
-							<dt><strong>WebIDL Definition</strong></dt>
-							<dd>
-								<pre class="d3-idl" id="idl-interface-MutationEvent"><code>
-<span class="comment">// Deprecated in DOM Level 3:</span>
-interface <a href="#events-MutationEvent">MutationEvent</a> : <a href="#events-Event">Event</a>
-{
-  <span class="comment">// attrChangeType</span>
-  const unsigned short              <a href="#events-MODIFICATION">MODIFICATION</a> = 1;
-  const unsigned short              <a href="#events-ADDITION">ADDITION</a>     = 2;
-  const unsigned short              <a href="#events-REMOVAL">REMOVAL</a>      = 3;
-
-  readonly attribute Node?          <a href="#events-MutationEvent-relatedNode">relatedNode</a>;
-  readonly attribute DOMString      <a href="#events-MutationEvent-prevValue">prevValue</a>;
-  readonly attribute DOMString      <a href="#events-MutationEvent-newValue">newValue</a>;
-  readonly attribute DOMString      <a href="#events-MutationEvent-attrName">attrName</a>;
-  readonly attribute unsigned short <a href="#events-MutationEvent-attrChange">attrChange</a>;
-  void                              <a href="#events-event-type-initMutationEvent">initMutationEvent</a>(DOMString typeArg,
-                                                      boolean canBubbleArg,
-                                                      boolean cancelableArg,
-                                                      Node? relatedNodeArg,
-                                                      DOMString prevValueArg,
-                                                      DOMString newValueArg,
-                                                      DOMString attrNameArg,
-                                                      unsigned short attrChangeArg);
-};
-</code></pre>
-							</dd>
-
-							<dt><strong>Definition group <em><a id="events-MutationEvent-attrChangeType">attrChangeType</a></em></strong></dt>
-							<dd>
-								<p>An integer indicating in which way the <code>Attr</code> was changed.</p>
-
-								<dl>
-									<dt><strong>Defined Constants</strong></dt>
-									<dd>
-										<dl>
-											<dt><a id="events-ADDITION"><code class="constant-name">ADDITION</code></a></dt>
-											<dd>The <code>Attr</code> was just added.</dd>
-
-											<dt><a id="events-MODIFICATION"><code class="constant-name">MODIFICATION</code></a></dt>
-											<dd>The <code>Attr</code> was modified in place.</dd>
-
-											<dt><a id="events-REMOVAL"><code class="constant-name">REMOVAL</code></a></dt>
-											<dd>The <code>Attr</code> was just removed.</dd>
-										</dl>
-									</dd>
-								</dl>
-							</dd>
-
-							<dt><strong>Attributes</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="attribute-name"><a id="events-MutationEvent-attrChange">attrChange</a></code> of type <code>unsigned short</code>, readonly</dt>
-									<dd>
-										<p><code>attrChange</code> indicates the type of change which triggered the <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
-											event. The values can be <code>MODIFICATION</code>, <code>ADDITION</code>, or <code>REMOVAL</code>.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
-
-										<p class="warning"><strong>Warning:</strong> There is no defined constant for the attrChange value of 0 (the un-initialized value).</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MutationEvent-attrName">attrName</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p><code>attrName</code> indicates the name of the changed <code>Attr</code> node in a <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
-											event.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MutationEvent-newValue">newValue</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p><code>newValue</code> indicates the new value of the <code>Attr</code> node in <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
-											events, and of the <code>CharacterData</code> node in <a class="eventtype" href="#event-type-DOMCharacterDataModified"><code>DOMCharacterDataModified</code></a>
-											events.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MutationEvent-prevValue">prevValue</a></code> of type <code>DOMString</code>, readonly</dt>
-									<dd>
-										<p><code>prevValue</code> indicates the previous value of the <code>Attr</code> node in <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
-											events, and of the <code>CharacterData</code> node in <a class="eventtype" href="#event-type-DOMCharacterDataModified"><code>DOMCharacterDataModified</code></a>
-											events.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
-									</dd>
-
-									<dt><code class="attribute-name"><a id="events-MutationEvent-relatedNode">relatedNode</a></code> of type <code>Node</code>, readonly</dt>
-									<dd>
-										<p><code>relatedNode</code> <span class="must">must</span> be 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> will be the changed parent. If an event is instead dispatched to a subtree indicating a node was changed
-											within it, the <code>relatedNode</code> <span class="must">must</span> be the changed node. In the case of the <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
-											event it indicates the <code>Attr</code> node which was modified, added, or removed.</p>
-
-										<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
-									</dd>
-								</dl>
-							</dd>
-
-
-							<dt><strong>Methods</strong></dt>
-							<dd>
-								<dl>
-									<dt><code class="method-name"><a id="events-event-type-initMutationEvent">initMutationEvent</a></code></dt>
-									<dd>
-										<div class="method">
-											<p>Initializes attributes of a <code>MutationEvent</code> object. This method has the same behavior as <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a>.</p>
-
-											<div class="parameters">
-												<p><strong>Parameters</strong></p>
-
-												<div class="paramtable">
-													<dl>
-														<dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
-														<dd>
-															<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
-														</dd>
-
-														<dt><code class="parameter-name">relatedNodeArg</code> of type <code>Node</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MutationEvent-relatedNode"><code>MutationEvent.relatedNode</code></a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">prevValueArg</code> of type <code>DOMString</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MutationEvent-prevValue"><code>MutationEvent.prevValue</code></a>. This value <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">
-																empty string</a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">newValueArg</code> of type <code>DOMString</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MutationEvent-newValue"><code>MutationEvent.newValue</code></a>. This value <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">empty
-																string</a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">attrNameArg</code> of type <code>DOMString</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MutationEvent-attrName"><code>MutationEvent.attrName</code></a>. This value <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">empty
-																string</a>.</p>
-														</dd>
-
-														<dt><code class="parameter-name">attrChangeArg</code> of type <code>unsigned short</code></dt>
-														<dd>
-															<p>Specifies <a href="#events-MutationEvent-attrChange"><code>MutationEvent.attrChange</code></a>. This value <span class="may">may</span> be <code>0</code>.</p>
-														</dd>
-													</dl>
-												</div>
-											</div>
-
-											<div><strong>No Return Value</strong></div>
-
-											<div><strong>No Exceptions</strong></div>
-										</div>
-									</dd>
-								</dl>
-							</dd>
-						</dl>
-					</dd>
-				</dl>
+				<section id="interface-MutationEvent">
+					<h4>Interface MutationEvent</h4>
+
+					<p><em>Introduced in DOM Level 2, deprecated in DOM Level 3</em></p>
+
+					<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 <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("MutationEvent")</code></a>
+						method call.</p>
+
+					<dl class="idl" title="interface MutationEvent : Event">
+						<dt>// attrChangeType</dt>
+
+						<dt>const unsigned short MODIFICATION = 1</dt>
+						<dd>
+							<p>The <code>Attr</code> was modified in place.</p>
+						</dd>
+
+						<dt>const unsigned short ADDITION = 2</dt>
+						<dd>
+							<p>The <code>Attr</code> was just added.</p>
+						</dd>
+
+						<dt>const unsigned short REMOVAL = 3</dt>
+						<dd>
+							<p>The <code>Attr</code> was just removed.</p>
+						</dd>
+
+						<dt>readonly attribute Node? relatedNode</dt>
+						<dd>
+							<p><code>relatedNode</code> <span class="must">must</span> be 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> will be the changed parent. If an event is instead dispatched to a subtree indicating a node was changed
+								within it, the <code>relatedNode</code> <span class="must">must</span> be the changed node. In the case of the <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
+								event it indicates the <code>Attr</code> node which was modified, added, or removed.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>null</code>.</p>
+						</dd>
+
+						<dt>readonly attribute DOMString prevValue</dt>
+						<dd>
+							<p><code>prevValue</code> indicates the previous value of the <code>Attr</code> node in <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
+								events, and of the <code>CharacterData</code> node in <a class="eventtype" href="#event-type-DOMCharacterDataModified"><code>DOMCharacterDataModified</code></a>
+								events.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+						<dt>readonly attribute DOMString newValue</dt>
+						<dd>
+							<p><code>newValue</code> indicates the new value of the <code>Attr</code> node in <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
+								events, and of the <code>CharacterData</code> node in <a class="eventtype" href="#event-type-DOMCharacterDataModified"><code>DOMCharacterDataModified</code></a>
+								events.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+						<dt>readonly attribute DOMString attrName</dt>
+						<dd>
+							<p><code>attrName</code> indicates the name of the changed <code>Attr</code> node in a <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
+								event.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>""</code> (the empty string).</p>
+						</dd>
+
+						<dt>readonly attribute unsigned short attrChange</dt>
+						<dd>
+							<p><code>attrChange</code> indicates the type of change which triggered the <a class="eventtype" href="#event-type-DOMAttrModified"><code>DOMAttrModified</code></a>
+								event. The values can be <code>MODIFICATION</code>, <code>ADDITION</code>, or <code>REMOVAL</code>.</p>
+
+							<p>The <a class="def" href="#glossary-un-initialized-value">un-initialized value</a> of this attribute <span class="must">must</span> be <code>0</code>.</p>
+
+							<p class="warning"><strong>Warning:</strong> There is no defined constant for the attrChange value of 0 (the un-initialized value).</p>
+						</dd>
+
+						<dt>void initMutationEvent()</dt>
+						<dd>
+							<p>Initializes attributes of a <code>MutationEvent</code> object. This method has the same behavior as <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a>.</p>
+							<dl class="parameters">
+								<dt>DOMString typeArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>boolean canBubbleArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>boolean cancelableArg</dt>
+								<dd>
+									<p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p>
+								</dd>
+
+								<dt>Node? relatedNodeArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MutationEvent-relatedNode"><code>MutationEvent.relatedNode</code></a>.</p>
+								</dd>
+
+								<dt>DOMString prevValueArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MutationEvent-prevValue"><code>MutationEvent.prevValue</code></a>. This value <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">
+										empty string</a>.</p>
+								</dd>
+
+								<dt>DOMString newValueArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MutationEvent-newValue"><code>MutationEvent.newValue</code></a>. This value <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">empty
+										string</a>.</p>
+								</dd>
+
+								<dt>DOMString attrNameArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MutationEvent-attrName"><code>MutationEvent.attrName</code></a>. This value <span class="may">may</span> be the <a class="def" href="#glossary-empty-string">empty
+										string</a>.</p>
+								</dd>
+
+								<dt>unsigned short attrChangeArg</dt>
+								<dd>
+									<p>Specifies <a href="#events-MutationEvent-attrChange"><code>MutationEvent.attrChange</code></a>. This value <span class="may">may</span> be <code>0</code>.</p>
+								</dd>
+
+							</dl>
+						</dd>
+
+					</dl>
+				</section>
 
 				<p>The mutation event types are listed below.</p>
 
@@ -5740,7 +5258,6 @@
 					</dl>
 				</div>
 
-
 				<!-- DOMNodeInserted -->
 				<div class="event-definition">
 					<dl>
@@ -8232,509 +7749,364 @@
 				<li><a href="#idl-interface-UIEvent-initializers"><code>UIEvent</code></a></li>
 				<li><a href="#idl-interface-MouseEvent-initializers"><code>MouseEvent</code></a></li>
 			</ul>
-			<dl>
-				<dt><strong>WebIDL Definitions</strong></dt>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-Event-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional EventInit eventInitDict)]
-partial interface <a href="#events-Event">Event</a>
-{
-};
-
-<span class="comment">// Suggested initEvent initializer:</span>
-dictionary EventInit {
-  boolean bubbles    = false;
-  boolean cancelable = false;
-};</code></pre>
-				</dd>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-CustomEvent-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional CustomEventInit customEventInitDict)]
-partial interface <a href="#events-CustomEvent">CustomEvent</a>
-{
-  <span class="comment">// Originally introduced (and deprecated) in DOM Level 3:</span>
-  void <a href="#events-event-type-initCustomEvent">initCustomEvent</a>(DOMString <a href="#events-CustomEvent-initparam-typeArg">typeArg</a>,
-                       boolean <a href="#events-CustomEvent-initparam-canBubbleArg">canBubbleArg</a>,
-                       boolean <a href="#events-CustomEvent-initparam-cancelableArg">cancelableArg</a>,
-                       any <a href="#events-CustomEvent-initparam-detailArg">detailArg</a>);
-};
-
-<span class="comment">// Suggested initCustomEvent replacement initializer:</span>
-dictionary CustomEventInit {
-  <span class="comment">// Attributes from Event:</span>
-  boolean bubbles    = false;
-  boolean cancelable = false;
-
-  <span class="comment">// Attributes for CustomEvent:</span>
-  any     detail     = null;
-};</code></pre>
-				</dd>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-UIEvent-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional UIEventInit dictUIEventInit)]
-partial interface <a href="#events-UIEvent">UIEvent</a>
-{
-};
-
-<span class="comment">// Suggested initUIEvent replacement initializer:</span>
-dictionary UIEventInit {
-  <span class="comment">// Attributes from Event:</span>
-  boolean       bubbles    = false;
-  boolean       cancelable = false;
-
-  <span class="comment">// Attributes for UIEvent:</span>
-  AbstractView? view       = null;
-  long          detail     = 0;
-};</code></pre>
-				</dd>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-FocusEvent-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional FocusEventInit focusEventInitDict)]
-partial interface <a href="#events-FocusEvent">FocusEvent</a>
-{
-  <span class="comment">// Originally introduced (and deprecated) in DOM Level 3:</span>
-  void <a href="#events-event-type-initFocusEvent">initFocusEvent</a>(DOMString typeArg,
-                      boolean canBubbleArg,
-                      boolean cancelableArg,
-                      AbstractView? viewArg,
-                      long detailArg,
-                      <a href="#events-EventTarget">EventTarget</a>? relatedTargetArg);
-};
-
-<span class="comment">// Suggested initFocusEvent replacement initializer:</span>
-dictionary FocusEventInit {
-  <span class="comment">// Attributes from Event:</span>
-  boolean       bubbles       = false;
-  boolean       cancelable    = false;
-
-  <span class="comment">// Attributes from UIEvent:</span>
-  AbstractView? view          = null;
-  long          detail        = 0;
-
-  <span class="comment">// Attributes for FocusEvent:</span>
-  <a href="#events-EventTarget">EventTarget</a>?  relatedTarget = null;
-};</code></pre>
-				</dd>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-MouseEvent-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional MouseEventInit mouseEventInitDict)]
-partial interface <a href="#events-WheelEvent">MouseEvent</a>
-{
-};
-
-<span class="comment">// Suggested initMouseEvent replacement initializer:</span>
-dictionary MouseEventInit {
-  <span class="comment">// Attributes from Event:</span>
-  boolean        bubbles       = false;
-  boolean        cancelable    = false;
-
-  <span class="comment">// Attributes from UIEvent:</span>
-  AbstractView?  view          = null;
-  long           detail        = 0;
-
-  <span class="comment">// Attributes for MouseEvent:</span>
-  long           screenX       = 0;
-  long           screenY       = 0;
-  long           clientX       = 0;
-  long           clientY       = 0;
-  boolean        ctrlKey       = false;
-  boolean        shiftKey      = false;
-  boolean        altKey        = false;
-  boolean        metaKey       = false;
-  unsigned short button        = 0;
-  <span class="comment">// Note: "buttons" was not previously initializable through initMouseEvent!</span>
-  unsigned short buttons       = 0;
-  <a href="#events-EventTarget">EventTarget</a>?   relatedTarget = null;
-};</code></pre>
-				</dd>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-WheelEvent-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional WheelEventInit wheelEventInitDict)]
-partial interface <a href="#events-WheelEvent">WheelEvent</a>
-{
-  <span class="comment">// Originally introduced (and deprecated) in DOM Level 3:</span>
-  void <a href="#events-event-type-initWheelEvent">initWheelEvent</a>(DOMString typeArg,
-                      boolean canBubbleArg,
-                      boolean cancelableArg,
-                      AbstractView? viewArg,
-                      long detailArg,
-                      long screenXArg,
-                      long screenYArg,
-                      long clientXArg,
-                      long clientYArg,
-                      unsigned short buttonArg,
-                      <a href="#events-EventTarget">EventTarget</a>? relatedTargetArg,
-                      DOMString modifiersListArg,
-                      double deltaXArg,
-                      double deltaYArg,
-                      double deltaZArg,
-                      unsigned long deltaMode);
-};
-
-<span class="comment">// Suggested initWheelEvent replacement initializer:</span>
-dictionary WheelEventInit {
-  <span class="comment">// Attributes from Event:</span>
-  boolean        bubbles       = false;
-  boolean        cancelable    = false;
-
-  <span class="comment">// Attributes from UIEvent:</span>
-  AbstractView?  view          = null;
-  long           detail        = 0;
-
-  <span class="comment">// Attributes from MouseEvent:</span>
-  long           screenX       = 0;
-  long           screenY       = 0;
-  long           clientX       = 0;
-  long           clientY       = 0;
-  boolean        ctrlKey       = false;
-  boolean        shiftKey      = false;
-  boolean        altKey        = false;
-  boolean        metaKey       = false;
-  unsigned short button        = 0;
-  <span class="comment">// Note: "buttons" was not previously initializable through initMouseEvent!</span>
-  unsigned short buttons       = 0;
-  <a href="#events-EventTarget">EventTarget</a>?   relatedTarget = null;
-
-  <span class="comment">// Attributes for WheelEvent:</span>
-  double          deltaX        = 0.0;
-  double          deltaY        = 0.0;
-  double          deltaZ        = 0.0;
-  unsigned long  deltaMode     = 0;
-};</code></pre>
-				</dd>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-KeyboardEvent-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional KeyboardEventInit keyboardEventInitDict)]
-partial interface <a href="#events-KeyboardEvent">KeyboardEvent</a>
-{
-  <span class="comment">// Originally introduced (and deprecated) in DOM Level 3:</span>
-  void <a href="#events-KeyboardEvent-initKeyboardEvent">initKeyboardEvent</a>(DOMString typeArg,
-                         boolean canBubbleArg,
-                         boolean cancelableArg,
-                         AbstractView? viewArg,
-                         DOMString charArg,
-                         DOMString keyArg,
-                         unsigned long locationArg,
-                         DOMString modifiersListArg,
-                         boolean repeat,
-                         DOMString localeArg);
-};
-
-<span class="comment">// Suggested initKeyboardEvent replacement initializer:</span>
-dictionary KeyboardEventInit {
-  <span class="comment">// Attributes from Event:</span>
-  boolean       bubbles    = false;
-  boolean       cancelable = false;
-
-  <span class="comment">// Attributes from UIEvent:</span>
-  AbstractView? view       = null;
-  long          detail     = 0;
-
-  <span class="comment">// Attributes for KeyboardEvent:</span>
-  DOMString     char       = "";
-  DOMString     key        = "";
-  unsigned long location   = 0;
-  boolean       ctrlKey    = false;
-  boolean       shiftKey   = false;
-  boolean       altKey     = false;
-  boolean       metaKey    = false;
-  boolean       repeat     = false;
-  DOMString     locale     = "";
-
-  <span class="comment">// (Legacy) key attributes for KeyboardEvent:</span>
-  unsigned long charCode   = 0;
-  unsigned long keyCode    = 0;
-  unsigned long which      = 0;
-};</code></pre>
-				</dd>
-				<dd>
-					<pre class="d3-idl" id="idl-interface-CompositionEvent-initializers"><code>
-<span class="comment">// Event Constructor Syntax:</span>
-[Constructor(DOMString typeArg, optional CompositionEventInit compositionEventInitDict)]
-partial interface <a href="#events-CompositionEvent">CompositionEvent</a>
-{
-  <span class="comment">// Originally introduced (and deprecated) in DOM Level 3:</span>
-  void <a href="#events-event-type-initCompositionEvent">initCompositionEvent</a>(DOMString typeArg,
-                         boolean canBubbleArg,
-                         boolean cancelableArg,
-                         AbstractView? viewArg,
-                         DOMString? dataArg,
-                         DOMString localeArg);
-};
-
-<span class="comment">// Suggested initCompositionEvent replacement initializer:</span>
-dictionary CompositionEventInit {
-  <span class="comment">// Attributes from Event:</span>
-  boolean       bubbles    = false;
-  boolean       cancelable = false;
-
-  <span class="comment">// Attributes from UIEvent:</span>
-  AbstractView? view       = null;
-  long          detail     = 0;
-
-  <span class="comment">// Attributes for CompositionEvent:</span>
-  DOMString?    data       = null;
-  DOMString     locale     = "";
-};</code></pre>
-				</dd>
-
-				<dt><strong>Methods</strong></dt>
-				<dd>
-					<dl>
-						<dt><code class="method-name"><a id="events-event-type-initCustomEvent">initCustomEvent</a></code></dt>
-						<dd>
-							<div class="method">
-								<p>Initializes attributes of a <code>CustomEvent</code> object. This method has the same behavior as <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a>.</p>
-
-								<p class="warning"><strong>Warning!</strong> The <code>initCustomEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected future
-									syntax for initializing a <code>CustomEvent</code>.</p>
-
-								<div class="parameters">
-									<p><strong>Parameters</strong></p>
-
-									<div class="paramtable">
-										<dl>
-											<dt><a id="events-CustomEvent-initparam-typeArg"><code class="parameter-name">typeArg</code></a> of type <code>DOMString</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><a id="events-CustomEvent-initparam-canBubbleArg"><code class="parameter-name">canBubbleArg</code></a> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><a id="events-CustomEvent-initparam-cancelableArg"><code class="parameter-name">cancelableArg</code></a> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><a id="events-CustomEvent-initparam-detailArg"><code class="parameter-name">detailArg</code></a> of type <code>any</code></dt>
-											<dd><p>Specifies <a href="#events-CustomEvent-detail"><code>CustomEvent.detail</code></a>.</p></dd>
-										</dl>
-									</div>
-								</div>
-
-								<div><strong>No Return Value</strong></div>
-
-								<div><strong>No Exceptions</strong></div>
-							</div>
-						</dd>
-
-						<dt><code class="method-name"><a id="events-event-type-initFocusEvent">initFocusEvent</a></code></dt>
-						<dd>
-							<div class="method">
-								<p>Initializes attributes of a <code>FocusEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.</p>
-
-								<p class="warning"><strong>Warning!</strong> The <code>initFocusEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected future
-									syntax for initializing a <code>FocusEvent</code>.</p>
-
-								<div class="parameters">
-									<p><strong>Parameters</strong></p>
-
-									<div class="paramtable">
-										<dl>
-											<dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">viewArg</code> of type <code>AbstractView</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">detailArg</code> of type <code>long</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">relatedTargetArg</code> of type <a href="#events-EventTarget"><code>EventTarget</code></a></dt>
-											<dd><p>Specifies <a href="#events-FocusEvent-relatedTarget"><code>FocusEvent.relatedTarget</code></a>. This value <span class="may">may</span> be <code>null</code>.</p></dd>
-										</dl>
-									</div>
-								</div>
-
-								<div><strong>No Return Value</strong></div>
-
-								<div><strong>No Exceptions</strong></div>
-							</div>
-						</dd>
-
-						<dt><code class="method-name"><a id="events-event-type-initWheelEvent">initWheelEvent</a></code></dt>
-						<dd>
-							<div class="method">
-								<p>Initializes attributes of a <code>WheelEvent</code> object. This method has the same behavior as <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a>.</p>
-
-								<p class="warning"><strong>Warning!</strong> The <code>initWheelEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected future
-									syntax for initializing a <code>WheelEvent</code>.</p>
-
-								<div class="parameters">
-									<p><strong>Parameters</strong></p>
-
-									<div class="paramtable">
-										<dl>
-											<dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">viewArg</code> of type <code>AbstractView</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">detailArg</code> of type <code>long</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">screenXArg</code> of type <code>long</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">screenYArg</code> of type <code>long</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">clientXArg</code> of type <code>long</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">clientYArg</code> of type <code>long</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">buttonArg</code> of type <code>unsigned short</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">relatedTargetArg</code> of type <a href="#events-EventTarget"><code>EventTarget</code></a></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">modifiersListArg</code> of type <code>DOMString</code></dt>
-											<dd>
-												<p>A <a class="normative" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S"><em>white space</em></a> separated list of modifier key values to be activated
-													on this object. As an example, <code>"Control Shift"</code> marks the control and shift modifiers as activated (the <a href="#events-MouseEvent-ctrlKey">
-													<code>MouseEvent.ctrlKey</code></a> and <a href="#events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a> inherited attributes will be <code>true</code>
-													on the initialized <code>WheelEvent</code> object).</p>
-											</dd>
-
-											<dt><code class="parameter-name">deltaXArg</code> of type <code>double</code></dt>
-											<dd><p>Specifies <a href="#events-WheelEvent-deltaX"><code>WheelEvent.deltaX</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">deltaYArg</code> of type <code>double</code></dt>
-											<dd><p>Specifies <a href="#events-WheelEvent-deltaY"><code>WheelEvent.deltaY</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">deltaZArg</code> of type <code>double</code></dt>
-											<dd><p>Specifies <a href="#events-WheelEvent-deltaZ"><code>WheelEvent.deltaZ</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">deltaModeArg</code> of type <code>unsigned long</code></dt>
-											<dd><p>Specifies <a href="#events-WheelEvent-deltaMode"><code>WheelEvent.deltaMode</code></a>.</p></dd>
-										</dl>
-									</div>
-								</div>
-
-								<div><strong>No Return Value</strong></div>
-
-								<div><strong>No Exceptions</strong></div>
-							</div>
-						</dd>
-
-						<dt><code class="method-name"><a id="events-KeyboardEvent-initKeyboardEvent">initKeyboardEvent</a></code></dt>
-						<dd>
-							<div class="method">
-								<p>Initializes attributes of a <code>KeyboardEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.
-									The value of <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a> remains undefined.</p>
-
-								<p class="warning"><strong>Warning!</strong> The <code>initKeyboardEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected
-									future syntax for initializing a <code>KeyboardEvent</code>.</p>
-
-								<div class="parameters">
-									<p><strong>Parameters</strong></p>
-
-									<div class="paramtable">
-										<dl>
-											<dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">viewArg</code> of type <code>AbstractView</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">charArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Specifies <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">keyArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Specifies <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">locationArg</code> of type <code>unsigned long</code></dt>
-											<dd><p>Specifies <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">modifiersListArg</code> of type <code>DOMString</code></dt>
-											<dd><p>A <a class="normative" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S"><em>white space</em></a> separated list of modifier key values to be activated on
-												this object. As an example, <code>"Control Alt"</code> marks the control and alt modifiers as activated.</p>
-											</dd>
-
-											<dt><code class="parameter-name">repeatArg</code> of type <code>boolean</code></dt>
-											<dd><p>Specifies whether the key event is repeating; see <a href="#events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">localeArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Specifies <a href="#events-KeyboardEvent-locale"><code>KeyboardEvent.locale</code></a>.</p></dd>
-										</dl>
-									</div>
-								</div>
-
-								<div><strong>No Return Value</strong></div>
-
-								<div><strong>No Exceptions</strong></div>
-							</div>
-						</dd>
-
-						<dt><code class="method-name"><a id="events-event-type-initCompositionEvent">initCompositionEvent</a></code></dt>
-						<dd>
-							<div class="method">
-								<p>Initializes attributes of a <code>CompositionEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.
-									The value of <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a> remains undefined.</p>
-
-								<p class="warning"><strong>Warning!</strong> The <code>initCompositionEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected
-									future syntax for initializing a <code>CompositionEvent</code>.</p>
-
-								<div class="parameters">
-									<p><strong>Parameters</strong></p>
-
-									<div class="paramtable">
-										<dl>
-											<dt><code class="parameter-name">typeArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">canBubbleArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">cancelableArg</code> of type <code>boolean</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">viewArg</code> of type <code>AbstractView</code></dt>
-											<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
-
-											<dt><code class="parameter-name">dataArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Specifies <a href="#events-CompositionEvent-data"><code>CompositionEvent.data</code></a>.</p></dd>
-
-											<dt><code class="parameter-name">localeArg</code> of type <code>DOMString</code></dt>
-											<dd><p>Specifies <a href="#events-CompositionEvent-locale"><code>CompositionEvent.locale</code></a>.</p></dd>
-										</dl>
-									</div>
-								</div>
-
-								<div><strong>No Return Value</strong></div>
-
-								<div><strong>No Exceptions</strong></div>
-							</div>
-						</dd>
-					</dl>
-				</dd>
-			</dl>
+
+			<section id="idl-interface-Event-initializers">
+				<h3>Initializers for interface Event</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional EventInit eventInitDict] partial interface Event">
+				</dl>
+			
+				<dl class="idl" title="dictionary EventInit">
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+				</dl>
+			</section>
+			
+			<section id="idl-interface-CustomEvent-initializers">
+				<h3>Initializers for interface CustomEvent</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional CustomEventInit customEventInitDict] partial interface CustomEvent">
+					<dt>// Originally introduced (and deprecated) in DOM Level 3</dt>
+					<dd></dd>
+					<dt>void initCustomEvent()</dt>
+					<dd>
+						<p>Initializes attributes of a <code>CustomEvent</code> object. This method has the same behavior as <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a>.</p>
+
+						<p class="warning"><strong>Warning!</strong> The <code>initCustomEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected future
+							syntax for initializing a <code>CustomEvent</code>.</p>
+
+						<dl class="parameters">
+							<dt>DOMString typeArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean canBubbleArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean cancelableArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initEvent"><code>Event.initEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>any detailArg</dt>
+							<dd><p>Specifies <a href="#events-CustomEvent-detail"><code>CustomEvent.detail</code></a>.</p></dd>
+						</dl>
+					</dd>
+				</dl>
+				
+				<dl class="idl" title="dictionary CustomEventInit">
+					<!-- Attributes from Event -->
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+					<!-- Attributes from CustomEvent -->
+					<dt>any detail = null</dt><dd></dd>
+				</dl>
+			</section>
+
+			<section id="idl-interface-UIEvent-initializers">
+				<h3>Initializers for interface UIEvent</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional UIEventInit uiEventInitDict] partial interface UIEvent">
+				</dl>
+				
+				<dl class="idl" title="dictionary UIEventInit">
+					<!-- Attributes from Event -->
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+					<!-- Attributes from UIEvent -->
+					<dt>AbstractView? view = null</dt><dd></dd>
+					<dt>long detail = 0</dt><dd></dd>
+				</dl>
+			</section>
+
+			<section id="idl-interface-FocusEvent-initializers">
+				<h3>Initializers for interface FocusEvent</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional FocusEventInit focusEventInitDict] partial interface FocusEvent">
+					<dt>// Originally introduced (and deprecated) in DOM Level 3</dt>
+					<dd></dd>
+					<dt>void initFocusEvent()</dt>
+					<dd>
+						<p>Initializes attributes of a <code>FocusEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.</p>
+
+						<p class="warning"><strong>Warning!</strong> The <code>initFocusEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected future
+							syntax for initializing a <code>FocusEvent</code>.</p>
+
+						<dl class="parameters">
+							<dt>DOMString typeArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean canBubbleArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean cancelableArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>AbstractView? viewArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>long detailArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>EventTarget? relatedTargetArg</dt>
+							<dd><p>Specifies <a href="#events-FocusEvent-relatedTarget"><code>FocusEvent.relatedTarget</code></a>. This value <span class="may">may</span> be <code>null</code>.</p></dd>
+						</dl>
+					</dd>
+				</dl>
+				
+				<dl class="idl" title="dictionary FocusEventInit">
+					<!-- Attributes from Event -->
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+					<!-- Attributes from UIEvent -->
+					<dt>AbstractView? view = null</dt><dd></dd>
+					<dt>long detail = 0</dt><dd></dd>
+					<!-- Attributes from FocusEvent -->
+					<dt>EventTarget? relatedTarget = null</dt><dd></dd>
+				</dl>
+			</section>
+
+			<section id="idl-interface-MouseEvent-initializers">
+				<h3>Initializers for interface MouseEvent</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional MouseEventInit mouseEventInitDict] partial interface UIEvent">
+				</dl>
+				
+				<dl class="idl" title="dictionary MouseEventInit">
+					<!-- Attributes from Event -->
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+					<!-- Attributes from UIEvent -->
+					<dt>AbstractView? view = null</dt><dd></dd>
+					<dt>long detail = 0</dt><dd></dd>
+					<!-- Attributes from MouseEvent -->
+					<dt>long screenX = 0</dt><dd></dd>
+					<dt>long screenY = 0</dt><dd></dd>
+					<dt>long clientX = 0</dt><dd></dd>
+					<dt>long clientY = 0</dt><dd></dd>
+					<dt>boolean ctrlKey = false</dt><dd></dd>
+					<dt>boolean shiftKey = false</dt><dd></dd>
+					<dt>boolean altKey = false</dt><dd></dd>
+					<dt>boolean metaKey = false</dt><dd></dd>
+					<dt>unsigned short button = 0</dt><dd></dd>
+					<!-- Note: "buttons" was not previously initializable through initMouseEvent! -->
+					<dt>unsigned short buttons = 0</dt><dd></dd>
+					<dt>EventTarget? relatedTarget = null</dt><dd></dd>
+				</dl>
+			</section>
+
+			<section id="idl-interface-WheelEvent-initializers">
+				<h3>Initializers for interface WheelEvent</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional WheelEventInit wheelEventInitDict] partial interface WheelEvent">
+					<dt>// Originally introduced (and deprecated) in DOM Level 3</dt>
+					<dd></dd>
+					<dt>void initWheelEvent()</dt>
+					<dd>
+						<p>Initializes attributes of a <code>WheelEvent</code> object. This method has the same behavior as <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a>.</p>
+
+						<p class="warning"><strong>Warning!</strong> The <code>initWheelEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected future
+							syntax for initializing a <code>WheelEvent</code>.</p>
+
+						<dl class="parameters">
+							<dt>DOMString typeArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean canBubbleArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean cancelableArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>AbstractView? viewArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>long detailArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>long screenXArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>long screenYArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>long clientXArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>long clientYArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>unsigned short buttonArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>EventTarget? relatedTargetArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initMouseEvent"><code>MouseEvent.initMouseEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>DOMString modifiersListArg</dt>
+							<dd>
+								<p>A <a class="normative" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S"><em>white space</em></a> separated list of modifier key values to be activated
+									on this object. As an example, <code>"Control Shift"</code> marks the control and shift modifiers as activated (the <a href="#events-MouseEvent-ctrlKey">
+									<code>MouseEvent.ctrlKey</code></a> and <a href="#events-MouseEvent-shiftKey"><code>MouseEvent.shiftKey</code></a> inherited attributes will be <code>true</code>
+									on the initialized <code>WheelEvent</code> object).</p>
+							</dd>
+
+							<dt>double deltaXArg</dt>
+							<dd><p>Specifies <a href="#events-WheelEvent-deltaX"><code>WheelEvent.deltaX</code></a>.</p></dd>
+
+							<dt>double deltaYArg</dt>
+							<dd><p>Specifies <a href="#events-WheelEvent-deltaY"><code>WheelEvent.deltaY</code></a>.</p></dd>
+
+							<dt>double deltaZArg</dt>
+							<dd><p>Specifies <a href="#events-WheelEvent-deltaZ"><code>WheelEvent.deltaZ</code></a>.</p></dd>
+
+							<dt>unsigned long deltaMode</dt>
+							<dd><p>Specifies <a href="#events-WheelEvent-deltaMode"><code>WheelEvent.deltaMode</code></a>.</p></dd>
+						</dl>
+					</dd>
+				</dl>
+				
+				<dl class="idl" title="dictionary WheelEventInit">
+					<!-- Attributes from Event -->
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+					<!-- Attributes from UIEvent -->
+					<dt>AbstractView? view = null</dt><dd></dd>
+					<dt>long detail = 0</dt><dd></dd>
+					<!-- Attributes from MouseEvent -->
+					<dt>long screenX = 0</dt><dd></dd>
+					<dt>long screenY = 0</dt><dd></dd>
+					<dt>long clientX = 0</dt><dd></dd>
+					<dt>long clientY = 0</dt><dd></dd>
+					<dt>boolean ctrlKey = false</dt><dd></dd>
+					<dt>boolean shiftKey = false</dt><dd></dd>
+					<dt>boolean altKey = false</dt><dd></dd>
+					<dt>boolean metaKey = false</dt><dd></dd>
+					<dt>unsigned short button = 0</dt><dd></dd>
+					<dt>unsigned short buttons = 0</dt><dd></dd>
+					<dt>EventTarget? relatedTarget = null</dt><dd></dd>
+					<!-- Attributes from WheelEvent -->
+					<dt>double deltaX = 0.0</dt><dd></dd>
+					<dt>double deltaY = 0.0</dt><dd></dd>
+					<dt>double deltaZ = 0.0</dt><dd></dd>
+					<dt>unsigned long deltaMode = 0</dt><dd></dd>
+				</dl>
+			</section>
+
+			<section id="idl-interface-KeyboardEvent-initializers">
+				<h3>Initializers for interface KeyboardEvent</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional KeyboardEventInit keyboardEventInitDict] partial interface KeyboardEvent">
+					<dt>// Originally introduced (and deprecated) in DOM Level 3</dt>
+					<dd></dd>
+					<dt>void initKeyboardEvent()</dt>
+					<dd>
+						<p>Initializes attributes of a <code>KeyboardEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.
+							The value of <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a> remains undefined.</p>
+
+						<p class="warning"><strong>Warning!</strong> The <code>initKeyboardEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected
+							future syntax for initializing a <code>KeyboardEvent</code>.</p>
+
+						<dl class="parameters">
+							<dt>DOMString typeArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean canBubbleArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean cancelableArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>AbstractView? viewArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>long detailArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>DOMString charArg</dt>
+							<dd><p>Specifies <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a>.</p></dd>
+
+							<dt>DOMString keyArg</dt>
+							<dd><p>Specifies <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a>.</p></dd>
+
+							<dt>unsigned long locationArg</dt>
+							<dd><p>Specifies <a href="#events-KeyboardEvent-location"><code>KeyboardEvent.location</code></a>.</p></dd>
+
+							<dt>DOMString modifiersListArg</dt>
+							<dd><p>A <a class="normative" href="http://www.w3.org/TR/2004/REC-xml-20040204/#NT-S"><em>white space</em></a> separated list of modifier key values to be activated on
+								this object. As an example, <code>"Control Alt"</code> marks the control and alt modifiers as activated.</p>
+							</dd>
+
+							<dt>boolean repeat</dt>
+							<dd><p>Specifies whether the key event is repeating; see <a href="#events-KeyboardEvent-repeat"><code>KeyboardEvent.repeat</code></a>.</p></dd>
+
+							<dt>DOMString localeArg</dt>
+							<dd><p>Specifies <a href="#events-KeyboardEvent-locale"><code>KeyboardEvent.locale</code></a>.</p></dd>
+						</dl>
+					</dd>
+				</dl>
+				
+				<dl class="idl" title="dictionary KeyboardEventInit">
+					<!-- Attributes from Event -->
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+					<!-- Attributes from UIEvent -->
+					<dt>AbstractView? view = null</dt><dd></dd>
+					<dt>long detail = 0</dt><dd></dd>
+					<!-- Attributes from KeyboardEvent -->
+					<dt>DOMString char = ""</dt><dd></dd>
+					<dt>DOMString key = ""</dt><dd></dd>
+					<dt>unsigned long location = 0</dt><dd></dd>
+					<dt>boolean ctrlKey = false</dt><dd></dd>
+					<dt>boolean shiftKey = false</dt><dd></dd>
+					<dt>boolean altKey = false</dt><dd></dd>
+					<dt>boolean metaKey = false</dt><dd></dd>
+					<dt>boolean repeat = false</dt><dd></dd>
+					<dt>DOMString locale = ""</dt><dd></dd>
+					<!-- Legacy attributes for KeyboardEvent -->
+					<dt>unsigned long charCode = 0</dt><dd></dd>
+					<dt>unsigned long keyCode = 0</dt><dd></dd>
+					<dt>unsigned long which = 0</dt><dd></dd>
+				</dl>
+			</section>
+
+			<section id="idl-interface-CompositionEvent-initializers">
+				<h3>Initializers for interface CompositionEvent</h3>
+				<dl class="idl" title="[Constructor(DOMString typeArg, optional CompositionEventInit compositionEventInitDict] partial interface CompositionEvent">
+					<dt>// Originally introduced (and deprecated) in DOM Level 3</dt>
+					<dd></dd>
+					<dt>void initCompositionEvent()</dt>
+					<dd>
+						<p>Initializes attributes of a <code>CompositionEvent</code> object. This method has the same behavior as <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a>.
+							The value of <a href="#events-UIEvent-detail"><code>UIEvent.detail</code></a> remains undefined.</p>
+
+						<p class="warning"><strong>Warning!</strong> The <code>initCompositionEvent</code> method is deprecated. Event constructor syntax, introduced in DOM4, is the expected
+							future syntax for initializing a <code>CompositionEvent</code>.</p>
+
+						<dl class="parameters">
+							<dt>DOMString typeArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean canBubbleArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>boolean cancelableArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>AbstractView? viewArg</dt>
+							<dd><p>Refer to the <a href="#events-event-type-initUIEvent"><code>UIEvent.initUIEvent()</code></a> method for a description of this parameter.</p></dd>
+
+							<dt>DOMString? dataArg</dt>
+							<dd><p>Specifies <a href="#events-CompositionEvent-data"><code>CompositionEvent.data</code></a>.</p></dd>
+
+							<dt>DOMString localeArg</dt>
+							<dd><p>Specifies <a href="#events-CompositionEvent-locale"><code>CompositionEvent.locale</code></a>.</p></dd>
+						</dl>
+					</dd>
+				</dl>
+				
+				<dl class="idl" title="dictionary CompositionEventInit">
+					<!-- Attributes from Event -->
+					<dt>boolean bubbles = false</dt><dd></dd>
+					<dt>boolean cancelable = false</dt><dd></dd>
+					<!-- Attributes from UIEvent -->
+					<dt>AbstractView? view = null</dt><dd></dd>
+					<dt>long detail = 0</dt><dd></dd>
+					<!-- Attributes from CompositionEvent -->
+					<dt>DOMString? data = null</dt><dd></dd>
+					<dt>DOMString locale = ""</dt><dd></dd>
+				</dl>
+			</section>
+
 		</section>
 	</section>
 
@@ -8780,52 +8152,36 @@
 					<p>The partial <code>KeyboardEvent</code> interface can be obtained by using the <a href="#events-DocumentEvent-createEvent"><code>DocumentEvent.createEvent("KeyboardEvent")</code></a>
 						method call in implementations that support this extension.</p>
 
-					<dl>
-						<dt><strong>WebIDL Definition</strong></dt>
-						<dd>
-							<pre class="d3-idl"><code>
-<span class="comment">// introduced in DOM Level 3:</span>
-partial interface <a href="#events-KeyboardEvent-supplemental">KeyboardEvent</a>
-{
-  <span class="comment">// The following support legacy user agents:</span>
-  readonly attribute unsigned long <a href="#events-KeyboardEvent-supplemental-charCode">charCode</a>;
-  readonly attribute unsigned long <a href="#events-KeyboardEvent-supplemental-keyCode">keyCode</a>;
-  readonly attribute unsigned long <a href="#events-KeyboardEvent-supplemental-which">which</a>;
-};
-</code></pre>
-						</dd>
-						<dt><strong>Attributes</strong></dt>
+					<dl class="idl" title="partial interface KeyboardEvent">
+						<dt>// The following support legacy user agents</dt>
+						<dd></dd>
+
+						<dt>readonly attribute unsigned long charCode</dt>
 						<dd>
-							<dl>
-								<dt><code class="attribute-name"><a id="events-KeyboardEvent-supplemental-charCode">charCode</a></code> of type <code>
-									unsigned long</code>, readonly</dt>
-								<dd>
-									<p><code class="attribute-name">charCode</code> holds a character value, for <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events which
-										generate character input.  The value is the Unicode reference number (code point) of that character (e.g. <code>event.charCode = event.char.charCodeAt(0)</code>).
-										For <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> or  <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events, the
-										value of <code class="attribute-name">charCode</code> is <code>0</code>.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-KeyboardEvent-supplemental-keyCode">keyCode</a></code> of type <code>unsigned long</code>, readonly</dt>
-								<dd>
-									<p><code class="attribute-name">keyCode</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the
-										key pressed. Unlike the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a>
-										attributes, the set of possible values are not normatively defined in this specification; typically, these value of the <code class="attribute-name">keyCode</code>
-										<span class="should">should</span> represent the decimal codepoint in ASCII [<a href="#ref-rfc20">RFC20</a>][<a href="#ref-US-ASCII">US-ASCII</a>] or Windows 1252 [<a href="#ref-WIN1252">WIN1252</a>],
-										but <span class="may">may</span> be drawn from a different appropriate character set. Implementations that are unable to identify a key use the key value <code class="key">'0'</code>.</p>
-
-									<p>See <a href="#legacy-key-models">Legacy key models</a> for more details on how to determine the values for <code class="attribute-name">keyCode</code>.</p>
-								</dd>
-
-								<dt><code class="attribute-name"><a id="events-KeyboardEvent-supplemental-which">which</a></code> of type <code>unsigned
-									long</code>, readonly</dt>
-								<dd>
-									<p><code>which</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the key pressed.  In most cases,
-										the value is identical to <code class="attribute-name"><a href="#events-KeyboardEvent-supplemental-keyCode">keyCode</a></code>.</p>
-								</dd>
-							</dl>
+							<p><code class="attribute-name">charCode</code> holds a character value, for <a class="eventtype" href="#event-type-keypress"><code>keypress</code></a> events which
+								generate character input.  The value is the Unicode reference number (code point) of that character (e.g. <code>event.charCode = event.char.charCodeAt(0)</code>).
+								For <a class="eventtype" href="#event-type-keydown"><code>keydown</code></a> or  <a class="eventtype" href="#event-type-keyup"><code>keyup</code></a> events, the
+								value of <code class="attribute-name">charCode</code> is <code>0</code>.</p>
+						</dd>
+
+						<dt>readonly attribute unsigned long keyCode</dt>
+						<dd>
+							<p><code class="attribute-name">keyCode</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the
+								key pressed. Unlike the <a href="#events-KeyboardEvent-key"><code>KeyboardEvent.key</code></a> or <a href="#events-KeyboardEvent-char"><code>KeyboardEvent.char</code></a>
+								attributes, the set of possible values are not normatively defined in this specification; typically, these value of the <code class="attribute-name">keyCode</code>
+								<span class="should">should</span> represent the decimal codepoint in ASCII [<a href="#ref-rfc20">RFC20</a>][<a href="#ref-US-ASCII">US-ASCII</a>] or Windows 1252 [<a href="#ref-WIN1252">WIN1252</a>],
+								but <span class="may">may</span> be drawn from a different appropriate character set. Implementations that are unable to identify a key use the key value <code class="key">'0'</code>.</p>
+
+							<p>See <a href="#legacy-key-models">Legacy key models</a> for more details on how to determine the values for <code class="attribute-name">keyCode</code>.</p>
+						</dd>
+
+						<dt>readonly attribute unsigned long which</dt>
+						<dd>
+							<p><code>which</code> holds a system- and implementation-dependent numerical code signifying the unmodified identifier associated with the key pressed.  In most cases,
+								the value is identical to <code class="attribute-name"><a href="#events-KeyboardEvent-supplemental-keyCode">keyCode</a></code>.</p>
 						</dd>
 					</dl>
+
 				</dd>
 			</dl>
 		</section>