src/cm/media/js/lib/yui/yui3.0.0/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.0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1549
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 paused 
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
}, '3.0.0' ,{requires:['base-base', 'node-style']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
YUI.add('anim-color', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
 * Adds support for color properties in <code>to</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
 * and <code>from</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
 * @submodule anim-color
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
Y.Anim.behaviors.color = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
        from = Y.Color.re_RGB.exec(Y.Color.toRGB(from));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
        to = Y.Color.re_RGB.exec(Y.Color.toRGB(to));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
        if (!from || from.length < 3 || !to || to.length < 3) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
            Y.error('invalid from or to passed to color behavior');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
        anim._node.setStyle(att, 'rgb(' + [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
            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
   625
            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
   626
            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
   627
        ].join(', ') + ')');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
    // TODO: default bgcolor const
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
    get: function(anim, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
        var val = anim._node.getComputedStyle(att);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
        val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
Y.each(['backgroundColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
        'borderColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
        'borderTopColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
        'borderRightColor', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
        'borderBottomColor', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
        'borderLeftColor'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
        function(v, i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
            Y.Anim.behaviors[v] = Y.Anim.behaviors.color;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
);
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
}, '3.0.0' ,{requires:['anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
YUI.add('anim-curve', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
 * Adds support for the <code>curve</code> property for the <code>to</code> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
 * attribute.  A curve is zero or more control points and an end point.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
 * @submodule anim-curve
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
Y.Anim.behaviors.curve = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
        from = from.slice.call(from);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
        to = to.slice.call(to);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
        var t = fn(elapsed, 0, 100, duration) / 100;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
        to.unshift(from);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
        anim._node.setXY(Y.Anim.getBezier(to, t));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
    get: function(anim, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
        return anim._node.getXY();
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
 * Get the current position of the animated element based on t.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
 * 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
   677
 * At least 2 points are required (start and end).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
 * First point is start. Last point is end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
 * Additional control points are optional.     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
 * @for Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
 * @method getBezier
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
 * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
 * @param {Array} points An array containing Bezier points
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
 * @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
   685
 * @return {Array} An array containing int x and y member data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
Y.Anim.getBezier = function(points, t) {  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
    var n = points.length;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
    var tmp = [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
    for (var i = 0; i < n; ++i){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
        tmp[i] = [points[i][0], points[i][1]]; // save input
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
    }
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 j = 1; j < n; ++j) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
        for (i = 0; i < n - j; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
            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
   698
            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
   699
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
    return [ tmp[0][0], tmp[0][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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
}, '3.0.0' ,{requires:['anim-xy']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
YUI.add('anim-easing', function(Y) {
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
TERMS OF USE - EASING EQUATIONS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
Open source under the BSD License.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
Copyright 2001 Robert Penner All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
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
   716
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
 * 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
   718
 * 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
   719
 * 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
   720
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
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
   722
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
 * The easing module provides methods for customizing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
 * how an animation behaves during each run.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
 * @class Easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
 * @submodule anim-easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
Y.Easing = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
     * Uniform speed between points.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
     * @for Easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
     * @method easeNone
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
    easeNone: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
        return c*t/d + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
     * Begins slowly and accelerates towards end. (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
     * @method easeIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   754
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   755
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   756
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   757
    easeIn: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   758
        return c*(t/=d)*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   759
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
     * Begins quickly and decelerates towards end.  (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
     * @method easeOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   769
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   770
    easeOut: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   771
        return -c *(t/=d)*(t-2) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   772
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   773
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   774
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   775
     * Begins slowly and decelerates towards end. (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   776
     * @method easeBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   777
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   778
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   779
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   780
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   781
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   782
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   783
    easeBoth: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   784
        if ((t/=d/2) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   785
            return c/2*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   786
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   787
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   788
        return -c/2 * ((--t)*(t-2) - 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   789
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   790
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   791
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   792
     * Begins slowly and accelerates towards end. (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   793
     * @method easeInStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   794
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   795
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   796
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   797
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   798
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   799
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   800
    easeInStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   801
        return c*(t/=d)*t*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   802
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   803
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   804
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   805
     * Begins quickly and decelerates towards end.  (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   806
     * @method easeOutStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   807
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   808
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   809
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   810
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   811
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   812
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   813
    easeOutStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   814
        return -c * ((t=t/d-1)*t*t*t - 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   815
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   816
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   817
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   818
     * Begins slowly and decelerates towards end. (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   819
     * @method easeBothStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   820
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   821
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   822
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   823
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   824
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   825
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   826
    easeBothStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   827
        if ((t/=d/2) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   828
            return c/2*t*t*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   829
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   830
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   831
        return -c/2 * ((t-=2)*t*t*t - 2) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   832
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   833
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   834
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   835
     * Snap in elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   836
     * @method elasticIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   837
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   838
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   839
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   840
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   841
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   842
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   843
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   844
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   845
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   846
    elasticIn: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   847
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   848
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   849
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   850
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   851
        if ( (t /= d) === 1 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   852
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   853
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   854
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   855
            p = d* 0.3;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   856
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   857
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   858
        if (!a || a < Math.abs(c)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   859
            a = c; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   860
            s = p/4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   861
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   862
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   863
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   864
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   865
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   866
        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
   867
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   868
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   869
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   870
     * Snap out elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   871
     * @method elasticOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   872
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   873
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   874
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   875
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   876
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   877
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   878
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   879
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   880
    elasticOut: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   881
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   882
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   883
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   884
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   885
        if ( (t /= d) === 1 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   886
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   887
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   888
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   889
            p=d * 0.3;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   890
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   891
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   892
        if (!a || a < Math.abs(c)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   893
            a = c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   894
            s = p / 4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   895
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   896
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   897
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   898
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   899
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   900
        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
   901
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   902
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   903
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   904
     * Snap both elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   905
     * @method elasticBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   906
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   907
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   908
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   909
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   910
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   911
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   912
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   913
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   914
    elasticBoth: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   915
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   916
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   917
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   918
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   919
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   920
        if ( (t /= d/2) === 2 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   921
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   922
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   923
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   924
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   925
            p = d*(0.3*1.5);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   926
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   927
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   928
        if ( !a || a < Math.abs(c) ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   929
            a = c; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   930
            s = p/4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   931
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   932
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   933
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   934
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   935
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   936
        if (t < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   937
            return -0.5*(a*Math.pow(2,10*(t-=1)) * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   938
                    Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   939
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   940
        return a*Math.pow(2,-10*(t-=1)) * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   941
                Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   942
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   943
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   944
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   945
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   946
     * Backtracks slightly, then reverses direction and moves to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   947
     * @method backIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   948
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   949
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   950
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   951
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   952
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   953
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   954
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   955
    backIn: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   956
        if (s === undefined) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   957
            s = 1.70158;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   958
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   959
        if (t === d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   960
            t -= 0.001;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   961
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   962
        return c*(t/=d)*t*((s+1)*t - s) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   963
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   964
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   965
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   966
     * Overshoots end, then reverses and comes back to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   967
     * @method backOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   968
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   969
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   970
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   971
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   972
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   973
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   974
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   975
    backOut: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   976
        if (typeof s === 'undefined') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   977
            s = 1.70158;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   978
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   979
        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   980
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   981
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   982
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   983
     * Backtracks slightly, then reverses direction, overshoots end, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   984
     * then reverses and comes back to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   985
     * @method backBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   986
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   987
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   988
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   989
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   990
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   991
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   992
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   993
    backBoth: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   994
        if (typeof s === 'undefined') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   995
            s = 1.70158; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   996
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   997
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   998
        if ((t /= d/2 ) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   999
            return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1000
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1001
        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
  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
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1005
     * Bounce off of start.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1006
     * @method bounceIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1007
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1008
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1009
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1010
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1011
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1012
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1013
    bounceIn: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1014
        return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1015
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1016
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1017
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1018
     * Bounces off end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1019
     * @method bounceOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1020
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1021
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1022
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1023
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1024
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1025
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1026
    bounceOut: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1027
        if ((t/=d) < (1/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1028
                return c*(7.5625*t*t) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1029
        } else if (t < (2/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1030
                return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1031
        } else if (t < (2.5/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1032
                return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1033
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1034
        return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1035
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1036
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1037
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1038
     * Bounces off start and end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1039
     * @method bounceBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1040
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1041
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1042
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1043
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1044
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1045
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1046
    bounceBoth: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1047
        if (t < d/2) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1048
            return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1049
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1050
        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
  1051
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1052
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1053
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1054
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1055
}, '3.0.0' ,{requires:['anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1056
YUI.add('anim-node-plugin', function(Y) {
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
 *  Binds an Anim instance to a Node instance
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1060
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1061
 * @class Plugin.NodeFX
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1062
 * @extends Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1063
 * @submodule anim-node-plugin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1064
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1065
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1066
var NodeFX = function(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1067
    config = (config) ? Y.merge(config) : {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1068
    config.node = config.host;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1069
    NodeFX.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1070
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1071
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1072
NodeFX.NAME = "nodefx";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1073
NodeFX.NS = "fx";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1074
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1075
Y.extend(NodeFX, Y.Anim);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1076
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1077
Y.namespace('Plugin');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1078
Y.Plugin.NodeFX = NodeFX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1079
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1080
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1081
}, '3.0.0' ,{requires:['node-pluginhost', 'anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1082
YUI.add('anim-scroll', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1083
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1084
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1085
 * Adds support for the <code>scroll</code> property in <code>to</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1086
 * and <code>from</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1087
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1088
 * @submodule anim-scroll
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1089
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1090
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1091
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1092
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1093
//TODO: deprecate for scrollTop/Left properties?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1094
Y.Anim.behaviors.scroll = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1095
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1096
        var
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1097
            node = anim._node, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1098
            val = ([
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1099
            fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1100
            fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1101
        ]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1102
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1103
        if (val[0]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1104
            node.set('scrollLeft', val[0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1105
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1106
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1107
        if (val[1]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1108
            node.set('scrollTop', val[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1109
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1110
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1111
    get: function(anim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1112
        var node = anim._node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1113
        return [node.get('scrollLeft'), node.get('scrollTop')];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1114
    }
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1118
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1119
}, '3.0.0' ,{requires:['anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1120
YUI.add('anim-xy', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1121
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1122
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1123
 * Adds support for the <code>xy</code> property in <code>from</code> and 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1124
 * <code>to</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1125
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1126
 * @submodule anim-xy
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
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1130
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1131
Y.Anim.behaviors.xy = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1132
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1133
        anim._node.setXY([
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1134
            fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1135
            fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1136
        ]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1137
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1138
    get: function(anim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1139
        return anim._node.getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1140
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1141
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1142
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1143
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1144
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1145
}, '3.0.0' ,{requires:['anim-base', 'node-screen']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1146
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1147
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1148
YUI.add('anim', function(Y){}, '3.0.0' ,{use:['anim-base', 'anim-color', 'anim-curve', 'anim-easing', 'anim-node-plugin', 'anim-scroll', 'anim-xy'], skinnable:false});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1149