diff --git a/include/mshtmdid.h b/include/mshtmdid.h
index 23ffe9c..583d124 100644
--- a/include/mshtmdid.h
+++ b/include/mshtmdid.h
@@ -1227,6 +1227,11 @@
 #define DISPID_IHTMLUNIQUENAME_UNIQUENUMBER  DISPID_ELEMENT+54
 #define DISPID_IHTMLUNIQUENAME_UNIQUEID      DISPID_ELEMENT+55
 
+/* IHTMLDatabinding */
+#define DISPID_IHTMLDATABINDING_DATAFLD       DISPID_ELEMENT+21
+#define DISPID_IHTMLDATABINDING_DATASRC       DISPID_ELEMENT+22
+#define DISPID_IHTMLDATABINDING_DATAFORMATAS  DISPID_ELEMENT+23
+
 /* IHTMLStyle */
 #define DISPID_IHTMLSTYLE_PIXELTOP                    DISPID_STYLE
 #define DISPID_IHTMLSTYLE_PIXELLEFT                   (DISPID_STYLE+1)
@@ -1879,6 +1884,10 @@
 #define DISPID_IHTMLINPUTELEMENT_HEIGHT           STDPROPID_XOBJ_HEIGHT
 #define DISPID_IHTMLINPUTELEMENT_START            DISPID_INPUT+20
 
+/* IHTMLInputElement2 */
+#define DISPID_IHTMLINPUTELEMENT2_ACCEPT  DISPID_INPUT+22
+#define DISPID_IHTMLINPUTELEMENT2_USEMAP  DISPID_INPUT+23
+
 /* IHTMLInputTextElement */
 #define DISPID_IHTMLINPUTTEXTELEMENT_TYPE             DISPID_INPUT
 #define DISPID_IHTMLINPUTTEXTELEMENT_VALUE            DISPID_A_VALUE
diff --git a/include/mshtml.idl b/include/mshtml.idl
index 6eb4b5a..1a33bf5 100644
--- a/include/mshtml.idl
+++ b/include/mshtml.idl
@@ -3887,6 +3887,1053 @@
     HRESULT createTextRange([retval, out] IHTMLTxtRange **range);
 }
 
+[
+    hidden,
+    uuid(3050f57d-98b5-11cf-bb82-00aa00bdce0b)
+]
+dispinterface DispHTMLInputElement
+{
+properties:
+methods:
+    [id(DISPID_IHTMLELEMENT_SETATTRIBUTE)]
+    void setAttribute(
+            [in] BSTR strAttributeName,
+            [in] VARIANT AttributeValue,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_GETATTRIBUTE)]
+    VARIANT getAttribute(
+             [in] BSTR strAttributeName,
+             [in, defaultvalue(0)] LONG lFlags);
+
+    [id(DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)]
+    VARIANT_BOOL removeAttribute(
+            [in] BSTR strAttributeName,
+            [in, defaultvalue(1)] LONG lFlags);
+
+    [propput, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    void className(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_CLASSNAME), bindable]
+    BSTR className();
+
+    [propput, id(DISPID_IHTMLELEMENT_ID), bindable]
+    void id(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ID), bindable]
+    BSTR id();
+
+    [propget, id(DISPID_IHTMLELEMENT_TAGNAME)]
+    BSTR tagName();
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTELEMENT)]
+    IHTMLElement *parentElement();
+
+    [propget, id(DISPID_IHTMLELEMENT_STYLE), nonbrowsable]
+    IHTMLStyle *style();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    void onhelp(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable]
+    VARIANT onhelp();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    void onclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable]
+    VARIANT onclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    void ondblclick(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable]
+    VARIANT ondblclick();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    void onkeydown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable]
+    VARIANT onkeydown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    void onkeyup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable]
+    VARIANT onkeyup();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    void onkeypress(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable]
+    VARIANT onkeypress();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    void onmouseout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable]
+    VARIANT onmouseout();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    void onmouseover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable]
+    VARIANT onmouseover();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    void onmousemove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable]
+    VARIANT onmousemove();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    void onmousedown(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable]
+    VARIANT onmousedown();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    void onmouseup(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable]
+    VARIANT onmouseup();
+
+    [propget, id(DISPID_IHTMLELEMENT_DOCUMENT)]
+    IDispatch *document();
+
+    [propput, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    void title(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_TITLE), displaybind, bindable]
+    BSTR title();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    void language(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable]
+    BSTR language();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    void onselectstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable]
+    VARIANT onselectstart();
+
+    [id(DISPID_IHTMLELEMENT_SCROLLINTOVIEW)]
+    void scrollIntoView([in, optional] VARIANT varargStart);
+
+    [id(DISPID_IHTMLELEMENT_CONTAINS)]
+    VARIANT_BOOL contains([in] IHTMLElement *pChild);
+
+    [propget, id(DISPID_IHTMLELEMENT_SOURCEINDEX), bindable]
+    long sourceIndex();
+
+    [propget, id(DISPID_IHTMLELEMENT_RECORDNUMBER)]
+    VARIANT recordNumber();
+
+    [propput, id(DISPID_IHTMLELEMENT_LANG)]
+    void lang(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_LANG)]
+    BSTR lang();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETLEFT)]
+    long offsetLeft();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETTOP)]
+    long offsetTop();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETWIDTH)]
+    long offsetWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETHEIGHT)]
+    long offsetHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT_OFFSETPARENT)]
+    IHTMLElement *offsetParent();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    void innerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERHTML)]
+    BSTR innerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    void innerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_INNERTEXT)]
+    BSTR innerText();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    void outerHTML(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERHTML)]
+    BSTR outerHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    void outerText(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT_OUTERTEXT)]
+    BSTR outerText();
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTHTML)]
+    void insertAdjacentHTML(
+            [in] BSTR where,
+            [in] BSTR html);
+
+    [id(DISPID_IHTMLELEMENT_INSERTADJACENTTEXT)]
+    void insertAdjacentText(
+            [in] BSTR where,
+            [in] BSTR text);
+
+    [propget, id(DISPID_IHTMLELEMENT_PARENTTEXTEDIT)]
+    IHTMLElement *parentTextEdit();
+
+    [propget, id(DISPID_IHTMLELEMENT_ISTEXTEDIT)]
+    VARIANT_BOOL isTextEdit();
+
+    [id(DISPID_IHTMLELEMENT_CLICK)]
+    void click();
+
+    [propget, id(DISPID_IHTMLELEMENT_FILTERS)]
+    IHTMLFiltersCollection *filters();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    void ondragstart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDRAGSTART), displaybind, bindable]
+    VARIANT ondragstart();
+
+    [id(DISPID_IHTMLELEMENT_TOSTRING)]
+    BSTR toString();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    void onbeforeupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable]
+    VARIANT onbeforeupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    void onafterupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable]
+    VARIANT onafterupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    void onerrorupdate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable]
+    VARIANT onerrorupdate();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    void onrowexit(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable]
+    VARIANT onrowexit();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    void onrowenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable]
+    VARIANT onrowenter();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    void ondatasetchanged(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable]
+    VARIANT ondatasetchanged();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    void ondataavailable(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable]
+    VARIANT ondataavailable();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    void ondatasetcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable]
+    VARIANT ondatasetcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    void onfilterchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable]
+    VARIANT onfilterchange();
+
+    [propget, id(DISPID_IHTMLELEMENT_CHILDREN)]
+    IDispatch *children();
+
+    [propget, id(DISPID_IHTMLELEMENT_ALL)]
+    IDispatch *all();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCOPENAME)]
+    BSTR scopeName();
+
+    [id(DISPID_IHTMLELEMENT2_SETCAPTURE)]
+    void setCapture([in, defaultvalue(-1)] VARIANT_BOOL containerCapture);
+
+    [id(DISPID_IHTMLELEMENT2_RELEASECAPTURE)]
+    void releaseCapture();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    void onlosecapture(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONLOSECAPTURE), displaybind, bindable]
+    VARIANT onlosecapture();
+
+    [id(DISPID_IHTMLELEMENT2_COMPONENTFROMPOINT)]
+    BSTR componentFromPoint(
+            [in] long x,
+            [in] long y);
+
+    [id(DISPID_IHTMLELEMENT2_DOSCROLL)]
+    void doScroll([in, optional] VARIANT component);
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    void onscroll(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONSCROLL), displaybind, bindable]
+    VARIANT onscroll();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    void ondrag(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAG), displaybind, bindable]
+    VARIANT ondrag();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    void ondragend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGEND), displaybind, bindable]
+    VARIANT ondragend();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    void ondragenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGENTER), displaybind, bindable]
+    VARIANT ondragenter();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    void ondragover(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGOVER), displaybind, bindable]
+    VARIANT ondragover();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    void ondragleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDRAGLEAVE), displaybind, bindable]
+    VARIANT ondragleave();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    void ondrop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONDROP), displaybind, bindable]
+    VARIANT ondrop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    void onbeforecut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECUT), displaybind, bindable]
+    VARIANT onbeforecut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    void oncut(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCUT), displaybind, bindable]
+    VARIANT oncut();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    void onbeforecopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFORECOPY), displaybind, bindable]
+    VARIANT onbeforecopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    void oncopy(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCOPY), displaybind, bindable]
+    VARIANT oncopy();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    void onbeforepaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREPASTE), displaybind, bindable]
+    VARIANT onbeforepaste();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    void onpaste(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPASTE), displaybind, bindable]
+    VARIANT onpaste();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CURRENTSTYLE), nonbrowsable]
+    IHTMLCurrentStyle *currentStyle();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    void onpropertychange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONPROPERTYCHANGE), displaybind, bindable]
+    VARIANT onpropertychange();
+
+    [id(DISPID_IHTMLELEMENT2_GETCLIENTRECTS)]
+    IHTMLRectCollection *getClientRects();
+
+    [id(DISPID_IHTMLELEMENT2_GETBOUNDINGCLIENTRECT)]
+    IHTMLRect *getBoundingClientRect();
+
+    [id(DISPID_IHTMLELEMENT2_SETEXPRESSION)]
+    void setExpression(
+            [in] BSTR propname,
+            [in] BSTR expression,
+            [in, defaultvalue("")] BSTR language);
+
+    [id(DISPID_IHTMLELEMENT2_GETEXPRESSION)]
+    VARIANT getExpression([in] BSTR propname);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEEXPRESSION)]
+    VARIANT_BOOL removeExpression([in] BSTR propname);
+
+    [propput, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    void tabIndex(short v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TABINDEX), displaybind, bindable]
+    short tabIndex();
+
+    [id(DISPID_IHTMLELEMENT2_FOCUS)]
+    void focus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    void accessKey(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ACCESSKEY), displaybind, bindable]
+    BSTR accessKey();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    void onblur(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBLUR), displaybind, bindable]
+    VARIANT onblur();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    void onfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONFOCUS), displaybind, bindable]
+    VARIANT onfocus();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    void onresize(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONRESIZE), displaybind, bindable]
+    VARIANT onresize();
+
+    [id(DISPID_IHTMLELEMENT2_BLUR)]
+    void blur();
+
+    [id(DISPID_IHTMLELEMENT2_ADDFILTER)]
+    void addFilter([in] IUnknown *pUnk);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEFILTER)]
+    void removeFilter([in] IUnknown *pUnk);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTHEIGHT), displaybind, bindable]
+    long clientHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTWIDTH), displaybind, bindable]
+    long clientWidth();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTTOP), displaybind, bindable]
+    long clientTop();
+
+    [propget, id(DISPID_IHTMLELEMENT2_CLIENTLEFT), displaybind, bindable]
+    long clientLeft();
+
+    [id(DISPID_IHTMLELEMENT2_ATTACHEVENT)]
+    VARIANT_BOOL attachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [id(DISPID_IHTMLELEMENT2_DETACHEVENT)]
+    void detachEvent(
+            [in] BSTR event,
+            [in] IDispatch *pDisp);
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATE)]
+    VARIANT readyState();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    void onreadystatechange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONREADYSTATECHANGE), displaybind, bindable]
+    VARIANT onreadystatechange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    void onrowsdelete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSDELETE), displaybind, bindable]
+    VARIANT onrowsdelete();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+    void onrowsinserted(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONROWSINSERTED), displaybind, bindable]
+     VARIANT onrowsinserted();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+     void oncellchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCELLCHANGE), displaybind, bindable]
+    VARIANT oncellchange();
+
+    [propput, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    void dir(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_DIR), displaybind, bindable]
+    BSTR dir();
+
+    [id(DISPID_IHTMLELEMENT2_CREATECONTROLRANGE)]
+    IDispatch *createControlRange();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLHEIGHT), displaybind, bindable]
+    long scrollHeight();
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLWIDTH), displaybind, bindable]
+    long scrollWidth();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    void scrollTop(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLTOP), displaybind, bindable]
+    long scrollTop();
+
+    [propput, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    void scrollLeft(long v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_SCROLLLEFT), displaybind, bindable]
+    long scrollLeft();
+
+    [id(DISPID_IHTMLELEMENT2_CLEARATTRIBUTES)]
+    void clearAttributes();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    void oncontextmenu(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONCONTEXTMENU), displaybind, bindable]
+    VARIANT oncontextmenu();
+
+    [id(DISPID_IHTMLELEMENT2_INSERTADJACENTELEMENT)]
+    IHTMLElement *insertAdjacentElement(
+            [in] BSTR where,
+            [in] IHTMLElement *insertedElement);
+
+    [id(DISPID_IHTMLELEMENT2_APPLYELEMENT)]
+    IHTMLElement *applyElement(
+            [in] IHTMLElement *apply,
+            [in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_GETADJACENTTEXT)]
+    BSTR getAdjacentText([in] BSTR where);
+
+    [id(DISPID_IHTMLELEMENT2_REPLACEADJACENTTEXT)]
+    BSTR replaceAdjacentText(
+            [in] BSTR where,
+            [in] BSTR newText);
+
+    [propget, id(DISPID_IHTMLELEMENT2_CANHAVECHILDREN)]
+    VARIANT_BOOL canHaveChildren();
+
+    [id(DISPID_IHTMLELEMENT2_ADDBEHAVIOR)]
+    long addBehavior(
+            [in] BSTR bstrUrl,
+            [in, optional] VARIANT *pvarFactory);
+
+    [id(DISPID_IHTMLELEMENT2_REMOVEBEHAVIOR)]
+    VARIANT_BOOL removeBehavior([in] long cookie);
+
+    [propget, id(DISPID_IHTMLELEMENT2_RUNTIMESTYLE), nonbrowsable]
+    IHTMLStyle *runtimeStyle();
+
+    [propget, id(DISPID_IHTMLELEMENT2_BEHAVIORURNS)]
+    IDispatch *behaviorUrns();
+
+    [propput, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    void tagUrn(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_TAGURN)]
+    BSTR tagUrn();
+
+    [propput, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    void onbeforeeditfocus(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), displaybind, bindable]
+    VARIANT onbeforeeditfocus();
+
+    [propget, id(DISPID_IHTMLELEMENT2_READYSTATEVALUE), hidden, restricted]
+    long readyStateValue();
+
+    [id(DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)]
+    IHTMLElementCollection *getElementsByTagName([in] BSTR v);
+
+    [id(DISPID_IHTMLELEMENT3_MERGEATTRIBUTES)]
+    void mergeAttributes(
+            [in] IHTMLElement *mergeThis,
+            [in, optional] VARIANT *pvarFlags);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISMULTILINE)]
+    VARIANT_BOOL isMultiLine();
+
+    [propget, id(DISPID_IHTMLELEMENT3_CANHAVEHTML)]
+    VARIANT_BOOL canHaveHTML();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    void onlayoutcomplete(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable]
+    VARIANT onlayoutcomplete();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    void onpage(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONPAGE), displaybind, bindable]
+    VARIANT onpage();
+
+    [propput, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    void inflateBlock(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_INFLATEBLOCK), hidden, restricted, nonbrowsable]
+    VARIANT_BOOL inflateBlock();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    void onbeforedeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), displaybind, bindable]
+    VARIANT onbeforedeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_SETACTIVE)]
+    void setActive();
+
+    [propput, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    void contentEditable(BSTR v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_CONTENTEDITABLE), displaybind, bindable]
+    BSTR contentEditable();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISCONTENTEDITABLE)]
+    VARIANT_BOOL isContentEditable();
+
+    [propput, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    void hideFocus(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_HIDEFOCUS), displaybind, bindable]
+    VARIANT_BOOL hideFocus();
+
+    [propput, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    void disabled(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_DISABLED), displaybind, bindable]
+    VARIANT_BOOL disabled();
+
+    [propget, id(DISPID_IHTMLELEMENT3_ISDISABLED)]
+    VARIANT_BOOL isDisabled();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    void onmove(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable]
+    VARIANT onmove();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    void oncontrolselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable]
+    VARIANT oncontrolselect();
+
+    [id(DISPID_IHTMLELEMENT3_FIREEVENT)]
+    VARIANT_BOOL fireEvent(
+            [in] BSTR bstrEventName,
+            [in, optional] VARIANT *pvarEventObject);
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    void onresizestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZESTART), displaybind, bindable]
+    VARIANT onresizestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    void onresizeend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONRESIZEEND), displaybind, bindable]
+    VARIANT onresizeend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    void onmovestart(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVESTART), displaybind, bindable]
+    VARIANT onmovestart();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    void onmoveend(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOVEEND), displaybind, bindable]
+    VARIANT onmoveend();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    void onmouseenter(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSEENTER), displaybind, bindable]
+    VARIANT onmouseenter();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    void onmouseleave(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONMOUSELEAVE), displaybind, bindable]
+    VARIANT onmouseleave();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    void onactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONACTIVATE), displaybind, bindable]
+    VARIANT onactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    void ondeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT3_ONDEACTIVATE), displaybind, bindable]
+    VARIANT ondeactivate();
+
+    [id(DISPID_IHTMLELEMENT3_DRAGDROP)]
+    VARIANT_BOOL dragDrop();
+
+    [propget, id(DISPID_IHTMLELEMENT3_GLYPHMODE), hidden, restricted, nonbrowsable]
+    LONG glyphMode();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    void onmousewheel(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable]
+    VARIANT onmousewheel();
+
+    [id(DISPID_IHTMLELEMENT4_NORMALIZE)]
+    void normalize();
+
+    [id(DISPID_IHTMLELEMENT4_GETATTRIBUTENODE)]
+    IHTMLDOMAttribute *getAttributeNode([in] BSTR bstrname);
+
+    [id(DISPID_IHTMLELEMENT4_SETATTRIBUTENODE)]
+    IHTMLDOMAttribute *setAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [id(DISPID_IHTMLELEMENT4_REMOVEATTRIBUTENODE)]
+    IHTMLDOMAttribute *removeAttributeNode([in] IHTMLDOMAttribute *pattr);
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    void onbeforeactivate(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), displaybind, bindable]
+    VARIANT onbeforeactivate();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    void onfocusin(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable]
+    VARIANT onfocusin();
+
+    [propput, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    void onfocusout(VARIANT v);
+
+    [propget, id(DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable]
+    VARIANT onfocusout();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden]
+    long uniqueNumber();
+
+    [propget, id(DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden]
+    BSTR uniqueID();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODETYPE)]
+    long nodeType();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PARENTNODE)]
+    IHTMLDOMNode *parentNode();
+
+    [id(DISPID_IHTMLDOMNODE_HASCHILDNODES)]
+    VARIANT_BOOL hasChildNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_CHILDNODES)]
+    IDispatch *childNodes();
+
+    [propget, id(DISPID_IHTMLDOMNODE_ATTRIBUTES)]
+    IDispatch *attributes();
+
+    [id(DISPID_IHTMLDOMNODE_INSERTBEFORE)]
+    IHTMLDOMNode *insertBefore(
+            [in] IHTMLDOMNode *newChild,
+            [in, optional] VARIANT refChild);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVECHILD)]
+    IHTMLDOMNode *removeChild([in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACECHILD)]
+    IHTMLDOMNode *replaceChild(
+            [in] IHTMLDOMNode *newChild,
+            [in] IHTMLDOMNode *oldChild);
+
+    [id(DISPID_IHTMLDOMNODE_CLONENODE)]
+    IHTMLDOMNode *cloneNode([in] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_REMOVENODE)]
+    IHTMLDOMNode *removeNode([in, defaultvalue(0)] VARIANT_BOOL fDeep);
+
+    [id(DISPID_IHTMLDOMNODE_SWAPNODE)]
+    IHTMLDOMNode *swapNode([in] IHTMLDOMNode *otherNode);
+
+    [id(DISPID_IHTMLDOMNODE_REPLACENODE)]
+    IHTMLDOMNode *replaceNode([in] IHTMLDOMNode *replacement);
+
+    [id(DISPID_IHTMLDOMNODE_APPENDCHILD)]
+    IHTMLDOMNode *appendChild([in] IHTMLDOMNode *newChild);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODENAME)]
+    BSTR nodeName();
+
+    [propput, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    void nodeValue(VARIANT v);
+
+    [propget, id(DISPID_IHTMLDOMNODE_NODEVALUE)]
+    VARIANT nodeValue();
+
+    [propget, id(DISPID_IHTMLDOMNODE_FIRSTCHILD)]
+    IHTMLDOMNode *firstChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_LASTCHILD)]
+    IHTMLDOMNode *lastChild();
+
+    [propget, id(DISPID_IHTMLDOMNODE_PREVIOUSSIBLING)]
+    IHTMLDOMNode *previousSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE_NEXTSIBLING)]
+    IHTMLDOMNode *nextSibling();
+
+    [propget, id(DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)]
+    IDispatch *ownerDocument();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    void dataFld(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFLD)]
+    BSTR dataFld();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    void dataSrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATASRC)]
+    BSTR dataSrc();
+
+    [propput, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    void dataFormatAs(BSTR v);
+
+    [propget, id(DISPID_IHTMLDATABINDING_DATAFORMATAS)]
+    BSTR dataFormatAs();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    void type(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_TYPE)]
+    BSTR type();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    void value(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VALUE), displaybind, bindable]
+    BSTR value();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    void name(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_NAME), displaybind, bindable]
+    BSTR name();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    void status(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_STATUS)]
+    VARIANT_BOOL status();
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_FORM)]
+    IHTMLFormElement *form();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    void size(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SIZE), displaybind, bindable]
+    long size();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    void maxLength(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_MAXLENGTH), displaybind, bindable]
+    long maxLength();
+
+    [id(DISPID_IHTMLINPUTELEMENT_SELECT)]
+    void select();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    void onchange(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONCHANGE), displaybind, bindable]
+    VARIANT onchange();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    void onselect(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONSELECT), displaybind, bindable]
+    VARIANT onselect();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    void defaultValue(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden]
+    BSTR defaultValue();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    void readOnly(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_READONLY), displaybind, bindable]
+    VARIANT_BOOL readOnly();
+
+    [id(DISPID_IHTMLINPUTELEMENT_CREATETEXTRANGE)]
+    IHTMLTxtRange *createTextRange();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    void indeterminate(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_INDETERMINATE), bindable]
+    VARIANT_BOOL indeterminate();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    void defaultChecked(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DEFAULTCHECKED), bindable]
+    VARIANT_BOOL defaultChecked();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    void checked(VARIANT_BOOL v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_CHECKED), bindable]
+    VARIANT_BOOL checked();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    void border(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_BORDER), displaybind, bindable]
+    VARIANT border();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    void vspace(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VSPACE), displaybind, bindable]
+    long vspace();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    void hspace(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HSPACE), displaybind, bindable]
+    long hspace();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    void alt(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALT), displaybind, bindable]
+    BSTR alt();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    void src(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_SRC), displaybind, bindable]
+    BSTR src();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    void lowsrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOWSRC), displaybind, bindable]
+    BSTR lowsrc();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    void vrml(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_VRML), displaybind, bindable]
+    BSTR vrml();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    void dynsrc(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_DYNSRC), displaybind, bindable]
+    BSTR dynsrc();
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_COMPLETE)]
+    VARIANT_BOOL complete();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    void loop(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_LOOP), displaybind, bindable]
+    VARIANT loop();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    void align(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ALIGN), displaybind, bindable]
+    BSTR align();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    void onload(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONLOAD), displaybind, bindable]
+    VARIANT onload();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    void onerror(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONERROR), displaybind, bindable]
+    VARIANT onerror();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    void onabort(VARIANT v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_ONABORT), displaybind, bindable]
+    VARIANT onabort();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    void width(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_WIDTH)]
+    long width();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    void height(long v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_HEIGHT)]
+    long height();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    void start(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT_START), displaybind, bindable]
+    BSTR start();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
+    void accept(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable]
+    BSTR accept();
+
+    [propput, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
+    void useMap(BSTR v);
+
+    [propget, id(DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable]
+    BSTR useMap();
+}
+
 /*****************************************************************************
  *    IHTMLTextAreaElement interface
  */
