   #     element.position()             // -> x: NNN, y:NNN
   #     element.position(x:NNN, y:NNN) // -> element self
   #     element.position(x:NNN)        // -> element self
+  #     element.position(x, y)         // -> element self
+  #     element.position(x, null)      // -> element self
+  #     element.position(null, y)      // -> element self
   #
-  # @param {Object} absolute position x:NNN, y:NNN
+  # @param {Object|Number} absolute position x:NNN, y:NNN or NNN x-position
+  # @param {Number} y-position in case of a two numbers call
   # @return {Element|Object} this element of it's absolute position
   #
   position: (position) ->

        y: rect.top  + scrolls.y - html.clientTop }

    else
      # TODO: implement me
      return this

  #
  # Checks if current element overlaps with the target position
  #
  # @param {Object} x:NNN, y:NNN position
  # @return {Boolean} check result
  #
  overlaps: (target) ->
    pos  = this.position()
    size = this.size()

    target.x >= pos.x and target.x <= (pos.x + size.x) and
    target.y >= pos.y and target.y <= (pos.y + size.y)

      node = node.previousSibling

    index

# private

# converts arguments into a standard x-y hash
Element_dimentions_hash = (args) ->
  hash = {}

  if args.length is 1
    hash = args[0]
  else
    hash.x = args[0] unless args[0] is null
    hash.y = args[1] unless args[1] is null

  hash