       if eventNames.test(eventName) and "function" is typeof cb
         @on eventName, cb
 
+  setEmptyDragState: ->
+    @dragState =
+      containment : null     # a parent KDView
+      handle      : null     # a parent KDView or a child selector
+      axis        : null     # a String 'x' or 'y' or 'diagonal'
+      direction   : 
+        current   :
+          x       : null     # a String 'left' or 'right'
+          y       : null     # a String 'up'   or 'down'
+        global    :
+          x       : null     # a String 'left' or 'right'
+          y       : null     # a String 'up'   or 'down'
+      position    : 
+        relative  :
+          x       : 0        # a Number
+          y       : 0        # a Number
+        initial   :
+          x       : 0        # a Number
+          y       : 0        # a Number
+        global    :          
+          x       : 0        # a Number
+          y       : 0        # a Number
+      meta        :
+        top       : 0        # a Number
+        right     : 0        # a Number
+        bottom    : 0        # a Number
+        left      : 0        # a Number
+
+
   setDraggable:(options = {})->
-
     options = {} if options is yes
 
-    @dragState =
-      containment : options.containment             # a parent KDView
-      handle      : options.handle                  # a parent KDView or a child selector
-      axis        : options.axis                    # a String 'x' or 'y' or 'diagonal'
-
+    @setEmptyDragState()
     handle = if options.handle and options.handle instanceof KDView then handle else @
 
     handle.on "mousedown", (event)=>

        return if $(event.target).closest(options.handle).length is 0

      @dragIsAllowed = yes

      top    = parseInt (@$()[0].style.top or 0), 10
      right  = parseInt (@$()[0].style.right or 0), 10
      bottom = parseInt (@$()[0].style.bottom or 0), 10
      left   = parseInt (@$()[0].style.left or 0), 10

      @dragState.startX     = event.pageX
      @dragState.startY     = event.pageY
      @dragState.top        = top
      @dragState.right      = right
      @dragState.bottom     = bottom
      @dragState.left       = left

      @dragState.directionX = unless isNaN left then "left" else "right"
      @dragState.directionY = unless isNaN top  then "top"  else "bottom"

      @getSingleton('windowController').setDragView @
      @emit "DragStarted", event, @dragState

    @setInstanceVariables options
    @defaultInit options,data

    @setClass 'kddraggable' if o.draggable

    if location.hostname is "localhost"
      @listenTo
        KDEventTypes        : "click"
