/*
 * 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;

/*****************************************************************************
 *    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);
}

[
    uuid(3050F1C5-98B5-11CF-BB82-00AA00BDCE0B)
]
library MSHTML
{

/*****************************************************************************
 *    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);
}

/*****************************************************************************
 *    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;
};

} /* library MSHTML */
