<?xml version="1.0"?>

<!--

  Do you think this file is difficult to read and make sense of?
  Well, it is not supposed to be easy to read directly, it is supposed
  to be a comprehensive source of information about the DOM support in
  Opera.  Other means of making use of this file are or will be made
  available, such as XSLT stylesheets and script functions for
  loading, sorting, searching and presentation of the data herein.

-->

<!DOCTYPE supported SYSTEM "supported.dtd" [
  <!ENTITY plain-object "<note>Just a plain object with some constants.</note>">
  <!ENTITY req-dom2travrange "<feature name='FEATURE_DOM2_TRAV_AND_RANGE'/>">
  <!ENTITY req-dom2mutationevents "<feature name='FEATURE_DOM2_MUTATION_EVENTS'/>">
  <!ENTITY req-dom3core "<macro name='DOM3_CORE'/>">
  <!ENTITY req-dom3loadsave "<feature name='FEATURE_DOM3_LOAD_SAVE'/>">
  <!ENTITY req-dom3xpath "<feature name='FEATURE_DOM3_XPATH'/>">
  <!ENTITY req-dom3events "<macro name='DOM3_EVENTS'/>">
  <!ENTITY req-domhttp "<feature name='FEATURE_DOM_HTTP'/>">
  <!ENTITY req-domxslt "<macro name='DOM_XSLT_SUPPORT'/>">
  <!ENTITY req-webforms2 "<feature name='FEATURE_WEBFORMS2'/>">
  <!ENTITY req-userjs "<feature name='FEATURE_USER_JAVASCRIPT'/>">
  <!ENTITY req-remoteevents "<macro name='REMOTE_EVENTS_SUPPORT'/>">
  <!ENTITY req-ogp "<feature name='FEATURE_OGP'/>">
  <!ENTITY req-vxml "<feature name='FEATURE_VOICE'/>">
  <!ENTITY req-debug "<macro name='_DEBUG'/>">
  <!ENTITY req-asyncslotops "<feature name='FEATURE_ASYNC_SLOT_OPERATIONS'/>">
  <!ENTITY req-feeds "<macro name='WEBFEEDS_BACKEND_SUPPORT'/>">
 ]>

<?xml-stylesheet type="text/xml" href="supported.xslt"?>

<supported version="dumdum_2_beta_65" revision="$Id$">
  <object name="window" origin="various" className="Window">
    <note>The ECMAScript environment's global object.  All objects, properties
          and methods are also available as global variables.</note>

    <interface name="AbstractView" origin="dom2views">
      <specification origin="dom2views" href="http://www.w3.org/TR/DOM-Level-2-Views/views.html#Views-AbstractView"/>
      <property name="document" classType="Document"/>
    </interface>

    <interface name="EventTarget" origin="dom2events">
      <method name="dispatchEvent" supported="no"/>
      <method name="addEventListener"/>
      <method name="removeEventListener"/>
    </interface>

    <interface name="ViewCSS" origin="dom2css">
      <method name="getComputedStyle" classType="CSSStyleDeclaration"/>
    </interface>

    <property name="closed" primitiveType="boolean" origin="js13"><note type="limitation">Always false.</note></property>
    <property name="status" primitiveType="string" origin="js13"/>
    <property name="defaultStatus" primitiveType="string" origin="js13"/>
    <property name="event" classType="Event"><note>Returns the current event or null if there is no current event.</note></property>
    <property name="innerWidth" primitiveType="unsignedLong"/>
    <property name="innerHeight" primitiveType="unsignedLong"/>
    <property name="outerWidth" primitiveType="unsignedLong"/>
    <property name="outerHeight" primitiveType="unsignedLong"/>
    <property name="length" primitiveType="unsignedLong" origin="msie"><note>Returns window.frames.length.</note></property>
    <property name="name" primitiveType="string" origin="js13"/>
    <property name="opener" classType="Window" origin="js13"/>
    <property name="pageXOffset" primitiveType="unsignedLong"/>
    <property name="pageYOffset" primitiveType="unsignedLong"/>
    <property name="screenLeft" primitiveType="unsignedLong"/>
    <property name="screenTop" primitiveType="unsignedLong"/>
    <property name="screenX" primitiveType="unsignedLong"/>
    <property name="screenY" primitiveType="unsignedLong"/>
    <property name="window" classType="Window"><note>window.window == window</note></property>
    <property name="self" classType="Window"><note>window.self == window</note></property>
    <property name="parent" classType="Window"><note>Returns same window if there is no parent window.</note></property>
    <property name="top" classType="Window"/>
    <property name="frameElement" classType="Element"><note>Returns null if document is not in a frame or iframe.</note></property>

    <method name="alert" origin="js13"/>
    <method name="confirm" origin="js13"/>
    <method name="prompt" origin="js13"/>
    <method name="focus" origin="js13"/>
    <method name="blur" origin="js13"/>
    <method name="open" origin="js13"/>
    <method name="stop" origin="js13"/>
    <method name="print" origin="js13"/>
    <method name="setInterval" origin="js13"/>
    <method name="clearInterval" origin="js13"/>
    <method name="setTimeout" origin="js13"/>
    <method name="clearTimeout" origin="js13"/>
    <method name="home" origin="js13"/>
    <method name="moveTo" origin="js13"/>
    <method name="moveBy" origin="js13"/>
    <method name="resizeTo" origin="js13"/>
    <method name="resizeBy" origin="js13"/>
    <method name="scroll" origin="js13"/>
    <method name="scrollTo" origin="js13"/>
    <method name="scrollBy" origin="js13"/>
    <method name="back"/>
    <method name="forward"/>

    <method name="setDocument" origin="opera"/>

    <method name="addEventStream" origin="opera">&req-remoteevents;</method>
    <method name="removeEventStream" origin="opera">&req-remoteevents;</method>

    <!-- MSIE stuff -->
    <method name="attachEvent" origin="msie"/>
    <method name="detachEvent" origin="msie"/>
    <method name="navigate" origin="msie"/>

    <!-- Dummy functions -->
    <method name="captureEvents" origin="js13"><note type="limitation">Does nothing.</note></method>
    <method name="releaseEvents" origin="js13"><note type="limitation">Does nothing.</note></method>
    <method name="enableExternalCapture" origin="js13"><note type="limitation">Does nothing.</note></method>    <method name="disableExternalCapture" origin="js13"><note type="limitation">Does nothing.</note></method>

    <constructor name="Node" origin="dom2core" className="Node">
      <!-- Complete. -->

      <property name="ELEMENT_NODE" primitiveType="unsignedLong"/>
      <property name="ATTRIBUTE_NODE" primitiveType="unsignedLong"/>
      <property name="TEXT_NODE" primitiveType="unsignedLong"/>
      <property name="CDATA_SECTION_NODE" primitiveType="unsignedLong"/>
      <property name="ENTITY_REFERENCE_NODE" primitiveType="unsignedLong"><note type="limitation">Nodes of this type are not supported.</note></property>
      <property name="ENTITY_NODE" primitiveType="unsignedLong"/>
      <property name="PROCESSING_INSTRUCTION_NODE" primitiveType="unsignedLong"/>
      <property name="COMMENT_NODE" primitiveType="unsignedLong"/>
      <property name="DOCUMENT_NODE" primitiveType="unsignedLong"/>
      <property name="DOCUMENT_TYPE_NODE" primitiveType="unsignedLong"/>
      <property name="DOCUMENT_FRAGMENT_NODE" primitiveType="unsignedLong"/>
      <property name="NOTATION_NODE" primitiveType="unsignedLong"/>

      <property name="prototype" readOnly="silent"><note>Prototype object for Node class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="FeedEntry" origin="opera" className="FeedEntry">
      <!-- Complete. -->

      <property name="STATUS_UNREAD" primitiveType="unsignedLong"/>
      <property name="STATUS_READ" primitiveType="unsignedLong"/>
      <property name="STATUS_DELETED" primitiveType="unsignedLong"/>
    </constructor>

    <constructor name="Element" origin="dom2core" className="Element">
      <property name="prototype" readOnly="silent"><note>Prototype object for Element class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="Document" origin="dom2core" className="Document">
      <property name="prototype" readOnly="silent"><note>Prototype object for Document class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="DocumentFragment" origin="dom2core" className="DocumentFragment">
      <property name="prototype" readOnly="silent"><note>Prototype object for DocumentFragment class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="Attr" origin="dom2core" className="Attr">
      <property name="prototype" readOnly="silent"><note>Prototype object for Attr class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="Text" origin="dom2core" className="Text">
      <property name="prototype" readOnly="silent"><note>Prototype object for Text class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="Comment" origin="dom2core" className="Comment">
      <property name="prototype" readOnly="silent"><note>Prototype object for Comment class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="CDATASection" origin="dom2core" className="CDATASection">
      <property name="prototype" readOnly="silent"><note>Prototype object for CDATASection class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="DocumentType" origin="dom2core" className="DocumentType">
      <property name="prototype" readOnly="silent"><note>Prototype object for DocumentType class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="Notation" origin="dom2core" className="Notation">
      <property name="prototype" readOnly="silent"><note>Prototype object for Notation class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="Entity" origin="dom2core" className="Entity">
      <property name="prototype" readOnly="silent"><note>Prototype object for Entity class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="EntityReference" origin="dom2core" className="EntityReference">
      <property name="prototype" readOnly="silent"><note>Prototype object for EntityReference class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="ProcessingInstruction" origin="dom2core" className="ProcessingInstruction">
      <property name="prototype" readOnly="silent"><note>Prototype object for ProcessingInstruction class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="NodeList" origin="dom2core" className="NodeList">
      <property name="prototype" readOnly="silent"><note>Prototype object for NodeList class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="NamedNodeMap" origin="dom2core" className="NamedNodeMap">
      <property name="prototype" readOnly="silent"><note>Prototype object for NamedNodeMap class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLCollection" origin="dom2html" className="HTMLCollection">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLCollection class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLOptionsCollection" origin="dom2html" className="HTMLOptionsCollection">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLOptionsCollection class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLDocument" origin="dom2html" className="HTMLDocument">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLDocument class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLElement" origin="dom2html" className="HTMLElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLHtmlElement" origin="dom2html" className="HTMLHtmlElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLHtmlElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLHeadElement" origin="dom2html" className="HTMLHeadElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLHeadElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLLinkElement" origin="dom2html" className="HTMLLinkElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLLinkElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTitleElement" origin="dom2html" className="HTMLTitleElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTitleElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLMetaElement" origin="dom2html" className="HTMLMetaElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLMetaElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLBaseElement" origin="dom2html" className="HTMLBaseElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLBaseElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLIsIndexElement" origin="dom2html" className="HTMLIsIndexElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLIsIndexElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLStyleElement" origin="dom2html" className="HTMLStyleElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLStyleElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLBodyElement" origin="dom2html" className="HTMLBodyElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLBodyElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLFormElement" origin="dom2html" className="HTMLFormElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLFormElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLSelectElement" origin="dom2html" className="HTMLSelectElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLSelectElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLOptGroupElement" origin="dom2html" className="HTMLOptGroupElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLOptGroupElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLOptionElement" origin="dom2html" className="HTMLOptionElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLOptionElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLInputElement" origin="dom2html" className="HTMLInputElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLInputElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTextAreaElement" origin="dom2html" className="HTMLTextAreaElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTextAreaElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLButtonElement" origin="dom2html" className="HTMLButtonElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLButtonElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLLabelElement" origin="dom2html" className="HTMLLabelElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLLabelElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLFieldSetElement" origin="dom2html" className="HTMLFieldSetElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLFieldSetElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLLegendElement" origin="dom2html" className="HTMLLegendElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLLegendElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLOutputElement" origin="webforms2" className="HTMLOutputElement">
      &req-webforms2;

      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLOutputElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLUListElement" origin="dom2html" className="HTMLUListElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLUListElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLOListElement" origin="dom2html" className="HTMLOListElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLOListElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLDListElement" origin="dom2html" className="HTMLDListElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLDListElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLDirectoryElement" origin="dom2html" className="HTMLDirectoryElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLDirectoryElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLMenuElement" origin="dom2html" className="HTMLMenuElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLMenuElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLLIElement" origin="dom2html" className="HTMLLIElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLLIElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLDivElement" origin="dom2html" className="HTMLDivElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLDivElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLParagraphElement" origin="dom2html" className="HTMLParagraphElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLParagraphElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLHeadingElement" origin="dom2html" className="HTMLHeadingElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLHeadingElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLQuoteElement" origin="dom2html" className="HTMLQuoteElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLQuoteElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLPreElement" origin="dom2html" className="HTMLPreElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLPreElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLBRElement" origin="dom2html" className="HTMLBRElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLBRElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLBaseFontElement" origin="dom2html" className="HTMLBaseFontElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLBaseFontElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLFontElement" origin="dom2html" className="HTMLFontElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLFontElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLHRElement" origin="dom2html" className="HTMLHRElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLHRElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLModElement" origin="dom2html" className="HTMLModElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLModElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLAnchorElement" origin="dom2html" className="HTMLAnchorElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLAnchorElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLImageElement" origin="dom2html" className="HTMLImageElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLImageElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLObjectElement" origin="dom2html" className="HTMLObjectElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLObjectElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLParamElement" origin="dom2html" className="HTMLParamElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLParamElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLAppletElement" origin="dom2html" className="HTMLAppletElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLAppletElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLEmbedElement" origin="dom2html" className="HTMLEmbedElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLEmbedElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLMapElement" origin="dom2html" className="HTMLMapElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLMapElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLAreaElement" origin="dom2html" className="HTMLAreaElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLAreaElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLScriptElement" origin="dom2html" className="HTMLScriptElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLScriptElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTableElement" origin="dom2html" className="HTMLTableElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTableElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTableCaptionElement" origin="dom2html" className="HTMLTableCaptionElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTableCaptionElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTableColElement" origin="dom2html" className="HTMLTableColElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTableColElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTableSectionElement" origin="dom2html" className="HTMLTableSectionElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTableSectionElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTableRowElement" origin="dom2html" className="HTMLTableRowElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTableRowElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLTableCellElement" origin="dom2html" className="HTMLTableCellElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLTableCellElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLFrameSetElement" origin="dom2html" className="HTMLFrameSetElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLFrameSetElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLFrameElement" origin="dom2html" className="HTMLFrameElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLFrameElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="HTMLIFrameElement" origin="dom2html" className="HTMLIFrameElement">
      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLIFrameElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <object name="NodeFilter" origin="dom2travrange" supported="optional" className="NodeFilter">
      <!-- Complete. -->

      &plain-object;
      &req-dom2travrange;

      <property name="FILTER_ACCEPT" primitiveType="unsignedLong"/>
      <property name="FILTER_REJECT" primitiveType="unsignedLong"/>
      <property name="FILTER_SKIP" primitiveType="unsignedLong"/>

      <property name="SHOW_ALL" primitiveType="unsignedLong"/>
      <property name="SHOW_ELEMENT" primitiveType="unsignedLong"/>
      <property name="SHOW_ATTRIBUTE" primitiveType="unsignedLong"/>
      <property name="SHOW_TEXT" primitiveType="unsignedLong"/>
      <property name="SHOW_CDATA_SECTION" primitiveType="unsignedLong"/>
      <property name="SHOW_ENTITY_REFERENCE" primitiveType="unsignedLong"/>
      <property name="SHOW_ENTITY" primitiveType="unsignedLong"/>
      <property name="SHOW_PROCESSING_INSTRUCTION" primitiveType="unsignedLong"/>
      <property name="SHOW_COMMENT" primitiveType="unsignedLong"/>
      <property name="SHOW_DOCUMENT" primitiveType="unsignedLong"/>
      <property name="SHOW_DOCUMENT_TYPE" primitiveType="unsignedLong"/>
      <property name="SHOW_DOCUMENT_FRAGMENT" primitiveType="unsignedLong"/>
      <property name="SHOW_NOTATION" primitiveType="unsignedLong"/>
    </object>

    <constructor name="Range" origin="dom2travrange" supported="optional" className="Range">
      <!-- Complete. -->

      &req-dom2travrange;

      <property name="START_TO_START" primitiveType="unsignedLong"/>
      <property name="START_TO_END" primitiveType="unsignedLong"/>
      <property name="END_TO_END" primitiveType="unsignedLong"/>
      <property name="END_TO_START" primitiveType="unsignedLong"/>

      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLIFrameElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <object name="RangeException" origin="dom2travrange" supported="optional" className="RangeException">
      <!-- Complete. -->

      &plain-object;
      &req-dom2travrange;

      <property name="BAD_BOUNDARYPOINTS_ERR" primitiveType="unsignedLong"/>
      <property name="INVALID_NODE_TYPE_ERR" primitiveType="unsignedLong"/>
    </object>

    <constructor name="Event" origin="dom2events" className="Event">
      <!-- Complete. -->

      <property name="CAPTURING_PHASE" primitiveType="unsignedLong"/>
      <property name="AT_TARGET" primitiveType="unsignedLong"/>
      <property name="BUBBLING_PHASE" primitiveType="unsignedLong"/>

      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLIFrameElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <object name="MutationEvent" origin="dom2events" supported="optional" className="MutationEvent">
      <!-- Complete. -->

      &req-dom2mutationevents;

      <property name="MODIFICATION" primitiveType="unsignedLong"/>
      <property name="ADDITION" primitiveType="unsignedLong"/>
      <property name="REMOVAL" primitiveType="unsignedLong"/>

      <property name="prototype" readOnly="silent"><note>Prototype object for HTMLIFrameElement class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </object>

    <object name="DOMException" origin="dom2core" className="DOMException">
      <!-- Complete. -->

      &plain-object;

      <property name="INDEX_SIZE_ERR" primitiveType="unsignedLong"/>
      <property name="DOMSTRING_SIZE_ERR" primitiveType="unsignedLong"/>
      <property name="HIERARCHY_REQUEST_ERR" primitiveType="unsignedLong"/>
      <property name="WRONG_DOCUMENT_ERR" primitiveType="unsignedLong"/>
      <property name="INVALID_CHARACTER_ERR" primitiveType="unsignedLong"/>
      <property name="NO_DATA_ALLOWED_ERR" primitiveType="unsignedLong"/>
      <property name="NO_MODIFICATION_ALLOWED_ERR" primitiveType="unsignedLong"/>
      <property name="NOT_FOUND_ERR" primitiveType="unsignedLong"/>
      <property name="NOT_SUPPORTED_ERR" primitiveType="unsignedLong"/>
      <property name="INUSE_ATTRIBUTE_ERR" primitiveType="unsignedLong"/>
      <property name="INVALID_STATE_ERR" primitiveType="unsignedLong"/>
      <property name="SYNTAX_ERR" primitiveType="unsignedLong"/>
      <property name="INVALID_MODIFICATION_ERR" primitiveType="unsignedLong"/>
      <property name="NAMESPACE_ERR" primitiveType="unsignedLong"/>
      <property name="INVALID_ACCESS_ERR" primitiveType="unsignedLong"/>
      <property name="VALIDATION_ERR" primitiveType="unsignedLong" origin="dom3core"/>
      <property name="TYPE_MISMATCH_ERR" primitiveType="unsignedLong" origin="dom3core"/>
    </object>

    <object name="DOMError" origin="dom3core" supported="optional" className="DOMError">
      <!-- Complete. -->

      &plain-object;
      &req-dom3core;

      <property name="SEVERITY_WARNING" primitiveType="unsignedLong"/>
      <property name="SEVERITY_ERROR" primitiveType="unsignedLong"/>
      <property name="SEVERITY_FATAL_ERROR" primitiveType="unsignedLong"/>
    </object>

    <object name="LSException" origin="dom3loadsave" supported="optional" className="LSException">
      <!-- Complete. -->

      &plain-object;
      &req-dom3loadsave;

      <property name="PARSE_ERR" primitiveType="unsignedLong"/>
      <property name="SERIALIZE_ERR" primitiveType="unsignedLong"/>
    </object>

    <constructor name="LSParser" origin="dom3loadsave" supported="optional" className="LSParser">
      <!-- Complete. -->

      &plain-object;
      &req-dom3loadsave;

      <property name="ACTION_APPEND_AS_CHILDREN" primitiveType="unsignedLong"/>
      <property name="ACTION_REPLACE_CHILDREN" primitiveType="unsignedLong"/>
      <property name="ACTION_INSERT_BEFORE" primitiveType="unsignedLong"/>
      <property name="ACTION_INSERT_AFTER" primitiveType="unsignedLong"/>
      <property name="ACTION_REPLACE" primitiveType="unsignedLong"/>

      <property name="prototype" readOnly="silent"><note>Prototype object for LSParser class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="DOMParser" origin="firefox" supported="optional" constructedType="DOMParser">
      &req-dom3loadsave;
    </constructor>

    <object name="LSParserFilter" origin="dom3loadsave" supported="optional" className="LSParserFilter">
      <!-- Complete. -->

      &plain-object;
      &req-dom3loadsave;

      <property name="FILTER_ACCEPT" primitiveType="unsignedLong"/>
      <property name="FILTER_REJECT" primitiveType="unsignedLong"/>
      <property name="FILTER_SKIP" primitiveType="unsignedLong"/>
      <property name="FILTER_INTERRUPT" primitiveType="unsignedLong"/>
    </object>

    <object name="DOMImplementationLS" origin="dom3loadsave" supported="optional" className="DOMImplementationLS">
      <!-- Complete. -->

      &plain-object;
      &req-dom3loadsave;

      <property name="MODE_SYNCHRONOUS" primitiveType="unsignedLong"/>
      <property name="MODE_ASYNCHRONOUS" primitiveType="unsignedLong"/>
    </object>

    <constructor name="XMLHttpRequest" origin="webapps1" supported="optional" constructedType="XMLHttpRequest">
      &req-domhttp;
    </constructor>

    <constructor name="XMLSerializer" origin="firefox" supported="optional" constructedType="XMLSerializer">
      &req-dom3loadsave;
    </constructor>

    <constructor name="XPathExpression" origin="dom3xpath" supported="optional" className="XPathExpression">
      &req-dom3xpath;
      <property name="prototype" readOnly="silent"><note>Prototype object for XPathExpression class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="XPathNSResolver" origin="dom3xpath" supported="optional" className="XPathNSResolver">
      &req-dom3xpath;
      <property name="prototype" readOnly="silent"><note>Prototype object for XPathNSResolver class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="XPathNamespace" origin="dom3xpath" supported="optional" className="XPathNamespace">
      &req-dom3xpath;
      <property name="prototype" readOnly="silent"><note>Prototype object for XPathNamespace class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="XPathResult" origin="dom3xpath" supported="optional" className="XPathResult">
      &req-dom3xpath;
      <property name="prototype" readOnly="silent"><note>Prototype object for XPathResult class.</note></property>
      <exception type="DOMException" on="construct"><note type="limitation">Cannot be used to construct objects.</note></exception>
    </constructor>

    <constructor name="XSLTProcessor" origin="firefox" supported="optional" className="XSLTProcessor" constructedType="XSLTProcessor">
      &req-dom3xpath;
      <property name="prototype" readOnly="silent"><note>Prototype object for XSLTProcessor class.</note></property>
    </constructor>

    <object name="RepetitionElement" origin="webforms2" supported="optional" className="RepetitionElement">
      &req-webforms2;

      <property name="REPETITION_NONE" primitiveType="unsignedLong"/>
      <property name="REPETITION_TEMPLATE" primitiveType="unsignedLong"/>
      <property name="REPETITION_BLOCK" primitiveType="unsignedLong"/>
    </object>

    <object name="opera" origin="opera" className="Opera">
      <interface name="EventTarget" origin="dom2events" supported="optional">
        &req-userjs;

        <method name="dispatchEvent" supported="no"/>
        <method name="addEventListener"/>
        <method name="removeEventListener"/>
        <method name="addEventListenerNS" supported="optional">
          &req-dom3events;
        </method>
        <method name="removeEventListenerNS" supported="optional">
          &req-dom3events;
        </method>
      </interface>

      <method name="defineMagicFunction" supported="optional">&req-userjs;</method>
      <method name="defineMagicVariable" supported="optional">&req-userjs;</method>

      <!-- Properties and methods for internal debugging purposes. -->
      <property name="debugMode" primitiveType="boolean" supported="optional">&req-debug;</property>
      <property name="hardToGet" supported="optional">&req-debug;</property>
      <property name="putWillConvert" supported="optional">&req-debug;</property>
      <method name="hardToCall" supported="optional">&req-debug;</method>
      <method name="delay" supported="optional">&req-debug;</method>
      <method name="asyncEval" supported="optional">&req-debug;</method>
      <method name="asyncCallMethod" supported="optional">&req-debug;</method>
      <method name="asyncGetSlot" supported="optional">&req-debug;&req-asyncslotops;</method>
      <method name="asyncSetSlot" supported="optional">&req-debug;&req-asyncslotops;</method>
      <method name="cancelThisThread" supported="optional">&req-debug;</method>

      <method name="serializeToXML" supported="optional">&req-debug;</method>

      <object name="macros" supported="optional">
        &req-debug;

        <property name="DOM2_MUTATION_EVENTS" primitiveType="boolean" supported="optional">
          <macro name="DOM2_MUTATION_EVENTS"/>
        </property>
        <property name="DOM2_TRAVERSAL" primitiveType="boolean" supported="optional">
          <macro name="DOM2_TRAVERSAL"/>
        </property>
        <property name="DOM2_RANGE" primitiveType="boolean" supported="optional">
          <macro name="DOM2_RANGE"/>
        </property>
        <property name="DOM3_CORE" primitiveType="boolean" supported="optional">
          <macro name="DOM3_CORE"/>
        </property>
        <property name="DOM3_EVENTS" primitiveType="boolean" supported="optional">
          <macro name="DOM3_EVENTS"/>
        </property>
        <property name="DOM3_XPATH" primitiveType="boolean" supported="optional">
          <macro name="DOM2_MUTATION_EVENTS"/>
        </property>
        <property name="DOM3_LOAD" primitiveType="boolean" supported="optional">
          <macro name="DOM3_LOAD"/>
        </property>
        <property name="DOM3_SAVE" primitiveType="boolean" supported="optional">
          <macro name="DOM3_SAVE"/>
        </property>
        <property name="DOM_HTTP_SUPPORT" primitiveType="boolean" supported="optional">
          <macro name="DOM_HTTP_SUPPORT"/>
        </property>
        <property name="DOM_SUPPORT_ENTITY" primitiveType="boolean" supported="optional">
          <macro name="DOM_SUPPORT_ENTITY"/>
        </property>
        <property name="DOM_SUPPORT_NOTATION" primitiveType="boolean" supported="optional">
          <macro name="DOM_SUPPORT_NOTATION"/>
        </property>
        <property name="DOM_SELECTION_SUPPORT" primitiveType="boolean" supported="optional">
          <macro name="DOM_SELECTION_SUPPORT"/>
        </property>
        <property name="USER_JAVASCRIPT" primitiveType="boolean" supported="optional">
          <macro name="USER_JAVASCRIPT"/>
        </property>
      </object>

      <object name="features" supported="optional">
        &req-debug;

        <property name="FEATURE_DOM2_MUTATION_EVENTS" primitiveType="boolean" supported="optional">
          <feature name="FEATURE_DOM2_MUTATION_EVENTS"/>
        </property>
        <property name="FEATURE_DOM2_TRAV_AND_RANGE" primitiveType="boolean" supported="optional">
          <feature name="FEATURE_DOM2_TRAV_AND_RANGE"/>
        </property>
        <property name="FEATURE_DOM3_XPATH" primitiveType="boolean" supported="optional">
          <feature name="FEATURE_DOM3_XPATH"/>
        </property>
        <property name="FEATURE_DOM3_LOAD_SAVE" primitiveType="boolean" supported="optional">
          <feature name="FEATURE_DOM3_LOAD_SAVE"/>
        </property>
        <property name="FEATURE_DOM_HTTP" primitiveType="boolean" supported="optional">
          <feature name="FEATURE_DOM_HTTP"/>
        </property>
        <property name="FEATURE_USER_JAVASCRIPT" primitiveType="boolean" supported="optional">
          <feature name="FEATURE_USER_JAVASCRIPT"/>
        </property>
      </object>

	  <object name="feeds" supported="optional" className="WebFeeds">
	    <method name="loadFeed"/>
	    <method name="subscribeFeed"/>
	    <method name="unSubscribeFeed"/>
	    <method name="updateFeeds"/>
	    <property name="firstFeed" classType="Feed" readOnly="yes"/>
	    <property name="maxSize" primitiveType="unsignedLong"/>
	    <property name="maxAge" primitiveType="unsignedLong"/>
	    <property name="maxEntries" primitiveType="unsignedLong"/>
	    <property name="updateInteval" primitiveType="unsignedLong"/>
	    <property name="showImages" primitiveType="boolean"/>
	  </object>
    </object>

    <constructor name="Image" origin="js13" className="Image" constructedType="HTMLImageElement"/>
    <constructor name="Option" origin="js13" className="Option" constructedType="HTMLOptionElement"/>

    <object name="frames" origin="js13" className="WindowCollection">
      <collection elementType="Window"/>

      <property name="length" primitiveType="unsignedLong"/>
      <property name="document" classType="Document" origin="msie"><note>window.frames.document == window.document</note></property>
      <property name="location" classType="Location" origin="msie"><note>window.frames.location == window.location</note></property>
      <property name="name" primitiveType="string" origin="msie"><note>window.frames.name == window.name</note></property>
    </object>

    <object name="history" origin="js13" className="History">
      <!-- Complete. -->

      <property name="current" primitiveType="string" readOnly="signalling"/>
      <property name="length" primitiveType="length" readOnly="signalling"/>
      <property name="previous" supported="no"><note>Not supported for privacy reasons.</note></property>
      <property name="next" supported="no"><note>Not supported for privacy reasons.</note></property>

      <method name="back"/>
      <method name="forward"/>
      <method name="go"/>
    </object>

    <object name="location" origin="js13" className="Location">
      <!-- Complete. -->

      <property name="hash" primitiveType="string"/>
      <property name="host" primitiveType="string" readOnly="silent"/>
      <property name="hostname" primitiveType="string" readOnly="silent"/>
      <property name="href" primitiveType="string"/>
      <property name="pathname" primitiveType="string"/>
      <property name="port" primitiveType="unsignedLong" readOnly="silent"/>
      <property name="protocol" primitiveType="string" readOnly="silent"/>
      <property name="search" primitiveType="string"/>

      <method name="reload"/>
      <method name="replace"/>
      <method name="toString"><note>Returns value of href property.</note></method>
      <method name="valueOf"><note>Returns value of href property.</note></method>
      <method name="assign" origin="msie"/>
    </object>

    <object name="navigator" origin="js13" className="Navigator">
      <!-- Complete. -->

      <property name="appName" primitiveType="string"><note>Value depends on current "Identify as" setting.</note></property>
      <property name="appCodeName" primitiveType="string"/>
      <property name="appVersion" primitiveType="string"><note>Value depends on current "Identify as" setting.</note></property>
      <property name="appMinorVersion" primitiveType="string" origin="msie"><note>Returns empty string.</note></property>
      <property name="userAgent" primitiveType="string"><note>Value depends on current "Identify as" setting.</note></property>
      <property name="language" primitiveType="string"/>
      <property name="userLanguage" primitiveType="string" origin="msie"><note>Returns value of language property.</note></property>
      <property name="browserLanguage" primitiveType="string" origin="msie"><note>Returns value of language property.</note></property>
      <property name="platform" primitiveType="string"/>
      <property name="cookieEnabled" primitiveType="boolean" origin="msie"/>

      <object name="plugins" className="PluginArray">
        <collection elementType="Plugin"/>
        <method name="refresh"><note type="limitation">Does nothing.</note></method>
      </object>

      <object name="mimeTypes" className="MimeTypes">
        <collection elementType="MimeType"/>
      </object>

      <method name="javaEnabled"/>
      <method name="taintEnabled"><note type="limitation">Always returns false.</note></method>

      <!-- Unsupported msie stuff -->
      <property name="cpuClass" origin="msie" supported="no"/>
      <property name="onLine" origin="msie" supported="no"/>
      <property name="systemLanguage" origin="msie" supported="no"/>

      <!-- Unsupported js13 stuff -->
      <method name="preference" supported="no"/>
      <method name="savePreference" supported="no"/>
    </object>

    <object name="screen" origin="js13" className="Screen">
      <!-- Complete. -->

      <property name="height" primitiveType="unsignedLong" readOnly="signalling"/>
      <property name="width" primitiveType="unsignedLong" readOnly="signalling"/>
      <property name="availHeight" primitiveType="unsignedLong" readOnly="signalling"/>
      <property name="availWidth" primitiveType="unsignedLong" readOnly="signalling"/>
      <property name="colorDepth" primitiveType="unsignedLong" readOnly="signalling"/>
      <property name="pixelDepth" primitiveType="unsignedLong" readOnly="signalling"/>

      <!-- Unsupported msie stuff -->
      <property name="bufferDepth" origin="msie" supported="no"/>
      <property name="deviceXDPI" origin="msie" supported="no"/>
      <property name="deviceYDPI" origin="msie" supported="no"/>
      <property name="fontSmoothingEnabled" origin="msie" supported="no"/>
      <property name="logicalXDPI" origin="msie" supported="no"/>
      <property name="logicalYDPI" origin="msie" supported="no"/>
      <property name="updateInterval" origin="msie" supported="no"/>
    </object>

    <!-- OGP (Opera Gaming Platform?) stuff -->
    <constructor name="DataStorage" origin="opera" supported="optional" className="DataStorage" contructedType="DataStorage">&req-ogp;</constructor>
    <constructor name="EventLoop" origin="opera" supported="optional" className="EventLoop" contructedType="EventLoop">
      &req-ogp;

      <property name="EVENT" primitiveType="unsignedLong"/>
      <property name="TIMER" primitiveType="unsignedLong"/>
      <property name="STOPPED" primitiveType="unsignedLong"/>
    </constructor>
    <constructor name="Audio" origin="opera" supported="optional" className="Audio" contructedType="Audio">&req-ogp;</constructor>
    <constructor name="Pixmap" origin="opera" supported="optional" className="Pixmap" contructedType="Pixmap">&req-ogp;</constructor>
    <constructor name="Collision" origin="opera" supported="optional" className="Collision" contructedType="Collision">&req-ogp;</constructor>
    <constructor name="Connection" origin="opera" supported="optional" className="Connection" contructedType="Connection">&req-ogp;</constructor>

    <!-- Voice XML stuff -->
    <constructor name="VXMLAudioRecording" origin="opera" supported="optional" className="VXMLAudioRecording" contructedType="VXMLAudioRecording">&req-vxml;</constructor>
  </object>

  <class name="Plugin" origin="js13" className="Plugin">
    <property name="description"/>
    <property name="filename"/>
    <property name="name"/>

    <collection elementType="MimeType"/>
  </class>

  <class name="MimeType" origin="js13" className="MimeType">
    <property name="description"/>
    <property name="suffixes"/>
    <property name="type"/>
    <property name="enabledPlugin"/>
  </class>

  <class name="VXMLAudioRecording" origin="opera" className="VXMLAudioRecording">
    &req-vxml;
    <property name="handle" primitiveType="string" readOnly="silent"/>
  </class>

  <class name="Node" origin="dom2core">
    <property name="nodeName" primitiveType="string" readOnly="yes"/>
    <property name="nodeValue" primitiveType="string"/>
    <property name="nodeType" primitiveType="unsignedLong" readOnly="yes"/>
    <property name="parentNode" classType="Node" readOnly="yes"/>
    <property name="childNodes" classType="NodeList" readOnly="yes"/>
    <property name="firstChild" classType="Node" readOnly="yes"/>
    <property name="lastChild" classType="Node" readOnly="yes"/>
    <property name="previousSibling" classType="Node" readOnly="yes"/>
    <property name="nextSibling" classType="Node" readOnly="yes"/>
    <property name="attributes" classType="NamedNodeMap" readOnly="yes"/>
    <property name="ownerDocument" classType="Document" readOnly="yes"/>
    <property name="namespaceURI" primitiveType="string" readOnly="yes"/>
    <property name="prefix" primitiveType="string">
      <note type="limitation">Writing has no effect.</note>

      <exception name="INVALID_CHARACTER_ERR" type="DOMException" supported="no"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException" supported="no"/>
      <exception name="NAMESPACE_ERR" type="DOMException" supported="no"/>
    </property>
    <property name="localName" primitiveType="string" readOnly="yes"/>

    <method name="insertBefore">
      <exception name="HIERARCHY_REQUEST_ERR" type="DOMException"/>
      <exception name="WRONG_DOCUMENT_ERR" type="DOMException"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException"/>
      <exception name="NOT_FOUND_ERR" type="DOMException"/>
    </method>
    <method name="replaceChild">
      <exception name="HIERARCHY_REQUEST_ERR" type="DOMException"/>
      <exception name="WRONG_DOCUMENT_ERR" type="DOMException"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException"/>
      <exception name="NOT_FOUND_ERR" type="DOMException"/>
    </method>
    <method name="removeChild">
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException"/>
      <exception name="NOT_FOUND_ERR" type="DOMException"/>
    </method>
    <method name="replaceChild">
      <exception name="HIERARCHY_REQUEST_ERR" type="DOMException"/>
      <exception name="WRONG_DOCUMENT_ERR" type="DOMException"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException"/>
      <exception name="NOT_FOUND_ERR" type="DOMException"/>
    </method>
    <method name="hasChildNodes"/>
    <method name="cloneNode"/>
    <method name="normalize"/>
    <method name="isSupported"/>
    <method name="hasAttributes"/>

    <interface name="EventTarget" origin="dom2events">
      <method name="dispatchEvent"/>
      <method name="addEventListener"/>
      <method name="removeEventListener"/>
      <method name="addEventListenerNS" supported="optional">&req-dom3events;</method>
      <method name="removeEventListenerNS" supported="optional">&req-dom3events;</method>
      <method name="willTriggerNS" supported="optional">
        <note type="limitation">Always throws NOT_SUPPORTED_ERR.</note>
        &req-dom3events;
      </method>
      <method name="hasEventListenerNS" supported="optional">
        <note type="limitation">Always returns undefined.</note>
        &req-dom3events;
      </method>
    </interface>

    <!-- DOM Level 3 stuff -->
    <property name="baseURI" origin="dom3core" supported="no"/>
    <property name="textContent" origin="dom3core" supported="no"/>
    <property name="getFeature" origin="dom3core" supported="optional">&req-dom3core;</property>
    <method name="lookupPrefix" origin="dom3core" supported="optional">&req-dom3core;</method>
    <method name="isDefaultNamespace" origin="dom3core" supported="optional">&req-dom3core;</method>
    <method name="lookupNamespaceURI" origin="dom3core" supported="optional">&req-dom3core;</method>

    <!-- MSIE stuff -->
    <property name="document" origin="msie"/>
    <method name="attachEvent" origin="msie"/>
    <method name="detachEvent" origin="msie"/>
  </class>

  <class name="Element" origin="dom2core" baseClass="Node">
    <property name="tagName" readOnly="signalling"/>

    <method name="getAttribute"/>
    <method name="setAttribute"/>
    <method name="removeAttribute"/>
    <method name="getAttributeNode"/>
    <method name="setAttributeNode"/>
    <method name="removeAttributeNode"/>
    <method name="getElementsByTagName"/>
    <method name="getAttributeNS"/>
    <method name="setAttributeNS"/>
    <method name="removeAttributeNS"/>
    <method name="getAttributeNodeNS"/>
    <method name="setAttributeNodeNS"/>
    <method name="getElementsByTagName"/>
    <method name="hasAttribute"/>
    <method name="hasAttributeNS"/>

    <!-- DOM Level 3 stuff -->
    <property name="schemaTypeInfo" origin="dom3core" supported="no"/>
    <property name="setIdAttribute" origin="dom3core" supported="no"/>
    <property name="setIdAttributeNS" origin="dom3core" supported="no"/>
    <property name="setIdAttributeNode" origin="dom3core" supported="no"/>

    <!-- MSIE stuff -->
    <property name="all" origin="msie" classType="HTMLCollection">
      <note type="description">Collection of all descendant Element nodes.</note>
    </property>
    <property name="children" origin="msie" classType="HTMLCollection">
      <note type="description">Collection of all child Element nodes.</note>
    </property>
    <property name="offsetLeft" primitiveType="unsignedLong" origin="msie"/>
    <property name="offsetTop" primitiveType="unsignedLong" origin="msie"/>
    <property name="offsetWidth" primitiveType="unsignedLong" origin="msie"/>
    <property name="offsetHeight" primitiveType="unsignedLong" origin="msie"/>
    <property name="offsetParent" classType="Element" origin="msie"/>
    <property name="clientLeft" primitiveType="unsignedLong" origin="msie"/>
    <property name="clientTop" primitiveType="unsignedLong" origin="msie"/>
    <property name="clientWidth" primitiveType="unsignedLong" origin="msie"/>
    <property name="clientHeight" primitiveType="unsignedLong" origin="msie"/>
    <property name="scrollLeft" primitiveType="unsignedLong" origin="msie"/>
    <property name="scrollTop" primitiveType="unsignedLong" origin="msie"/>
    <property name="scrollWidth" primitiveType="unsignedLong" origin="msie"/>
    <property name="scrollHeight" primitiveType="unsignedLong" origin="msie"/>

    <method name="contains" primitiveType="boolean" origin="msie"/>
    <method name="scrollIntoView" origin="msie"/>
  </class>

  <class name="Attr" origin="dom2core" baseClass="Node">
    <property name="name" primitiveType="string" readOnly="signalling"/>
    <property name="specified" primitiveType="boolean" readOnly="signalling"/>
    <property name="value" primitiveType="string"/>
    <property name="ownerElement" classType="Element"/>

    <!-- DOM Level 3 stuff -->
    <property name="schemaTypeInfo" origin="dom3core" supported="no"/>
    <property name="isId" origin="dom3core" supported="no"/>
  </class>

  <class name="CharacterData" origin="dom2core" baseClass="Node">
    <property name="data" primitiveType="string"/>
    <property name="length" primitiveType="unsignedLong" readOnly="signalling"/>

    <method name="substringData">
      <exception name="INDEX_SIZE_ERR" type="DOMException"/>
      <exception name="DOMSTRING_SIZE_ERR" type="DOMException" supported="no"/>
    </method>
    <method name="appendData">
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException" supported="no"/>
    </method>
    <method name="insertData">
      <exception name="INDEX_SIZE_ERR" type="DOMException"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException" supported="no"/>
    </method>
    <method name="deleteData">
      <exception name="INDEX_SIZE_ERR" type="DOMException"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException" supported="no"/>
    </method>
    <method name="replaceData">
      <exception name="INDEX_SIZE_ERR" type="DOMException"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException" supported="no"/>
    </method>
  </class>

  <class name="Text" origin="dom2core" baseClass="CharacterData">
    <method name="splitText">
      <exception name="INDEX_SIZE_ERR" type="DOMException"/>
      <exception name="NO_MODIFICATION_ALLOWED_ERR" type="DOMException" supported="no"/>
    </method>

    <!-- DOM Level 3 stuff -->
    <property name="isElementContentWhitespace" primitiveType="boolean" origin="dom3core" supported="no"/>
    <property name="wholeText" primitiveType="string" origin="dom3core" supported="no"/>
    <method name="replaceWholeText" origin="dom3core" supported="no"/>
  </class>

  <class name="CDATASection" origin="dom2core" baseClass="Text"/>

  <class name="EntityReference" origin="dom2core" baseClass="Node" supported="no"/>

  <class name="Entity" origin="dom2core" baseClass="Node" supported="optional">
    <macro name="DOM_SUPPORT_ENTITY"/>

    <property name="publicId" primitiveType="string" readOnly="signalling"/>
    <property name="systemId" primitiveType="string" readOnly="signalling"/>
    <property name="notationName" primitiveType="string" readOnly="signalling"/>

    <!-- DOM Level 3 stuff -->
    <property name="inputEncoding" primitiveType="string" origin="dom3core" supported="no"/>
    <property name="xmltEncoding" primitiveType="string" origin="dom3core" supported="no"/>
    <property name="xmlVersion" primitiveType="string" origin="dom3core" supported="no"/>
  </class>

  <class name="ProcessingInstruction" origin="dom2core" baseClass="Node">
    <property name="target" primitiveType="string"/>
    <property name="data" primitiveType="string" readOnly="signalling"/>
  </class>

  <class name="Comment" origin="dom2core" baseClass="CharacterData"/>

  <class name="Document" origin="dom2core" baseClass="Node">
    <specification origin="dom2core" href="http://www.w3.org/TR/DOM-Level-2-Core/core.html#i-Document"/>
    <specification origin="dom3core" href="http://www.w3.org/TR/DOM-Level-3-Core/core.html#i-Document"/>

    <property name="documentElement" readOnly="yes"/>
    <property name="doctype" readOnly="yes"/>
    <property name="implementation" readOnly="yes"/>
    <method name="createDocumentFragment"/>
    <method name="createProcessingInstruction"/>
    <method name="createEntityReference" supported="no"/>
    <method name="createElement">
      <exception name="INVALID_CHARACTER_ERR" type="DOMException" supported="no"/>
    </method>
    <method name="createElementNS">
      <exception name="INVALID_CHARACTER_ERR" type="DOMException" supported="no"/>
      <exception name="NAMESPACE_ERR" type="DOMException">
        <note type="limitation">Only thrown when there is a prefix but no namespace URI.</note>
      </exception>
      <exception name="NOT_SUPPORTED" origin="dom3core">
        <note type="description">Never thrown since the feature "XML" is supported.</note>
      </exception>
    </method>
    <method name="createAttribute">
      <exception name="INVALID_CHARACTER_ERR" type="DOMException" supported="no"/>
    </method>
    <method name="createAttributeNS">
      <exception name="INVALID_CHARACTER_ERR" type="DOMException" supported="no"/>
      <exception name="NAMESPACE_ERR" type="DOMException">
        <note type="limitation">Only thrown when there is a prefix but no namespace URI.</note>
      </exception>
      <exception name="NOT_SUPPORTED" origin="dom3core">
        <note type="description">Never thrown since the feature "XML" is supported.</note>
      </exception>
    </method>
    <method name="createTextNode"/>
    <method name="createComment"/>
    <method name="createCDATASection"/>
    <method name="importNode">
      <exception name="NOT_SUPPORTED_ERR" type="DOMException"/>
      <exception name="INVALID_CHARACTER_ERR" type="DOMException" supported="no"/>
    </method>
    <method name="getElementById">
      <note type="extension" origin="msie">Also returns elements by HTML name attribute.</note>
    </method>
    <method name="getElementsByTagName"/>
    <method name="getElementsByTagNameNS"/>

    <interface name="DocumentView" origin="dom2views">
      <property name="defaultView" readOnly="yes"/>
    </interface>

    <interface name="DocumentStyle" origin="dom2style" supported="optional">
      <macro name="DOM_STYLESHEETS"/>
      <property name="styleSheets" readOnly="yes"/>
    </interface>

    <interface name="DocumentEvent" origin="dom2events">
      <method name="createEvent"/>
    </interface>

    <interface name="DocumentRange" origin="dom2travrange" supported="optional">
      &req-dom2travrange;
      <method name="createRange"/>
    </interface>

    <interface name="DocumentTraversal" origin="dom2travrange" supported="optional">
      &req-dom2travrange;
      <method name="createNodeIterator">
        <exception name="NOT_SUPPORTED" type="DOMException"/>
      </method>
      <method name="createTreeWalker">
        <exception name="NOT_SUPPORTED" type="DOMException"/>
      </method>
    </interface>

    <interface name="XPathEvaluator" origin="dom3xpath" supported="optional">
      &req-dom3xpath;
      <method name="createExpression">
        <exception name="INVALID_EXPRESSION_ERR" type="XPathException"/>
        <exception name="NAMESPACE_ERR" type="DOMException"/>
      </method>
      <method name="createNSResolver"/>
      <method name="evaluate">
        <exception name="INVALID_EXPRESSION_ERR" type="XPathException"/>
        <exception name="TYPE_ERR" type="XPathException"/>
        <exception name="NAMESPACE_ERR" type="DOMException"/>
        <exception name="WRONG_DOCUMENT_ERR" type="DOMException"/>
        <exception name="NOT_SUPPORTED_ERR" type="DOMException"/>
      </method>
    </interface>

    <!-- DOM Level 3 stuff -->
    <property name="inputEncoding" origin="dom3core" supported="no"/>
    <property name="xmlEncoding" origin="dom3core" supported="no"/>
    <property name="xmlStandalone" origin="dom3core" supported="no"/>
    <property name="xmlVersion" origin="dom3core" supported="no"/>
    <property name="strictErrorChecking" origin="dom3core" supported="no"/>
    <property name="documentURI" origin="dom3core" supported="no"/>
    <property name="domConfig" origin="dom3core" supported="optional">
      &req-dom3loadsave;
    </property>
    <method name="adoptNode" origin="dom3core" supported="no"/>
    <method name="normalizeDocument" origin="dom3core" supported="no"/>
    <method name="renameNode" origin="dom3core" supported="no"/>

    <!-- Document edit stuff -->
    <property name="designMode" origin="msie" supported="optional">
      <macro name="DOCUMENT_EDIT_SUPPORT"/>
    </property>
    <method name="execCommand" origin="msie" supported="optional">
      <macro name="DOCUMENT_EDIT_SUPPORT"/>
    </method>
    <method name="queryCommandEnabled" origin="msie" supported="optional">
      <macro name="DOCUMENT_EDIT_SUPPORT"/>
    </method>
    <method name="queryCommandState" origin="msie" supported="optional">
      <macro name="DOCUMENT_EDIT_SUPPORT"/>
    </method>
    <method name="queryCommandSupported" origin="msie" supported="optional">
      <macro name="DOCUMENT_EDIT_SUPPORT"/>
    </method>
    <method name="queryCommandValue" origin="msie" supported="optional">
      <macro name="DOCUMENT_EDIT_SUPPORT"/>
    </method>

    <!-- MSIE stuff -->
    <property name="parentWindow" origin="msie" readOnly="yes"/>
    <property name="readyState" origin="msie">
      <note type="limitation">Only values supported are "interactive" and "complete".</note>
    </property>
  </class>

  <class name="DOMParser" origin="firefox" supported="optional" className="DOMParser">
    &req-dom3loadsave;

    <method name="parseFromString"/>
  </class>

  <class name="XMLSerializer" origin="firefox" supported="optional" className="XMLSerializer">
    &req-dom3loadsave;

    <method name="serializeToString"/>
  </class>

  <class name="HTMLCollection" origin="dom2html" className="HTMLCollection">
    <collection elementType="Node"/>

    <property name="length" type="long"/>
  </class>
  <class name="MessageBox" origin="operapf1" className="MessageBox">
    <note>This class also works as a collection and can be
    indexed. The objects inside it are of the class "Message"</note>
    <property name="name" primitiveType="string"/>
    <property name="read" primitiveType="long"/>
    <property name="unread" primitiveType="long"/>
    <property name="length" primitiveType="long"/>
    <method name="item"/>
  </class>
  <class name="Message" origin="operapf1" className="Message">
    <collection name="attachments" elementType="Attachment"/>
    <property name="subject" primitiveType="string"/>
    <property name="contect" primitiveType="string"/>
    <collection name="to" elementType="Contact"/>
    <collection name="from" elementType="Contact"/>
    <collection name="cc" elementType="Contact"/>
    <collection name="bcc" elementType="Contact"/>
    <property name="read" primitiveType="boolean">
      <note>Only present if it's a received message.</note>
    </property>
    <property name="method" primitiveType="string">
      <note>Only present if it's a received message.</note>
    </property>
    <object name="messageBox" className="MessageBox"/>
    <method name="send"/>
    <method name="launchApplication"/>
  </class>
  <class name="Attachment" origin="operapf1" className="Attachment">
    <property name="type" primitiveType="string"/>
    <property name="uri" primitiveType="string"/>
    <property name="text" primitiveType="string"/>
    <property name="document">
      <note type="limitation">Always null</note>
    </property>
    <property name="image">
      <note type="limitation">Always null</note>
    </property>
  </class>
  <class name="Application" origin="operapf1" className="Application">
    <method name="focus"/>
    <method name="blur"/>
    <property name="name" primitiveType="string"/>
  </class>
  <class name="Contact" origin="operapf1" className="Contact">
    <method name="getAddress"/>
    <method name="setAddress"/>
    <method name="launchApplication"/>
    <property name="name"/>
    <collection name="contactList" elementType="Contact"/>
  </class>
  <class name="MissedCall" origin="operapf1" className="MissedCall">
    <method name="returnCall"/>
    <property name="address" primitiveType="string"/>
    <property name="timestamp" primitiveType="long"/>
    <object name="contact" className="Contact"/>
  </class>

  <class name="Feed" origin="opera" className="Feed" supported="optional">
    &req-feeds;
    <method name="unSubscribe"/>
    <method name="getProperty" primitiveType="string"/>
	<property name="firstEntry" classType="FeedEntry" readOnly="yes"/>
	<property name="maxSize" primitiveType="unsignedLong"/>
	<property name="maxAge" primitiveType="unsignedLong"/>
	<property name="maxEntries" primitiveType="unsignedLong"/>
	<property name="updateInteval" primitiveType="unsignedLong"/>
	<property name="showImages" primitiveType="boolean"/>
  </class>
  <class name="FeedEntry" origin="opera" className="FeedEntry" supported="optional">
    &req-feeds;
    <method name="getProperty" primitiveType="string"/>
	<property name="next" classType="FeedEntry" readOnly="yes"/>
	<property name="previous" classType="FeedEntry" readOnly="yes"/>
	<property name="title" classType="FeedContent" readOnly="yes"/>
	<property name="content" classType="FeedContent" readOnly="yes"/>
	<property name="id" primitiveType="unsignedLong" readOnly="yes"/>
	<property name="keep" primitiveType="boolean"/>
	<property name="author" primitiveType="string" readOnly="yes"/>
	<property name="status" primitiveType="unsignedLong"/>
  </class>
  <class name="FeedContent" origin="opera" className="FeedContent" supported="optional">
    &req-feeds;
	<property name="data" primitiveType="string" readOnly="yes"/>
	<property name="type" primitiveType="string" readOnly="yes"/>
	<property name="isPlainText" primitiveType="boolean" readOnly="yes"/>
	<property name="isBinary" primitiveType="boolean" readOnly="yes"/>
	<property name="isMarkup" primitiveType="boolean" readOnly="yes"/>
  </class>
</supported>
