code: function Draggable(el, options) {
        this.options = $.extend({}, defaults, options);
        this.$document = $(document);
        this.$container = $(el);
        this.$dragitems = $(this.options.items, this.$container);
        this.is_dragging = false;
        this.player_min_left = 0 + this.options.offset_left;
        this.id = uniqId();
        this.ns = '.gridster-draggable-' + this.id;
        this.init();
      }
docs: Basic drag implementation for DOM elements inside a container.
  Provide start/stop/drag callbacks.
  
  @class Draggable
  @param {HTMLElement} el The HTMLelement that contains all the widgets
  to be dragged.
  @param {Object} [options] An Object with all options you want to
  overwrite:
  @param {HTMLElement|String} [options.items] Define who will
  be the draggable items. Can be a CSS Selector String or a
  collection of HTMLElements.
  @param {Number} [options.distance] Distance in pixels after mousedown
  the mouse must move before dragging should start.
  @param {Boolean} [options.limit] Constrains dragging to the width of
  the container
  @param {Object|Function} [options.ignore_dragging] Array of node names
  that sould not trigger dragging, by default is `['INPUT', 'TEXTAREA',
  'SELECT', 'BUTTON']`. If a function is used return true to ignore dragging.
  @param {offset_left} [options.offset_left] Offset added to the item
  that is being dragged.
  @param {Number} [options.drag] Executes a callback when the mouse is
  moved during the dragging.
  @param {Number} [options.start] Executes a callback when the drag
  starts.
  @param {Number} [options.stop] Executes a callback when the drag stops.
  @return {Object} Returns `el`.
  @constructor