#ifndef INCLUDE_URLNODE_H
#define INCLUDE_URLNODE_H

struct URLNode
{
    struct MinNode un_node;

    STRPTR url;
    STRPTR title;
    STRPTR name;
    STRPTR password;

    /* First pointers */
    // Downloaded datas
    STRPTR type;
    STRPTR etag;
    // Links
    STRPTR extensions;
    STRPTR types;

    /* Then datas so I save all togheter */
    ULONG  flags;
    ULONG  htmlflags;

    // Downloaded datas
    struct DateStamp date;
    ULONG size;
    ULONG status;

    // Links
    ULONG  depth;

    // html settings

    //For downloading
    LONG maxsize;

    // Update...
    // ?

    //Buffers
    char buf_size[8];
    char buf_date[10];
};


struct URLData
{
    ULONG  flags;
    ULONG htmlflags;

    // Downloaded datas
    struct DateStamp date;
    ULONG size;
    ULONG status;

    // Links
    ULONG  depth;

    //For downloading
    LONG maxsize;

    // Update...
    // ?
};

// Status flags
#define ST_CLEAR            1
#define ST_GRABBING         2
#define ST_GRABBED          3
#define ST_DECODING         4
#define ST_EDITING          5
#define ST_INTERRUPT        6

#define ST_ERROR            255

#define is_st_free(a) (a == ST_CLEAR     || a == ST_GRABBED || \
                       a == ST_INTERRUPT || a == ST_ERROR)

// URLNode flags
#define URLN_SAMESERVER         (1 << 1)
#define URLN_EXTERNSERVER       (1 << 2)
#define URLN_FORWARD            (1 << 3)
#define URLN_BACKWARD           (1 << 4)

// HTML flags

#define HTML_HTML_20            (1 << 1)
#define HTML_HTML_32            (1 << 2)
#define HTML_HTML_40            (1 << 3)

#define HTML_HTML_IE            (1 << 4)
#define HTML_HTML_NS            (1 << 5)
#define HTML_HTML_OTHER         (1 << 6)

#define HTML_HTML_INIMG         (1 << 7)
#define HTML_HTML_INBACK        (1 << 8)
#define HTML_HTML_INAPPL        (1 << 9)
#define HTML_HTML_INOBJ         (1 << 10)

#define HTML_HTML_AMIGA         ( HTML_HTML_32 | \
                                  HTML_HTML_NS | \
                                  HTML_HTML_OTHER | \
                                  HTML_HTML_INAPPL | \
                                  HTML_HTML_INOBJ )

// HTML TAGS

//#define HTML_BASE_HREF          (1 << 1)
#define HTML_A_HREF             (1 << 2)
#define HTML_LINK_HREF          (1 << 3)
#define HTML_IMG_HREF           (1 << 4)
#define HTML_IMG_SRC            (1 << 5)
#define HTML_IMG_LONGDESC       (1 << 6)
#define HTML_IMG_LOWSRC         (1 << 7)
#define HTML_IMG_DYNSRC         (1 << 8)
#define HTML_BODY_BACKGROUND    (1 << 9)
#define HTML_APPLET_CODE        (1 << 10)
#define HTML_APPLET_OBJECT      (1 << 11)
#define HTML_APPLET_ARCHIVE     (1 << 12)
#define HTML_APPLET_SRC         (1 << 13)
#define HTML_OBJECT_DATA        (1 << 14)
#define HTML_OBJECT_CLASSID     (1 << 15)
#define HTML_OBJECT_ARCHIVE     (1 << 16)
#define HTML_OBJECT_CODE        (1 << 17)
#define HTML_EMBED_SRC          (1 << 18)
#define HTML_EMBED_PLUGINPAGE   (1 << 19)
#define HTML_EMBED_PLUGINURL    (1 << 20)
#define HTML_FRAME_SRC          (1 << 21)
#define HTML_FRAME_LONGDESC     (1 << 22)
#define HTML_IFRAME_SRC         (1 << 23)
#define HTML_IFRAME_LONGDESC    (1 << 24)
#define HTML_LAYER_SRC          (1 << 25)
#define HTML_LAYER_BACKGROUND   (1 << 26)
#define HTML_ILAYER_SRC         (1 << 27)
#define HTML_ILAYER_BACKGROUND  (1 << 28)
#define HTML_INPUT_SRC          (1 << 29)
#define HTML_INPUT_DYNSRC       (1 << 30)
#define HTML_INPUT_LOWSRC       (1 << 31)
#define HTML_SCRIPT_SRC         (1 << 32)
//second ULONG

#define HTML_TABLE_BACKGROUND   (1 << 1)
#define HTML_AREA_HREF          (1 << 2)
#define HTML_FIG_SRC            (1 << 3)
#define HTML_OVERLAY_SRC        (1 << 4)
#define HTML_BGSOUND_SRC        (1 << 5)
#define HTML_BLOCKQUOTE_CITE    (1 << 6)
#define HTML_Q_CITE             (1 << 7)
#define HTML_DEL_CITE           (1 << 8)
#define HTML_INS_CITE           (1 << 9)

/// "HTML general tags"

#define HTML_20_TAGS  ( HTML_A_HREF             | \
                        HTML_LINK_HREF          | \
                        HTML_IMG_SRC            | \
                        HTML_INPUT_SRC          )

#define HTML_20_TAGS2   0



#define HTML_32_TAGS  ( HTML_A_HREF             | \
                        HTML_LINK_HREF          | \
                        HTML_IMG_SRC            | \
                        HTML_BODY_BACKGROUND    | \
                        HTML_APPLET_CODE        | \
                        HTML_INPUT_SRC          | \
                        HTML_SCRIPT_SRC )


#define HTML_32_TAGS2 ( HTML_AREA_HREF )



#define HTML_40_TAGS  ( HTML_IMG_LONGDESC    | \
                        HTML_APPLET_OBJECT   | \
                        HTML_APPLET_ARCHIVE  | \
                        HTML_OBJECT_DATA     | \
                        HTML_OBJECT_CLASSID  | \
                        HTML_OBJECT_ARCHIVE  | \
                        HTML_FRAME_SRC       | \
                        HTML_FRAME_LONGDESC  | \
                        HTML_IFRAME_SRC      | \
                        HTML_IFRAME_LONGDESC | \
                        HTML_SCRIPT_SRC )

#define HTML_40_TAGS2 ( HTML_BLOCKQUOTE_CITE | \
                        HTML_Q_CITE          | \
                        HTML_DEL_CITE        | \
                        HTML_INS_CITE )

#define HTML_NS_TAGS  ( HTML_IMG_LOWSRC        | \
                        HTML_APPLET_OBJECT     | \
                        HTML_OBJECT_DATA       | \
                        HTML_OBJECT_CLASSID    | \
                        HTML_OBJECT_ARCHIVE    | \
                        HTML_EMBED_SRC         | \
                        HTML_EMBED_PLUGINPAGE  | \
                        HTML_EMBED_PLUGINURL   | \
                        HTML_FRAME_SRC         | \
                        HTML_LAYER_SRC         | \
                        HTML_LAYER_BACKGROUND  | \
                        HTML_ILAYER_SRC        | \
                        HTML_ILAYER_BACKGROUND | \
                        HTML_SCRIPT_SRC )

#define HTML_NS_TAGS2   0

#define HTML_IE_TAGS  ( HTML_IMG_DYNSRC     | \
                        HTML_IMG_LOWSRC     | \
                        HTML_APPLET_SRC     | \
                        HTML_OBJECT_DATA    | \
                        HTML_OBJECT_CLASSID | \
                        HTML_OBJECT_CODE    | \
                        HTML_EMBED_SRC      | \
                        HTML_FRAME_SRC      | \
                        HTML_IFRAME_SRC     | \
                        HTML_INPUT_SRC      | \
                        HTML_INPUT_DYNSRC   | \
                        HTML_INPUT_LOWSRC   | \
                        HTML_SCRIPT_SRC )

#define HTML_IE_TAGS2    ( HTML_TABLE_BACKGROUND | \
                           HTML_BGSOUND_SRC )



#define HTML_OTHER_TAGS    HTML_IMG_HREF

#define HTML_OTHER_TAGS2 ( HTML_FIG_SRC  | \
                           HTML_OVERLAY_SRC )


#define HTML_IMG_TAGS    ( HTML_IMG_HREF     | \
                           HTML_IMG_SRC      | \
                           HTML_IMG_LONGDESC | \
                           HTML_IMG_LOWSRC   | \
                           HTML_IMG_DYNSRC   | \
                           HTML_INPUT_SRC    | \
                           HTML_INPUT_DYNSRC | \
                           HTML_INPUT_LOWSRC )

#define HTML_IMG_TAGS2   0


#define HTML_BACK_TAGS   HTML_BODY_BACKGROUND
#define HTML_BACK_TAGS2  HTML_TABLE_BACKGROUND


#define HTML_APPLET_TAGS ( HTML_APPLET_CODE    | \
                           HTML_APPLET_OBJECT  | \
                           HTML_APPLET_ARCHIVE | \
                           HTML_APPLET_SRC )

#define HTML_APPLET_TAGS2 0


#define HTML_OBJECT_TAGS   ( HTML_OBJECT_DATA    | \
                             HTML_OBJECT_CLASSID | \
                             HTML_OBJECT_ARCHIVE | \
                             HTML_OBJECT_CODE )

#define HTML_OBJECT_TAGS2  0

///

#endif
