src/cm/media/js/lib/yui/yui_3.0.0b1/build/anim/anim.js
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
Copyright (c) 2009, Yahoo! Inc. All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
Code licensed under the BSD License:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
http://developer.yahoo.net/yui/license.txt
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
version: 3.0.0b1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1163
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('anim-base', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
* The Animation Utility provides an API for creating advanced transitions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
* @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
* Provides the base Anim class, for animating numeric properties.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
* @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
* @submodule anim-base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
     * A class for constructing animation instances.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
     * @class Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
     * @for Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
     * @constructor
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
     * @extends Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
    var RUNNING = 'running',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
        START_TIME = 'startTime',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
        ELAPSED_TIME = 'elapsedTime',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
        * @for Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
        * @event start
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
        * @description fires when an animation begins.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
        * @param {Event} ev The start event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
        * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
        START = 'start',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        * @event tween
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
        * @description fires every frame of the animation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
        * @param {Event} ev The tween event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
        * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
        TWEEN = 'tween',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
        * @event end
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
        * @description fires after the animation completes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
        * @param {Event} ev The end event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
        * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
        END = 'end',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
        NODE = 'node',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
        PAUSED = 'paused',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
        REVERSE = 'reverse', // TODO: cleanup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
        ITERATION_COUNT = 'iterationCount',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
        NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
    var _running = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
        _instances = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
        _timer;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
    Y.Anim = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
        Y.Anim.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
        _instances[Y.stamp(this)] = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
    Y.Anim.NAME = 'anim';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
     * Regex of properties that should use the default unit.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
     * @property RE_DEFAULT_UNIT
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
    Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
     * The default unit to use with properties that pass the RE_DEFAULT_UNIT test.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
     * @property DEFAULT_UNIT
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
    Y.Anim.DEFAULT_UNIT = 'px';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
    Y.Anim.DEFAULT_EASING = function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
        return c * t / d + b; // linear easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
     * Bucket for custom getters and setters
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
     * @property behaviors
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
    Y.Anim.behaviors = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
        left: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
            get: function(anim, attr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
                return anim._getOffset(attr);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
    Y.Anim.behaviors.top = Y.Anim.behaviors.left;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
     * The default setter to use when setting object properties.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
     * @property DEFAULT_SETTER
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
    Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
        unit = unit || '';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
        anim._node.setStyle(att, fn(elapsed, NUM(from), NUM(to) - NUM(from), duration) + unit);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
     * The default getter to use when getting object properties.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
     * @property DEFAULT_GETTER
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
    Y.Anim.DEFAULT_GETTER = function(anim, prop) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
        return anim._node.getComputedStyle(prop);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
    Y.Anim.ATTRS = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
         * The object to be animated.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
         * @attribute node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
         * @type Node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
        node: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
            setter: function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
                node = Y.get(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
                this._node = node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
                if (!node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
                return node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
         * The length of the animation.  Defaults to "1" (second).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
         * @attribute duration
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
         * @type NUM
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
        duration: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
            value: 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
         * The method that will provide values to the attribute(s) during the animation. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
         * Defaults to "Easing.easeNone".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
         * @attribute easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
         * @type Function
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
        easing: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
            value: Y.Anim.DEFAULT_EASING,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
            setter: function(val) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
                if (typeof val === 'string' && Y.Easing) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
                    return Y.Easing[val];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
         * The starting values for the animated properties. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
         * Fields may be strings, numbers, or functions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
         * If a function is used, the return value becomes the from value.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
         * If no from value is specified, the DEFAULT_GETTER will be used. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
         * @attribute from
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
         * @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
        from: {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
         * The ending values for the animated properties. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
         * Fields may be strings, numbers, or functions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
         * @attribute to
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
         * @type Object
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
        to: {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
         * Date stamp for the first frame of the animation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
         * @attribute startTime
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
         * @type Int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
         * @default 0 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
         * @readOnly
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
        startTime: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
            value: 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
            readOnly: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
         * Current time the animation has been running.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
         * @attribute elapsedTime
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
         * @type Int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
         * @default 0 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
         * @readOnly
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
        elapsedTime: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
            value: 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
            readOnly: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
         * Whether or not the animation is currently running.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
         * @attribute running 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
         * @type Boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
         * @default false 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
         * @readOnly
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
        running: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
            getter: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
                return !!_running[Y.stamp(this)];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
            value: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
            readOnly: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
         * The number of times the animation should run 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
         * @attribute iterations
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
         * @type Int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
         * @default 1 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
        iterations: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
            value: 1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
         * The number of iterations that have occurred.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
         * Resets when an animation ends (reaches iteration count or stop() called). 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
         * @attribute iterationCount
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
         * @type Int
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
         * @default 0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
         * @readOnly
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
        iterationCount: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
            value: 0,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
            readOnly: true
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
         * How iterations of the animation should behave. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
         * Possible values are "normal" and "alternate".
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
         * Normal will repeat the animation, alternate will reverse on every other pass.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
         *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
         * @attribute direction
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
         * @type String
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
         * @default "normal"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
        direction: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
            value: 'normal' // | alternate (fwd on odd, rev on even per spec)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
         * Whether or not the animation is currently paused.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
         * @attribute running 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
         * @type Boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
         * @default false 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
         * @readOnly
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
        paused: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
            readOnly: true,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
            value: false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
         * If true, animation begins from last frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
         * @attribute reverse
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
         * @type Boolean
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
         * @default false 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
        reverse: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
            value: false
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
     * Runs all animation instances.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
     * @method run
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
     */    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
    Y.Anim.run = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
        for (var i in _instances) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
            if (_instances[i].run) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
                _instances[i].run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
     * Pauses all animation instances.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
     * @method pause
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
     */    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
    Y.Anim.pause = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
        for (var i in _running) { // stop timer if nothing running
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
            if (_running[i].pause) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
                _running[i].pause();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
        Y.Anim._stopTimer();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
     * Stops all animation instances.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
     * @method stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
     */    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
    Y.Anim.stop = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
        for (var i in _running) { // stop timer if nothing running
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
            if (_running[i].stop) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
                _running[i].stop();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
        Y.Anim._stopTimer();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
    Y.Anim._startTimer = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
        if (!_timer) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
            _timer = setInterval(Y.Anim._runFrame, 1);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
    Y.Anim._stopTimer = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
        clearInterval(_timer);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
        _timer = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
     * Called per Interval to handle each animation frame.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
     * @method _runFrame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
     * @private
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
     */    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
    Y.Anim._runFrame = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
        var done = true;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
        for (var anim in _running) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
            if (_running[anim]._runFrame) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
                done = false;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
                _running[anim]._runFrame();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
        if (done) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
            Y.Anim._stopTimer();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
    Y.Anim.RE_UNITS = /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
    var proto = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
         * Starts or resumes an animation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
         * percent start time marker.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
         * @method run
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
         * @chainable
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
         */    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
        run: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
            if (!this.get(RUNNING)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
                this._start();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
            } else if (this.get(PAUSED)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
                this._resume();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
            return this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
         * Pauses the animation and
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
         * freezes it in its current state and time.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
         * Calling run() will continue where it left off.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
         * @method pause
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
         * @chainable
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
         */    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
        pause: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
            if (this.get(RUNNING)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
                this._pause();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
            return this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
         * Stops the animation and resets its time.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
         * @method stop
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
         * @chainable
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
         */    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
        stop: function(finish) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
            if (this.get(RUNNING) || this.get(PAUSED)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
                this._end(finish);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
            return this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
        _added: false,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
        _start: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
            this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
            this._actualFrames = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
            if (!this.get(PAUSED)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
                this._initAnimAttr();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
            _running[Y.stamp(this)] = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
            Y.Anim._startTimer();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
            this.fire(START);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
        _pause: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
            this._set(START_TIME, null);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
            this._set(PAUSED, true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
            delete _running[Y.stamp(this)];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
            /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
            * @event pause
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
            * @description fires when an animation is paused.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
            * @param {Event} ev The pause event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
            * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
            */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
            this.fire('pause');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
        _resume: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
            this._set(PAUSED, false);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
            _running[Y.stamp(this)] = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
            /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
            * @event resume
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
            * @description fires when an animation is resumed (run from pause).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
            * @param {Event} ev The pause event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
            * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
            */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
            this.fire('resume');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
        _end: function(finish) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
            this._set(START_TIME, null);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
            this._set(ELAPSED_TIME, 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
            this._set(PAUSED, false);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
            delete _running[Y.stamp(this)];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
            this.fire(END, {elapsed: this.get(ELAPSED_TIME)});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
        _runFrame: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
            var attr = this._runtimeAttr,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
                customAttr = Y.Anim.behaviors,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
                easing = attr.easing,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
                d = attr.duration,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
                t = new Date() - this.get(START_TIME),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
                reversed = this.get(REVERSE),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
                done = (t >= d),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
                lastFrame = d,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
                attribute,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
                setter;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
                
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
            if (reversed) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
                t = d - t;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
                done = (t <= 0);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
                lastFrame = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
            for (var i in attr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
                if (attr[i].to) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
                    attribute = attr[i];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
                    setter = (i in customAttr && 'set' in customAttr[i]) ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
                            customAttr[i].set : Y.Anim.DEFAULT_SETTER;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
                    if (!done) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
                        setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
                    } else { // ensure final frame value is set
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
                       // TODO: handle keyframes 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
                        setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
                    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
            this._actualFrames += 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
            this._set(ELAPSED_TIME, t);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
            this.fire(TWEEN);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
            if (done) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
                this._lastFrame();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
        _lastFrame: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
            var iter = this.get('iterations'),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
                iterCount = this.get(ITERATION_COUNT);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
            iterCount += 1;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
            if (iter === 'infinite' || iterCount < iter) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
                if (this.get('direction') === 'alternate') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
                    this.set(REVERSE, !this.get(REVERSE)); // flip it
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
                /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
                * @event iteration
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
                * @description fires when an animation begins an iteration.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
                * @param {Event} ev The iteration event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
                * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
                */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
                this.fire('iteration');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
            } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
                iterCount = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
                this._end();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
            this._set(START_TIME, new Date());
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
            this._set(ITERATION_COUNT, iterCount);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
        _initAnimAttr: function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
            var from = this.get('from') || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
                to = this.get('to') || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
                dur = this.get('duration') * 1000,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
                node = this.get(NODE),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
                easing = this.get('easing') || {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
                attr = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
                customAttr = Y.Anim.behaviors,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
                unit, begin, end;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
            Y.each(to, function(val, name) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
                if (typeof val === 'function') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
                    val = val.call(this, node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
                begin = from[name];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
                if (begin === undefined) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
                    begin = (name in customAttr && 'get' in customAttr[name])  ?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
                            customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
                } else if (typeof begin === 'function') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
                    begin = begin.call(this, node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
                var mFrom = Y.Anim.RE_UNITS.exec(begin);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
                var mTo = Y.Anim.RE_UNITS.exec(val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
                begin = mFrom ? mFrom[1] : begin;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
                end = mTo ? mTo[1] : val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
                unit = mTo ? mTo[2] : mFrom ?  mFrom[2] : ''; // one might be zero TODO: mixed units
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
                if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
                    unit = Y.Anim.DEFAULT_UNIT;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
                if (!begin || !end) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
                    Y.error('invalid "from" or "to" for "' + name + '"', 'Anim');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
                    return;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
                attr[name] = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
                    from: begin,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
                    to: end,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
                    unit: unit
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
                };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
                attr.duration = dur;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
                attr.easing = easing;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
            }, this);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
            this._runtimeAttr = attr;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
        // TODO: move to computedStyle? (browsers dont agree on default computed offsets)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
        _getOffset: function(attr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
            var node = this._node,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
                val = node.getComputedStyle(attr),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
                get = (attr === 'left') ? 'getX': 'getY',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
                set = (attr === 'left') ? 'setX': 'setY';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
            if (val === 'auto') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
                var position = node.getStyle('position');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
                if (position === 'absolute' || position === 'fixed') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
                    val = node[get]();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
                    node[set](val);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
                } else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
                    val = 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
                }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
            return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
    Y.extend(Y.Anim, Y.Base, proto);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
}, '3.0.0b1' ,{requires:['base', 'node']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
YUI.add('anim-color', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
 * Adds support for color properties in <code>to</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
 * and <code>from</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
 * @submodule anim-color
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
Y.Anim.behaviors.color = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
        from = Y.Color.re_RGB.exec(Y.Color.toRGB(from));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
        to = Y.Color.re_RGB.exec(Y.Color.toRGB(to));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
        if (!from || from.length < 3 || !to || to.length < 3) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
            Y.error('invalid from or to passed to color behavior');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
        anim._node.setStyle(att, 'rgb(' + [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
            Math.floor(fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
            Math.floor(fn(elapsed, NUM(from[2]), NUM(to[2]) - NUM(from[2]), duration)),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
            Math.floor(fn(elapsed, NUM(from[3]), NUM(to[3]) - NUM(from[3]), duration))
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
        ].join(', ') + ')');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
    // TODO: default bgcolor const
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
    get: function(anim, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
        var val = anim._node.getComputedStyle(att);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
        val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
Y.each(['backgroundColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
        'borderColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
        'borderTopColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
        'borderRightColor', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
        'borderBottomColor', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
        'borderLeftColor'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
        function(v, i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
            Y.Anim.behaviors[v] = Y.Anim.behaviors.color;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
}, '3.0.0b1' ,{requires:['anim-base', 'node-style']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
YUI.add('anim-curve', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
 * Adds support for the <code>curve</code> property for the <code>to</code> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
 * attribute.  A curve is zero or more control points and an end point.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
 * @submodule anim-curve
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
Y.Anim.behaviors.curve = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
        from = from.slice.call(from);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
        to = to.slice.call(to);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
        var t = fn(elapsed, 0, 100, duration) / 100;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
        to.unshift(from);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
        anim._node.setXY(Y.Anim.getBezier(to, t));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
    get: function(anim, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
        return anim._node.getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
 * Get the current position of the animated element based on t.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
 * Each point is an array of "x" and "y" values (0 = x, 1 = y)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
 * At least 2 points are required (start and end).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
 * First point is start. Last point is end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
 * Additional control points are optional.     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
 * @for Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
 * @method getBezier
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
 * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
 * @param {Array} points An array containing Bezier points
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
 * @param {Number} t A number between 0 and 1 which is the basis for determining current position
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
 * @return {Array} An array containing int x and y member data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
Y.Anim.getBezier = function(points, t) {  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
    var n = points.length;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
    var tmp = [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
    for (var i = 0; i < n; ++i){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
        tmp[i] = [points[i][0], points[i][1]]; // save input
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
    for (var j = 1; j < n; ++j) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
        for (i = 0; i < n - j; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
            tmp[i][0] = (1 - t) * tmp[i][0] + t * tmp[parseInt(i + 1, 10)][0];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
            tmp[i][1] = (1 - t) * tmp[i][1] + t * tmp[parseInt(i + 1, 10)][1]; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
    return [ tmp[0][0], tmp[0][1] ]; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
}, '3.0.0b1' ,{requires:['anim-base', 'node-screen']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
YUI.add('anim-easing', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
/*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
TERMS OF USE - EASING EQUATIONS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
Open source under the BSD License.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
Copyright 2001 Robert Penner All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
 * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
 * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
 * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
 * The easing module provides methods for customizing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
 * how an animation behaves during each run.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
 * @class Easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
 * @submodule anim-easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
Y.Easing = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
     * Uniform speed between points.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
     * @for Easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
     * @method easeNone
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
    easeNone: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
        return c*t/d + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   754
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   755
     * Begins slowly and accelerates towards end. (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   756
     * @method easeIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   757
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   758
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   759
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
    easeIn: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
        return c*(t/=d)*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
     * Begins quickly and decelerates towards end.  (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   769
     * @method easeOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   770
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   771
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   772
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   773
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   774
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   775
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   776
    easeOut: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   777
        return -c *(t/=d)*(t-2) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   778
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   779
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   780
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   781
     * Begins slowly and decelerates towards end. (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   782
     * @method easeBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   783
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   784
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   785
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   786
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   787
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   788
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   789
    easeBoth: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   790
        if ((t/=d/2) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   791
            return c/2*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   792
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   793
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   794
        return -c/2 * ((--t)*(t-2) - 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   795
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   796
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   797
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   798
     * Begins slowly and accelerates towards end. (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   799
     * @method easeInStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   800
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   801
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   802
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   803
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   804
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   805
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   806
    easeInStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   807
        return c*(t/=d)*t*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   808
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   809
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   810
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   811
     * Begins quickly and decelerates towards end.  (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   812
     * @method easeOutStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   813
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   814
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   815
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   816
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   817
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   818
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   819
    easeOutStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   820
        return -c * ((t=t/d-1)*t*t*t - 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   821
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   822
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   823
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   824
     * Begins slowly and decelerates towards end. (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   825
     * @method easeBothStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   826
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   827
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   828
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   829
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   830
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   831
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   832
    easeBothStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   833
        if ((t/=d/2) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   834
            return c/2*t*t*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   835
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   836
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   837
        return -c/2 * ((t-=2)*t*t*t - 2) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   838
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   839
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   840
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   841
     * Snap in elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   842
     * @method elasticIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   843
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   844
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   845
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   846
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   847
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   848
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   849
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   850
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   851
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   852
    elasticIn: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   853
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   854
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   855
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   856
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   857
        if ( (t /= d) === 1 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   858
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   859
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   860
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   861
            p = d* 0.3;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   862
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   863
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   864
        if (!a || a < Math.abs(c)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   865
            a = c; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   866
            s = p/4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   867
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   868
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   869
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   870
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   871
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   872
        return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   873
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   874
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   875
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   876
     * Snap out elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   877
     * @method elasticOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   878
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   879
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   880
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   881
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   882
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   883
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   884
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   885
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   886
    elasticOut: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   887
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   888
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   889
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   890
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   891
        if ( (t /= d) === 1 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   892
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   893
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   894
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   895
            p=d * 0.3;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   896
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   897
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   898
        if (!a || a < Math.abs(c)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   899
            a = c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   900
            s = p / 4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   901
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   902
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   903
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   904
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   905
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   906
        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   907
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   908
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   909
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   910
     * Snap both elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   911
     * @method elasticBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   912
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   913
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   914
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   915
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   916
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   917
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   918
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   919
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   920
    elasticBoth: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   921
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   922
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   923
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   924
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   925
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   926
        if ( (t /= d/2) === 2 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   927
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   928
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   929
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   930
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   931
            p = d*(0.3*1.5);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   932
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   933
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   934
        if ( !a || a < Math.abs(c) ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   935
            a = c; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   936
            s = p/4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   937
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   938
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   939
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   940
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   941
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   942
        if (t < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   943
            return -0.5*(a*Math.pow(2,10*(t-=1)) * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   944
                    Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   945
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   946
        return a*Math.pow(2,-10*(t-=1)) * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   947
                Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   948
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   949
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   950
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   951
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   952
     * Backtracks slightly, then reverses direction and moves to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   953
     * @method backIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   954
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   955
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   956
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   957
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   958
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   959
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   960
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   961
    backIn: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   962
        if (s === undefined) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   963
            s = 1.70158;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   964
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   965
        if (t === d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   966
            t -= 0.001;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   967
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   968
        return c*(t/=d)*t*((s+1)*t - s) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   969
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   970
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   971
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   972
     * Overshoots end, then reverses and comes back to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   973
     * @method backOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   974
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   975
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   976
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   977
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   978
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   979
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   980
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   981
    backOut: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   982
        if (typeof s === 'undefined') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   983
            s = 1.70158;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   984
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   985
        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   986
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   987
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   988
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   989
     * Backtracks slightly, then reverses direction, overshoots end, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   990
     * then reverses and comes back to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   991
     * @method backBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   992
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   993
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   994
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   995
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   996
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   997
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   998
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   999
    backBoth: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1000
        if (typeof s === 'undefined') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1001
            s = 1.70158; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1002
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1003
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1004
        if ((t /= d/2 ) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1005
            return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1006
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1007
        return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1008
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1009
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1010
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1011
     * Bounce off of start.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1012
     * @method bounceIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1013
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1014
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1015
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1016
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1017
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1018
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1019
    bounceIn: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1020
        return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1021
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1022
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1023
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1024
     * Bounces off end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1025
     * @method bounceOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1026
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1027
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1028
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1029
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1030
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1031
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1032
    bounceOut: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1033
        if ((t/=d) < (1/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1034
                return c*(7.5625*t*t) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1035
        } else if (t < (2/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1036
                return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1037
        } else if (t < (2.5/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1038
                return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1039
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1040
        return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1041
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1042
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1043
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1044
     * Bounces off start and end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1045
     * @method bounceBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1046
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1047
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1048
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1049
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1050
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1051
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1052
    bounceBoth: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1053
        if (t < d/2) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1054
            return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1055
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1056
        return Y.Easing.bounceOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1057
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1058
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1059
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1060
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1061
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1062
}, '3.0.0b1' ,{requires:['anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1063
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1064
YUI.add('anim-node-plugin', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1065
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1066
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1067
 *  Binds an Anim instance to a Node instance
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1068
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1069
 * @class Plugin.NodeFX
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1070
 * @extends Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1071
 * @submodule anim-node-plugin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1072
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1073
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1074
var NodeFX = function(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1075
    config = (config) ? Y.merge(config) : {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1076
    config.node = config.host;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1077
    NodeFX.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1078
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1079
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1080
NodeFX.NAME = "nodefx";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1081
NodeFX.NS = "fx";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1082
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1083
Y.extend(NodeFX, Y.Anim);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1084
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1085
Y.namespace('Plugin');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1086
Y.Plugin.NodeFX = NodeFX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1087
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1088
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1089
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1090
}, '3.0.0b1' ,{requires:['anim-base', 'node-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1091
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1092
YUI.add('anim-scroll', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1093
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1094
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1095
 * Adds support for the <code>scroll</code> property in <code>to</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1096
 * and <code>from</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1097
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1098
 * @submodule anim-scroll
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1099
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1100
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1101
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1102
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1103
//TODO: deprecate for scrollTop/Left properties?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1104
Y.Anim.behaviors.scroll = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1105
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1106
        var
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1107
            node = anim._node, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1108
            val = ([
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1109
            fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1110
            fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1111
        ]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1112
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1113
        if (val[0]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1114
            node.set('scrollLeft', val[0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1115
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1116
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1117
        if (val[1]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1118
            node.set('scrollTop', val[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1119
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1120
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1121
    get: function(anim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1122
        var node = anim._node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1123
        return [node.get('scrollLeft'), node.get('scrollTop')];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1124
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1125
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1126
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1127
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1128
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1129
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1130
}, '3.0.0b1' ,{requires:['anim-base', 'node-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1131
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1132
YUI.add('anim-xy', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1133
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1134
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1135
 * Adds support for the <code>xy</code> property in <code>from</code> and 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1136
 * <code>to</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1137
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1138
 * @submodule anim-xy
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1139
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1140
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1141
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1142
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1143
Y.Anim.behaviors.xy = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1144
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1145
        anim._node.setXY([
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1146
            fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1147
            fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1148
        ]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1149
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1150
    get: function(anim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1151
        return anim._node.getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1152
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1153
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1154
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1155
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1156
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1157
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1158
}, '3.0.0b1' ,{requires:['anim-base', 'node-screen']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1159
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1160
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1161
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1162
YUI.add('anim', function(Y){}, '3.0.0b1' ,{skinnable:false, use:['anim-base', 'anim-color', 'anim-curve', 'anim-easing', 'anim-node-plugin', 'anim-scroll', 'anim-xy']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1163