scroll = function($el, args) {

        var that = this;

        that.$el = $el;
        that.el = $el[0];

        that.$parent = that.$el.parent();
        that.state = {};

        // Default options
        that.args = $.extend({

            /**
             * mousewheel speed
             * @type {Number}
             */
            wheelSpeed: 20

            /**
             * Mousedown pressing delay on scrollbar
             * @type {Number}
             */
            , pressDelay: 200

            /**
             * Timer of update layout(0 | false ==> do not check)
             * @type {Number}
             */
            , watch: 200

            /**
             * Direction, default to auto
             * @type {String}
             */
            , dir: ""

            /**
             * Auto hide scrollbar when mouseleave
             * @type {String|Bool|Number}
             * @example: true, 1, "1" ==> true | false, 0, "0" ==> false
             */
            , autoHide: true

            /**
             * Add a activate class when pressing or dragging
             * @type {String}
             */
            , activateClass: "mod-scroll--activate"

            /**
             * Add a custom class, like: "mod-scroll--black"
             * @type {String}
             */
            , customClass: ""

            /**
             * Prevent default Wheel event
             * @type {Boolean}
             */
            , preventDefaultWheel: false

            /**
             * The suffix-classes of controller elements
             * @type {Object}
             */
            , controller: {
                barX: "bar-x"
                , barY: "bar-y"
                , thumbX: "thumb-x"
                , thumbY: "thumb-y"
            }

            // , bounds

            /**
             * Event API
             * onInit
             * onScroll
             *
             * onWheel
             *
             * onStartPress
             * onEndPress
             *
             * onStartDrag
             * onEndDrag
             */
        }, args);

        that.init();
    }
Constructor
@param {[type]} el [description]
@param {[type]} args [description]
@return {[type]} [description]