mshtml.idl: Added more interfaces.
diff --git a/include/mshtmdid.h b/include/mshtmdid.h
index f1d3280..858b3da 100644
--- a/include/mshtmdid.h
+++ b/include/mshtmdid.h
@@ -86,6 +86,7 @@
 #define DISPID_STYLEELEMENT     DISPID_NORMAL_FIRST
 #define DISPID_FILTERS          DISPID_NORMAL_FIRST
 #define DISPID_TABLESECTION     DISPID_NORMAL_FIRST
+#define DISPID_OMRECT           DISPID_NORMAL_FIRST
 #define DISPID_OMDOCUMENT       DISPID_NORMAL_FIRST
 #define DISPID_SCREEN           DISPID_NORMAL_FIRST
 #define DISPID_DOMATTRIBUTE     DISPID_NORMAL_FIRST
@@ -159,6 +160,8 @@
 #define STDPROPID_XOBJ_STYLE             (DISPID_XOBJ_BASE+74)
 #define STDPROPID_XOBJ_COUNT             (DISPID_XOBJ_BASE+75)
 #define STDPROPID_XOBJ_DISABLED          (DISPID_XOBJ_BASE+76)
+#define STDPROPID_XOBJ_RIGHT             (DISPID_XOBJ_BASE+77)
+#define STDPROPID_XOBJ_BOTTOM            (DISPID_XOBJ_BASE+78)
 
 #define DISPID_A_FIRST                       DISPID_ATTRS
 #define DISPID_A_BACKGROUNDIMAGE             (DISPID_A_FIRST+1)
@@ -243,6 +246,7 @@
 #define DISPID_A_HIDDEN                      (DISPID_A_FIRST+81)
 #define DISPID_A_FILTER                      (DISPID_A_FIRST+82)
 #define DISPID_DEFAULTVALUE                  (DISPID_A_FIRST+83)
+#define DISPID_A_BORDERCOLLAPSE              (DISPID_A_FIRST+84)
 #define DISPID_A_POSITION                    (DISPID_A_FIRST+90)
 #define DISPID_A_ZINDEX                      (DISPID_A_FIRST+91)
 #define DISPID_A_CLIP                        (DISPID_A_FIRST+92)
@@ -251,6 +255,7 @@
 #define DISPID_A_CLIPRECTBOTTOM              (DISPID_A_FIRST+95)
 #define DISPID_A_CLIPRECTLEFT                (DISPID_A_FIRST+96)
 #define DISPID_A_FONTFACESRC                 (DISPID_A_FIRST+97)
+#define DISPID_A_TABLELAYOUT                 (DISPID_A_FIRST+98)
 #define DISPID_A_STYLETEXT                   (DISPID_A_FIRST+99)
 #define DISPID_A_LANGUAGE                    (DISPID_A_FIRST+100)
 #define DISPID_A_VALUE                       (DISPID_A_FIRST+101)
@@ -827,6 +832,76 @@
 #define DISPID_IHTMLELEMENT_ONDATASETCOMPLETE    DISPID_EVPROP_ONDATASETCOMPLETE
 #define DISPID_IHTMLELEMENT_ONFILTERCHANGE       DISPID_EVPROP_ONFILTER
 
+/* IHTMLelement2 */
+#define DISPID_IHTMLELEMENT2_SCOPENAME              DISPID_ELEMENT+39
+#define DISPID_IHTMLELEMENT2_SETCAPTURE             DISPID_ELEMENT+40
+#define DISPID_IHTMLELEMENT2_RELEASECAPTURE         DISPID_ELEMENT+41
+#define DISPID_IHTMLELEMENT2_ONLOSECAPTURE          DISPID_EVPROP_ONLOSECAPTURE
+#define DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT     DISPID_ELEMENT+42
+#define DISPID_IHTMLELEMENT2_DOSCROLL               DISPID_ELEMENT+43
+#define DISPID_IHTMLELEMENT2_ONSCROLL               DISPID_EVPROP_ONSCROLL
+#define DISPID_IHTMLELEMENT2_ONDRAG                 DISPID_EVPROP_ONDRAG
+#define DISPID_IHTMLELEMENT2_ONDRAGEND              DISPID_EVPROP_ONDRAGEND
+#define DISPID_IHTMLELEMENT2_ONDRAGENTER            DISPID_EVPROP_ONDRAGENTER
+#define DISPID_IHTMLELEMENT2_ONDRAGOVER             DISPID_EVPROP_ONDRAGOVER
+#define DISPID_IHTMLELEMENT2_ONDRAGLEAVE            DISPID_EVPROP_ONDRAGLEAVE
+#define DISPID_IHTMLELEMENT2_ONDROP                 DISPID_EVPROP_ONDROP
+#define DISPID_IHTMLELEMENT2_ONBEFORECUT            DISPID_EVPROP_ONBEFORECUT
+#define DISPID_IHTMLELEMENT2_ONCUT                  DISPID_EVPROP_ONCUT
+#define DISPID_IHTMLELEMENT2_ONBEFORECOPY           DISPID_EVPROP_ONBEFORECOPY
+#define DISPID_IHTMLELEMENT2_ONCOPY                 DISPID_EVPROP_ONCOPY
+#define DISPID_IHTMLELEMENT2_ONBEFOREPASTE          DISPID_EVPROP_ONBEFOREPASTE
+#define DISPID_IHTMLELEMENT2_ONPASTE                DISPID_EVPROP_ONPASTE
+#define DISPID_IHTMLELEMENT2_CURRENTSTYLE           DISPID_ELEMENT+7
+#define DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE       DISPID_EVPROP_ONPROPERTYCHANGE
+#define DISPID_IHTMLELEMENT2_GETCLIENTRECTS         DISPID_ELEMENT+44
+#define DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT  DISPID_ELEMENT+45
+#define DISPID_IHTMLELEMENT2_SETEXPRESSION          DISPID_HTMLOBJECT+4
+#define DISPID_IHTMLELEMENT2_GETEXPRESSION          DISPID_HTMLOBJECT+5
+#define DISPID_IHTMLELEMENT2_REMOVEEXPRESSION       DISPID_HTMLOBJECT+6
+#define DISPID_IHTMLELEMENT2_TABINDEX               STDPROPID_XOBJ_TABINDEX
+#define DISPID_IHTMLELEMENT2_FOCUS                  DISPID_SITE
+#define DISPID_IHTMLELEMENT2_ACCESSKEY              DISPID_SITE+5
+#define DISPID_IHTMLELEMENT2_ONBLUR                 DISPID_EVPROP_ONBLUR
+#define DISPID_IHTMLELEMENT2_ONFOCUS                DISPID_EVPROP_ONFOCUS
+#define DISPID_IHTMLELEMENT2_ONRESIZE               DISPID_EVPROP_ONRESIZE
+#define DISPID_IHTMLELEMENT2_BLUR                   DISPID_SITE+2
+#define DISPID_IHTMLELEMENT2_ADDFILTER              DISPID_SITE+17
+#define DISPID_IHTMLELEMENT2_REMOVEFILTER           DISPID_SITE+18
+#define DISPID_IHTMLELEMENT2_CLIENTHEIGHT           DISPID_SITE+19
+#define DISPID_IHTMLELEMENT2_CLIENTWIDTH            DISPID_SITE+20
+#define DISPID_IHTMLELEMENT2_CLIENTTOP              DISPID_SITE+21
+#define DISPID_IHTMLELEMENT2_CLIENTLEFT             DISPID_SITE+22
+#define DISPID_IHTMLELEMENT2_ATTACHEVENT            DISPID_HTMLOBJECT+7
+#define DISPID_IHTMLELEMENT2_DETACHEVENT            DISPID_HTMLOBJECT+8
+#define DISPID_IHTMLELEMENT2_READYSTATE             DISPID_A_READYSTATE
+#define DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE     DISPID_EVPROP_ONREADYSTATECHANGE
+#define DISPID_IHTMLELEMENT2_ONROWSDELETE           DISPID_EVPROP_ONROWSDELETE
+#define DISPID_IHTMLELEMENT2_ONROWSINSERTED         DISPID_EVPROP_ONROWSINSERTED
+#define DISPID_IHTMLELEMENT2_ONCELLCHANGE           DISPID_EVPROP_ONCELLCHANGE
+#define DISPID_IHTMLELEMENT2_DIR                    DISPID_A_DIR
+#define DISPID_IHTMLELEMENT2_CREATECONTROLRANGE     DISPID_ELEMENT+56
+#define DISPID_IHTMLELEMENT2_SCROLLHEIGHT           DISPID_ELEMENT+57
+#define DISPID_IHTMLELEMENT2_SCROLLWIDTH            DISPID_ELEMENT+58
+#define DISPID_IHTMLELEMENT2_SCROLLTOP              DISPID_ELEMENT+59
+#define DISPID_IHTMLELEMENT2_SCROLLLEFT             DISPID_ELEMENT+60
+#define DISPID_IHTMLELEMENT2_CLEARATTRIBUTES        DISPID_ELEMENT+62
+#define DISPID_IHTMLELEMENT2_MERGEATTRIBUTES        DISPID_ELEMENT+63
+#define DISPID_IHTMLELEMENT2_ONCONTEXTMENU          DISPID_EVPROP_ONCONTEXTMENU
+#define DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT  DISPID_ELEMENT+69
+#define DISPID_IHTMLELEMENT2_APPLYELEMENT           DISPID_ELEMENT+65
+#define DISPID_IHTMLELEMENT2_GETADJACENTTEXT        DISPID_ELEMENT+70
+#define DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT    DISPID_ELEMENT+71
+#define DISPID_IHTMLELEMENT2_CANHAVECHILDREN        DISPID_ELEMENT+72
+#define DISPID_IHTMLELEMENT2_ADDBEHAVIOR            DISPID_ELEMENT+80
+#define DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR         DISPID_ELEMENT+81
+#define DISPID_IHTMLELEMENT2_RUNTIMESTYLE           DISPID_ELEMENT+64
+#define DISPID_IHTMLELEMENT2_BEHAVIORURNS           DISPID_ELEMENT+82
+#define DISPID_IHTMLELEMENT2_TAGURN                 DISPID_ELEMENT+83
+#define DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS      DISPID_EVPROP_ONBEFOREEDITFOCUS
+#define DISPID_IHTMLELEMENT2_READYSTATEVALUE        DISPID_ELEMENT+84
+#define DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME   DISPID_ELEMENT+85
+
 /* IHTMLStyle */
 #define DISPID_IHTMLSTYLE_PIXELTOP                    DISPID_STYLE
 #define DISPID_IHTMLSTYLE_PIXELLEFT                   (DISPID_STYLE+1)
@@ -1432,4 +1507,108 @@
 #define DISPID_IHTMLSELECTELEMENT_ITEM           DISPID_VALUE
 #define DISPID_IHTMLSELECTELEMENT_TAGS           DISPID_COLLECTION+2
 
+/* IHTMLRect */
+#define DISPID_IHTMLRECT_LEFT    DISPID_OMRECT+1
+#define DISPID_IHTMLRECT_TOP     DISPID_OMRECT+2
+#define DISPID_IHTMLRECT_RIGHT   DISPID_OMRECT+3
+#define DISPID_IHTMLRECT_BOTTOM  DISPID_OMRECT+4
+
+/* IHTMLRectCollection */
+#define DISPID_IHTMLRECTCOLLECTION_LENGTH    DISPID_COLLECTION
+#define DISPID_IHTMLRECTCOLLECTION__NEWENUM  DISPID_NEWENUM
+#define DISPID_IHTMLRECTCOLLECTION_ITEM      DISPID_VALUE
+
+/* IHTMLCurrentStyle */
+#define DISPID_IHTMLCURRENTSTYLE_POSITION              DISPID_A_POSITION
+#define DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT            DISPID_A_FLOAT
+#define DISPID_IHTMLCURRENTSTYLE_COLOR                 DISPID_A_COLOR
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR       DISPID_BACKCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_FONTFAMILY            DISPID_A_FONTFACE
+#define DISPID_IHTMLCURRENTSTYLE_FONTSTYLE             DISPID_A_FONTSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_FONTVARIANT           DISPID_A_FONTVARIANT
+#define DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT            DISPID_A_FONTWEIGHT
+#define DISPID_IHTMLCURRENTSTYLE_FONTSIZE              DISPID_A_FONTSIZE
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE       DISPID_A_BACKGROUNDIMAGE
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX   DISPID_A_BACKGROUNDPOSX
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY   DISPID_A_BACKGROUNDPOSY
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT      DISPID_A_BACKGROUNDREPEAT
+#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR       DISPID_A_BORDERLEFTCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR        DISPID_A_BORDERTOPCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR      DISPID_A_BORDERRIGHTCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR     DISPID_A_BORDERBOTTOMCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE        DISPID_A_BORDERTOPSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE      DISPID_A_BORDERRIGHTSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE     DISPID_A_BORDERBOTTOMSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE       DISPID_A_BORDERLEFTSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH        DISPID_A_BORDERTOPWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH      DISPID_A_BORDERRIGHTWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH     DISPID_A_BORDERBOTTOMWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH       DISPID_A_BORDERLEFTWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_LEFT                  STDPROPID_XOBJ_LEFT
+#define DISPID_IHTMLCURRENTSTYLE_TOP                   STDPROPID_XOBJ_TOP
+#define DISPID_IHTMLCURRENTSTYLE_WIDTH                 STDPROPID_XOBJ_WIDTH
+#define DISPID_IHTMLCURRENTSTYLE_HEIGHT                STDPROPID_XOBJ_HEIGHT
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT           DISPID_A_PADDINGLEFT
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGTOP            DISPID_A_PADDINGTOP
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT          DISPID_A_PADDINGRIGHT
+#define DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM         DISPID_A_PADDINGBOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_TEXTALIGN             STDPROPID_XOBJ_BLOCKALIGN
+#define DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION        DISPID_A_TEXTDECORATION
+#define DISPID_IHTMLCURRENTSTYLE_DISPLAY               DISPID_A_DISPLAY
+#define DISPID_IHTMLCURRENTSTYLE_VISIBILITY            DISPID_A_VISIBILITY
+#define DISPID_IHTMLCURRENTSTYLE_ZINDEX                DISPID_A_ZINDEX
+#define DISPID_IHTMLCURRENTSTYLE_LETTERSPACING         DISPID_A_LETTERSPACING
+#define DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT            DISPID_A_LINEHEIGHT
+#define DISPID_IHTMLCURRENTSTYLE_TEXTINDENT            DISPID_A_TEXTINDENT
+#define DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN         DISPID_A_VERTICALALIGN
+#define DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT  DISPID_A_BACKGROUNDATTACHMENT
+#define DISPID_IHTMLCURRENTSTYLE_MARGINTOP             DISPID_A_MARGINTOP
+#define DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT           DISPID_A_MARGINRIGHT
+#define DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM          DISPID_A_MARGINBOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_MARGINLEFT            DISPID_A_MARGINLEFT
+#define DISPID_IHTMLCURRENTSTYLE_CLEAR                 DISPID_A_CLEAR
+#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE         DISPID_A_LISTSTYLETYPE
+#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION     DISPID_A_LISTSTYLEPOSITION
+#define DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE        DISPID_A_LISTSTYLEIMAGE
+#define DISPID_IHTMLCURRENTSTYLE_CLIPTOP               DISPID_A_CLIPRECTTOP
+#define DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT             DISPID_A_CLIPRECTRIGHT
+#define DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM            DISPID_A_CLIPRECTBOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_CLIPLEFT              DISPID_A_CLIPRECTLEFT
+#define DISPID_IHTMLCURRENTSTYLE_OVERFLOW              DISPID_A_OVERFLOW
+#define DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE       DISPID_A_PAGEBREAKBEFORE
+#define DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER        DISPID_A_PAGEBREAKAFTER
+#define DISPID_IHTMLCURRENTSTYLE_CURSOR                DISPID_A_CURSOR
+#define DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT           DISPID_A_TABLELAYOUT
+#define DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE        DISPID_A_BORDERCOLLAPSE
+#define DISPID_IHTMLCURRENTSTYLE_DIRECTION             DISPID_A_DIRECTION
+#define DISPID_IHTMLCURRENTSTYLE_BEHAVIOR              DISPID_A_BEHAVIOR
+#define DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE          DISPID_HTMLOBJECT+2
+#define DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI           DISPID_A_UNICODEBIDI
+#define DISPID_IHTMLCURRENTSTYLE_RIGHT                 STDPROPID_XOBJ_RIGHT
+#define DISPID_IHTMLCURRENTSTYLE_BOTTOM                STDPROPID_XOBJ_BOTTOM
+#define DISPID_IHTMLCURRENTSTYLE_IMEMODE               DISPID_A_IMEMODE
+#define DISPID_IHTMLCURRENTSTYLE_RUBYALIGN             DISPID_A_RUBYALIGN
+#define DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION          DISPID_A_RUBYPOSITION
+#define DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG          DISPID_A_RUBYOVERHANG
+#define DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE         DISPID_A_TEXTAUTOSPACE
+#define DISPID_IHTMLCURRENTSTYLE_LINEBREAK             DISPID_A_LINEBREAK
+#define DISPID_IHTMLCURRENTSTYLE_WORDBREAK             DISPID_A_WORDBREAK
+#define DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY           DISPID_A_TEXTJUSTIFY
+#define DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM       DISPID_A_TEXTJUSTIFYTRIM
+#define DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA           DISPID_A_TEXTKASHIDA
+#define DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION        DISPID_A_DIR
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR        DISPID_A_LAYOUTGRIDCHAR
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE        DISPID_A_LAYOUTGRIDLINE
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE        DISPID_A_LAYOUTGRIDMODE
+#define DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE        DISPID_A_LAYOUTGRIDTYPE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE           DISPID_A_BORDERSTYLE
+#define DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR           DISPID_A_BORDERCOLOR
+#define DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH           DISPID_A_BORDERWIDTH
+#define DISPID_IHTMLCURRENTSTYLE_PADDING               DISPID_A_PADDING
+#define DISPID_IHTMLCURRENTSTYLE_MARGIN                DISPID_A_MARGIN
+#define DISPID_IHTMLCURRENTSTYLE_ACCELERATOR           DISPID_A_ACCELERATOR
+#define DISPID_IHTMLCURRENTSTYLE_OVERFLOWX             DISPID_A_OVERFLOWX
+#define DISPID_IHTMLCURRENTSTYLE_OVERFLOWY             DISPID_A_OVERFLOWY
+#define DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM         DISPID_A_TEXTTRANSFORM
+
 #endif /* __MSHTMDID_H__ */
diff --git a/include/mshtml.idl b/include/mshtml.idl
index 046fd2f..92ee077 100644
--- a/include/mshtml.idl
+++ b/include/mshtml.idl
@@ -1190,6 +1190,353 @@
 }
 
 /*****************************************************************************
+ *    IHTMLCurrentStyle interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f3db-98b5-11cf-bb82-00aa00bdce0b)
+]
+interface IHTMLCurrentStyle : IDispatch
+{
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_POSITION), displaybind, bindable]
+    HRESULT position([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_STYLEFLOAT), displaybind, bindable]
+    HRESULT styleFloat([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_COLOR), displaybind, bindable]
+    HRESULT color([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDCOLOR), displaybind, bindable]
+    HRESULT backgroundColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTFAMILY), displaybind, bindable]
+    HRESULT fontFamily([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSTYLE), displaybind, bindable]
+    HRESULT fontStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTVARIANT), displaybind, bindable, hidden]
+    HRESULT fontVariant([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTWEIGHT), displaybind, bindable]
+    HRESULT fontWeight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_FONTSIZE), displaybind, bindable]
+    HRESULT fontSize([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDIMAGE), displaybind, bindable]
+    HRESULT backgroundImage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable]
+    HRESULT backgroundPositionX([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable]
+    HRESULT backgroundPositionY([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDREPEAT), displaybind, bindable]
+    HRESULT backgroundRepeat([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTCOLOR), displaybind, bindable]
+    HRESULT borderLeftColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPCOLOR), displaybind, bindable]
+    HRESULT borderTopColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTCOLOR), displaybind, bindable]
+    HRESULT borderRightColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable]
+    HRESULT borderBottomColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPSTYLE), displaybind, bindable]
+    HRESULT borderTopStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTSTYLE), displaybind, bindable]
+    HRESULT borderRightStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable]
+    HRESULT borderBottomStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTSTYLE), displaybind, bindable]
+    HRESULT borderLeftStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERTOPWIDTH), displaybind, bindable]
+    HRESULT borderTopWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERRIGHTWIDTH), displaybind, bindable]
+    HRESULT borderRightWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable]
+    HRESULT borderBottomWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERLEFTWIDTH), displaybind, bindable]
+    HRESULT borderLeftWidth([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LEFT), displaybind, bindable]
+    HRESULT left([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TOP), displaybind, bindable]
+    HRESULT top([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WIDTH), displaybind, bindable]
+    HRESULT width([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_HEIGHT), displaybind, bindable]
+    HRESULT height([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGLEFT), displaybind, bindable]
+    HRESULT paddingLeft([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGTOP), displaybind, bindable]
+    HRESULT paddingTop([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGRIGHT), displaybind, bindable]
+    HRESULT paddingRight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDINGBOTTOM), displaybind, bindable]
+    HRESULT paddingBottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTALIGN), displaybind, bindable]
+    HRESULT textAlign([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTDECORATION), displaybind, bindable]
+    HRESULT textDecoration([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DISPLAY), displaybind, bindable]
+    HRESULT display([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VISIBILITY), displaybind, bindable]
+    HRESULT visibility([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ZINDEX), displaybind, bindable]
+    HRESULT zIndex([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LETTERSPACING), displaybind, bindable]
+    HRESULT letterSpacing([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEHEIGHT), displaybind, bindable]
+    HRESULT lineHeight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTINDENT), displaybind, bindable]
+    HRESULT textIndent([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_VERTICALALIGN), displaybind, bindable]
+    HRESULT verticalAlign([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable]
+    HRESULT backgroundAttachment([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINTOP), displaybind, bindable]
+    HRESULT marginTop([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINRIGHT), displaybind, bindable]
+    HRESULT marginRight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINBOTTOM), displaybind, bindable]
+    HRESULT marginBottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGINLEFT), displaybind, bindable]
+    HRESULT marginLeft([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLEAR), displaybind, bindable]
+    HRESULT clear([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLETYPE), displaybind, bindable]
+    HRESULT listStyleType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEPOSITION), displaybind, bindable]
+    HRESULT listStylePosition([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LISTSTYLEIMAGE), displaybind, bindable]
+    HRESULT listStyleImage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPTOP), displaybind, bindable]
+    HRESULT clipTop([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPRIGHT), displaybind, bindable]
+    HRESULT clipRight([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPBOTTOM), displaybind, bindable]
+    HRESULT clipBottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CLIPLEFT), displaybind, bindable]
+    HRESULT clipLeft([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOW), displaybind, bindable]
+    HRESULT overflow([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKBEFORE), displaybind, bindable]
+    HRESULT pageBreakBefore([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PAGEBREAKAFTER), displaybind, bindable]
+    HRESULT pageBreakAfter([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_CURSOR), displaybind, bindable]
+    HRESULT cursor([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TABLELAYOUT), displaybind, bindable]
+    HRESULT tableLayout([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLLAPSE), displaybind, bindable]
+    HRESULT borderCollapse([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_DIRECTION), displaybind, bindable]
+    HRESULT direction([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BEHAVIOR), displaybind, bindable]
+    HRESULT behavior([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLCURRENTSTYLE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_UNICODEBIDI), displaybind, bindable]
+    HRESULT unicodeBidi([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RIGHT), displaybind, bindable]
+    HRESULT right([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BOTTOM), displaybind, bindable]
+    HRESULT bottom([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_IMEMODE), displaybind, bindable]
+    HRESULT imeMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYALIGN), displaybind, bindable]
+    HRESULT rubyAlign([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYPOSITION), displaybind, bindable]
+    HRESULT rubyPosition([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_RUBYOVERHANG), displaybind, bindable]
+    HRESULT rubyOverhang([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTAUTOSPACE), displaybind, bindable]
+    HRESULT textAutospace([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LINEBREAK), displaybind, bindable]
+    HRESULT lineBreak([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_WORDBREAK), displaybind, bindable]
+    HRESULT wordBreak([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFY), displaybind, bindable]
+    HRESULT textJustify([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTJUSTIFYTRIM), displaybind, bindable]
+    HRESULT textJustifyTrim([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTKASHIDA), displaybind, bindable]
+    HRESULT textKashida([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BLOCKDIRECTION), displaybind, bindable]
+    HRESULT blockDirection([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDCHAR), displaybind, bindable]
+    HRESULT layoutGridChar([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDLINE), displaybind, bindable]
+    HRESULT layoutGridLine([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDMODE), displaybind, bindable]
+    HRESULT layoutGridMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_LAYOUTGRIDTYPE), displaybind, bindable]
+    HRESULT layoutGridType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERSTYLE), displaybind, bindable]
+    HRESULT borderStyle([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERCOLOR), displaybind, bindable]
+    HRESULT borderColor([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_BORDERWIDTH), displaybind, bindable]
+    HRESULT borderWidth([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_PADDING), displaybind, bindable]
+    HRESULT padding([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_MARGIN), displaybind, bindable]
+    HRESULT margin([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_ACCELERATOR), displaybind, bindable]
+    HRESULT accelerator([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWX), displaybind, bindable]
+    HRESULT overflowX([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_OVERFLOWY), displaybind, bindable]
+    HRESULT overflowY([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLCURRENTSTYLE_TEXTTRANSFORM), displaybind, bindable]
+    HRESULT textTransform([retval, out] BSTR *p);
+}
+
+/*****************************************************************************
+ *    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_IHTMLRECT_LEFT)]
+    HRESULT left([retval, out] long *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
  */
 [
@@ -1321,6 +1668,8 @@
         [retval, out] VARIANT_BOOL *pfHasFeature);
 }
 
+interface IHTMLElementCollection;
+
 /*****************************************************************************
  *    IHTMLElement interface
  */
@@ -1606,6 +1955,345 @@
 }
 
 /*****************************************************************************
+ *    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);
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    HRESULT setCapture([defaultvalue(-1), in] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    HRESULT releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    HRESULT onlosecapture([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    HRESULT onlosecapture([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    HRESULT componentFromPoint(
+        [in] long x,
+        [in] long y,
+        [retval, out] BSTR *component);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    HRESULT doScroll([optional, in] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    HRESULT onscroll([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    HRESULT ondrag([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    HRESULT ondrag([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    HRESULT ondragend([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    HRESULT ondragend([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    HRESULT ondragenter([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    HRESULT ondragenter([retval, out] VARIANT *p);
+
+    [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);
+}
+
+/*****************************************************************************
  *    IHTMLStyleSheetRule interface
  */
 [