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