Added mshtml.idl.

diff --git a/include/mshtml.idl b/include/mshtml.idl
new file mode 100644
index 0000000..270fa60
--- /dev/null
+++ b/include/mshtml.idl
@@ -0,0 +1,2991 @@
+/*
+ * Copyright 2004 Jacek Caban
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <mshtmdid.h>
+/* #include <mshtmcid.h> */
+#include <olectl.h>
+
+import "ocidl.idl";
+/* import "dimm.idl"; */
+
+cpp_quote("#include <olectl.h>")
+
+interface IHTMLElement;
+interface IHTMLDocument2;
+interface IHTMLStyleSheetsCollection;
+
+/*****************************************************************************
+ *    IHTMLStyle interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050F25E-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLStyle : IDispatch
+{
+    [propput, id(DISPID_IHTMLSTYLE_FONTFAMILY)]
+    HRESULT fontFamily([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTFAMILY)]
+    HRESULT fontFamily([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTSTYLE)]
+    HRESULT fontStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTSTYLE)]
+    HRESULT fontStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTVARIANT)]
+    HRESULT fontVariant([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTVARIANT)]
+    HRESULT fontVariant([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTWEIGHT)]
+    HRESULT fontWeight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTWEIGHT)]
+    HRESULT fontWeight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONTSIZE)]
+    HRESULT fontSize([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONTSIZE)]
+    HRESULT fontSize([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FONT)]
+    HRESULT font([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FONT)]
+    HRESULT font([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_COLOR)]
+    HRESULT color([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_COLOR)]
+    HRESULT color([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUND)]
+    HRESULT background([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUND)]
+    HRESULT background([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR)]
+    HRESULT backgroundColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDCOLOR)]
+    HRESULT backgroundColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE)]
+    HRESULT backgroundImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDIMAGE)]
+    HRESULT backgroundImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT)]
+    HRESULT backgroundRepeat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDREPEAT)]
+    HRESULT backgroundRepeat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT)]
+    HRESULT backgroundAttachment([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT)]
+    HRESULT backgroundAttachment([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION)]
+    HRESULT backgroundPosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITION)]
+    HRESULT backgroundPosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX)]
+    HRESULT backgroundPositionX([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX)]
+    HRESULT backgroundPositionX([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY)]
+    HRESULT backgroundPositionY([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY)]
+    HRESULT backgroundPositionY([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_WORDSPACING)]
+    HRESULT wordSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WORDSPACING)]
+    HRESULT wordSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LETTERSPACING)]
+    HRESULT letterSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LETTERSPACING)]
+    HRESULT letterSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATION)]
+    HRESULT textDecoration([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATION)]
+    HRESULT textDecoration([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE)]
+    HRESULT textDecorationNone([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONNONE)]
+    HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE)]
+    HRESULT textDecorationUnderline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE)]
+    HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE)]
+    HRESULT textDecorationOverline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE)]
+    HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH)]
+    HRESULT textDecorationLineThrough([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH)]
+    HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK)]
+    HRESULT textDecorationBlink([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK)]
+    HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_VERTICALALIGN)]
+    HRESULT verticalAlign([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_VERTICALALIGN)]
+    HRESULT verticalAlign([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM)]
+    HRESULT textTransform([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTTRANSFORM)]
+    HRESULT textTransform([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTALIGN)]
+    HRESULT textAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTALIGN)]
+    HRESULT textAlign([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TEXTINDENT)]
+    HRESULT textIndent([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TEXTINDENT)]
+    HRESULT textIndent([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LINEHEIGHT)]
+    HRESULT lineHeight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LINEHEIGHT)]
+    HRESULT lineHeight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINTOP)]
+    HRESULT marginTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINTOP)]
+    HRESULT marginTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINRIGHT)]
+    HRESULT marginRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINRIGHT)]
+    HRESULT marginRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINBOTTOM)]
+    HRESULT marginBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINBOTTOM)]
+    HRESULT marginBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGINLEFT)]
+    HRESULT marginLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGINLEFT)]
+    HRESULT marginLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_MARGIN)]
+    HRESULT margin([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_MARGIN)]
+    HRESULT margin([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGTOP)]
+    HRESULT paddingTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGTOP)]
+    HRESULT paddingTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGRIGHT)]
+    HRESULT paddingRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGRIGHT)]
+    HRESULT paddingRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM)]
+    HRESULT paddingBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGBOTTOM)]
+    HRESULT paddingBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDINGLEFT)]
+    HRESULT paddingLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDINGLEFT)]
+    HRESULT paddingLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PADDING)]
+    HRESULT padding([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PADDING)]
+    HRESULT padding([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDER)]
+    HRESULT border([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDER)]
+    HRESULT border([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOP)]
+    HRESULT borderTop([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOP)]
+    HRESULT borderTop([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHT)]
+    HRESULT borderRight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHT)]
+    HRESULT borderRight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOM)]
+    HRESULT borderBottom([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOM)]
+    HRESULT borderBottom([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFT)]
+    HRESULT borderLeft([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFT)]
+    HRESULT borderLeft([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERCOLOR)]
+    HRESULT borderColor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERCOLOR)]
+    HRESULT borderColor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR)]
+    HRESULT borderTopColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPCOLOR)]
+    HRESULT borderTopColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR)]
+    HRESULT borderRightColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR)]
+    HRESULT borderRightColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR)]
+    HRESULT borderBottomColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR)]
+    HRESULT borderBottomColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR)]
+    HRESULT borderLeftColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTCOLOR)]
+    HRESULT borderLeftColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERWIDTH)]
+    HRESULT borderWidth([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERWIDTH)]
+    HRESULT borderWidth([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH)]
+    HRESULT borderTopWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPWIDTH)]
+    HRESULT borderTopWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH)]
+    HRESULT borderRightWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH)]
+    HRESULT borderRightWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH)]
+    HRESULT borderBottomWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH)]
+    HRESULT borderBottomWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH)]
+    HRESULT borderLeftWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTWIDTH)]
+    HRESULT borderLeftWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERSTYLE)]
+    HRESULT borderStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERSTYLE)]
+    HRESULT borderStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE)]
+    HRESULT borderTopStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERTOPSTYLE)]
+    HRESULT borderTopStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE)]
+    HRESULT borderRightStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE)]
+    HRESULT borderRightStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE)]
+    HRESULT borderBottomStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE)]
+    HRESULT borderBottomStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE)]
+    HRESULT borderLeftStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_BORDERLEFTSTYLE)]
+    HRESULT borderLeftStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_WIDTH)]
+    HRESULT width([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WIDTH)]
+    HRESULT width([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_HEIGHT)]
+    HRESULT height([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_HEIGHT)]
+    HRESULT height([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_STYLEFLOAT)]
+    HRESULT styleFloat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_STYLEFLOAT)]
+    HRESULT styleFloat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CLEAR)]
+    HRESULT clear([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CLEAR)]
+    HRESULT clear([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_DISPLAY)]
+    HRESULT display([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_DISPLAY)]
+    HRESULT display([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_VISIBILITY)]
+    HRESULT visibility([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_VISIBILITY)]
+    HRESULT visibility([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE)]
+    HRESULT listStyleType([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLETYPE)]
+    HRESULT listStyleType([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION)]
+    HRESULT listStylePosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEPOSITION)]
+    HRESULT listStylePosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE)]
+    HRESULT listStyleImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLEIMAGE)]
+    HRESULT listStyleImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LISTSTYLE)]
+    HRESULT listStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LISTSTYLE)]
+    HRESULT listStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_WHITESPACE)]
+    HRESULT whiteSpace([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_WHITESPACE)]
+    HRESULT whiteSpace([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_TOP)]
+    HRESULT top([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_TOP)]
+    HRESULT top([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_LEFT)]
+    HRESULT left([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_LEFT)]
+    HRESULT left([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSITION)]
+    HRESULT position([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_ZINDEX)]
+    HRESULT zIndex([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLSTYLE_ZINDEX)]
+    HRESULT zIndex([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_OVERFLOW)]
+    HRESULT overflow([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_OVERFLOW)]
+    HRESULT overflow([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE)]
+    HRESULT pageBreakBefore([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKBEFORE)]
+    HRESULT pageBreakBefore([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER)]
+    HRESULT pageBreakAfter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PAGEBREAKAFTER)]
+    HRESULT pageBreakAfter([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CSSTEXT)]
+    HRESULT cssText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CSSTEXT)]
+    HRESULT cssText([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELTOP)]
+    HRESULT pixelTop([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELTOP)]
+    HRESULT pixelTop([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELLEFT)]
+    HRESULT pixelLeft([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELLEFT)]
+    HRESULT pixelLeft([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELWIDTH)]
+    HRESULT pixelWidth([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELWIDTH)]
+    HRESULT pixelWidth([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_PIXELHEIGHT)]
+    HRESULT pixelHeight([in] long v);
+
+    [propget, id(DISPID_IHTMLSTYLE_PIXELHEIGHT)]
+    HRESULT pixelHeight([retval, out] long *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSTOP)]
+    HRESULT posTop([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSTOP)]
+    HRESULT posTop([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSLEFT)]
+    HRESULT posLeft([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSLEFT)]
+    HRESULT posLeft([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSWIDTH)]
+    HRESULT posWidth([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSWIDTH)]
+    HRESULT posWidth([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_POSHEIGHT)]
+    HRESULT posHeight([in] float v);
+
+    [propget, id(DISPID_IHTMLSTYLE_POSHEIGHT)]
+    HRESULT posHeight([retval, out] float *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CURSOR)]
+    HRESULT cursor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CURSOR)]
+    HRESULT cursor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_CLIP)]
+    HRESULT clip([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_CLIP)]
+    HRESULT clip([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLSTYLE_FILTER)]
+    HRESULT filter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLSTYLE_FILTER)]
+    HRESULT filter([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLSTYLE_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR strAttributeName,
+        [in] VARIANT AttributeValue,
+        [defaultvalue(1), in] LONG lFlags);
+
+    [id(DISPID_IHTMLSTYLE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
+
+    [id(DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in]
+        LONG lFlags,
+        [retval, out] VARIANT_BOOL *pfSuccess);
+
+    [id(DISPID_IHTMLSTYLE_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+}
+
+/*****************************************************************************
+ *    IHTMLRuleStyle interface
+ */
+[
+	odl,
+	oleautomation,
+	dual,
+	uuid(3050F3CF-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLRuleStyle : IDispatch
+{
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTFAMILY)]
+    HRESULT fontFamily([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTFAMILY)]
+    HRESULT fontFamily([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTSTYLE)]
+    HRESULT fontStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTSTYLE)]
+    HRESULT fontStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTVARIANT)]
+    HRESULT fontVariant([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTVARIANT)]
+    HRESULT fontVariant([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT)]
+    HRESULT fontWeight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTWEIGHT)]
+    HRESULT fontWeight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONTSIZE)]
+    HRESULT fontSize([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONTSIZE)]
+    HRESULT fontSize([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FONT)]
+    HRESULT font([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FONT)]
+    HRESULT font([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_COLOR)]
+    HRESULT color([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_COLOR)]
+    HRESULT color([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUND)]
+    HRESULT background([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUND)]
+    HRESULT background([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR)]
+    HRESULT backgroundColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR)]
+    HRESULT backgroundColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE)]
+    HRESULT backgroundImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE)]
+    HRESULT backgroundImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT)]
+    HRESULT backgroundRepeat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT)]
+    HRESULT backgroundRepeat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT)]
+    HRESULT backgroundAttachment([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT)]
+    HRESULT backgroundAttachment([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION)]
+    HRESULT backgroundPosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION)]
+    HRESULT backgroundPosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX)]
+    HRESULT backgroundPositionX([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX)]
+    HRESULT backgroundPositionX([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY)]
+    HRESULT backgroundPositionY([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY)]
+    HRESULT backgroundPositionY([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_WORDSPACING)]
+    HRESULT wordSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_WORDSPACING)]
+    HRESULT wordSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LETTERSPACING)]
+    HRESULT letterSpacing([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LETTERSPACING)]
+    HRESULT letterSpacing([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION)]
+    HRESULT textDecoration([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATION)]
+    HRESULT textDecoration([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE)]
+    HRESULT textDecorationNone([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE)]
+    HRESULT textDecorationNone([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE)]
+    HRESULT textDecorationUnderline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE)]
+    HRESULT textDecorationUnderline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE)]
+    HRESULT textDecorationOverline([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE)]
+    HRESULT textDecorationOverline([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH)]
+    HRESULT textDecorationLineThrough([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH)]
+    HRESULT textDecorationLineThrough([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK)]
+    HRESULT textDecorationBlink([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK)]
+    HRESULT textDecorationBlink([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN)]
+    HRESULT verticalAlign([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_VERTICALALIGN)]
+    HRESULT verticalAlign([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM)]
+    HRESULT textTransform([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTTRANSFORM)]
+    HRESULT textTransform([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTALIGN)]
+    HRESULT textAlign([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTALIGN)]
+    HRESULT textAlign([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TEXTINDENT)]
+    HRESULT textIndent([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TEXTINDENT)]
+    HRESULT textIndent([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT)]
+    HRESULT lineHeight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LINEHEIGHT)]
+    HRESULT lineHeight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINTOP)]
+    HRESULT marginTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINTOP)]
+    HRESULT marginTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT)]
+    HRESULT marginRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINRIGHT)]
+    HRESULT marginRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM)]
+    HRESULT marginBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINBOTTOM)]
+    HRESULT marginBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGINLEFT)]
+    HRESULT marginLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGINLEFT)]
+    HRESULT marginLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_MARGIN)]
+    HRESULT margin([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_MARGIN)]
+    HRESULT margin([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGTOP)]
+    HRESULT paddingTop([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGTOP)]
+    HRESULT paddingTop([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT)]
+    HRESULT paddingRight([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGRIGHT)]
+    HRESULT paddingRight([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM)]
+    HRESULT paddingBottom([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGBOTTOM)]
+    HRESULT paddingBottom([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT)]
+    HRESULT paddingLeft([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDINGLEFT)]
+    HRESULT paddingLeft([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PADDING)]
+    HRESULT padding([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PADDING)]
+    HRESULT padding([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDER)]
+    HRESULT border([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDER)]
+    HRESULT border([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOP)]
+    HRESULT borderTop([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOP)]
+    HRESULT borderTop([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT)]
+    HRESULT borderRight([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHT)]
+    HRESULT borderRight([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM)]
+    HRESULT borderBottom([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOM)]
+    HRESULT borderBottom([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFT)]
+    HRESULT borderLeft([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFT)]
+    HRESULT borderLeft([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR)]
+    HRESULT borderColor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERCOLOR)]
+    HRESULT borderColor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR)]
+    HRESULT borderTopColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR)]
+    HRESULT borderTopColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR)]
+    HRESULT borderRightColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR)]
+    HRESULT borderRightColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR)]
+    HRESULT borderBottomColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR)]
+    HRESULT borderBottomColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR)]
+    HRESULT borderLeftColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR)]
+    HRESULT borderLeftColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH)]
+    HRESULT borderWidth([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERWIDTH)]
+    HRESULT borderWidth([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH)]
+    HRESULT borderTopWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH)]
+    HRESULT borderTopWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH)]
+    HRESULT borderRightWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH)]
+    HRESULT borderRightWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH)]
+    HRESULT borderBottomWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH)]
+    HRESULT borderBottomWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH)]
+    HRESULT borderLeftWidth([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH)]
+    HRESULT borderLeftWidth([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE)]
+    HRESULT borderStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERSTYLE)]
+    HRESULT borderStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE)]
+    HRESULT borderTopStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE)]
+    HRESULT borderTopStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE)]
+    HRESULT borderRightStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE)]
+    HRESULT borderRightStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE)]
+    HRESULT borderBottomStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE)]
+    HRESULT borderBottomStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE)]
+    HRESULT borderLeftStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE)]
+    HRESULT borderLeftStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_WIDTH)]
+    HRESULT width([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_WIDTH)]
+    HRESULT width([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_HEIGHT)]
+    HRESULT height([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_HEIGHT)]
+    HRESULT height([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT)]
+    HRESULT styleFloat([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_STYLEFLOAT)]
+    HRESULT styleFloat([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CLEAR)]
+    HRESULT clear([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CLEAR)]
+    HRESULT clear([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_DISPLAY)]
+    HRESULT display([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_DISPLAY)]
+    HRESULT display([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_VISIBILITY)]
+    HRESULT visibility([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_VISIBILITY)]
+    HRESULT visibility([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE)]
+    HRESULT listStyleType([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLETYPE)]
+    HRESULT listStyleType([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION)]
+    HRESULT listStylePosition([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION)]
+    HRESULT listStylePosition([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE)]
+    HRESULT listStyleImage([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE)]
+    HRESULT listStyleImage([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LISTSTYLE)]
+    HRESULT listStyle([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LISTSTYLE)]
+    HRESULT listStyle([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_WHITESPACE)]
+    HRESULT whiteSpace([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_WHITESPACE)]
+    HRESULT whiteSpace([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_TOP)]
+    HRESULT top([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_TOP)]
+    HRESULT top([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_LEFT)]
+    HRESULT left([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_LEFT)]
+    HRESULT left([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_POSITION)]
+    HRESULT position([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_ZINDEX)]
+    HRESULT zIndex([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_ZINDEX)]
+    HRESULT zIndex([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_OVERFLOW)]
+    HRESULT overflow([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_OVERFLOW)]
+    HRESULT overflow([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE)]
+    HRESULT pageBreakBefore([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE)]
+    HRESULT pageBreakBefore([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER)]
+    HRESULT pageBreakAfter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER)]
+    HRESULT pageBreakAfter([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CSSTEXT)]
+    HRESULT cssText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CSSTEXT)]
+    HRESULT cssText([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CURSOR)]
+    HRESULT cursor([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CURSOR)]
+    HRESULT cursor([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_CLIP)]
+    HRESULT clip([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_CLIP)]
+    HRESULT clip([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLRULESTYLE_FILTER)]
+    HRESULT filter([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLRULESTYLE_FILTER)]
+    HRESULT filter([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLRULESTYLE_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR strAttributeName,
+        [in] VARIANT AttributeValue,
+        [defaultvalue(1), in] LONG lFlags);
+
+    [id(DISPID_IHTMLRULESTYLE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT *AttributeValue);
+
+    [id(DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in] LONG lFlags,
+        [retval, out] VARIANT_BOOL *pfSuccess);
+}
+
+/*****************************************************************************
+ *    IHTMLFiltersCollection interface
+ */
+[
+	odl,
+	oleautomation,
+	dual,
+	uuid(3050F3EE-98B5-11Cf-BB82-00AA00BDCE0B)
+]
+interface IHTMLFiltersCollection : IDispatch
+{
+    [propget, id(DISPID_IHTMLFILTERSCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLFILTERSCOLLECTION__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLFILTERSCOLLECTION_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+}
+
+
+/*****************************************************************************
+ *    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);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(0), in] LONG lFlags,
+        [retval, out] VARIANT AttributeValue);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    HRESULT removeAttribute(
+        [in] BSTR strAttributeName,
+        [defaultvalue(1), in] LONG lFlags,
+        [retval, out] VARIANT_BOOL *pfSuccess);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME)]
+    HRESULT className([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME)]
+    HRESULT className([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ID)]
+    HRESULT id([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID)]
+    HRESULT id([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    HRESULT tagName([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    HRESULT parentElement([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE)]
+    HRESULT style([retval, out] IHTMLStyle **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP)]
+    HRESULT onhelp([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP)]
+    HRESULT onhelp([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK)]
+    HRESULT onclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK)]
+    HRESULT onclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
+    HRESULT ondblclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK)]
+    HRESULT ondblclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
+    HRESULT onkeydown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN)]
+    HRESULT onkeydown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP)]
+    HRESULT onkeyup([in] VARIANT v);
+    
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP)]
+    HRESULT onkeyup([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
+    HRESULT onkeypress([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS)]
+    HRESULT onkeypress([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
+    HRESULT onmouseout([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT)]
+    HRESULT onmouseout([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
+    HRESULT onmouseover([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER)]
+    HRESULT onmouseover([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
+    HRESULT onmousemove([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE)]
+    HRESULT onmousemove([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
+    HRESULT onmousedown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN)]
+    HRESULT onmousedown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
+    HRESULT onmouseup([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP)]
+    HRESULT onmouseup([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    HRESULT document([retval, out] IDispatch **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE)]
+    HRESULT title([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE)]
+    HRESULT title([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE)]
+    HRESULT language([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE)]
+    HRESULT language([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
+    HRESULT onselectstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART)]
+    HRESULT onselectstart([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    HRESULT scrollIntoView([optional, in] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    HRESULT contains(
+        [in] IHTMLElement *pChild,
+        [retval, out] VARIANT_BOOL *pfResult);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX)]
+    HRESULT sourceIndex([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    HRESULT recordNumber([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    HRESULT lang([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    HRESULT lang([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    HRESULT offsetLeft([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    HRESULT offsetTop([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    HRESULT offsetWidth([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    HRESULT offsetHeight([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    HRESULT offsetParent([retval, out] IHTMLElement **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    HRESULT innerHTML([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    HRESULT innerHTML([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    HRESULT innerText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    HRESULT innerText([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    HRESULT outerHTML([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    HRESULT outerHTML([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    HRESULT outerText([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    HRESULT outerText([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    HRESULT insertAdjacentHTML([in] BSTR where, [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    HRESULT insertAdjacentText([in] BSTR where, [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    HRESULT parentTextEdit([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    HRESULT isTextEdit([retval, out] VARIANT_BOOL *p);
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    HRESULT click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    HRESULT filters([retval, out] IHTMLFiltersCollection **p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
+    HRESULT ondragstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART)]
+    HRESULT ondragstart([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
+    HRESULT onafterupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE)]
+    HRESULT onafterupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
+    HRESULT onerrorupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE)]
+    HRESULT onerrorupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
+    HRESULT onrowexit([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT)]
+    HRESULT onrowexit([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER)]
+    HRESULT onrowenter([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER)]
+    HRESULT onrowenter([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
+    HRESULT ondatasetchanged([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED)]
+    HRESULT ondatasetchanged([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE)]
+    HRESULT ondataavailable([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
+    HRESULT ondatasetcomplete([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE)]
+    HRESULT ondatasetcomplete([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
+    HRESULT onfilterchange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE)]
+    HRESULT onfilterchange([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    HRESULT children([retval, out] IDispatch **p);
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    HRESULT all([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    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);
+}
+
+/*****************************************************************************
+ *    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);
+}
+
+/*****************************************************************************
+ *    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);
+}
+
+/*****************************************************************************
+ *    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_IHTMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length([in] long v);
+
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION_LENGTH)]
+    HRESULT length([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLELEMENTCOLLECTION__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION_ITEM)]
+    HRESULT item(
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT index,
+        [retval,  out] IDispatch **pdisp);
+
+    [id(DISPID_IHTMLELEMENTCOLLECTION_TAGS)]
+    HRESULT tags(
+        [in] VARIANT tagName,
+        [retval, out] IDispatch **pdisp);
+}
+
+/*****************************************************************************
+ *    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);
+}
+
+/*****************************************************************************
+ *    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_IHTMLOPTIONELEMENT_SELECTED)]
+    HRESULT selected([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    HRESULT value([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_VALUE)]
+    HRESULT value([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    HRESULT defaultSelected([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_DEFAULTSELECTED)]
+    HRESULT defaultSelected([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    HRESULT index([in] LONG v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_INDEX)]
+    HRESULT index([retval, out] LONG *p);
+
+    [propput, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    HRESULT text([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_TEXT)]
+    HRESULT text([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLOPTIONELEMENT_FORM)]
+    HRESULT form([retval, out] IHTMLFormElement **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);
+}
+
+/*****************************************************************************
+ *    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_IOMHISTORY_BACK)]
+    HRESULT back([optional, in] VARIANT *pvargdistance);
+
+    [id(DISPID_IOMHISTORY_FORWARD)]
+    HRESULT forward([optional, in] VARIANT *pvargdistance);
+
+    [id(DISPID_IOMHISTORY_GO)]
+    HRESULT go([optional, in] VARIANT *pvargdistance);
+}
+
+/*****************************************************************************
+ *    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);
+}
+
+/*****************************************************************************
+ *    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);
+
+    [id(DISPID_IHTMLPLUGINSCOLLECTION_REFRESH)]
+    HRESULT refresh([defaultvalue(0), in] VARIANT_BOOL reload);
+}
+
+/*****************************************************************************
+ *    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);
+
+    [id(DISPID_IHTMLOPSPROFILE_CLEARREQUEST)]
+    HRESULT clearRequest();
+
+    [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);
+
+    [id(DISPID_IHTMLOPSPROFILE_GETATTRIBUTE)]
+    HRESULT getAttribute(
+        [in] BSTR name,
+        [retval, out] BSTR *value);
+
+    [id(DISPID_IHTMLOPSPROFILE_SETATTRIBUTE)]
+    HRESULT setAttribute(
+        [in] BSTR name,
+        [in] BSTR value,
+        [optional, in] VARIANT prefs,
+        [retval, out] VARIANT_BOOL *success);
+
+    [id(DISPID_IHTMLOPSPROFILE_COMMITCHANGES)]
+    HRESULT commitChanges([retval, out] VARIANT_BOOL *success);
+
+    [id(DISPID_IHTMLOPSPROFILE_ADDREADREQUEST)]
+    HRESULT addReadRequest(
+        [in] BSTR name,
+        [optional, in] VARIANT reserved,
+        [retval, out] VARIANT_BOOL *success);
+
+    [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_IHTMLOPSPROFILE_DOWRITEREQUEST)]
+    HRESULT doWriteRequest([retval, out] VARIANT_BOOL *success);
+}
+
+/*****************************************************************************
+ *    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_IOMNAVIGATOR_APPNAME)]
+    HRESULT appName([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_APPVERSION)]
+    HRESULT appVersion([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_USERAGENT)]
+    HRESULT userAgent([retval, out] BSTR *p);
+
+    [id(DISPID_IOMNAVIGATOR_JAVAENABLED)]
+    HRESULT javaEnabled([retval, out] VARIANT_BOOL *enabled);
+
+    [id(DISPID_IOMNAVIGATOR_TAINTENABLED)]
+    HRESULT taintEnabled([retval, out] VARIANT_BOOL *enabled);
+
+    [propget, id(DISPID_IOMNAVIGATOR_MIMETYPES)]
+    HRESULT mimeTypes([retval, out] IHTMLMimeTypesCollection **p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_PLUGINS)]
+    HRESULT plugins([retval, out] IHTMLPluginsCollection **p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_COOKIEENABLED)]
+    HRESULT cookieEnabled([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_OPSPROFILE)]
+    HRESULT opsProfile([retval, out] IHTMLOpsProfile **p);
+
+    [id(DISPID_IOMNAVIGATOR_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [propget, id(DISPID_IOMNAVIGATOR_CPUCLASS)]
+    HRESULT cpuClass([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_SYSTEMLANGUAGE)]
+    HRESULT systemLanguage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_BROWSERLANGUAGE)]
+    HRESULT browserLanguage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_USERLANGUAGE)]
+    HRESULT userLanguage([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_PLATFORM)]
+    HRESULT platform([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_APPMINORVERSION)]
+    HRESULT appMinorVersion([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_CONNECTIONSPEED)]
+    HRESULT connectionSpeed([retval, out] long *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_ONLINE)]
+    HRESULT onLine([retval, out] VARIANT_BOOL *p);
+
+    [propget, id(DISPID_IOMNAVIGATOR_USERPROFILE)]
+    HRESULT userProfile([retval, out] IHTMLOpsProfile **p);
+}
+
+/*****************************************************************************
+ *    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_IHTMLLOCATION_HREF)]
+    HRESULT href([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    HRESULT protocol([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_HOST)]
+    HRESULT host([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_HOST)]
+    HRESULT host([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    HRESULT hostname([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_HOSTNAME)]
+    HRESULT hostname([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_PORT)]
+    HRESULT port([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_PORT)]
+    HRESULT port([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    HRESULT pathname([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_PATHNAME)]
+    HRESULT pathname([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_SEARCH)]
+    HRESULT search([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_SEARCH)]
+    HRESULT search([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLLOCATION_HASH)]
+    HRESULT hash([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLLOCATION_HASH)]
+    HRESULT hash([retval, out] BSTR *p);
+
+    [id(DISPID_IHTMLLOCATION_RELOAD)]
+    HRESULT reload([defaultvalue(0), in] VARIANT_BOOL flag);
+
+    [id(DISPID_IHTMLLOCATION_REPLACE)]
+    HRESULT replace([in] BSTR bstr);
+
+    [id(DISPID_IHTMLLOCATION_ASSIGN)]
+    HRESULT assign([in] BSTR bstr);
+
+    [id(DISPID_IHTMLLOCATION_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+}
+
+/*****************************************************************************
+ *    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_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_IHTMLEVENTOBJ_KEYCODE)]
+    HRESULT keyCode([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_BUTTON)]
+    HRESULT button([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_TYPE)]
+    HRESULT type([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_QUALIFIER)]
+    HRESULT qualifier([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_REASON)]
+    HRESULT reason([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_X)]
+    HRESULT x([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_Y)]
+    HRESULT y([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTX)]
+    HRESULT clientX([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_CLIENTY)]
+    HRESULT clientY([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETX)]
+    HRESULT offsetX([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_OFFSETY)]
+    HRESULT offsetY([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENX)]
+    HRESULT screenX([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_SCREENY)]
+    HRESULT screenY([retval, out] long *p);
+
+    [propget, id(DISPID_IHTMLEVENTOBJ_SRCFILTER)]
+    HRESULT srcFilter([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    IHTMLFramesCollection2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(332C4426-26CB-11D0-B483-00C04FD90119)
+]
+interface IHTMLFramesCollection2 : IDispatch
+{
+    [id(DISPID_IHTMLFRAMESCOLLECTION2_ITEM)]
+    HRESULT item(
+        [in] VARIANT *pvarIndex,
+        [retval, out] VARIANT *pvarResult);
+
+    [propget, id(DISPID_IHTMLFRAMESCOLLECTION2_LENGTH)]
+    HRESULT length([retval, out] long *p);
+}
+
+/*****************************************************************************
+ *    IHTMLScreen interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(3050f35C-98B5-11CF-BB82-00AA00BDCE0B)
+]
+interface IHTMLScreen : IDispatch
+{
+    [propget, id(DISPID_IHTMLSCREEN_COLORDEPTH)]
+    HRESULT colorDepth([retval, out] long *p);
+
+    [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);
+}
+
+/*****************************************************************************
+ *    IHTMLWindow2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(332C4427-26CB-11D0-B483-00C04FD90119)
+]
+interface IHTMLWindow2 : IHTMLFramesCollection2
+{
+    [propget, id(DISPID_IHTMLWINDOW2_FRAMES)]
+    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    HRESULT defaultStatus([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_DEFAULTSTATUS)]
+    HRESULT defaultStatus([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_STATUS)]
+    HRESULT status([in] 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);
+
+    [id(DISPID_IHTMLWINDOW2_CLEARTIMEOUT)]
+    HRESULT clearTimeout([in] long timerID);
+
+    [id(DISPID_IHTMLWINDOW2_ALERT)]
+    HRESULT alert([defaultvalue(""), in] BSTR message);
+
+    [id(DISPID_IHTMLWINDOW2_CONFIRM)]
+    HRESULT confirm(
+        [defaultvalue(""), in] BSTR message,
+        [retval, out] VARIANT_BOOL *confirmed);
+
+    [id(DISPID_IHTMLWINDOW2_PROMPT)]
+    HRESULT prompt(
+        [defaultvalue(""), in] BSTR message,
+        [defaultvalue("undefined"), in] BSTR defstr,
+        [retval, out] VARIANT *textdata);
+
+    [propget, id(DISPID_IHTMLWINDOW2_IMAGE)]
+    HRESULT Image([retval, out] IHTMLImageElementFactory **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_LOCATION)]
+    HRESULT location([retval, out] IHTMLLocation **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_HISTORY)]
+    HRESULT history([retval, out] IOmHistory **p);
+
+    [id(DISPID_IHTMLWINDOW2_CLOSE)]
+    HRESULT close();
+
+    [propput, id(DISPID_IHTMLWINDOW2_OPENER)]
+    HRESULT opener([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPENER)]
+    HRESULT opener([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAVIGATOR)]
+    HRESULT navigator([retval, out] IOmNavigator **p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_NAME)]
+    HRESULT name([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_NAME)]
+    HRESULT name([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_PARENT)]
+    HRESULT parent([retval, out] IHTMLWindow2 **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_IHTMLWINDOW2_SELF)]
+    HRESULT self([retval, out] IHTMLWindow2 **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_TOP)]
+    HRESULT top([retval, out] IHTMLWindow2 **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_WINDOW)]
+    HRESULT window([retval, out] IHTMLWindow2 **p);
+
+    [id(DISPID_IHTMLWINDOW2_NAVIGATE)]
+    HRESULT navigate([in] BSTR url);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
+    HRESULT onfocus([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONFOCUS)]
+    HRESULT onfocus([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONBLUR)]
+    HRESULT onblur([in] VARIANT v);
+
+    [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);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONRESIZE)]
+    HRESULT onresize([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
+    HRESULT onscroll([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_ONSCROLL)]
+    HRESULT onscroll([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_DOCUMENT)]
+    HRESULT document([retval, out] IHTMLDocument2 **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_EVENT)]
+    HRESULT event([retval, out] IHTMLEventObj **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2__NEWENUM)]
+    HRESULT _newEnum([retval, out] IUnknown **p);
+
+    [id(DISPID_IHTMLWINDOW2_SHOWMODALDIALOG)]
+    HRESULT showModalDialog(
+        [in] BSTR dialog,
+        [optional, in] VARIANT *varArgIn,
+        [optional, in] VARIANT *varOptions,
+        [retval, out] VARIANT *varArgOut);
+
+    [id(DISPID_IHTMLWINDOW2_SHOWHELP)]
+    HRESULT showHelp(
+        [in] BSTR helpURL,
+        [optional, in] VARIANT helpArg,
+        [defaultvalue(""), in] BSTR features);
+
+    [propget, id(DISPID_IHTMLWINDOW2_SCREEN)]
+    HRESULT screen([retval, out] IHTMLScreen **p);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OPTION)]
+    HRESULT Option([retval, out] IHTMLOptionElementFactory **p);
+
+    [id(DISPID_IHTMLWINDOW2_FOCUS)]
+    HRESULT focus();
+
+    [propget, id(DISPID_IHTMLWINDOW2_CLOSED)]
+    HRESULT closed([retval, out] VARIANT_BOOL *p);
+
+    [id(DISPID_IHTMLWINDOW2_BLUR)]
+    HRESULT blur();
+
+    [id(DISPID_IHTMLWINDOW2_SCROLL)]
+    HRESULT 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);
+
+    [id(DISPID_IHTMLWINDOW2_CLEARINTERVAL)]
+    HRESULT clearInterval([in] long timerID);
+
+    [propput, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    HRESULT offscreenBuffering([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLWINDOW2_OFFSCREENBUFFERING)]
+    HRESULT offscreenBuffering([retval, out] VARIANT *p);
+
+    [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);
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLBY)]
+    HRESULT scrollBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_SCROLLTO)]
+    HRESULT scrollTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVETO)]
+    HRESULT moveTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_MOVEBY)]
+    HRESULT moveBy([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZETO)]
+    HRESULT resizeTo([in] long x, [in] long y);
+
+    [id(DISPID_IHTMLWINDOW2_RESIZEBY)]
+    HRESULT resizeBy([in] long x, [in] long y);
+
+    [propget, id(DISPID_IHTMLWINDOW2_EXTERNAL)]
+    HRESULT external([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    IHTMLDocument interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(626FC520-A41E-11CF-A731-00A0C9082637)
+]
+interface IHTMLDocument : IDispatch
+{
+    [propget, id(DISPID_IHTMLDOCUMENT_SCRIPT)]
+    HRESULT Script([retval, out] IDispatch **p);
+}
+
+/*****************************************************************************
+ *    IHTMLDocument2 interface
+ */
+[
+    odl,
+    oleautomation,
+    dual,
+    uuid(332C4425-26CB-11D0-B483-00C04FD90119)
+]
+interface IHTMLDocument2 : IHTMLDocument
+{
+    [propget, id(DISPID_IHTMLDOCUMENT2_ALL)]
+    HRESULT all([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_BODY)]
+    HRESULT body([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ACTIVEELEMENT)]
+    HRESULT activeElement([retval, out] IHTMLElement **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_IMAGES)]
+    HRESULT images([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_APPLETS)]
+    HRESULT applets([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LINKS)]
+    HRESULT links([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FORMS)]
+    HRESULT forms([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ANCHORS)]
+    HRESULT anchors([retval, out] IHTMLElementCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_TITLE)]
+    HRESULT title([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_TITLE)]
+    HRESULT title([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SCRIPTS)]
+    HRESULT scripts([retval, out] IHTMLElementCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)]
+    HRESULT designMode([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DESIGNMODE)]
+    HRESULT designMode([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SELECTION)]
+    HRESULT selection([retval, out] IHTMLSelectionObject **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_READYSTATE)]
+     HRESULT readyState([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FRAMES)]
+    HRESULT frames([retval, out] IHTMLFramesCollection2 **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_EMBEDS)]
+    HRESULT embeds([retval, out] IHTMLElementCollection **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PLUGINS)]
+    HRESULT plugins([retval, out] IHTMLElementCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
+    HRESULT alinkColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ALINKCOLOR)]
+    HRESULT alinkColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
+    HRESULT bgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_BGCOLOR)]
+    HRESULT bgColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
+    HRESULT fgColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FGCOLOR)]
+    HRESULT fgColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
+    HRESULT linkColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LINKCOLOR)]
+    HRESULT linkColor([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
+    HRESULT vlinkColor([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_VLINKCOLOR)]
+    HRESULT vlinkColor([retval, out] VARIANT *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_REFERRER)]
+    HRESULT referrer([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LOCATION)]
+    HRESULT location([retval, out] IHTMLLocation **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_LASTMODIFIED)]
+    HRESULT lastModified([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_URL)]
+    HRESULT URL([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_URL)]
+    HRESULT URL([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
+    HRESULT domain([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DOMAIN)]
+    HRESULT domain([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
+    HRESULT cookie([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_COOKIE)]
+    HRESULT cookie([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_EXPANDO)]
+    HRESULT expando([in] VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_EXPANDO)]
+    HRESULT expando([retval, out] VARIANT_BOOL *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_CHARSET)]
+     HRESULT charset([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_CHARSET)]
+    HRESULT charset([retval, out] BSTR *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
+    HRESULT defaultCharset([in] BSTR v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_DEFAULTCHARSET)]
+    HRESULT defaultCharset([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_MIMETYPE)]
+    HRESULT mimeType([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILESIZE)]
+    HRESULT fileSize([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILECREATEDDATE)]
+    HRESULT fileCreatedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILEMODIFIEDDATE)]
+    HRESULT fileModifiedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_FILEUPDATEDDATE)]
+    HRESULT fileUpdatedDate([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_SECURITY)]
+    HRESULT security([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PROTOCOL)]
+    HRESULT protocol([retval, out] BSTR *p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_NAMEPROP)]
+     HRESULT nameProp([retval, out] BSTR *p);
+
+    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITE)]
+    HRESULT write([in] SAFEARRAY *psarray);
+
+    [vararg, id(DISPID_IHTMLDOCUMENT2_WRITELN)]
+    HRESULT writeln([in] SAFEARRAY *psarray);
+
+    [id(DISPID_IHTMLDOCUMENT2_OPEN)]
+    HRESULT open(
+        [defaultvalue("text/html"), in] BSTR url,
+        [optional, in] VARIANT name,
+        [optional, in] VARIANT features,
+        [optional, in] VARIANT replace,
+        [retval, out]  IDispatch **pomWindowResult);
+
+    [id(DISPID_IHTMLDOCUMENT2_CLOSE)]
+    HRESULT close();
+
+    [id(DISPID_IHTMLDOCUMENT2_CLEAR)]
+    HRESULT clear();
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSUPPORTED)]
+    HRESULT queryCommandSupported(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDENABLED)]
+    HRESULT queryCommandEnabled(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDSTATE)]
+    HRESULT queryCommandState(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDINDETERM)]
+    HRESULT queryCommandIndeterm(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDTEXT)]
+    HRESULT queryCommandText(
+        [in] BSTR cmdID,
+        [retval, out] BSTR *pcmdText);
+
+    [id(DISPID_IHTMLDOCUMENT2_QUERYCOMMANDVALUE)]
+    HRESULT queryCommandValue(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT *pcmdValue);
+
+    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMAND)]
+    HRESULT execCommand(
+        [in] BSTR cmdID,
+        [defaultvalue(0), in] VARIANT_BOOL showUI,
+        [optional, in] VARIANT value,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_EXECCOMMANDSHOWHELP)]
+    HRESULT execCommandShowHelp(
+        [in] BSTR cmdID,
+        [retval, out] VARIANT_BOOL *pfRet);
+
+    [id(DISPID_IHTMLDOCUMENT2_CREATEELEMENT)]
+     HRESULT createElement(
+        [in] BSTR eTag,
+        [retval, out] IHTMLElement **newElem);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONHELP)]
+    HRESULT onhelp([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONHELP)]
+    HRESULT onhelp([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONCLICK)]
+    HRESULT onclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONCLICK)]
+    HRESULT onclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)]
+    HRESULT ondblclick([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONDBLCLICK)]
+    HRESULT ondblclick([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)]
+    HRESULT onkeyup([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYUP)]
+    HRESULT onkeyup([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)]
+    HRESULT onkeydown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYDOWN)]
+    HRESULT onkeydown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)]
+     HRESULT onkeypress([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONKEYPRESS)]
+    HRESULT onkeypress([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)]
+    HRESULT onmouseup([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEUP)]
+    HRESULT onmouseup([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)]
+    HRESULT onmousedown([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN)]
+    HRESULT onmousedown([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)]
+    HRESULT onmousemove([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE)]
+    HRESULT onmousemove([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)]
+    HRESULT onmouseout([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOUT)]
+    HRESULT onmouseout([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)]
+    HRESULT onmouseover([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONMOUSEOVER)]
+    HRESULT onmouseover([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE)]
+    HRESULT onreadystatechange([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)]
+    HRESULT onafterupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE)]
+    HRESULT onafterupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)]
+    HRESULT onrowexit([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWEXIT)]
+    HRESULT onrowexit([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)]
+    HRESULT onrowenter([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONROWENTER)]
+    HRESULT onrowenter([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)]
+    HRESULT ondragstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONDRAGSTART)]
+    HRESULT ondragstart([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)]
+    HRESULT onselectstart([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONSELECTSTART)]
+    HRESULT onselectstart([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLDOCUMENT2_ELEMENTFROMPOINT)]
+    HRESULT elementFromPoint(
+        [in] long x,
+        [in] long y,
+        [retval, out] IHTMLElement **elementHit);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_PARENTWINDOW)]
+    HRESULT parentWindow([retval, out] IHTMLWindow2 **p);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_STYLESHEETS)]
+    HRESULT styleSheets([retval, out] IHTMLStyleSheetsCollection **p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE)]
+    HRESULT onbeforeupdate([retval, out] VARIANT *p);
+
+    [propput, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)]
+    HRESULT onerrorupdate([in] VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOCUMENT2_ONERRORUPDATE)]
+    HRESULT onerrorupdate([retval, out] VARIANT *p);
+
+    [id(DISPID_IHTMLDOCUMENT2_TOSTRING)]
+    HRESULT toString([retval, out] BSTR *String);
+
+    [id(DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)]
+    HRESULT createStyleSheet(
+        [defaultvalue(""), in] BSTR bstrHref,
+        [defaultvalue(-1), in] long lIndex,
+        [retval, out] IHTMLStyleSheet **ppnewStyleSheet);
+}
+
+/*****************************************************************************
+ *    HTMLDocument coclass
+ */
+[
+    uuid(25336920-03F9-11cf-8FD0-00AA00686F13)
+]
+coclass HTMLDocument
+{
+    [default]         interface IHTMLDocument2;
+    [source, default] dispinterface HTMLDocumentEvents;
+};