[PSDK]
[reactos.git] / include / psdk / mshtml.idl
index 594c996..1a1d6dd 100644 (file)
@@ -1,5 +1,6 @@
 /*
- * Copyright 2004-2007 Jacek Caban for CodeWeavers
+ * Copyright 2004-2010 Jacek Caban for CodeWeavers
+ * Copyright 2008      Konstantin Kondratyuk (Etersoft)
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
 #include <mshtmcid.h>
 #include <olectl.h>
 
+#if defined(_MSC_VER) && (__midl >= 501)
+midl_pragma warning(disable: 2362)
+#endif
+
 import "ocidl.idl";
 import "dimm.idl";
 import "shtypes.idl";
@@ -32,6 +37,89 @@ cpp_quote("DEFINE_GUID(SID_SHTMLEditServices,   0x3050f7f9,0x98b5,0x11cf,0xbb,0x
 cpp_quote("#define SID_SHTMLWindow IID_IHTMLWindow2")
 cpp_quote("#define SID_SElementBehaviorFactory IID_IElementBehaviorFactory")
 
+cpp_quote("#ifdef WINE_NO_UNICODE_MACROS")
+cpp_quote("#undef FindText")
+cpp_quote("#endif")
+
+typedef enum {
+    POINTER_GRAVITY_Left,
+    POINTER_GRAVITY_Right,
+    POINTER_GRAVITY_Max = 2147483647
+} POINTER_GRAVITY;
+
+typedef enum {
+    CONTEXT_TYPE_None,
+    CONTEXT_TYPE_Text,
+    CONTEXT_TYPE_EnterScope,
+    CONTEXT_TYPE_ExitScope,
+    CONTEXT_TYPE_NoScope,
+    MARKUP_CONTEXT_TYPE_Max = 2147483647
+} MARKUP_CONTEXT_TYPE;
+
+typedef enum {
+    ELEM_ADJ_BeforeBegin,
+    ELEM_ADJ_AfterBegin,
+    ELEM_ADJ_BeforeEnd,
+    ELEM_ADJ_AfterEnd,
+    ELEMENT_ADJACENCY_Max = 2147483647
+} ELEMENT_ADJACENCY;
+
+typedef enum {
+    MOVEUNIT_PREVCHAR,
+    MOVEUNIT_NEXTCHAR,
+    MOVEUNIT_PREVCLUSTERBEG,
+    MOVEUNIT_NEXTCLUSTERBEG,
+    MOVEUNIT_PREVCLUSTEREND,
+    MOVEUNIT_NEXTCLUSTEREND,
+    MOVEUNIT_PREVWORDBEG,
+    MOVEUNIT_NEXTWORDBEG,
+    MOVEUNIT_PREVWORDEND,
+    MOVEUNIT_NEXTWORDEND,
+    MOVEUNIT_PREVPROOFWORD,
+    MOVEUNIT_NEXTPROOFWORD,
+    MOVEUNIT_NEXTURLBEG,
+    MOVEUNIT_PREVURLBEG,
+    MOVEUNIT_NEXTURLEND,
+    MOVEUNIT_PREVURLEND,
+    MOVEUNIT_PREVSENTENCE,
+    MOVEUNIT_NEXTSENTENCE,
+    MOVEUNIT_PREVBLOCK,
+    MOVEUNIT_NEXTBLOCK,
+    MOVEUNIT_ACTION_Max = 2147483647
+} MOVEUNIT_ACTION;
+
+typedef enum _SELECTION_TYPE {
+    SELECTION_TYPE_None,
+    SELECTION_TYPE_Caret,
+    SELECTION_TYPE_Text,
+    SELECTION_TYPE_Control,
+    SELECTION_TYPE_Max = 2147483647
+} SELECTION_TYPE;
+
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3051049b-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMConstructor : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
+    HRESULT constructor([retval, out] IDispatch* * p);
+
+    HRESULT LookupGetter([in] BSTR propname, [retval, out] VARIANT* ppDispHandler);
+
+    HRESULT LookupSetter([in] BSTR propname, [retval, out] VARIANT* ppDispHandler);
+
+    HRESULT DefineGetter([in] BSTR propname, [in] VARIANT* pdispHandler);
+
+    HRESULT DefineSetter([in] BSTR propname, [in] VARIANT* pdispHandler);
+}
+
+#define WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL                     \
+    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]       \
+    IDispatch *constructor()
+
 interface IHTMLDocument2;
 interface IHTMLStyleSheetsCollection;
 interface IHTMLFrameBase;
@@ -48,7 +136,7 @@ interface IHTMLFrameBase;
 interface IHTMLFiltersCollection : IDispatch
 {
     [propget, id(DISPID_IHTMLFILTERSCOLLECTION_LENGTH)]
-    HRESULT length([retval, out] long *p);
+    HRESULT length([retval, out] LONG *p);
 
     [propget, id(DISPID_IHTMLFILTERSCOLLECTION__NEWENUM)]
     HRESULT _newEnum([retval, out] IUnknown **p);
@@ -539,28 +627,28 @@ interface IHTMLStyle : IDispatch
     HRESULT cssText([retval, out] BSTR *p);
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELTOP), bindable, displaybind, hidden]
-    HRESULT pixelTop([in] long v);
+    HRESULT pixelTop([in] LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELTOP), bindable, displaybind, hidden]
-    HRESULT pixelTop([retval, out] long *p);
+    HRESULT pixelTop([retval, out] LONG *p);
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT), bindable, displaybind, hidden]
-    HRESULT pixelLeft([in] long v);
+    HRESULT pixelLeft([in] LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT), bindable, displaybind, hidden]
-    HRESULT pixelLeft([retval, out] long *p);
+    HRESULT pixelLeft([retval, out] LONG *p);
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH), bindable, displaybind, hidden]
-    HRESULT pixelWidth([in] long v);
+    HRESULT pixelWidth([in] LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH), bindable, displaybind, hidden]
-    HRESULT pixelWidth([retval, out] long *p);
+    HRESULT pixelWidth([retval, out] LONG *p);
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), bindable, displaybind, hidden]
-    HRESULT pixelHeight([in] long v);
+    HRESULT pixelHeight([in] LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), bindable, displaybind, hidden]
-    HRESULT pixelHeight([retval, out] long *p);
+    HRESULT pixelHeight([retval, out] LONG *p);
 
     [propput, id(DISPID_IHTMLSTYLE_POSTOP), bindable, displaybind]
     HRESULT posTop([in] float v);
@@ -627,14 +715,222 @@ interface IHTMLStyle : IDispatch
     HRESULT toString([retval, out] BSTR *String);
 }
 
+/*****************************************************************************
+ *    IHTMLStyle2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4a2-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLStyle2 : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+    HRESULT tableLayout([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TABLELAYOUT), displaybind, bindable]
+    HRESULT tableLayout([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+    HRESULT borderCollapse([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable]
+    HRESULT borderCollapse([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+    HRESULT direction([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable]
+    HRESULT direction([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+    HRESULT behavior([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable]
+    HRESULT behavior([out, retval] BSTR *p);
+
+    [id(DISPID_IHTMLSTYLE2_SETEXPRESSION)]
+    HRESULT setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLSTYLE2_GETEXPRESSION)]
+    HRESULT getExpression(
+            [in] BSTR propname,
+            [out, retval] VARIANT *expression);
+
+    [id(DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)]
+    HRESULT removeExpression(
+            [in] BSTR propname,
+            [out, retval] VARIANT_BOOL *pfSuccess);
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+    HRESULT position([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable]
+    HRESULT position([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+    HRESULT unicodeBidi([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable]
+    HRESULT unicodeBidi([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+    HRESULT bottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable]
+    HRESULT bottom([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+    HRESULT right([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable]
+    HRESULT right([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+    HRESULT pixelBottom([in] LONG v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
+    HRESULT pixelBottom([out, retval] LONG *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+    HRESULT pixelRight([in] LONG v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
+    HRESULT pixelRight([out, retval] LONG *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+    HRESULT posBottom([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
+    HRESULT posBottom([out, retval] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+    HRESULT posRight([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable]
+    HRESULT posRight([out, retval] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+    HRESULT imeMode([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable]
+    HRESULT imeMode([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+    HRESULT rubyAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable]
+    HRESULT rubyAlign([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+    HRESULT rubyPosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable]
+    HRESULT rubyPosition([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+    HRESULT rubyOverhang([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable]
+    HRESULT rubyOverhang([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+    HRESULT layoutGridChar([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable]
+    HRESULT layoutGridChar([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+    HRESULT layoutGridLine([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable]
+    HRESULT layoutGridLine([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+    HRESULT layoutGridMode([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable]
+    HRESULT layoutGridMode([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+    HRESULT layoutGridType([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable]
+    HRESULT layoutGridType([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+    HRESULT layoutGrid([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable]
+    HRESULT layoutGrid([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+    HRESULT wordBreak([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable]
+    HRESULT wordBreak([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+    HRESULT lineBreak([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable]
+    HRESULT lineBreak([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+    HRESULT textJustify([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable]
+    HRESULT textJustify([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+    HRESULT textJustifyTrim([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable]
+    HRESULT textJustifyTrim([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+    HRESULT textKashida([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
+    HRESULT textKashida([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+    HRESULT textAutospace([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
+    HRESULT textAutospace([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+    HRESULT overflowX([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable]
+    HRESULT overflowX([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+    HRESULT overflowY([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable]
+    HRESULT overflowY([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+    HRESULT accelerator([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable]
+    HRESULT accelerator([out, retval] BSTR *p);
+}
+
 /*****************************************************************************
  *    IHTMLRuleStyle interface
  */
 [
-       odl,
-       oleautomation,
-       dual,
-       uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B)
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B)
 ]
 interface IHTMLRuleStyle : IDispatch
 {
@@ -1602,28 +1898,28 @@ methods:
     BSTR cssText();
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
-    void pixelTop(long v);
+    void pixelTop(LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden]
-    long pixelTop();
+    LONG pixelTop();
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
-    void pixelLeft(long v);
+    void pixelLeft(LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden]
-    long pixelLeft();
+    LONG pixelLeft();
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
-    void pixelWidth(long v);
+    void pixelWidth(LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden]
-    long pixelWidth();
+    LONG pixelWidth();
 
     [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
-    void pixelHeight(long v);
+    void pixelHeight(LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden]
-    long pixelHeight();
+    LONG pixelHeight();
 
     [propput, id(DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable]
     void posTop(float v);
@@ -1747,16 +2043,16 @@ methods:
     VARIANT right();
 
     [propput, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
-    void pixelBottom(long v);
+    void pixelBottom(LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE2_PIXELBOTTOM), displaybind, bindable, hidden]
-    long pixelBottom();
+    LONG pixelBottom();
 
     [propput, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
-    void pixelRight(long v);
+    void pixelRight(LONG v);
 
     [propget, id(DISPID_IHTMLSTYLE2_PIXELRIGHT), displaybind, bindable, hidden]
-    long pixelRight();
+    LONG pixelRight();
 
     [propput, id(DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable]
     void posBottom(float v);
@@ -1852,7 +2148,7 @@ methods:
     void textKashida(VARIANT v);
 
     [propget, id(DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable]
-   VARIANT textKashida();
+    VARIANT textKashida();
 
     [propput, id(DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable]
     void textAutospace(BSTR v);
@@ -1981,6 +2277,143 @@ methods:
     VARIANT minHeight();
 }
 
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f656-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLStyle3 : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
+    HRESULT layoutFlow([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_LAYOUTFLOW), displaybind, bindable]
+    HRESULT layoutFlow([retval, out] BSTR * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
+    HRESULT zoom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_ZOOM), displaybind, bindable]
+    HRESULT zoom([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
+    HRESULT wordWrap([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_WORDWRAP), displaybind, bindable]
+    HRESULT wordWrap([retval, out] BSTR * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
+    HRESULT textUnderlinePosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable]
+    HRESULT textUnderlinePosition([retval, out] BSTR * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
+    HRESULT scrollbarBaseColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARBASECOLOR), displaybind, bindable]
+    HRESULT scrollbarBaseColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
+    HRESULT scrollbarFaceColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARFACECOLOR), displaybind, bindable]
+    HRESULT scrollbarFaceColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+    HRESULT scrollbar3dLightColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+    HRESULT scrollbar3dLightColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+    HRESULT scrollbarShadowColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+    HRESULT scrollbarShadowColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+    HRESULT scrollbarHighlightColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+    HRESULT scrollbarHighlightColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+    HRESULT scrollbarDarkShadowColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+    HRESULT scrollbarDarkShadowColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
+    HRESULT scrollbarArrowColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable]
+    HRESULT scrollbarArrowColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
+    HRESULT scrollbarTrackColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable]
+    HRESULT scrollbarTrackColor([retval, out] VARIANT * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
+    HRESULT writingMode([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_WRITINGMODE), displaybind, bindable]
+    HRESULT writingMode([retval, out] BSTR * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
+    HRESULT textAlignLast([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_TEXTALIGNLAST), displaybind, bindable]
+    HRESULT textAlignLast([retval, out] BSTR * p);
+
+    [propput, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
+    HRESULT textKashidaSpace([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), displaybind, bindable]
+    HRESULT textKashidaSpace([retval, out] VARIANT * p);
+}
+
+/*****************************************************************************
+ *    IHTMLSytyle4 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f816-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLStyle4 : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
+    HRESULT textOverflow([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE4_TEXTOVERFLOW), displaybind, bindable]
+    HRESULT textOverflow([retval, out] BSTR * p);
+
+    [propput, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
+    HRESULT minHeight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE4_MINHEIGHT), displaybind, bindable]
+    HRESULT minHeight([retval, out] VARIANT * p);
+}
+
+[
+    noncreatable,
+    uuid(3050f285-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLStyle
+{
+    [default] dispinterface DispHTMLStyle;
+    interface IHTMLStyle;
+    interface IHTMLStyle2;
+    interface IHTMLStyle3;
+    interface IHTMLStyle4;
+    /* interface IHTMLStyle5; */
+}
+
 /*****************************************************************************
  *    IHTMLRenderStyle interface
  */
@@ -2029,10 +2462,10 @@ interface IHTMLRenderStyle : IDispatch
     HRESULT textDecorationColor([retval, out] VARIANT *p);
 
     [propput, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable]
-    HRESULT renderingPriority([in] long v);
+    HRESULT renderingPriority([in] LONG v);
 
     [propget, id(DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable]
-    HRESULT renderingPriority([retval, out] long *p);
+    HRESULT renderingPriority([retval, out] LONG *p);
 
     [propput, id(DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable]
     HRESULT defaultTextSelection([in] BSTR v);
@@ -2336,6975 +2769,5921 @@ interface IHTMLCurrentStyle : IDispatch
 }
 
 /*****************************************************************************
- *    IHTMLRect interface
+ *    IHTMLCurrentStyle2 interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f4a3-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f658-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLRect : IDispatch
+interface IHTMLCurrentStyle2 : IDispatch
 {
-    [propput, id(DISPID_IHTMLRECT_LEFT)]
-    HRESULT left([in] long v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW), displaybind, bindable]
+    HRESULT layoutFlow([retval, out] BSTR * p);
 
-    [propget, id(DISPID_IHTMLRECT_LEFT)]
-    HRESULT left([retval, out] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WORDWRAP), displaybind, bindable]
+    HRESULT wordWrap([retval, out] BSTR * p);
 
-    [propput, id(DISPID_IHTMLRECT_TOP)]
-    HRESULT top([in] long v);
-
-    [propget, id(DISPID_IHTMLRECT_TOP)]
-    HRESULT top([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLRECT_RIGHT)]
-    HRESULT right([in] long v);
-
-    [propget, id(DISPID_IHTMLRECT_RIGHT)]
-    HRESULT right([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLRECT_BOTTOM)]
-    HRESULT bottom([in] long v);
-
-    [propget, id(DISPID_IHTMLRECT_BOTTOM)]
-    HRESULT bottom([retval, out] long *p);
-}
-
-/*****************************************************************************
- *    IHTMLRectCollection interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f4a4-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLRectCollection : IDispatch
-{
-    [propget, id(DISPID_IHTMLRECTCOLLECTION_LENGTH)]
-    HRESULT length([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLRECTCOLLECTION__NEWENUM), hidden, restricted]
-    HRESULT _newEnum([retval, out] IUnknown **p);
-
-    [id(DISPID_IHTMLRECTCOLLECTION_ITEM)]
-    HRESULT item(
-        [in] VARIANT *pvarIndex,
-        [retval, out] VARIANT *pvarResult);
-}
-
-/*****************************************************************************
- *    IHTMLDOMNode interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f5da-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLDOMNode : IDispatch
-{
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    HRESULT nodeType([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    HRESULT parentNode([retval, out] IHTMLDOMNode **p);
-
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    HRESULT hasChildNodes([retval, out] VARIANT_BOOL *fChildren);
-
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    HRESULT childNodes([retval, out] IDispatch **p);
-
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    HRESULT attributes([retval, out] IDispatch **p);
-
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    HRESULT insertBefore(
-        [in] IHTMLDOMNode *newChild,
-        [optional, in] VARIANT refChild,
-        [retval, out] IHTMLDOMNode **node);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION), displaybind, bindable]
+    HRESULT textUnderlinePosition([retval, out] BSTR * p);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    HRESULT removeChild(
-        [in] IHTMLDOMNode *oldChild,
-        [retval, out] IHTMLDOMNode **node);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT), displaybind, bindable]
+    HRESULT hasLayout([retval, out] VARIANT_BOOL * p);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    HRESULT replaceChild(
-        [in] IHTMLDOMNode *newChild,
-        [in] IHTMLDOMNode *oldChild,
-        [retval, out] IHTMLDOMNode **node);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR), displaybind, bindable]
+    HRESULT scrollbarBaseColor([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    HRESULT cloneNode(
-        [in] VARIANT_BOOL fDeep,
-        [retval, out] IHTMLDOMNode **clonedNode);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR), displaybind, bindable]
+    HRESULT scrollbarFaceColor([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    HRESULT removeNode(
-        [defaultvalue(0), in] VARIANT_BOOL fDeep,
-        [retval, out] IHTMLDOMNode **removed);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+    HRESULT scrollbar3dLightColor([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    HRESULT swapNode(
-        [in] IHTMLDOMNode *otherNode,
-        [retval, out] IHTMLDOMNode **swappedNode);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+    HRESULT scrollbarShadowColor([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    HRESULT replaceNode(
-        [in] IHTMLDOMNode *replacement,
-        [retval, out] IHTMLDOMNode **replaced);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+    HRESULT scrollbarHighlightColor([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    HRESULT appendChild(
-        [in] IHTMLDOMNode *newChild,
-        [retval, out] IHTMLDOMNode **node);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+    HRESULT scrollbarDarkShadowColor([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    HRESULT nodeName([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR), displaybind, bindable]
+    HRESULT scrollbarArrowColor([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    HRESULT nodeValue([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR), displaybind, bindable]
+    HRESULT scrollbarTrackColor([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    HRESULT nodeValue([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE), displaybind, bindable]
+    HRESULT writingMode([retval, out] BSTR * p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    HRESULT firstChild([retval, out] IHTMLDOMNode **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ZOOM), displaybind, bindable]
+    HRESULT zoom([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    HRESULT lastChild([retval, out] IHTMLDOMNode **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_FILTER), displaybind, bindable]
+    HRESULT filter([retval, out] BSTR * p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    HRESULT previousSibling([retval, out] IHTMLDOMNode **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST), displaybind, bindable]
+    HRESULT textAlignLast([retval, out] BSTR * p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    HRESULT nextSibling([retval, out] IHTMLDOMNode **p);
-}
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE), displaybind, bindable]
+    HRESULT textKashidaSpace([retval, out] VARIANT * p);
 
-/*****************************************************************************
- *    IHTMLDOMNode2 interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f80b-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLDOMNode2 : IDispatch
-{
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    HRESULT ownerDocument([retval, out] IDispatch **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ISBLOCK), displaybind, bindable, hidden, restricted, nonbrowsable]
+    HRESULT isBlock([retval, out] VARIANT_BOOL * p);
 }
 
 /*****************************************************************************
- *    IHTMLDOMAttribute interface
+ *    IHTMLCurrentStyle3 interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f4b0-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f818-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLDOMAttribute : IDispatch
+interface IHTMLCurrentStyle3 : IDispatch
 {
-    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODENAME)]
-    HRESULT nodeName([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW), displaybind, bindable]
+    HRESULT textOverflow([retval, out] BSTR * p);
 
-    [propput, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
-    HRESULT nodeValue([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT), displaybind, bindable]
+    HRESULT minHeight([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
-    HRESULT nodeValue([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WORDSPACING), displaybind, bindable]
+    HRESULT wordSpacing([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)]
-    HRESULT specified([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WHITESPACE), displaybind, bindable]
+    HRESULT whiteSpace([retval, out] BSTR * p);
 }
 
 /*****************************************************************************
- *    IHTMLDOMTextNode interface
+ *    IHTMLCurrentStyle4 interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f4b1-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f33b-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLDOMTextNode : IDispatch
+interface IHTMLCurrentStyle4 : IDispatch
 {
-    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
-    HRESULT data([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
-    HRESULT data([out, retval] BSTR *p);
-
-    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
-    HRESULT toString([out, retval] BSTR *String);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MSINTERPOLATIONMODE), displaybind, bindable]
+    HRESULT msInterpolationMode([retval, out] BSTR * p);
 
-    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
-    HRESULT length([out, retval] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXHEIGHT), displaybind, bindable]
+    HRESULT maxHeight([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
-    HRESULT splitText(
-            [in] long offset,
-            [out, retval] IHTMLDOMNode **pRetNode);
-}
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MINWIDTH), displaybind, bindable]
+    HRESULT minWidth([retval, out] VARIANT * p);
 
-/*****************************************************************************
- *    IHTMLDOMImplementation interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f80d-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLDOMImplementation : IDispatch
-{
-    [id(DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)]
-    HRESULT hasFeature(
-        [in] BSTR bstrfeature,
-        [optional, in] VARIANT version,
-        [retval, out] VARIANT_BOOL *pfHasFeature);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable]
+    HRESULT maxWidth([retval, out] VARIANT * p);
 }
 
 /*****************************************************************************
- *    DispHTMLDOMTextNode dispinterface
+ *    DispHTMLCurrentStyle dispinterface
  */
 [
     hidden,
-    uuid(3050f565-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f557-98b5-11cf-bb82-00aa00bdce0b)
 ]
-dispinterface DispHTMLDOMTextNode
+dispinterface DispHTMLCurrentStyle
 {
 properties:
 methods:
-    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
-    void data(BSTR v);
-
-    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
-    BSTR data();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable]
+    BSTR position();
 
-    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
-    BSTR toString();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable]
+    BSTR styleFloat();
 
-    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
-    long length();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable]
+    VARIANT color();
 
-    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
-    IHTMLDOMNode *splitText([in] long offset);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+    VARIANT backgroundColor();
 
-    [id(DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)]
-    BSTR substringData(
-            [in] long offset,
-            [in] long Count);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable]
+    BSTR fontFamily();
 
-    [id(DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)]
-    void appendData([in] BSTR bstrstring);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable]
+    BSTR fontStyle();
 
-    [id(DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)]
-    void insertData(
-            [in] long offset,
-            [in] BSTR bstrstring);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden]
+    BSTR fontVariant();
 
-    [id(DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)]
-    void deleteData(
-            [in] long offset,
-            [in] long Count);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable]
+    VARIANT fontWeight();
 
-    [id(DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)]
-    void replaceData(
-            [in] long offset,
-            [in] long Count,
-            [in] BSTR bstrstring);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable]
+    VARIANT fontSize();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+    BSTR backgroundImage();
 
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+    VARIANT backgroundPositionX();
 
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+    VARIANT backgroundPositionY();
 
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+    BSTR backgroundRepeat();
 
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+    VARIANT borderLeftColor();
 
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+    VARIANT borderTopColor();
 
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+    VARIANT borderRightColor();
 
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+    VARIANT borderBottomColor();
 
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode* cloneNode([in] VARIANT_BOOL fDeep);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+    BSTR borderTopStyle();
 
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+    BSTR borderRightStyle();
 
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+    BSTR borderBottomStyle();
 
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+    BSTR borderLeftStyle();
 
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+    VARIANT borderTopWidth();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+    VARIANT borderRightWidth();
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+    VARIANT borderBottomWidth();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+    VARIANT borderLeftWidth();
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable]
+    VARIANT left();
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable]
+    VARIANT top();
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable]
+    VARIANT width();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode* nextSibling();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable]
+    VARIANT height();
 
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
-}
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable]
+    VARIANT paddingLeft();
 
-/*****************************************************************************
- *    IHTMLDOMChildrenCollection interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f5ab-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLDOMChildrenCollection : IDispatch
-{
-    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
-    HRESULT length([out, retval] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable]
+    VARIANT paddingTop();
 
-    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
-    HRESULT _newEnum([out, retval] IUnknown **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable]
+    VARIANT paddingRight();
 
-    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
-    HRESULT item(
-            [in] long index,
-            [out, retval] IDispatch **ppItem);
-}
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable]
+    VARIANT paddingBottom();
 
-/*****************************************************************************
- *    DispDOMChildrenCollection dispinterface
- */
-[
-    hidden,
-    uuid(3050f577-98b5-11cf-bb82-00aa00bdce0b)
-]
-dispinterface DispDOMChildrenCollection
-{
-properties:
-methods:
-    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
-    long length();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable]
+    BSTR textAlign();
 
-    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
-    IUnknown *_newEnum();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable]
+    BSTR textDecoration();
 
-    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
-    IDispatch *item([in] long index);
-}
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable]
+    BSTR display();
 
-interface IHTMLElementCollection;
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable]
+    BSTR visibility();
 
-/*****************************************************************************
- *    IHTMLElement interface
- */
-[
-    odl,
-    dual,
-    oleautomation,
-    uuid(3050f1FF-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLElement : IDispatch
-{
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    HRESULT setAttribute(
-        [in] BSTR strAttributeName,
-        [in] VARIANT AttributeValue,
-        [defaultvalue(1), in] LONG lFlags);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable]
+    VARIANT zIndex();
 
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    HRESULT getAttribute(
-        [in] BSTR strAttributeName,
-        [defaultvalue(0), in] LONG lFlags,
-        [retval, out] VARIANT *AttributeValue);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable]
+    VARIANT letterSpacing();
 
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    HRESULT removeAttribute(
-        [in] BSTR strAttributeName,
-        [defaultvalue(1), in] LONG lFlags,
-        [retval, out] VARIANT_BOOL *pfSuccess);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable]
+    VARIANT lineHeight();
 
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME)]
-    HRESULT className([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable]
+    VARIANT textIndent();
 
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME)]
-    HRESULT className([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable]
+    VARIANT verticalAlign();
 
-    [propput, id(DISPID_IHTMLELEMENT_ID)]
-    HRESULT id([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+    BSTR backgroundAttachment();
 
-    [propget, id(DISPID_IHTMLELEMENT_ID)]
-    HRESULT id([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable]
+    VARIANT marginTop();
 
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    HRESULT tagName([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable]
+    VARIANT marginRight();
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    HRESULT parentElement([retval, out] IHTMLElement **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable]
+    VARIANT marginBottom();
 
-    [propget, id(DISPID_IHTMLELEMENT_STYLE)]
-    HRESULT style([retval, out] IHTMLStyle **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable]
+    VARIANT marginLeft();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP)]
-    HRESULT onhelp([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable]
+    BSTR clear();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP)]
-    HRESULT onhelp([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable]
+    BSTR listStyleType();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK)]
-    HRESULT onclick([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+    BSTR listStylePosition();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK)]
-    HRESULT onclick([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+    BSTR listStyleImage();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
-    HRESULT ondblclick([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable]
+    VARIANT clipTop();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
-    HRESULT ondblclick([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable]
+    VARIANT clipRight();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
-    HRESULT onkeydown([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable]
+    VARIANT clipBottom();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
-    HRESULT onkeydown([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable]
+    VARIANT clipLeft();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP)]
-    HRESULT onkeyup([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable]
+    BSTR overflow();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP)]
-    HRESULT onkeyup([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+    BSTR pageBreakBefore();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
-    HRESULT onkeypress([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+    BSTR pageBreakAfter();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
-    HRESULT onkeypress([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable]
+    BSTR cursor();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
-    HRESULT onmouseout([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable]
+    BSTR tableLayout();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
-    HRESULT onmouseout([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable]
+    BSTR borderCollapse();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
-    HRESULT onmouseover([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable]
+    BSTR direction();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
-    HRESULT onmouseover([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable]
+    BSTR behavior();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
-    HRESULT onmousemove([in] VARIANT v);
+    [id(DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)]
+    VARIANT getAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(0)] LONG lFlags);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
-    HRESULT onmousemove([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable]
+    BSTR unicodeBidi();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
-    HRESULT onmousedown([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable]
+    VARIANT right();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
-    HRESULT onmousedown([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable]
+    VARIANT bottom();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
-    HRESULT onmouseup([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable]
+    BSTR imeMode();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
-    HRESULT onmouseup([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable]
+    BSTR rubyAlign();
 
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    HRESULT document([retval, out] IDispatch **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable]
+    BSTR rubyPosition();
 
-    [propput, id(DISPID_IHTMLELEMENT_TITLE)]
-    HRESULT title([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable]
+    BSTR rubyOverhang();
 
-    [propget, id(DISPID_IHTMLELEMENT_TITLE)]
-    HRESULT title([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable]
+    BSTR textAutospace();
 
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE)]
-    HRESULT language([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable]
+    BSTR lineBreak();
 
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE)]
-    HRESULT language([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable]
+    BSTR wordBreak();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
-    HRESULT onselectstart([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable]
+    BSTR textJustify();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
-    HRESULT onselectstart([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable]
+    BSTR textJustifyTrim();
 
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    HRESULT scrollIntoView([optional, in] VARIANT varargStart);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable]
+    VARIANT textKashida();
 
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    HRESULT contains(
-        [in] IHTMLElement *pChild,
-        [retval, out] VARIANT_BOOL *pfResult);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable]
+    BSTR blockDirection();
 
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX)]
-    HRESULT sourceIndex([retval, out] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable]
+    VARIANT layoutGridChar();
 
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    HRESULT recordNumber([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable]
+    VARIANT layoutGridLine();
 
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    HRESULT lang([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable]
+    BSTR layoutGridMode();
 
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    HRESULT lang([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable]
+    BSTR layoutGridType();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    HRESULT offsetLeft([retval, out] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable]
+    BSTR borderStyle();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    HRESULT offsetTop([retval, out] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable]
+    BSTR borderColor();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    HRESULT offsetWidth([retval, out] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable]
+    BSTR borderWidth();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    HRESULT offsetHeight([retval, out] long *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable]
+    BSTR padding();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    HRESULT offsetParent([retval, out] IHTMLElement **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable]
+    BSTR margin();
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    HRESULT innerHTML([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable]
+    BSTR accelerator();
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    HRESULT innerHTML([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable]
+    BSTR overflowX();
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    HRESULT innerText([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable]
+    BSTR overflowY();
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    HRESULT innerText([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable]
+    BSTR textTransform();
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    HRESULT outerHTML([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_LAYOUTFLOW), displaybind, bindable]
+    BSTR layoutFlow();
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    HRESULT outerHTML([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WORDWRAP), displaybind, bindable]
+    BSTR wordWrap();
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    HRESULT outerText([in] BSTR v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTUNDERLINEPOSITION), displaybind, bindable]
+    BSTR textUnderlinePosition();
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    HRESULT outerText([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_HASLAYOUT), displaybind, bindable]
+    VARIANT_BOOL hasLayout();
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    HRESULT insertAdjacentHTML([in] BSTR where, [in] BSTR html);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARBASECOLOR), displaybind, bindable]
+    VARIANT scrollbarBaseColor();
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    HRESULT insertAdjacentText([in] BSTR where, [in] BSTR text);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARFACECOLOR), displaybind, bindable]
+    VARIANT scrollbarFaceColor();
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    HRESULT parentTextEdit([retval, out] IHTMLElement **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable]
+    VARIANT scrollbar3dLightColor();
 
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    HRESULT isTextEdit([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARSHADOWCOLOR), displaybind, bindable]
+    VARIANT scrollbarShadowColor();
 
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    HRESULT click();
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable]
+    VARIANT scrollbarHighlightColor();
 
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    HRESULT filters([retval, out] IHTMLFiltersCollection **p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable]
+    VARIANT scrollbarDarkShadowColor();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
-    HRESULT ondragstart([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARARROWCOLOR), displaybind, bindable]
+    VARIANT scrollbarArrowColor();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
-    HRESULT ondragstart([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_SCROLLBARTRACKCOLOR), displaybind, bindable]
+    VARIANT scrollbarTrackColor();
 
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    HRESULT toString([retval, out] BSTR *String);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_WRITINGMODE), displaybind, bindable]
+    BSTR writingMode();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
-    HRESULT onbeforeupdate([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ZOOM), displaybind, bindable]
+    VARIANT zoom();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
-    HRESULT onbeforeupdate([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_FILTER), displaybind, bindable]
+    BSTR filter();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
-    HRESULT onafterupdate([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTALIGNLAST), displaybind, bindable]
+    BSTR textAlignLast();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
-    HRESULT onafterupdate([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_TEXTKASHIDASPACE), displaybind, bindable]
+    VARIANT textKashidaSpace();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
-    HRESULT onerrorupdate([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE2_ISBLOCK), displaybind, bindable, hidden, restricted, nonbrowsable]
+    VARIANT_BOOL isBlock();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
-    HRESULT onerrorupdate([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_TEXTOVERFLOW), displaybind, bindable]
+    BSTR textOverflow();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
-    HRESULT onrowexit([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_MINHEIGHT), displaybind, bindable]
+    VARIANT minHeight();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
-    HRESULT onrowexit([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WORDSPACING), displaybind, bindable]
+    VARIANT wordSpacing();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER)]
-    HRESULT onrowenter([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE3_WHITESPACE), displaybind, bindable]
+    BSTR whiteSpace();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER)]
-    HRESULT onrowenter([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MSINTERPOLATIONMODE), displaybind, bindable]
+    BSTR msInterpolationMode();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
-    HRESULT ondatasetchanged([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXHEIGHT), displaybind, bindable]
+    VARIANT maxHeight();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
-    HRESULT ondatasetchanged([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MINWIDTH), displaybind, bindable]
+    VARIANT minWidth();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
-    HRESULT ondataavailable([in] VARIANT v);
+    [propget, id(DISPID_IHTMLCURRENTSTYLE4_MAXWIDTH), displaybind, bindable]
+    VARIANT maxWidth();
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
-    HRESULT ondataavailable([retval, out] VARIANT *p);
+[
+    noncreatable,
+    uuid(3050f3dc-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLCurrentStyle
+{
+    [default] dispinterface DispHTMLCurrentStyle;
+    interface IHTMLCurrentStyle;
+    interface IHTMLCurrentStyle2;
+    interface IHTMLCurrentStyle3;
+    interface IHTMLCurrentStyle4;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
-    HRESULT ondatasetcomplete([in] VARIANT v);
+/*****************************************************************************
+ *    IHTMLRect interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4a3-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLRect : IDispatch
+{
+    [propput, id(DISPID_IHTMLRECT_LEFT)]
+    HRESULT left([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
-    HRESULT ondatasetcomplete([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLRECT_LEFT)]
+    HRESULT left([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
-    HRESULT onfilterchange([in] VARIANT v);
+    [propput, id(DISPID_IHTMLRECT_TOP)]
+    HRESULT top([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
-    HRESULT onfilterchange([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLRECT_TOP)]
+    HRESULT top([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    HRESULT children([retval, out] IDispatch **p);
+    [propput, id(DISPID_IHTMLRECT_RIGHT)]
+    HRESULT right([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    HRESULT all([retval, out] IDispatch **p);
+    [propget, id(DISPID_IHTMLRECT_RIGHT)]
+    HRESULT right([retval, out] LONG *p);
+
+    [propput, id(DISPID_IHTMLRECT_BOTTOM)]
+    HRESULT bottom([in] LONG v);
+
+    [propget, id(DISPID_IHTMLRECT_BOTTOM)]
+    HRESULT bottom([retval, out] LONG *p);
 }
 
 /*****************************************************************************
- *    IHTMLElement2 interface
+ *    IHTMLRectCollection interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f434-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f4a4-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLElement2 : IDispatch
+interface IHTMLRectCollection : IDispatch
 {
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    HRESULT scopeName([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLRECTCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    HRESULT setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture);
+    [propget, id(DISPID_IHTMLRECTCOLLECTION__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([retval, out] IUnknown **p);
 
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    HRESULT releaseCapture();
+    [id(DISPID_IHTMLRECTCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    HRESULT onlosecapture([in] VARIANT v);
+/*****************************************************************************
+ *    IHTMLDOMNode interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f5da-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMNode : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    HRESULT nodeType([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    HRESULT onlosecapture([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    HRESULT parentNode([retval, out] IHTMLDOMNode **p);
 
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    HRESULT componentFromPoint(
-        [in] long x,
-        [in] long y,
-        [retval, out] BSTR *component);
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    HRESULT hasChildNodes([retval, out] VARIANT_BOOL *fChildren);
 
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    HRESULT doScroll([optional, in] VARIANT component);
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    HRESULT childNodes([retval, out] IDispatch **p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    HRESULT onscroll([in] VARIANT v);
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    HRESULT attributes([retval, out] IDispatch **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    HRESULT onscroll([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    HRESULT insertBefore(
+        [in] IHTMLDOMNode *newChild,
+        [optional, in] VARIANT refChild,
+        [retval, out] IHTMLDOMNode **node);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    HRESULT ondrag([in] VARIANT v);
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    HRESULT removeChild(
+        [in] IHTMLDOMNode *oldChild,
+        [retval, out] IHTMLDOMNode **node);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    HRESULT ondrag([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    HRESULT replaceChild(
+        [in] IHTMLDOMNode *newChild,
+        [in] IHTMLDOMNode *oldChild,
+        [retval, out] IHTMLDOMNode **node);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    HRESULT ondragend([in] VARIANT v);
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    HRESULT cloneNode(
+        [in] VARIANT_BOOL fDeep,
+        [retval, out] IHTMLDOMNode **clonedNode);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    HRESULT ondragend([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    HRESULT removeNode(
+        [defaultvalue(0), in] VARIANT_BOOL fDeep,
+        [retval, out] IHTMLDOMNode **removed);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    HRESULT ondragenter([in] VARIANT v);
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    HRESULT swapNode(
+        [in] IHTMLDOMNode *otherNode,
+        [retval, out] IHTMLDOMNode **swappedNode);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    HRESULT ondragenter([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    HRESULT replaceNode(
+        [in] IHTMLDOMNode *replacement,
+        [retval, out] IHTMLDOMNode **replaced);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    HRESULT ondragover([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    HRESULT ondragover([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    HRESULT ondragleave([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    HRESULT ondragleave([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    HRESULT ondrop([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    HRESULT ondrop([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    HRESULT onbeforecut([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    HRESULT onbeforecut([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    HRESULT oncut([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    HRESULT oncut([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    HRESULT onbeforecopy([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    HRESULT onbeforecopy([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    HRESULT oncopy([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    HRESULT oncopy([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    HRESULT onbeforepaste([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    HRESULT onbeforepaste([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    HRESULT onpaste([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    HRESULT onpaste([retval, out] VARIANT *p);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    HRESULT currentStyle([retval, out] IHTMLCurrentStyle **p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    HRESULT onpropertychange([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    HRESULT onpropertychange([retval, out] VARIANT *p);
-
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    HRESULT getClientRects([retval, out] IHTMLRectCollection **pRectCol);
-
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    HRESULT getBoundingClientRect([retval, out] IHTMLRect **pRect);
-
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    HRESULT setExpression(
-        [in] BSTR propname,
-        [in] BSTR expression,
-        [defaultvalue(""), in] BSTR language);
-
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    HRESULT getExpression(
-        [in] BSTR propname,
-        [retval, out] VARIANT *expression);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    HRESULT removeExpression(
-        [in] BSTR propname,
-        [retval, out] VARIANT_BOOL *pfSuccess);
-
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    HRESULT tabIndex([in] short v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    HRESULT tabIndex([retval, out] short *p);
-
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    HRESULT focus();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    HRESULT accessKey([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    HRESULT accessKey([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    HRESULT onblur([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    HRESULT onblur([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    HRESULT onfocus([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    HRESULT onfocus([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    HRESULT onresize([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    HRESULT onresize([retval, out] VARIANT *p);
-
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    HRESULT blur();
-
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    HRESULT addFilter([in] IUnknown *pUnk);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    HRESULT removeFilter([in] IUnknown *pUnk);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    HRESULT clientHeight([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    HRESULT clientWidth([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    HRESULT clientTop([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    HRESULT clientLeft([retval, out] long *p);
-
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    HRESULT attachEvent(
-        [in] BSTR event,
-        [in] IDispatch *pDisp,
-        [retval, out] VARIANT_BOOL *pfResult);
-
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    HRESULT detachEvent(
-        [in] BSTR event,
-        [in] IDispatch *pDisp);
-
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    HRESULT readyState([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    HRESULT onreadystatechange([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    HRESULT onreadystatechange([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    HRESULT onrowsdelete([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    HRESULT onrowsdelete([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    HRESULT onrowsinserted([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    HRESULT onrowsinserted([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    HRESULT oncellchange([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    HRESULT oncellchange([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    HRESULT dir([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    HRESULT dir([retval, out] BSTR *p);
-
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    HRESULT createControlRange([retval, out] IDispatch **range);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    HRESULT scrollHeight([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    HRESULT scrollWidth([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    HRESULT scrollTop([in] long v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    HRESULT scrollTop([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    HRESULT scrollLeft([in] long v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    HRESULT scrollLeft([retval, out] long *p);
-
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    HRESULT clearAttributes();
-
-    [id(DISPID_IHTMLELEMENT2_MERGEATTRIBUTES)]
-    HRESULT mergeAttributes([in] IHTMLElement *mergeThis);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    HRESULT oncontextmenu([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    HRESULT oncontextmenu([retval, out] VARIANT *p);
-
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    HRESULT insertAdjacentElement(
-        [in] BSTR where,
-        [in] IHTMLElement *insertedElement,
-        [retval, out] IHTMLElement **inserted);
-
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    HRESULT applyElement(
-        [in] IHTMLElement *apply,
-        [in] BSTR where,
-        [retval, out] IHTMLElement **applied);
-
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    HRESULT getAdjacentText(
-        [in] BSTR where,
-        [retval, out] BSTR *text);
-
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    HRESULT replaceAdjacentText(
-        [in] BSTR where,
-        [in] BSTR newText,
-        [retval, out] BSTR *oldText);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    HRESULT canHaveChildren([retval, out] VARIANT_BOOL *p);
-
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    HRESULT addBehavior(
-        [in] BSTR bstrUrl,
-        [optional, in] VARIANT *pvarFactory,
-        [retval, out] long *pCookie);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    HRESULT removeBehavior(
-        [in] long cookie,
-        [retval, out] VARIANT_BOOL *pfResult);
-
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    HRESULT runtimeStyle([retval, out] IHTMLStyle **p);
-
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    HRESULT behaviorUrns([retval, out] IDispatch **p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    HRESULT tagUrn([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    HRESULT tagUrn([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    HRESULT onbeforeeditfocus([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    HRESULT onbeforeeditfocus([retval, out] VARIANT *p);
-
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    HRESULT readyStateValue([retval, out] long *p);
-
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    HRESULT getElementsByTagName(
-        [in] BSTR v,
-        [retval, out] IHTMLElementCollection **pelColl);
-}
-
-/*****************************************************************************
- *    IHTMLGenericElement interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f4b7-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLGenericElement : IDispatch
-{
-    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
-    HRESULT recordset([out, retval] IDispatch **p);
-
-    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
-    HRESULT namedRecordset(
-            [in] BSTR dataMember,
-            [in, optional] VARIANT *hierarchy,
-            [out, retval] IDispatch **ppRecordset);
-}
-
-/*****************************************************************************
- *    DispHTMLGenericElement dispinterface
- */
-[
-    hidden,
-    uuid(3050f563-98b5-11cf-bb82-00aa00bdce0b)
-]
-dispinterface DispHTMLGenericElement
-{
-properties:
-methods:
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    void setAttribute(
-            [in] BSTR strAttributeName,
-            [in] VARIANT AttributeValue,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    VARIANT getAttribute(
-             [in] BSTR strAttributeName,
-             [in, defaultvalue(0)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    VARIANT_BOOL removeAttribute(
-            [in] BSTR strAttributeName,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    void className(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    BSTR className();
-
-    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
-    void id(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
-    BSTR id();
-
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    BSTR tagName();
-
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    IHTMLElement *parentElement();
-
-    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
-    IHTMLStyle *style();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    void onhelp(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    VARIANT onhelp();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    void onclick(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    VARIANT onclick();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    void ondblclick(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    VARIANT ondblclick();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    void onkeydown(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    VARIANT onkeydown();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    void onkeyup(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    VARIANT onkeyup();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    void onkeypress(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    VARIANT onkeypress();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    void onmouseout(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    VARIANT onmouseout();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    void onmouseover(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    VARIANT onmouseover();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    void onmousemove(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    VARIANT onmousemove();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    void onmousedown(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    VARIANT onmousedown();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    void onmouseup(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    VARIANT onmouseup();
-
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    IDispatch *document();
-
-    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    void title(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    BSTR title();
-
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    void language(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    BSTR language();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    void onselectstart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    VARIANT onselectstart();
-
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    void scrollIntoView([in, optional] VARIANT varargStart);
-
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    VARIANT_BOOL contains([in] IHTMLElement *pChild);
-
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
-    long sourceIndex();
-
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    VARIANT recordNumber();
-
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    void lang(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    BSTR lang();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    long offsetLeft();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    long offsetTop();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    long offsetWidth();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    long offsetHeight();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    IHTMLElement *offsetParent();
-
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    void innerHTML(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    BSTR innerHTML();
-
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    void innerText(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    BSTR innerText();
-
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    void outerHTML(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    BSTR outerHTML();
-
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    void outerText(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    BSTR outerText();
-
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    void insertAdjacentHTML(
-            [in] BSTR where,
-            [in] BSTR html);
-
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    void insertAdjacentText(
-            [in] BSTR where,
-            [in] BSTR text);
-
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    IHTMLElement *parentTextEdit();
-
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    VARIANT_BOOL isTextEdit();
-
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    void click();
-
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    IHTMLFiltersCollection *filters();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    void ondragstart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    VARIANT ondragstart();
-
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    BSTR toString();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    void onbeforeupdate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    VARIANT onbeforeupdate();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    void onafterupdate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    VARIANT onafterupdate();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    void onerrorupdate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    VARIANT onerrorupdate();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    void onrowexit(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    VARIANT onrowexit();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    void onrowenter(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    VARIANT onrowenter();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    void ondatasetchanged(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    VARIANT ondatasetchanged();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    void ondataavailable(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    VARIANT ondataavailable();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    void ondatasetcomplete(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    VARIANT ondatasetcomplete();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    void onfilterchange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    VARIANT onfilterchange();
-
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    IDispatch *children();
-
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    IDispatch *all();
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    BSTR scopeName();
-
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
-
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    void releaseCapture();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    void onlosecapture(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    VARIANT onlosecapture();
-
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    BSTR componentFromPoint(
-            [in] long x,
-            [in] long y);
-
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    void doScroll([in, optional] VARIANT component);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    void onscroll(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    VARIANT onscroll();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    void ondrag(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    VARIANT ondrag();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    void ondragend(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    VARIANT ondragend();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    void ondragenter(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    VARIANT ondragenter();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    void ondragover(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    VARIANT ondragover();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    void ondragleave(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    VARIANT ondragleave();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    void ondrop(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    VARIANT ondrop();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    void onbeforecut(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    VARIANT onbeforecut();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    void oncut(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    VARIANT oncut();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    void onbeforecopy(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    VARIANT onbeforecopy();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    void oncopy(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    VARIANT oncopy();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    void onbeforepaste(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    VARIANT onbeforepaste();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    void onpaste(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    VARIANT onpaste();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    IHTMLCurrentStyle *currentStyle();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    void onpropertychange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    VARIANT onpropertychange();
-
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    IHTMLRectCollection *getClientRects();
-
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    IHTMLRect *getBoundingClientRect();
-
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    void setExpression(
-            [in] BSTR propname,
-            [in] BSTR expression,
-            [in, defaultvalue("")] BSTR language);
-
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    VARIANT getExpression([in] BSTR propname);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    VARIANT_BOOL removeExpression([in] BSTR propname);
-
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    void tabIndex(short v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    short tabIndex();
-
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    void focus();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    void accessKey(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    BSTR accessKey();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    void onblur(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    VARIANT onblur();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    void onfocus(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    VARIANT onfocus();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    void onresize(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    VARIANT onresize();
-
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    void blur();
-
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    void addFilter([in] IUnknown *pUnk);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    void removeFilter([in] IUnknown *pUnk);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    long clientHeight();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    long clientWidth();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    long clientTop();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    long clientLeft();
-
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
-
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
-
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    VARIANT readyState();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    void onreadystatechange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    VARIANT onreadystatechange();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    void onrowsdelete(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    VARIANT onrowsdelete();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    void onrowsinserted(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-     VARIANT onrowsinserted();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-     void oncellchange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    VARIANT oncellchange();
-
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    void dir(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    BSTR dir();
-
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    IDispatch *createControlRange();
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    long scrollHeight();
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    long scrollWidth();
-
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    void scrollTop(long v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    long scrollTop();
-
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    void scrollLeft(long v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    long scrollLeft();
-
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    void clearAttributes();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    void oncontextmenu(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    VARIANT oncontextmenu();
-
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    IHTMLElement *insertAdjacentElement(
-            [in] BSTR where,
-            [in] IHTMLElement *insertedElement);
-
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    IHTMLElement *applyElement(
-            [in] IHTMLElement *apply,
-            [in] BSTR where);
-
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    BSTR getAdjacentText([in] BSTR where);
-
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    BSTR replaceAdjacentText(
-            [in] BSTR where,
-            [in] BSTR newText);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    VARIANT_BOOL canHaveChildren();
-
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    long addBehavior(
-            [in] BSTR bstrUrl,
-            [in, optional] VARIANT *pvarFactory);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    VARIANT_BOOL removeBehavior([in] long cookie);
-
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    IHTMLStyle *runtimeStyle();
-
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    IDispatch *behaviorUrns();
-
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    void tagUrn(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    BSTR tagUrn();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    void onbeforeeditfocus(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    VARIANT onbeforeeditfocus();
-
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    long readyStateValue();
-
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
-
-    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
-    void mergeAttributes(
-            [in] IHTMLElement *mergeThis,
-            [in, optional] VARIANT *pvarFlags);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
-    VARIANT_BOOL isMultiLine();
-
-    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
-    VARIANT_BOOL canHaveHTML();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    void onlayoutcomplete(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    VARIANT onlayoutcomplete();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    void onpage(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    VARIANT onpage();
-
-    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    void inflateBlock(VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    VARIANT_BOOL inflateBlock();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    void onbeforedeactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    VARIANT onbeforedeactivate();
-
-    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
-    void setActive();
-
-    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    void contentEditable(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    BSTR contentEditable();
-
-    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
-    VARIANT_BOOL isContentEditable();
-
-    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    void hideFocus(VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    VARIANT_BOOL hideFocus();
-
-    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    void disabled(VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    VARIANT_BOOL disabled();
-
-    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
-    VARIANT_BOOL isDisabled();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    void onmove(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    VARIANT onmove();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    void oncontrolselect(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    VARIANT oncontrolselect();
-
-    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
-    VARIANT_BOOL fireEvent(
-            [in] BSTR bstrEventName,
-            [in, optional] VARIANT *pvarEventObject);
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    void onresizestart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    VARIANT onresizestart();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    void onresizeend(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    VARIANT onresizeend();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    void onmovestart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    VARIANT onmovestart();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    void onmoveend(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    VARIANT onmoveend();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    void onmouseenter(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    VARIANT onmouseenter();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    void onmouseleave(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    VARIANT onmouseleave();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    void onactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    VARIANT onactivate();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    void ondeactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    VARIANT ondeactivate();
-
-    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
-    VARIANT_BOOL dragDrop();
-
-    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
-    LONG glyphMode();
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    void onmousewheel(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    VARIANT onmousewheel();
-
-    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
-    void normalize();
-
-    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
-    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
-
-    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
-    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
-
-    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
-    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    void onbeforeactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    VARIANT onbeforeactivate();
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    void onfocusin(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    VARIANT onfocusin();
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    void onfocusout(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    VARIANT onfocusout();
-
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
-    long uniqueNumber();
-
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
-    BSTR uniqueID();
-
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
-
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
-
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
-
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
-
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
-
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
-
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
-
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
-
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
-
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
-
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
-
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
-
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
-
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
-
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
-
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
-
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
-
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
-
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
-
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
-
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
-
-    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
-    IDispatch *recordset();
-
-    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
-    IDispatch *namedRecordset(
-            [in] BSTR dataMember,
-            [in, optional] VARIANT *hierarchy);
-}
-
-/*****************************************************************************
- *    IHTMLStyleSheetRule interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F357-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLStyleSheetRule : IDispatch
-{
-    [propput, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
-    HRESULT selectorText([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
-    HRESULT selectorText([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEETRULE_STYLE)]
-    HRESULT style([retval, out] IHTMLRuleStyle **p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEETRULE_READONLY)]
-    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
-}
-
-/*****************************************************************************
- *    IHTMLStyleSheetRulesCollection interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F2E5-98B5-11Cf-BB82-00AA00BDCE0B)
-]
-interface IHTMLStyleSheetRulesCollection : IDispatch
-{
-    [propget, id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)]
-    HRESULT length([retval, out] long *p);
-
-    [id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)]
-    HRESULT item(
-        [in] long index,
-        [retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule);
-}
-
-/*****************************************************************************
- *    IHTMLStyleSheet interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F2E3-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLStyleSheet : IDispatch
-{
-    [propput, id(DISPID_IHTMLSTYLESHEET_TITLE)]
-    HRESULT title([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_TITLE)]
-    HRESULT title([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)]
-    HRESULT parentStyleSheet([retval, out] IHTMLStyleSheet **p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)]
-    HRESULT owningElement([retval, out] IHTMLElement **p);
-
-    [propput, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
-    HRESULT disabled([in] VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
-    HRESULT disabled([retval, out] VARIANT_BOOL *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_READONLY)]
-    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_IMPORTS)]
-    HRESULT imports([retval, out] IHTMLStyleSheetsCollection **p);
-
-    [propput, id(DISPID_IHTMLSTYLESHEET_HREF)]
-    HRESULT href([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_HREF)]
-    HRESULT href([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_TYPE)]
-    HRESULT type([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_ID)]
-    HRESULT id([retval, out] BSTR *p);
-
-    [id(DISPID_IHTMLSTYLESHEET_ADDIMPORT)]
-    HRESULT addImport(
-        [in] BSTR bstrURL,
-        [defaultvalue(-1), in] long lIndex,
-        [retval, out] long *plIndex);
-
-    [id(DISPID_IHTMLSTYLESHEET_ADDRULE)]
-    HRESULT addRule(
-        [in] BSTR bstrSelector,
-        [in] BSTR bstrStyle,
-        [defaultvalue(-1), in] long lIndex,
-        [retval, out] long *plNewIndex);
-
-    [id(DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)]
-    HRESULT removeImport([in] long lIndex);
-
-    [id(DISPID_IHTMLSTYLESHEET_REMOVERULE)]
-    HRESULT removeRule([in] long lIndex);
-
-    [propput, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
-    HRESULT media([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
-    HRESULT media([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
-    HRESULT cssText([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
-    HRESULT cssText([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEET_RULES)]
-    HRESULT rules([retval, out] IHTMLStyleSheetRulesCollection **p);
-}
-
-/*****************************************************************************
- *    IHTMLStyleSheetsCollection interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F37E-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLStyleSheetsCollection : IDispatch
-{
-    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)]
-    HRESULT length([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM)]
-    HRESULT _newEnum([retval, out] IUnknown **p);
-
-    [id(DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)]
-    HRESULT item(
-        [in] VARIANT *pvarIndex,
-        [retval, out] VARIANT *pvarResult);
-}
-
-/*****************************************************************************
- *    IHTMLTxtRange interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f220-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLTxtRange : IDispatch
-{
-    [propget, id(DISPID_IHTMLTXTRANGE_HTMLTEXT)]
-    HRESULT htmlText([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLTXTRANGE_TEXT)]
-    HRESULT text([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLTXTRANGE_TEXT)]
-    HRESULT text([retval, out] BSTR *p);
-
-    [id(DISPID_IHTMLTXTRANGE_PARENTELEMENT)]
-    HRESULT parentElement([retval, out] IHTMLElement **parent);
-
-    [id(DISPID_IHTMLTXTRANGE_DUPLICATE)]
-    HRESULT duplicate([retval, out] IHTMLTxtRange **Duplicate);
-
-    [id(DISPID_IHTMLTXTRANGE_INRANGE)]
-    HRESULT inRange(
-        [in] IHTMLTxtRange *Range,
-        [retval, out] VARIANT_BOOL *InRange);
-
-    [id(DISPID_IHTMLTXTRANGE_ISEQUAL)]
-    HRESULT isEqual(
-        [in] IHTMLTxtRange *Range,
-        [retval, out] VARIANT_BOOL *IsEqual);
-
-    [id(DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW)]
-    HRESULT scrollIntoView([defaultvalue(-1), in] VARIANT_BOOL fStart);
-
-    [id(DISPID_IHTMLTXTRANGE_COLLAPSE)]
-    HRESULT collapse([defaultvalue(-1), in] VARIANT_BOOL Start);
-
-    [id(DISPID_IHTMLTXTRANGE_EXPAND)]
-    HRESULT expand(
-        [in] BSTR Unit,
-        [retval, out] VARIANT_BOOL *Success);
-
-    [id(DISPID_IHTMLTXTRANGE_MOVE)]
-    HRESULT move(
-        [in] BSTR Unit,
-        [defaultvalue(1), in] long Count,
-        [retval, out] long *ActualCount);
-
-    [id(DISPID_IHTMLTXTRANGE_MOVESTART)]
-    HRESULT moveStart(
-        [in] BSTR Unit,
-        [defaultvalue(1), in] long Count,
-        [retval, out] long *ActualCount);
-
-    [id(DISPID_IHTMLTXTRANGE_MOVEEND)]
-    HRESULT moveEnd(
-        [in] BSTR Unit,
-        [defaultvalue(1), in] long Count,
-        [retval, out] long *ActualCount);
-
-    [id(DISPID_IHTMLTXTRANGE_SELECT)]
-    HRESULT select();
-
-    [id(DISPID_IHTMLTXTRANGE_PASTEHTML)]
-    HRESULT pasteHTML([in] BSTR html);
-
-    [id(DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT)]
-    HRESULT moveToElementText([in] IHTMLElement *element);
-
-    [id(DISPID_IHTMLTXTRANGE_SETENDPOINT)]
-    HRESULT setEndPoint(
-        [in] BSTR how,
-        [in] IHTMLTxtRange *SourceRange);
-
-    [id(DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS)]
-    HRESULT compareEndPoints(
-        [in] BSTR how,
-        [in] IHTMLTxtRange *SourceRange,
-        [retval, out] long *ret);
-
-    [id(DISPID_IHTMLTXTRANGE_FINDTEXT)]
-    HRESULT findText(
-        [in] BSTR String,
-        [defaultvalue(1073741823), in] long count,
-        [defaultvalue(0), in] long Flags,
-        [retval, out] VARIANT_BOOL *Success);
-
-    [id(DISPID_IHTMLTXTRANGE_MOVETOPOINT)]
-    HRESULT moveToPoint(
-        [in] long x,
-        [in] long y);
-
-    [id(DISPID_IHTMLTXTRANGE_GETBOOKMARK)]
-    HRESULT getBookmark([retval, out] BSTR *Boolmark);
-
-    [id(DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK)]
-    HRESULT moveToBookmark(
-        [in] BSTR Bookmark,
-        [retval, out] VARIANT_BOOL *Success);
-
-    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED)]
-    HRESULT queryCommandSupported(
-        [in] BSTR cmdID,
-        [retval, out] VARIANT_BOOL *pfRet);
-
-    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED)]
-    HRESULT queryCommandEnabled(
-        [in] BSTR cmdID,
-        [retval, out] VARIANT_BOOL *pfRet);
-
-    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE)]
-    HRESULT queryCommandState(
-        [in] BSTR cmdID,
-        [retval, out] VARIANT_BOOL *pfRet);
-
-    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM)]
-    HRESULT queryCommandIndeterm(
-        [in] BSTR cmdID,
-        [retval, out] VARIANT_BOOL *pfRet);
-
-    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT)]
-    HRESULT queryCommandText(
-        [in] BSTR cmdID,
-        [retval, out] BSTR *pcmdText);
-
-    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE)]
-    HRESULT queryCommandValue(
-        [in] BSTR cmdID,
-        [retval, out] VARIANT *pcmdValue);
-
-    [id(DISPID_IHTMLTXTRANGE_EXECCOMMAND)]
-    HRESULT execCommand(
-        [in] BSTR cmdID,
-        [defaultvalue(0), in] VARIANT_BOOL showUI,
-        [optional, in] VARIANT value,
-        [retval, out] VARIANT_BOOL *pfRet);
-
-    [id(DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP)]
-    HRESULT execCommandShowHelp(
-        [in] BSTR cmdID,
-        [retval, out] VARIANT_BOOL *pfRet);
-}
-
-/*****************************************************************************
- *    IHTMLFormElement interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F1F7-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLFormElement : IDispatch
-{
-    [propput, id(DISPID_IHTMLFORMELEMENT_ACTION)]
-    HRESULT action([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_ACTION)]
-    HRESULT action([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_DIR)]
-    HRESULT dir([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_DIR)]
-    HRESULT dir([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
-    HRESULT encoding([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
-    HRESULT encoding([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_METHOD)]
-    HRESULT method([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_METHOD)]
-    HRESULT method([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_ELEMENTS)]
-    HRESULT elements([retval, out] IDispatch **p);
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_TARGET)]
-    HRESULT target([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_TARGET)]
-    HRESULT target([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_NAME)]
-    HRESULT name([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_NAME)]
-    HRESULT name([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
-    HRESULT onsubmit([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
-    HRESULT onsubmit([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
-    HRESULT onreset([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
-    HRESULT onreset([retval, out] VARIANT *p);
-
-    [id(DISPID_IHTMLFORMELEMENT_SUBMIT)]
-    HRESULT submit();
-
-    [id(DISPID_IHTMLFORMELEMENT_RESET)]
-    HRESULT reset();
-
-    [propput, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
-    HRESULT length([in] long v);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
-    HRESULT length([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLFORMELEMENT__NEWENUM)]
-    HRESULT _newEnum([retval, out] IUnknown **p);
-
-    [id(DISPID_IHTMLFORMELEMENT_ITEM)]
-    HRESULT item(
-        [optional, in] VARIANT name,
-        [optional, in] VARIANT index,
-        [retval, out] IDispatch **pdisp);
-
-    [id(DISPID_IHTMLFORMELEMENT_TAGS)]
-    HRESULT tags(
-        [in] VARIANT tagName,
-        [retval, out] IDispatch **pdisp);
-}
-
-/*****************************************************************************
- *    IHTMLTextContainer interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f230-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLTextContainer : IDispatch
-{
-    [id(DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE)]
-    HRESULT createControlRange([retval, out] IDispatch **range);
-
-    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT), displaybind, bindable]
-    HRESULT scrollHeight([retval, out] long *p);
-
-    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH), displaybind, bindable]
-    HRESULT scrollWidth([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
-    HRESULT scrollTop([in] long v);
-
-    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
-    HRESULT scrollTop([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
-    HRESULT scrollLeft([in] long v);
-
-    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
-    HRESULT scrollLeft([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
-    HRESULT onscroll([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
-    HRESULT onscroll([retval, out] VARIANT *p);
-}
-
-/*****************************************************************************
- *    IHTMLImgElement interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F240-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLImgElement : IDispatch
-{
-    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
-    HRESULT isMap([in] VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
-    HRESULT isMap([retval, out] VARIANT_BOOL *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
-    HRESULT useMap([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
-    HRESULT useMap([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
-    HRESULT mimeType([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
-    HRESULT fileSize([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
-    HRESULT fileCreatedDate([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
-    HRESULT fileModifiedDate([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
-    HRESULT fileUpdatedDate([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
-    HRESULT protocol([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
-    HRESULT href([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
-    HRESULT nameProp([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER)]
-    HRESULT border([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER)]
-    HRESULT border([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
-    HRESULT vspace([in] long v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
-    HRESULT vspace([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
-    HRESULT hspace([in] long v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
-    HRESULT hspace([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_ALT)]
-    HRESULT alt([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ALT)]
-    HRESULT alt([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_SRC)]
-    HRESULT src([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_SRC)]
-    HRESULT src([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
-    HRESULT lowsrc([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
-    HRESULT lowsrc([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_VRML)]
-    HRESULT vrml([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_VRML)]
-    HRESULT vrml([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
-    HRESULT dynsrc([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
-    HRESULT dynsrc([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_READYSTATE)]
-    HRESULT readyState([retval, out] BSTR *p);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
-    HRESULT complete([retval, out] VARIANT_BOOL *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP)]
-    HRESULT loop([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP)]
-    HRESULT loop([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
-    HRESULT align([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
-    HRESULT align([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
-    HRESULT onload([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
-    HRESULT onload([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
-    HRESULT onerror([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
-    HRESULT onerror([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
-    HRESULT onabort([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
-    HRESULT onabort([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_NAME)]
-    HRESULT name([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_NAME)]
-    HRESULT name([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
-    HRESULT width([in] long v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
-    HRESULT width([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
-    HRESULT height([in] long v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
-    HRESULT height([retval, out] long *p);
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_START)]
-    HRESULT start([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_START)]
-    HRESULT start([retval, out] BSTR *p);
-}
-
-/*****************************************************************************
- *    IHTMLImageElementFactory interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F38E-98B5-11CF-BB82-00AAA0BDCE0B)
-]
-interface IHTMLImageElementFactory : IDispatch
-{
-    [id(DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE)]
-    HRESULT create(
-        [optional, in] VARIANT width,
-        [optional, in] VARIANT height,
-        [retval, out]  IHTMLImgElement **elem);
-}
-
-/*****************************************************************************
- *    DispHTMLImg interface
- */
-[
-    hidden,
-    uuid(3050f51c-98b5-11cf-bb82-00aa00bdce0b)
-]
-dispinterface DispHTMLImg
-{
-properties:
-methods:
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    void setAttribute(
-            [in] BSTR strAttributeName,
-            [in] VARIANT AttributeValue,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    VARIANT getAttribute(
-             [in] BSTR strAttributeName,
-             [in, defaultvalue(0)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    VARIANT_BOOL removeAttribute(
-            [in] BSTR strAttributeName,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    void className(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    BSTR className();
-
-    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
-    void id(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
-    BSTR id();
-
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    BSTR tagName();
-
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    IHTMLElement *parentElement();
-
-    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
-    IHTMLStyle *style();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    void onhelp(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    VARIANT onhelp();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    void onclick(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    VARIANT onclick();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    void ondblclick(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    VARIANT ondblclick();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    void onkeydown(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    VARIANT onkeydown();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    void onkeyup(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    VARIANT onkeyup();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    void onkeypress(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    VARIANT onkeypress();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    void onmouseout(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    VARIANT onmouseout();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    void onmouseover(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    VARIANT onmouseover();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    void onmousemove(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    VARIANT onmousemove();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    void onmousedown(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    VARIANT onmousedown();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    void onmouseup(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    VARIANT onmouseup();
-
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    IDispatch *document();
-
-    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    void title(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    BSTR title();
-
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    void language(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    BSTR language();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    void onselectstart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    VARIANT onselectstart();
-
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    void scrollIntoView([in, optional] VARIANT varargStart);
-
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    VARIANT_BOOL contains([in] IHTMLElement *pChild);
-
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
-    long sourceIndex();
-
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    VARIANT recordNumber();
-
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    void lang(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    BSTR lang();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    long offsetLeft();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    long offsetTop();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    long offsetWidth();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    long offsetHeight();
-
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    IHTMLElement *offsetParent();
-
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    void innerHTML(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    BSTR innerHTML();
-
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    void innerText(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    BSTR innerText();
-
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    void outerHTML(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    BSTR outerHTML();
-
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    void outerText(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    BSTR outerText();
-
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    void insertAdjacentHTML(
-            [in] BSTR where,
-            [in] BSTR html);
-
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    void insertAdjacentText(
-            [in] BSTR where,
-            [in] BSTR text);
-
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    IHTMLElement *parentTextEdit();
-
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    VARIANT_BOOL isTextEdit();
-
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    void click();
-
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    IHTMLFiltersCollection *filters();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    void ondragstart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    VARIANT ondragstart();
-
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    BSTR toString();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    void onbeforeupdate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    VARIANT onbeforeupdate();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    void onafterupdate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    VARIANT onafterupdate();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    void onerrorupdate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    VARIANT onerrorupdate();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    void onrowexit(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    VARIANT onrowexit();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    void onrowenter(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    VARIANT onrowenter();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    void ondatasetchanged(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    VARIANT ondatasetchanged();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    void ondataavailable(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    VARIANT ondataavailable();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    void ondatasetcomplete(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    VARIANT ondatasetcomplete();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    void onfilterchange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    VARIANT onfilterchange();
-
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    IDispatch *children();
-
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    IDispatch *all();
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    BSTR scopeName();
-
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
-
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    void releaseCapture();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    void onlosecapture(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    VARIANT onlosecapture();
-
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    BSTR componentFromPoint(
-            [in] long x,
-            [in] long y);
-
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    void doScroll([in, optional] VARIANT component);
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    void onscroll(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    VARIANT onscroll();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    void ondrag(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    VARIANT ondrag();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    void ondragend(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    VARIANT ondragend();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    void ondragenter(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    VARIANT ondragenter();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    void ondragover(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    VARIANT ondragover();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    void ondragleave(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    VARIANT ondragleave();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    void ondrop(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    VARIANT ondrop();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    void onbeforecut(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    VARIANT onbeforecut();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    void oncut(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    VARIANT oncut();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    void onbeforecopy(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    VARIANT onbeforecopy();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    void oncopy(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    VARIANT oncopy();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    void onbeforepaste(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    VARIANT onbeforepaste();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    void onpaste(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    VARIANT onpaste();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    IHTMLCurrentStyle *currentStyle();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    void onpropertychange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    VARIANT onpropertychange();
-
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    IHTMLRectCollection *getClientRects();
-
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    IHTMLRect *getBoundingClientRect();
-
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    void setExpression(
-            [in] BSTR propname,
-            [in] BSTR expression,
-            [in, defaultvalue("")] BSTR language);
-
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    VARIANT getExpression([in] BSTR propname);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    VARIANT_BOOL removeExpression([in] BSTR propname);
-
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    void tabIndex(short v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    short tabIndex();
-
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    void focus();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    void accessKey(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    BSTR accessKey();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    void onblur(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    VARIANT onblur();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    void onfocus(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    VARIANT onfocus();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    void onresize(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    VARIANT onresize();
-
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    void blur();
-
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    void addFilter([in] IUnknown *pUnk);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    void removeFilter([in] IUnknown *pUnk);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    long clientHeight();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    long clientWidth();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    long clientTop();
-
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    long clientLeft();
-
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
-
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
-
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    VARIANT readyState();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    void onreadystatechange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    VARIANT onreadystatechange();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    void onrowsdelete(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    VARIANT onrowsdelete();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    void onrowsinserted(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-     VARIANT onrowsinserted();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-     void oncellchange(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    VARIANT oncellchange();
-
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    void dir(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    BSTR dir();
-
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    IDispatch *createControlRange();
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    long scrollHeight();
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    long scrollWidth();
-
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    void scrollTop(long v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    long scrollTop();
-
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    void scrollLeft(long v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    long scrollLeft();
-
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    void clearAttributes();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    void oncontextmenu(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    VARIANT oncontextmenu();
-
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    IHTMLElement *insertAdjacentElement(
-            [in] BSTR where,
-            [in] IHTMLElement *insertedElement);
-
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    IHTMLElement *applyElement(
-            [in] IHTMLElement *apply,
-            [in] BSTR where);
-
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    BSTR getAdjacentText([in] BSTR where);
-
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    BSTR replaceAdjacentText(
-            [in] BSTR where,
-            [in] BSTR newText);
-
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    VARIANT_BOOL canHaveChildren();
-
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    long addBehavior(
-            [in] BSTR bstrUrl,
-            [in, optional] VARIANT *pvarFactory);
-
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    VARIANT_BOOL removeBehavior([in] long cookie);
-
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    IHTMLStyle *runtimeStyle();
-
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    IDispatch *behaviorUrns();
-
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    void tagUrn(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    BSTR tagUrn();
-
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    void onbeforeeditfocus(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    VARIANT onbeforeeditfocus();
-
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    long readyStateValue();
-
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
-
-    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
-    void mergeAttributes(
-            [in] IHTMLElement *mergeThis,
-            [in, optional] VARIANT *pvarFlags);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
-    VARIANT_BOOL isMultiLine();
-
-    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
-    VARIANT_BOOL canHaveHTML();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    void onlayoutcomplete(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    VARIANT onlayoutcomplete();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    void onpage(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    VARIANT onpage();
-
-    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    void inflateBlock(VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    VARIANT_BOOL inflateBlock();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    void onbeforedeactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    VARIANT onbeforedeactivate();
-
-    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
-    void setActive();
-
-    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    void contentEditable(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    BSTR contentEditable();
-
-    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
-    VARIANT_BOOL isContentEditable();
-
-    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    void hideFocus(VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    VARIANT_BOOL hideFocus();
-
-    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    void disabled(VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    VARIANT_BOOL disabled();
-
-    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
-    VARIANT_BOOL isDisabled();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    void onmove(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    VARIANT onmove();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    void oncontrolselect(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    VARIANT oncontrolselect();
-
-    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
-    VARIANT_BOOL fireEvent(
-            [in] BSTR bstrEventName,
-            [in, optional] VARIANT *pvarEventObject);
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    void onresizestart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    VARIANT onresizestart();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    void onresizeend(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    VARIANT onresizeend();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    void onmovestart(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    VARIANT onmovestart();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    void onmoveend(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    VARIANT onmoveend();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    void onmouseenter(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    VARIANT onmouseenter();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    void onmouseleave(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    VARIANT onmouseleave();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    void onactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    VARIANT onactivate();
-
-    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    void ondeactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    VARIANT ondeactivate();
-
-    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
-    VARIANT_BOOL dragDrop();
-
-    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
-    LONG glyphMode();
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    void onmousewheel(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    VARIANT onmousewheel();
-
-    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
-    void normalize();
-
-    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
-    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
-
-    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
-    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
-
-    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
-    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    void onbeforeactivate(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    VARIANT onbeforeactivate();
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    void onfocusin(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    VARIANT onfocusin();
-
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    void onfocusout(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    VARIANT onfocusout();
-
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
-    long uniqueNumber();
-
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
-    BSTR uniqueID();
-
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
-
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
-
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
-
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
-
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
-
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
-
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
-
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
-
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
-
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
-
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
-
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
-
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    HRESULT appendChild(
+        [in] IHTMLDOMNode *newChild,
+        [retval, out] IHTMLDOMNode **node);
 
     [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    HRESULT nodeName([retval, out] BSTR *p);
 
     [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    HRESULT nodeValue([in] VARIANT v);
 
     [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    HRESULT nodeValue([retval, out] VARIANT *p);
 
     [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    HRESULT firstChild([retval, out] IHTMLDOMNode **p);
 
     [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+    HRESULT lastChild([retval, out] IHTMLDOMNode **p);
 
     [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+    HRESULT previousSibling([retval, out] IHTMLDOMNode **p);
 
     [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
-
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
-
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    void dataFld(BSTR v);
-
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    BSTR dataFld();
-
-    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    void dataSrc(BSTR v);
-
-    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    BSTR dataSrc();
-
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    void dataFormatAs(BSTR v);
-
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    BSTR dataFormatAs();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
-    void isMap(VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
-    VARIANT_BOOL isMap();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
-    void useMap(BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
-    BSTR useMap();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
-    BSTR mimeType();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
-    BSTR fileSize();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
-    BSTR fileCreatedDate();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
-    BSTR fileModifiedDate();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
-    BSTR fileUpdatedDate();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
-    BSTR protocol();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
-    BSTR href();
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
-    BSTR nameProp();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
-    void border(VARIANT v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
-    VARIANT border();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
-    void vspace(long v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
-    long vspace();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
-    void hspace(long v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
-    long hspace();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
-    void alt(BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
-    BSTR alt();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
-    void src(BSTR v);
-
-    [propget, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
-    BSTR src();
-
-    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
-    void lowsrc(BSTR v);
+    HRESULT nextSibling([retval, out] IHTMLDOMNode **p);
+}
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
-    BSTR lowsrc();
+#define WINE_IHTMLDOMNODE_DISPINTERFACE_DECL                            \
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]                         \
+    LONG nodeType();                                                    \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]                       \
+    IHTMLDOMNode* parentNode();                                         \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]                             \
+    VARIANT_BOOL hasChildNodes();                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]                       \
+    IDispatch* childNodes();                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]                       \
+    IDispatch* attributes();                                            \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]                              \
+    IHTMLDOMNode* insertBefore(                                         \
+            [in] IHTMLDOMNode* newChild,                                \
+            [optional, in] VARIANT refChild);                           \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]                               \
+    IHTMLDOMNode* removeChild([in] IHTMLDOMNode* oldChild);             \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]                              \
+    IHTMLDOMNode* replaceChild(                                         \
+        [in] IHTMLDOMNode* newChild,                                    \
+        [in] IHTMLDOMNode* oldChild);                                   \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]                                 \
+    IHTMLDOMNode* cloneNode([in] VARIANT_BOOL fDeep);                   \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]                                \
+    IHTMLDOMNode* removeNode([defaultvalue(0), in] VARIANT_BOOL fDeep); \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]                                  \
+    IHTMLDOMNode* swapNode([in] IHTMLDOMNode* otherNode);               \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]                               \
+    IHTMLDOMNode* replaceNode([in] IHTMLDOMNode* replacement);          \
+                                                                        \
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]                               \
+    IHTMLDOMNode* appendChild([in] IHTMLDOMNode* newChild);             \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]                         \
+    BSTR nodeName();                                                    \
+                                                                        \
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]                        \
+    void nodeValue(VARIANT v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]                        \
+    VARIANT nodeValue();                                                \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]                       \
+    IHTMLDOMNode* firstChild();                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]                        \
+    IHTMLDOMNode* lastChild();                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]                  \
+    IHTMLDOMNode* previousSibling();                                    \
+                                                                        \
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]                      \
+    IHTMLDOMNode* nextSibling()
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
-    void vrml(BSTR v);
+/*****************************************************************************
+ *    IHTMLDOMNode2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f80b-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMNode2 : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    HRESULT ownerDocument([retval, out] IDispatch **p);
+}
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
-    BSTR vrml();
+#define WINE_IHTMLDOMNODE2_DISPINTERFACE_DECL           \
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]   \
+    IDispatch *ownerDocument()
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
-    void dynsrc(BSTR v);
+#define WINE_HTMLDOMNODE_DISPINTERFACE_DECL     \
+    WINE_IHTMLDOMNODE_DISPINTERFACE_DECL;       \
+    WINE_IHTMLDOMNODE2_DISPINTERFACE_DECL
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
-    BSTR dynsrc();
+/*****************************************************************************
+ *    IHTMLDOMAttribute interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b0-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMAttribute : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODENAME)]
+    HRESULT nodeName([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
-    VARIANT_BOOL complete();
+    [propput, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
+    HRESULT nodeValue([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
-    void loop(VARIANT v);
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE_NODEVALUE)]
+    HRESULT nodeValue([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
-    VARIANT loop();
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE_SPECIFIED)]
+    HRESULT specified([retval, out] VARIANT_BOOL *p);
+}
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
-    void align(BSTR v);
+/*****************************************************************************
+ *    IHTMLDOMAttribute2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f810-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMAttribute2 : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NAME)]
+    HRESULT name([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
-    BSTR align();
+    [propput, id(DISPID_IHTMLDOMATTRIBUTE2_VALUE)]
+    HRESULT value([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
-    void onload(VARIANT v);
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_VALUE)]
+    HRESULT value([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
-    VARIANT onload();
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_EXPANDO)]
+    HRESULT expando([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
-    void onerror(VARIANT v);
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NODETYPE)]
+    HRESULT nodeType([retval, out] long *p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
-    VARIANT onerror();
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_PARENTNODE)]
+    HRESULT parentNode([retval, out] IHTMLDOMNode **p);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
-    void onabort(VARIANT v);
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_CHILDNODES)]
+    HRESULT childNodes([retval, out] IDispatch **p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
-    VARIANT onabort();
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_FIRSTCHILD)]
+    HRESULT firstChild([retval, out] IHTMLDOMNode **p);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
-    void name(BSTR v);
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_LASTCHILD)]
+    HRESULT lastChild([retval, out] IHTMLDOMNode **p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
-    BSTR name();
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_PREVIOUSSIBLING)]
+    HRESULT previousSibling([retval, out] IHTMLDOMNode **p);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
-    void width(long v);
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_NEXTSIBLING)]
+    HRESULT nextSibling([retval, out] IHTMLDOMNode **p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
-    long width();
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_ATTRIBUTES)]
+    HRESULT attributes([retval, out] IDispatch **p);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
-    void height(long v);
+    [propget, id(DISPID_IHTMLDOMATTRIBUTE2_OWNERDOCUMENT)]
+    HRESULT ownerDocument([retval, out] IDispatch **p);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
-    long height();
+    [id(DISPID_IHTMLDOMATTRIBUTE2_INSERTBEFORE)]
+    HRESULT insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [optional, in] VARIANT refChild,
+            [retval, out] IHTMLDOMNode **node);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
-    void start(BSTR v);
+    [id(DISPID_IHTMLDOMATTRIBUTE2_REPLACECHILD)]
+    HRESULT replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild,
+            [retval, out] IHTMLDOMNode **node);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
-    BSTR start();
+    [id(DISPID_IHTMLDOMATTRIBUTE2_REMOVECHILD)]
+    HRESULT removeChild(
+            [in] IHTMLDOMNode *oldChild,
+            [retval, out] IHTMLDOMNode **node);
 
-    [propput, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
-    void longDesc(BSTR v);
+    [id(DISPID_IHTMLDOMATTRIBUTE2_APPENDCHILD)]
+    HRESULT appendChild(
+            [in] IHTMLDOMNode *newChild,
+            [retval, out] IHTMLDOMNode **node);
 
-    [propget, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
-    BSTR longDesc();
+    [id(DISPID_IHTMLDOMATTRIBUTE2_HASCHILDNODES)]
+    HRESULT hasChildNodes([retval, out] VARIANT_BOOL *fChildren);
+
+    [id(DISPID_IHTMLDOMATTRIBUTE2_CLONENODE)]
+    HRESULT cloneNode(
+            [in] VARIANT_BOOL fDeep,
+            [retval, out] IHTMLDOMAttribute **clonedNode);
 }
 
 /*****************************************************************************
- *    IHTMLBodyElement interface
+ *    IHTMLDOMTextNode interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f1d8-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f4b1-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLBodyElement : IDispatch
+interface IHTMLDOMTextNode : IDispatch
 {
-    [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
-    HRESULT background([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
-    HRESULT background([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
-    HRESULT bgProperties([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
-    HRESULT bgProperties([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
-    HRESULT leftMargin([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
-    HRESULT leftMargin([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
-    HRESULT topMargin([in] VARIANT v);
+    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    HRESULT data([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
-    HRESULT topMargin([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    HRESULT data([out, retval] BSTR *p);
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
-    HRESULT rightMargin([in] VARIANT v);
+    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
+    HRESULT toString([out, retval] BSTR *String);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
-    HRESULT rightMargin([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
+    HRESULT length([out, retval] LONG *p);
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
-    HRESULT bottomMargin([in] VARIANT v);
+    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
+    HRESULT splitText(
+            [in] LONG offset,
+            [out, retval] IHTMLDOMNode **pRetNode);
+}
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
-    HRESULT bottomMargin([retval, out] VARIANT *p);
+/*****************************************************************************
+ *    IHTMLDOMTextNode2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f809-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMTextNode2 : IDispatch
+{
+    [id(DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)]
+    HRESULT substringData([in] LONG offset,[in] LONG Count,[retval, out] BSTR* pbstrsubString);
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
-    HRESULT noWrap([in] VARIANT_BOOL v);
+    [id(DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)]
+    HRESULT appendData([in] BSTR bstrstring);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
-    HRESULT noWrap([retval, out] VARIANT_BOOL *p);
+    [id(DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)]
+    HRESULT insertData([in] LONG offset,[in] BSTR bstrstring);
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
-    HRESULT bgColor([in] VARIANT v);
+    [id(DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)]
+    HRESULT deleteData([in] LONG offset,[in] LONG Count);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
-    HRESULT bgColor([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)]
+    HRESULT replaceData([in] LONG offset,[in] LONG Count,[in] BSTR bstrstring);
+}
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
-    HRESULT text([in] VARIANT v);
+[
+    noncreatable,
+    uuid(3050f4ba-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLDOMTextNode
+{
+    [default]           dispinterface DispHTMLDOMTextNode;
+                        interface IHTMLDOMTextNode;
+                        interface IHTMLDOMTextNode2;
+                        interface IHTMLDOMNode;
+                        interface IHTMLDOMNode2;
+}
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
-    HRESULT text([retval, out] VARIANT *p);
+/*****************************************************************************
+ *    IHTMLDOMImplementation interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f80d-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMImplementation : IDispatch
+{
+    [id(DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)]
+    HRESULT hasFeature(
+        [in] BSTR bstrfeature,
+        [optional, in] VARIANT version,
+        [retval, out] VARIANT_BOOL *pfHasFeature);
+}
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
-    HRESULT link([in] VARIANT v);
+/*****************************************************************************
+ *    IHTMLDocumentCompatibleInfo interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3051041a-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDocumentCompatibleInfo : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFO_USERAGENT)]
+    HRESULT userAgent([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
-    HRESULT link([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFO_VERSION)]
+    HRESULT version([retval, out] BSTR *p);
+}
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
-    HRESULT vLink([in] VARIANT v);
+/*****************************************************************************
+ *    IHTMLDocumentCompatibleInfoCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(30510418-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDocumentCompatibleInfoCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFOCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
-    HRESULT vLink([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOCUMENTCOMPATIBLEINFOCOLLECTION_ITEM)]
+    HRESULT item([in] long i, [retval, out]IHTMLDocumentCompatibleInfo **p);
+}
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
-    HRESULT aLink([in] VARIANT v);
+/*****************************************************************************
+ *    DispHTMLDOMTextNode dispinterface
+ */
+[
+    hidden,
+    uuid(3050f565-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLDOMTextNode
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    void data(BSTR v);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
-    HRESULT aLink([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_DATA)]
+    BSTR data();
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
-    HRESULT onload([in] VARIANT v);
+    [id(DISPID_IHTMLDOMTEXTNODE_TOSTRING)]
+    BSTR toString();
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
-    HRESULT onload([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLDOMTEXTNODE_LENGTH)]
+    LONG length();
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
-    HRESULT onunload([in] VARIANT v);
+    [id(DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)]
+    IHTMLDOMNode *splitText([in] LONG offset);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
-    HRESULT onunload([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMTEXTNODE2_SUBSTRINGDATA)]
+    BSTR substringData(
+            [in] LONG offset,
+            [in] LONG Count);
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
-    HRESULT scroll([in] BSTR v);
+    [id(DISPID_IHTMLDOMTEXTNODE2_APPENDDATA)]
+    void appendData([in] BSTR bstrstring);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
-    HRESULT scroll([retval, out] BSTR *p);
+    [id(DISPID_IHTMLDOMTEXTNODE2_INSERTDATA)]
+    void insertData(
+            [in] LONG offset,
+            [in] BSTR bstrstring);
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
-    HRESULT onselect([in] VARIANT v);
+    [id(DISPID_IHTMLDOMTEXTNODE2_DELETEDATA)]
+    void deleteData(
+            [in] LONG offset,
+            [in] LONG Count);
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
-    HRESULT onselect([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMTEXTNODE2_REPLACEDATA)]
+    void replaceData(
+            [in] LONG offset,
+            [in] LONG Count,
+            [in] BSTR bstrstring);
 
-    [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
-    HRESULT onbeforeunload([in] VARIANT v);
+    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;
+}
 
-    [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
-    HRESULT onbeforeunload([retval, out] VARIANT *p);
+/*****************************************************************************
+ *    IHTMLAttributeCollection3 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(30510469-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLAttributeCollection3 : IDispatch
+{
+    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_GETNAMEDITEM)]
+    HRESULT getNamedItem(
+            [in] BSTR bstrName,
+            [retval, out] IHTMLDOMAttribute **ppNodeOut);
+
+    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_SETNAMEDITEM)]
+    HRESULT setNamedItem(
+            [in] IHTMLDOMAttribute *pNodeIn,
+            [retval, out] IHTMLDOMAttribute **ppNodeOut);
+
+    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_REMOVENAMEDITEM)]
+    HRESULT removeNamedItem(
+            [in] BSTR bstrName,
+            [retval, out] IHTMLDOMAttribute **ppNodeOut);
+
+    [id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_ITEM)]
+    HRESULT item(
+            [in] long index,
+            [retval, out] IHTMLDOMAttribute **ppNodeOut);
 
-    [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)]
-    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+    [propget, id(DISPID_IHTMLATTRIBUTECOLLECTION3_IE8_LENGTH)]
+    HRESULT length([retval, out] long *p);
 }
 
 /*****************************************************************************
- *    IHTMLBodyElement2 interface
+ *    IHTMLDOMChildrenCollection interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f5c5-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f5ab-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDOMChildrenCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
+    HRESULT length([out, retval] LONG *p);
+
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([out, retval] IUnknown **p);
+
+    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
+    HRESULT item(
+            [in] LONG index,
+            [out, retval] IDispatch **ppItem);
+}
+
+/*****************************************************************************
+ *    DispDOMChildrenCollection dispinterface
+ */
+[
+    hidden,
+    uuid(3050f577-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLBodyElement2 : IDispatch
+dispinterface DispDOMChildrenCollection
 {
-    [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
-    HRESULT onbeforeprint([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
-    HRESULT onbeforeprint([retval, out] VARIANT *p);
+properties:
+methods:
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)]
+    LONG length();
 
-    [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
-    HRESULT onafterprint([in] VARIANT v);
+    [propget, id(DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
 
-    [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
-    HRESULT onafterprint([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)]
+    IDispatch *item([in] LONG index);
 }
 
+interface IHTMLElementCollection;
+
 /*****************************************************************************
- *    IHTMLAnchorElement interface
+ *    IHTMLElement interface
  */
 [
     odl,
-    oleautomation,
     dual,
-    uuid(3050f1da-98b5-11cf-bb82-00aa00bdce0b)
+    oleautomation,
+    uuid(3050f1FF-98B5-11CF-BB82-00AA00BDCE0B)
 ]
-interface IHTMLAnchorElement : IDispatch
+interface IHTMLElement : IDispatch
 {
-    [propput, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
-    HRESULT href([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
-    HRESULT href([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
-    HRESULT target([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
-    HRESULT target([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
-    HRESULT rel([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
-    HRESULT rel([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
-    HRESULT rev([in] BSTR v);
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR strAttributeName,
+        [in] VARIANT AttributeValue,
+        [defaultvalue(1), in] LONG lFlags);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
-    HRESULT rev([retval, out] BSTR *p);
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
-    HRESULT urn([in] BSTR v);
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in] LONG lFlags,
+        [retval, out] VARIANT_BOOL *pfSuccess);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
-    HRESULT urn([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME)]
+    HRESULT className([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
-    HRESULT Methods([in] BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME)]
+    HRESULT className([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
-    HRESULT Methods([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLELEMENT_ID)]
+    HRESULT id([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
-    HRESULT name([in] BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT_ID)]
+    HRESULT id([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
-    HRESULT name([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    HRESULT tagName([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_HOST)]
-    HRESULT host([in] BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    HRESULT parentElement([retval, out] IHTMLElement **p);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_HOST)]
-    HRESULT host([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_STYLE)]
+    HRESULT style([retval, out] IHTMLStyle **p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
-    HRESULT hostname([in] BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP)]
+    HRESULT onhelp([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
-    HRESULT hostname([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP)]
+    HRESULT onhelp([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
-    HRESULT pathname([in] BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK)]
+    HRESULT onclick([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
-    HRESULT pathname([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK)]
+    HRESULT onclick([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_PORT)]
-    HRESULT port([in] BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
+    HRESULT ondblclick([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_PORT)]
-    HRESULT port([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
+    HRESULT ondblclick([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
-    HRESULT protocol([in] BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
+    HRESULT onkeydown([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
-    HRESULT protocol([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
+    HRESULT onkeydown([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
-    HRESULT search([in] BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP)]
+    HRESULT onkeyup([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
-    HRESULT search([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP)]
+    HRESULT onkeyup([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_HASH)]
-    HRESULT hash([in] BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
+    HRESULT onkeypress([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_HASH)]
-    HRESULT hash([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
+    HRESULT onkeypress([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
-    HRESULT onblur([in] VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
+    HRESULT onmouseout([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
-    HRESULT onblur([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
+    HRESULT onmouseout([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
-    HRESULT onfocus([in] VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
+    HRESULT onmouseover([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
-    HRESULT onfocus([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
+    HRESULT onmouseover([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
-    HRESULT accessKey([in] BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
+    HRESULT onmousemove([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
-    HRESULT accessKey([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
+    HRESULT onmousemove([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)]
-    HRESULT protocolLong([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
+    HRESULT onmousedown([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_MIMETYPE)]
-    HRESULT mimeType([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
+    HRESULT onmousedown([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_NAMEPROP)]
-    HRESULT nameProp([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
+    HRESULT onmouseup([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
-    HRESULT tabIndex([in] short v);
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
+    HRESULT onmouseup([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
-    HRESULT tabIndex([retval, out] short *p);
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    HRESULT document([retval, out] IDispatch **p);
 
-    [id(DISPID_IHTMLANCHORELEMENT_FOCUS)]
-    HRESULT focus();
+    [propput, id(DISPID_IHTMLELEMENT_TITLE)]
+    HRESULT title([in] BSTR v);
 
-    [id(DISPID_IHTMLANCHORELEMENT_BLUR)]
-    HRESULT blur();
-}
+    [propget, id(DISPID_IHTMLELEMENT_TITLE)]
+    HRESULT title([retval, out] BSTR *p);
 
-/*****************************************************************************
- *    IHTMLElementCollection interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F21F-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLElementCollection : IDispatch
-{
-    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
-    HRESULT toString([retval, out] BSTR *String);
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE)]
+    HRESULT language([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
-    HRESULT length([in] long v);
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE)]
+    HRESULT language([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
-    HRESULT length([retval, out] long *p);
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
+    HRESULT onselectstart([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM)]
-    HRESULT _newEnum([retval, out] IUnknown **p);
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
+    HRESULT onselectstart([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
-    HRESULT item(
-        [optional, in] VARIANT name,
-        [optional, in] VARIANT index,
-        [retval,  out] IDispatch **pdisp);
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    HRESULT scrollIntoView([optional, in] VARIANT varargStart);
 
-    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
-    HRESULT tags(
-        [in] VARIANT tagName,
-        [retval, out] IDispatch **pdisp);
-}
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    HRESULT contains(
+        [in] IHTMLElement *pChild,
+        [retval, out] VARIANT_BOOL *pfResult);
 
-/*****************************************************************************
- *    DispHTMLElementCollection dispinterface
- */
-[
-    hidden,
-    uuid(3050f56b-98b5-11cf-bb82-00aa00bdce0b)
-]
-dispinterface DispHTMLElementCollection
-{
-properties:
-methods:
-    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
-    BSTR toString();
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX)]
+    HRESULT sourceIndex([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
-    void length(long v);
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    HRESULT recordNumber([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
-    long length();
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    HRESULT lang([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM), hidden, restricted]
-    IUnknown *_newEnum();
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    HRESULT lang([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
-    IDispatch *item(
-            [in, optional] VARIANT name,
-            [in, optional] VARIANT index);
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    HRESULT offsetLeft([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
-    IDispatch *tags(
-            [in] VARIANT tagName);
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    HRESULT offsetTop([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENTCOLLECTION2_URNS)]
-    IDispatch *urns([in] VARIANT urn);
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    HRESULT offsetWidth([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)]
-    IDispatch *namedItem([in] BSTR name);
-}
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    HRESULT offsetHeight([retval, out] LONG *p);
 
-/*****************************************************************************
- *    IHTMLSelectElement interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f244-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLSelectElement : IDispatch
-{
-    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
-    HRESULT size([in] long v);
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    HRESULT offsetParent([retval, out] IHTMLElement **p);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
-    HRESULT size([retval, out] long *p);
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    HRESULT innerHTML([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
-    HRESULT multiple([in] VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    HRESULT innerHTML([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
-    HRESULT multiple([retval, out] VARIANT_BOOL *p);
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    HRESULT innerText([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
-    HRESULT name([in] BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    HRESULT innerText([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
-    HRESULT name([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    HRESULT outerHTML([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
-    HRESULT options([retval, out] IDispatch **p);
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    HRESULT outerHTML([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
-    HRESULT onchange([in] VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    HRESULT outerText([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
-    HRESULT onchange([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    HRESULT outerText([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
-    HRESULT selectedIndex([in] long v);
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    HRESULT insertAdjacentHTML([in] BSTR where, [in] BSTR html);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
-    HRESULT selectedIndex([retval, out] long *p);
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    HRESULT insertAdjacentText([in] BSTR where, [in] BSTR text);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
-    HRESULT type([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    HRESULT parentTextEdit([retval, out] IHTMLElement **p);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
-    HRESULT value([in] BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    HRESULT isTextEdit([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
-    HRESULT value([retval, out] BSTR *p);
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    HRESULT click();
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
-    HRESULT disabled([in] VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    HRESULT filters([retval, out] IHTMLFiltersCollection **p);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
-    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
+    HRESULT ondragstart([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
-    HRESULT form([retval, out] IHTMLFormElement **p);
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
+    HRESULT ondragstart([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
-    HRESULT add(
-        [in] IHTMLElement *element,
-        [optional, in] VARIANT before);
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
 
-    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
-    HRESULT remove([defaultvalue(-1), in] long index);
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
-    HRESULT length([in] long v);
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
-    HRESULT length([retval, out] long *p);
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
+    HRESULT onafterupdate([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
-    HRESULT _newEnum([retval, out] IUnknown **p);
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
+    HRESULT onafterupdate([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
-    HRESULT item(
-        [optional, in] VARIANT name,
-        [optional, in] VARIANT index,
-        [retval, out] IDispatch **pdisp);
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
+    HRESULT onerrorupdate([in] VARIANT v);
 
-    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
-    HRESULT tags(
-        [in] VARIANT tagName,
-        [retval, out] IDispatch **pdisp);
-}
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
+    HRESULT onerrorupdate([retval, out] VARIANT *p);
 
-/*****************************************************************************
- *    DispHTMLSelectElement dispinterface
- */
-[
-    hidden,
-    uuid(3050f531-98b5-11cf-bb82-00aa00bdce0b)
-]
-dispinterface DispHTMLSelectElement
-{
-properties:
-methods:
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    void setAttribute(
-            [in] BSTR strAttributeName,
-            [in] VARIANT AttributeValue,
-            [in, defaultvalue(1)] LONG lFlags);
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
+    HRESULT onrowexit([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    VARIANT getAttribute(
-             [in] BSTR strAttributeName,
-             [in, defaultvalue(0)] LONG lFlags);
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
+    HRESULT onrowexit([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    VARIANT_BOOL removeAttribute(
-            [in] BSTR strAttributeName,
-            [in, defaultvalue(1)] LONG lFlags);
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER)]
+    HRESULT onrowenter([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    void className(BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER)]
+    HRESULT onrowenter([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    BSTR className();
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
+    HRESULT ondatasetchanged([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
-    void id(BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
+    HRESULT ondatasetchanged([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
-    BSTR id();
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    BSTR tagName();
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    IHTMLElement *parentElement();
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
+    HRESULT ondatasetcomplete([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
-    IHTMLStyle *style();
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
+    HRESULT ondatasetcomplete([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    void onhelp(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
+    HRESULT onfilterchange([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    VARIANT onhelp();
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
+    HRESULT onfilterchange([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    void onclick(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    HRESULT children([retval, out] IDispatch **p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    VARIANT onclick();
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    HRESULT all([retval, out] IDispatch **p);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    void ondblclick(VARIANT v);
+#define WINE_IHTMLELEMENT_DISPINTERFACE_DECL                            \
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]                              \
+    void setAttribute(                                                  \
+        [in] BSTR strAttributeName,                                     \
+        [in] VARIANT AttValue,                                          \
+        [defaultvalue(1), in] LONG lFlags);                             \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]                              \
+    VARIANT getAttribute(                                               \
+        [in] BSTR strAttributeName,                                     \
+        [defaultvalue(0), in] LONG lFlags);                             \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]                           \
+    VARIANT_BOOL removeAttribute(                                       \
+        [in] BSTR strAttributeName,                                     \
+        [defaultvalue(1), in] LONG lFlags);                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]              \
+    void className(BSTR v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]              \
+    BSTR className();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]                     \
+    void id(BSTR v);                                                    \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]                     \
+    BSTR id();                                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]                          \
+    BSTR tagName();                                                     \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]                    \
+    IHTMLElement *parentElement();                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]              \
+    IHTMLStyle *style();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]    \
+    void onhelp(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]    \
+    VARIANT onhelp();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]   \
+    void onclick(VARIANT v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]   \
+    VARIANT onclick();                                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]\
+    void ondblclick(VARIANT v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]\
+    VARIANT ondblclick();                                               \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] \
+    void onkeydown(VARIANT v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] \
+    VARIANT onkeydown();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]   \
+    void onkeyup(VARIANT v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]   \
+    VARIANT onkeyup();                                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]\
+    void onkeypress(VARIANT v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]\
+    VARIANT onkeypress();                                               \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]\
+    void onmouseout(VARIANT v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]\
+    VARIANT onmouseout();                                               \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] \
+    void onmouseover(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] \
+    VARIANT onmouseover();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] \
+    void onmousemove(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] \
+    VARIANT onmousemove();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] \
+    void onmousedown(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] \
+    VARIANT onmousedown();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] \
+    void onmouseup(VARIANT v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] \
+    VARIANT onmouseup();                                                \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)] IDispatch* document();  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]     \
+    void title(BSTR v);                                                 \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]     \
+    BSTR title();                                                       \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]  \
+    void language(BSTR v);                                              \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]  \
+    BSTR language();                                                    \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] \
+    void onselectstart(VARIANT v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] \
+    VARIANT onselectstart();                                            \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]                            \
+    void scrollIntoView([optional, in] VARIANT varargStart);            \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]                                  \
+    VARIANT_BOOL contains([in] IHTMLElement* pChild);                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]            \
+    LONG sourceIndex();                                                 \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]                     \
+    VARIANT recordNumber();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]                             \
+    void lang(BSTR v);                                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]                             \
+    BSTR lang();                                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]                       \
+    LONG offsetLeft();                                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]                        \
+    LONG offsetTop();                                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]                      \
+    LONG offsetWidth();                                                 \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]                     \
+    LONG offsetHeight();                                                \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]                     \
+    IHTMLElement* offsetParent();                                       \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]                        \
+    void innerHTML(BSTR v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]                        \
+    BSTR innerHTML();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]                        \
+    void innerText(BSTR v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]                        \
+    BSTR innerText();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]                        \
+    void outerHTML(BSTR v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]                        \
+    BSTR outerHTML();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]                        \
+    void outerText(BSTR v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]                        \
+    BSTR outerText();                                                   \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]                        \
+    void insertAdjacentHTML(                                            \
+        [in] BSTR where,                                                \
+        [in] BSTR html);                                                \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]                        \
+    void insertAdjacentText(                                            \
+        [in] BSTR where,                                                \
+        [in] BSTR text);                                                \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]                   \
+    IHTMLElement* parentTextEdit();                                     \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]                       \
+    VARIANT_BOOL isTextEdit();                                          \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_CLICK)]                                     \
+    void click();                                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]                          \
+    IHTMLFiltersCollection* filters();                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] \
+    void ondragstart(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable] \
+    VARIANT ondragstart();                                              \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]                                  \
+    BSTR toString();                                                    \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] \
+    void onbeforeupdate(VARIANT v);                                     \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] \
+    VARIANT onbeforeupdate();                                           \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] \
+    void onafterupdate(VARIANT v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] \
+    VARIANT onafterupdate();                                            \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] \
+    void onerrorupdate(VARIANT v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] \
+    VARIANT onerrorupdate();                                            \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] \
+    void onrowexit(VARIANT v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] \
+    VARIANT onrowexit();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] \
+    void onrowenter(VARIANT v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] \
+    VARIANT onrowenter();                                               \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] \
+    void ondatasetchanged(VARIANT v);                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] \
+    VARIANT ondatasetchanged();                                         \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] \
+    void ondataavailable(VARIANT v);                                    \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] \
+    VARIANT ondataavailable();                                          \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] \
+    void ondatasetcomplete(VARIANT v);                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] \
+    VARIANT ondatasetcomplete();                                        \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] \
+    void onfilterchange(VARIANT v);                                     \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] \
+    VARIANT onfilterchange();                                           \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]                         \
+    IDispatch* children();                                              \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]                              \
+    IDispatch* all()
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    VARIANT ondblclick();
+/*****************************************************************************
+ *    IHTMLElement2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f434-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLElement2 : IDispatch
+{
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    HRESULT scopeName([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    void onkeydown(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    HRESULT setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    VARIANT onkeydown();
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    HRESULT releaseCapture();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    void onkeyup(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    HRESULT onlosecapture([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    VARIANT onkeyup();
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    HRESULT onlosecapture([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    void onkeypress(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    HRESULT componentFromPoint(
+        [in] LONG x,
+        [in] LONG y,
+        [retval, out] BSTR *component);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    VARIANT onkeypress();
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    HRESULT doScroll([optional, in] VARIANT component);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    void onmouseout(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    VARIANT onmouseout();
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    void onmouseover(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    HRESULT ondrag([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    VARIANT onmouseover();
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    HRESULT ondrag([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    void onmousemove(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    HRESULT ondragend([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    VARIANT onmousemove();
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    HRESULT ondragend([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    void onmousedown(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    HRESULT ondragenter([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    VARIANT onmousedown();
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    HRESULT ondragenter([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    void onmouseup(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    HRESULT ondragover([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    VARIANT onmouseup();
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    HRESULT ondragover([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    HRESULT ondragleave([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    IDispatch *document();
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    HRESULT ondragleave([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    void title(BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    HRESULT ondrop([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    BSTR title();
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    HRESULT ondrop([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    void language(BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    HRESULT onbeforecut([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    BSTR language();
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    HRESULT onbeforecut([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    void onselectstart(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    HRESULT oncut([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    VARIANT onselectstart();
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    HRESULT oncut([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    void scrollIntoView([in, optional] VARIANT varargStart);
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    HRESULT onbeforecopy([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    HRESULT onbeforecopy([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
-    long sourceIndex();
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    HRESULT oncopy([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    VARIANT recordNumber();
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    HRESULT oncopy([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    void lang(BSTR v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    HRESULT onbeforepaste([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    BSTR lang();
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    HRESULT onbeforepaste([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    long offsetLeft();
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    HRESULT onpaste([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    long offsetTop();
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    HRESULT onpaste([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    long offsetWidth();
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    HRESULT currentStyle([retval, out] IHTMLCurrentStyle **p);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    long offsetHeight();
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    HRESULT onpropertychange([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    IHTMLElement *offsetParent();
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    HRESULT onpropertychange([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    void innerHTML(BSTR v);
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    HRESULT getClientRects([retval, out] IHTMLRectCollection **pRectCol);
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    BSTR innerHTML();
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    HRESULT getBoundingClientRect([retval, out] IHTMLRect **pRect);
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    void innerText(BSTR v);
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    HRESULT setExpression(
+        [in] BSTR propname,
+        [in] BSTR expression,
+        [defaultvalue(""), in] BSTR language);
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    BSTR innerText();
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    HRESULT getExpression(
+        [in] BSTR propname,
+        [retval, out] VARIANT *expression);
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    void outerHTML(BSTR v);
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    HRESULT removeExpression(
+        [in] BSTR propname,
+        [retval, out] VARIANT_BOOL *pfSuccess);
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    BSTR outerHTML();
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([in] short v);
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    void outerText(BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([retval, out] short *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    BSTR outerText();
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    HRESULT focus();
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    void insertAdjacentHTML(
-            [in] BSTR where,
-            [in] BSTR html);
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    void insertAdjacentText(
-            [in] BSTR where,
-            [in] BSTR text);
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    IHTMLElement *parentTextEdit();
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    HRESULT onblur([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    VARIANT_BOOL isTextEdit();
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    HRESULT onblur([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    void click();
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    IHTMLFiltersCollection *filters();
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    void ondragstart(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    VARIANT ondragstart();
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    BSTR toString();
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    HRESULT blur();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    void onbeforeupdate(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    HRESULT addFilter([in] IUnknown *pUnk);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    VARIANT onbeforeupdate();
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    HRESULT removeFilter([in] IUnknown *pUnk);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    void onafterupdate(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    HRESULT clientHeight([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    VARIANT onafterupdate();
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    HRESULT clientWidth([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    void onerrorupdate(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    HRESULT clientTop([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    VARIANT onerrorupdate();
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    HRESULT clientLeft([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    void onrowexit(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    HRESULT attachEvent(
+        [in] BSTR event,
+        [in] IDispatch *pDisp,
+        [retval, out] VARIANT_BOOL *pfResult);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    VARIANT onrowexit();
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    HRESULT detachEvent(
+        [in] BSTR event,
+        [in] IDispatch *pDisp);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    void onrowenter(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    HRESULT readyState([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    VARIANT onrowenter();
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    void ondatasetchanged(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    VARIANT ondatasetchanged();
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    HRESULT onrowsdelete([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    void ondataavailable(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    HRESULT onrowsdelete([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    VARIANT ondataavailable();
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    HRESULT onrowsinserted([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    void ondatasetcomplete(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    HRESULT onrowsinserted([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    VARIANT ondatasetcomplete();
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    HRESULT oncellchange([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    void onfilterchange(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    HRESULT oncellchange([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    VARIANT onfilterchange();
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    HRESULT dir([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    IDispatch *children();
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    HRESULT dir([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    IDispatch *all();
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    HRESULT createControlRange([retval, out] IDispatch **range);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    BSTR scopeName();
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    HRESULT scrollHeight([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    HRESULT scrollWidth([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    void releaseCapture();
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([in] LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    void onlosecapture(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    VARIANT onlosecapture();
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([in] LONG v);
 
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    BSTR componentFromPoint(
-            [in] long x,
-            [in] long y);
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    void doScroll([in, optional] VARIANT component);
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    HRESULT clearAttributes();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    void onscroll(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_MERGEATTRIBUTES)]
+    HRESULT mergeAttributes([in] IHTMLElement *mergeThis);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    VARIANT onscroll();
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    HRESULT oncontextmenu([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    void ondrag(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    HRESULT oncontextmenu([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    VARIANT ondrag();
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    HRESULT insertAdjacentElement(
+        [in] BSTR where,
+        [in] IHTMLElement *insertedElement,
+        [retval, out] IHTMLElement **inserted);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    void ondragend(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    HRESULT applyElement(
+        [in] IHTMLElement *apply,
+        [in] BSTR where,
+        [retval, out] IHTMLElement **applied);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    VARIANT ondragend();
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    HRESULT getAdjacentText(
+        [in] BSTR where,
+        [retval, out] BSTR *text);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    void ondragenter(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    HRESULT replaceAdjacentText(
+        [in] BSTR where,
+        [in] BSTR newText,
+        [retval, out] BSTR *oldText);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    VARIANT ondragenter();
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    HRESULT canHaveChildren([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    void ondragover(VARIANT v);
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    HRESULT addBehavior(
+        [in] BSTR bstrUrl,
+        [optional, in] VARIANT *pvarFactory,
+        [retval, out] LONG *pCookie);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    VARIANT ondragover();
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    HRESULT removeBehavior(
+        [in] LONG cookie,
+        [retval, out] VARIANT_BOOL *pfResult);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    void ondragleave(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    HRESULT runtimeStyle([retval, out] IHTMLStyle **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    VARIANT ondragleave();
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    HRESULT behaviorUrns([retval, out] IDispatch **p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    void ondrop(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    HRESULT tagUrn([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    VARIANT ondrop();
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    HRESULT tagUrn([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    void onbeforecut(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    HRESULT onbeforeeditfocus([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    VARIANT onbeforecut();
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    HRESULT onbeforeeditfocus([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    void oncut(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    HRESULT readyStateValue([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    VARIANT oncut();
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    HRESULT getElementsByTagName(
+        [in] BSTR v,
+        [retval, out] IHTMLElementCollection **pelColl);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    void onbeforecopy(VARIANT v);
+#define WINE_IHTMLELEMENT2_DISPINTERFACE_DECL                           \
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]                       \
+    BSTR scopeName();                                                   \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]                               \
+    void setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture); \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]                           \
+    void releaseCapture();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] \
+    void onlosecapture(VARIANT v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable] \
+    VARIANT onlosecapture();                                            \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]                       \
+    BSTR componentFromPoint([in] LONG x,[in] LONG y);                   \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]                                 \
+    void doScroll([optional, in] VARIANT component);                    \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] \
+    void onscroll(VARIANT v);                                           \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable] \
+    VARIANT onscroll();                                                 \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]   \
+    void ondrag(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]   \
+    VARIANT ondrag();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] \
+    void ondragend(VARIANT v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable] \
+    VARIANT ondragend();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] \
+    void ondragenter(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable] \
+    VARIANT ondragenter();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] \
+    void ondragover(VARIANT v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable] \
+    VARIANT ondragover();                                               \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] \
+    void ondragleave(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable] \
+    VARIANT ondragleave();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]   \
+    void ondrop(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]   \
+    VARIANT ondrop();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] \
+    void onbeforecut(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable] \
+    VARIANT onbeforecut();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]    \
+    void oncut(VARIANT v);                                              \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]    \
+    VARIANT oncut();                                                    \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] \
+    void onbeforecopy(VARIANT v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable] \
+    VARIANT onbeforecopy();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]   \
+    void oncopy(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]   \
+    VARIANT oncopy();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] \
+    void onbeforepaste(VARIANT v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable] \
+    VARIANT onbeforepaste();                                            \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]  \
+    void onpaste(VARIANT v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]  \
+    VARIANT onpaste();                                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]      \
+    IHTMLCurrentStyle* currentStyle();                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] \
+    void onpropertychange(VARIANT v);                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable] \
+    VARIANT onpropertychange();                                         \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]                           \
+    IHTMLRectCollection* getClientRects();                              \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]                    \
+    IHTMLRect* getBoundingClientRect();                                 \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]                            \
+    void setExpression(                                                 \
+        [in] BSTR propname,                                             \
+        [in] BSTR expr,                                                 \
+        [defaultvalue(""), in] BSTR lang);                              \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]                            \
+    VARIANT getExpression([in] BSTR propname);                          \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]                         \
+    VARIANT_BOOL removeExpression([in] BSTR propname);                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] \
+    void tabIndex(short v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable] \
+    short tabIndex();                                                   \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]                                    \
+    void focus();                                                       \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]\
+    void accessKey(BSTR v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]\
+    BSTR accessKey();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]   \
+    void onblur(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]   \
+    VARIANT onblur();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]  \
+    void onfocus(VARIANT v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]  \
+    VARIANT onfocus();                                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] \
+    void onresize(VARIANT v);                                           \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable] \
+    VARIANT onresize();                                                 \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_BLUR)]                                     \
+    void blur();                                                        \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]                                \
+    void addFilter([in] IUnknown* pUnk);                                \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]                             \
+    void removeFilter([in] IUnknown* pUnk);                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable] \
+    LONG clientHeight();                                                \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable] \
+    LONG clientWidth();                                                 \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable] \
+    LONG clientTop();                                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable] \
+    LONG clientLeft();                                                  \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]                              \
+    VARIANT_BOOL attachEvent(                                           \
+            [in] BSTR event,                                            \
+            [in] IDispatch* pDisp);                                     \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]                              \
+    void detachEvent(                                                   \
+            [in] BSTR event,                                            \
+            [in] IDispatch* pDisp);                                     \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)] VARIANT readyState(); \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] \
+    void onreadystatechange(VARIANT v);                                 \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable] \
+    VARIANT onreadystatechange();                                       \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] \
+    void onrowsdelete(VARIANT v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable] \
+    VARIANT onrowsdelete();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] \
+    void onrowsinserted(VARIANT v);                                     \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable] \
+    VARIANT onrowsinserted();                                           \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] \
+    void oncellchange(VARIANT v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable] \
+    VARIANT oncellchange();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]      \
+    void dir(BSTR v);                                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]      \
+    BSTR dir();                                                         \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]                       \
+    IDispatch* createControlRange();                                    \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable] \
+    LONG scrollHeight();                                                \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable] \
+    LONG scrollWidth();                                                 \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]\
+    void scrollTop(LONG v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]\
+    LONG scrollTop();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] \
+    void scrollLeft(LONG v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable] \
+    LONG scrollLeft();                                                  \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]                          \
+    void clearAttributes();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] \
+    void oncontextmenu(VARIANT v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable] \
+    VARIANT oncontextmenu();                                            \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]                    \
+    IHTMLElement* insertAdjacentElement(                                \
+        [in] BSTR where,                                                \
+        [in] IHTMLElement* insertedElement);                            \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]                             \
+    IHTMLElement* applyElement([in] IHTMLElement* apply,[in] BSTR where); \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]                          \
+    BSTR getAdjacentText([in] BSTR where);                              \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]                      \
+    BSTR replaceAdjacentText([in] BSTR where,[in] BSTR newText);        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]                 \
+    VARIANT_BOOL canHaveChildren();                                     \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]                              \
+    LONG addBehavior([in] BSTR bstrUrl,[optional, in] VARIANT* pvarFactory); \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]                           \
+    VARIANT_BOOL removeBehavior([in] LONG cookie);                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]      \
+    IHTMLStyle* runtimeStyle();                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]                    \
+    IDispatch* behaviorUrns();                                          \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]                          \
+    void tagUrn(BSTR v);                                                \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]                          \
+    BSTR tagUrn();                                                      \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] \
+    void onbeforeeditfocus(VARIANT v);                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable] \
+    VARIANT onbeforeeditfocus();                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted] \
+    LONG readyStateValue();                                             \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]                     \
+    IHTMLElementCollection* getElementsByTagName([in] BSTR v)
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    VARIANT onbeforecopy();
+/*****************************************************************************
+ *    IHTMLElement3 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f673-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLElement3 : IDispatch
+{
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)] HRESULT mergeAttributes([in]
+    IHTMLElement* mergeThis,[optional, in] VARIANT* pvarFlags);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    void oncopy(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    HRESULT isMultiLine([retval, out] VARIANT_BOOL * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    VARIANT oncopy();
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    HRESULT canHaveHTML([retval, out] VARIANT_BOOL * p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    void onbeforepaste(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    HRESULT onlayoutcomplete([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    VARIANT onbeforepaste();
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    HRESULT onlayoutcomplete([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    void onpaste(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    HRESULT onpage([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    VARIANT onpaste();
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    HRESULT onpage([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    IHTMLCurrentStyle *currentStyle();
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    HRESULT inflateBlock([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    void onpropertychange(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    HRESULT inflateBlock([retval, out] VARIANT_BOOL * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    VARIANT onpropertychange();
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    HRESULT onbeforedeactivate([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    IHTMLRectCollection *getClientRects();
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    HRESULT onbeforedeactivate([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    IHTMLRect *getBoundingClientRect();
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)] HRESULT setActive();
 
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    void setExpression(
-            [in] BSTR propname,
-            [in] BSTR expression,
-            [in, defaultvalue("")] BSTR language);
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    HRESULT contentEditable([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    VARIANT getExpression([in] BSTR propname);
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    HRESULT contentEditable([retval, out] BSTR * p);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    VARIANT_BOOL removeExpression([in] BSTR propname);
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    HRESULT isContentEditable([retval, out] VARIANT_BOOL * p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    void tabIndex(short v);
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    HRESULT hideFocus([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    short tabIndex();
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    HRESULT hideFocus([retval, out] VARIANT_BOOL * p);
 
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    void focus();
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    void accessKey(BSTR v);
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    BSTR accessKey();
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    HRESULT isDisabled([retval, out] VARIANT_BOOL * p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    void onblur(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    HRESULT onmove([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    VARIANT onblur();
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    HRESULT onmove([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    void onfocus(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    HRESULT oncontrolselect([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    VARIANT onfocus();
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    HRESULT oncontrolselect([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    void onresize(VARIANT v);
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    HRESULT fireEvent(
+        [in] BSTR bstrEventName,
+        [optional, in] VARIANT* pvarEventObject,
+        [retval, out] VARIANT_BOOL* pfCancelled);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    VARIANT onresize();
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    HRESULT onresizestart([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    void blur();
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    HRESULT onresizestart([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    void addFilter([in] IUnknown *pUnk);
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    HRESULT onresizeend([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    void removeFilter([in] IUnknown *pUnk);
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    HRESULT onresizeend([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    long clientHeight();
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    HRESULT onmovestart([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    long clientWidth();
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    HRESULT onmovestart([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    long clientTop();
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    HRESULT onmoveend([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    long clientLeft();
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    HRESULT onmoveend([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    HRESULT onmouseenter([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    HRESULT onmouseenter([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    VARIANT readyState();
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    HRESULT onmouseleave([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    void onreadystatechange(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    HRESULT onmouseleave([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    VARIANT onreadystatechange();
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    HRESULT onactivate([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    void onrowsdelete(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    HRESULT onactivate([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    VARIANT onrowsdelete();
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    HRESULT ondeactivate([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    void onrowsinserted(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    HRESULT ondeactivate([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-     VARIANT onrowsinserted();
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)] HRESULT dragDrop([retval, out]
+    VARIANT_BOOL* pfRet);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-     void oncellchange(VARIANT v);
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    HRESULT glyphMode([retval, out] LONG * p);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    VARIANT oncellchange();
+#define WINE_IHTMLELEMENT3_DISPINTERFACE_DECL                           \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]                          \
+    void mergeAttributes(                                               \
+            [in] IHTMLElement* mergeThis,                               \
+            [optional, in] VARIANT* pvarFlags);                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]                     \
+    VARIANT_BOOL isMultiLine();                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]                     \
+    VARIANT_BOOL canHaveHTML();                                         \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] \
+    void onlayoutcomplete(VARIANT v);                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] \
+    VARIANT onlayoutcomplete();                                         \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]   \
+    void onpage(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]   \
+    VARIANT onpage();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] \
+    void inflateBlock(VARIANT_BOOL v);                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable] \
+    VARIANT_BOOL inflateBlock();                                        \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] \
+    void onbeforedeactivate(VARIANT v);                                 \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable] \
+    VARIANT onbeforedeactivate();                                       \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]                                \
+    void setActive();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] \
+    void contentEditable(BSTR v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable] \
+    BSTR contentEditable();                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]               \
+    VARIANT_BOOL isContentEditable();                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]\
+    void hideFocus(VARIANT_BOOL v);                                     \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]\
+    VARIANT_BOOL hideFocus();                                           \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] \
+    void disabled(VARIANT_BOOL v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable] \
+    VARIANT_BOOL disabled();                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]                      \
+    VARIANT_BOOL isDisabled();                                          \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]   \
+    void onmove(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]   \
+    VARIANT onmove();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] \
+    void oncontrolselect(VARIANT v);                                    \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] \
+    VARIANT oncontrolselect();                                          \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]                                \
+    VARIANT_BOOL fireEvent(                                             \
+        [in] BSTR bstrEventName,                                        \
+        [optional, in] VARIANT* pvarEventObject);                       \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] \
+    void onresizestart(VARIANT v);                                      \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable] \
+    VARIANT onresizestart();                                            \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] \
+    void onresizeend(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable] \
+    VARIANT onresizeend();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] \
+    void onmovestart(VARIANT v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable] \
+    VARIANT onmovestart();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]\
+    void onmoveend(VARIANT v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]\
+    VARIANT onmoveend();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] \
+    void onmouseenter(VARIANT v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable] \
+    VARIANT onmouseenter();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] \
+    void onmouseleave(VARIANT v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable] \
+    VARIANT onmouseleave();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] \
+    void onactivate(VARIANT v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable] \
+    VARIANT onactivate();                                               \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] \
+    void ondeactivate(VARIANT v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable] \
+    VARIANT ondeactivate();                                             \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]                                 \
+    VARIANT_BOOL dragDrop();                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable] \
+    LONG glyphMode()
 
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    void dir(BSTR v);
+/*****************************************************************************
+ *    IHTMLElement4 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f80f-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLElement4 : IDispatch
+{
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    HRESULT onmousewheel([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    BSTR dir();
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    HRESULT onmousewheel([retval, out] VARIANT * p);
 
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    IDispatch *createControlRange();
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    HRESULT normalize();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    long scrollHeight();
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    HRESULT getAttributeNode([in] BSTR bstrname,
+        [retval, out] IHTMLDOMAttribute** ppAttribute);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    long scrollWidth();
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    HRESULT setAttributeNode(
+        [in] IHTMLDOMAttribute* pattr,
+        [retval, out] IHTMLDOMAttribute** ppretAttribute);
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    void scrollTop(long v);
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    HRESULT removeAttributeNode(
+        [in] IHTMLDOMAttribute* pattr,
+        [retval, out] IHTMLDOMAttribute** ppretAttribute);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    long scrollTop();
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    HRESULT onbeforeactivate([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    void scrollLeft(long v);
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    HRESULT onbeforeactivate([retval, out] VARIANT * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    long scrollLeft();
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    HRESULT onfocusin([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    void clearAttributes();
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    HRESULT onfocusin([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    void oncontextmenu(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    HRESULT onfocusout([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    VARIANT oncontextmenu();
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    HRESULT onfocusout([retval, out] VARIANT * p);
+}
 
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    IHTMLElement *insertAdjacentElement(
-            [in] BSTR where,
-            [in] IHTMLElement *insertedElement);
+#define WINE_IHTMLELEMENT4_DISPINTERFACE_DECL                           \
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] \
+    void onmousewheel(VARIANT v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] \
+    VARIANT onmousewheel();                                             \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]                                \
+    void normalize();                                                   \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]                         \
+    IHTMLDOMAttribute* getAttributeNode([in] BSTR bstrname);            \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]                         \
+    IHTMLDOMAttribute* setAttributeNode([in] IHTMLDOMAttribute* pattr); \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]                      \
+    IHTMLDOMAttribute* removeAttributeNode([in] IHTMLDOMAttribute* pattr); \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] \
+    void onbeforeactivate(VARIANT v);                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable] \
+    VARIANT onbeforeactivate();                                         \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]\
+    void onfocusin(VARIANT v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]\
+    VARIANT onfocusin();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] \
+    void onfocusout(VARIANT v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] \
+    VARIANT onfocusout()
+
+#define WINE_IELEMENTSELECTOR_DISPINTERFACE_DECL                \
+    [id(DISPID_IELEMENTSELECTOR_QUERYSELECTOR)]                 \
+    IHTMLElement *querySelector([in] BSTR v);                   \
+                                                                \
+    [id(DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)]              \
+    IHTMLDOMChildrenCollection *querySelectorAll([in] BSTR v)
 
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    IHTMLElement *applyElement(
-            [in] IHTMLElement *apply,
-            [in] BSTR where);
+/*****************************************************************************
+ *    IHTMLUniqueName interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4d0-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLUniqueName : IDispatch
+{
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    HRESULT uniqueNumber([retval, out] LONG * p);
 
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    BSTR getAdjacentText([in] BSTR where);
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    HRESULT uniqueID([retval, out] BSTR * p);
+}
 
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    BSTR replaceAdjacentText(
-            [in] BSTR where,
-            [in] BSTR newText);
+#define WINE_IHTMLUNIQUENAME_DISPINTERFACE_DECL                 \
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]  \
+    LONG uniqueNumber();                                        \
+                                                                \
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]      \
+    BSTR uniqueID()
+
+#define WINE_IHTMLELEMENT5_DISPINTERFACE_DECL                           \
+    [id(DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)]                     \
+    IHTMLDOMAttribute2 *ie8_getAttributeNode([in] BSTR bstrname);       \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)]                     \
+    IHTMLDOMAttribute2 *ie8_setAttributeNode([in] IHTMLDOMAttribute2 *pattr); \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)]                  \
+    IHTMLDOMAttribute2 *ie8_removeAttributeNode([in] IHTMLDOMAttribute2 *pattr); \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT5_HASATTRIBUTE)]                             \
+    VARIANT_BOOL hasAttribute([in] BSTR name);                          \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable]     \
+    void role(BSTR v);                                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable]     \
+    BSTR role();                                                        \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] \
+    void ariaBusy(BSTR v);                                              \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] \
+    BSTR ariaBusy();                                                    \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] \
+    void ariaChecked(BSTR v);                                           \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] \
+    BSTR ariaChecked();                                                 \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] \
+    void ariaDisabled(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] \
+    BSTR ariaDisabled();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] \
+    void ariaExpanded(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] \
+    BSTR ariaExpanded();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable]\
+    void ariaHaspopup(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] \
+    BSTR ariaHaspopup();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] \
+    void ariaHidden(BSTR v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] \
+    BSTR ariaHidden();                                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] \
+    void ariaInvalid(BSTR v);                                           \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] \
+    BSTR ariaInvalid();                                                 \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] \
+    void ariaMultiselectable(BSTR v);                                   \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] \
+    BSTR ariaMultiselectable();                                         \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] \
+    void ariaPressed(BSTR v);                                           \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] \
+    BSTR ariaPressed();                                                 \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] \
+    void ariaReadonly(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] \
+    BSTR ariaReadonly();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] \
+    void ariaRequired(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] \
+    BSTR ariaRequired();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] \
+    void ariaSecret(BSTR v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] \
+    BSTR ariaSecret();                                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] \
+    void ariaSelected(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] \
+    BSTR ariaSelected();                                                \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)]                         \
+    VARIANT ie8_getAttribute([in] BSTR strAttributeName);               \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)]                         \
+    void ie8_setAttribute([in] BSTR strAttributeName,[in] VARIANT AttributeValue); \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)]                      \
+    VARIANT_BOOL ie8_removeAttribute([in] BSTR strAttributeName);       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)]                  \
+    IHTMLAttributeCollection3 *ie8_attributes();                        \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] \
+    void ariaValuenow(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] \
+    BSTR ariaValuenow();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] \
+    void ariaPosinset(short v);                                         \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] \
+    short ariaPosinset();                                               \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] \
+    void ariaSetsize(short v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] \
+    short ariaSetsize();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable]\
+    void ariaLevel(short v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable]\
+    short ariaLevel();                                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] \
+    void ariaValuemin(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] \
+    BSTR ariaValuemin();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] \
+    void ariaValuemax(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] \
+    BSTR ariaValuemax();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] \
+    void ariaControls(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] \
+    BSTR ariaControls();                                                \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] \
+    void ariaDescribedby(BSTR v);                                       \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] \
+    BSTR ariaDescribedby();                                             \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] \
+    void ariaFlowto(BSTR v);                                            \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] \
+    BSTR ariaFlowto();                                                  \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] \
+    void ariaLabelledby(BSTR v);                                        \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] \
+    BSTR ariaLabelledby();                                              \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] \
+    void ariaActivedescendant(BSTR v);                                  \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] \
+    BSTR ariaActivedescendant();                                        \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] \
+    void ariaOwns(BSTR v);                                              \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] \
+    BSTR ariaOwns();                                                    \
+                                                                        \
+    [id(DISPID_IHTMLELEMENT5_HASATTRIBUTES)]                            \
+    VARIANT_BOOL hasAttributes();                                       \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] \
+    void ariaLive(BSTR v);                                              \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] \
+    BSTR ariaLive();                                                    \
+                                                                        \
+    [propput, id(DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] \
+    void ariaRelevant(BSTR v);                                          \
+                                                                        \
+    [propget, id(DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] \
+    BSTR ariaRelevant()
 
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    VARIANT_BOOL canHaveChildren();
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f3f2-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDatabinding : IDispatch
+{
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    HRESULT dataFld([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    long addBehavior(
-            [in] BSTR bstrUrl,
-            [in, optional] VARIANT *pvarFactory);
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    HRESULT dataFld([retval, out] BSTR * p);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    VARIANT_BOOL removeBehavior([in] long cookie);
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    HRESULT dataSrc([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    IHTMLStyle *runtimeStyle();
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    HRESULT dataSrc([retval, out] BSTR * p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    IDispatch *behaviorUrns();
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    HRESULT dataFormatAs([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    void tagUrn(BSTR v);
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    HRESULT dataFormatAs([retval, out] BSTR * p);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    BSTR tagUrn();
+#define WINE_IHTMLDATABINDING_DISPINTERFACE_DECL        \
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]      \
+    void dataFld(BSTR v);                               \
+                                                        \
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]      \
+    BSTR dataFld();                                     \
+                                                        \
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]      \
+    void dataSrc(BSTR v);                               \
+                                                        \
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]      \
+    BSTR dataSrc();                                     \
+                                                        \
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)] \
+    void dataFormatAs(BSTR v);                          \
+                                                        \
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)] \
+    BSTR dataFormatAs()
+
+#define WINE_HTMLELEMENT_DISPINTERFACE_DECL     \
+    WINE_IHTMLELEMENT_DISPINTERFACE_DECL;       \
+    WINE_IHTMLELEMENT2_DISPINTERFACE_DECL;      \
+    WINE_IHTMLELEMENT3_DISPINTERFACE_DECL;      \
+    WINE_IHTMLELEMENT4_DISPINTERFACE_DECL;      \
+    WINE_IHTMLUNIQUENAME_DISPINTERFACE_DECL;    \
+    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;        \
+    WINE_IHTMLELEMENT5_DISPINTERFACE_DECL;      \
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL
+
+#define WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL \
+    WINE_IHTMLELEMENT_DISPINTERFACE_DECL;       \
+    WINE_IHTMLELEMENT2_DISPINTERFACE_DECL;      \
+    WINE_IHTMLELEMENT3_DISPINTERFACE_DECL;      \
+    WINE_IHTMLELEMENT4_DISPINTERFACE_DECL;      \
+    WINE_IHTMLUNIQUENAME_DISPINTERFACE_DECL;    \
+    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;        \
+    WINE_IHTMLDATABINDING_DISPINTERFACE_DECL;   \
+    WINE_IHTMLELEMENT5_DISPINTERFACE_DECL;      \
+    WINE_IELEMENTSELECTOR_DISPINTERFACE_DECL;   \
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    void onbeforeeditfocus(VARIANT v);
+/*****************************************************************************
+ *    IHTMLGenericElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b7-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLGenericElement : IDispatch
+{
+    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
+    HRESULT recordset([out, retval] IDispatch **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    VARIANT onbeforeeditfocus();
+    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
+    HRESULT namedRecordset(
+            [in] BSTR dataMember,
+            [in, optional] VARIANT *hierarchy,
+            [out, retval] IDispatch **ppRecordset);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    long readyStateValue();
+/*****************************************************************************
+ *    DispHTMLGenericElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f563-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLGenericElement
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+    [propget, id(DISPID_IHTMLGENERICELEMENT_RECORDSET), hidden]
+    IDispatch *recordset();
 
-    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
-    void mergeAttributes(
-            [in] IHTMLElement *mergeThis,
-            [in, optional] VARIANT *pvarFlags);
+    [id(DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)]
+    IDispatch *namedRecordset(
+            [in] BSTR dataMember,
+            [in, optional] VARIANT *hierarchy);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
-    VARIANT_BOOL isMultiLine();
+/*****************************************************************************
+ *    IHTMLStyleSheetRule interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F357-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheetRule : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
+    HRESULT selectorText([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
-    VARIANT_BOOL canHaveHTML();
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
+    HRESULT selectorText([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    void onlayoutcomplete(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_STYLE)]
+    HRESULT style([retval, out] IHTMLRuleStyle **p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    VARIANT onlayoutcomplete();
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_READONLY)]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    void onpage(VARIANT v);
+[
+    hidden,
+    uuid(3050f50e-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLStyleSheetRule
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
+    void selectorText(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    VARIANT onpage();
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_SELECTORTEXT)]
+    BSTR selectorText();
 
-    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    void inflateBlock(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_STYLE), nonbrowsable]
+    IHTMLRuleStyle* style();
 
-    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    VARIANT_BOOL inflateBlock();
+    [propget, id(DISPID_IHTMLSTYLESHEETRULE_READONLY)]
+    VARIANT_BOOL readOnly();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    void onbeforedeactivate(VARIANT v);
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    VARIANT onbeforedeactivate();
+[
+    noncreatable,
+    uuid(3050f3ce-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLStyleSheetRule
+{
+    [default]           dispinterface DispHTMLStyleSheetRule;
+                        interface IHTMLStyleSheetRule;
+                        interface IHTMLDOMConstructor;
+}
 
-    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
-    void setActive();
+/*****************************************************************************
+ *    IHTMLStyleSheetRulesCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F2E5-98B5-11Cf-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheetRulesCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    void contentEditable(BSTR v);
+    [id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] LONG index,
+        [retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    BSTR contentEditable();
+[
+    hidden,
+    uuid(3050f52f-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLStyleSheetRulesCollection
+{
+properties:
+methods:
+    [propget, id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_LENGTH)]
+    long length();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
-    VARIANT_BOOL isContentEditable();
+    [id(DISPID_IHTMLSTYLESHEETRULESCOLLECTION_ITEM)]
+    IHTMLStyleSheetRule* item([in] long index);
 
-    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    void hideFocus(VARIANT_BOOL v);
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    VARIANT_BOOL hideFocus();
+[
+    noncreatable,
+    uuid(3050f3cd-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLStyleSheetRulesCollection
+{
+    [default]           dispinterface DispHTMLStyleSheetRulesCollection;
+                        interface IHTMLStyleSheetRulesCollection;
+                        interface IHTMLDOMConstructor;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    void disabled(VARIANT_BOOL v);
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f7ee-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLStyleSheetPage : IDispatch
+{
+    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_SELECTOR)]
+    HRESULT selector([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    VARIANT_BOOL disabled();
+    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_PSEUDOCLASS)]
+    HRESULT pseudoClass([retval, out] BSTR *p);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
-    VARIANT_BOOL isDisabled();
+[
+    hidden,
+    uuid(3050f540-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLStyleSheetPage
+{
+properties:
+methods:
+    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_SELECTOR)]
+    BSTR selector();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    void onmove(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEETPAGE_PSEUDOCLASS)]
+    BSTR pseudoClass();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    VARIANT onmove();
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
+}
+[
+    noncreatable,
+    uuid(3050f7ef-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLStyleSheetPage
+{
+    [default]           dispinterface DispHTMLStyleSheetPage;
+                        interface IHTMLStyleSheetPage;
+                        interface IHTMLDOMConstructor;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    void oncontrolselect(VARIANT v);
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f7f0-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLStyleSheetPagesCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    VARIANT oncontrolselect();
+    [id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] LONG index,
+        [retval, out] IHTMLStyleSheetPage **ppHTMLStyleSheetPage);
+}
 
-    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
-    VARIANT_BOOL fireEvent(
-            [in] BSTR bstrEventName,
-            [in, optional] VARIANT *pvarEventObject);
+[
+    hidden,
+    uuid(3050f543-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLStyleSheetPagesCollection
+{
+properties:
+methods:
+    [propget, id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_LENGTH)]
+    long length();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    void onresizestart(VARIANT v);
+    [id(DISPID_IHTMLSTYLESHEETPAGESCOLLECTION_ITEM)]
+    IHTMLStyleSheetPage* item([in] long index);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    VARIANT onresizestart();
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    void onresizeend(VARIANT v);
+[
+    noncreatable,
+    uuid(3050f7f1-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLStyleSheetPagesCollection
+{
+    [default]           dispinterface DispHTMLStyleSheetPagesCollection;
+                        interface IHTMLStyleSheetPagesCollection;
+                        interface IHTMLDOMConstructor;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    VARIANT onresizeend();
+/*****************************************************************************
+ *    IHTMLStyleSheet interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F2E3-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheet : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLESHEET_TITLE)]
+    HRESULT title([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    void onmovestart(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_TITLE)]
+    HRESULT title([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    VARIANT onmovestart();
+    [propget, id(DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)]
+    HRESULT parentStyleSheet([retval, out] IHTMLStyleSheet **p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    void onmoveend(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)]
+    HRESULT owningElement([retval, out] IHTMLElement **p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    VARIANT onmoveend();
+    [propput, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
+    HRESULT disabled([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    void onmouseenter(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    VARIANT onmouseenter();
+    [propget, id(DISPID_IHTMLSTYLESHEET_READONLY)]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    void onmouseleave(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_IMPORTS)]
+    HRESULT imports([retval, out] IHTMLStyleSheetsCollection **p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    VARIANT onmouseleave();
+    [propput, id(DISPID_IHTMLSTYLESHEET_HREF)]
+    HRESULT href([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    void onactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_HREF)]
+    HRESULT href([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    VARIANT onactivate();
+    [propget, id(DISPID_IHTMLSTYLESHEET_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    void ondeactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_ID)]
+    HRESULT id([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    VARIANT ondeactivate();
+    [id(DISPID_IHTMLSTYLESHEET_ADDIMPORT)]
+    HRESULT addImport(
+        [in] BSTR bstrURL,
+        [defaultvalue(-1), in] LONG lIndex,
+        [retval, out] LONG *plIndex);
 
-    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
-    VARIANT_BOOL dragDrop();
+    [id(DISPID_IHTMLSTYLESHEET_ADDRULE)]
+    HRESULT addRule(
+        [in] BSTR bstrSelector,
+        [in] BSTR bstrStyle,
+        [defaultvalue(-1), in] LONG lIndex,
+        [retval, out] LONG *plNewIndex);
 
-    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
-    LONG glyphMode();
+    [id(DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)]
+    HRESULT removeImport([in] LONG lIndex);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    void onmousewheel(VARIANT v);
+    [id(DISPID_IHTMLSTYLESHEET_REMOVERULE)]
+    HRESULT removeRule([in] LONG lIndex);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    VARIANT onmousewheel();
+    [propput, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
+    HRESULT media([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
-    void normalize();
+    [propget, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
+    HRESULT media([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
-    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+    [propput, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
+    HRESULT cssText([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
-    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propget, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
+    HRESULT cssText([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
-    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propget, id(DISPID_IHTMLSTYLESHEET_RULES)]
+    HRESULT rules([retval, out] IHTMLStyleSheetRulesCollection **p);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    void onbeforeactivate(VARIANT v);
+/*****************************************************************************
+ *    IHTMLStyleSheet2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f3d1-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLStyleSheet2 : IDispatch
+{
+    [propget, id(DISPID_IHTMLSTYLESHEET2_PAGES)]
+    HRESULT pages([retval, out] IHTMLStyleSheetPagesCollection **p);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    VARIANT onbeforeactivate();
+    [id(DISPID_IHTMLSTYLESHEET2_ADDPAGERULE)]
+    HRESULT addPageRule(
+        [in] BSTR bstrSelector,
+        [in] BSTR bstrStyle,
+        [defaultvalue(-1), in] LONG lIndex,
+        [retval, out] LONG *plNewIndex);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    void onfocusin(VARIANT v);
+[
+    hidden,
+    uuid(3050f58d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLStyleSheet
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLSTYLESHEET_TITLE)]
+    void title(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    VARIANT onfocusin();
+    [propget, id(DISPID_IHTMLSTYLESHEET_TITLE)]
+    BSTR title();
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    void onfocusout(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_PARENTSTYLESHEET)]
+    IHTMLStyleSheet* parentStyleSheet();
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    VARIANT onfocusout();
+    [propget, id(DISPID_IHTMLSTYLESHEET_OWNINGELEMENT)]
+    IHTMLElement* owningElement();
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
-    long uniqueNumber();
+    [propput, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
+    void disabled(VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
-    BSTR uniqueID();
+    [propget, id(DISPID_IHTMLSTYLESHEET_DISABLED)]
+    VARIANT_BOOL disabled();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
+    [propget, id(DISPID_IHTMLSTYLESHEET_READONLY)]
+    VARIANT_BOOL readOnly();
 
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
+    [propget, id(DISPID_IHTMLSTYLESHEET_IMPORTS)]
+    IHTMLStyleSheetsCollection* imports();
 
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
+    [propput, id(DISPID_IHTMLSTYLESHEET_HREF)]
+    void href(BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
+    [propget, id(DISPID_IHTMLSTYLESHEET_HREF)]
+    BSTR href();
 
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
+    [propget, id(DISPID_IHTMLSTYLESHEET_TYPE)]
+    BSTR type();
 
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
+    [propget, id(DISPID_IHTMLSTYLESHEET_ID)]
+    BSTR id();
 
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+    [id(DISPID_IHTMLSTYLESHEET_ADDIMPORT)]
+    LONG addImport(
+        [in] BSTR bstrURL,
+        [defaultvalue(-1), in] LONG lIndex);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
+    [id(DISPID_IHTMLSTYLESHEET_ADDRULE)]
+    LONG addRule(
+        [in] BSTR bstrSelector,
+        [in] BSTR bstrStyle,
+        [defaultvalue(-1), in] LONG lIndex);
 
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+    [id(DISPID_IHTMLSTYLESHEET_REMOVEIMPORT)]
+    void removeImport([in] LONG lIndex);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+    [id(DISPID_IHTMLSTYLESHEET_REMOVERULE)]
+    void removeRule([in] LONG lIndex);
 
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+    [propput, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
+    void media(BSTR v);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+    [propget, id(DISPID_IHTMLSTYLESHEET_MEDIA)]
+    BSTR media();
 
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [propput, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
+    void cssText(BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    [propget, id(DISPID_IHTMLSTYLESHEET_CSSTEXT)]
+    BSTR cssText();
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    [propget, id(DISPID_IHTMLSTYLESHEET_RULES)]
+    IHTMLStyleSheetRulesCollection* rules();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    [propget, id(DISPID_IHTMLSTYLESHEET2_PAGES)]
+    IHTMLStyleSheetPagesCollection* pages();
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    [id(DISPID_IHTMLSTYLESHEET2_ADDPAGERULE)]
+    LONG addPageRule(
+        [in] BSTR bstrSelector,
+        [in] BSTR bstrStyle,
+        [defaultvalue(-1), in] LONG lIndex);
+}
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+[
+    noncreatable,
+    uuid(3050f2e4-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLStyleSheet
+{
+    [default]           dispinterface DispHTMLStyleSheet;
+                        interface IHTMLStyleSheet;
+                        interface IHTMLStyleSheet2;
+}
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+/*****************************************************************************
+ *    IHTMLStyleSheetsCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F37E-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyleSheetsCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
+    [propget, id(DISPID_IHTMLSTYLESHEETSCOLLECTION__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
 
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
+    [id(DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+}
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    void dataFld(BSTR v);
+/*****************************************************************************
+ *    IHTMLTxtRange interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f220-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTxtRange : IDispatch
+{
+    [propget, id(DISPID_IHTMLTXTRANGE_HTMLTEXT)]
+    HRESULT htmlText([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    BSTR dataFld();
+    [propput, id(DISPID_IHTMLTXTRANGE_TEXT)]
+    HRESULT text([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    void dataSrc(BSTR v);
+    [propget, id(DISPID_IHTMLTXTRANGE_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    BSTR dataSrc();
+    [id(DISPID_IHTMLTXTRANGE_PARENTELEMENT)]
+    HRESULT parentElement([retval, out] IHTMLElement **parent);
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    void dataFormatAs(BSTR v);
+    [id(DISPID_IHTMLTXTRANGE_DUPLICATE)]
+    HRESULT duplicate([retval, out] IHTMLTxtRange **Duplicate);
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    BSTR dataFormatAs();
+    [id(DISPID_IHTMLTXTRANGE_INRANGE)]
+    HRESULT inRange(
+        [in] IHTMLTxtRange *Range,
+        [retval, out] VARIANT_BOOL *InRange);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
-    void size(long v);
+    [id(DISPID_IHTMLTXTRANGE_ISEQUAL)]
+    HRESULT isEqual(
+        [in] IHTMLTxtRange *Range,
+        [retval, out] VARIANT_BOOL *IsEqual);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
-    long size();
+    [id(DISPID_IHTMLTXTRANGE_SCROLLINTOVIEW)]
+    HRESULT scrollIntoView([defaultvalue(-1), in] VARIANT_BOOL fStart);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
-    void multiple(VARIANT_BOOL v);
+    [id(DISPID_IHTMLTXTRANGE_COLLAPSE)]
+    HRESULT collapse([defaultvalue(-1), in] VARIANT_BOOL Start);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
-    VARIANT_BOOL multiple();
+    [id(DISPID_IHTMLTXTRANGE_EXPAND)]
+    HRESULT expand(
+        [in] BSTR Unit,
+        [retval, out] VARIANT_BOOL *Success);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
-    void name(BSTR v);
+    [id(DISPID_IHTMLTXTRANGE_MOVE)]
+    HRESULT move(
+        [in] BSTR Unit,
+        [defaultvalue(1), in] LONG Count,
+        [retval, out] LONG *ActualCount);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
-    BSTR name();
+    [id(DISPID_IHTMLTXTRANGE_MOVESTART)]
+    HRESULT moveStart(
+        [in] BSTR Unit,
+        [defaultvalue(1), in] LONG Count,
+        [retval, out] LONG *ActualCount);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
-    IDispatch *options();
+    [id(DISPID_IHTMLTXTRANGE_MOVEEND)]
+    HRESULT moveEnd(
+        [in] BSTR Unit,
+        [defaultvalue(1), in] LONG Count,
+        [retval, out] LONG *ActualCount);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
-    void onchange(VARIANT v);
+    [id(DISPID_IHTMLTXTRANGE_SELECT)]
+    HRESULT select();
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
-    VARIANT onchange();
+    [id(DISPID_IHTMLTXTRANGE_PASTEHTML)]
+    HRESULT pasteHTML([in] BSTR html);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
-    void selectedIndex(long v);
+    [id(DISPID_IHTMLTXTRANGE_MOVETOELEMENTTEXT)]
+    HRESULT moveToElementText([in] IHTMLElement *element);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
-    long selectedIndex();
+    [id(DISPID_IHTMLTXTRANGE_SETENDPOINT)]
+    HRESULT setEndPoint(
+        [in] BSTR how,
+        [in] IHTMLTxtRange *SourceRange);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
-    BSTR type();
+    [id(DISPID_IHTMLTXTRANGE_COMPAREENDPOINTS)]
+    HRESULT compareEndPoints(
+        [in] BSTR how,
+        [in] IHTMLTxtRange *SourceRange,
+        [retval, out] LONG *ret);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
-    void value(BSTR v);
+    [id(DISPID_IHTMLTXTRANGE_FINDTEXT)]
+    HRESULT findText(
+        [in] BSTR String,
+        [defaultvalue(1073741823), in] LONG count,
+        [defaultvalue(0), in] LONG Flags,
+        [retval, out] VARIANT_BOOL *Success);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
-    BSTR value();
+    [id(DISPID_IHTMLTXTRANGE_MOVETOPOINT)]
+    HRESULT moveToPoint(
+        [in] LONG x,
+        [in] LONG y);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
-    IHTMLFormElement *form();
+    [id(DISPID_IHTMLTXTRANGE_GETBOOKMARK)]
+    HRESULT getBookmark([retval, out] BSTR *Boolmark);
 
-    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
-    void add(
-            [in] IHTMLElement *element,
-            [in, optional] VARIANT before);
+    [id(DISPID_IHTMLTXTRANGE_MOVETOBOOKMARK)]
+    HRESULT moveToBookmark(
+        [in] BSTR Bookmark,
+        [retval, out] VARIANT_BOOL *Success);
 
-    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
-    void remove([in, defaultvalue(-1)] long index);
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSUPPORTED)]
+    HRESULT queryCommandSupported(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
 
-    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
-    void length(long v);
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDENABLED)]
+    HRESULT queryCommandEnabled(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
-    long length();
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDSTATE)]
+    HRESULT queryCommandState(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
 
-    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
-    IUnknown *_newEnum();
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDINDETERM)]
+    HRESULT queryCommandIndeterm(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
 
-    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
-    IDispatch *item(
-            [in, optional] VARIANT name,
-            [in, optional] VARIANT index);
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDTEXT)]
+    HRESULT queryCommandText(
+        [in] BSTR cmdID,
+        [retval, out] BSTR *pcmdText);
 
-    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
-    IDispatch *tags([in] VARIANT tagName);
+    [id(DISPID_IHTMLTXTRANGE_QUERYCOMMANDVALUE)]
+    HRESULT queryCommandValue(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT *pcmdValue);
 
-    [id(DISPID_IHTMLSELECTELEMENT2_URNS)]
-    IDispatch *urns([in] VARIANT urn);
+    [id(DISPID_IHTMLTXTRANGE_EXECCOMMAND)]
+    HRESULT execCommand(
+        [in] BSTR cmdID,
+        [defaultvalue(0), in] VARIANT_BOOL showUI,
+        [optional, in] VARIANT value,
+        [retval, out] VARIANT_BOOL *pfRet);
 
-    [id(DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)]
-    IDispatch *namedItem([in] BSTR name);
+    [id(DISPID_IHTMLTXTRANGE_EXECCOMMANDSHOWHELP)]
+    HRESULT execCommandShowHelp(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
 }
 
-/*****************************************************************************
- *    IHTMLSelectionObject interface
- */
 [
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F25A-98B5-11CF-BB82-00AA00BDCE0B)
-]
-interface IHTMLSelectionObject : IDispatch
-{
-    [id(DISPID_IHTMLSELECTIONOBJECT_CREATERANGE)]
-    HRESULT createRange([retval, out] IDispatch **range);
-
-    [id(DISPID_IHTMLSELECTIONOBJECT_EMPTY)]
-    HRESULT empty();
-
-    [id(DISPID_IHTMLSELECTIONOBJECT_CLEAR)]
-    HRESULT clear();
-
-    [propget, id(DISPID_IHTMLSELECTIONOBJECT_TYPE)]
-    HRESULT type([retval, out] BSTR *p);
+    noncreatable,
+    uuid(3050f37f-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLStyleSheetsCollection
+{
+    [default]           interface IHTMLStyleSheetsCollection;
 }
 
 /*****************************************************************************
- *    IHTMLOptionElement interface
+ *    IHTMLFormElement interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050F211-98B5-11CF-BB82-00AA00BDCE0B)
+    uuid(3050F1F7-98B5-11CF-BB82-00AA00BDCE0B)
 ]
-interface IHTMLOptionElement : IDispatch
+interface IHTMLFormElement : IDispatch
 {
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
-    HRESULT selected([in] VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLFORMELEMENT_ACTION)]
+    HRESULT action([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
-    HRESULT selected([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLFORMELEMENT_ACTION)]
+    HRESULT action([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
-    HRESULT value([in] BSTR v);
+    [propput, id(DISPID_IHTMLFORMELEMENT_DIR)]
+    HRESULT dir([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
-    HRESULT value([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLFORMELEMENT_DIR)]
+    HRESULT dir([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
-    HRESULT defaultSelected([in] VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
+    HRESULT encoding([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
-    HRESULT defaultSelected([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
+    HRESULT encoding([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
-    HRESULT index([in] LONG v);
+    [propput, id(DISPID_IHTMLFORMELEMENT_METHOD)]
+    HRESULT method([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
-    HRESULT index([retval, out] LONG *p);
+    [propget, id(DISPID_IHTMLFORMELEMENT_METHOD)]
+    HRESULT method([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
-    HRESULT text([in] BSTR v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_ELEMENTS)]
+    HRESULT elements([retval, out] IDispatch **p);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
-    HRESULT text([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLFORMELEMENT_TARGET)]
+    HRESULT target([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
-    HRESULT form([retval, out] IHTMLFormElement **p);
-}
+    [propget, id(DISPID_IHTMLFORMELEMENT_TARGET)]
+    HRESULT target([retval, out] BSTR *p);
 
-/*****************************************************************************
- *    IHTMLOptionElementFactory interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050F38C-98B5-11Cf-BB82-00AA00BDCE0B)
-]
-interface IHTMLOptionElementFactory : IDispatch
-{
-    [id(DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE)]
-    HRESULT create(
-        [optional, in] VARIANT text,
-        [optional, in] VARIANT value,
-        [optional, in] VARIANT defaultselected,
-        [optional, in] VARIANT selected,
-        [retval, out] IHTMLOptionElement **optelem);
+    [propput, id(DISPID_IHTMLFORMELEMENT_NAME)]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_NAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
+    HRESULT onsubmit([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
+    HRESULT onsubmit([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
+    HRESULT onreset([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
+    HRESULT onreset([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLFORMELEMENT_SUBMIT)]
+    HRESULT submit();
+
+    [id(DISPID_IHTMLFORMELEMENT_RESET)]
+    HRESULT reset();
+
+    [propput, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
+    HRESULT length([in] LONG v);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
+
+    [propget, id(DISPID_IHTMLFORMELEMENT__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLFORMELEMENT_ITEM)]
+    HRESULT item(
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT index,
+        [retval, out] IDispatch **pdisp);
+
+    [id(DISPID_IHTMLFORMELEMENT_TAGS)]
+    HRESULT tags(
+        [in] VARIANT tagName,
+        [retval, out] IDispatch **pdisp);
 }
 
 /*****************************************************************************
- *    DispHTMLOptionElement dispinterface
+ *    DispHTMLFormElement dispinterface
  */
 [
     hidden,
-    uuid(3050f52b-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050F510-98B5-11CF-BB82-00AA00BDCE0B)
 ]
-dispinterface DispHTMLOptionElement
+dispinterface DispHTMLFormElement
 {
 properties:
 methods:
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    void setAttribute(
-            [in] BSTR strAttributeName,
-            [in] VARIANT AttributeValue,
-            [in, defaultvalue(1)] LONG lFlags);
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    VARIANT getAttribute(
-             [in] BSTR strAttributeName,
-             [in, defaultvalue(0)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    VARIANT_BOOL removeAttribute(
-            [in] BSTR strAttributeName,
-            [in, defaultvalue(1)] LONG lFlags);
+    [propput, id(DISPID_IHTMLFORMELEMENT_ACTION)]
+    void action(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    void className(BSTR v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_ACTION)]
+    BSTR action();
 
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    BSTR className();
+    [propput, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
+    void encoding(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
-    void id(BSTR v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_ENCODING)]
+    BSTR encoding();
 
-    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
-    BSTR id();
+    [propput, id(DISPID_IHTMLFORMELEMENT_METHOD)]
+    void method(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    BSTR tagName();
+    [propget, id(DISPID_IHTMLFORMELEMENT_METHOD)]
+    BSTR method();
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    IHTMLElement *parentElement();
+    [propget, id(DISPID_IHTMLFORMELEMENT_ELEMENTS)]
+    IDispatch *elements();
 
-    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
-    IHTMLStyle *style();
+    [propput, id(DISPID_IHTMLFORMELEMENT_TARGET)]
+    void target(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    void onhelp(VARIANT v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_TARGET)]
+    BSTR target();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    VARIANT onhelp();
+    [propput, id(DISPID_IHTMLFORMELEMENT_NAME)]
+    void name(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    void onclick(VARIANT v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_NAME)]
+    BSTR name();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    VARIANT onclick();
+    [propput, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
+    void onsubmit(VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    void ondblclick(VARIANT v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_ONSUBMIT)]
+    VARIANT onsubmit();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    VARIANT ondblclick();
+    [propput, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
+    void onreset(VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    void onkeydown(VARIANT v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_ONRESET)]
+    VARIANT onreset();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    VARIANT onkeydown();
+    [id(DISPID_IHTMLFORMELEMENT_SUBMIT)]
+    void submit();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    void onkeyup(VARIANT v);
+    [id(DISPID_IHTMLFORMELEMENT_RESET)]
+    void reset();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    VARIANT onkeyup();
+    [propput, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
+    void length(long v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    void onkeypress(VARIANT v);
+    [propget, id(DISPID_IHTMLFORMELEMENT_LENGTH)]
+    long length();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    VARIANT onkeypress();
+    [propget, id(DISPID_IHTMLFORMELEMENT__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    void onmouseout(VARIANT v);
+    [id(DISPID_IHTMLFORMELEMENT_ITEM)]
+    IDispatch *item(VARIANT name, VARIANT index);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    VARIANT onmouseout();
+    [id(DISPID_IHTMLFORMELEMENT_TAGS)]
+    IDispatch *tags(VARIANT tagName);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    void onmouseover(VARIANT v);
+[
+    hidden,
+    uuid(3050F364-98B5-11CF-BB82-00AA00BDCE0B)
+]
+dispinterface HTMLFormElementEvents
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
+    VARIANT_BOOL onhelp();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    VARIANT onmouseover();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
+    VARIANT_BOOL onclick();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    void onmousemove(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    VARIANT onmousemove();
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    void onmousedown(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
+    void onkeydown();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    VARIANT onmousedown();
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
+    void onkeyup();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    void onmouseup(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
+    void onmouseout();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    VARIANT onmouseup();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
+    void onmouseover();
 
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    IDispatch *document();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
+    void onmousemove();
 
-    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    void title(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
+    void onmousedown();
 
-    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    BSTR title();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
+    void onmouseup();
 
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    void language(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart();
 
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    BSTR language();
+    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
+    void onfilterchange();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    void onselectstart(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    VARIANT onselectstart();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate();
 
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    void scrollIntoView([in, optional] VARIANT varargStart);
+    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
+    void onafterupdate();
 
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate();
 
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
-    long sourceIndex();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
+    VARIANT_BOOL onrowexit();
 
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    VARIANT recordNumber();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
+    void onrowenter();
 
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    void lang(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
+    void ondatasetchanged();
 
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    BSTR lang();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
+    void ondataavailable();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    long offsetLeft();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
+    void ondatasetcomplete();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    long offsetTop();
+    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
+    void onlosecapture();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    long offsetWidth();
+    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
+    void onpropertychange();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    long offsetHeight();
+    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
+    void onscroll();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    IHTMLElement *offsetParent();
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
+    void onfocus();
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    void innerHTML(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
+    void onblur();
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    BSTR innerHTML();
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
+    void onresize();
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    void innerText(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
+    VARIANT_BOOL ondrag();
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    BSTR innerText();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
+    void ondragend();
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    void outerHTML(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter();
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    BSTR outerHTML();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
+    VARIANT_BOOL ondragover();
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    void outerText(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
+    void ondragleave();
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    BSTR outerText();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
+    VARIANT_BOOL ondrop();
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    void insertAdjacentHTML(
-            [in] BSTR where,
-            [in] BSTR html);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut();
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    void insertAdjacentText(
-            [in] BSTR where,
-            [in] BSTR text);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
+    VARIANT_BOOL oncut();
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    IHTMLElement *parentTextEdit();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy();
 
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    VARIANT_BOOL isTextEdit();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
+    VARIANT_BOOL oncopy();
 
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    void click();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste();
 
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    IHTMLFiltersCollection *filters();
+    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
+    VARIANT_BOOL onpaste();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    void ondragstart(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    VARIANT ondragstart();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
+    void onrowsdelete();
 
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    BSTR toString();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
+    void onrowsinserted();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    void onbeforeupdate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
+    void oncellchange();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    VARIANT onbeforeupdate();
+    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
+    void onreadystatechange();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    void onafterupdate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    VARIANT onafterupdate();
+    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    void onerrorupdate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
+    void onpage();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    VARIANT onerrorupdate();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    void onrowexit(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    VARIANT onrowexit();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
+    void onmove();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    void onrowenter(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    VARIANT onrowenter();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
+    VARIANT_BOOL onmovestart();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    void ondatasetchanged(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
+    void onmoveend();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    VARIANT ondatasetchanged();
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    void ondataavailable(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
+    void onresizeend();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    VARIANT ondataavailable();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
+    void onmouseenter();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    void ondatasetcomplete(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
+    void onmouseleave();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    VARIANT ondatasetcomplete();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    void onfilterchange(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
+    void onactivate();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    VARIANT onfilterchange();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
+    void ondeactivate();
 
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    IDispatch *children();
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
+    void onfocusin();
 
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    IDispatch *all();
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
+    void onfocusout();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    BSTR scopeName();
+    [id(DISPID_HTMLFORMELEMENTEVENTS_ONSUBMIT)]
+    VARIANT_BOOL onsubmit();
 
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+    [id(DISPID_HTMLFORMELEMENTEVENTS_ONRESET)]
+    VARIANT_BOOL onreset();
+}
 
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    void releaseCapture();
+interface IHTMLEventObj;
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    void onlosecapture(VARIANT v);
+[
+    hidden,
+    uuid(3050F614-98B5-11CF-BB82-00AA00BDCE0B)
+]
+dispinterface HTMLFormElementEvents2
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
+    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    VARIANT onlosecapture();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
+    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    BSTR componentFromPoint(
-            [in] long x,
-            [in] long y);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    void doScroll([in, optional] VARIANT component);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    void onscroll(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
+    void onkeydown([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    VARIANT onscroll();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
+    void onkeyup([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    void ondrag(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
+    void onmouseout([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    VARIANT ondrag();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
+    void onmouseover([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    void ondragend(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
+    void onmousemove([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    VARIANT ondragend();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
+    void onmousedown([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    void ondragenter(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
+    void onmouseup([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    VARIANT ondragenter();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    void ondragover(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
+    void onfilterchange([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    VARIANT ondragover();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    void ondragleave(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    VARIANT ondragleave();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
+    void onafterupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    void ondrop(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    VARIANT ondrop();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
+    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    void onbeforecut(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
+    void onrowenter([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    VARIANT onbeforecut();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
+    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    void oncut(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
+    void ondataavailable([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    VARIANT oncut();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
+    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    void onbeforecopy(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
+    void onlosecapture([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    VARIANT onbeforecopy();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
+    void onpropertychange([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    void oncopy(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
+    void onscroll([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    VARIANT oncopy();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
+    void onfocus([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    void onbeforepaste(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
+    void onblur([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    VARIANT onbeforepaste();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
+    void onresize([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    void onpaste(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
+    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    VARIANT onpaste();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
+    void ondragend([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    IHTMLCurrentStyle *currentStyle();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    void onpropertychange(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
+    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    VARIANT onpropertychange();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
+    void ondragleave([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    IHTMLRectCollection *getClientRects();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
+    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    IHTMLRect *getBoundingClientRect();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    void setExpression(
-            [in] BSTR propname,
-            [in] BSTR expression,
-            [in, defaultvalue("")] BSTR language);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
+    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    VARIANT getExpression([in] BSTR propname);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    VARIANT_BOOL removeExpression([in] BSTR propname);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
+    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    void tabIndex(short v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    short tabIndex();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
+    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    void focus();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    void accessKey(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
+    void onrowsdelete([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    BSTR accessKey();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
+    void onrowsinserted([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    void onblur(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
+    void oncellchange([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    VARIANT onblur();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
+    void onreadystatechange([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    void onfocus(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    VARIANT onfocus();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
+    void onpage([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    void onresize(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
+    void onmouseenter([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    VARIANT onresize();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
+    void onmouseleave([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    void blur();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
+    void onactivate([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    void addFilter([in] IUnknown *pUnk);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
+    void ondeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    void removeFilter([in] IUnknown *pUnk);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    long clientHeight();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    long clientWidth();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
+    void onfocusin([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    long clientTop();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
+    void onfocusout([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    long clientLeft();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
+    void onmove([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
+    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    VARIANT readyState();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
+    void onmoveend([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    void onreadystatechange(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    VARIANT onreadystatechange();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
+    void onresizeend([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    void onrowsdelete(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    VARIANT onrowsdelete();
+    [id(DISPID_HTMLFORMELEMENTEVENTS2_ONSUBMIT)]
+    VARIANT_BOOL onsubmit([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    void onrowsinserted(VARIANT v);
+    [id(DISPID_HTMLFORMELEMENTEVENTS2_ONRESET)]
+    VARIANT_BOOL onreset([in] IHTMLEventObj* pEvtObj);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-     VARIANT onrowsinserted();
+[
+    noncreatable,
+    uuid(3050F251-98B5-11CF-BB82-00AA00BDCE0B)
+]
+coclass HTMLFormElement
+{
+    [default]           dispinterface DispHTMLFormElement;
+    [source, default]   dispinterface HTMLFormElementEvents;
+    [source]            dispinterface HTMLFormElementEvents2;
+                        interface IHTMLElement;
+                        interface IHTMLElement2;
+                        interface IHTMLElement3;
+                        interface IHTMLElement4;
+                        interface IHTMLUniqueName;
+                        interface IHTMLDOMNode;
+                        interface IHTMLDOMNode2;
+                        interface IHTMLDOMConstructor;
+                        interface IHTMLFormElement;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-     void oncellchange(VARIANT v);
+/*****************************************************************************
+ *    IHTMLTextContainer interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f230-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTextContainer : IDispatch
+{
+    [id(DISPID_IHTMLTEXTCONTAINER_CREATECONTROLRANGE)]
+    HRESULT createControlRange([retval, out] IDispatch **range);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    VARIANT oncellchange();
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLHEIGHT), displaybind, bindable]
+    HRESULT scrollHeight([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    void dir(BSTR v);
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLWIDTH), displaybind, bindable]
+    HRESULT scrollWidth([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    BSTR dir();
+    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([in] LONG v);
 
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    IDispatch *createControlRange();
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLTOP), displaybind, bindable]
+    HRESULT scrollTop([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    long scrollHeight();
+    [propput, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    long scrollWidth();
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_SCROLLLEFT), displaybind, bindable]
+    HRESULT scrollLeft([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    void scrollTop(long v);
+    [propput, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    long scrollTop();
+    [propget, id(DISPID_IHTMLTEXTCONTAINER_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([retval, out] VARIANT *p);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    void scrollLeft(long v);
+/*****************************************************************************
+ *    IHTMLImgElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F240-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLImgElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
+    HRESULT isMap([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    long scrollLeft();
+    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP)]
+    HRESULT isMap([retval, out] VARIANT_BOOL *p);
 
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    void clearAttributes();
+    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
+    HRESULT useMap([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    void oncontextmenu(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP)]
+    HRESULT useMap([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    VARIANT oncontextmenu();
+    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
+    HRESULT mimeType([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    IHTMLElement *insertAdjacentElement(
-            [in] BSTR where,
-            [in] IHTMLElement *insertedElement);
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
+    HRESULT fileSize([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    IHTMLElement *applyElement(
-            [in] IHTMLElement *apply,
-            [in] BSTR where);
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
+    HRESULT fileCreatedDate([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    BSTR getAdjacentText([in] BSTR where);
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
+    HRESULT fileModifiedDate([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    BSTR replaceAdjacentText(
-            [in] BSTR where,
-            [in] BSTR newText);
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
+    HRESULT fileUpdatedDate([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    VARIANT_BOOL canHaveChildren();
+    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    long addBehavior(
-            [in] BSTR bstrUrl,
-            [in, optional] VARIANT *pvarFactory);
+    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
+    HRESULT href([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    VARIANT_BOOL removeBehavior([in] long cookie);
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
+    HRESULT nameProp([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    IHTMLStyle *runtimeStyle();
+    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER)]
+    HRESULT border([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    IDispatch *behaviorUrns();
+    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER)]
+    HRESULT border([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    void tagUrn(BSTR v);
+    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
+    HRESULT vspace([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    BSTR tagUrn();
+    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE)]
+    HRESULT vspace([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    void onbeforeeditfocus(VARIANT v);
+    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
+    HRESULT hspace([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    VARIANT onbeforeeditfocus();
+    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE)]
+    HRESULT hspace([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    long readyStateValue();
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALT)]
+    HRESULT alt([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALT)]
+    HRESULT alt([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
-    void mergeAttributes(
-            [in] IHTMLElement *mergeThis,
-            [in, optional] VARIANT *pvarFlags);
+    [propput, id(DISPID_IHTMLIMGELEMENT_SRC)]
+    HRESULT src([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
-    VARIANT_BOOL isMultiLine();
+    [propget, id(DISPID_IHTMLIMGELEMENT_SRC)]
+    HRESULT src([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
-    VARIANT_BOOL canHaveHTML();
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
+    HRESULT lowsrc([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    void onlayoutcomplete(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC)]
+    HRESULT lowsrc([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    VARIANT onlayoutcomplete();
+    [propput, id(DISPID_IHTMLIMGELEMENT_VRML)]
+    HRESULT vrml([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    void onpage(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_VRML)]
+    HRESULT vrml([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    VARIANT onpage();
+    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
+    HRESULT dynsrc([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    void inflateBlock(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC)]
+    HRESULT dynsrc([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    VARIANT_BOOL inflateBlock();
+    [propget, id(DISPID_IHTMLIMGELEMENT_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    void onbeforedeactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
+    HRESULT complete([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    VARIANT onbeforedeactivate();
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP)]
+    HRESULT loop([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
-    void setActive();
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP)]
+    HRESULT loop([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    void contentEditable(BSTR v);
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
+    HRESULT align([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    BSTR contentEditable();
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN)]
+    HRESULT align([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
-    VARIANT_BOOL isContentEditable();
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
+    HRESULT onload([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    void hideFocus(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD)]
+    HRESULT onload([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    VARIANT_BOOL hideFocus();
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
+    HRESULT onerror([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    void disabled(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR)]
+    HRESULT onerror([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    VARIANT_BOOL disabled();
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
+    HRESULT onabort([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
-    VARIANT_BOOL isDisabled();
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT)]
+    HRESULT onabort([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    void onmove(VARIANT v);
+    [propput, id(DISPID_IHTMLIMGELEMENT_NAME)]
+    HRESULT name([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    VARIANT onmove();
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAME)]
+    HRESULT name([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    void oncontrolselect(VARIANT v);
+    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    HRESULT width([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    VARIANT oncontrolselect();
+    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    HRESULT width([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
-    VARIANT_BOOL fireEvent(
-            [in] BSTR bstrEventName,
-            [in, optional] VARIANT *pvarEventObject);
+    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    HRESULT height([in] LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    void onresizestart(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    HRESULT height([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    VARIANT onresizestart();
+    [propput, id(DISPID_IHTMLIMGELEMENT_START)]
+    HRESULT start([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    void onresizeend(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_START)]
+    HRESULT start([retval, out] BSTR *p);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    VARIANT onresizeend();
+/*****************************************************************************
+ *    IHTMLImageElementFactory interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F38E-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLImageElementFactory : IDispatch
+{
+    [id(DISPID_IHTMLIMAGEELEMENTFACTORY_CREATE)]
+    HRESULT create(
+        [optional, in] VARIANT width,
+        [optional, in] VARIANT height,
+        [retval, out]  IHTMLImgElement **elem);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    void onmovestart(VARIANT v);
+/*****************************************************************************
+ *    DispHTMLImg interface
+ */
+[
+    hidden,
+    uuid(3050f51c-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLImg
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    VARIANT onmovestart();
+    [propput, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
+    void isMap(VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    void onmoveend(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable]
+    VARIANT_BOOL isMap();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    VARIANT onmoveend();
+    [propput, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
+    void useMap(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    void onmouseenter(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable]
+    BSTR useMap();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    VARIANT onmouseenter();
+    [propget, id(DISPID_IHTMLIMGELEMENT_MIMETYPE)]
+    BSTR mimeType();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    void onmouseleave(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILESIZE)]
+    BSTR fileSize();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    VARIANT onmouseleave();
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILECREATEDDATE)]
+    BSTR fileCreatedDate();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    void onactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEMODIFIEDDATE)]
+    BSTR fileModifiedDate();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    VARIANT onactivate();
+    [propget, id(DISPID_IHTMLIMGELEMENT_FILEUPDATEDDATE)]
+    BSTR fileUpdatedDate();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    void ondeactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_PROTOCOL)]
+    BSTR protocol();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    VARIANT ondeactivate();
+    [propget, id(DISPID_IHTMLIMGELEMENT_HREF)]
+    BSTR href();
 
-    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
-    VARIANT_BOOL dragDrop();
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAMEPROP)]
+    BSTR nameProp();
 
-    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
-    LONG glyphMode();
+    [propput, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
+    void border(VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    void onmousewheel(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable]
+    VARIANT border();
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    VARIANT onmousewheel();
+    [propput, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
+    void vspace(LONG v);
 
-    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
-    void normalize();
+    [propget, id(DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable]
+    LONG vspace();
 
-    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
-    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+    [propput, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
+    void hspace(LONG v);
 
-    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
-    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propget, id(DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable]
+    LONG hspace();
 
-    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
-    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
+    void alt(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    void onbeforeactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable]
+    BSTR alt();
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    VARIANT onbeforeactivate();
+    [propput, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
+    void src(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    void onfocusin(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable]
+    BSTR src();
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    VARIANT onfocusin();
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
+    void lowsrc(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    void onfocusout(VARIANT v);
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable]
+    BSTR lowsrc();
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    VARIANT onfocusout();
+    [propput, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
+    void vrml(BSTR v);
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
-    long uniqueNumber();
+    [propget, id(DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable]
+    BSTR vrml();
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
-    BSTR uniqueID();
+    [propput, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
+    void dynsrc(BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
+    [propget, id(DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable]
+    BSTR dynsrc();
 
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
+    [propget, id(DISPID_IHTMLIMGELEMENT_COMPLETE)]
+    VARIANT_BOOL complete();
 
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
+    [propput, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
+    void loop(VARIANT v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
+    [propget, id(DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable]
+    VARIANT loop();
 
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
+    [propput, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
+    void align(BSTR v);
 
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable]
+    BSTR align();
 
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable]
+    VARIANT onload();
 
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
+    void onerror(VARIANT v);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable]
+    VARIANT onerror();
 
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+    [propput, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
+    void onabort(VARIANT v);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+    [propget, id(DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable]
+    VARIANT onabort();
 
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [propput, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    [propget, id(DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable]
+    BSTR name();
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    [propput, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    void width(LONG v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    [propget, id(DISPID_IHTMLIMGELEMENT_WIDTH)]
+    LONG width();
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    [propput, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    void height(LONG v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+    [propget, id(DISPID_IHTMLIMGELEMENT_HEIGHT)]
+    LONG height();
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+    [propput, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
+    void start(BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
+    [propget, id(DISPID_IHTMLIMGELEMENT_START), displaybind, bindable]
+    BSTR start();
 
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
+    [propput, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
+    void longDesc(BSTR v);
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    void dataFld(BSTR v);
+    [propget, id(DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable]
+    BSTR longDesc();
+}
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    BSTR dataFld();
+/*****************************************************************************
+ *    IHTMLControlElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4e9-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLControlElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([in] short v);
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    void dataSrc(BSTR v);
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([retval, out] short * p);
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    BSTR dataSrc();
+    [id(DISPID_IHTMLCONTROLELEMENT_FOCUS)]
+    HRESULT focus();
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    void dataFormatAs(BSTR v);
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    BSTR dataFormatAs();
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([retval, out] BSTR * p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
-    void selected(VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
-    VARIANT_BOOL selected();
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
-    void value(BSTR v);
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
-    BSTR value();
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
-    void defaultSelected(VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
-    VARIANT_BOOL defaultSelected();
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable]
+    HRESULT onresize([retval, out] VARIANT * p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
-    void index(LONG v);
+    [id(DISPID_IHTMLCONTROLELEMENT_BLUR)]
+    HRESULT blur();
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
-    LONG index();
+    [id(DISPID_IHTMLCONTROLELEMENT_ADDFILTER)]
+    HRESULT addFilter([in] IUnknown* pUnk);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
-    void text(BSTR v);
+    [id(DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)]
+    HRESULT removeFilter([in] IUnknown* pUnk);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
-    BSTR text();
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable]
+    HRESULT clientHeight([retval, out] LONG * p);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
-    IHTMLFormElement *form();
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable]
+    HRESULT clientWidth([retval, out] LONG * p);
 
-    [propput, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
-    void label(BSTR v);
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable]
+    HRESULT clientTop([retval, out] LONG * p);
 
-    [propget, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
-    BSTR label();
+    [propget, id(DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable]
+    HRESULT clientLeft([retval, out] LONG * p);
 }
 
 /*****************************************************************************
- *    IHTMLInputElement interface
+ *    IHTMLBodyElement interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f5d2-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f1d8-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLInputElement : IDispatch
+interface IHTMLBodyElement : IDispatch
 {
-    [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
-    HRESULT type([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
-    HRESULT type([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
-    HRESULT value([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
-    HRESULT value([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
-    HRESULT name([in] BSTR v);
-
-    [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
-    HRESULT name([retval, out] BSTR *p);
-
-    [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
-    HRESULT status([in] VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
-    HRESULT status([retval, out] VARIANT_BOOL *p);
-
-    [propput, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
-    HRESULT disabled([in] VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
-    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    HRESULT background([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
-    HRESULT form([retval, out] IHTMLFormElement **p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    HRESULT background([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
-    HRESULT size([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    HRESULT bgProperties([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
-    HRESULT size([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    HRESULT bgProperties([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
-    HRESULT maxLength([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    HRESULT leftMargin([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
-    HRESULT maxLength([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    HRESULT leftMargin([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
-    HRESULT select();
+    [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    HRESULT topMargin([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
-    HRESULT onchange([in] VARIANT v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    HRESULT topMargin([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
-    HRESULT onchange([retval, out] VARIANT *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    HRESULT rightMargin([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
-    HRESULT onselect([in] VARIANT v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    HRESULT rightMargin([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
-    HRESULT onselect([retval, out] VARIANT *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    HRESULT bottomMargin([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
-    HRESULT defaultValue([in] BSTR v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    HRESULT bottomMargin([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
-    HRESULT defaultValue([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    HRESULT noWrap([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
-    HRESULT readOnly([in] VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    HRESULT noWrap([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
-    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    HRESULT bgColor([in] VARIANT v);
 
-    [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
-    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    HRESULT bgColor([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
-    HRESULT indeterminate([in] VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
-    HRESULT indeterminate([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
-    HRESULT defaultChecked([in] VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    HRESULT link([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
-    HRESULT defaultChecked([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    HRESULT link([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
-    HRESULT checked([in] VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    HRESULT vLink([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
-    HRESULT checked([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    HRESULT vLink([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
-    HRESULT border([in] VARIANT v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    HRESULT aLink([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
-    HRESULT border([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    HRESULT aLink([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
-    HRESULT vspace([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
-    HRESULT vspace([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
-    HRESULT hspace([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    HRESULT onunload([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
-    HRESULT hspace([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    HRESULT onunload([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
-    HRESULT alt([in] BSTR v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    HRESULT scroll([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
-    HRESULT alt([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    HRESULT scroll([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
-    HRESULT src([in] BSTR v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
-    HRESULT src([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
-    HRESULT lowsrc([in] BSTR v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    HRESULT onbeforeunload([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
-    HRESULT lowsrc([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    HRESULT onbeforeunload([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
-    HRESULT vrml([in] BSTR v);
+    [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+}
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
-    HRESULT vrml([retval, out] BSTR *p);
+/*****************************************************************************
+ *    IHTMLBodyElement2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f5c5-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLBodyElement2 : IDispatch
+{
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
-    HRESULT dynsrc([in] BSTR v);
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
-    HRESULT dynsrc([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_READYSTATE)]
-    HRESULT readyState([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([retval, out] VARIANT *p);
+}
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
-    HRESULT complete([retval, out] VARIANT_BOOL *p);
+[
+    hidden,
+    uuid(3050f507-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLBody
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
-    HRESULT loop([in] VARIANT v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    void background(BSTR v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
-    HRESULT loop([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_BACKGROUND), displaybind, bindable]
+    BSTR background();
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
-    HRESULT align([in] BSTR v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    void bgProperties(BSTR v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
-    HRESULT align([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGPROPERTIES), displaybind, bindable]
+    BSTR bgProperties();
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
-    HRESULT onload([in] VARIANT v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    void leftMargin(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
-    HRESULT onload([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_LEFTMARGIN), displaybind, bindable]
+    VARIANT leftMargin();
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
-    HRESULT onerror([in] VARIANT v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    void topMargin(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
-    HRESULT onerror([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_TOPMARGIN), displaybind, bindable]
+    VARIANT topMargin();
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
-    HRESULT onabort([in] VARIANT v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    void rightMargin(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
-    HRESULT onabort([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_RIGHTMARGIN), displaybind, bindable]
+    VARIANT rightMargin();
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
-    HRESULT width([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    void bottomMargin(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
-    HRESULT width([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_BOTTOMMARGIN), displaybind, bindable]
+    VARIANT bottomMargin();
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
-    HRESULT height([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    void noWrap(VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
-    HRESULT height([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_NOWRAP), displaybind, bindable]
+    VARIANT_BOOL noWrap();
 
-    [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
-    HRESULT start([in] BSTR v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    void bgColor(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
-    HRESULT start([retval, out] BSTR *p);
-}
+    [propget, id(DISPID_IHTMLBODYELEMENT_BGCOLOR), displaybind, bindable]
+    VARIANT bgColor();
 
-/*****************************************************************************
- *    IHTMLInputTextElement interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f2a6-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLInputTextElement : IDispatch
-{
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_TYPE)]
-    HRESULT type([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    void text(VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
-    HRESULT value([in] BSTR v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_TEXT), displaybind, bindable]
+    VARIANT text();
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
-    HRESULT value([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    void link(VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
-    HRESULT name([in] BSTR v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_LINK), displaybind, bindable]
+    VARIANT link();
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
-    HRESULT name([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    void vLink(VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
-    HRESULT status([in] VARIANT v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_VLINK), displaybind, bindable]
+    VARIANT vLink();
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
-    HRESULT status([retval, out] VARIANT *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    void aLink(VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
-    HRESULT disabled([in] VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ALINK), displaybind, bindable]
+    VARIANT aLink();
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
-    HRESULT disabled([retval, out] VARIANT_BOOL *p);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_FORM)]
-    HRESULT form([retval, out] IHTMLFormElement **p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONLOAD), displaybind, bindable]
+    VARIANT onload();
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
-    HRESULT defaultValue([in] BSTR v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    void onunload(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
-    HRESULT defaultValue([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONUNLOAD), displaybind, bindable]
+    VARIANT onunload();
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
-    HRESULT size([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    void scroll(BSTR v);
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
-    HRESULT size([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_SCROLL), displaybind, bindable]
+    BSTR scroll();
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
-    HRESULT maxLength([in] long v);
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    void onselect(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
-    HRESULT maxLength([retval, out] long *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONSELECT), displaybind, bindable]
+    VARIANT onselect();
 
-    [id(DISPID_IHTMLINPUTTEXTELEMENT_SELECT)]
-    HRESULT select();
+    [propput, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    void onbeforeunload(VARIANT v);
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
-    HRESULT onchange([in] VARIANT v);
+    [propget, id(DISPID_IHTMLBODYELEMENT_ONBEFOREUNLOAD), displaybind, bindable]
+    VARIANT onbeforeunload();
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
-    HRESULT onchange([retval, out] VARIANT *p);
+    [id(DISPID_IHTMLBODYELEMENT_CREATETEXTRANGE)]
+    IHTMLTxtRange* createTextRange();
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
-    HRESULT onselect([in] VARIANT v);
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    void onbeforeprint(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
-    HRESULT onselect([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONBEFOREPRINT), displaybind, bindable]
+    VARIANT onbeforeprint();
 
-    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
-    HRESULT readOnly([in] VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    void onafterprint(VARIANT v);
 
-    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
-    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
+    [propget, id(DISPID_IHTMLBODYELEMENT2_ONAFTERPRINT), displaybind, bindable]
+    VARIANT onafterprint();
+}
 
-    [id(DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE)]
-    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+[
+    uuid(3050f24a-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLBody
+{
+    [default]           dispinterface DispHTMLBody;
+    [source, default]   dispinterface HTMLTextContainerEvents;
+    [source]            dispinterface HTMLTextContainerEvents2;
+                        interface IHTMLElement;
+                        interface IHTMLElement2;
+                        interface IHTMLElement3;
+                        interface IHTMLElement4;
+                        interface IHTMLUniqueName;
+                        interface IHTMLDOMNode;
+                        interface IHTMLDOMNode2;
+                        interface IHTMLControlElement;
+                        interface IHTMLTextContainer;
+                        interface IHTMLBodyElement;
+                        interface IHTMLBodyElement2;
 }
 
+/*****************************************************************************
+ *    IHTMLAnchorElement interface
+ */
 [
-    hidden,
-    uuid(3050f57d-98b5-11cf-bb82-00aa00bdce0b)
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f1da-98b5-11cf-bb82-00aa00bdce0b)
 ]
-dispinterface DispHTMLInputElement
+interface IHTMLAnchorElement : IDispatch
 {
-properties:
-methods:
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    void setAttribute(
-            [in] BSTR strAttributeName,
-            [in] VARIANT AttributeValue,
-            [in, defaultvalue(1)] LONG lFlags);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
+    HRESULT href([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
+    HRESULT href([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
+    HRESULT target([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
+    HRESULT target([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
+    HRESULT rel([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
+    HRESULT rel([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
+    HRESULT rev([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    VARIANT getAttribute(
-             [in] BSTR strAttributeName,
-             [in, defaultvalue(0)] LONG lFlags);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
+    HRESULT rev([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    VARIANT_BOOL removeAttribute(
-            [in] BSTR strAttributeName,
-            [in, defaultvalue(1)] LONG lFlags);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
+    HRESULT urn([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    void className(BSTR v);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
+    HRESULT urn([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    BSTR className();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
+    HRESULT Methods([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
-    void id(BSTR v);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
+    HRESULT Methods([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
-    BSTR id();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    BSTR tagName();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    IHTMLElement *parentElement();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HOST)]
+    HRESULT host([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
-    IHTMLStyle *style();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HOST)]
+    HRESULT host([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    void onhelp(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
+    HRESULT hostname([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    VARIANT onhelp();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
+    HRESULT hostname([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    void onclick(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
+    HRESULT pathname([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    VARIANT onclick();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
+    HRESULT pathname([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    void ondblclick(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PORT)]
+    HRESULT port([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    VARIANT ondblclick();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PORT)]
+    HRESULT port([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    void onkeydown(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
+    HRESULT protocol([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    VARIANT onkeydown();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    void onkeyup(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
+    HRESULT search([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    VARIANT onkeyup();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
+    HRESULT search([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    void onkeypress(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HASH)]
+    HRESULT hash([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    VARIANT onkeypress();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HASH)]
+    HRESULT hash([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    void onmouseout(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    VARIANT onmouseout();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_ONBLUR), displaybind, bindable]
+    HRESULT onblur([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    void onmouseover(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    VARIANT onmouseover();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_ONFOCUS), displaybind, bindable]
+    HRESULT onfocus([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    void onmousemove(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    VARIANT onmousemove();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_ACCESSKEY), displaybind, bindable]
+    HRESULT accessKey([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    void onmousedown(VARIANT v);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)]
+    HRESULT protocolLong([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    VARIANT onmousedown();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_MIMETYPE)]
+    HRESULT mimeType([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    void onmouseup(VARIANT v);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_NAMEPROP)]
+    HRESULT nameProp([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    VARIANT onmouseup();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([in] short v);
 
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    IDispatch *document();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_TABINDEX), displaybind, bindable]
+    HRESULT tabIndex([retval, out] short *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    void title(BSTR v);
+    [id(DISPID_IHTMLANCHORELEMENT_FOCUS)]
+    HRESULT focus();
 
-    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    BSTR title();
+    [id(DISPID_IHTMLANCHORELEMENT_BLUR)]
+    HRESULT blur();
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    void language(BSTR v);
+/*****************************************************************************
+ *    DispHTMLAnchorElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f502-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLAnchorElement
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    BSTR language();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
+    void href(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    void onselectstart(VARIANT v);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HREF), displaybind, bindable]
+    BSTR href();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    VARIANT onselectstart();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
+    void target(BSTR v);
 
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    void scrollIntoView([in, optional] VARIANT varargStart);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_TARGET), displaybind, bindable]
+    BSTR target();
 
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
+    void rel(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
-    long sourceIndex();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_REL), displaybind, bindable]
+    BSTR rel();
 
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    VARIANT recordNumber();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
+    void rev(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    void lang(BSTR v);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_REV), displaybind, bindable]
+    BSTR rev();
 
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    BSTR lang();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
+    void urn(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    long offsetLeft();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_URN), displaybind, bindable]
+    BSTR urn();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    long offsetTop();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
+    void Methods(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    long offsetWidth();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_METHODS), displaybind, bindable]
+    BSTR Methods();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    long offsetHeight();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    IHTMLElement *offsetParent();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_NAME), displaybind, bindable]
+    BSTR name();
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    void innerHTML(BSTR v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HOST)]
+    void host(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    BSTR innerHTML();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HOST)]
+    BSTR host();
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    void innerText(BSTR v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
+    void hostname(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    BSTR innerText();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HOSTNAME)]
+    BSTR hostname();
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    void outerHTML(BSTR v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
+    void pathname(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    BSTR outerHTML();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PATHNAME)]
+    BSTR pathname();
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    void outerText(BSTR v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PORT)]
+    void port(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    BSTR outerText();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PORT)]
+    BSTR port();
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    void insertAdjacentHTML(
-            [in] BSTR where,
-            [in] BSTR html);
+    [propput, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
+    void protocol(BSTR v);
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    void insertAdjacentText(
-            [in] BSTR where,
-            [in] BSTR text);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOL)]
+    BSTR protocol();
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    IHTMLElement *parentTextEdit();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
+    void search(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    VARIANT_BOOL isTextEdit();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_SEARCH)]
+    BSTR search();
 
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    void click();
+    [propput, id(DISPID_IHTMLANCHORELEMENT_HASH)]
+    void hash(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    IHTMLFiltersCollection *filters();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_HASH)]
+    BSTR hash();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    void ondragstart(VARIANT v);
+    [propget, id(DISPID_IHTMLANCHORELEMENT_PROTOCOLLONG)]
+    BSTR protocolLong();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    VARIANT ondragstart();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_MIMETYPE)]
+    BSTR mimeType();
 
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    BSTR toString();
+    [propget, id(DISPID_IHTMLANCHORELEMENT_NAMEPROP)]
+    BSTR nameProp();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    void onbeforeupdate(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable]
+    void charset(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    VARIANT onbeforeupdate();
+    [propget, id(DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable]
+    BSTR charset();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    void onafterupdate(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable]
+    void coords(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    VARIANT onafterupdate();
+    [propget, id(DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable]
+    BSTR coords();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    void onerrorupdate(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable]
+    void hreflang(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    VARIANT onerrorupdate();
+    [propget, id(DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable]
+    BSTR hreflang();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    void onrowexit(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable]
+    void shape(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    VARIANT onrowexit();
+    [propget, id(DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable]
+    BSTR shape();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    void onrowenter(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable]
+    void type(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    VARIANT onrowenter();
+    [propget, id(DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable]
+    BSTR type();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    void ondatasetchanged(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)]
+    void ie8_shape(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    VARIANT ondatasetchanged();
+    [propget, id(DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)]
+    BSTR ie8_shape();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    void ondataavailable(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)]
+    void ie8_coords(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    VARIANT ondataavailable();
+    [propget, id(DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)]
+    BSTR ie8_coords();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    void ondatasetcomplete(VARIANT v);
+    [propput, id(DISPID_IHTMLANCHORELEMENT3_IE8_HREF)]
+    void ie8_href(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    VARIANT ondatasetcomplete();
+    [propget, id(DISPID_IHTMLANCHORELEMENT3_IE8_HREF)]
+    BSTR ie8_href();
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    void onfilterchange(VARIANT v);
+/*****************************************************************************
+ *    IHTMLElementCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F21F-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLElementCollection : IDispatch
+{
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    VARIANT onfilterchange();
+    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    IDispatch *children();
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    IDispatch *all();
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    BSTR scopeName();
+    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
+    HRESULT item(
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT index,
+        [retval,  out] IDispatch **pdisp);
 
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
+    HRESULT tags(
+        [in] VARIANT tagName,
+        [retval, out] IDispatch **pdisp);
+}
 
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    void releaseCapture();
+/*****************************************************************************
+ *    DispHTMLElementCollection dispinterface
+ */
+[
+    hidden,
+    uuid(3050f56b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLElementCollection
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TOSTRING)]
+    BSTR toString();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    void onlosecapture(VARIANT v);
+    [propput, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    void length(LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    VARIANT onlosecapture();
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    LONG length();
 
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    BSTR componentFromPoint(
-            [in] long x,
-            [in] long y);
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
+    IDispatch *item(
+            [in, optional] VARIANT name,
+            [in, optional] VARIANT index);
 
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    void doScroll([in, optional] VARIANT component);
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
+    IDispatch *tags(
+            [in] VARIANT tagName);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    void onscroll(VARIANT v);
+    [id(DISPID_IHTMLELEMENTCOLLECTION2_URNS)]
+    IDispatch *urns([in] VARIANT urn);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    VARIANT onscroll();
+    [id(DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)]
+    IDispatch *namedItem([in] BSTR name);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    void ondrag(VARIANT v);
+/*****************************************************************************
+ *    IHTMLSelectElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f244-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLSelectElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    VARIANT ondrag();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    void ondragend(VARIANT v);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    HRESULT multiple([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    VARIANT ondragend();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    HRESULT multiple([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    void ondragenter(VARIANT v);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    VARIANT ondragenter();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    void ondragover(VARIANT v);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
+    HRESULT options([retval, out] IDispatch **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    VARIANT ondragover();
+    [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    void ondragleave(VARIANT v);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    VARIANT ondragleave();
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    HRESULT selectedIndex([in] LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    void ondrop(VARIANT v);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    HRESULT selectedIndex([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    VARIANT ondrop();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
+    HRESULT type([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    void onbeforecut(VARIANT v);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    VARIANT onbeforecut();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    void oncut(VARIANT v);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    VARIANT oncut();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    void onbeforecopy(VARIANT v);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    VARIANT onbeforecopy();
+    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
+    HRESULT add(
+        [in] IHTMLElement *element,
+        [optional, in] VARIANT before);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    void oncopy(VARIANT v);
+    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
+    HRESULT remove([defaultvalue(-1), in] LONG index);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    VARIANT oncopy();
+    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    HRESULT length([in] LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    void onbeforepaste(VARIANT v);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    VARIANT onbeforepaste();
+    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([retval, out] IUnknown **p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    void onpaste(VARIANT v);
+    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
+    HRESULT item(
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT index,
+        [retval, out] IDispatch **pdisp);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    VARIANT onpaste();
+    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
+    HRESULT tags(
+        [in] VARIANT tagName,
+        [retval, out] IDispatch **pdisp);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    IHTMLCurrentStyle *currentStyle();
+/*****************************************************************************
+ *    DispHTMLSelectElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f531-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLSelectElement
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    void onpropertychange(VARIANT v);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    void size(LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    VARIANT onpropertychange();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SIZE), displaybind, bindable]
+    LONG size();
 
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    IHTMLRectCollection *getClientRects();
+    [propput, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    void multiple(VARIANT_BOOL v);
 
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    IHTMLRect *getBoundingClientRect();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_MULTIPLE), displaybind, bindable]
+    VARIANT_BOOL multiple();
 
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    void setExpression(
-            [in] BSTR propname,
-            [in] BSTR expression,
-            [in, defaultvalue("")] BSTR language);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    VARIANT getExpression([in] BSTR propname);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_NAME), displaybind, bindable]
+    BSTR name();
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    VARIANT_BOOL removeExpression([in] BSTR propname);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_OPTIONS)]
+    IDispatch *options();
 
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    void tabIndex(short v);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    void onchange(VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    short tabIndex();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_ONCHANGE), displaybind, bindable]
+    VARIANT onchange();
 
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    void focus();
+    [propput, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    void selectedIndex(LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    void accessKey(BSTR v);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_SELECTEDINDEX)]
+    LONG selectedIndex();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    BSTR accessKey();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_TYPE), displaybind, bindable]
+    BSTR type();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    void onblur(VARIANT v);
+    [propput, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    void value(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    VARIANT onblur();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_VALUE), displaybind, bindable]
+    BSTR value();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    void onfocus(VARIANT v);
+    [propget, id(DISPID_IHTMLSELECTELEMENT_FORM)]
+    IHTMLFormElement *form();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    VARIANT onfocus();
+    [id(DISPID_IHTMLSELECTELEMENT_ADD)]
+    void add(
+            [in] IHTMLElement *element,
+            [in, optional] VARIANT before);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    void onresize(VARIANT v);
+    [id(DISPID_IHTMLSELECTELEMENT_REMOVE)]
+    void remove([in, defaultvalue(-1)] LONG index);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    VARIANT onresize();
+    [propput, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    void length(LONG v);
 
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    void blur();
+    [propget, id(DISPID_IHTMLSELECTELEMENT_LENGTH)]
+    LONG length();
 
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    void addFilter([in] IUnknown *pUnk);
+    [propget, id(DISPID_IHTMLSELECTELEMENT__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    void removeFilter([in] IUnknown *pUnk);
+    [id(DISPID_IHTMLSELECTELEMENT_ITEM)]
+    IDispatch *item(
+            [in, optional] VARIANT name,
+            [in, optional] VARIANT index);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    long clientHeight();
+    [id(DISPID_IHTMLSELECTELEMENT_TAGS)]
+    IDispatch *tags([in] VARIANT tagName);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    long clientWidth();
+    [id(DISPID_IHTMLSELECTELEMENT2_URNS)]
+    IDispatch *urns([in] VARIANT urn);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    long clientTop();
+    [id(DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)]
+    IDispatch *namedItem([in] BSTR name);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    long clientLeft();
+/*****************************************************************************
+ *    IHTMLSelectionObject interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F25A-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLSelectionObject : IDispatch
+{
+    [id(DISPID_IHTMLSELECTIONOBJECT_CREATERANGE)]
+    HRESULT createRange([retval, out] IDispatch **range);
 
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [id(DISPID_IHTMLSELECTIONOBJECT_EMPTY)]
+    HRESULT empty();
 
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [id(DISPID_IHTMLSELECTIONOBJECT_CLEAR)]
+    HRESULT clear();
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    VARIANT readyState();
+    [propget, id(DISPID_IHTMLSELECTIONOBJECT_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    void onreadystatechange(VARIANT v);
+/*****************************************************************************
+ *    IHTMLOptionElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F211-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLOptionElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    HRESULT selected([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    VARIANT onreadystatechange();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    HRESULT selected([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    void onrowsdelete(VARIANT v);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    HRESULT value([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    VARIANT onrowsdelete();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    HRESULT value([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    void onrowsinserted(VARIANT v);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    HRESULT defaultSelected([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-     VARIANT onrowsinserted();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    HRESULT defaultSelected([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-     void oncellchange(VARIANT v);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    HRESULT index([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    VARIANT oncellchange();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    HRESULT index([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    void dir(BSTR v);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    HRESULT text([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    BSTR dir();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    IDispatch *createControlRange();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    long scrollHeight();
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f820-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLOptionElement3 : IDispatch
+{
+    [propput, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+    HRESULT label([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    long scrollWidth();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+    HRESULT label([retval, out] BSTR * p);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    void scrollTop(long v);
+/*****************************************************************************
+ *    IHTMLOptionElementFactory interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F38C-98B5-11Cf-BB82-00AA00BDCE0B)
+]
+interface IHTMLOptionElementFactory : IDispatch
+{
+    [id(DISPID_IHTMLOPTIONELEMENTFACTORY_CREATE)]
+    HRESULT create(
+        [optional, in] VARIANT text,
+        [optional, in] VARIANT value,
+        [optional, in] VARIANT defaultselected,
+        [optional, in] VARIANT selected,
+        [retval, out] IHTMLOptionElement **optelem);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    long scrollTop();
+/*****************************************************************************
+ *    DispHTMLOptionElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f52b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLOptionElement
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    void scrollLeft(long v);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    void selected(VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    long scrollLeft();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_SELECTED)]
+    VARIANT_BOOL selected();
 
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    void clearAttributes();
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    void value(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    void oncontextmenu(VARIANT v);
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    BSTR value();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    VARIANT oncontextmenu();
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    void defaultSelected(VARIANT_BOOL v);
 
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    IHTMLElement *insertAdjacentElement(
-            [in] BSTR where,
-            [in] IHTMLElement *insertedElement);
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    VARIANT_BOOL defaultSelected();
 
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    IHTMLElement *applyElement(
-            [in] IHTMLElement *apply,
-            [in] BSTR where);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    void index(LONG v);
 
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    BSTR getAdjacentText([in] BSTR where);
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    LONG index();
 
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    BSTR replaceAdjacentText(
-            [in] BSTR where,
-            [in] BSTR newText);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    void text(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    VARIANT_BOOL canHaveChildren();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    BSTR text();
 
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    long addBehavior(
-            [in] BSTR bstrUrl,
-            [in, optional] VARIANT *pvarFactory);
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
+    IHTMLFormElement *form();
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    VARIANT_BOOL removeBehavior([in] long cookie);
+    [propput, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+    void label(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    IHTMLStyle *runtimeStyle();
+    [propget, id(DISPID_IHTMLOPTIONELEMENT3_LABEL), displaybind, bindable]
+    BSTR label();
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    IDispatch *behaviorUrns();
+[
+    noncreatable,
+    uuid(3050f24d-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLOptionElement
+{
+    [default]           dispinterface DispHTMLOptionElement;
+    [source, default]   dispinterface HTMLElementEvents;
+    [source]            dispinterface HTMLElementEvents2;
+                        interface IHTMLElement;
+                        interface IHTMLElement2;
+                        interface IHTMLElement3;
+                        interface IHTMLElement4;
+                        interface IHTMLUniqueName;
+                        interface IHTMLDOMNode;
+                        interface IHTMLDOMNode2;
+                        interface IHTMLDatabinding;
+                        interface IHTMLOptionElement;
+                        interface IHTMLOptionElement3;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    void tagUrn(BSTR v);
+/*****************************************************************************
+ *    IHTMLInputElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f5d2-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLInputElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    HRESULT type([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    BSTR tagUrn();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    void onbeforeeditfocus(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    VARIANT onbeforeeditfocus();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    long readyStateValue();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
-    void mergeAttributes(
-            [in] IHTMLElement *mergeThis,
-            [in, optional] VARIANT *pvarFlags);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    HRESULT status([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
-    VARIANT_BOOL isMultiLine();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    HRESULT status([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
-    VARIANT_BOOL canHaveHTML();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    void onlayoutcomplete(VARIANT v);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    VARIANT onlayoutcomplete();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    void onpage(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    VARIANT onpage();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    void inflateBlock(VARIANT_BOOL v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    VARIANT_BOOL inflateBlock();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    void onbeforedeactivate(VARIANT v);
+    [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
+    HRESULT select();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    VARIANT onbeforedeactivate();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
-    void setActive();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    void contentEditable(BSTR v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    BSTR contentEditable();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
-    VARIANT_BOOL isContentEditable();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    void hideFocus(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    VARIANT_BOOL hideFocus();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    void disabled(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    VARIANT_BOOL disabled();
+    [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
-    VARIANT_BOOL isDisabled();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    HRESULT indeterminate([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    void onmove(VARIANT v);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    HRESULT indeterminate([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    VARIANT onmove();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    HRESULT defaultChecked([in] VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    void oncontrolselect(VARIANT v);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    HRESULT defaultChecked([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    VARIANT oncontrolselect();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    HRESULT checked([in] VARIANT_BOOL v);
 
-    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
-    VARIANT_BOOL fireEvent(
-            [in] BSTR bstrEventName,
-            [in, optional] VARIANT *pvarEventObject);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    HRESULT checked([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    void onresizestart(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    HRESULT border([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    VARIANT onresizestart();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    HRESULT border([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    void onresizeend(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    HRESULT vspace([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    VARIANT onresizeend();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    HRESULT vspace([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    void onmovestart(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    HRESULT hspace([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    VARIANT onmovestart();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    HRESULT hspace([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    void onmoveend(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    HRESULT alt([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    VARIANT onmoveend();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    HRESULT alt([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    void onmouseenter(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    HRESULT src([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    VARIANT onmouseenter();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    HRESULT src([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    void onmouseleave(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    HRESULT lowsrc([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    VARIANT onmouseleave();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    HRESULT lowsrc([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    void onactivate(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    HRESULT vrml([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    VARIANT onactivate();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    HRESULT vrml([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    void ondeactivate(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    HRESULT dynsrc([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    VARIANT ondeactivate();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    HRESULT dynsrc([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
-    VARIANT_BOOL dragDrop();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
-    LONG glyphMode();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
+    HRESULT complete([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    void onmousewheel(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    HRESULT loop([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    VARIANT onmousewheel();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    HRESULT loop([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
-    void normalize();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    HRESULT align([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
-    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    HRESULT align([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
-    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([in] VARIANT v);
 
-    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
-    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    HRESULT onload([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    void onbeforeactivate(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    VARIANT onbeforeactivate();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    void onfocusin(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    HRESULT onabort([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    VARIANT onfocusin();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    HRESULT onabort([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    void onfocusout(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    HRESULT width([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    VARIANT onfocusout();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    HRESULT width([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
-    long uniqueNumber();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    HRESULT height([in] LONG v);
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
-    BSTR uniqueID();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    HRESULT height([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
+    [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    HRESULT start([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
+    [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    HRESULT start([retval, out] BSTR *p);
+}
 
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
+/*****************************************************************************
+ *    IHTMLInputTextElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f2a6-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLInputTextElement : IDispatch
+{
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable]
+    HRESULT value([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([in] BSTR v);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable]
+    HRESULT name([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
+    HRESULT status([in] VARIANT v);
 
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_STATUS)]
+    HRESULT status([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([in] VARIANT_BOOL v);
 
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable]
+    HRESULT disabled([retval, out] VARIANT_BOOL *p);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **p);
 
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    HRESULT defaultValue([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([in] LONG v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable]
+    HRESULT size([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([in] LONG v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable]
+    HRESULT maxLength([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+    [id(DISPID_IHTMLINPUTTEXTELEMENT_SELECT)]
+    HRESULT select();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable]
+    HRESULT onchange([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    void dataFld(BSTR v);
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
-    BSTR dataFld();
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable]
+    HRESULT onselect([retval, out] VARIANT *p);
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    void dataSrc(BSTR v);
+    [propput, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
-    BSTR dataSrc();
+    [propget, id(DISPID_IHTMLINPUTTEXTELEMENT_READONLY), displaybind, bindable]
+    HRESULT readOnly([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    void dataFormatAs(BSTR v);
+    [id(DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+}
 
-    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
-    BSTR dataFormatAs();
+[
+    hidden,
+    uuid(3050f57d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLInputElement
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
     void type(BSTR v);
@@ -9334,16 +8713,16 @@ methods:
     IHTMLFormElement *form();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
-    void size(long v);
+    void size(LONG v);
 
     [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
-    long size();
+    LONG size();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
-    void maxLength(long v);
+    void maxLength(LONG v);
 
     [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
-    long maxLength();
+    LONG maxLength();
 
     [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
     void select();
@@ -9400,16 +8779,16 @@ methods:
     VARIANT border();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
-    void vspace(long v);
+    void vspace(LONG v);
 
     [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
-    long vspace();
+    LONG vspace();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
-    void hspace(long v);
+    void hspace(LONG v);
 
     [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
-    long hspace();
+    LONG hspace();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
     void alt(BSTR v);
@@ -9475,16 +8854,16 @@ methods:
     VARIANT onabort();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
-    void width(long v);
+    void width(LONG v);
 
     [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
-    long width();
+    LONG width();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
-    void height(long v);
+    void height(LONG v);
 
     [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
-    long height();
+    LONG height();
 
     [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
     void start(BSTR v);
@@ -9574,1645 +8953,1775 @@ interface IHTMLTextAreaElement : IDispatch
     HRESULT readOnly([retval, out] VARIANT_BOOL *p);
 
     [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
-    HRESULT rows([in] long v);
+    HRESULT rows([in] LONG v);
 
     [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
-    HRESULT rows([retval, out] long *p);
+    HRESULT rows([retval, out] LONG *p);
 
     [propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
-    HRESULT cols([in] long v);
+    HRESULT cols([in] LONG v);
 
     [propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
-    HRESULT cols([retval, out] long *p);
+    HRESULT cols([retval, out] LONG *p);
 
     [propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
     HRESULT wrap([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
-    HRESULT wrap([retval, out] BSTR *p);
-
-    [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
-    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
-}
-
-/*****************************************************************************
- *    DispHTMLUnknownElement interface
- */
-[
-    hidden,
-    uuid(3050f539-98b5-11cf-bb82-00aa00bdce0b)
-]
-dispinterface DispHTMLUnknownElement
-{
-properties:
-methods:
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    void setAttribute(
-            [in] BSTR strAttributeName,
-            [in] VARIANT AttributeValue,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    VARIANT getAttribute(
-             [in] BSTR strAttributeName,
-             [in, defaultvalue(0)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    VARIANT_BOOL removeAttribute(
-            [in] BSTR strAttributeName,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    void className(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    BSTR className();
-
-    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
-    void id(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
-    BSTR id();
-
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    BSTR tagName();
-
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    IHTMLElement *parentElement();
-
-    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
-    IHTMLStyle *style();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    void onhelp(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    VARIANT onhelp();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    void onclick(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    VARIANT onclick();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    void ondblclick(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    VARIANT ondblclick();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    void onkeydown(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    VARIANT onkeydown();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    void onkeyup(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    VARIANT onkeyup();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    void onkeypress(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    VARIANT onkeypress();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    void onmouseout(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    VARIANT onmouseout();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    void onmouseover(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    VARIANT onmouseover();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    void onmousemove(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    VARIANT onmousemove();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    void onmousedown(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    VARIANT onmousedown();
-
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    void onmouseup(VARIANT v);
-
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    VARIANT onmouseup();
-
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    IDispatch *document();
-
-    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    void title(BSTR v);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
+    HRESULT wrap([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    BSTR title();
+    [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
+    HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    void language(BSTR v);
+/*****************************************************************************
+ *    DispHTMLTextAreaElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f521-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLTextAreaElement
+{
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
 
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    BSTR language();
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_TYPE)]
+    BSTR type();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    void onselectstart(VARIANT v);
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
+    void value(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    VARIANT onselectstart();
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_VALUE), displaybind, bindable]
+    BSTR value();
 
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    void scrollIntoView([in, optional] VARIANT varargStart);
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
 
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_NAME), displaybind, bindable]
+    BSTR name();
 
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
-    long sourceIndex();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
+    void status(VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    VARIANT recordNumber();
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_STATUS)]
+    VARIANT status();
 
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    void lang(BSTR v);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_FORM)]
+    IHTMLFormElement *form();
 
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    BSTR lang();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    void defaultValue(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    long offsetLeft();
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    BSTR defaultValue();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    long offsetTop();
+    [id(DISPID_IHTMLTEXTAREAELEMENT_SELECT)]
+    void select();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    long offsetWidth();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
+    void onchange(VARIANT v);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    long offsetHeight();
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONCHANGE), displaybind, bindable]
+    VARIANT onchange();
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    IHTMLElement *offsetParent();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
+    void onselect(VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    void innerHTML(BSTR v);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ONSELECT), displaybind, bindable]
+    VARIANT onselect();
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    BSTR innerHTML();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
+    void readOnly(VARIANT_BOOL v);
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    void innerText(BSTR v);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_READONLY), displaybind, bindable]
+    VARIANT_BOOL readOnly();
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    BSTR innerText();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
+    void rows(LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    void outerHTML(BSTR v);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_ROWS), displaybind, bindable]
+    LONG rows();
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    BSTR outerHTML();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
+    void cols(LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    void outerText(BSTR v);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_COLS), displaybind, bindable]
+    LONG cols();
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    BSTR outerText();
+    [propput, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
+    void wrap(BSTR v);
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    void insertAdjacentHTML(
-            [in] BSTR where,
-            [in] BSTR html);
+    [propget, id(DISPID_IHTMLTEXTAREAELEMENT_WRAP), displaybind, bindable]
+    BSTR wrap();
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    void insertAdjacentText(
-            [in] BSTR where,
-            [in] BSTR text);
+    [id(DISPID_IHTMLTEXTAREAELEMENT_CREATETEXTRANGE)]
+    IHTMLTxtRange *createTextRange();
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    IHTMLElement *parentTextEdit();
+/*****************************************************************************
+ *    DispHTMLUnknownElement interface
+ */
+[
+    hidden,
+    uuid(3050f539-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLUnknownElement
+{
+properties:
+methods:
+    WINE_HTMLELEMENT_DISPINTERFACE_DECL;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    VARIANT_BOOL isTextEdit();
+/*****************************************************************************
+ *    IOmHistory interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(FECEAAA2-8405-11CF-8BA1-00AA00476DA6)
+]
+interface IOmHistory : IDispatch
+{
+    [propget, id(DISPID_IOMHISTORY_LENGTH)]
+    HRESULT length([retval, out] short *p);
 
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    void click();
+    [id(DISPID_IOMHISTORY_BACK)]
+    HRESULT back([optional, in] VARIANT *pvargdistance);
 
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    IHTMLFiltersCollection *filters();
+    [id(DISPID_IOMHISTORY_FORWARD)]
+    HRESULT forward([optional, in] VARIANT *pvargdistance);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    void ondragstart(VARIANT v);
+    [id(DISPID_IOMHISTORY_GO)]
+    HRESULT go([optional, in] VARIANT *pvargdistance);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    VARIANT ondragstart();
+[
+    noncreatable,
+    uuid(FECEAAA3-8405-11cf-8BA1-00AA00476DA6)
+]
+coclass HTMLHistory
+{
+    [default]           interface IOmHistory;
+}
 
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    BSTR toString();
+/*****************************************************************************
+ *    IHTMLMimeTypesCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F3FC-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLMimeTypesCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    void onbeforeupdate(VARIANT v);
+[
+    noncreatable,
+    uuid(3050f3fe-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass CMimeTypes
+{
+    [default]           interface IHTMLMimeTypesCollection;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    VARIANT onbeforeupdate();
+/*****************************************************************************
+ *    IHTMLPluginsCollection interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F3FD-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLPluginsCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    void onafterupdate(VARIANT v);
+    [id(DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)]
+    HRESULT refresh([defaultvalue(0), in] VARIANT_BOOL reload);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    VARIANT onafterupdate();
+[
+    noncreatable,
+    uuid(3050f3ff-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass CPlugins
+{
+    [default]           interface IHTMLPluginsCollection;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    void onerrorupdate(VARIANT v);
+/*****************************************************************************
+ *    IHTMLOpsProfile interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F401-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLOpsProfile : IDispatch
+{
+    [id(DISPID_IHTMLOPSPROFILE_ADDREQUEST)]
+    HRESULT addRequest(
+        [in] BSTR name,
+        [optional, in] VARIANT reserved,
+        [retval, out] VARIANT_BOOL *success);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    VARIANT onerrorupdate();
+    [id(DISPID_IHTMLOPSPROFILE_CLEARREQUEST)]
+    HRESULT clearRequest();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    void onrowexit(VARIANT v);
+    [id(DISPID_IHTMLOPSPROFILE_DOREQUEST)]
+    HRESULT doRequest(
+        [in] VARIANT usage,
+        [optional, in] VARIANT fname,
+        [optional, in] VARIANT domain,
+        [optional, in] VARIANT path,
+        [optional, in] VARIANT expire,
+        [optional, in] VARIANT reserved);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    VARIANT onrowexit();
+    [id(DISPID_IHTMLOPSPROFILE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR name,
+        [retval, out] BSTR *value);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    void onrowenter(VARIANT v);
+    [id(DISPID_IHTMLOPSPROFILE_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR name,
+        [in] BSTR value,
+        [optional, in] VARIANT prefs,
+        [retval, out] VARIANT_BOOL *success);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    VARIANT onrowenter();
+    [id(DISPID_IHTMLOPSPROFILE_COMMITCHANGES)]
+    HRESULT commitChanges([retval, out] VARIANT_BOOL *success);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    void ondatasetchanged(VARIANT v);
+    [id(DISPID_IHTMLOPSPROFILE_ADDREADREQUEST)]
+    HRESULT addReadRequest(
+        [in] BSTR name,
+        [optional, in] VARIANT reserved,
+        [retval, out] VARIANT_BOOL *success);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    VARIANT ondatasetchanged();
+    [id(DISPID_IHTMLOPSPROFILE_DOREADREQUEST)]
+    HRESULT doReadRequest(
+        [in] VARIANT usage,
+        [optional, in] VARIANT fname,
+        [optional, in] VARIANT domain,
+        [optional, in] VARIANT path,
+        [optional, in] VARIANT expire,
+        [optional, in] VARIANT reserved);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    void ondataavailable(VARIANT v);
+    [id(DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST)]
+    HRESULT doWriteRequest([retval, out] VARIANT_BOOL *success);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    VARIANT ondataavailable();
+[
+    noncreatable,
+    uuid(3050f402-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass COpsProfile
+{
+    [default]           interface IHTMLOpsProfile;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    void ondatasetcomplete(VARIANT v);
+/*****************************************************************************
+ *    IOmNavigator interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(FECEAAA5-8405-11CF-8BA1-00AA00476DA6)
+]
+interface IOmNavigator : IDispatch
+{
+    [propget, id(DISPID_IOMNAVIGATOR_APPCODENAME)]
+    HRESULT appCodeName([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    VARIANT ondatasetcomplete();
+    [propget, id(DISPID_IOMNAVIGATOR_APPNAME)]
+    HRESULT appName([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    void onfilterchange(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)]
+    HRESULT appVersion([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    VARIANT onfilterchange();
+    [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)]
+    HRESULT userAgent([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    IDispatch *children();
+    [id(DISPID_IOMNAVIGATOR_JAVAENABLED)]
+    HRESULT javaEnabled([retval, out] VARIANT_BOOL *enabled);
 
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    IDispatch *all();
+    [id(DISPID_IOMNAVIGATOR_TAINTENABLED)]
+    HRESULT taintEnabled([retval, out] VARIANT_BOOL *enabled);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    BSTR scopeName();
+    [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)]
+    HRESULT mimeTypes([retval, out] IHTMLMimeTypesCollection **p);
 
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+    [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)]
+    HRESULT plugins([retval, out] IHTMLPluginsCollection **p);
 
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    void releaseCapture();
+    [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)]
+    HRESULT cookieEnabled([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    void onlosecapture(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)]
+    HRESULT opsProfile([retval, out] IHTMLOpsProfile **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    VARIANT onlosecapture();
+    [id(DISPID_IOMNAVIGATOR_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
 
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    BSTR componentFromPoint(
-            [in] long x,
-            [in] long y);
+    [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)]
+    HRESULT cpuClass([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    void doScroll([in, optional] VARIANT component);
+    [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)]
+    HRESULT systemLanguage([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    void onscroll(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE), hidden]
+    HRESULT browserLanguage([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    VARIANT onscroll();
+    [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)]
+    HRESULT userLanguage([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    void ondrag(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)]
+    HRESULT platform([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    VARIANT ondrag();
+    [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)]
+    HRESULT appMinorVersion([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    void ondragend(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED), hidden]
+    HRESULT connectionSpeed([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    VARIANT ondragend();
+    [propget, id(DISPID_IOMNAVIGATOR_ONLINE)]
+    HRESULT onLine([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    void ondragenter(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)]
+    HRESULT userProfile([retval, out] IHTMLOpsProfile **p);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    VARIANT ondragenter();
+/*****************************************************************************
+ *    DispHTMLNavigator dispinterface
+ */
+[
+    hidden,
+    uuid(3050f54c-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLNavigator
+{
+properties:
+methods:
+    [propget, id(DISPID_IOMNAVIGATOR_APPCODENAME)]
+    BSTR appCodeName();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    void ondragover(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_APPNAME)]
+    BSTR appName();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    VARIANT ondragover();
+    [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)]
+    BSTR appVersion();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    void ondragleave(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)]
+    BSTR userAgent();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    VARIANT ondragleave();
+    [id(DISPID_IOMNAVIGATOR_JAVAENABLED)]
+    VARIANT_BOOL javaEnabled();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    void ondrop(VARIANT v);
+    [id(DISPID_IOMNAVIGATOR_TAINTENABLED)]
+    VARIANT_BOOL taintEnabled();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    VARIANT ondrop();
+    [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)]
+    IHTMLMimeTypesCollection *mimeTypes();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    void onbeforecut(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)]
+    IHTMLPluginsCollection *plugins();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    VARIANT onbeforecut();
+    [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)]
+    VARIANT_BOOL cookieEnabled();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    void oncut(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)]
+    IHTMLOpsProfile *opsProfile();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    VARIANT oncut();
+    [id(DISPID_IOMNAVIGATOR_TOSTRING)]
+    BSTR toString();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    void onbeforecopy(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)]
+    BSTR cpuClass();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    VARIANT onbeforecopy();
+    [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)]
+    BSTR systemLanguage();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    void oncopy(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE), hidden]
+    BSTR browserLanguage();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    VARIANT oncopy();
+    [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)]
+    BSTR userLanguage();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    void onbeforepaste(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)]
+    BSTR platform();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    VARIANT onbeforepaste();
+    [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)]
+    BSTR appMinorVersion();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    void onpaste(VARIANT v);
+    [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED), hidden]
+    LONG connectionSpeed();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    VARIANT onpaste();
+    [propget, id(DISPID_IOMNAVIGATOR_ONLINE)]
+    VARIANT_BOOL onLine();
 
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    IHTMLCurrentStyle *currentStyle();
+    [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)]
+    IHTMLOpsProfile *userProfile();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    void onpropertychange(VARIANT v);
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    VARIANT onpropertychange();
+[
+    noncreatable,
+    uuid(FECEAAA6-8405-11cf-8BA1-00AA00476DA6)
+]
+coclass HTMLNavigator
+{
+    [default]  dispinterface DispHTMLNavigator;
+               interface IOmNavigator;
+}
 
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    IHTMLRectCollection *getClientRects();
+/*****************************************************************************
+ *    IHTMLLocation interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(163BB1E0-6E00-11cf-837A-48DC04C10000)
+]
+interface IHTMLLocation : IDispatch
+{
+    [propput, id(DISPID_IHTMLLOCATION_HREF)]
+    HRESULT href([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    IHTMLRect *getBoundingClientRect();
+    [propget, id(DISPID_IHTMLLOCATION_HREF)]
+    HRESULT href([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    void setExpression(
-            [in] BSTR propname,
-            [in] BSTR expression,
-            [in, defaultvalue("")] BSTR language);
+    [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    HRESULT protocol([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    VARIANT getExpression([in] BSTR propname);
+    [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    VARIANT_BOOL removeExpression([in] BSTR propname);
+    [propput, id(DISPID_IHTMLLOCATION_HOST)]
+    HRESULT host([in] BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    void tabIndex(short v);
+    [propget, id(DISPID_IHTMLLOCATION_HOST)]
+    HRESULT host([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    short tabIndex();
+    [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    HRESULT hostname([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    void focus();
+    [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    HRESULT hostname([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    void accessKey(BSTR v);
+    [propput, id(DISPID_IHTMLLOCATION_PORT)]
+    HRESULT port([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    BSTR accessKey();
+    [propget, id(DISPID_IHTMLLOCATION_PORT)]
+    HRESULT port([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    void onblur(VARIANT v);
+    [propput, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    HRESULT pathname([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    VARIANT onblur();
+    [propget, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    HRESULT pathname([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    void onfocus(VARIANT v);
+    [propput, id(DISPID_IHTMLLOCATION_SEARCH)]
+    HRESULT search([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    VARIANT onfocus();
+    [propget, id(DISPID_IHTMLLOCATION_SEARCH)]
+    HRESULT search([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    void onresize(VARIANT v);
+    [propput, id(DISPID_IHTMLLOCATION_HASH)]
+    HRESULT hash([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    VARIANT onresize();
+    [propget, id(DISPID_IHTMLLOCATION_HASH)]
+    HRESULT hash([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    void blur();
+    [id(DISPID_IHTMLLOCATION_RELOAD)]
+    HRESULT reload([defaultvalue(0), in] VARIANT_BOOL flag);
 
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    void addFilter([in] IUnknown *pUnk);
+    [id(DISPID_IHTMLLOCATION_REPLACE)]
+    HRESULT replace([in] BSTR bstr);
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    void removeFilter([in] IUnknown *pUnk);
+    [id(DISPID_IHTMLLOCATION_ASSIGN)]
+    HRESULT assign([in] BSTR bstr);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    long clientHeight();
+    [id(DISPID_IHTMLLOCATION_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    long clientWidth();
+/*****************************************************************************
+ *    DispHTMLLocation dispinterface
+ */
+[
+    hidden,
+    uuid(3050f54e-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLLocation
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLLOCATION_HREF)]
+    void href(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    long clientTop();
+    [propget, id(DISPID_IHTMLLOCATION_HREF)]
+    BSTR href();
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    long clientLeft();
+    [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    void protocol(BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    BSTR protocol();
 
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [propput, id(DISPID_IHTMLLOCATION_HOST)]
+    void host(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    VARIANT readyState();
+    [propget, id(DISPID_IHTMLLOCATION_HOST)]
+    BSTR host();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    void onreadystatechange(VARIANT v);
+    [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    void hostname(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    VARIANT onreadystatechange();
+    [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    BSTR hostname();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    void onrowsdelete(VARIANT v);
+    [propput, id(DISPID_IHTMLLOCATION_PORT)]
+    void port(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    VARIANT onrowsdelete();
+    [propget, id(DISPID_IHTMLLOCATION_PORT)]
+    BSTR port();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    void onrowsinserted(VARIANT v);
+    [propput, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    void pathname(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-     VARIANT onrowsinserted();
+    [propget, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    BSTR pathname();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-     void oncellchange(VARIANT v);
+    [propput, id(DISPID_IHTMLLOCATION_SEARCH)]
+    void search(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    VARIANT oncellchange();
+    [propget, id(DISPID_IHTMLLOCATION_SEARCH)]
+    BSTR search();
 
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    void dir(BSTR v);
+    [propput, id(DISPID_IHTMLLOCATION_HASH)]
+    void hash(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    BSTR dir();
+    [propget, id(DISPID_IHTMLLOCATION_HASH)]
+    BSTR hash();
 
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    IDispatch *createControlRange();
+    [id(DISPID_IHTMLLOCATION_RELOAD)]
+    void reload([in, defaultvalue(0)] VARIANT_BOOL flag);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    long scrollHeight();
+    [id(DISPID_IHTMLLOCATION_REPLACE)]
+    void replace([in] BSTR bstr);
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    long scrollWidth();
+    [id(DISPID_IHTMLLOCATION_ASSIGN)]
+    void assign([in] BSTR bstr);
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    void scrollTop(long v);
+    [id(DISPID_IHTMLLOCATION_TOSTRING)]
+    BSTR toString();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    long scrollTop();
+    WINE_IHTMLDOMCONSTRUCTOR_DISPINTERFACE_DECL;
+}
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    void scrollLeft(long v);
+[
+    noncreatable,
+    uuid(163BB1E1-6E00-11cf-837A-48DC04C10000)
+]
+coclass HTMLLocation
+{
+    [default]  dispinterface DispHTMLLocation;
+               interface IHTMLLocation;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    long scrollLeft();
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4ce-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLBookmarkCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLBOOKMARKCOLLECTION_LENGTH), hidden]
+    HRESULT length([out, retval] LONG *p);
 
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    void clearAttributes();
+    [propget, id(DISPID_IHTMLBOOKMARKCOLLECTION__NEWENUM), hidden, restricted]
+    HRESULT _newEnum([out, retval] IUnknown **p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    void oncontextmenu(VARIANT v);
+    [id(DISPID_IHTMLBOOKMARKCOLLECTION_ITEM)]
+    HRESULT item(
+            [in] LONG index,
+            [out, retval] VARIANT *pVarBookmark);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    VARIANT oncontextmenu();
+/*****************************************************************************
+ *    IHTMLDataTransfer interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4b3-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDataTransfer : IDispatch
+{
+    [id(DISPID_IHTMLDATATRANSFER_SETDATA)]
+    HRESULT setData(
+            [in] BSTR format,
+            [in] VARIANT *data,
+            [out, retval] VARIANT_BOOL *pret);
 
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    IHTMLElement *insertAdjacentElement(
-            [in] BSTR where,
-            [in] IHTMLElement *insertedElement);
+    [id(DISPID_IHTMLDATATRANSFER_GETDATA)]
+    HRESULT getData(
+            [in] BSTR format,
+            [out, retval] VARIANT *pvarRet);
 
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    IHTMLElement *applyElement(
-            [in] IHTMLElement *apply,
-            [in] BSTR where);
+    [id(DISPID_IHTMLDATATRANSFER_CLEARDATA)]
+    HRESULT clearData(
+            [in] BSTR format,
+            [out, retval] VARIANT_BOOL *pret);
 
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    BSTR getAdjacentText([in] BSTR where);
+    [propput, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+    HRESULT dropEffect([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    BSTR replaceAdjacentText(
-            [in] BSTR where,
-            [in] BSTR newText);
+    [propget, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
+    HRESULT dropEffect([out, retval] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    VARIANT_BOOL canHaveChildren();
+    [propput, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+    HRESULT effectAllowed([in] BSTR v);
 
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    long addBehavior(
-            [in] BSTR bstrUrl,
-            [in, optional] VARIANT *pvarFactory);
+    [propget, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
+    HRESULT effectAllowed([out, retval] BSTR *p);
+}
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    VARIANT_BOOL removeBehavior([in] long cookie);
+/*****************************************************************************
+ *    IHTMLEventObj interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F32D-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLEventObj : IDispatch
+{
+    [propget, id(DISPID_IHTMLEVENTOBJ_SRCELEMENT)]
+    HRESULT srcElement([retval, out] IHTMLElement **p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    IHTMLStyle *runtimeStyle();
+    [propget, id(DISPID_IHTMLEVENTOBJ_ALTKEY)]
+    HRESULT altKey([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    IDispatch *behaviorUrns();
+    [propget, id(DISPID_IHTMLEVENTOBJ_CTRLKEY)]
+    HRESULT ctrlKey([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    void tagUrn(BSTR v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_SHIFTKEY)]
+    HRESULT shiftKey([retval, out] VARIANT_BOOL *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    BSTR tagUrn();
+    [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    HRESULT returnValue([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    void onbeforeeditfocus(VARIANT v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    HRESULT returnValue([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    VARIANT onbeforeeditfocus();
+    [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    HRESULT cancelBubble([in] VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    long readyStateValue();
+    [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    HRESULT cancelBubble([retval, out] VARIANT_BOOL *p);
 
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_FROMELEMENT)]
+    HRESULT fromElement([retval, out] IHTMLElement **p);
 
-    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
-    void mergeAttributes(
-            [in] IHTMLElement *mergeThis,
-            [in, optional] VARIANT *pvarFlags);
+    [propget, id(DISPID_IHTMLEVENTOBJ_TOELEMENT)]
+    HRESULT toElement([retval, out] IHTMLElement **p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
-    VARIANT_BOOL isMultiLine();
+    [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    HRESULT keyCode([in] LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
-    VARIANT_BOOL canHaveHTML();
+    [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    HRESULT keyCode([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    void onlayoutcomplete(VARIANT v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_BUTTON)]
+    HRESULT button([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    VARIANT onlayoutcomplete();
+    [propget, id(DISPID_IHTMLEVENTOBJ_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    void onpage(VARIANT v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_QUALIFIER)]
+    HRESULT qualifier([retval, out] BSTR *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    VARIANT onpage();
+    [propget, id(DISPID_IHTMLEVENTOBJ_REASON)]
+    HRESULT reason([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    void inflateBlock(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_X)]
+    HRESULT x([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    VARIANT_BOOL inflateBlock();
+    [propget, id(DISPID_IHTMLEVENTOBJ_Y)]
+    HRESULT y([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    void onbeforedeactivate(VARIANT v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTX)]
+    HRESULT clientX([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    VARIANT onbeforedeactivate();
+    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTY)]
+    HRESULT clientY([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
-    void setActive();
+    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETX)]
+    HRESULT offsetX([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    void contentEditable(BSTR v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETY)]
+    HRESULT offsetY([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    BSTR contentEditable();
+    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENX)]
+    HRESULT screenX([retval, out] LONG *p);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
-    VARIANT_BOOL isContentEditable();
+    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENY)]
+    HRESULT screenY([retval, out] LONG *p);
 
-    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    void hideFocus(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_SRCFILTER)]
+    HRESULT srcFilter([retval, out] IDispatch **p);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    VARIANT_BOOL hideFocus();
+/*****************************************************************************
+ *    DispCEventObj dispinterface
+ */
+[
+    hidden,
+    uuid(3050f558-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispCEventObj
+{
+properties:
+methods:
+    [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    void returnValue(VARIANT v);
 
-    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    void disabled(VARIANT_BOOL v);
+    [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
+    VARIANT returnValue();
 
-    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    VARIANT_BOOL disabled();
+    [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    void cancelBubble(VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
-    VARIANT_BOOL isDisabled();
+    [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
+    VARIANT_BOOL cancelBubble();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    void onmove(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    void keyCode(LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    VARIANT onmove();
+    [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
+    LONG keyCode();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    void oncontrolselect(VARIANT v);
+    [id(DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    VARIANT oncontrolselect();
+    [id(DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)]
+    VARIANT getAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(0)] LONG lFlags);
 
-    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
-    VARIANT_BOOL fireEvent(
-            [in] BSTR bstrEventName,
-            [in, optional] VARIANT *pvarEventObject);
+    [id(DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    void onresizestart(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
+    void propertyName(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    VARIANT onresizestart();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)]
+    BSTR propertyName();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    void onresizeend(VARIANT v);
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
+    void bookmarks(IHTMLBookmarkCollection *v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    VARIANT onresizeend();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_BOOKMARKS)]
+    IHTMLBookmarkCollection *bookmarks();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    void onmovestart(VARIANT v);
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
+    void recordset(IDispatch *v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    VARIANT onmovestart();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_RECORDSET)]
+    IDispatch *recordset();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    void onmoveend(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
+    void dataFld(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    VARIANT onmoveend();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_DATAFLD)]
+    BSTR dataFld();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    void onmouseenter(VARIANT v);
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
+    void boundElements(IHTMLElementCollection *v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    VARIANT onmouseenter();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)]
+    IHTMLElementCollection *boundElements();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    void onmouseleave(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
+    void repeat(VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    VARIANT onmouseleave();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_REPEAT)]
+    VARIANT_BOOL repeat();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    void onactivate(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
+    void srcUrn(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    VARIANT onactivate();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCURN)]
+    BSTR srcUrn();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    void ondeactivate(VARIANT v);
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
+    void srcElement(IHTMLElement *v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    VARIANT ondeactivate();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCELEMENT)]
+    IHTMLElement *srcElement();
 
-    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
-    VARIANT_BOOL dragDrop();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
+    void altKey(VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
-    LONG glyphMode();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_ALTKEY)]
+    VARIANT_BOOL altKey();
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    void onmousewheel(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
+    void ctrlKey(VARIANT_BOOL v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    VARIANT onmousewheel();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_CTRLKEY)]
+    VARIANT_BOOL ctrlKey();
 
-    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
-    void normalize();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
+    void shiftKey(VARIANT_BOOL v);
 
-    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
-    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SHIFTKEY)]
+    VARIANT_BOOL shiftKey();
 
-    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
-    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
+    void fromElement(IHTMLElement *v);
 
-    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
-    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_FROMELEMENT)]
+    IHTMLElement *fromElement();
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    void onbeforeactivate(VARIANT v);
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
+    void toElement(IHTMLElement *v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    VARIANT onbeforeactivate();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_TOELEMENT)]
+    IHTMLElement *toElement();
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    void onfocusin(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
+    void button(LONG v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    VARIANT onfocusin();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_BUTTON)]
+    LONG button();
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    void onfocusout(VARIANT v);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
+    void type(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    VARIANT onfocusout();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_TYPE)]
+    BSTR type();
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
-    long uniqueNumber();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
+    void qualifier(BSTR v);
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
-    BSTR uniqueID();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_QUALIFIER)]
+    BSTR qualifier();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_REASON)]
+    void reason(LONG v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_REASON)]
+    LONG reason();
 
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_X)]
+    void x(LONG v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_X)]
+    LONG x();
 
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_Y)]
+    void y(LONG v);
 
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_Y)]
+    LONG y();
 
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
+    void clientX(LONG v);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTX)]
+    LONG clientX();
 
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
+    void clientY(LONG v);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_CLIENTY)]
+    LONG clientY();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
+    void offsetX(LONG v);
 
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETX)]
+    LONG offsetX();
 
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+    [propput, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
+    void offsetY(LONG v);
 
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_OFFSETY)]
+    LONG offsetY();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
+    void screenX(LONG v);
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENX)]
+    LONG screenX();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    [propput, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
+    void screenY(LONG v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SCREENY)]
+    LONG screenY();
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+    [propputref, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
+    void srcFilter(IDispatch *v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_SRCFILTER)]
+    IDispatch *srcFilter();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
+    [propget, id(DISPID_IHTMLEVENTOBJ2_DATATRANSFER)]
+    IHTMLDataTransfer *dataTransfer();
 
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
-}
+    [propget, id(DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW)]
+    VARIANT_BOOL contentOverflow();
 
-/*****************************************************************************
- *    IOmHistory interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(FECEAAA2-8405-11CF-8BA1-00AA00476DA6)
-]
-interface IOmHistory : IDispatch
-{
-    [propget, id(DISPID_IOMHISTORY_LENGTH)]
-    HRESULT length([retval, out] short *p);
+    [propput, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
+    void shiftLeft(VARIANT_BOOL v);
 
-    [id(DISPID_IOMHISTORY_BACK)]
-    HRESULT back([optional, in] VARIANT *pvargdistance);
+    [propget, id(DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)]
+    VARIANT_BOOL shiftLeft();
 
-    [id(DISPID_IOMHISTORY_FORWARD)]
-    HRESULT forward([optional, in] VARIANT *pvargdistance);
+    [propput, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
+    void altLeft(VARIANT_BOOL v);
 
-    [id(DISPID_IOMHISTORY_GO)]
-    HRESULT go([optional, in] VARIANT *pvargdistance);
+    [propget, id(DISPID_IHTMLEVENTOBJ3_ALTLEFT)]
+    VARIANT_BOOL altLeft();
+
+    [propput, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
+    void ctrlLeft(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_CTRLLEFT)]
+    VARIANT_BOOL ctrlLeft();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE), hidden, restricted, nonbrowsable]
+    LONG_PTR imeCompositionChange();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND), hidden, restricted, nonbrowsable]
+    LONG_PTR imeNotifyCommand();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA), hidden, restricted, nonbrowsable]
+    LONG_PTR imeNotifyData();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUEST), hidden, restricted, nonbrowsable]
+    LONG_PTR imeRequest();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA), hidden, restricted, nonbrowsable]
+    LONG_PTR imeRequestData();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT), hidden, restricted, nonbrowsable]
+    LONG_PTR keyboardLayout();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE)]
+    LONG behaviorCookie();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_BEHAVIORPART)]
+    LONG behaviorPart();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ3_NEXTPAGE)]
+    BSTR nextPage();
+
+    [propget, id(DISPID_IHTMLEVENTOBJ4_WHEELDELTA)]
+    LONG wheelDelta();
 }
 
 /*****************************************************************************
- *    IHTMLMimeTypesCollection interface
+ *    IHTMLFramesCollection2 interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050F3FC-98B5-11CF-BB82-00AA00BDCE0B)
+    uuid(332C4426-26CB-11D0-B483-00C04FD90119)
 ]
-interface IHTMLMimeTypesCollection : IDispatch
+interface IHTMLFramesCollection2 : IDispatch
 {
-    [propget, id(DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH)]
-    HRESULT length([retval, out] long *p);
+    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+
+    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
+    HRESULT length([retval, out] LONG *p);
 }
 
 /*****************************************************************************
- *    IHTMLPluginsCollection interface
+ *    IHTMLScreen interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050F3FD-98B5-11CF-BB82-00AA00BDCE0B)
+    uuid(3050f35C-98B5-11CF-BB82-00AA00BDCE0B)
 ]
-interface IHTMLPluginsCollection : IDispatch
+interface IHTMLScreen : IDispatch
 {
-    [propget, id(DISPID_IHTMLPLUGINSCOLLECTION_LENGTH)]
-    HRESULT length([retval, out] long *p);
+    [propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)]
+    HRESULT colorDepth([retval, out] LONG *p);
 
-    [id(DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)]
-    HRESULT refresh([defaultvalue(0), in] VARIANT_BOOL reload);
+    [propput, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
+    HRESULT bufferDepth([in] LONG v);
+
+    [propget, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
+    HRESULT bufferDepth([retval, out] LONG *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_WIDTH)]
+    HRESULT width([retval, out] LONG *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_HEIGHT)]
+    HRESULT height([retval, out] LONG *p);
+
+    [propput, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
+    HRESULT updateInterval([in] LONG v);
+
+    [propget, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
+    HRESULT updateInterval([retval, out] LONG *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_AVAILHEIGHT)]
+    HRESULT availHeight([retval, out] LONG *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_AVAILWIDTH)]
+    HRESULT availWidth([retval, out] LONG *p);
+
+    [propget, id(DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)]
+    HRESULT fontSmoothingEnabled([retval, out] VARIANT_BOOL *p);
 }
 
 /*****************************************************************************
- *    IHTMLOpsProfile interface
+ *    IHTMLWindow2 interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050F401-98B5-11CF-BB82-00AA00BDCE0B)
+    uuid(332C4427-26CB-11D0-B483-00C04FD90119)
 ]
-interface IHTMLOpsProfile : IDispatch
+interface IHTMLWindow2 : IHTMLFramesCollection2
 {
-    [id(DISPID_IHTMLOPSPROFILE_ADDREQUEST)]
-    HRESULT addRequest(
-        [in] BSTR name,
-        [optional, in] VARIANT reserved,
-        [retval, out] VARIANT_BOOL *success);
+    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
+    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);
 
-    [id(DISPID_IHTMLOPSPROFILE_CLEARREQUEST)]
-    HRESULT clearRequest();
+    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    HRESULT defaultStatus([in] BSTR v);
 
-    [id(DISPID_IHTMLOPSPROFILE_DOREQUEST)]
-    HRESULT doRequest(
-        [in] VARIANT usage,
-        [optional, in] VARIANT fname,
-        [optional, in] VARIANT domain,
-        [optional, in] VARIANT path,
-        [optional, in] VARIANT expire,
-        [optional, in] VARIANT reserved);
+    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    HRESULT defaultStatus([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLOPSPROFILE_GETATTRIBUTE)]
-    HRESULT getAttribute(
-        [in] BSTR name,
-        [retval, out] BSTR *value);
+    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
+    HRESULT status([in] BSTR v);
 
-    [id(DISPID_IHTMLOPSPROFILE_SETATTRIBUTE)]
-    HRESULT setAttribute(
-        [in] BSTR name,
-        [in] BSTR value,
-        [optional, in] VARIANT prefs,
-        [retval, out] VARIANT_BOOL *success);
+    [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
+    HRESULT status([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLOPSPROFILE_COMMITCHANGES)]
-    HRESULT commitChanges([retval, out] VARIANT_BOOL *success);
+    [id(DISPID_IHTMLWINDOW2_SETTIMEOUT)]
+    HRESULT setTimeout(
+        [in] BSTR expression,
+        [in] LONG msec,
+        [optional, in] VARIANT *language,
+        [retval, out] LONG *timerID);
 
-    [id(DISPID_IHTMLOPSPROFILE_ADDREADREQUEST)]
-    HRESULT addReadRequest(
-        [in] BSTR name,
-        [optional, in] VARIANT reserved,
-        [retval, out] VARIANT_BOOL *success);
+    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
+    HRESULT clearTimeout([in] LONG timerID);
 
-    [id(DISPID_IHTMLOPSPROFILE_DOREADREQUEST)]
-    HRESULT doReadRequest(
-        [in] VARIANT usage,
-        [optional, in] VARIANT fname,
-        [optional, in] VARIANT domain,
-        [optional, in] VARIANT path,
-        [optional, in] VARIANT expire,
-        [optional, in] VARIANT reserved);
+    [id(DISPID_IHTMLWINDOW2_ALERT)]
+    HRESULT alert([defaultvalue(""), in] BSTR message);
 
-    [id(DISPID_IHTMLOPSPROFILE_DOWRITEREQUEST)]
-    HRESULT doWriteRequest([retval, out] VARIANT_BOOL *success);
-}
+    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
+    HRESULT confirm(
+        [defaultvalue(""), in] BSTR message,
+        [retval, out] VARIANT_BOOL *confirmed);
 
-/*****************************************************************************
- *    IOmNavigator interface
- */
-[
-       odl,
-       oleautomation,
-       dual,
-       uuid(FECEAAA5-8405-11CF-8BA1-00AA00476DA6)
-]
-interface IOmNavigator : IDispatch
-{
-    [propget, id(DISPID_IOMNAVIGATOR_APPCODENAME)]
-    HRESULT appCodeName([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW2_PROMPT)]
+    HRESULT prompt(
+        [defaultvalue(""), in] BSTR message,
+        [defaultvalue("undefined"), in] BSTR defstr,
+        [retval, out] VARIANT *textdata);
 
-    [propget, id(DISPID_IOMNAVIGATOR_APPNAME)]
-    HRESULT appName([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
+    HRESULT Image([retval, out] IHTMLImageElementFactory **p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)]
-    HRESULT appVersion([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
+    HRESULT location([retval, out] IHTMLLocation **p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)]
-    HRESULT userAgent([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
+    HRESULT history([retval, out] IOmHistory **p);
 
-    [id(DISPID_IOMNAVIGATOR_JAVAENABLED)]
-    HRESULT javaEnabled([retval, out] VARIANT_BOOL *enabled);
+    [id(DISPID_IHTMLWINDOW2_CLOSE)]
+    HRESULT close();
 
-    [id(DISPID_IOMNAVIGATOR_TAINTENABLED)]
-    HRESULT taintEnabled([retval, out] VARIANT_BOOL *enabled);
+    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
+    HRESULT opener([in] VARIANT v);
 
-    [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)]
-    HRESULT mimeTypes([retval, out] IHTMLMimeTypesCollection **p);
+    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
+    HRESULT opener([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)]
-    HRESULT plugins([retval, out] IHTMLPluginsCollection **p);
+    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
+    HRESULT navigator([retval, out] IOmNavigator **p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)]
-    HRESULT cookieEnabled([retval, out] VARIANT_BOOL *p);
+    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
+    HRESULT name([in] BSTR v);
 
-    [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)]
-    HRESULT opsProfile([retval, out] IHTMLOpsProfile **p);
+    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
+    HRESULT name([retval, out] BSTR *p);
 
-    [id(DISPID_IOMNAVIGATOR_TOSTRING)]
-    HRESULT toString([retval, out] BSTR *String);
+    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
+    HRESULT parent([retval, out] IHTMLWindow2 **p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)]
-    HRESULT cpuClass([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW2_OPEN)]
+    HRESULT open(
+        [defaultvalue(""), in] BSTR url,
+        [defaultvalue(""), in] BSTR name,
+        [defaultvalue(""), in] BSTR features,
+        [defaultvalue(0), in] VARIANT_BOOL replace,
+        [retval, out] IHTMLWindow2 **pomWindowResult);
 
-    [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)]
-    HRESULT systemLanguage([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_SELF)]
+    HRESULT self([retval, out] IHTMLWindow2 **p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE)]
-    HRESULT browserLanguage([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
+    HRESULT top([retval, out] IHTMLWindow2 **p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)]
-    HRESULT userLanguage([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
+    HRESULT window([retval, out] IHTMLWindow2 **p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)]
-    HRESULT platform([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
+    HRESULT navigate([in] BSTR url);
 
-    [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)]
-    HRESULT appMinorVersion([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
+    HRESULT onfocus([in] VARIANT v);
 
-    [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED)]
-    HRESULT connectionSpeed([retval, out] long *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
+    HRESULT onfocus([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IOMNAVIGATOR_ONLINE)]
-    HRESULT onLine([retval, out] VARIANT_BOOL *p);
+    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR)]
+    HRESULT onblur([in] VARIANT v);
 
-    [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)]
-    HRESULT userProfile([retval, out] IHTMLOpsProfile **p);
-}
+    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR)]
+    HRESULT onblur([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONLOAD)]
+    HRESULT onload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD)]
+    HRESULT onload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
+    HRESULT onbeforeunload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
+    HRESULT onbeforeunload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
+    HRESULT onunload([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
+    HRESULT onunload([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONHELP)]
+    HRESULT onhelp([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONHELP)]
+    HRESULT onhelp([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONERROR)]
+    HRESULT onerror([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONERROR)]
+    HRESULT onerror([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
+    HRESULT onresize([in] VARIANT v);
 
-/*****************************************************************************
- *    IHTMLLocation interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(163BB1E0-6E00-11cf-837A-48DC04C10000)
-]
-interface IHTMLLocation : IDispatch
-{
-    [propput, id(DISPID_IHTMLLOCATION_HREF)]
-    HRESULT href([in] BSTR v);
+    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
+    HRESULT onresize([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLLOCATION_HREF)]
-    HRESULT href([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
+    HRESULT onscroll([in] VARIANT v);
 
-    [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)]
-    HRESULT protocol([in] BSTR v);
+    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
+    HRESULT onscroll([retval, out] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)]
-    HRESULT protocol([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT)]
+    HRESULT document([retval, out] IHTMLDocument2 **p);
 
-    [propput, id(DISPID_IHTMLLOCATION_HOST)]
-    HRESULT host([in] BSTR v);
+    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
+    HRESULT event([retval, out] IHTMLEventObj **p);
 
-    [propget, id(DISPID_IHTMLLOCATION_HOST)]
-    HRESULT host([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
 
-    [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)]
-    HRESULT hostname([in] BSTR v);
+    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
+    HRESULT showModalDialog(
+        [in] BSTR dialog,
+        [optional, in] VARIANT *varArgIn,
+        [optional, in] VARIANT *varOptions,
+        [retval, out] VARIANT *varArgOut);
 
-    [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)]
-    HRESULT hostname([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
+    HRESULT showHelp(
+        [in] BSTR helpURL,
+        [optional, in] VARIANT helpArg,
+        [defaultvalue(""), in] BSTR features);
 
-    [propput, id(DISPID_IHTMLLOCATION_PORT)]
-    HRESULT port([in] BSTR v);
+    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
+    HRESULT screen([retval, out] IHTMLScreen **p);
 
-    [propget, id(DISPID_IHTMLLOCATION_PORT)]
-    HRESULT port([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
+    HRESULT Option([retval, out] IHTMLOptionElementFactory **p);
 
-    [propput, id(DISPID_IHTMLLOCATION_PATHNAME)]
-    HRESULT pathname([in] BSTR v);
+    [id(DISPID_IHTMLWINDOW2_FOCUS)]
+    HRESULT focus();
 
-    [propget, id(DISPID_IHTMLLOCATION_PATHNAME)]
-    HRESULT pathname([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
+    HRESULT closed([retval, out] VARIANT_BOOL *p);
 
-    [propput, id(DISPID_IHTMLLOCATION_SEARCH)]
-    HRESULT search([in] BSTR v);
+    [id(DISPID_IHTMLWINDOW2_BLUR)]
+    HRESULT blur();
 
-    [propget, id(DISPID_IHTMLLOCATION_SEARCH)]
-    HRESULT search([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW2_SCROLL)]
+    HRESULT scroll([in] LONG x, [in] LONG y);
 
-    [propput, id(DISPID_IHTMLLOCATION_HASH)]
-    HRESULT hash([in] BSTR v);
+    [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
+    HRESULT clientInformation([retval, out] IOmNavigator **p);
 
-    [propget, id(DISPID_IHTMLLOCATION_HASH)]
-    HRESULT hash([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW2_SETINTERVAL)]
+    HRESULT setInterval([
+        in] BSTR expression,
+        [in] LONG msec,
+        [optional, in] VARIANT *language,
+        [retval, out] LONG *timerID);
 
-    [id(DISPID_IHTMLLOCATION_RELOAD)]
-    HRESULT reload([defaultvalue(0), in] VARIANT_BOOL flag);
+    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
+    HRESULT clearInterval([in] LONG timerID);
 
-    [id(DISPID_IHTMLLOCATION_REPLACE)]
-    HRESULT replace([in] BSTR bstr);
+    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    HRESULT offscreenBuffering([in] VARIANT v);
 
-    [id(DISPID_IHTMLLOCATION_ASSIGN)]
-    HRESULT assign([in] BSTR bstr);
+    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    HRESULT offscreenBuffering([retval, out] VARIANT *p);
 
-    [id(DISPID_IHTMLLOCATION_TOSTRING)]
+    [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
+    HRESULT execScript(
+        [in] BSTR scode,
+        [defaultvalue("JScript"), in] BSTR language,
+        [retval, out] VARIANT *pvarRet);
+
+    [id(DISPID_IHTMLWINDOW2_TOSTRING)]
     HRESULT toString([retval, out] BSTR *String);
-}
 
-/*****************************************************************************
- *    IHTMLDataTransfer interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f4b3-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLDataTransfer : IDispatch
-{
-    [id(DISPID_IHTMLDATATRANSFER_SETDATA)]
-    HRESULT setData(
-            [in] BSTR format,
-            [in] VARIANT *data,
-            [out, retval] VARIANT_BOOL *pret);
+    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
+    HRESULT scrollBy([in] LONG x, [in] LONG y);
 
-    [id(DISPID_IHTMLDATATRANSFER_GETDATA)]
-    HRESULT getData(
-            [in] BSTR format,
-            [out, retval] VARIANT *pvarRet);
+    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
+    HRESULT scrollTo([in] LONG x, [in] LONG y);
 
-    [id(DISPID_IHTMLDATATRANSFER_CLEARDATA)]
-    HRESULT clearData(
-            [in] BSTR format,
-            [out, retval] VARIANT_BOOL *pret);
+    [id(DISPID_IHTMLWINDOW2_MOVETO)]
+    HRESULT moveTo([in] LONG x, [in] LONG y);
 
-    [propput, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
-    HRESULT dropEffect([in] BSTR v);
+    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
+    HRESULT moveBy([in] LONG x, [in] LONG y);
 
-    [propget, id(DISPID_IHTMLDATATRANSFER_DROPEFFECT)]
-    HRESULT dropEffect([out, retval] BSTR *p);
+    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
+    HRESULT resizeTo([in] LONG x, [in] LONG y);
 
-    [propput, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
-    HRESULT effectAllowed([in] BSTR v);
+    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
+    HRESULT resizeBy([in] LONG x, [in] LONG y);
 
-    [propget, id(DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)]
-    HRESULT effectAllowed([out, retval] BSTR *p);
+    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
+    HRESULT external([retval, out] IDispatch **p);
 }
 
 /*****************************************************************************
- *    IHTMLEventObj interface
+ *    IHTMLWindow3 interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050F32D-98B5-11CF-BB82-00AA00BDCE0B)
+    uuid(3050f4ae-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLEventObj : IDispatch
+interface IHTMLWindow3 : IDispatch
 {
-    [propget, id(DISPID_IHTMLEVENTOBJ_SRCELEMENT)]
-    HRESULT srcElement([retval, out] IHTMLElement **p);
-
-    [propget, id(DISPID_IHTMLEVENTOBJ_ALTKEY)]
-    HRESULT altKey([retval, out] VARIANT_BOOL *p);
-
-    [propget, id(DISPID_IHTMLEVENTOBJ_CTRLKEY)]
-    HRESULT ctrlKey([retval, out] VARIANT_BOOL *p);
-
-    [propget, id(DISPID_IHTMLEVENTOBJ_SHIFTKEY)]
-    HRESULT shiftKey([retval, out] VARIANT_BOOL *p);
-
-    [propput, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
-    HRESULT returnValue([in] VARIANT v);
-
-    [propget, id(DISPID_IHTMLEVENTOBJ_RETURNVALUE)]
-    HRESULT returnValue([retval, out] VARIANT *p);
-
-    [propput, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
-    HRESULT cancelBubble([in] VARIANT_BOOL v);
-
-    [propget, id(DISPID_IHTMLEVENTOBJ_CANCELBUBBLE)]
-    HRESULT cancelBubble([retval, out] VARIANT_BOOL *p);
-
-    [propget, id(DISPID_IHTMLEVENTOBJ_FROMELEMENT)]
-    HRESULT fromElement([retval, out] IHTMLElement **p);
-
-    [propget, id(DISPID_IHTMLEVENTOBJ_TOELEMENT)]
-    HRESULT toElement([retval, out] IHTMLElement **p);
-
-    [propput, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
-    HRESULT keyCode([in] long v);
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
+    HRESULT screenLeft([out, retval] LONG *p);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_KEYCODE)]
-    HRESULT keyCode([retval, out] long *p);
+    [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
+    HRESULT screenTop([out, retval] LONG *p);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_BUTTON)]
-    HRESULT button([retval, out] long *p);
+    [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
+    HRESULT attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp,
+            [out, retval] VARIANT_BOOL *pfResult);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_TYPE)]
-    HRESULT type([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
+    HRESULT detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_QUALIFIER)]
-    HRESULT qualifier([retval, out] BSTR *p);
+    [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
+    HRESULT setTimeout(
+            [in] VARIANT *expression,
+            [in] LONG msec,
+            [in, optional] VARIANT *language,
+            [out, retval] LONG *timerID);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_REASON)]
-    HRESULT reason([retval, out] long *p);
+    [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
+    HRESULT setInterval(
+            [in] VARIANT *expression,
+            [in] LONG msec,
+            [in, optional] VARIANT *language,
+            [out, retval] LONG *timerID);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_X)]
-    HRESULT x([retval, out] long *p);
+    [id(DISPID_IHTMLWINDOW3_PRINT)]
+    HRESULT print();
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_Y)]
-    HRESULT y([retval, out] long *p);
+    [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTX)]
-    HRESULT clientX([retval, out] long *p);
+    [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
+    HRESULT onbeforeprint([out, retval] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTY)]
-    HRESULT clientY([retval, out] long *p);
+    [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETX)]
-    HRESULT offsetX([retval, out] long *p);
+    [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
+    HRESULT onafterprint([out, retval] VARIANT *p);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETY)]
-    HRESULT offsetY([retval, out] long *p);
+    [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
+    HRESULT clipboardData([out, retval] IHTMLDataTransfer **p);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENX)]
-    HRESULT screenX([retval, out] long *p);
+    [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
+    HRESULT showModelessDialog(
+            [in, defaultvalue("")] BSTR url,
+            [in, optional] VARIANT *varArgIn,
+            [in, optional] VARIANT *options,
+            [out, retval] IHTMLWindow2 **pDialog);
+}
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENY)]
-    HRESULT screenY([retval, out] long *p);
+/*****************************************************************************
+ *    IHTMLWindow4 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f6cf-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLWindow4 : IDispatch
+{
+    [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
+    HRESULT createPopup([optional, in] VARIANT* varArgIn,
+                        [retval, out] IDispatch** ppPopup);
 
-    [propget, id(DISPID_IHTMLEVENTOBJ_SRCFILTER)]
-    HRESULT srcFilter([retval, out] IDispatch **p);
+    [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
+    HRESULT frameElement([retval, out] IHTMLFrameBase* * p);
 }
 
 /*****************************************************************************
- *    IHTMLFramesCollection2 interface
+ *    IHTMLWindow5 interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(332C4426-26CB-11D0-B483-00C04FD90119)
+    uuid(3051040e-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLFramesCollection2 : IDispatch
+interface IHTMLWindow5 : IDispatch
 {
-    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
-    HRESULT item(
-        [in] VARIANT *pvarIndex,
-        [retval, out] VARIANT *pvarResult);
+    [propput, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
+    HRESULT XMLHttpRequest([in] VARIANT v);
 
-    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
-    HRESULT length([retval, out] long *p);
+    [propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
+    HRESULT XMLHttpRequest([retval, out] VARIANT * p);
 }
 
 /*****************************************************************************
- *    IHTMLScreen interface
+ *    DispHTMLScreen dispinterface
  */
 [
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f35C-98B5-11CF-BB82-00AA00BDCE0B)
+    hidden,
+    uuid(3050f591-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLScreen : IDispatch
+dispinterface DispHTMLScreen
 {
+properties:
+methods:
     [propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)]
-    HRESULT colorDepth([retval, out] long *p);
+    long colorDepth();
 
     [propput, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
-    HRESULT bufferDepth([in] long v);
+    void bufferDepth(long v);
 
     [propget, id(DISPID_IHTMLSCREEN_BUFFERDEPTH)]
-    HRESULT bufferDepth([retval, out] long *p);
+    long bufferDepth();
 
     [propget, id(DISPID_IHTMLSCREEN_WIDTH)]
-    HRESULT width([retval, out] long *p);
+    long width();
 
     [propget, id(DISPID_IHTMLSCREEN_HEIGHT)]
-    HRESULT height([retval, out] long *p);
+    long height();
 
     [propput, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
-    HRESULT updateInterval([in] long v);
+    void updateInterval(long v);
 
     [propget, id(DISPID_IHTMLSCREEN_UPDATEINTERVAL)]
-    HRESULT updateInterval([retval, out] long *p);
+    long updateInterval();
 
     [propget, id(DISPID_IHTMLSCREEN_AVAILHEIGHT)]
-    HRESULT availHeight([retval, out] long *p);
+    long availHeight();
 
     [propget, id(DISPID_IHTMLSCREEN_AVAILWIDTH)]
-    HRESULT availWidth([retval, out] long *p);
+    long availWidth();
 
     [propget, id(DISPID_IHTMLSCREEN_FONTSMOOTHINGENABLED)]
-    HRESULT fontSmoothingEnabled([retval, out] VARIANT_BOOL *p);
+    VARIANT_BOOL fontSmoothingEnabled();
+
+    [propget, id(DISPID_IHTMLSCREEN2_LOGICALXDPI)]
+    long logicalXDPI();
+
+    [propget, id(DISPID_IHTMLSCREEN2_LOGICALYDPI)]
+    long logicalYDPI();
+
+    [propget, id(DISPID_IHTMLSCREEN2_DEVICEXDPI)]
+    long deviceXDPI();
+
+    [propget, id(DISPID_IHTMLSCREEN2_DEVICEYDPI)]
+    long deviceYDPI();
+
+    [propget, id(DISPID_IHTMLSCREEN3_SYSTEMXDPI)]
+    long systemXDPI();
+
+    [propget, id(DISPID_IHTMLSCREEN3_SYSTEMYDPI)]
+    long systemYDPI();
+
+    [propget, id(DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden]
+    IDispatch *constructor();
 }
 
 /*****************************************************************************
- *    IHTMLWindow2 interface
+ *    DispHTMLWindow2 dispinterface
  */
 [
-    odl,
-    oleautomation,
-    dual,
-    uuid(332C4427-26CB-11D0-B483-00C04FD90119)
+    hidden,
+    uuid(3050f55d-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLWindow2 : IHTMLFramesCollection2
+dispinterface DispHTMLWindow2
 {
+properties:
+methods:
+    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
+    VARIANT item([in] VARIANT *pvarIndex);
+
+    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
+    LONG length();
+
     [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
-    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);
+    IHTMLFramesCollection2 *frames();
 
     [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
-    HRESULT defaultStatus([in] BSTR v);
+    void defaultStatus(BSTR v);
 
     [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
-    HRESULT defaultStatus([retval, out] BSTR *p);
+    BSTR defaultStatus();
 
     [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
-    HRESULT status([in] BSTR v);
+    void status(BSTR v);
 
     [propget, id(DISPID_IHTMLWINDOW2_STATUS)]
-    HRESULT status([retval, out] BSTR *p);
-
-    [id(DISPID_IHTMLWINDOW2_SETTIMEOUT)]
-    HRESULT setTimeout(
-        [in] BSTR expression,
-        [in] long msec,
-        [optional, in] VARIANT *language,
-        [retval, out] long *timerID);
+    BSTR status();
 
     [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
-    HRESULT clearTimeout([in] long timerID);
+    void clearTimeout([in] LONG timerID);
 
     [id(DISPID_IHTMLWINDOW2_ALERT)]
-    HRESULT alert([defaultvalue(""), in] BSTR message);
+    void alert([in, defaultvalue("")] BSTR message);
 
     [id(DISPID_IHTMLWINDOW2_CONFIRM)]
-    HRESULT confirm(
-        [defaultvalue(""), in] BSTR message,
-        [retval, out] VARIANT_BOOL *confirmed);
+    VARIANT_BOOL confirm([in, defaultvalue("")] BSTR message);
 
     [id(DISPID_IHTMLWINDOW2_PROMPT)]
-    HRESULT prompt(
-        [defaultvalue(""), in] BSTR message,
-        [defaultvalue("undefined"), in] BSTR defstr,
-        [retval, out] VARIANT *textdata);
+    VARIANT prompt(
+            [in, defaultvalue("")] BSTR message,
+            [in, defaultvalue("undefined")] BSTR defstr);
 
     [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
-    HRESULT Image([retval, out] IHTMLImageElementFactory **p);
+    IHTMLImageElementFactory *Image();
 
     [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
-    HRESULT location([retval, out] IHTMLLocation **p);
+    IHTMLLocation *location();
 
     [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
-    HRESULT history([retval, out] IOmHistory **p);
+    IOmHistory *history();
 
     [id(DISPID_IHTMLWINDOW2_CLOSE)]
-    HRESULT close();
+    void close();
 
     [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
-    HRESULT opener([in] VARIANT v);
+    void opener(VARIANT v);
 
     [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
-    HRESULT opener([retval, out] VARIANT *p);
+    VARIANT opener();
 
     [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
-    HRESULT navigator([retval, out] IOmNavigator **p);
+    IOmNavigator *navigator();
 
     [propput, id(DISPID_IHTMLWINDOW2_NAME)]
-    HRESULT name([in] BSTR v);
+    void name(BSTR v);
 
     [propget, id(DISPID_IHTMLWINDOW2_NAME)]
-    HRESULT name([retval, out] BSTR *p);
+    BSTR name();
 
     [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
-    HRESULT parent([retval, out] IHTMLWindow2 **p);
+    IHTMLWindow2 *parent();
 
     [id(DISPID_IHTMLWINDOW2_OPEN)]
-    HRESULT open(
-        [defaultvalue(""), in] BSTR url,
-        [defaultvalue(""), in] BSTR name,
-        [defaultvalue(""), in] BSTR features,
-        [defaultvalue(0), in] VARIANT_BOOL replace,
-        [retval, out] IHTMLWindow2 **pomWindowResult);
+    IHTMLWindow2 *open(
+            [in, defaultvalue("")] BSTR url,
+            [in, defaultvalue("")] BSTR name,
+            [in, defaultvalue("")] BSTR features,
+            [in, defaultvalue(0)]  VARIANT_BOOL replace);
 
     [propget, id(DISPID_IHTMLWINDOW2_SELF)]
-    HRESULT self([retval, out] IHTMLWindow2 **p);
+    IHTMLWindow2 *self();
 
     [propget, id(DISPID_IHTMLWINDOW2_TOP)]
-    HRESULT top([retval, out] IHTMLWindow2 **p);
+    IHTMLWindow2 *top();
 
     [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
-    HRESULT window([retval, out] IHTMLWindow2 **p);
+    IHTMLWindow2 *window();
 
     [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
-    HRESULT navigate([in] BSTR url);
-
-    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
-    HRESULT onfocus([in] VARIANT v);
+    void navigate([in] BSTR url);
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
-    HRESULT onfocus([retval, out] VARIANT *p);
+    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR)]
-    HRESULT onblur([in] VARIANT v);
+    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR)]
-    HRESULT onblur([retval, out] VARIANT *p);
+    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONLOAD)]
-    HRESULT onload([in] VARIANT v);
+    [propget, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD)]
-    HRESULT onload([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
+    VARIANT onload();
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
-    HRESULT onbeforeunload([in] VARIANT v);
+    [propput, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+    void onbeforeunload(VARIANT v);
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD)]
-    HRESULT onbeforeunload([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable]
+    VARIANT onbeforeunload();
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
-    HRESULT onunload([in] VARIANT v);
+    [propput, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+    void onunload(VARIANT v);
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD)]
-    HRESULT onunload([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable]
+    VARIANT onunload();
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONHELP)]
-    HRESULT onhelp([in] VARIANT v);
+    [propput, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONHELP)]
-    HRESULT onhelp([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONERROR)]
-    HRESULT onerror([in] VARIANT v);
+    [propput, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+    void onerror(VARIANT v);
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONERROR)]
-    HRESULT onerror([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable]
+    VARIANT onerror();
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
-    HRESULT onresize([in] VARIANT v);
+    [propput, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
-    HRESULT onresize([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
 
-    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
-    HRESULT onscroll([in] VARIANT v);
+    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
 
-    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
-    HRESULT onscroll([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
 
-    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT)]
-    HRESULT document([retval, out] IHTMLDocument2 **p);
+    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT), source]
+    IHTMLDocument2 *document();
 
     [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
-    HRESULT event([retval, out] IHTMLEventObj **p);
+    IHTMLEventObj *event();
 
-    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM)]
-    HRESULT _newEnum([retval, out] IUnknown **p);
+    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted]
+    IUnknown *_newEnum();
 
     [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
-    HRESULT showModalDialog(
-        [in] BSTR dialog,
-        [optional, in] VARIANT *varArgIn,
-        [optional, in] VARIANT *varOptions,
-        [retval, out] VARIANT *varArgOut);
+    VARIANT showModalDialog(
+            [in] BSTR dialog,
+            [in, optional] VARIANT *varArgIn,
+            [in, optional] VARIANT *varOptions);
 
     [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
-    HRESULT showHelp(
-        [in] BSTR helpURL,
-        [optional, in] VARIANT helpArg,
-        [defaultvalue(""), in] BSTR features);
+    void showHelp(
+            [in] BSTR helpURL,
+            [in, optional] VARIANT helpArg,
+            [in, defaultvalue("")] BSTR features);
 
     [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
-    HRESULT screen([retval, out] IHTMLScreen **p);
+    IHTMLScreen *screen();
 
     [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
-    HRESULT Option([retval, out] IHTMLOptionElementFactory **p);
+    IHTMLOptionElementFactory *Option();
 
     [id(DISPID_IHTMLWINDOW2_FOCUS)]
-    HRESULT focus();
+    void focus();
 
     [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
-    HRESULT closed([retval, out] VARIANT_BOOL *p);
+    VARIANT_BOOL closed();
 
     [id(DISPID_IHTMLWINDOW2_BLUR)]
-    HRESULT blur();
+    void blur();
 
     [id(DISPID_IHTMLWINDOW2_SCROLL)]
-    HRESULT scroll([in] long x, [in] long y);
+    void scroll([in] LONG x, [in] LONG y);
 
     [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
-    HRESULT clientInformation([retval, out] IOmNavigator **p);
-
-    [id(DISPID_IHTMLWINDOW2_SETINTERVAL)]
-    HRESULT setInterval([
-        in] BSTR expression,
-        [in] long msec,
-        [optional, in] VARIANT *language,
-        [retval, out] long *timerID);
+    IOmNavigator *clientInformation();
 
     [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
-    HRESULT clearInterval([in] long timerID);
+    void clearInterval([in] LONG timerID);
 
     [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
-    HRESULT offscreenBuffering([in] VARIANT v);
+    void offscreenBuffering(VARIANT v);
 
     [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
-    HRESULT offscreenBuffering([retval, out] VARIANT *p);
+    VARIANT offscreenBuffering();
 
     [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
-    HRESULT execScript(
-        [in] BSTR scode,
-        [defaultvalue("JScript"), in] BSTR language,
-        [retval, out] VARIANT *pvarRet);
+    VARIANT execScript(
+            [in] BSTR _code,
+            [in, defaultvalue("JScript")] BSTR language);
 
     [id(DISPID_IHTMLWINDOW2_TOSTRING)]
-    HRESULT toString([retval, out] BSTR *String);
+    BSTR toString();
 
     [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
-    HRESULT scrollBy([in] long x, [in] long y);
+    void scrollBy([in] LONG x, [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
-    HRESULT scrollTo([in] long x, [in] long y);
+    void scrollTo([in] LONG x, [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_MOVETO)]
-    HRESULT moveTo([in] long x, [in] long y);
+    void moveTo([in] LONG x, [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_MOVEBY)]
-    HRESULT moveBy([in] long x, [in] long y);
+    void moveBy([in] LONG x, [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_RESIZETO)]
-    HRESULT resizeTo([in] long x, [in] long y);
+    void resizeTo([in] LONG x, [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
-    HRESULT resizeBy([in] long x, [in] long y);
+    void resizeBy([in] LONG x, [in] LONG y);
 
     [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
-    HRESULT external([retval, out] IDispatch **p);
-}
+    IDispatch *external();
 
-/*****************************************************************************
- *    IHTMLWindow3 interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f4ae-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLWindow3 : IDispatch
-{
     [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
-    HRESULT screenLeft([out, retval] long *p);
+    LONG screenLeft();
 
     [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
-    HRESULT screenTop([out, retval] long *p);
+    LONG screenTop();
 
     [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
-    HRESULT attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp,
-            [out, retval] VARIANT_BOOL *pfResult);
+    VARIANT_BOOL attachEvent(
+             [in] BSTR event,
+             [in] IDispatch *pDisp);
 
     [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
-    HRESULT detachEvent(
+    void detachEvent(
             [in] BSTR event,
             [in] IDispatch *pDisp);
 
     [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
-    HRESULT setTimeout(
+    LONG setTimeout(
             [in] VARIANT *expression,
-            [in] long msec,
-            [in, optional] VARIANT *language,
-            [out, retval] long *timerID);
+            [in] LONG msec,
+            [in, optional] VARIANT *language);
 
     [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
-    HRESULT setInterval(
+    LONG setInterval(
             [in] VARIANT *expression,
-            [in] long msec,
-            [in, optional] VARIANT *language,
-            [out, retval] long *timerID);
+            [in] LONG msec,
+            [in, optional] VARIANT *language);
 
     [id(DISPID_IHTMLWINDOW3_PRINT)]
-    HRESULT print();
+    void print();
 
     [propput, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
-    HRESULT onbeforeprint([in] VARIANT v);
+    void onbeforeprint(VARIANT v);
 
     [propget, id(DISPID_IHTMLWINDOW3_ONBEFOREPRINT), displaybind, bindable]
-    HRESULT onbeforeprint([out, retval] VARIANT *p);
+    VARIANT onbeforeprint();
 
     [propput, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
-    HRESULT onafterprint([in] VARIANT v);
+    void onafterprint(VARIANT v);
 
     [propget, id(DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable]
-    HRESULT onafterprint([out, retval] VARIANT *p);
+    VARIANT onafterprint();
 
     [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
-    HRESULT clipboardData([out, retval] IHTMLDataTransfer **p);
+    IHTMLDataTransfer *clipboardData();
 
     [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
-    HRESULT showModelessDialog(
+    IHTMLWindow2 *showModelessDialog(
             [in, defaultvalue("")] BSTR url,
             [in, optional] VARIANT *varArgIn,
-            [in, optional] VARIANT *options,
-            [out, retval] IHTMLWindow2 **pDialog);
+            [in, optional] VARIANT *options);
+
+    [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
+    IDispatch *createPopup([in, optional] VARIANT *varArgIn);
+
+    [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
+    IHTMLFrameBase *frameElement();
 }
 
 /*****************************************************************************
- *    DispHTMLWindow2 dispinterface
+ *    DispHTMLWindowProxy dispinterface
  */
 [
     hidden,
-    uuid(3050f55d-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f55e-98b5-11cf-bb82-00aa00bdce0b)
 ]
-dispinterface DispHTMLWindow2
+dispinterface DispHTMLWindowProxy
 {
 properties:
 methods:
     [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
-    VARIANT item([in] VARIANT *pvarIndex);
+    VARIANT item([in] VARIANTpvarIndex);
 
     [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
-    long length();
+    LONG length();
 
     [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
-    IHTMLFramesCollection2 *frames();
+    IHTMLFramesCollection2frames();
 
     [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
     void defaultStatus(BSTR v);
@@ -11227,27 +10736,26 @@ methods:
     BSTR status();
 
     [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
-    void clearTimeout([in] long timerID);
+    void clearTimeout([in] LONG timerID);
 
     [id(DISPID_IHTMLWINDOW2_ALERT)]
-    void alert([in, defaultvalue("")] BSTR message);
+    void alert([defaultvalue(""), in] BSTR message);
 
     [id(DISPID_IHTMLWINDOW2_CONFIRM)]
-    VARIANT_BOOL confirm([in, defaultvalue("")] BSTR message);
+    VARIANT_BOOL confirm([defaultvalue(""), in] BSTR message);
 
     [id(DISPID_IHTMLWINDOW2_PROMPT)]
-    VARIANT prompt(
-            [in, defaultvalue("")] BSTR message,
-            [in, defaultvalue("undefined")] BSTR defstr);
+    VARIANT prompt([defaultvalue(""), in] BSTR message,
+                   [defaultvalue("undefined"), in] BSTR defstr);
 
     [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
-    IHTMLImageElementFactory *Image();
+    IHTMLImageElementFactoryImage();
 
     [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
-    IHTMLLocation *location();
+    IHTMLLocationlocation();
 
     [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
-    IOmHistory *history();
+    IOmHistoryhistory();
 
     [id(DISPID_IHTMLWINDOW2_CLOSE)]
     void close();
@@ -11259,7 +10767,7 @@ methods:
     VARIANT opener();
 
     [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
-    IOmNavigator *navigator();
+    IOmNavigatornavigator();
 
     [propput, id(DISPID_IHTMLWINDOW2_NAME)]
     void name(BSTR v);
@@ -11268,23 +10776,22 @@ methods:
     BSTR name();
 
     [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
-    IHTMLWindow2 *parent();
+    IHTMLWindow2parent();
 
     [id(DISPID_IHTMLWINDOW2_OPEN)]
-    IHTMLWindow2 *open(
-            [in, defaultvalue("")] BSTR url,
-            [in, defaultvalue("")] BSTR name,
-            [in, defaultvalue("")] BSTR features,
-            [in, defaultvalue(0)]  VARIANT_BOOL replace);
+    IHTMLWindow2* open([defaultvalue(""), in] BSTR url,
+                       [defaultvalue(""), in] BSTR name,
+                       [defaultvalue(""), in] BSTR features,
+                       [defaultvalue(0), in] VARIANT_BOOL replace);
 
     [propget, id(DISPID_IHTMLWINDOW2_SELF)]
-    IHTMLWindow2 *self();
+    IHTMLWindow2self();
 
     [propget, id(DISPID_IHTMLWINDOW2_TOP)]
-    IHTMLWindow2 *top();
+    IHTMLWindow2top();
 
     [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
-    IHTMLWindow2 *window();
+    IHTMLWindow2window();
 
     [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
     void navigate([in] BSTR url);
@@ -11301,6 +10808,9 @@ methods:
     [propget, id(DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable]
     VARIANT onblur();
 
+    [propput, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
+
     [propget, id(DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable]
     VARIANT onload();
 
@@ -11341,31 +10851,29 @@ methods:
     VARIANT onscroll();
 
     [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT), source]
-    IHTMLDocument2 *document();
+    IHTMLDocument2document();
 
     [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
-    IHTMLEventObj *event();
+    IHTMLEventObjevent();
 
     [propget, id(DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted]
-    IUnknown *_newEnum();
+    IUnknown_newEnum();
 
     [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
-    VARIANT showModalDialog(
-            [in] BSTR dialog,
-            [in, optional] VARIANT *varArgIn,
-            [in, optional] VARIANT *varOptions);
+    VARIANT showModalDialog([in] BSTR dialog,
+                            [optional, in] VARIANT* varArgIn,
+                            [optional, in] VARIANT* varOptions);
 
     [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
-    void showHelp(
-            [in] BSTR helpURL,
-            [in, optional] VARIANT helpArg,
-            [in, defaultvalue("")] BSTR features);
+    void showHelp([in] BSTR helpURL,
+                  [optional, in] VARIANT helpArg,
+                  [defaultvalue(""), in] BSTR features);
 
     [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
-    IHTMLScreen *screen();
+    IHTMLScreenscreen();
 
     [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
-    IHTMLOptionElementFactory *Option();
+    IHTMLOptionElementFactoryOption();
 
     [id(DISPID_IHTMLWINDOW2_FOCUS)]
     void focus();
@@ -11377,13 +10885,14 @@ methods:
     void blur();
 
     [id(DISPID_IHTMLWINDOW2_SCROLL)]
-    void scroll([in] long x, [in] long y);
+    void scroll([in] LONG x,
+                [in] LONG y);
 
     [propget, id(DISPID_IHTMLWINDOW2_CLIENTINFORMATION)]
-    IOmNavigator *clientInformation();
+    IOmNavigatorclientInformation();
 
     [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
-    void clearInterval([in] long timerID);
+    void clearInterval([in] LONG timerID);
 
     [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
     void offscreenBuffering(VARIANT v);
@@ -11392,61 +10901,62 @@ methods:
     VARIANT offscreenBuffering();
 
     [id(DISPID_IHTMLWINDOW2_EXECSCRIPT)]
-    VARIANT execScript(
-            [in] BSTR _code,
-            [in, defaultvalue("JScript")] BSTR language);
+    VARIANT execScript([in] BSTR code,
+                       [defaultvalue("JScript"), in] BSTR language);
 
     [id(DISPID_IHTMLWINDOW2_TOSTRING)]
     BSTR toString();
 
     [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
-    void scrollBy([in] long x, [in] long y);
+    void scrollBy([in] LONG x,
+                  [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
-    void scrollTo([in] long x, [in] long y);
+    void scrollTo([in] LONG x,
+                  [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_MOVETO)]
-    void moveTo([in] long x, [in] long y);
+    void moveTo([in] LONG x,
+                [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_MOVEBY)]
-    void moveBy([in] long x, [in] long y);
+    void moveBy([in] LONG x,
+                [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_RESIZETO)]
-    void resizeTo([in] long x, [in] long y);
+    void resizeTo([in] LONG x,
+                  [in] LONG y);
 
     [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
-    void resizeBy([in] long x, [in] long y);
+    void resizeBy([in] LONG x,
+                  [in] LONG y);
 
     [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
-    IDispatch *external();
+    IDispatchexternal();
 
     [propget, id(DISPID_IHTMLWINDOW3_SCREENLEFT)]
-    long screenLeft();
+    LONG screenLeft();
 
     [propget, id(DISPID_IHTMLWINDOW3_SCREENTOP)]
-    long screenTop();
+    LONG screenTop();
 
     [id(DISPID_IHTMLWINDOW3_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-             [in] BSTR event,
-             [in] IDispatch *pDisp);
+    VARIANT_BOOL attachEvent([in] BSTR event,
+                             [in] IDispatch* pDisp);
 
     [id(DISPID_IHTMLWINDOW3_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    void detachEvent([in] BSTR event,
+                     [in] IDispatch* pDisp);
 
     [id(DISPID_IHTMLWINDOW3_SETTIMEOUT)]
-    long setTimeout(
-            [in] VARIANT *expression,
-            [in] long msec,
-            [in, optional] VARIANT *language);
+    LONG setTimeout([in] VARIANT* expression,
+                    [in] LONG msec,
+                    [optional, in] VARIANT* language);
 
     [id(DISPID_IHTMLWINDOW3_SETINTERVAL)]
-    long setInterval(
-            [in] VARIANT *expression,
-            [in] long msec,
-            [in, optional] VARIANT *language);
+    LONG setInterval([in] VARIANT* expression,
+                     [in] LONG msec,
+                     [optional, in] VARIANT* language);
 
     [id(DISPID_IHTMLWINDOW3_PRINT)]
     void print();
@@ -11464,19 +10974,135 @@ methods:
     VARIANT onafterprint();
 
     [propget, id(DISPID_IHTMLWINDOW3_CLIPBOARDDATA)]
-    IHTMLDataTransfer *clipboardData();
+    IHTMLDataTransferclipboardData();
 
     [id(DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)]
-    IHTMLWindow2 *showModelessDialog(
-            [in, defaultvalue("")] BSTR url,
-            [in, optional] VARIANT *varArgIn,
-            [in, optional] VARIANT *options);
+    IHTMLWindow2* showModelessDialog([defaultvalue(""), in] BSTR url,
+                                     [optional, in] VARIANT* varArgIn,
+                                     [optional, in] VARIANT* options);
 
     [id(DISPID_IHTMLWINDOW4_CREATEPOPUP)]
-    IDispatch *createPopup([in, optional] VARIANT *varArgIn);
+    IDispatch* createPopup([optional, in] VARIANT* varArgIn);
 
     [propget, id(DISPID_IHTMLWINDOW4_FRAMEELEMENT)]
-    IHTMLFrameBase *frameElement();
+    IHTMLFrameBase* frameElement();
+
+    [propput, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
+    void XMLHttpRequest(VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW5_XMLHTTPREQUEST)]
+    VARIANT XMLHttpRequest();
+}
+
+/*****************************************************************************
+ *    HTMLWindowEvents interface
+ */
+[
+    hidden,
+    uuid(96A0A4E0-D062-11cf-94B6-00AA0060275C)
+]
+dispinterface HTMLWindowEvents
+{
+properties:
+methods:
+    [id(DISPID_HTMLWINDOWEVENTS_ONLOAD)]
+    void onload();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONUNLOAD)]
+    void onunload();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONHELP)]
+    VARIANT_BOOL onhelp();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONFOCUS)]
+    void onfocus();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONBLUR)]
+    void onblur();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONERROR)]
+    void onerror([in] BSTR description,
+                 [in] BSTR url,
+                 [in] LONG line);
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONRESIZE)]
+    void onresize();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONSCROLL)]
+    void onscroll();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONBEFOREUNLOAD)]
+    void onbeforeunload();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONBEFOREPRINT)]
+    void onbeforeprint();
+
+    [id(DISPID_HTMLWINDOWEVENTS_ONAFTERPRINT)]
+    void onafterprint();
+}
+
+/*****************************************************************************
+ *    HTMLWindowEvents2 interface
+ */
+[
+    hidden,
+    uuid(3050f625-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLWindowEvents2
+{
+properties:
+methods:
+    [id(DISPID_HTMLWINDOWEVENTS2_ONLOAD)]
+    void onload([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONUNLOAD)]
+    void onunload([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONHELP)]
+    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONFOCUS)]
+    void onfocus([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONBLUR)]
+    void onblur([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONERROR)]
+    void onerror([in] BSTR description,
+                 [in] BSTR url,
+                 [in] LONG line);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONRESIZE)]
+    void onresize([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONSCROLL)]
+    void onscroll([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONBEFOREUNLOAD)]
+    void onbeforeunload([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONBEFOREPRINT)]
+    void onbeforeprint([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLWINDOWEVENTS2_ONAFTERPRINT)]
+    void onafterprint([in] IHTMLEventObj* pEvtObj);
+}
+
+/*****************************************************************************
+ *    HTMLWindowProxy class
+ */
+[
+    uuid(3050f391-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLWindowProxy
+{
+    [default]           dispinterface DispHTMLWindowProxy;
+    [source, default]   dispinterface HTMLWindowEvents;
+    [source]            dispinterface HTMLWindowEvents2;
+                        interface IHTMLWindow2;
+                        interface IHTMLWindow3;
+                        interface IHTMLWindow4;
+                        interface IHTMLWindow5;
 }
 
 /*****************************************************************************
@@ -11875,69 +11501,273 @@ methods:
     [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
     void oncellchange();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
-    void onreadystatechange();
+    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
+    void onreadystatechange();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
+    void onpage();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
+    void onmove();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
+    VARIANT_BOOL onmovestart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
+    void onmoveend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
+    void onresizeend();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
+    void onmouseenter();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
+    void onmouseleave();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
+    void onactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
+    void ondeactivate();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
+    void onfocusin();
+
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
+    void onfocusout();
+
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONCHANGE)]
+    void onchange();
+
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)]
+    void onselect();
+}
+
+/*****************************************************************************
+ *    HTMLTextContainerEvents2 interface
+ */
+[
+    hidden,
+    uuid(3050f624-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLTextContainerEvents2
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
+    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
+    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
+    void onkeydown([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
+    void onkeyup([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
+    void onmouseout([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
+    void onmouseover([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
+    void onmousemove([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
+    void onmousedown([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
+    void onmouseup([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
+    void onfilterchange([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
+    void onafterupdate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
+    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
+    void onrowenter([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
+    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
+    void ondataavailable([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
+    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
+    void onlosecapture([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
+    void onpropertychange([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
+    void onscroll([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
+    void onfocus([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
+    void onblur([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
+    void onresize([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
+    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
+    void ondragend([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
+    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
+    void ondragleave([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
+    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
+    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
+    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
+    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
+    void onrowsdelete([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
+    void onrowsinserted([in] IHTMLEventObj* pEvtObj);
+
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
+    void oncellchange([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
-    void onbeforeeditfocus();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
+    void onreadystatechange([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
-    void onlayoutcomplete();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
-    void onpage();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
+    void onpage([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
-    VARIANT_BOOL onbeforedeactivate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
+    void onmouseenter([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
-    VARIANT_BOOL onbeforeactivate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
+    void onmouseleave([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
-    void onmove();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
+    void onactivate([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
-    VARIANT_BOOL oncontrolselect();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
+    void ondeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
-    VARIANT_BOOL onmovestart();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
-    void onmoveend();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
-    VARIANT_BOOL onresizestart();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
+    void onfocusin([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
-    void onresizeend();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
+    void onfocusout([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
-    void onmouseenter();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
+    void onmove([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
-    void onmouseleave();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
-    VARIANT_BOOL onmousewheel();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
+    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
-    void onactivate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
+    void onmoveend([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
-    void ondeactivate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
-    void onfocusin();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
+    void onresizeend([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
-    void onfocusout();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONCHANGE)]
-    void onchange();
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONCHANGE)]
+    void onchange([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_HTMLTEXTCONTAINEREVENTS_ONSELECT)]
-    void onselect();
-};
+    [id(DISPID_HTMLTEXTCONTAINEREVENTS2_ONSELECT)]
+    void onselect([in] IHTMLEventObj* pEvtObj);
+}
 
 /*****************************************************************************
  *    IHTMLDocument interface
@@ -12289,8 +12119,8 @@ interface IHTMLDocument2 : IHTMLDocument
 
     [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)]
     HRESULT elementFromPoint(
-        [in] long x,
-        [in] long y,
+        [in] LONG x,
+        [in] LONG y,
         [retval, out] IHTMLElement **elementHit);
 
     [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)]
@@ -12317,7 +12147,7 @@ interface IHTMLDocument2 : IHTMLDocument
     [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)]
     HRESULT createStyleSheet(
         [defaultvalue(""), in] BSTR bstrHref,
-        [defaultvalue(-1), in] long lIndex,
+        [defaultvalue(-1), in] LONG lIndex,
         [retval, out] IHTMLStyleSheet **ppnewStyleSheet);
 }
 
@@ -12606,6 +12436,44 @@ interface IHTMLDocument5 : IDispatch
     HRESULT compatMode([retval, out] BSTR *p);
 }
 
+/*****************************************************************************
+ *    IHTMLDocument6 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(30510417-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLDocument6 : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOCUMENT6_COMPATIBLE)]
+    HRESULT compatible([retval, out] IHTMLDocumentCompatibleInfoCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT6_DOCUMENTMODE)]
+    HRESULT documentMode([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
+    HRESULT onstorage([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
+    HRESULT onstorage([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
+    HRESULT onstoragecommit([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
+    HRESULT onstoragecommit([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLDOCUMENT6_IE8_GETELEMENTBYID)]
+    HRESULT getElementById(
+        [in] BSTR bstrId,
+        [retval, out] IHTMLElement2 **p);
+
+    [id(DISPID_IHTMLDOCUMENT6_UPDATESETTINGS)]
+    HRESULT updateSettings();
+}
+
 /*****************************************************************************
  *    DispHTMLDocument dispinterface
  */
@@ -12926,8 +12794,8 @@ methods:
 
     [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)]
     IHTMLElement *elementFromPoint(
-        [in] long x,
-        [in] long y);
+        [in] LONG x,
+        [in] LONG y);
 
     [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)]
     IHTMLWindow2 *parentWindow();
@@ -12953,7 +12821,7 @@ methods:
     [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)]
     IHTMLStyleSheet *createStyleSheet(
         [defaultvalue(""), in] BSTR bstrHref,
-        [defaultvalue(-1), in] long lIndex);
+        [defaultvalue(-1), in] LONG lIndex);
 
     [id(DISPID_IHTMLDOCUMENT3_RELEASECAPTURE)]
     void releaseCapture();
@@ -13182,72 +13050,31 @@ methods:
     [propget, id(DISPID_IHTMLDOCUMENT5_COMPATMODE)]
     BSTR compatMode();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
-
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
-
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
-
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
-
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
-
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-        [in] IHTMLDOMNode *newChild,
-        [optional, in] VARIANT refChild);
-
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
-
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-        [in] IHTMLDOMNode *newChild,
-        [in] IHTMLDOMNode *oldChild);
-
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
-
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([defaultvalue(0), in] VARIANT_BOOL fDeep);
-
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode* otherNode);
-
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
-
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [propget, id(DISPID_IHTMLDOCUMENT6_COMPATIBLE)]
+    IHTMLDocumentCompatibleInfoCollection *compatible();
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    [propget, id(DISPID_IHTMLDOCUMENT6_DOCUMENTMODE)]
+    VARIANT documentMode();
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
+    void onstorage(VARIANT v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGE), displaybind, bindable]
+    VARIANT onstorage();
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    [propput, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
+    void onstoragecommit(VARIANT v);
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+    [propget, id(DISPID_IHTMLDOCUMENT6_ONSTORAGECOMMIT), displaybind, bindable]
+    VARIANT onstoragecommit();
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+    [id(DISPID_IHTMLDOCUMENT6_IE8_GETELEMENTBYID)]
+    IHTMLElement2 *ie8_getElementById([in] BSTR bstrId);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
+    [id(DISPID_IHTMLDOCUMENT6_UPDATESETTINGS)]
+    void updateSettings();
 
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
+    WINE_HTMLDOMNODE_DISPINTERFACE_DECL;
 }
 
 /*****************************************************************************
@@ -13265,6 +13092,7 @@ coclass HTMLDocument
                       interface IHTMLDocument3;
                       interface IHTMLDocument4;
                       interface IHTMLDocument5;
+                      interface IHTMLDocument6;
                       interface IHTMLDOMNode;
                       interface IHTMLDOMNode2;
 }
@@ -13287,10 +13115,10 @@ interface IHTMLCommentElement : IDispatch
     HRESULT text([out, retval] BSTR *p);
 
     [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
-    HRESULT atomic([in] long v);
+    HRESULT atomic([in] LONG v);
 
     [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
-    HRESULT atomic([out, retval] long *p);
+    HRESULT atomic([out, retval] LONG *p);
 }
 
 /*****************************************************************************
@@ -13311,12 +13139,12 @@ interface IHTMLCommentElement2 : IDispatch
     HRESULT data([out, retval] BSTR *p);
 
     [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
-    HRESULT length([out, retval] long *p);
+    HRESULT length([out, retval] LONG *p);
 
     [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
     HRESULT substringData(
-            [in] long offset,
-            [in] long Count,
+            [in] LONG offset,
+            [in] LONG Count,
             [out, retval] BSTR *pbstrsubString);
 
     [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
@@ -13324,18 +13152,18 @@ interface IHTMLCommentElement2 : IDispatch
 
     [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
     HRESULT insertData(
-            [in] long offset,
+            [in] LONG offset,
             [in] BSTR bstrstring);
 
     [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
     HRESULT deleteData(
-            [in] long offset,
-            [in] long Count);
+            [in] LONG offset,
+            [in] LONG Count);
 
     [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
     HRESULT replaceData(
-            [in] long offset,
-            [in] long Count,
+            [in] LONG offset,
+            [in] LONG Count,
             [in] BSTR bstrstring);
 }
 
@@ -13350,1298 +13178,1467 @@ dispinterface DispHTMLCommentElement
 {
 properties:
 methods:
-    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
-    void setAttribute(
-            [in] BSTR strAttributeName,
-            [in] VARIANT AttributeValue,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
-    VARIANT getAttribute(
-             [in] BSTR strAttributeName,
-             [in, defaultvalue(0)] LONG lFlags);
-
-    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
-    VARIANT_BOOL removeAttribute(
-            [in] BSTR strAttributeName,
-            [in, defaultvalue(1)] LONG lFlags);
-
-    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    void className(BSTR v);
-
-    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
-    BSTR className();
-
-    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
-    void id(BSTR v);
+    WINE_HTMLELEMENT_DISPINTERFACE_DECL;
 
-    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
-    BSTR id();
-
-    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
-    BSTR tagName();
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+    void text(BSTR v);
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
-    IHTMLElement *parentElement();
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
+    BSTR text();
 
-    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
-    IHTMLStyle *style();
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+    void atomic(LONG v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    void onhelp(VARIANT v);
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
+    LONG atomic();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
-    VARIANT onhelp();
+    [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+    void data(BSTR v);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    void onclick(VARIANT v);
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
+    BSTR data();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
-    VARIANT onclick();
+    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
+    LONG length();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    void ondblclick(VARIANT v);
+    [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
+    BSTR substringData(
+            [in] LONG offset,
+            [in] LONG Count);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
-    VARIANT ondblclick();
+    [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
+    void appendData([in] BSTR bstrstring);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    void onkeydown(VARIANT v);
+    [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
+     void insertData(
+            [in] LONG offset,
+            [in] BSTR bstrstring);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
-    VARIANT onkeydown();
+    [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
+    void deleteData(
+            [in] LONG offset,
+            [in] LONG Count);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    void onkeyup(VARIANT v);
+    [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
+    void replaceData(
+            [in] LONG offset,
+            [in] LONG Count,
+            [in] BSTR bstrstring);
+}
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
-    VARIANT onkeyup();
+[
+    hidden,
+    uuid(3050f60f-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLElementEvents2
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
+    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    void onkeypress(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
+    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
-    VARIANT onkeypress();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    void onmouseout(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
-    VARIANT onmouseout();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
+    void onkeydown([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    void onmouseover(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
+    void onkeyup([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
-    VARIANT onmouseover();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
+    void onmouseout([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    void onmousemove(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
+    void onmouseover([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
-    VARIANT onmousemove();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
+    void onmousemove([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    void onmousedown(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
+    void onmousedown([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
-    VARIANT onmousedown();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
+    void onmouseup([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    void onmouseup(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
-    VARIANT onmouseup();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
+    void onfilterchange([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
-    IDispatch *document();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    void title(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
-    BSTR title();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
+    void onafterupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    void language(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
-    BSTR language();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
+    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    void onselectstart(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
+    void onrowenter([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
-    VARIANT onselectstart();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
+    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
-    void scrollIntoView([in, optional] VARIANT varargStart);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
+    void ondataavailable([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT_CONTAINS)]
-    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
+    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
-    long sourceIndex();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
+    void onlosecapture([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
-    VARIANT recordNumber();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
+    void onpropertychange([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_LANG)]
-    void lang(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
+    void onscroll([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_LANG)]
-    BSTR lang();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
+    void onfocus([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
-    long offsetLeft();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
+    void onblur([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
-    long offsetTop();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
+    void onresize([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
-    long offsetWidth();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
+    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
-    long offsetHeight();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
+    void ondragend([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
-    IHTMLElement *offsetParent();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    void innerHTML(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
+    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
-    BSTR innerHTML();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
+    void ondragleave([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    void innerText(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
+    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
-    BSTR innerText();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    void outerHTML(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
+    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
-    BSTR outerHTML();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    void outerText(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
+    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
-    BSTR outerText();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
-    void insertAdjacentHTML(
-            [in] BSTR where,
-            [in] BSTR html);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
+    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
-    void insertAdjacentText(
-            [in] BSTR where,
-            [in] BSTR text);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
-    IHTMLElement *parentTextEdit();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
+    void onrowsdelete([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
-    VARIANT_BOOL isTextEdit();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
+    void onrowsinserted([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT_CLICK)]
-    void click();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
+    void oncellchange([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
-    IHTMLFiltersCollection *filters();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
+    void onreadystatechange([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    void ondragstart(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
-    VARIANT ondragstart();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
+    void onpage([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT_TOSTRING)]
-    BSTR toString();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
+    void onmouseenter([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    void onbeforeupdate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
+    void onmouseleave([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
-    VARIANT onbeforeupdate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
+    void onactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    void onafterupdate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
+    void ondeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
-    VARIANT onafterupdate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    void onerrorupdate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
-    VARIANT onerrorupdate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
+    void onfocusin([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    void onrowexit(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
+    void onfocusout([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
-    VARIANT onrowexit();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
+    void onmove([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    void onrowenter(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
-    VARIANT onrowenter();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
+    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    void ondatasetchanged(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
+    void onmoveend([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
-    VARIANT ondatasetchanged();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    void ondataavailable(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
+    void onresizeend([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
-    VARIANT ondataavailable();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
+}
 
-    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    void ondatasetcomplete(VARIANT v);
+[
+    hidden,
+    uuid(3050f33c-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLElementEvents
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
+    VARIANT_BOOL onhelp();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
-    VARIANT ondatasetcomplete();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
+    VARIANT_BOOL onclick();
 
-    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    void onfilterchange(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick();
 
-    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
-    VARIANT onfilterchange();
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress();
 
-    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
-    IDispatch *children();
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
+    void onkeydown();
 
-    [propget, id(DISPID_IHTMLELEMENT_ALL)]
-    IDispatch *all();
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
+    void onkeyup();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
-    BSTR scopeName();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
+    void onmouseout();
 
-    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
-    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
+    void onmouseover();
 
-    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
-    void releaseCapture();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
+    void onmousemove();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    void onlosecapture(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
+    void onmousedown();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
-    VARIANT onlosecapture();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
+    void onmouseup();
 
-    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
-    BSTR componentFromPoint(
-            [in] long x,
-            [in] long y);
+    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart();
 
-    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
-    void doScroll([in, optional] VARIANT component);
+    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
+    void onfilterchange();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    void onscroll(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
-    VARIANT onscroll();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    void ondrag(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
+    void onafterupdate();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
-    VARIANT ondrag();
+    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    void ondragend(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
+    VARIANT_BOOL onrowexit();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
-    VARIANT ondragend();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
+    void onrowenter();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    void ondragenter(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
+    void ondatasetchanged();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
-    VARIANT ondragenter();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
+    void ondataavailable();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    void ondragover(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
+    void ondatasetcomplete();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
-    VARIANT ondragover();
+    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
+    void onlosecapture();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    void ondragleave(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
+    void onpropertychange();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
-    VARIANT ondragleave();
+    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
+    void onscroll();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    void ondrop(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
+    void onfocus();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
-    VARIANT ondrop();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
+    void onblur();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    void onbeforecut(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
+    void onresize();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
-    VARIANT onbeforecut();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
+    VARIANT_BOOL ondrag();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    void oncut(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
+    void ondragend();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
-    VARIANT oncut();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    void onbeforecopy(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
+    VARIANT_BOOL ondragover();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
-    VARIANT onbeforecopy();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
+    void ondragleave();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    void oncopy(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
+    VARIANT_BOOL ondrop();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
-    VARIANT oncopy();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    void onbeforepaste(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
+    VARIANT_BOOL oncut();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
-    VARIANT onbeforepaste();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    void onpaste(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
+    VARIANT_BOOL oncopy();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
-    VARIANT onpaste();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste();
 
-    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
-    IHTMLCurrentStyle *currentStyle();
+    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
+    VARIANT_BOOL onpaste();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    void onpropertychange(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
-    VARIANT onpropertychange();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
+    void onrowsdelete();
 
-    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
-    IHTMLRectCollection *getClientRects();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
+    void onrowsinserted();
 
-    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
-    IHTMLRect *getBoundingClientRect();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
+    void oncellchange();
 
-    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
-    void setExpression(
-            [in] BSTR propname,
-            [in] BSTR expression,
-            [in, defaultvalue("")] BSTR language);
+    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
+    void onreadystatechange();
 
-    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
-    VARIANT getExpression([in] BSTR propname);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus();
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
-    VARIANT_BOOL removeExpression([in] BSTR propname);
+    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete();
 
-    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    void tabIndex(short v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
+    void onpage();
 
-    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
-    short tabIndex();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate();
 
-    [id(DISPID_IHTMLELEMENT2_FOCUS)]
-    void focus();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    void accessKey(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
+    void onmove();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
-    BSTR accessKey();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    void onblur(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
+    VARIANT_BOOL onmovestart();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
-    VARIANT onblur();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
+    void onmoveend();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    void onfocus(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
-    VARIANT onfocus();
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
+    void onresizeend();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    void onresize(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
+    void onmouseenter();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
-    VARIANT onresize();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
+    void onmouseleave();
 
-    [id(DISPID_IHTMLELEMENT2_BLUR)]
-    void blur();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel();
 
-    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
-    void addFilter([in] IUnknown *pUnk);
+    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
+    void onactivate();
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
-    void removeFilter([in] IUnknown *pUnk);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
+    void ondeactivate();
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
-    long clientHeight();
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
+    void onfocusin();
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
-    long clientWidth();
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
+    void onfocusout();
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
-    long clientTop();
+[
+    noncreatable,
+    uuid(3050f317-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLCommentElement
+{
+    [default]           dispinterface DispHTMLCommentElement;
+    [source, default]   dispinterface HTMLElementEvents;
+    [source]            dispinterface HTMLElementEvents2;
+                        interface IHTMLElement;
+                        interface IHTMLElement2;
+                        interface IHTMLElement3;
+                        interface IHTMLElement4;
+                        interface IHTMLUniqueName;
+                        interface IHTMLDOMNode;
+                        interface IHTMLDOMNode2;
+                        interface IHTMLCommentElement;
+                        interface IHTMLCommentElement2;
+}
 
-    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
-    long clientLeft();
+/*****************************************************************************
+ *    HTMLTableEvents dispinterface
+ */
+[
+    hidden,
+    uuid(3050f407-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLTableEvents
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
+    VARIANT_BOOL onhelp();
 
-    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
-    VARIANT_BOOL attachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
+    VARIANT_BOOL onclick();
 
-    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
-    void detachEvent(
-            [in] BSTR event,
-            [in] IDispatch *pDisp);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick();
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
-    VARIANT readyState();
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    void onreadystatechange(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
+    void onkeydown();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
-    VARIANT onreadystatechange();
+    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
+    void onkeyup();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    void onrowsdelete(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
+    void onmouseout();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
-    VARIANT onrowsdelete();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
+    void onmouseover();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-    void onrowsinserted(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
+    void onmousemove();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
-     VARIANT onrowsinserted();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
+    void onmousedown();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-     void oncellchange(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
+    void onmouseup();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
-    VARIANT oncellchange();
+    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart();
 
-    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    void dir(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
+    void onfilterchange();
 
-    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
-    BSTR dir();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart();
 
-    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
-    IDispatch *createControlRange();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
-    long scrollHeight();
+    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
+    void onafterupdate();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
-    long scrollWidth();
+    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate();
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    void scrollTop(long v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
+    VARIANT_BOOL onrowexit();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
-    long scrollTop();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
+    void onrowenter();
 
-    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    void scrollLeft(long v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
+    void ondatasetchanged();
 
-    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
-    long scrollLeft();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
+    void ondataavailable();
 
-    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
-    void clearAttributes();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
+    void ondatasetcomplete();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    void oncontextmenu(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
+    void onlosecapture();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
-    VARIANT oncontextmenu();
+    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
+    void onpropertychange();
 
-    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
-    IHTMLElement *insertAdjacentElement(
-            [in] BSTR where,
-            [in] IHTMLElement *insertedElement);
+    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
+    void onscroll();
 
-    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
-    IHTMLElement *applyElement(
-            [in] IHTMLElement *apply,
-            [in] BSTR where);
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
+    void onfocus();
 
-    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
-    BSTR getAdjacentText([in] BSTR where);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
+    void onblur();
 
-    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
-    BSTR replaceAdjacentText(
-            [in] BSTR where,
-            [in] BSTR newText);
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
+    void onresize();
 
-    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
-    VARIANT_BOOL canHaveChildren();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
+    VARIANT_BOOL ondrag();
 
-    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
-    long addBehavior(
-            [in] BSTR bstrUrl,
-            [in, optional] VARIANT *pvarFactory);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
+    void ondragend();
 
-    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
-    VARIANT_BOOL removeBehavior([in] long cookie);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter();
 
-    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
-    IHTMLStyle *runtimeStyle();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
+    VARIANT_BOOL ondragover();
 
-    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
-    IDispatch *behaviorUrns();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
+    void ondragleave();
 
-    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    void tagUrn(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
+    VARIANT_BOOL ondrop();
 
-    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
-    BSTR tagUrn();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut();
 
-    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    void onbeforeeditfocus(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
+    VARIANT_BOOL oncut();
 
-    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
-    VARIANT onbeforeeditfocus();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy();
 
-    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
-    long readyStateValue();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
+    VARIANT_BOOL oncopy();
 
-    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
-    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste();
 
-    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
-    void mergeAttributes(
-            [in] IHTMLElement *mergeThis,
-            [in, optional] VARIANT *pvarFlags);
+    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
+    VARIANT_BOOL onpaste();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
-    VARIANT_BOOL isMultiLine();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu();
 
-    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
-    VARIANT_BOOL canHaveHTML();
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
+    void onrowsdelete();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    void onlayoutcomplete(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
+    void onrowsinserted();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
-    VARIANT onlayoutcomplete();
+    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
+    void oncellchange();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    void onpage(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
+    void onreadystatechange();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
-    VARIANT onpage();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
+    void onbeforeeditfocus();
 
-    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    void inflateBlock(VARIANT_BOOL v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete();
 
-    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
-    VARIANT_BOOL inflateBlock();
+    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
+    void onpage();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    void onbeforedeactivate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
-    VARIANT onbeforedeactivate();
+    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate();
 
-    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
-    void setActive();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
+    void onmove();
 
-    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    void contentEditable(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect();
 
-    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
-    BSTR contentEditable();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
+    VARIANT_BOOL onmovestart();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
-    VARIANT_BOOL isContentEditable();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
+    void onmoveend();
 
-    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    void hideFocus(VARIANT_BOOL v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart();
 
-    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
-    VARIANT_BOOL hideFocus();
+    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
+    void onresizeend();
 
-    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    void disabled(VARIANT_BOOL v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
+    void onmouseenter();
 
-    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
-    VARIANT_BOOL disabled();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
+    void onmouseleave();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
-    VARIANT_BOOL isDisabled();
+    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    void onmove(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
+    void onactivate();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
-    VARIANT onmove();
+    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
+    void ondeactivate();
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    void oncontrolselect(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
+    void onfocusin();
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
-    VARIANT oncontrolselect();
+    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
+    void onfocusout();
+}
 
-    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
-    VARIANT_BOOL fireEvent(
-            [in] BSTR bstrEventName,
-            [in, optional] VARIANT *pvarEventObject);
+[
+    hidden,
+    uuid(3050f623-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface HTMLTableEvents2
+{
+properties:
+methods:
+    [id(DISPID_HTMLELEMENTEVENTS2_ONHELP)]
+    VARIANT_BOOL onhelp([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    void onresizestart(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCLICK)]
+    VARIANT_BOOL onclick([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
-    VARIANT onresizestart();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDBLCLICK)]
+    VARIANT_BOOL ondblclick([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    void onresizeend(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYPRESS)]
+    VARIANT_BOOL onkeypress([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
-    VARIANT onresizeend();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYDOWN)]
+    void onkeydown([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    void onmovestart(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONKEYUP)]
+    void onkeyup([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
-    VARIANT onmovestart();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOUT)]
+    void onmouseout([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    void onmoveend(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEOVER)]
+    void onmouseover([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
-    VARIANT onmoveend();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEMOVE)]
+    void onmousemove([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    void onmouseenter(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEDOWN)]
+    void onmousedown([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
-    VARIANT onmouseenter();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEUP)]
+    void onmouseup([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    void onmouseleave(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSELECTSTART)]
+    VARIANT_BOOL onselectstart([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
-    VARIANT onmouseleave();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFILTERCHANGE)]
+    void onfilterchange([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    void onactivate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGSTART)]
+    VARIANT_BOOL ondragstart([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
-    VARIANT onactivate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREUPDATE)]
+    VARIANT_BOOL onbeforeupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    void ondeactivate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONAFTERUPDATE)]
+    void onafterupdate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
-    VARIANT ondeactivate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONERRORUPDATE)]
+    VARIANT_BOOL onerrorupdate([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
-    VARIANT_BOOL dragDrop();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWEXIT)]
+    VARIANT_BOOL onrowexit([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
-    LONG glyphMode();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWENTER)]
+    void onrowenter([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    void onmousewheel(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCHANGED)]
+    void ondatasetchanged([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
-    VARIANT onmousewheel();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATAAVAILABLE)]
+    void ondataavailable([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
-    void normalize();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDATASETCOMPLETE)]
+    void ondatasetcomplete([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
-    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLOSECAPTURE)]
+    void onlosecapture([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
-    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPROPERTYCHANGE)]
+    void onpropertychange([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
-    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONSCROLL)]
+    void onscroll([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    void onbeforeactivate(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUS)]
+    void onfocus([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
-    VARIANT onbeforeactivate();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBLUR)]
+    void onblur([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    void onfocusin(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZE)]
+    void onresize([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
-    VARIANT onfocusin();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAG)]
+    VARIANT_BOOL ondrag([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    void onfocusout(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGEND)]
+    void ondragend([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
-    VARIANT onfocusout();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGENTER)]
+    VARIANT_BOOL ondragenter([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
-    long uniqueNumber();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGOVER)]
+    VARIANT_BOOL ondragover([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
-    BSTR uniqueID();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDRAGLEAVE)]
+    void ondragleave([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
-    long nodeType();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDROP)]
+    VARIANT_BOOL ondrop([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
-    IHTMLDOMNode *parentNode();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECUT)]
+    VARIANT_BOOL onbeforecut([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
-    VARIANT_BOOL hasChildNodes();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCUT)]
+    VARIANT_BOOL oncut([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
-    IDispatch *childNodes();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFORECOPY)]
+    VARIANT_BOOL onbeforecopy([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
-    IDispatch *attributes();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCOPY)]
+    VARIANT_BOOL oncopy([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
-    IHTMLDOMNode *insertBefore(
-            [in] IHTMLDOMNode *newChild,
-            [in, optional] VARIANT refChild);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREPASTE)]
+    VARIANT_BOOL onbeforepaste([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
-    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPASTE)]
+    VARIANT_BOOL onpaste([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
-    IHTMLDOMNode *replaceChild(
-            [in] IHTMLDOMNode *newChild,
-            [in] IHTMLDOMNode *oldChild);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTEXTMENU)]
+    VARIANT_BOOL oncontextmenu([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
-    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSDELETE)]
+    void onrowsdelete([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
-    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONROWSINSERTED)]
+    void onrowsinserted([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
-    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCELLCHANGE)]
+    void oncellchange([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
-    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONREADYSTATECHANGE)]
+    void onreadystatechange([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
-    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONLAYOUTCOMPLETE)]
+    void onlayoutcomplete([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
-    BSTR nodeName();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONPAGE)]
+    void onpage([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    void nodeValue(VARIANT v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEENTER)]
+    void onmouseenter([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
-    VARIANT nodeValue();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSELEAVE)]
+    void onmouseleave([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
-    IHTMLDOMNode *firstChild();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONACTIVATE)]
+    void onactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
-    IHTMLDOMNode *lastChild();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONDEACTIVATE)]
+    void ondeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
-    IHTMLDOMNode *previousSibling();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREDEACTIVATE)]
+    VARIANT_BOOL onbeforedeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
-    IHTMLDOMNode *nextSibling();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONBEFOREACTIVATE)]
+    VARIANT_BOOL onbeforeactivate([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
-    IDispatch *ownerDocument();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSIN)]
+    void onfocusin([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
-    void text(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONFOCUSOUT)]
+    void onfocusout([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLCOMMENTELEMENT_TEXT), displaybind, bindable]
-    BSTR text();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVE)]
+    void onmove([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
-    void atomic(long v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONCONTROLSELECT)]
+    VARIANT_BOOL oncontrolselect([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable]
-    long atomic();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVESTART)]
+    VARIANT_BOOL onmovestart([in] IHTMLEventObj* pEvtObj);
 
-    [propput, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
-    void data(BSTR v);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOVEEND)]
+    void onmoveend([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_DATA)]
-    BSTR data();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZESTART)]
+    VARIANT_BOOL onresizestart([in] IHTMLEventObj* pEvtObj);
 
-    [propget, id(DISPID_IHTMLCOMMENTELEMENT2_LENGTH)]
-    long length();
+    [id(DISPID_HTMLELEMENTEVENTS2_ONRESIZEEND)]
+    void onresizeend([in] IHTMLEventObj* pEvtObj);
 
-    [id(DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)]
-    BSTR substringData(
-            [in] long offset,
-            [in] long Count);
+    [id(DISPID_HTMLELEMENTEVENTS2_ONMOUSEWHEEL)]
+    VARIANT_BOOL onmousewheel([in] IHTMLEventObj* pEvtObj);
+}
 
-    [id(DISPID_IHTMLCOMMENTELEMENT2_APPENDDATA)]
-    void appendData([in] BSTR bstrstring);
+/*****************************************************************************
+ *    IHTMLTableCaption interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f2eb-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTableCaption : IDispatch
+{
+    [propput, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
+    HRESULT align([in] BSTR v);
 
-    [id(DISPID_IHTMLCOMMENTELEMENT2_INSERTDATA)]
-     void insertData(
-            [in] long offset,
-            [in] BSTR bstrstring);
+    [propget, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
+    HRESULT align([retval, out] BSTR *p);
 
-    [id(DISPID_IHTMLCOMMENTELEMENT2_DELETEDATA)]
-    void deleteData(
-            [in] long offset,
-            [in] long Count);
+    [propput, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
+    HRESULT vAlign([in] BSTR v);
 
-    [id(DISPID_IHTMLCOMMENTELEMENT2_REPLACEDATA)]
-    void replaceData(
-            [in] long offset,
-            [in] long Count,
-            [in] BSTR bstrstring);
+    [propget, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
+    HRESULT vAlign([retval, out] BSTR *p);
 }
 
+interface IHTMLTableSection;
+
 /*****************************************************************************
- *    HTMLTableEvents dispinterface
+ *    IHTMLTable interface
  */
 [
-    hidden,
-    uuid(3050f407-98b5-11cf-bb82-00aa00bdce0b)
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f21e-98b5-11cf-bb82-00aa00bdce0b)
 ]
-dispinterface HTMLTableEvents
+interface IHTMLTable : IDispatch
 {
-properties:
-methods:
-    [id(DISPID_HTMLELEMENTEVENTS_ONHELP)]
-    VARIANT_BOOL onhelp();
+    [propput, id(DISPID_IHTMLTABLE_COLS)]
+    HRESULT cols([in] LONG v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONCLICK)]
-    VARIANT_BOOL onclick();
+    [propget, id(DISPID_IHTMLTABLE_COLS)]
+    HRESULT cols([retval, out] LONG *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDBLCLICK)]
-    VARIANT_BOOL ondblclick();
+    [propput, id(DISPID_IHTMLTABLE_BORDER)]
+    HRESULT border([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONKEYPRESS)]
-    VARIANT_BOOL onkeypress();
+    [propget, id(DISPID_IHTMLTABLE_BORDER)]
+    HRESULT border([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONKEYDOWN)]
-    void onkeydown();
+    [propput, id(DISPID_IHTMLTABLE_FRAME)]
+    HRESULT frame([in] BSTR v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONKEYUP)]
-    void onkeyup();
+    [propget, id(DISPID_IHTMLTABLE_FRAME)]
+    HRESULT frame([retval, out] BSTR *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOUT)]
-    void onmouseout();
+    [propput, id(DISPID_IHTMLTABLE_RULES)]
+    HRESULT rules([in] BSTR v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEOVER)]
-    void onmouseover();
+    [propget, id(DISPID_IHTMLTABLE_RULES)]
+    HRESULT rules([retval, out] BSTR *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEMOVE)]
-    void onmousemove();
+    [propput, id(DISPID_IHTMLTABLE_CELLSPACING)]
+    HRESULT cellSpacing([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEDOWN)]
-    void onmousedown();
+    [propget, id(DISPID_IHTMLTABLE_CELLSPACING)]
+    HRESULT cellSpacing([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEUP)]
-    void onmouseup();
+    [propput, id(DISPID_IHTMLTABLE_CELLPADDING)]
+    HRESULT cellPadding([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONSELECTSTART)]
-    VARIANT_BOOL onselectstart();
+    [propget, id(DISPID_IHTMLTABLE_CELLPADDING)]
+    HRESULT cellPadding([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONFILTERCHANGE)]
-    void onfilterchange();
+    [propput, id(DISPID_IHTMLTABLE_BACKGROUND)]
+    HRESULT background([in] BSTR v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGSTART)]
-    VARIANT_BOOL ondragstart();
+    [propget, id(DISPID_IHTMLTABLE_BACKGROUND)]
+    HRESULT background([retval, out] BSTR *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREUPDATE)]
-    VARIANT_BOOL onbeforeupdate();
+    [propput, id(DISPID_IHTMLTABLE_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONAFTERUPDATE)]
-    void onafterupdate();
+    [propget, id(DISPID_IHTMLTABLE_BGCOLOR)]
+    HRESULT bgColor([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONERRORUPDATE)]
-    VARIANT_BOOL onerrorupdate();
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
+    HRESULT borderColor([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONROWEXIT)]
-    VARIANT_BOOL onrowexit();
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
+    HRESULT borderColor([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONROWENTER)]
-    void onrowenter();
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCHANGED)]
-    void ondatasetchanged();
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDATAAVAILABLE)]
-    void ondataavailable();
+    [propput, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
+    HRESULT borderColorDark([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDATASETCOMPLETE)]
-    void ondatasetcomplete();
+    [propget, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
+    HRESULT borderColorDark([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONLOSECAPTURE)]
-    void onlosecapture();
+    [propput, id(DISPID_IHTMLTABLE_ALIGN)]
+    HRESULT align([in] BSTR v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONPROPERTYCHANGE)]
-    void onpropertychange();
+    [propget, id(DISPID_IHTMLTABLE_ALIGN)]
+    HRESULT align([retval, out] BSTR * p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONSCROLL)]
-    void onscroll();
+    [id(DISPID_IHTMLTABLE_REFRESH)]
+    HRESULT refresh();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUS)]
-    void onfocus();
+    [propget, id(DISPID_IHTMLTABLE_ROWS)]
+    HRESULT rows([retval, out] IHTMLElementCollection **p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBLUR)]
-    void onblur();
+    [propput, id(DISPID_IHTMLTABLE_WIDTH)]
+    HRESULT width([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZE)]
-    void onresize();
+    [propget, id(DISPID_IHTMLTABLE_WIDTH)]
+    HRESULT width([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDRAG)]
-    VARIANT_BOOL ondrag();
+    [propput, id(DISPID_IHTMLTABLE_HEIGHT)]
+    HRESULT height([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGEND)]
-    void ondragend();
+    [propget, id(DISPID_IHTMLTABLE_HEIGHT)]
+    HRESULT height([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGENTER)]
-    VARIANT_BOOL ondragenter();
+    [propput, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
+    HRESULT dataPageSize([in] LONG v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGOVER)]
-    VARIANT_BOOL ondragover();
+    [propget, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
+    HRESULT dataPageSize([retval, out] LONG *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDRAGLEAVE)]
-    void ondragleave();
+    [id(DISPID_IHTMLTABLE_NEXTPAGE)]
+    HRESULT nextPage();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDROP)]
-    VARIANT_BOOL ondrop();
+    [id(DISPID_IHTMLTABLE_PREVIOUSPAGE)]
+    HRESULT previousPage();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECUT)]
-    VARIANT_BOOL onbeforecut();
+    [propget, id(DISPID_IHTMLTABLE_THEAD)]
+    HRESULT tHead([retval, out] IHTMLTableSection **p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONCUT)]
-    VARIANT_BOOL oncut();
+    [propget, id(DISPID_IHTMLTABLE_TFOOT)]
+    HRESULT tFoot([retval, out] IHTMLTableSection **p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFORECOPY)]
-    VARIANT_BOOL onbeforecopy();
+    [propget, id(DISPID_IHTMLTABLE_TBODIES)]
+    HRESULT tBodies([retval, out] IHTMLElementCollection **p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONCOPY)]
-    VARIANT_BOOL oncopy();
+    [propget, id(DISPID_IHTMLTABLE_CAPTION)]
+    HRESULT caption([retval, out] IHTMLTableCaption **p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREPASTE)]
-    VARIANT_BOOL onbeforepaste();
+    [id(DISPID_IHTMLTABLE_CREATETHEAD)]
+    HRESULT createTHead([retval, out] IDispatch **head);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONPASTE)]
-    VARIANT_BOOL onpaste();
+    [id(DISPID_IHTMLTABLE_DELETETHEAD)]
+    HRESULT deleteTHead();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONCONTEXTMENU)]
-    VARIANT_BOOL oncontextmenu();
+    [id(DISPID_IHTMLTABLE_CREATETFOOT)]
+    HRESULT createTFoot([retval, out] IDispatch **foot);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONROWSDELETE)]
-    void onrowsdelete();
+    [id(DISPID_IHTMLTABLE_DELETETFOOT)]
+    HRESULT deleteTFoot();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONROWSINSERTED)]
-    void onrowsinserted();
+    [id(DISPID_IHTMLTABLE_CREATECAPTION)]
+    HRESULT createCaption([retval, out] IHTMLTableCaption **caption);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONCELLCHANGE)]
-    void oncellchange();
+    [id(DISPID_IHTMLTABLE_DELETECAPTION)]
+    HRESULT deleteCaption();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONREADYSTATECHANGE)]
-    void onreadystatechange();
+    [id(DISPID_IHTMLTABLE_INSERTROW)]
+    HRESULT insertRow(
+            [defaultvalue(-1), in] LONG index,
+            [retval, out] IDispatch **row);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREEDITFOCUS)]
-    void onbeforeeditfocus();
+    [id(DISPID_IHTMLTABLE_DELETEROW)]
+    HRESULT deleteRow([defaultvalue(-1), in] LONG index);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONLAYOUTCOMPLETE)]
-    void onlayoutcomplete();
+    [propget, id(DISPID_IHTMLTABLE_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONPAGE)]
-    void onpage();
+    [propput, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREDEACTIVATE)]
-    VARIANT_BOOL onbeforedeactivate();
+    [propget, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
+    HRESULT onreadystatechange([retval, out] VARIANT *p);
+}
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONBEFOREACTIVATE)]
-    VARIANT_BOOL onbeforeactivate();
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f4ad-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTable2 : IDispatch
+{
+    [id(DISPID_IHTMLTABLE2_FIRSTPAGE)]
+    HRESULT firstPage();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOVE)]
-    void onmove();
+    [id(DISPID_IHTMLTABLE2_LASTPAGE)]
+    HRESULT lastPage();
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONCONTROLSELECT)]
-    VARIANT_BOOL oncontrolselect();
+    [propget, id(DISPID_IHTMLTABLE2_CELLS)]
+    HRESULT cells([retval, out] IHTMLElementCollection* * p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOVESTART)]
-    VARIANT_BOOL onmovestart();
+    [id(DISPID_IHTMLTABLE2_MOVEROW)]
+    HRESULT moveRow([defaultvalue(-1), in] LONG indexFrom,
+        [defaultvalue(-1), in] LONG indexTo,
+        [retval, out] IDispatch** row);
+}
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOVEEND)]
-    void onmoveend();
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f829-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTable3 : IDispatch
+{
+    [propput, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
+    HRESULT summary([in] BSTR v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZESTART)]
-    VARIANT_BOOL onresizestart();
+    [propget, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
+    HRESULT summary([retval, out] BSTR * p);
+}
+
+[
+    noncreatable,
+    uuid(3050f26b-98b5-11cf-bb82-00aa00bdce0b)
+]
+coclass HTMLTable
+{
+    [default]           dispinterface DispHTMLTable;
+    [source, default]   dispinterface HTMLTableEvents;
+    [source]            dispinterface HTMLTableEvents2;
+                        interface IHTMLElement;
+                        interface IHTMLElement2;
+                        interface IHTMLElement3;
+                        interface IHTMLElement4;
+                        interface IHTMLUniqueName;
+                        interface IHTMLDOMNode;
+                        interface IHTMLDOMNode2;
+                        interface IHTMLDatabinding;
+                        interface IHTMLControlElement;
+                        interface IHTMLTable;
+                        interface IHTMLTable2;
+                        interface IHTMLTable3;
+}
+
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f23b-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLTableSection : IDispatch
+{
+    [propput, id(DISPID_IHTMLTABLESECTION_ALIGN)]
+    HRESULT align([in] BSTR v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONRESIZEEND)]
-    void onresizeend();
+    [propget, id(DISPID_IHTMLTABLESECTION_ALIGN)]
+    HRESULT align([retval, out] BSTR *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEENTER)]
-    void onmouseenter();
+    [propput, id(DISPID_IHTMLTABLESECTION_VALIGN)]
+    HRESULT vAlign([in] BSTR v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSELEAVE)]
-    void onmouseleave();
+    [propget, id(DISPID_IHTMLTABLESECTION_VALIGN)]
+    HRESULT vAlign([retval, out] BSTR *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONMOUSEWHEEL)]
-    VARIANT_BOOL onmousewheel();
+    [propput, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONACTIVATE)]
-    void onactivate();
+    [propget, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
+    HRESULT bgColor([retval, out] VARIANT *p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONDEACTIVATE)]
-    void ondeactivate();
+    [propget, id(DISPID_IHTMLTABLESECTION_ROWS)]
+    HRESULT rows([retval, out] IHTMLElementCollection **p);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSIN)]
-    void onfocusin();
+    [id(DISPID_IHTMLTABLESECTION_INSERTROW)]
+    HRESULT insertRow(
+            [defaultvalue(-1), in] LONG index,
+            [retval, out] IDispatch **row);
 
-    [id(DISPID_HTMLELEMENTEVENTS_ONFOCUSOUT)]
-    void onfocusout();
+    [id(DISPID_IHTMLTABLESECTION_DELETEROW)]
+    HRESULT deleteRow([defaultvalue(-1), in] LONG index);
 }
 
 /*****************************************************************************
- *    IHTMLTableCaption interface
+ *    IHTMLTableRow interface
  */
 [
     odl,
     oleautomation,
     dual,
-    uuid(3050f2eb-98b5-11cf-bb82-00aa00bdce0b)
+    uuid(3050f23c-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLTableCaption : IDispatch
+interface IHTMLTableRow : IDispatch
 {
-    [propput, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
+    [propput, id(DISPID_IHTMLTABLEROW_ALIGN)]
     HRESULT align([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLTABLECAPTION_ALIGN)]
-    HRESULT align([retval, out] BSTR *p);
+    [propget, id(DISPID_IHTMLTABLEROW_ALIGN)]
+    HRESULT align([out, retval] BSTR *p);
 
-    [propput, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
+    [propput, id(DISPID_IHTMLTABLEROW_VALIGN)]
     HRESULT vAlign([in] BSTR v);
 
-    [propget, id(DISPID_IHTMLTABLECAPTION_VALIGN)]
-    HRESULT vAlign([retval, out] BSTR *p);
-}
+    [propget, id(DISPID_IHTMLTABLEROW_VALIGN)]
+    HRESULT vAlign([out, retval] BSTR *p);
 
-interface IHTMLTableSection;
+    [propput, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    HRESULT bgColor([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    HRESULT borderColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    HRESULT borderColor([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    HRESULT borderColorLight([out, retval] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    HRESULT borderColorDark([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    HRESULT borderColorDark([out, retval] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLTABLEROW_ROWINDEX)]
+    HRESULT rowIndex([out, retval] LONG *p);
+
+    [propget, id(DISPID_IHTMLTABLEROW_SECTIONROWINDEX)]
+    HRESULT sectionRowIndex([out, retval] LONG *p);
+
+    [propget, id(DISPID_IHTMLTABLEROW_CELLS)]
+    HRESULT cells([out, retval] IHTMLElementCollection **p);
+
+    [id(DISPID_IHTMLTABLEROW_INSERTCELL)]
+    HRESULT insertCell(
+            [in, defaultvalue(-1)] LONG index,
+            [out, retval] IDispatch **row);
+
+    [id(DISPID_IHTMLTABLEROW_DELETECELL)]
+    HRESULT deleteCell([in, defaultvalue(-1)] LONG index);
+}
 
 /*****************************************************************************
- *    IHTMLTable interface
+ *    DispHTMLTable interface
  */
 [
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f21e-98b5-11cf-bb82-00aa00bdce0b)
+    hidden,
+    uuid(3050f532-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLTable : IDispatch
+dispinterface DispHTMLTable
 {
+properties:
+methods:
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;
+
     [propput, id(DISPID_IHTMLTABLE_COLS)]
-    HRESULT cols([in] long v);
+    void cols(LONG v);
 
     [propget, id(DISPID_IHTMLTABLE_COLS)]
-    HRESULT cols([retval, out] long *p);
+    LONG cols();
 
     [propput, id(DISPID_IHTMLTABLE_BORDER)]
-    HRESULT border([in] VARIANT v);
+    void border(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_BORDER)]
-    HRESULT border([retval, out] VARIANT *p);
+    VARIANT border();
 
     [propput, id(DISPID_IHTMLTABLE_FRAME)]
-    HRESULT frame([in] BSTR v);
+    void frame(BSTR v);
 
     [propget, id(DISPID_IHTMLTABLE_FRAME)]
-    HRESULT frame([retval, out] BSTR *p);
+    BSTR frame();
 
     [propput, id(DISPID_IHTMLTABLE_RULES)]
-    HRESULT rules([in] BSTR v);
+    void rules(BSTR v);
 
     [propget, id(DISPID_IHTMLTABLE_RULES)]
-    HRESULT rules([retval, out] BSTR *p);
+    BSTR rules();
 
     [propput, id(DISPID_IHTMLTABLE_CELLSPACING)]
-    HRESULT cellSpacing([in] VARIANT v);
+    void cellSpacing(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_CELLSPACING)]
-    HRESULT cellSpacing([retval, out] VARIANT *p);
+    VARIANT cellSpacing();
 
     [propput, id(DISPID_IHTMLTABLE_CELLPADDING)]
-    HRESULT cellPadding([in] VARIANT v);
+    void cellPadding(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_CELLPADDING)]
-    HRESULT cellPadding([retval, out] VARIANT *p);
+    VARIANT cellPadding();
 
     [propput, id(DISPID_IHTMLTABLE_BACKGROUND)]
-    HRESULT background([in] BSTR v);
+    void background(BSTR v);
 
     [propget, id(DISPID_IHTMLTABLE_BACKGROUND)]
-    HRESULT background([retval, out] BSTR *p);
+    BSTR background();
 
     [propput, id(DISPID_IHTMLTABLE_BGCOLOR)]
-    HRESULT bgColor([in] VARIANT v);
+    void bgColor(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_BGCOLOR)]
-    HRESULT bgColor([retval, out] VARIANT *p);
+    VARIANT bgColor();
 
     [propput, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
-    HRESULT borderColor([in] VARIANT v);
+    void borderColor(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_BORDERCOLOR)]
-    HRESULT borderColor([retval, out] VARIANT *p);
+    VARIANT borderColor();
 
     [propput, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
-    HRESULT borderColorLight([in] VARIANT v);
+    void borderColorLight(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_BORDERCOLORLIGHT)]
-    HRESULT borderColorLight([retval, out] VARIANT *p);
+    VARIANT borderColorLight();
 
     [propput, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
-    HRESULT borderColorDark([in] VARIANT v);
+    void borderColorDark(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_BORDERCOLORDARK)]
-    HRESULT borderColorDark([retval, out] VARIANT *p);
+    VARIANT borderColorDark();
 
     [propput, id(DISPID_IHTMLTABLE_ALIGN)]
-    HRESULT align([in] BSTR v);
+    void align(BSTR v);
 
     [propget, id(DISPID_IHTMLTABLE_ALIGN)]
-    HRESULT align([retval, out] BSTR * p);
+    BSTR align();
 
     [id(DISPID_IHTMLTABLE_REFRESH)]
-    HRESULT refresh();
+    void refresh();
 
     [propget, id(DISPID_IHTMLTABLE_ROWS)]
-    HRESULT rows([retval, out] IHTMLElementCollection **p);
+    IHTMLElementCollection *rows();
 
     [propput, id(DISPID_IHTMLTABLE_WIDTH)]
-    HRESULT width([in] VARIANT v);
+    void width(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_WIDTH)]
-    HRESULT width([retval, out] VARIANT *p);
+    VARIANT width();
 
     [propput, id(DISPID_IHTMLTABLE_HEIGHT)]
-    HRESULT height([in] VARIANT v);
+    void height(VARIANT v);
 
     [propget, id(DISPID_IHTMLTABLE_HEIGHT)]
-    HRESULT height([retval, out] VARIANT *p);
+    VARIANT height();
 
     [propput, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
-    HRESULT dataPageSize([in] long v);
+    void dataPageSize(LONG v);
 
     [propget, id(DISPID_IHTMLTABLE_DATAPAGESIZE)]
-    HRESULT dataPageSize([retval, out] long *p);
+    LONG dataPageSize();
 
     [id(DISPID_IHTMLTABLE_NEXTPAGE)]
-    HRESULT nextPage();
+    void nextPage();
 
     [id(DISPID_IHTMLTABLE_PREVIOUSPAGE)]
-    HRESULT previousPage();
+    void previousPage();
 
     [propget, id(DISPID_IHTMLTABLE_THEAD)]
-    HRESULT tHead([retval, out] IHTMLTableSection **p);
+    IHTMLTableSection *tHead();
 
     [propget, id(DISPID_IHTMLTABLE_TFOOT)]
-    HRESULT tFoot([retval, out] IHTMLTableSection **p);
+    IHTMLTableSection *tFoot();
 
     [propget, id(DISPID_IHTMLTABLE_TBODIES)]
-    HRESULT tBodies([retval, out] IHTMLElementCollection **p);
+    IHTMLElementCollection *tBodies();
 
     [propget, id(DISPID_IHTMLTABLE_CAPTION)]
-    HRESULT caption([retval, out] IHTMLTableCaption **p);
+    IHTMLTableCaption *caption();
 
     [id(DISPID_IHTMLTABLE_CREATETHEAD)]
-    HRESULT createTHead([retval, out] IDispatch **head);
+    IDispatch *createTHead();
 
     [id(DISPID_IHTMLTABLE_DELETETHEAD)]
-    HRESULT deleteTHead();
+    void deleteTHead();
 
     [id(DISPID_IHTMLTABLE_CREATETFOOT)]
-    HRESULT createTFoot([retval, out] IDispatch **foot);
+    IDispatch *createTFoot();
 
     [id(DISPID_IHTMLTABLE_DELETETFOOT)]
-    HRESULT deleteTFoot();
+    void deleteTFoot();
 
     [id(DISPID_IHTMLTABLE_CREATECAPTION)]
-    HRESULT createCaption([retval, out] IHTMLTableCaption **caption);
+    IHTMLTableCaption *createCaption();
 
     [id(DISPID_IHTMLTABLE_DELETECAPTION)]
-    HRESULT deleteCaption();
+    void deleteCaption();
 
     [id(DISPID_IHTMLTABLE_INSERTROW)]
-    HRESULT insertRow(
-            [defaultvalue(-1), in] long index,
-            [retval, out] IDispatch **row);
+    IDispatch *insertRow([in, defaultvalue(-1)] LONG index);
 
     [id(DISPID_IHTMLTABLE_DELETEROW)]
-    HRESULT deleteRow([defaultvalue(-1), in] long index);
+    void deleteRow([in, defaultvalue(-1)] LONG index);
 
-    [propget, id(DISPID_IHTMLTABLE_READYSTATE)]
-    HRESULT readyState([retval, out] BSTR *p);
+    [id(DISPID_IHTMLTABLE2_FIRSTPAGE)]
+    void firstPage();
 
-    [propput, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
-    HRESULT onreadystatechange([in] VARIANT v);
+    [id(DISPID_IHTMLTABLE2_LASTPAGE)]
+    void lastPage();
 
-    [propget, id(DISPID_IHTMLTABLE_ONREADYSTATECHANGE), displaybind, bindable]
-    HRESULT onreadystatechange([retval, out] VARIANT *p);
+    [propget, id(DISPID_IHTMLTABLE2_CELLS)]
+    IHTMLElementCollection *cells();
+
+    [id(DISPID_IHTMLTABLE2_MOVEROW)]
+    IDispatch *moveRow(
+            [in, defaultvalue(-1)] LONG indexFrom,
+            [in, defaultvalue(-1)] LONG indexTo);
+
+    [propput, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
+    void summary(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable]
+    BSTR summary();
 }
 
+/*****************************************************************************
+ *    DispHTMLTableRow dispinterface
+ */
 [
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f23b-98b5-11cf-bb82-00aa00bdce0b)
+    hidden,
+    uuid(3050f535-98b5-11cf-bb82-00aa00bdce0b)
 ]
-interface IHTMLTableSection : IDispatch
+dispinterface DispHTMLTableRow
 {
-    [propput, id(DISPID_IHTMLTABLESECTION_ALIGN)]
-    HRESULT align([in] BSTR v);
+properties:
+methods:
+    WINE_HTMLELEMENT_DISPINTERFACE_DECL;
 
-    [propget, id(DISPID_IHTMLTABLESECTION_ALIGN)]
-    HRESULT align([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLTABLEROW_ALIGN)]
+    void align(BSTR v);
 
-    [propput, id(DISPID_IHTMLTABLESECTION_VALIGN)]
-    HRESULT vAlign([in] BSTR v);
+    [propget, id(DISPID_IHTMLTABLEROW_ALIGN)]
+    BSTR align();
 
-    [propget, id(DISPID_IHTMLTABLESECTION_VALIGN)]
-    HRESULT vAlign([retval, out] BSTR *p);
+    [propput, id(DISPID_IHTMLTABLEROW_VALIGN)]
+    void vAlign(BSTR v);
 
-    [propput, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
-    HRESULT bgColor([in] VARIANT v);
+    [propget, id(DISPID_IHTMLTABLEROW_VALIGN)]
+    BSTR vAlign();
 
-    [propget, id(DISPID_IHTMLTABLESECTION_BGCOLOR)]
-    HRESULT bgColor([retval, out] VARIANT *p);
+    [propput, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    void bgColor(VARIANT v);
 
-    [propget, id(DISPID_IHTMLTABLESECTION_ROWS)]
-    HRESULT rows([retval, out] IHTMLElementCollection **p);
+    [propget, id(DISPID_IHTMLTABLEROW_BGCOLOR)]
+    VARIANT bgColor();
 
-    [id(DISPID_IHTMLTABLESECTION_INSERTROW)]
-    HRESULT insertRow(
-            [defaultvalue(-1), in] long index,
-            [retval, out] IDispatch **row);
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    void borderColor(VARIANT v);
 
-    [id(DISPID_IHTMLTABLESECTION_DELETEROW)]
-    HRESULT deleteRow([defaultvalue(-1), in] long index);
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLOR)]
+    VARIANT borderColor();
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    void borderColorLight(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)]
+    VARIANT borderColorLight();
+
+    [propput, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    void borderColorDark(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW_BORDERCOLORDARK)]
+    VARIANT borderColorDark();
+
+    [propget, id(DISPID_IHTMLTABLEROW_ROWINDEX)]
+    LONG rowIndex();
+
+    [propget, id(DISPID_IHTMLTABLEROW_SECTIONROWINDEX)]
+    LONG sectionRowIndex();
+
+    [propget, id(DISPID_IHTMLTABLEROW_CELLS)]
+    IHTMLElementCollection *cells();
+
+    [id(DISPID_IHTMLTABLEROW_INSERTCELL)]
+    IDispatch *insertCell([in, defaultvalue(-1)] LONG index);
+
+    [id(DISPID_IHTMLTABLEROW_DELETECELL)]
+    void deleteCell([in, defaultvalue(-1)] LONG index);
+
+    [propput, id(DISPID_IHTMLTABLEROW2_HEIGHT)]
+    void height(VARIANT v);
+
+    [propget, id(DISPID_IHTMLTABLEROW2_HEIGHT)]
+    VARIANT height();
+
+    [propput, id(DISPID_IHTMLTABLEROW3_CH), displaybind, bindable]
+    void ch(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW3_CH), displaybind, bindable]
+    BSTR ch();
+
+    [propput, id(DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable]
+    void chOff(BSTR v);
+
+    [propget, id(DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable]
+    BSTR chOff();
 }
 
 /*****************************************************************************
@@ -14662,61 +14659,129 @@ interface IHTMLScriptElement : IDispatch
     HRESULT src([retval, out] BSTR *p);
 
     [propput, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
-    HRESULT htmlFor([in] BSTR v);
+    HRESULT htmlFor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
+    HRESULT htmlFor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
+    HRESULT event([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
+    HRESULT event([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
+    HRESULT text([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
+    HRESULT defer([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
+    HRESULT defer([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_READYSTATE)]
+    HRESULT readyState([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
+    HRESULT onerror([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
+    HRESULT type([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
+    HRESULT type([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    IHTMLScriptElement2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f828-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLScriptElement2 : IDispatch
+{
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
+    HRESULT charset([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
+    HRESULT charset([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    DispHTMLScriptElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f530-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLScriptElement
+{
+properties:
+methods:
+    WINE_HTMLELEMENT_DISPINTERFACE_DECL;
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
+    void src(BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT_SRC), displaybind, bindable]
+    BSTR src();
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
+    void htmlFor(BSTR v);
 
     [propget, id(DISPID_IHTMLSCRIPTELEMENT_HTMLFOR), displaybind, bindable]
-    HRESULT htmlFor([retval, out] BSTR *p);
+    BSTR htmlFor();
 
     [propput, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
-    HRESULT event([in] BSTR v);
+    void event(BSTR v);
 
     [propget, id(DISPID_IHTMLSCRIPTELEMENT_EVENT), displaybind, bindable]
-    HRESULT event([retval, out] BSTR *p);
+    BSTR event();
 
     [propput, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
-    HRESULT text([in] BSTR v);
+    void text(BSTR v);
 
     [propget, id(DISPID_IHTMLSCRIPTELEMENT_TEXT), displaybind, bindable]
-    HRESULT text([retval, out] BSTR *p);
+    BSTR text();
 
     [propput, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
-    HRESULT defer([in] VARIANT_BOOL v);
+    void defer(VARIANT_BOOL v);
 
     [propget, id(DISPID_IHTMLSCRIPTELEMENT_DEFER), displaybind, bindable]
-    HRESULT defer([retval, out] VARIANT_BOOL *p);
-
-    [propget, id(DISPID_IHTMLSCRIPTELEMENT_READYSTATE)]
-    HRESULT readyState([retval, out] BSTR *p);
+    VARIANT_BOOL defer();
 
     [propput, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
-    HRESULT onerror([in] VARIANT v);
+    void onerror(VARIANT v);
 
     [propget, id(DISPID_IHTMLSCRIPTELEMENT_ONERROR), displaybind, bindable]
-    HRESULT onerror([retval, out] VARIANT *p);
+    VARIANT onerror();
 
     [propput, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
-    HRESULT type([in] BSTR v);
+    void type(BSTR v);
 
     [propget, id(DISPID_IHTMLSCRIPTELEMENT_TYPE), displaybind, bindable]
-    HRESULT type([retval, out] BSTR *p);
-}
+    BSTR type();
 
-/*****************************************************************************
- *    IHTMLScriptElement2 interface
- */
-[
-    odl,
-    oleautomation,
-    dual,
-    uuid(3050f828-98b5-11cf-bb82-00aa00bdce0b)
-]
-interface IHTMLScriptElement2 : IDispatch
-{
     [propput, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
-    HRESULT charset([in] BSTR v);
+    void charset(BSTR v);
 
     [propget, id(DISPID_IHTMLSCRIPTELEMENT2_CHARSET), displaybind, bindable]
-    HRESULT charset([retval, out] BSTR *p);
+    BSTR charset();
+
+    [propput, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
+    void ie8_src(BSTR v);
+
+    [propget, id(DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)]
+    BSTR ie8_src();
 }
 
 /*****************************************************************************
@@ -14785,6 +14850,61 @@ interface IHTMLFrameBase : IDispatch
     HRESULT scrolling([out, retval] BSTR *p);
 }
 
+#define WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL          \
+    [propput, id(DISPID_IHTMLFRAMEBASE_SRC)]            \
+    void src(BSTR v);                                   \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_SRC)]            \
+    BSTR src();                                         \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_NAME)]           \
+    void name(BSTR v);                                  \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_NAME)]           \
+    BSTR name();                                        \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_BORDER)]         \
+    void border(VARIANT v);                             \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_BORDER)]         \
+    VARIANT border();                                   \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]    \
+    void frameBorder(BSTR v);                           \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMEBORDER)]    \
+    BSTR frameBorder();                                 \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]   \
+    void frameSpacing(VARIANT v);                       \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_FRAMESPACING)]   \
+    VARIANT frameSpacing();                             \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]    \
+    void marginWidth(VARIANT v);                        \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINWIDTH)]    \
+    VARIANT marginWidth();                              \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]   \
+    void marginHeight(VARIANT v);                       \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)]   \
+    VARIANT marginHeight();                             \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]       \
+    void noResize(VARIANT_BOOL v);                      \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_NORESIZE)]       \
+    VARIANT_BOOL noResize();                            \
+                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]      \
+    void scrolling(BSTR v);                             \
+                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE_SCROLLING)]      \
+    BSTR scrolling()
+
 /*****************************************************************************
  *    IHTMLFrameBase2 interface
  */
@@ -14821,4 +14941,493 @@ interface IHTMLFrameBase2 : IDispatch
     HRESULT allowTransparency([retval, out] VARIANT_BOOL *p);
 }
 
+#define WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL                         \
+    [propget, id(DISPID_IHTMLFRAMEBASE2_CONTENTWINDOW)]                 \
+    IHTMLWindow2 *contentWindow();                                      \
+                                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] \
+    void onload(VARIANT v);                                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE2_ONLOAD), displaybind, bindable] \
+    VARIANT onload();                                                   \
+                                                                        \
+    [propput, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]             \
+    void allowTransparency(VARIANT_BOOL v);                             \
+                                                                        \
+    [propget, id(DISPID_IHTMLFRAMEBASE2_ALLOWTRANSPARENCY)]             \
+    VARIANT_BOOL allowTransparency()
+
+#define WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL                           \
+    [propput, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
+    void longDesc(BSTR v);                                                \
+                                                                          \
+    [propget, id(DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] \
+    BSTR longDesc()
+
+
+#define WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL \
+    WINE_HTMLDATAELEMENT_DISPINTERFACE_DECL;  \
+    WINE_IHTMLFRAMEBASE_DISPINTERFACE_DECL;   \
+    WINE_IHTMLFRAMEBASE2_DISPINTERFACE_DECL;  \
+    WINE_IHTMLFRAMEBASE3_DISPINTERFACE_DECL
+
+/*****************************************************************************
+ *    IHTMLFrameElement3 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3051042d-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLFrameElement3 : IDispatch
+{
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
+    HRESULT contentDocument([out, retval] IDispatch **p);
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+    HRESULT src([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+    HRESULT src([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+    HRESULT longDesc([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+    HRESULT longDesc([out, retval] BSTR *p);
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+    HRESULT frameBorder([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+    HRESULT frameBorder([out, retval] BSTR * p);
+}
+
+/*****************************************************************************
+ *    DispHTMLFrameElement dispinterface
+ */
+[
+    hidden,
+    uuid(3050f513-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLFrameElement
+{
+properties:
+methods:
+    WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
+    void borderColor(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)]
+    VARIANT borderColor();
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
+    void height(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT2_HEIGHT)]
+    VARIANT height();
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
+    void width(VARIANT v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT2_WIDTH)]
+    VARIANT width();
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)]
+    IDispatch *contentDocument();
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+    void ie8_src(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)]
+    BSTR ie8_src();
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+    void ie8_longDesc(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)]
+    BSTR ie8_longDesc();
+
+    [propput, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+    void ie8_frameBorder(BSTR v);
+
+    [propget, id(DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)]
+    BSTR ie8_frameBorder();
+}
+
+/*****************************************************************************
+ *    IHTMLIFrameElement interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f315-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLIFrameElement : IDispatch
+{
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+    HRESULT vspace([in] LONG v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+    HRESULT vspace([retval, out] LONG *p);
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+    HRESULT hspace([in] LONG v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+    HRESULT hspace([retval, out] LONG *p);
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+    HRESULT align([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+    HRESULT align([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    DispHTMLIFrame dispinterface
+ */
+[
+    hidden,
+    uuid(3050f51b-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLIFrame
+{
+properties:
+methods:
+    WINE_HTMLFRAMEBASE_DISPINTERFACE_DECL;
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+    void vspace(LONG v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_VSPACE)]
+    LONG vspace();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+    void hspace(LONG v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_HSPACE)]
+    LONG hspace();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+    void align(BSTR v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT_ALIGN), displaybind, bindable]
+    BSTR align();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
+    void height(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_HEIGHT)]
+    VARIANT height();
+
+    [propput, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
+    void width(VARIANT v);
+
+    [propget, id(DISPID_IHTMLIFRAMEELEMENT2_WIDTH)]
+    VARIANT width();
+}
+
+/*****************************************************************************
+ *    IMarkupContainer interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f5f9-98b5-11cf-bb82-00aa00bdce0B)
+]
+interface IMarkupContainer : IUnknown
+{
+    HRESULT OwningDoc([out] IHTMLDocument2 **ppDoc);
+}
+
+/*****************************************************************************
+ *    IMarkupPointer interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f49f-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IMarkupPointer : IUnknown
+{
+    HRESULT OwningDoc([out] IHTMLDocument2 **ppDoc);
+
+    HRESULT Gravity([out] POINTER_GRAVITY *pGravity);
+
+    HRESULT SetGravity([in] POINTER_GRAVITY Gravity);
+
+    HRESULT Cling([out] BOOL *pfCling);
+
+    HRESULT SetCling([in] BOOL fCLing);
+
+    HRESULT UnPosition();
+
+    HRESULT IsPositioned([out] BOOL *pfPositioned);
+
+    HRESULT GetContainer([out] IMarkupContainer **ppContainer);
+
+    HRESULT MoveAdjacentToElement(
+        [in] IHTMLElement *pElement,
+        [in] ELEMENT_ADJACENCY eAdj);
+
+    HRESULT MoveToPointer([in] IMarkupPointer *pPointer);
+
+    HRESULT MoveToContainer(
+        [in] IMarkupContainer *pContainer,
+        [in] BOOL fAtStart);
+
+    HRESULT Left(
+        [in] BOOL fMove,
+        [out] MARKUP_CONTEXT_TYPE *pContext,
+        [out] IHTMLElement **ppElement,
+        [in, out] LONG *pcch,
+        [out, size_is(*pcch)] OLECHAR *pchText);
+
+    HRESULT Right(
+        [in] BOOL fMove,
+        [out] MARKUP_CONTEXT_TYPE *pContext,
+        [out] IHTMLElement **ppElement,
+        [in, out] LONG *pcch,
+        [out, size_is(*pcch)] OLECHAR *pchText);
+
+    HRESULT CurrentScope([out] IHTMLElement **ppElemCurrent);
+
+    HRESULT IsLeftOf(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsLeftOfOrEqualTo(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsRightOf(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsRightOfOrEqualTo(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfResult);
+
+    HRESULT IsEqualTo(
+        [in] IMarkupPointer *pPointerThat,
+        [out] BOOL *pfAreEqual);
+
+    HRESULT MoveUnit([in] MOVEUNIT_ACTION muAction);
+
+    HRESULT FindText(
+        [in] OLECHAR *pchFindText,
+        [in] DWORD dwFlags,
+        [in] IMarkupPointer *pIEndMatch,
+        [in] IMarkupPointer *pIEndSearch);
+}
+
+/*****************************************************************************
+ *    ISegment interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f683-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface ISegment : IUnknown
+{
+    HRESULT GetPointers(
+        [in] IMarkupPointer *pIStart,
+        [in] IMarkupPointer *pIEnd);
+}
+
+/*****************************************************************************
+ *    IElementSegment interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f68f-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IElementSegment : ISegment
+{
+    HRESULT GetElement([out] IHTMLElement **ppIElement);
+
+    HRESULT SetPrimary([in] BOOL fPrimary);
+
+    HRESULT IsPrimary([out] BOOL *pfPrimary);
+}
+
+/*****************************************************************************
+ *    ISelectionServicesListener interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f699-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface ISelectionServicesListener : IUnknown
+{
+    HRESULT BeginSelectionUndo();
+
+    HRESULT EndSelectionUndo();
+
+    HRESULT OnSelectedElementExit(
+        [in] IMarkupPointer *pIElementStart,
+        [in] IMarkupPointer *pIElementEnd,
+        [in] IMarkupPointer *pIElementContentStart,
+        [in] IMarkupPointer *pIElementContentEnd);
+
+    HRESULT OnChangeType(
+        [in] SELECTION_TYPE eType,
+        [in] ISelectionServicesListener *pIListener);
+
+    HRESULT GetTypeDetail([out] BSTR *pTypeDetail);
+}
+
+/*****************************************************************************
+ *    ISelectionServices interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f684-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface ISelectionServices : IUnknown
+{
+    HRESULT SetSelectionType(
+        [in] SELECTION_TYPE eType,
+        [in] ISelectionServicesListener *pIListener);
+
+    HRESULT GetMarkupContainer([out] IMarkupContainer **ppIContainer);
+
+    HRESULT AddSegment(
+        [in] IMarkupPointer *pIStart,
+        [in] IMarkupPointer *pIEnd,
+        [out] ISegment **ppISegmentAdded);
+
+    HRESULT AddElementSegment(
+        [in] IHTMLElement *pIElement,
+        [out] IElementSegment **ppISegmentAdded);
+
+    HRESULT RemoveSegment([in] ISegment *pISegment);
+
+    HRESULT GetSelectionServicesListener([out] ISelectionServicesListener **ppISelectionServicesListener);
+}
+
+/*****************************************************************************
+ *    IHTMLEditDesigner interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f662-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLEditDesigner : IUnknown
+{
+    HRESULT PreHandleEvent(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+
+    HRESULT PostHandleEvent(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+
+    HRESULT TranslateAccelerator(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+
+    HRESULT PostEditorEventNotify(
+        [in] DISPID inEvtDispId,
+        [in] IHTMLEventObj *pIEventObj);
+}
+
+/*****************************************************************************
+ *    IHTMLEditServices interface
+ */
+[
+    object,
+    pointer_default(unique),
+    uuid(3050f663-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLEditServices : IUnknown
+{
+    HRESULT AddDesigner([in] IHTMLEditDesigner *pIDesigner);
+
+    HRESULT RemoveDesigner([in] IHTMLEditDesigner *pIDesigner);
+
+    HRESULT GetSelectionServices(
+        [in] IMarkupContainer *pIContainer,
+        [out] ISelectionServices **ppSelSvc);
+
+    HRESULT MoveToSelectionAnchor([in] IMarkupPointer *pIStartAnchor);
+
+    HRESULT MoveToSelectionEnd([in] IMarkupPointer *pIEndAnchor);
+
+    HRESULT SelectRange(
+        [in] IMarkupPointer* pStart,
+        [in] IMarkupPointer* pEnd,
+        [in] SELECTION_TYPE eType);
+}
+
+/*****************************************************************************
+ *    IElementBehaviorSite interface
+ */
+[
+    odl,
+    uuid(3050F427-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IElementBehaviorSite : IUnknown {
+    HRESULT GetElement([out, retval] IHTMLElement **ppElement);
+    HRESULT RegisterNotification([in] long lEvent);
+}
+
+/*****************************************************************************
+ *    IElementBehavior interface
+ */
+[
+    odl,
+    uuid(3050F425-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IElementBehavior : IUnknown {
+    HRESULT Init([in] IElementBehaviorSite *pBehaviorSite);
+    HRESULT Notify([in] long lEvent,  [in, out] VARIANT *pVar);
+    HRESULT Detach();
+}
+
+/*****************************************************************************
+ *    IElementBehaviorFactory interface
+ */
+[
+    odl,
+    uuid(3050f429-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IElementBehaviorFactory : IUnknown
+{
+    HRESULT FindBehavior(
+        [in] BSTR bstrBehavior,
+        [in] BSTR bstrBehaviorUrl,
+        [in] IElementBehaviorSite *pSite,
+        [out] IElementBehavior **ppBehavior);
+}
+
 } /* library MSHTML */
+
+interface IOleCommandTarget;
+
+/*****************************************************************************
+ *    IHTMLPrivateWindow interface
+ */
+[
+    object,
+    uuid(3050f6dc-98b5-11cf-bb82-00aa00bdce0b),
+    local
+]
+interface IHTMLPrivateWindow : IUnknown
+{
+    HRESULT SuperNavigate(BSTR url, BSTR arg2, BSTR arg3, BSTR arg4, VARIANT *post_data, VARIANT *headers, ULONG flags);
+    HRESULT GetPendingUrl(BSTR *url);
+    HRESULT SetPICSTarget(IOleCommandTarget *cmdtrg);
+    HRESULT PICSComplete(int arg);
+    HRESULT FindWindowByName(LPCWSTR name, IHTMLWindow2 **ret);
+    HRESULT GetAddressBarUrl(BSTR *url);
+}