src/cm/media/js/lib/yui/yui3.0.0/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.0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
build: 1549
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
YUI.add('anim-base', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
* The Animation Utility provides an API for creating advanced transitions.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
* @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
* Provides the base Anim class, for animating numeric properties.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
*
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
* @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
* @submodule anim-base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
     * A class for constructing animation instances.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
     * @class Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
     * @for Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
     * @constructor
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
     * @extends Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
    var RUNNING = 'running',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
        START_TIME = 'startTime',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
        ELAPSED_TIME = 'elapsedTime',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
        * @for Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
        * @event start
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
        * @description fires when an animation begins.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
        * @param {Event} ev The start event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
        * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
        START = 'start',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
        * @event tween
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
        * @description fires every frame of the animation.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
        * @param {Event} ev The tween event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
        * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
        TWEEN = 'tween',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
        * @event end
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
        * @description fires after the animation completes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
        * @param {Event} ev The end event.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
        * @type Event.Custom
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
        */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
        END = 'end',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
        NODE = 'node',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
        PAUSED = 'paused',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
        REVERSE = 'reverse', // TODO: cleanup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
        ITERATION_COUNT = 'iterationCount',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
        NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
    var _running = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
        _instances = {},
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
        _timer;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
    Y.Anim = function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
        Y.Anim.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
        _instances[Y.stamp(this)] = this;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
    Y.Anim.NAME = 'anim';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
     * Regex of properties that should use the default unit.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
     * @property RE_DEFAULT_UNIT
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
    Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
     * The default unit to use with properties that pass the RE_DEFAULT_UNIT test.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
     * @property DEFAULT_UNIT
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
    Y.Anim.DEFAULT_UNIT = 'px';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
    Y.Anim.DEFAULT_EASING = function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
        return c * t / d + b; // linear easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
     * Bucket for custom getters and setters
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
     * @property behaviors
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
    Y.Anim.behaviors = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
        left: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
            get: function(anim, attr) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
                return anim._getOffset(attr);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
    Y.Anim.behaviors.top = Y.Anim.behaviors.left;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
     * The default setter to use when setting object properties.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
     * @property DEFAULT_SETTER
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
    Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
        unit = unit || '';
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
        anim._node.setStyle(att, fn(elapsed, NUM(from), NUM(to) - NUM(from), duration) + unit);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
     * The default getter to use when getting object properties.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
     *
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
     * @property DEFAULT_GETTER
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
     * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
    Y.Anim.DEFAULT_GETTER = function(anim, prop) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
        return anim._node.getComputedStyle(prop);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
    };
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
    Y.Anim.ATTRS = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
        /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
         * The object to be animated.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
         * @attribute node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
         * @type Node
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
         */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
        node: {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
            setter: function(node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
                node = Y.get(node);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
                this._node = node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
                if (!node) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
                    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 paused 
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
}, '3.0.0' ,{requires:['base-base', 'node-style']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
YUI.add('anim-color', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
 * Adds support for color properties in <code>to</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
 * and <code>from</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
 * @submodule anim-color
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
Y.Anim.behaviors.color = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
        from = Y.Color.re_RGB.exec(Y.Color.toRGB(from));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
        to = Y.Color.re_RGB.exec(Y.Color.toRGB(to));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
        if (!from || from.length < 3 || !to || to.length < 3) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
            Y.error('invalid from or to passed to color behavior');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
        anim._node.setStyle(att, 'rgb(' + [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
            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
   626
            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
   627
            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
   628
        ].join(', ') + ')');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
    // TODO: default bgcolor const
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
    get: function(anim, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
        var val = anim._node.getComputedStyle(att);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
        val = (val === 'transparent') ? 'rgb(255, 255, 255)' : val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
        return val;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
Y.each(['backgroundColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
        'borderColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
        'borderTopColor',
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
        'borderRightColor', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
        'borderBottomColor', 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
        'borderLeftColor'],
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
        function(v, i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
            Y.Anim.behaviors[v] = Y.Anim.behaviors.color;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
}, '3.0.0' ,{requires:['anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
YUI.add('anim-curve', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
 * Adds support for the <code>curve</code> property for the <code>to</code> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
 * attribute.  A curve is zero or more control points and an end point.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
 * @submodule anim-curve
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
Y.Anim.behaviors.curve = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
        from = from.slice.call(from);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
        to = to.slice.call(to);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
        var t = fn(elapsed, 0, 100, duration) / 100;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
        to.unshift(from);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
        anim._node.setXY(Y.Anim.getBezier(to, t));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
    get: function(anim, att) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
        return anim._node.getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
 * Get the current position of the animated element based on t.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
 * 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
   678
 * At least 2 points are required (start and end).
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
 * First point is start. Last point is end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
 * Additional control points are optional.     
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
 * @for Anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
 * @method getBezier
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
 * @static
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
 * @param {Array} points An array containing Bezier points
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
 * @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
   686
 * @return {Array} An array containing int x and y member data
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
Y.Anim.getBezier = function(points, t) {  
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
    var n = points.length;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
    var tmp = [];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
    for (var i = 0; i < n; ++i){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
        tmp[i] = [points[i][0], points[i][1]]; // save input
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
    }
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 j = 1; j < n; ++j) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
        for (i = 0; i < n - j; ++i) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
            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
   699
            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
   700
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
    return [ tmp[0][0], tmp[0][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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
}, '3.0.0' ,{requires:['anim-xy']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
YUI.add('anim-easing', function(Y) {
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
TERMS OF USE - EASING EQUATIONS
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
Open source under the BSD License.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
Copyright 2001 Robert Penner All rights reserved.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
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
   717
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
 * 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
   719
 * 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
   720
 * 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
   721
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
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
   723
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
 * The easing module provides methods for customizing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
 * how an animation behaves during each run.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
 * @class Easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
 * @submodule anim-easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
Y.Easing = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
     * Uniform speed between points.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
     * @for Easing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
     * @method easeNone
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
    easeNone: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
        return c*t/d + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
     * Begins slowly and accelerates towards end. (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
     * @method easeIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   753
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   754
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   755
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   756
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   757
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   758
    easeIn: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   759
        return c*(t/=d)*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   760
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   761
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   762
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   763
     * Begins quickly and decelerates towards end.  (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   764
     * @method easeOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   765
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   766
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   767
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   768
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   769
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   770
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   771
    easeOut: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   772
        return -c *(t/=d)*(t-2) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   773
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   774
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   775
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   776
     * Begins slowly and decelerates towards end. (quadratic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   777
     * @method easeBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   778
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   779
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   780
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   781
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   782
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   783
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   784
    easeBoth: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   785
        if ((t/=d/2) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   786
            return c/2*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   787
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   788
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   789
        return -c/2 * ((--t)*(t-2) - 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   790
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   791
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   792
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   793
     * Begins slowly and accelerates towards end. (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   794
     * @method easeInStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   795
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   796
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   797
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   798
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   799
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   800
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   801
    easeInStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   802
        return c*(t/=d)*t*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   803
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   804
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   805
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   806
     * Begins quickly and decelerates towards end.  (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   807
     * @method easeOutStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   808
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   809
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   810
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   811
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   812
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   813
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   814
    easeOutStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   815
        return -c * ((t=t/d-1)*t*t*t - 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   816
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   817
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   818
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   819
     * Begins slowly and decelerates towards end. (quartic)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   820
     * @method easeBothStrong
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   821
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   822
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   823
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   824
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   825
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   826
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   827
    easeBothStrong: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   828
        if ((t/=d/2) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   829
            return c/2*t*t*t*t + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   830
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   831
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   832
        return -c/2 * ((t-=2)*t*t*t - 2) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   833
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   834
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   835
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   836
     * Snap in elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   837
     * @method elasticIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   838
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   839
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   840
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   841
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   842
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   843
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   844
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   845
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   846
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   847
    elasticIn: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   848
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   849
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   850
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   851
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   852
        if ( (t /= d) === 1 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   853
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   854
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   855
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   856
            p = d* 0.3;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   857
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   858
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   859
        if (!a || a < Math.abs(c)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   860
            a = c; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   861
            s = p/4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   862
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   863
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   864
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   865
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   866
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   867
        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
   868
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   869
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   870
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   871
     * Snap out elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   872
     * @method elasticOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   873
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   874
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   875
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   876
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   877
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   878
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   879
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   880
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   881
    elasticOut: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   882
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   883
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   884
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   885
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   886
        if ( (t /= d) === 1 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   887
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   888
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   889
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   890
            p=d * 0.3;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   891
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   892
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   893
        if (!a || a < Math.abs(c)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   894
            a = c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   895
            s = p / 4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   896
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   897
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   898
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   899
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   900
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   901
        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
   902
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   903
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   904
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   905
     * Snap both elastic effect.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   906
     * @method elasticBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   907
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   908
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   909
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   910
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   911
     * @param {Number} a Amplitude (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   912
     * @param {Number} p Period (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   913
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   914
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   915
    elasticBoth: function (t, b, c, d, a, p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   916
        var s;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   917
        if (t === 0) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   918
            return b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   919
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   920
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   921
        if ( (t /= d/2) === 2 ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   922
            return b+c;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   923
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   924
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   925
        if (!p) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   926
            p = d*(0.3*1.5);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   927
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   928
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   929
        if ( !a || a < Math.abs(c) ) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   930
            a = c; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   931
            s = p/4;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   932
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   933
        else {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   934
            s = p/(2*Math.PI) * Math.asin (c/a);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   935
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   936
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   937
        if (t < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   938
            return -0.5*(a*Math.pow(2,10*(t-=1)) * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   939
                    Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   940
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   941
        return a*Math.pow(2,-10*(t-=1)) * 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   942
                Math.sin( (t*d-s)*(2*Math.PI)/p )*0.5 + c + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   943
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   944
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   945
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   946
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   947
     * Backtracks slightly, then reverses direction and moves to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   948
     * @method backIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   949
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   950
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   951
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   952
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   953
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   954
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   955
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   956
    backIn: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   957
        if (s === undefined) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   958
            s = 1.70158;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   959
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   960
        if (t === d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   961
            t -= 0.001;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   962
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   963
        return c*(t/=d)*t*((s+1)*t - s) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   964
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   965
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   966
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   967
     * Overshoots end, then reverses and comes back to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   968
     * @method backOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   969
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   970
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   971
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   972
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   973
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   974
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   975
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   976
    backOut: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   977
        if (typeof s === 'undefined') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   978
            s = 1.70158;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   979
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   980
        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   981
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   982
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   983
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   984
     * Backtracks slightly, then reverses direction, overshoots end, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   985
     * then reverses and comes back to end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   986
     * @method backBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   987
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   988
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   989
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   990
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   991
     * @param {Number} s Overshoot (optional)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   992
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   993
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   994
    backBoth: function (t, b, c, d, s) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   995
        if (typeof s === 'undefined') {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   996
            s = 1.70158; 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   997
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   998
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   999
        if ((t /= d/2 ) < 1) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1000
            return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1001
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1002
        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
  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
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1006
     * Bounce off of start.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1007
     * @method bounceIn
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1008
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1009
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1010
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1011
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1012
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1013
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1014
    bounceIn: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1015
        return c - Y.Easing.bounceOut(d-t, 0, c, d) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1016
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1017
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1018
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1019
     * Bounces off end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1020
     * @method bounceOut
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1021
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1022
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1023
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1024
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1025
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1026
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1027
    bounceOut: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1028
        if ((t/=d) < (1/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1029
                return c*(7.5625*t*t) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1030
        } else if (t < (2/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1031
                return c*(7.5625*(t-=(1.5/2.75))*t + 0.75) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1032
        } else if (t < (2.5/2.75)) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1033
                return c*(7.5625*(t-=(2.25/2.75))*t + 0.9375) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1034
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1035
        return c*(7.5625*(t-=(2.625/2.75))*t + 0.984375) + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1036
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1037
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1038
    /**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1039
     * Bounces off start and end.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1040
     * @method bounceBoth
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1041
     * @param {Number} t Time value used to compute current value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1042
     * @param {Number} b Starting value
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1043
     * @param {Number} c Delta between start and end values
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1044
     * @param {Number} d Total length of animation
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1045
     * @return {Number} The computed value for the current animation frame
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1046
     */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1047
    bounceBoth: function (t, b, c, d) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1048
        if (t < d/2) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1049
            return Y.Easing.bounceIn(t * 2, 0, c, d) * 0.5 + b;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1050
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1051
        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
  1052
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1053
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1054
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1055
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1056
}, '3.0.0' ,{requires:['anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1057
YUI.add('anim-node-plugin', function(Y) {
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
 *  Binds an Anim instance to a Node instance
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1061
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1062
 * @class Plugin.NodeFX
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1063
 * @extends Base
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1064
 * @submodule anim-node-plugin
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1065
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1066
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1067
var NodeFX = function(config) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1068
    config = (config) ? Y.merge(config) : {};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1069
    config.node = config.host;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1070
    NodeFX.superclass.constructor.apply(this, arguments);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1071
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1072
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1073
NodeFX.NAME = "nodefx";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1074
NodeFX.NS = "fx";
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1075
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1076
Y.extend(NodeFX, Y.Anim);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1077
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1078
Y.namespace('Plugin');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1079
Y.Plugin.NodeFX = NodeFX;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1080
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1081
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1082
}, '3.0.0' ,{requires:['node-pluginhost', 'anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1083
YUI.add('anim-scroll', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1084
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1085
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1086
 * Adds support for the <code>scroll</code> property in <code>to</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1087
 * and <code>from</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1088
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1089
 * @submodule anim-scroll
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1090
 */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1091
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1092
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1093
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1094
//TODO: deprecate for scrollTop/Left properties?
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1095
Y.Anim.behaviors.scroll = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1096
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1097
        var
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1098
            node = anim._node, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1099
            val = ([
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1100
            fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1101
            fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1102
        ]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1103
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1104
        if (val[0]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1105
            node.set('scrollLeft', val[0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1106
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1107
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1108
        if (val[1]) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1109
            node.set('scrollTop', val[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1110
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1111
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1112
    get: function(anim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1113
        var node = anim._node;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1114
        return [node.get('scrollLeft'), node.get('scrollTop')];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1115
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1116
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1117
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1118
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1119
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1120
}, '3.0.0' ,{requires:['anim-base']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1121
YUI.add('anim-xy', function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1122
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1123
/**
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1124
 * Adds support for the <code>xy</code> property in <code>from</code> and 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1125
 * <code>to</code> attributes.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1126
 * @module anim
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1127
 * @submodule anim-xy
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
var NUM = Number;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1131
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1132
Y.Anim.behaviors.xy = {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1133
    set: function(anim, att, from, to, elapsed, duration, fn) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1134
        anim._node.setXY([
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1135
            fn(elapsed, NUM(from[0]), NUM(to[0]) - NUM(from[0]), duration),
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1136
            fn(elapsed, NUM(from[1]), NUM(to[1]) - NUM(from[1]), duration)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1137
        ]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1138
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1139
    get: function(anim) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1140
        return anim._node.getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1141
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1142
};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1143
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1144
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1145
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1146
}, '3.0.0' ,{requires:['anim-base', 'node-screen']});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1147
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1148
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1149
YUI.add('anim', function(Y){}, '3.0.0' ,{use:['anim-base', 'anim-color', 'anim-curve', 'anim-easing', 'anim-node-plugin', 'anim-scroll', 'anim-xy'], skinnable:false});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
  1150