src/cm/media/js/lib/yui/yui_3.10.3/build/scrollview-base/scrollview-base-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('scrollview-base', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * The scrollview-base module provides a basic ScrollView Widget, without scrollbar indicators
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * @module scrollview
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @submodule scrollview-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 // Local vars
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
var getClassName = Y.ClassNameManager.getClassName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    DOCUMENT = Y.config.doc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    IE = Y.UA.ie,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    NATIVE_TRANSITIONS = Y.Transition.useNative,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    vendorPrefix = Y.Transition._VENDOR_PREFIX, // Todo: This is a private property, and alternative approaches should be investigated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    SCROLLVIEW = 'scrollview',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    CLASS_NAMES = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
        vertical: getClassName(SCROLLVIEW, 'vert'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        horizontal: getClassName(SCROLLVIEW, 'horiz')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    EV_SCROLL_END = 'scrollEnd',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    FLICK = 'flick',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    DRAG = 'drag',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    MOUSEWHEEL = 'mousewheel',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    UI = 'ui',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    TOP = 'top',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
    LEFT = 'left',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    PX = 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    AXIS = 'axis',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    SCROLL_Y = 'scrollY',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    SCROLL_X = 'scrollX',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    BOUNCE = 'bounce',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    DISABLED = 'disabled',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    DECELERATION = 'deceleration',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    DIM_X = 'x',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    DIM_Y = 'y',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    BOUNDING_BOX = 'boundingBox',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    CONTENT_BOX = 'contentBox',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    GESTURE_MOVE = 'gesturemove',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    START = 'start',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    END = 'end',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    EMPTY = '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    ZERO = '0s',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    SNAP_DURATION = 'snapDuration',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    SNAP_EASING = 'snapEasing',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    EASING = 'easing',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    FRAME_DURATION = 'frameDuration',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    BOUNCE_RANGE = 'bounceRange',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    _constrain = function (val, min, max) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        return Math.min(Math.max(val, min), max);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
 * ScrollView provides a scrollable widget, supporting flick gestures,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
 * across both touch and mouse based devices.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
 * @class ScrollView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
 * @param config {Object} Object literal with initial attribute values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
 * @extends Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
function ScrollView() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    ScrollView.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
Y.ScrollView = Y.extend(ScrollView, Y.Widget, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    // *** Y.ScrollView prototype
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * Flag driving whether or not we should try and force H/W acceleration when transforming. Currently enabled by default for Webkit.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * Used by the _transform method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     * @property _forceHWTransforms
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
    _forceHWTransforms: Y.UA.webkit ? true : false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
     * <p>Used to control whether or not ScrollView's internal
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
     * gesturemovestart, gesturemove and gesturemoveend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
     * event listeners should preventDefault. The value is an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
     * object, with "start", "move" and "end" properties used to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
     * specify which events should preventDefault and which shouldn't:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
     * <pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
     * {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
     *    start: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
     *    move: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
     *    end: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
     * }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
     * </pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
     * <p>The default values are set up in order to prevent panning,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
     * on touch devices, while allowing click listeners on elements inside
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
     * the ScrollView to be notified as expected.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
     * @property _prevent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    _prevent: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
        start: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        move: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        end: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
     * Contains the distance (postive or negative) in pixels by which
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
     *  the scrollview was last scrolled. This is useful when setting up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
     *  click listeners on the scrollview content, which on mouse based
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
     *  devices are always fired, even after a drag/flick.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
     * <p>Touch based devices don't currently fire a click event,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
     *  if the finger has been moved (beyond a threshold) so this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
     *  check isn't required, if working in a purely touch based environment</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     * @property lastScrolledAmt
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
     * @public
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
     * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    lastScrolledAmt: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
     * Internal state, defines the minimum amount that the scrollview can be scrolled along the X axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
     * @property _minScrollX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
     * @type number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
    _minScrollX: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
     * Internal state, defines the maximum amount that the scrollview can be scrolled along the X axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
     * @property _maxScrollX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
     * @type number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
    _maxScrollX: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
     * Internal state, defines the minimum amount that the scrollview can be scrolled along the Y axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
     * @property _minScrollY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
     * @type number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    _minScrollY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
     * Internal state, defines the maximum amount that the scrollview can be scrolled along the Y axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
     * @property _maxScrollY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
     * @type number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    _maxScrollY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
     * Designated initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
     * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
     * @param {config} Configuration object for the plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    initializer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        var sv = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        // Cache these values, since they aren't going to change.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        sv._bb = sv.get(BOUNDING_BOX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
        sv._cb = sv.get(CONTENT_BOX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        // Cache some attributes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        sv._cAxis = sv.get(AXIS);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
        sv._cBounce = sv.get(BOUNCE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        sv._cBounceRange = sv.get(BOUNCE_RANGE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
        sv._cDeceleration = sv.get(DECELERATION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        sv._cFrameDuration = sv.get(FRAME_DURATION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
     * bindUI implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
     * Hooks up events for the widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
     * @method bindUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    bindUI: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        var sv = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        // Bind interaction listers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        sv._bindFlick(sv.get(FLICK));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
        sv._bindDrag(sv.get(DRAG));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        sv._bindMousewheel(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
        // Bind change events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
        sv._bindAttrs();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
        // IE SELECT HACK. See if we can do this non-natively and in the gesture for a future release.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
        if (IE) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
            sv._fixIESelect(sv._bb, sv._cb);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        // Set any deprecated static properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        if (ScrollView.SNAP_DURATION) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            sv.set(SNAP_DURATION, ScrollView.SNAP_DURATION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        if (ScrollView.SNAP_EASING) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            sv.set(SNAP_EASING, ScrollView.SNAP_EASING);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        if (ScrollView.EASING) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            sv.set(EASING, ScrollView.EASING);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
        if (ScrollView.FRAME_STEP) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
            sv.set(FRAME_DURATION, ScrollView.FRAME_STEP);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
        if (ScrollView.BOUNCE_RANGE) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
            sv.set(BOUNCE_RANGE, ScrollView.BOUNCE_RANGE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
        // Recalculate dimension properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
        // TODO: This should be throttled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
        // Y.one(WINDOW).after('resize', sv._afterDimChange, sv);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
     * Bind event listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
     * @method _bindAttrs
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
    _bindAttrs: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            scrollChangeHandler = sv._afterScrollChange,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
            dimChangeHandler = sv._afterDimChange;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
        // Bind any change event listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        sv.after({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
            'scrollEnd': sv._afterScrollEnd,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            'disabledChange': sv._afterDisabledChange,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            'flickChange': sv._afterFlickChange,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            'dragChange': sv._afterDragChange,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            'axisChange': sv._afterAxisChange,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            'scrollYChange': scrollChangeHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
            'scrollXChange': scrollChangeHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
            'heightChange': dimChangeHandler,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
            'widthChange': dimChangeHandler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
     * Bind (or unbind) gesture move listeners required for drag support
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
     * @method _bindDrag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
     * @param drag {boolean} If true, the method binds listener to enable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
     *  drag (gesturemovestart). If false, the method unbinds gesturemove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
     *  listeners for drag support.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
    _bindDrag: function (drag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            bb = sv._bb;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        // Unbind any previous 'drag' listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        bb.detach(DRAG + '|*');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        if (drag) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            bb.on(DRAG + '|' + GESTURE_MOVE + START, Y.bind(sv._onGestureMoveStart, sv));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
     * Bind (or unbind) flick listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
     * @method _bindFlick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
     * @param flick {Object|boolean} If truthy, the method binds listeners for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
     *  flick support. If false, the method unbinds flick listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    _bindFlick: function (flick) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
            bb = sv._bb;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        // Unbind any previous 'flick' listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
        bb.detach(FLICK + '|*');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        if (flick) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
            bb.on(FLICK + '|' + FLICK, Y.bind(sv._flick, sv), flick);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
            // Rebind Drag, becuase _onGestureMoveEnd always has to fire -after- _flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
            sv._bindDrag(sv.get(DRAG));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
     * Bind (or unbind) mousewheel listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
     * @method _bindMousewheel
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
     * @param mousewheel {Object|boolean} If truthy, the method binds listeners for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
     *  mousewheel support. If false, the method unbinds mousewheel listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
    _bindMousewheel: function (mousewheel) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
            bb = sv._bb;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
        // Unbind any previous 'mousewheel' listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        // TODO: This doesn't actually appear to work properly. Fix. #2532743
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
        bb.detach(MOUSEWHEEL + '|*');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        // Only enable for vertical scrollviews
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
        if (mousewheel) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            // Bound to document, because that's where mousewheel events fire off of.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
            Y.one(DOCUMENT).on(MOUSEWHEEL, Y.bind(sv._mousewheel, sv));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
     * syncUI implementation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
     * Update the scroll position, based on the current value of scrollX/scrollY.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
     * @method syncUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
    syncUI: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
            scrollDims = sv._getScrollDims(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            width = scrollDims.offsetWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            height = scrollDims.offsetHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
            scrollWidth = scrollDims.scrollWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
            scrollHeight = scrollDims.scrollHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        // If the axis is undefined, auto-calculate it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        if (sv._cAxis === undefined) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
            // This should only ever be run once (for now).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
            // In the future SV might post-load axis changes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
            sv._cAxis = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
                x: (scrollWidth > width),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
                y: (scrollHeight > height)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
            sv._set(AXIS, sv._cAxis);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
        // get text direction on or inherited by scrollview node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
        sv.rtl = (sv._cb.getComputedStyle('direction') === 'rtl');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
        // Cache the disabled value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
        sv._cDisabled = sv.get(DISABLED);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
        // Run this to set initial values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
        sv._uiDimensionsChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
        // If we're out-of-bounds, snap back.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
        if (sv._isOutOfBounds()) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
            sv._snapBack();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * Utility method to obtain widget dimensions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
     * @method _getScrollDims
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
     * @return {Object} The offsetWidth, offsetHeight, scrollWidth and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
     *  scrollHeight as an array: [offsetWidth, offsetHeight, scrollWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
     *  scrollHeight]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
    _getScrollDims: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
            cb = sv._cb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
            bb = sv._bb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
            TRANS = ScrollView._TRANSITION,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
            // Ideally using CSSMatrix - don't think we have it normalized yet though.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
            // origX = (new WebKitCSSMatrix(cb.getComputedStyle("transform"))).e,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            // origY = (new WebKitCSSMatrix(cb.getComputedStyle("transform"))).f,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
            origX = sv.get(SCROLL_X),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
            origY = sv.get(SCROLL_Y),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
            origHWTransform,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
            dims;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
        // TODO: Is this OK? Just in case it's called 'during' a transition.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
        if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            cb.setStyle(TRANS.DURATION, ZERO);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            cb.setStyle(TRANS.PROPERTY, EMPTY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
        origHWTransform = sv._forceHWTransforms;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
        sv._forceHWTransforms = false; // the z translation was causing issues with picking up accurate scrollWidths in Chrome/Mac.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
        sv._moveTo(cb, 0, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        dims = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
            'offsetWidth': bb.get('offsetWidth'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
            'offsetHeight': bb.get('offsetHeight'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            'scrollWidth': bb.get('scrollWidth'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            'scrollHeight': bb.get('scrollHeight')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
        sv._moveTo(cb, -(origX), -(origY));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
        sv._forceHWTransforms = origHWTransform;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
        return dims;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
     * This method gets invoked whenever the height or width attributes change,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
     * allowing us to determine which scrolling axes need to be enabled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
     * @method _uiDimensionsChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
    _uiDimensionsChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
            bb = sv._bb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
            scrollDims = sv._getScrollDims(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
            width = scrollDims.offsetWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
            height = scrollDims.offsetHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
            scrollWidth = scrollDims.scrollWidth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
            scrollHeight = scrollDims.scrollHeight,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            rtl = sv.rtl,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
            svAxis = sv._cAxis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
            minScrollX = (rtl ? Math.min(0, -(scrollWidth - width)) : 0),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
            maxScrollX = (rtl ? 0 : Math.max(0, scrollWidth - width)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            minScrollY = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
            maxScrollY = Math.max(0, scrollHeight - height);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
        if (svAxis && svAxis.x) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
            bb.addClass(CLASS_NAMES.horizontal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
        if (svAxis && svAxis.y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            bb.addClass(CLASS_NAMES.vertical);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        sv._setBounds({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
            minScrollX: minScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
            maxScrollX: maxScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
            minScrollY: minScrollY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
            maxScrollY: maxScrollY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
     * Set the bounding dimensions of the ScrollView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
     * @method _setBounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
     * @param bounds {Object} [duration] ms of the scroll animation. (default is 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
     *   @param {Number} [bounds.minScrollX] The minimum scroll X value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
     *   @param {Number} [bounds.maxScrollX] The maximum scroll X value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
     *   @param {Number} [bounds.minScrollY] The minimum scroll Y value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
     *   @param {Number} [bounds.maxScrollY] The maximum scroll Y value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    _setBounds: function (bounds) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
        var sv = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        // TODO: Do a check to log if the bounds are invalid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
        sv._minScrollX = bounds.minScrollX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
        sv._maxScrollX = bounds.maxScrollX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        sv._minScrollY = bounds.minScrollY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
        sv._maxScrollY = bounds.maxScrollY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
     * Get the bounding dimensions of the ScrollView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
     * @method _getBounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
    _getBounds: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
        var sv = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
        return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
            minScrollX: sv._minScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
            maxScrollX: sv._maxScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
            minScrollY: sv._minScrollY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
            maxScrollY: sv._maxScrollY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
     * Scroll the element to a given xy coordinate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
     * @method scrollTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
     * @param x {Number} The x-position to scroll to. (null for no movement)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
     * @param y {Number} The y-position to scroll to. (null for no movement)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
     * @param {Number} [duration] ms of the scroll animation. (default is 0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
     * @param {String} [easing] An easing equation if duration is set. (default is `easing` attribute)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
     * @param {String} [node] The node to transform.  Setting this can be useful in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
     *  dual-axis paginated instances. (default is the instance's contentBox)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
    scrollTo: function (x, y, duration, easing, node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
        // Check to see if widget is disabled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
        if (this._cDisabled) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
            cb = sv._cb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
            TRANS = ScrollView._TRANSITION,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
            callback = Y.bind(sv._onTransEnd, sv), // @Todo : cache this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
            newX = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
            newY = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
            transition = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
            transform;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
        // default the optional arguments
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        duration = duration || 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        easing = easing || sv.get(EASING); // @TODO: Cache this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        node = node || cb;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        if (x !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
            sv.set(SCROLL_X, x, {src:UI});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
            newX = -(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
        if (y !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
            sv.set(SCROLL_Y, y, {src:UI});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
            newY = -(y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
        transform = sv._transform(newX, newY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
        if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
            // ANDROID WORKAROUND - try and stop existing transition, before kicking off new one.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
            node.setStyle(TRANS.DURATION, ZERO).setStyle(TRANS.PROPERTY, EMPTY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
        // Move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
        if (duration === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
            if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                node.setStyle('transform', transform);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
            else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                // TODO: If both set, batch them in the same update
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
                // Update: Nope, setStyles() just loops through each property and applies it.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
                if (x !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                    node.setStyle(LEFT, newX + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
                if (y !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
                    node.setStyle(TOP, newY + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
        // Animate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            transition.easing = easing;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
            transition.duration = duration / 1000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
            if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
                transition.transform = transform;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
            else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
                transition.left = newX + PX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
                transition.top = newY + PX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
            node.transition(transition, callback);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
     * Utility method, to create the translate transform string with the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
     * x, y translation amounts provided.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
     * @method _transform
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
     * @param {Number} x Number of pixels to translate along the x axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
     * @param {Number} y Number of pixels to translate along the y axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
    _transform: function (x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
        // TODO: Would we be better off using a Matrix for this?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
        var prop = 'translate(' + x + 'px, ' + y + 'px)';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
        if (this._forceHWTransforms) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
            prop += ' translateZ(0)';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
        return prop;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
    * Utility method, to move the given element to the given xy position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
    * @method _moveTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
    * @param node {Node} The node to move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    * @param x {Number} The x-position to move to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
    * @param y {Number} The y-position to move to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
    _moveTo : function(node, x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
        if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
            node.setStyle('transform', this._transform(x, y));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
            node.setStyle(LEFT, x + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
            node.setStyle(TOP, y + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
     * Content box transition callback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
     * @method _onTransEnd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
     * @param {Event.Facade} e The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
    _onTransEnd: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
        var sv = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
        
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
        // If for some reason we're OOB, snapback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        if (sv._isOutOfBounds()) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
            sv._snapBack();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
             * Notification event fired at the end of a scroll transition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
             *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
             * @event scrollEnd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
             * @param e {EventFacade} The default event facade.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
            sv.fire(EV_SCROLL_END);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
     * gesturemovestart event handler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
     * @method _onGestureMoveStart
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
     * @param e {Event.Facade} The gesturemovestart event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
    _onGestureMoveStart: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
        if (this._cDisabled) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
            bb = sv._bb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
            currentX = sv.get(SCROLL_X),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
            currentY = sv.get(SCROLL_Y),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
            clientX = e.clientX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
            clientY = e.clientY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
        if (sv._prevent.start) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
            e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
        // if a flick animation is in progress, cancel it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
        if (sv._flickAnim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
            sv._cancelFlick();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
            sv._onTransEnd();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
        // Reset lastScrolledAmt
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
        sv.lastScrolledAmt = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
        // Stores data for this gesture cycle.  Cleaned up later
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
        sv._gesture = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
            // Will hold the axis value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
            axis: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
            // The current attribute values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
            startX: currentX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
            startY: currentY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
            // The X/Y coordinates where the event began
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
            startClientX: clientX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
            startClientY: clientY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
            // The X/Y coordinates where the event will end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
            endClientX: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
            endClientY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
            // The current delta of the event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
            deltaX: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
            deltaY: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
            // Will be populated for flicks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
            flick: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
            // Create some listeners for the rest of the gesture cycle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
            onGestureMove: bb.on(DRAG + '|' + GESTURE_MOVE, Y.bind(sv._onGestureMove, sv)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
            // @TODO: Don't bind gestureMoveEnd if it's a Flick?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
            onGestureMoveEnd: bb.on(DRAG + '|' + GESTURE_MOVE + END, Y.bind(sv._onGestureMoveEnd, sv))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
     * gesturemove event handler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
     * @method _onGestureMove
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
     * @param e {Event.Facade} The gesturemove event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
    _onGestureMove: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
            gesture = sv._gesture,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
            svAxis = sv._cAxis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
            svAxisX = svAxis.x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
            svAxisY = svAxis.y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
            startX = gesture.startX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
            startY = gesture.startY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
            startClientX = gesture.startClientX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
            startClientY = gesture.startClientY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
            clientX = e.clientX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
            clientY = e.clientY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
        if (sv._prevent.move) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
            e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
        gesture.deltaX = startClientX - clientX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
        gesture.deltaY = startClientY - clientY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
        // Determine if this is a vertical or horizontal movement
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
        // @TODO: This is crude, but it works.  Investigate more intelligent ways to detect intent
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
        if (gesture.axis === null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
            gesture.axis = (Math.abs(gesture.deltaX) > Math.abs(gesture.deltaY)) ? DIM_X : DIM_Y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
        // Move X or Y.  @TODO: Move both if dualaxis.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
        if (gesture.axis === DIM_X && svAxisX) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
            sv.set(SCROLL_X, startX + gesture.deltaX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
        else if (gesture.axis === DIM_Y && svAxisY) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
            sv.set(SCROLL_Y, startY + gesture.deltaY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
     * gesturemoveend event handler
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
     * @method _onGestureMoveEnd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
     * @param e {Event.Facade} The gesturemoveend event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
    _onGestureMoveEnd: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
            gesture = sv._gesture,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
            flick = gesture.flick,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
            clientX = e.clientX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
            clientY = e.clientY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
            isOOB;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
        if (sv._prevent.end) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
            e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
        // Store the end X/Y coordinates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
        gesture.endClientX = clientX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
        gesture.endClientY = clientY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
        // Cleanup the event handlers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
        gesture.onGestureMove.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
        gesture.onGestureMoveEnd.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
        // If this wasn't a flick, wrap up the gesture cycle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
        if (!flick) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
            // @TODO: Be more intelligent about this. Look at the Flick attribute to see
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
            // if it is safe to assume _flick did or didn't fire.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
            // Then, the order _flick and _onGestureMoveEnd fire doesn't matter?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
            // If there was movement (_onGestureMove fired)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
            if (gesture.deltaX !== null && gesture.deltaY !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
                isOOB = sv._isOutOfBounds();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
                // If we're out-out-bounds, then snapback
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
                if (isOOB) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
                    sv._snapBack();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
                // Inbounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
                else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
                    // Fire scrollEnd unless this is a paginated instance and the gesture axis is the same as paginator's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
                    // Not totally confident this is ideal to access a plugin's properties from a host, @TODO revisit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
                    if (!sv.pages || (sv.pages && !sv.pages.get(AXIS)[gesture.axis])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
                        sv._onTransEnd();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
     * Execute a flick at the end of a scroll action
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
     * @method _flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
     * @param e {Event.Facade} The Flick event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
    _flick: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
        if (this._cDisabled) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
            svAxis = sv._cAxis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
            flick = e.flick,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
            flickAxis = flick.axis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
            flickVelocity = flick.velocity,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
            axisAttr = flickAxis === DIM_X ? SCROLL_X : SCROLL_Y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
            startPosition = sv.get(axisAttr);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
        // Sometimes flick is enabled, but drag is disabled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
        if (sv._gesture) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
            sv._gesture.flick = flick;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
        // Prevent unneccesary firing of _flickFrame if we can't scroll on the flick axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
        if (svAxis[flickAxis]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
            sv._flickFrame(flickVelocity, flickAxis, startPosition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
     * Execute a single frame in the flick animation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
     * @method _flickFrame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
     * @param velocity {Number} The velocity of this animated frame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
     * @param flickAxis {String} The axis on which to animate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
     * @param startPosition {Number} The starting X/Y point to flick from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
    _flickFrame: function (velocity, flickAxis, startPosition) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
            axisAttr = flickAxis === DIM_X ? SCROLL_X : SCROLL_Y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
            bounds = sv._getBounds(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
            // Localize cached values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
            bounce = sv._cBounce,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
            bounceRange = sv._cBounceRange,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
            deceleration = sv._cDeceleration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
            frameDuration = sv._cFrameDuration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
            // Calculate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
            newVelocity = velocity * deceleration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
            newPosition = startPosition - (frameDuration * newVelocity),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
            // Some convinience conditions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
            min = flickAxis === DIM_X ? bounds.minScrollX : bounds.minScrollY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
            max = flickAxis === DIM_X ? bounds.maxScrollX : bounds.maxScrollY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
            belowMin       = (newPosition < min),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
            belowMax       = (newPosition < max),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
            aboveMin       = (newPosition > min),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
            aboveMax       = (newPosition > max),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
            belowMinRange  = (newPosition < (min - bounceRange)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
            withinMinRange = (belowMin && (newPosition > (min - bounceRange))),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
            withinMaxRange = (aboveMax && (newPosition < (max + bounceRange))),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
            aboveMaxRange  = (newPosition > (max + bounceRange)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
            tooSlow;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
        // If we're within the range but outside min/max, dampen the velocity
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
        if (withinMinRange || withinMaxRange) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
            newVelocity *= bounce;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
        // Is the velocity too slow to bother?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
        tooSlow = (Math.abs(newVelocity).toFixed(4) < 0.015);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
        // If the velocity is too slow or we're outside the range
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
        if (tooSlow || belowMinRange || aboveMaxRange) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
            // Cancel and delete sv._flickAnim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
            if (sv._flickAnim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
                sv._cancelFlick();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
            // If we're inside the scroll area, just end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
            if (aboveMin && belowMax) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
                sv._onTransEnd();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
            // We're outside the scroll area, so we need to snap back
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
            else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
                sv._snapBack();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
        // Otherwise, animate to the next frame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
            // @TODO: maybe use requestAnimationFrame instead
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
            sv._flickAnim = Y.later(frameDuration, sv, '_flickFrame', [newVelocity, flickAxis, newPosition]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
            sv.set(axisAttr, newPosition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
    _cancelFlick: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
        var sv = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
        if (sv._flickAnim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
            // Cancel the flick (if it exists)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
            sv._flickAnim.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
            // Also delete it, otherwise _onGestureMoveStart will think we're still flicking
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
            delete sv._flickAnim;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
     * Handle mousewheel events on the widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
     * @method _mousewheel
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
     * @param e {Event.Facade} The mousewheel event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
    _mousewheel: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
            scrollY = sv.get(SCROLL_Y),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
            bounds = sv._getBounds(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
            bb = sv._bb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
            scrollOffset = 10, // 10px
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
            isForward = (e.wheelDelta > 0),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
            scrollToY = scrollY - ((isForward ? 1 : -1) * scrollOffset);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
        scrollToY = _constrain(scrollToY, bounds.minScrollY, bounds.maxScrollY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
        // Because Mousewheel events fire off 'document', every ScrollView widget will react
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
        // to any mousewheel anywhere on the page. This check will ensure that the mouse is currently
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
        // over this specific ScrollView.  Also, only allow mousewheel scrolling on Y-axis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
        // becuase otherwise the 'prevent' will block page scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
        if (bb.contains(e.target) && sv._cAxis[DIM_Y]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
            // Reset lastScrolledAmt
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
            sv.lastScrolledAmt = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
            // Jump to the new offset
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
            sv.set(SCROLL_Y, scrollToY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
            // if we have scrollbars plugin, update & set the flash timer on the scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
            // @TODO: This probably shouldn't be in this module
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
            if (sv.scrollbars) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
                // @TODO: The scrollbars should handle this themselves
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
                sv.scrollbars._update();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
                sv.scrollbars.flash();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
                // or just this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
                // sv.scrollbars._hostDimensionsChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
            // Fire the 'scrollEnd' event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
            sv._onTransEnd();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
            // prevent browser default behavior on mouse scroll
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
            e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
     * Checks to see the current scrollX/scrollY position beyond the min/max boundary
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
     * @method _isOutOfBounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
     * @param x {Number} [optional] The X position to check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
     * @param y {Number} [optional] The Y position to check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
     * @return {boolen} Whether the current X/Y position is out of bounds (true) or not (false)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
    _isOutOfBounds: function (x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
            svAxis = sv._cAxis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
            svAxisX = svAxis.x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
            svAxisY = svAxis.y,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
            currentX = x || sv.get(SCROLL_X),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
            currentY = y || sv.get(SCROLL_Y),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
            bounds = sv._getBounds(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
            minX = bounds.minScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
            minY = bounds.minScrollY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
            maxX = bounds.maxScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
            maxY = bounds.maxScrollY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
        return (svAxisX && (currentX < minX || currentX > maxX)) || (svAxisY && (currentY < minY || currentY > maxY));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
     * Bounces back
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
     * @TODO: Should be more generalized and support both X and Y detection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
     * @method _snapBack
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
    _snapBack: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
            currentX = sv.get(SCROLL_X),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
            currentY = sv.get(SCROLL_Y),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
            bounds = sv._getBounds(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
            minX = bounds.minScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
            minY = bounds.minScrollY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
            maxX = bounds.maxScrollX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
            maxY = bounds.maxScrollY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
            newY = _constrain(currentY, minY, maxY),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
            newX = _constrain(currentX, minX, maxX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
            duration = sv.get(SNAP_DURATION),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
            easing = sv.get(SNAP_EASING);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
        if (newX !== currentX) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
            sv.set(SCROLL_X, newX, {duration:duration, easing:easing});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
        else if (newY !== currentY) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
            sv.set(SCROLL_Y, newY, {duration:duration, easing:easing});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
            sv._onTransEnd();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
     * After listener for changes to the scrollX or scrollY attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
     * @method _afterScrollChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
     * @param e {Event.Facade} The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
    _afterScrollChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
        if (e.src === ScrollView.UI_SRC) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
        var sv = this,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
            duration = e.duration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
            easing = e.easing,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
            val = e.newVal,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
            scrollToArgs = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
        // Set the scrolled value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
        sv.lastScrolledAmt = sv.lastScrolledAmt + (e.newVal - e.prevVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
        // Generate the array of args to pass to scrollTo()
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
        if (e.attrName === SCROLL_X) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
            scrollToArgs.push(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
            scrollToArgs.push(sv.get(SCROLL_Y));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
            scrollToArgs.push(sv.get(SCROLL_X));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
            scrollToArgs.push(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
        scrollToArgs.push(duration);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
        scrollToArgs.push(easing);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
        sv.scrollTo.apply(sv, scrollToArgs);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
     * After listener for changes to the flick attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
     * @method _afterFlickChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
     * @param e {Event.Facade} The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
    _afterFlickChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
        this._bindFlick(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
     * After listener for changes to the disabled attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
     * @method _afterDisabledChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
     * @param e {Event.Facade} The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
    _afterDisabledChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
        // Cache for performance - we check during move
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
        this._cDisabled = e.newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
     * After listener for the axis attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
     * @method _afterAxisChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
     * @param e {Event.Facade} The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
    _afterAxisChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
        this._cAxis = e.newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
     * After listener for changes to the drag attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
     * @method _afterDragChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
     * @param e {Event.Facade} The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
    _afterDragChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
        this._bindDrag(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
     * After listener for the height or width attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
     * @method _afterDimChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
     * @param e {Event.Facade} The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
    _afterDimChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
        this._uiDimensionsChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
     * After listener for scrollEnd, for cleanup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
     * @method _afterScrollEnd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
     * @param e {Event.Facade} The event facade
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
    _afterScrollEnd: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
        var sv = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
        if (sv._flickAnim) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
            sv._cancelFlick();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
        // Ideally this should be removed, but doing so causing some JS errors with fast swiping
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
        // because _gesture is being deleted after the previous one has been overwritten
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
        // delete sv._gesture; // TODO: Move to sv.prevGesture?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
     * Setter for 'axis' attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
     * @method _axisSetter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
     * @param val {Mixed} A string ('x', 'y', 'xy') to specify which axis/axes to allow scrolling on
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
     * @param name {String} The attribute name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
     * @return {Object} An object to specify scrollability on the x & y axes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
    _axisSetter: function (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
        // Turn a string into an axis object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
        if (Y.Lang.isString(val)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
            return {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
                x: val.match(/x/i) ? true : false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
                y: val.match(/y/i) ? true : false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
    * The scrollX, scrollY setter implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
    * @method _setScroll
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
    * @param {Number} val
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
    * @param {String} dim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
    * @return {Number} The value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
    _setScroll : function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
        // Just ensure the widget is not disabled
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
        if (this._cDisabled) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
            val = Y.Attribute.INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
        return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
    * Setter for the scrollX attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
    * @method _setScrollX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
    * @param val {Number} The new scrollX value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
    * @return {Number} The normalized value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
    * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
    _setScrollX: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
        return this._setScroll(val, DIM_X);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
    * Setter for the scrollY ATTR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
    * @method _setScrollY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
    * @param val {Number} The new scrollY value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
    * @return {Number} The normalized value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
    * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
    _setScrollY: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
        return this._setScroll(val, DIM_Y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
    // End prototype properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
}, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
    // Static properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
     * The identity of the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
     * @property NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
     * @default 'scrollview'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
     * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
    NAME: 'scrollview',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
     * Static property used to define the default attribute configuration of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
     * the Widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
     * @property ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
     * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
         * Specifies ability to scroll on x, y, or x and y axis/axes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
         * @attribute axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
        axis: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
            setter: '_axisSetter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
            writeOnce: 'initOnly'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
         * The current scroll position in the x-axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
         * @attribute scrollX
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
         * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
        scrollX: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
            setter: '_setScrollX'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
         * The current scroll position in the y-axis
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
         * @attribute scrollY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
         * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
        scrollY: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
            setter: '_setScrollY'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
         * Drag coefficent for inertial scrolling. The closer to 1 this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
         * value is, the less friction during scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
         * @attribute deceleration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
         * @default 0.93
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
        deceleration: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
            value: 0.93
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
         * Drag coefficient for intertial scrolling at the upper
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
         * and lower boundaries of the scrollview. Set to 0 to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
         * disable "rubber-banding".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
         * @attribute bounce
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
         * @default 0.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
        bounce: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
            value: 0.1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
         * The minimum distance and/or velocity which define a flick. Can be set to false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
         * to disable flick support (note: drag support is enabled/disabled separately)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
         * @attribute flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
         * @default Object with properties minDistance = 10, minVelocity = 0.3.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
        flick: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
            value: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
                minDistance: 10,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
                minVelocity: 0.3
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
         * Enable/Disable dragging the ScrollView content (note: flick support is enabled/disabled separately)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
         * @attribute drag
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
         * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
         * @default true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
        drag: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
            value: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
         * The default duration to use when animating the bounce snap back.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
         * @attribute snapDuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
         * @default 400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
        snapDuration: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
            value: 400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
         * The default easing to use when animating the bounce snap back.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
         * @attribute snapEasing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
         * @default 'ease-out'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
        snapEasing: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
            value: 'ease-out'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
         * The default easing used when animating the flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
         * @attribute easing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
         * @default 'cubic-bezier(0, 0.1, 0, 1.0)'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
        easing: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
            value: 'cubic-bezier(0, 0.1, 0, 1.0)'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
         * The interval (ms) used when animating the flick for JS-timer animations
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
         * @attribute frameDuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
         * @default 15
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
        frameDuration: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
            value: 15
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
         * The default bounce distance in pixels
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
         * @attribute bounceRange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
         * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
         * @default 150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
        bounceRange: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
            value: 150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
     * List of class names used in the scrollview's DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
     * @property CLASS_NAMES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
    CLASS_NAMES: CLASS_NAMES,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
     * Flag used to source property changes initiated from the DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
     * @property UI_SRC
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
     * @default 'ui'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
    UI_SRC: UI,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
     * Object map of style property names used to set transition properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
     * Defaults to the vendor prefix established by the Transition module.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
     * The configured property names are `_TRANSITION.DURATION` (e.g. "WebkitTransitionDuration") and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
     * `_TRANSITION.PROPERTY (e.g. "WebkitTransitionProperty").
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
     * @property _TRANSITION
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
    _TRANSITION: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
        DURATION: (vendorPrefix ? vendorPrefix + 'TransitionDuration' : 'transitionDuration'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
        PROPERTY: (vendorPrefix ? vendorPrefix + 'TransitionProperty' : 'transitionProperty')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
     * The default bounce distance in pixels
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
     * @property BOUNCE_RANGE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
     * @deprecated (in 3.7.0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
    BOUNCE_RANGE: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
     * The interval (ms) used when animating the flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
     * @property FRAME_STEP
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
     * @deprecated (in 3.7.0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
    FRAME_STEP: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
     * The default easing used when animating the flick
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
     * @property EASING
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
     * @deprecated (in 3.7.0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
    EASING: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
     * The default easing to use when animating the bounce snap back.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
     * @property SNAP_EASING
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
     * @deprecated (in 3.7.0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
    SNAP_EASING: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
     * The default duration to use when animating the bounce snap back.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
     * @property SNAP_DURATION
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
     * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
     * @deprecated (in 3.7.0)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
    SNAP_DURATION: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
    // End static properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
}, '3.10.3', {"requires": ["widget", "event-gestures", "event-mousewheel", "transition"], "skinnable": true});