# Module dom

Declaration of the Document Object Model for the JavaScript backend.

# Types

    TEventHandlers* {.importc.} = object of TObject
      onabort*: proc (event: ref TEvent) {.nimcall.}
      onblur*: proc (event: ref TEvent) {.nimcall.}
      onchange*: proc (event: ref TEvent) {.nimcall.}
      onclick*: proc (event: ref TEvent) {.nimcall.}
      ondblclick*: proc (event: ref TEvent) {.nimcall.}
      onerror*: proc (event: ref TEvent) {.nimcall.}
      onfocus*: proc (event: ref TEvent) {.nimcall.}
      onkeydown*: proc (event: ref TEvent) {.nimcall.}
      onkeypress*: proc (event: ref TEvent) {.nimcall.}
      onkeyup*: proc (event: ref TEvent) {.nimcall.}
      onload*: proc (event: ref TEvent) {.nimcall.}
      onmousedown*: proc (event: ref TEvent) {.nimcall.}
      onmousemove*: proc (event: ref TEvent) {.nimcall.}
      onmouseout*: proc (event: ref TEvent) {.nimcall.}
      onmouseover*: proc (event: ref TEvent) {.nimcall.}
      onmouseup*: proc (event: ref TEvent) {.nimcall.}
      onreset*: proc (event: ref TEvent) {.nimcall.}
      onselect*: proc (event: ref TEvent) {.nimcall.}
      onsubmit*: proc (event: ref TEvent) {.nimcall.}
      onunload*: proc (event: ref TEvent) {.nimcall.}

    TWindow* {.importc.} = object of TEventHandlers
      document*: ref TDocument
      event*: ref TEvent
      history*: ref THistory
      location*: ref TLocation
      closed*: bool
      defaultStatus*: cstring
      innerHeight*, innerWidth*: int
      locationbar*: ref TLocationBar
      menubar*: ref TMenuBar
      name*: cstring
      outerHeight*, outerWidth*: int
      pageXOffset*, pageYOffset*: int
      personalbar*: ref TPersonalBar
      scrollbars*: ref TScrollBars
      statusbar*: ref TStatusBar
      status*: cstring
      toolbar*: ref TToolBar
      alert*: proc (msg: cstring) {.nimcall.}
      back*: proc () {.nimcall.}
      blur*: proc () {.nimcall.}
      captureEvents*: proc (eventMask: int) {.nimcall.}
      clearInterval*: proc (interval: ref TInterval) {.nimcall.}
      clearTimeout*: proc (timeout: ref TTimeOut) {.nimcall.}
      close*: proc () {.nimcall.}
      confirm*: proc (msg: cstring): bool {.nimcall.}
      disableExternalCapture*: proc () {.nimcall.}
      enableExternalCapture*: proc () {.nimcall.}
      find*: proc (text: cstring; caseSensitive = false; backwards = false) {.
          nimcall.}
      focus*: proc () {.nimcall.}
      forward*: proc () {.nimcall.}
      handleEvent*: proc (e: ref TEvent) {.nimcall.}
      home*: proc () {.nimcall.}
      moveBy*: proc (x, y: int) {.nimcall.}
      moveTo*: proc (x, y: int) {.nimcall.}
      open*: proc (uri, windowname: cstring; properties: cstring = nil): ref TWindow {.
          nimcall.}
      print*: proc () {.nimcall.}
      prompt*: proc (text, default: cstring): cstring {.nimcall.}
      releaseEvents*: proc (eventMask: int) {.nimcall.}
      resizeBy*: proc (x, y: int) {.nimcall.}
      resizeTo*: proc (x, y: int) {.nimcall.}
      routeEvent*: proc (event: ref TEvent) {.nimcall.}
      scrollBy*: proc (x, y: int) {.nimcall.}
      scrollTo*: proc (x, y: int) {.nimcall.}
      setInterval*: proc (code: cstring; pause: int): ref TInterval {.nimcall.}
      setTimeout*: proc (code: cstring; pause: int): ref TTimeOut {.nimcall.}
      stop*: proc () {.nimcall.}
      frames*: seq[TFrame]

    TFrame* {.importc.} = object of TWindow

    TDocument* {.importc.} = object of TEventHandlers
      alinkColor*: cstring
      bgColor*: cstring
      charset*: cstring
      cookie*: cstring
      defaultCharset*: cstring
      fgColor*: cstring
      lastModified*: cstring
      linkColor*: cstring
      referrer*: cstring
      title*: cstring
      URL*: cstring
      vlinkColor*: cstring
      captureEvents*: proc (eventMask: int) {.nimcall.}
      createAttribute*: proc (identifier: cstring): ref TNode {.nimcall.}
      createElement*: proc (identifier: cstring): ref TNode {.nimcall.}
      createTextNode*: proc (identifier: cstring): ref TNode {.nimcall.}
      getElementById*: proc (id: cstring): ref TNode {.nimcall.}
      getElementsByName*: proc (name: cstring): seq[ref TNode] {.nimcall.}
      getElementsByTagName*: proc (name: cstring): seq[ref TNode] {.nimcall.}
      getSelection*: proc (): cstring {.nimcall.}
      handleEvent*: proc (event: ref TEvent) {.nimcall.}
      open*: proc () {.nimcall.}
      releaseEvents*: proc (eventMask: int) {.nimcall.}
      routeEvent*: proc (event: ref TEvent) {.nimcall.}
      write*: proc (text: cstring) {.nimcall.}
      writeln*: proc (text: cstring) {.nimcall.}
      anchors*: seq[ref TAnchor]
      forms*: seq[ref TForm]
      images*: seq[ref TImage]
      applets*: seq[ref TApplet]
      embeds*: seq[ref TEmbed]
      links*: seq[ref TLink]

    TLink* {.importc.} = object of TObject
      name*: cstring
      target*: cstring
      text*: cstring
      x*: int
      y*: int

    TEmbed* {.importc.} = object of TObject
      height*: int
      hspace*: int
      name*: cstring
      src*: cstring
      width*: int
      `type`*: cstring
      vspace*: int
      play*: proc () {.nimcall.}
      stop*: proc () {.nimcall.}

    TAnchor* {.importc.} = object of TObject
      name*: cstring
      text*: cstring
      x*, y*: int

    TApplet* {.importc.} = object of TObject

    TElement* {.importc.} = object of TEventHandlers
      checked*: bool
      defaultChecked*: bool
      defaultValue*: cstring
      disabled*: bool
      form*: ref TForm
      name*: cstring
      readOnly*: bool
      `type`*: cstring
      value*: cstring
      blur*: proc () {.nimcall.}
      click*: proc () {.nimcall.}
      focus*: proc () {.nimcall.}
      handleEvent*: proc (event: ref TEvent) {.nimcall.}
      select*: proc () {.nimcall.}
      options*: seq[ref TOption]

    TOption* {.importc.} = object of TObject
      defaultSelected*: bool
      selected*: bool
      selectedIndex*: int
      text*: cstring
      value*: cstring

    TForm* {.importc.} = object of TEventHandlers
      action*: cstring
      encoding*: cstring
      `method`*: cstring
      name*: cstring
      target*: cstring
      handleEvent*: proc (event: ref TEvent) {.nimcall.}
      reset*: proc () {.nimcall.}
      submit*: proc () {.nimcall.}
      elements*: seq[ref TElement]

    TImage* {.importc.} = object of TEventHandlers
      border*: int
      complete*: bool
      height*: int
      hspace*: int
      lowsrc*: cstring
      name*: cstring
      src*: cstring
      vspace*: int
      width*: int
      handleEvent*: proc (event: ref TEvent) {.nimcall.}

    TNodeType* = enum
      ElementNode = 1, AttributeNode, TextNode, CDATANode, EntityRefNode,
      EntityNode, ProcessingInstructionNode, CommentNode, DocumentNode,
      DocumentTypeNode, DocumentFragmentNode, NotationNode

    TNode* {.importc.} = object of TObject
      attributes*: seq[ref TNode]
      childNodes*: seq[ref TNode]
      data*: cstring
      firstChild*: ref TNode
      lastChild*: ref TNode
      nextSibling*: ref TNode
      nodeName*: cstring
      nodeType*: TNodeType
      nodeValue*: cstring
      parentNode*: ref TNode
      previousSibling*: ref TNode
      appendChild*: proc (child: ref TNode) {.nimcall.}
      appendData*: proc (data: cstring) {.nimcall.}
      cloneNode*: proc (copyContent: bool) {.nimcall.}
      deleteData*: proc (start, len: int) {.nimcall.}
      getAttribute*: proc (attr: cstring): cstring {.nimcall.}
      getAttributeNode*: proc (attr: cstring): ref TNode {.nimcall.}
      getElementsByTagName*: proc (): seq[ref TNode] {.nimcall.}
      hasChildNodes*: proc (): bool {.nimcall.}
      innerHTML*: cstring
      insertBefore*: proc (newNode, before: ref TNode) {.nimcall.}
      insertData*: proc (position: int; data: cstring) {.nimcall.}
      removeAttribute*: proc (attr: cstring) {.nimcall.}
      removeAttributeNode*: proc (attr: ref TNode) {.nimcall.}
      removeChild*: proc (child: ref TNode) {.nimcall.}
      replaceChild*: proc (newNode, oldNode: ref TNode) {.nimcall.}
      replaceData*: proc (start, len: int; text: cstring) {.nimcall.}
      setAttribute*: proc (name, value: cstring) {.nimcall.}
      setAttributeNode*: proc (attr: ref TNode) {.nimcall.}
      style*: ref TStyle

    TStyle* {.importc.} = object of TObject
      background*: cstring
      backgroundAttachment*: cstring
      backgroundColor*: cstring
      backgroundImage*: cstring
      backgroundPosition*: cstring
      backgroundRepeat*: cstring
      border*: cstring
      borderBottom*: cstring
      borderBottomColor*: cstring
      borderBottomStyle*: cstring
      borderBottomWidth*: cstring
      borderColor*: cstring
      borderLeft*: cstring
      borderLeftColor*: cstring
      borderLeftStyle*: cstring
      borderLeftWidth*: cstring
      borderRight*: cstring
      borderRightColor*: cstring
      borderRightStyle*: cstring
      borderRightWidth*: cstring
      borderStyle*: cstring
      borderTop*: cstring
      borderTopColor*: cstring
      borderTopStyle*: cstring
      borderTopWidth*: cstring
      borderWidth*: cstring
      bottom*: cstring
      captionSide*: cstring
      clear*: cstring
      clip*: cstring
      color*: cstring
      cursor*: cstring
      direction*: cstring
      display*: cstring
      emptyCells*: cstring
      cssFloat*: cstring
      font*: cstring
      fontFamily*: cstring
      fontSize*: cstring
      fontStretch*: cstring
      fontStyle*: cstring
      fontVariant*: cstring
      fontWeight*: cstring
      height*: cstring
      left*: cstring
      letterSpacing*: cstring
      lineHeight*: cstring
      listStyle*: cstring
      listStyleImage*: cstring
      listStylePosition*: cstring
      listStyleType*: cstring
      margin*: cstring
      marginBottom*: cstring
      marginLeft*: cstring
      marginRight*: cstring
      marginTop*: cstring
      maxHeight*: cstring
      maxWidth*: cstring
      minHeight*: cstring
      minWidth*: cstring
      overflow*: cstring
      padding*: cstring
      paddingBottom*: cstring
      paddingLeft*: cstring
      paddingRight*: cstring
      paddingTop*: cstring
      pageBreakAfter*: cstring
      pageBreakBefore*: cstring
      position*: cstring
      right*: cstring
      scrollbar3dLightColor*: cstring
      scrollbarArrowColor*: cstring
      scrollbarBaseColor*: cstring
      scrollbarDarkshadowColor*: cstring
      scrollbarFaceColor*: cstring
      scrollbarHighlightColor*: cstring
      scrollbarShadowColor*: cstring
      scrollbarTrackColor*: cstring
      tableLayout*: cstring
      textAlign*: cstring
      textDecoration*: cstring
      textIndent*: cstring
      textTransform*: cstring
      top*: cstring
      verticalAlign*: cstring
      visibility*: cstring
      width*: cstring
      wordSpacing*: cstring
      zIndex*: int
      getAttribute*: proc (attr: cstring; caseSensitive = false): cstring {.nimcall.}
      removeAttribute*: proc (attr: cstring; caseSensitive = false) {.nimcall.}
      setAttribute*: proc (attr, value: cstring; caseSensitive = false) {.nimcall.}

    TEvent* {.importc.} = object of TObject
      altKey*, ctrlKey*, shiftKey*: bool
      button*: int
      clientX*, clientY*: int
      keyCode*: int
      layerX*, layerY*: int
      modifiers*: int
      ALT_MASK*, CONTROL_MASK*, SHIFT_MASK*, META_MASK*: int
      offsetX*, offsetY*: int
      pageX*, pageY*: int
      screenX*, screenY*: int
      which*: int
      `type`*: cstring
      x*, y*: int
      ABORT*: int
      BLUR*: int
      CHANGE*: int
      CLICK*: int
      DBLCLICK*: int
      DRAGDROP*: int
      ERROR*: int
      FOCUS*: int
      KEYDOWN*: int
      KEYPRESS*: int
      KEYUP*: int
      LOAD*: int
      MOUSEDOWN*: int
      MOUSEMOVE*: int
      MOUSEOUT*: int
      MOUSEOVER*: int
      MOUSEUP*: int
      MOVE*: int
      RESET*: int
      RESIZE*: int
      SELECT*: int
      SUBMIT*: int
      UNLOAD*: int

    TLocation* {.importc.} = object of TObject
      hash*: cstring
      host*: cstring
      hostname*: cstring
      href*: cstring
      pathname*: cstring
      port*: cstring
      protocol*: cstring
      search*: cstring
      reload*: proc () {.nimcall.}
      replace*: proc (s: cstring) {.nimcall.}

    THistory* {.importc.} = object of TObject
      length*: int
      back*: proc () {.nimcall.}
      forward*: proc () {.nimcall.}
      go*: proc (pagesToJump: int) {.nimcall.}

    TNavigator* {.importc.} = object of TObject
      appCodeName*: cstring
      appName*: cstring
      appVersion*: cstring
      cookieEnabled*: bool
      language*: cstring
      platform*: cstring
      userAgent*: cstring
      javaEnabled*: proc (): bool {.nimcall.}
      mimeTypes*: seq[ref TMimeType]

    TPlugin* {.importc.} = object of TObject
      description*: cstring
      filename*: cstring
      name*: cstring

    TMimeType* {.importc.} = object of TObject
      description*: cstring
      enabledPlugin*: ref TPlugin
      suffixes*: seq[cstring]
      `type`*: cstring

    TLocationBar* {.importc.} = object of TObject
      visible*: bool

    TMenuBar* = TLocationBar

    TPersonalBar* = TLocationBar

    TScrollBars* = TLocationBar

    TToolBar* = TLocationBar

    TStatusBar* = TLocationBar

    TScreen* {.importc.} = object of TObject
      availHeight*: int
      availWidth*: int
      colorDepth*: int
      height*: int
      pixelDepth*: int
      width*: int

    TTimeOut* {.importc.} = object of TObject

    TInterval* {.importc.} = object of TObject

# Vars

    window* {.importc, nodecl.}: ref TWindow

    document* {.importc, nodecl.}: ref TDocument

    navigator* {.importc, nodecl.}: ref TNavigator

    screen* {.importc, nodecl.}: ref TScreen

# Procs

    proc decodeURI*(uri: cstring): cstring {.importc, nodecl.}

    proc encodeURI*(uri: cstring): cstring {.importc, nodecl.}

    proc escape*(uri: cstring): cstring {.importc, nodecl.}

    proc unescape*(uri: cstring): cstring {.importc, nodecl.}

    proc decodeURIComponent*(uri: cstring): cstring {.importc, nodecl.}

    proc encodeURIComponent*(uri: cstring): cstring {.importc, nodecl.}

    proc isFinite*(x: biggestFloat): bool {.importc, nodecl.}

    proc isNaN*(x: biggestFloat): bool {.importc, nodecl.}

    proc parseFloat*(s: cstring): biggestFloat {.importc, nodecl.}

    proc parseInt*(s: cstring): int {.importc, nodecl.}

Generated: 2013-05-21 09:55:04 UTC