docs: function(element) {
      var that = this;
      this.element = element;
      this.signalTap = new Listeners();
      this.signalLong = new Listeners();
      this.signalTouchstart = new Listeners();
      this.signalTouchend = new Listeners();
      this.signalMove = windowMove;
      this._touch = 0; // 0 = Nothing,  1 = Mouse, 2 = Touch.
      this._onMouseDown = function(evt) {
          if (that._touch) return;
          currentTouchListener = that;
          that._touch = 1;
          evt.preventDefault();
          evt.stopPropagation();
          var rect = that.element.getBoundingClientRect();
          var arg = {
              x: evt.pageX - rect.left,
              y: evt.pageY - rect.top,
              rect: rect
          };
          console.info("[tfw.touch-event] arg=...", arg);
          that.signalTouchstart.fire(arg);
      };
      this._onTouchstart = function(evt) {
          if (that._touch) return;
          currentTouchListener = that;
          that._touch = 2;
          evt.preventDefault();
          evt.stopPropagation();
          var rect = that.element.getBoundingClientRect();
          var arg = {
              x: evt.pageX - rect.left,
              y: evt.pageY - rect.top,
              rect: rect
          };
          console.info("[tfw.touch-event] arg=...", arg);
          that.signalTouchstart.fire(arg);
      };
      element.addEventListener("mousedown", this._onMouseDown, false);
  }