with GNATCOM.Dispinterface;

package MSHTML.IHTMLDocument2_Interface is

   type IHTMLDocument2_Type is
     new GNATCOM.Dispinterface.Dispinterface_Type with null record;

   procedure Initialize (This : in out IHTMLDocument2_Type);

   function Pointer (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLDocument2;

   procedure Attach (This    : in out IHTMLDocument2_Type;
                     Pointer : in     Pointer_To_IHTMLDocument2);

   function Get_Script
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.Pointer_To_IDispatch;

   function Get_all
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   function Get_body
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElement;

   function Get_activeElement
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElement;

   function Get_images
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   function Get_applets
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   function Get_links
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   function Get_forms
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   function Get_anchors
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   procedure Put_title
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_title
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_scripts
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   procedure Put_designMode
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_designMode
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_selection
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLSelectionObject;

   function Get_readyState
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_frames
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLFramesCollection2;

   function Get_embeds
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   function Get_plugins
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLElementCollection;

   procedure Put_alinkColor
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_alinkColor
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_bgColor
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_bgColor
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_fgColor
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_fgColor
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_linkColor
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_linkColor
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_vlinkColor
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_vlinkColor
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   function Get_referrer
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_location
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLLocation;

   function Get_lastModified
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   procedure Put_url
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_url
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   procedure Put_domain
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_domain
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   procedure Put_cookie
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_cookie
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   procedure Put_expando
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT_BOOL);

   function Get_expando
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT_BOOL;

   procedure Put_charset
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_charset
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   procedure Put_defaultCharset
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.BSTR;
      Free : Boolean := True);

   function Get_defaultCharset
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_mimeType
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_fileSize
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_fileCreatedDate
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_fileModifiedDate
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_fileUpdatedDate
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_security
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_protocol
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function Get_nameProp
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   procedure write
     (This    : IHTMLDocument2_Type;
      psarray : GNATCOM.Types.Pointer_To_SAFEARRAY);

   procedure writeln
     (This    : IHTMLDocument2_Type;
      psarray : GNATCOM.Types.Pointer_To_SAFEARRAY);

   function open
     (This            : IHTMLDocument2_Type;
      url             : GNATCOM.Types.BSTR;
      name            : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      features        : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      replace         : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      Free            : Boolean := True)
     return GNATCOM.Types.Pointer_To_IDispatch;

   procedure close
     (This : IHTMLDocument2_Type);

   procedure clear
     (This : IHTMLDocument2_Type);

   function queryCommandSupported
     (This  : IHTMLDocument2_Type;
      cmdID : GNATCOM.Types.BSTR;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

   function queryCommandEnabled
     (This  : IHTMLDocument2_Type;
      cmdID : GNATCOM.Types.BSTR;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

   function queryCommandState
     (This  : IHTMLDocument2_Type;
      cmdID : GNATCOM.Types.BSTR;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

   function queryCommandIndeterm
     (This  : IHTMLDocument2_Type;
      cmdID : GNATCOM.Types.BSTR;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

   function queryCommandText
     (This     : IHTMLDocument2_Type;
      cmdID    : GNATCOM.Types.BSTR;
      Free     : Boolean := True)
     return GNATCOM.Types.BSTR;

   function queryCommandValue
     (This      : IHTMLDocument2_Type;
      cmdID     : GNATCOM.Types.BSTR;
      Free      : Boolean := True)
     return GNATCOM.Types.VARIANT;

   function execCommand
     (This   : IHTMLDocument2_Type;
      cmdID  : GNATCOM.Types.BSTR;
      showUI : GNATCOM.Types.VARIANT_BOOL;
      value  : GNATCOM.Types.VARIANT  := GNATCOM.Types.VARIANT_MISSING;
      Free   : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

   function execCommandShowHelp
     (This  : IHTMLDocument2_Type;
      cmdID : GNATCOM.Types.BSTR;
      Free  : Boolean := True)
     return GNATCOM.Types.VARIANT_BOOL;

   function createElement
     (This    : IHTMLDocument2_Type;
      eTag    : GNATCOM.Types.BSTR;
      Free    : Boolean := True)
     return Pointer_To_IHTMLElement;

   procedure Put_onhelp
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onhelp
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onclick
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onclick
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_ondblclick
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_ondblclick
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onkeyup
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onkeyup
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onkeydown
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onkeydown
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onkeypress
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onkeypress
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onmouseup
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onmouseup
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onmousedown
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onmousedown
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onmousemove
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onmousemove
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onmouseout
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onmouseout
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onmouseover
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onmouseover
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onreadystatechange
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onreadystatechange
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onafterupdate
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onafterupdate
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onrowexit
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onrowexit
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onrowenter
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onrowenter
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_ondragstart
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_ondragstart
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onselectstart
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onselectstart
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   function elementFromPoint
     (This       : IHTMLDocument2_Type;
      x          : Interfaces.C.long;
      y          : Interfaces.C.long)
     return Pointer_To_IHTMLElement;

   function Get_parentWindow
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLWindow2;

   function Get_styleSheets
     (This : IHTMLDocument2_Type)
     return Pointer_To_IHTMLStyleSheetsCollection;

   procedure Put_onbeforeupdate
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onbeforeupdate
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   procedure Put_onerrorupdate
     (This : IHTMLDocument2_Type;
      p    : GNATCOM.Types.VARIANT;
      Free : Boolean := True);

   function Get_onerrorupdate
     (This : IHTMLDocument2_Type)
     return GNATCOM.Types.VARIANT;

   function toString
     (This   : IHTMLDocument2_Type)
     return GNATCOM.Types.BSTR;

   function createStyleSheet
     (This            : IHTMLDocument2_Type;
      bstrHref        : GNATCOM.Types.BSTR;
      lIndex          : Interfaces.C.long;
      Free            : Boolean := True)
     return Pointer_To_IHTMLStyleSheet;

end MSHTML.IHTMLDocument2_Interface;

