src/cm/media/js/lib/yui/yui_3.10.3/build/anim-base/anim-base-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('anim-base', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
* The Animation Utility provides an API for creating advanced transitions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
* @module anim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
* Provides the base Anim class, for animating numeric properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
* @module anim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
* @submodule anim-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
     * A class for constructing animation instances.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
     * @class Anim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
     * @for Anim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
     * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
     * @extends Base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    var RUNNING = 'running',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
        START_TIME = 'startTime',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
        ELAPSED_TIME = 'elapsedTime',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        * @for Anim
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        * @event start
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        * @description fires when an animation begins.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        * @param {Event} ev The start event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        * @type Event.Custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
        START = 'start',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        * @event tween
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
        * @description fires every frame of the animation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
        * @param {Event} ev The tween event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
        * @type Event.Custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        TWEEN = 'tween',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        * @event end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        * @description fires after the animation completes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        * @param {Event} ev The end event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
        * @type Event.Custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
        END = 'end',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        NODE = 'node',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        PAUSED = 'paused',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        REVERSE = 'reverse', // TODO: cleanup
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
        ITERATION_COUNT = 'iterationCount',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        NUM = Number;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    var _running = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        _timer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    Y.Anim = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        Y.Anim.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        Y.Anim._instances[Y.stamp(this)] = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    Y.Anim.NAME = 'anim';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    Y.Anim._instances = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
     * Regex of properties that should use the default unit.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * @property RE_DEFAULT_UNIT
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    Y.Anim.RE_DEFAULT_UNIT = /^width|height|top|right|bottom|left|margin.*|padding.*|border.*$/i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
     * The default unit to use with properties that pass the RE_DEFAULT_UNIT test.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
     * @property DEFAULT_UNIT
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    Y.Anim.DEFAULT_UNIT = 'px';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    Y.Anim.DEFAULT_EASING = function (t, b, c, d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
        return c * t / d + b; // linear easing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
     * Time in milliseconds passed to setInterval for frame processing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
     * @property intervalTime
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
     * @default 20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    Y.Anim._intervalTime = 20;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
     * Bucket for custom getters and setters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
     * @property behaviors
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    Y.Anim.behaviors = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
        left: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
            get: function(anim, attr) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
                return anim._getOffset(attr);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    Y.Anim.behaviors.top = Y.Anim.behaviors.left;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
     * The default setter to use when setting object properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
     * @property DEFAULT_SETTER
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    Y.Anim.DEFAULT_SETTER = function(anim, att, from, to, elapsed, duration, fn, unit) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
        var node = anim._node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            domNode = node._node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
            val = fn(elapsed, NUM(from), NUM(to) - NUM(from), duration);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        if (domNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
            if ('style' in domNode && (att in domNode.style || att in Y.DOM.CUSTOM_STYLES)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
                unit = unit || '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
                node.setStyle(att, val + unit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
            } else if ('attributes' in domNode && att in domNode.attributes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
                node.setAttribute(att, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
            } else if (att in domNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
                domNode[att] = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
        } else if (node.set) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
            node.set(att, val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        } else if (att in node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            node[att] = val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
     * The default getter to use when getting object properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
     * @property DEFAULT_GETTER
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
    Y.Anim.DEFAULT_GETTER = function(anim, att) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        var node = anim._node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
            domNode = node._node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
            val = '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        if (domNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
            if ('style' in domNode && (att in domNode.style || att in Y.DOM.CUSTOM_STYLES)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
                val = node.getComputedStyle(att);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
            } else if ('attributes' in domNode && att in domNode.attributes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
                val = node.getAttribute(att);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
            } else if (att in domNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
                val = domNode[att];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
        } else if (node.get) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
            val = node.get(att);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
        } else if (att in node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
            val = node[att];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
        return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    Y.Anim.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
         * The object to be animated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
         * @attribute node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
         * @type Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
        node: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
            setter: function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
                if (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
                    if (typeof node === 'string' || node.nodeType) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
                        node = Y.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
                this._node = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
                if (!node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
                    Y.log(node + ' is not a valid node', 'warn', 'Anim');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
                return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
         * The length of the animation.  Defaults to "1" (second).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
         * @attribute duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
         * @type NUM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
        duration: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            value: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
         * The method that will provide values to the attribute(s) during the animation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
         * Defaults to "Easing.easeNone".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
         * @attribute easing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
         * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
        easing: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            value: Y.Anim.DEFAULT_EASING,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
            setter: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
                if (typeof val === 'string' && Y.Easing) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
                    return Y.Easing[val];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
         * The starting values for the animated properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
         * Fields may be strings, numbers, or functions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
         * If a function is used, the return value becomes the from value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
         * If no from value is specified, the DEFAULT_GETTER will be used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
         * Supports any unit, provided it matches the "to" (or default)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
         * unit (e.g. `{width: '10em', color: 'rgb(0, 0, 0)', borderColor: '#ccc'}`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
         * If using the default ('px' for length-based units), the unit may be omitted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
         * (e.g. `{width: 100}, borderColor: 'ccc'}`, which defaults to pixels
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
         * and hex, respectively).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
         * @attribute from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
        from: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
         * The ending values for the animated properties.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
         * Fields may be strings, numbers, or functions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
         * Supports any unit, provided it matches the "from" (or default)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
         * unit (e.g. `{width: '50%', color: 'red', borderColor: '#ccc'}`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
         * If using the default ('px' for length-based units), the unit may be omitted
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
         * (e.g. `{width: 100, borderColor: 'ccc'}`, which defaults to pixels
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
         * and hex, respectively).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
         * @attribute to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        to: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
         * Date stamp for the first frame of the animation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
         * @attribute startTime
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
         * @type Int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
         * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
        startTime: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            readOnly: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
         * Current time the animation has been running.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
         * @attribute elapsedTime
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
         * @type Int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
         * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        elapsedTime: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            readOnly: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
         * Whether or not the animation is currently running.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
         * @attribute running
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
         * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
         * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
        running: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
            getter: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
                return !!_running[Y.stamp(this)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            value: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            readOnly: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
         * The number of times the animation should run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
         * @attribute iterations
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
         * @type Int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
         * @default 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
        iterations: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
            value: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
         * The number of iterations that have occurred.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
         * Resets when an animation ends (reaches iteration count or stop() called).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
         * @attribute iterationCount
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
         * @type Int
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
         * @default 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
        iterationCount: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
            value: 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
            readOnly: true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
         * How iterations of the animation should behave.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
         * Possible values are "normal" and "alternate".
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
         * Normal will repeat the animation, alternate will reverse on every other pass.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
         * @attribute direction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
         * @default "normal"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        direction: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
            value: 'normal' // | alternate (fwd on odd, rev on even per spec)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
         * Whether or not the animation is currently paused.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
         * @attribute paused
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
         * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
         * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        paused: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
         * If true, animation begins from last frame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
         * @attribute reverse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
         * @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
         * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
        reverse: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
     * Runs all animation instances.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
     * @method run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    Y.Anim.run = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
        var instances = Y.Anim._instances,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
            i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
        for (i in instances) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
            if (instances[i].run) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
                instances[i].run();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * Pauses all animation instances.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     * @method pause
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
    Y.Anim.pause = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
        for (var i in _running) { // stop timer if nothing running
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
            if (_running[i].pause) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
                _running[i].pause();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
        Y.Anim._stopTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
     * Stops all animation instances.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
     * @method stop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
    Y.Anim.stop = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
        for (var i in _running) { // stop timer if nothing running
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
            if (_running[i].stop) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
                _running[i].stop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
        Y.Anim._stopTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    Y.Anim._startTimer = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
        if (!_timer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
            _timer = setInterval(Y.Anim._runFrame, Y.Anim._intervalTime);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
    Y.Anim._stopTimer = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
        clearInterval(_timer);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
        _timer = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
     * Called per Interval to handle each animation frame.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
     * @method _runFrame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
     * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
    Y.Anim._runFrame = function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
        var done = true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
            anim;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
        for (anim in _running) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
            if (_running[anim]._runFrame) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
                done = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
                _running[anim]._runFrame();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
        if (done) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
            Y.Anim._stopTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
    Y.Anim.RE_UNITS = /^(-?\d*\.?\d*){1}(em|ex|px|in|cm|mm|pt|pc|%)*$/;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
    var proto = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
         * Starts or resumes an animation.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
         * @method run
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
         * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        run: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
            if (this.get(PAUSED)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
                this._resume();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            } else if (!this.get(RUNNING)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
                this._start();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
         * Pauses the animation and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
         * freezes it in its current state and time.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
         * Calling run() will continue where it left off.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
         * @method pause
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
         * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        pause: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
            if (this.get(RUNNING)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
                this._pause();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
         * Stops the animation and resets its time.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
         * @method stop
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
         * @param {Boolean} finish If true, the animation will move to the last frame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
         * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
        stop: function(finish) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
            if (this.get(RUNNING) || this.get(PAUSED)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
                this._end(finish);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        _added: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
        _start: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
            this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
            this._actualFrames = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            if (!this.get(PAUSED)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
                this._initAnimAttr();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
            _running[Y.stamp(this)] = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
            Y.Anim._startTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
            this.fire(START);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
        _pause: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
            this._set(START_TIME, null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
            this._set(PAUSED, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
            delete _running[Y.stamp(this)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
            * @event pause
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
            * @description fires when an animation is paused.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
            * @param {Event} ev The pause event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
            * @type Event.Custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
            this.fire('pause');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
        _resume: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
            this._set(PAUSED, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
            _running[Y.stamp(this)] = this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
            this._set(START_TIME, new Date() - this.get(ELAPSED_TIME));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
            Y.Anim._startTimer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
            /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
            * @event resume
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
            * @description fires when an animation is resumed (run from pause).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
            * @param {Event} ev The pause event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
            * @type Event.Custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
            */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
            this.fire('resume');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
        _end: function(finish) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
            var duration = this.get('duration') * 1000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
            if (finish) { // jump to last frame
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
                this._runAttrs(duration, duration, this.get(REVERSE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
            this._set(START_TIME, null);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
            this._set(ELAPSED_TIME, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
            this._set(PAUSED, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
            delete _running[Y.stamp(this)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
            this.fire(END, {elapsed: this.get(ELAPSED_TIME)});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
        _runFrame: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
            var d = this._runtimeAttr.duration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
                t = new Date() - this.get(START_TIME),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
                reverse = this.get(REVERSE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
                done = (t >= d);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
            this._runAttrs(t, d, reverse);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
            this._actualFrames += 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
            this._set(ELAPSED_TIME, t);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
            this.fire(TWEEN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
            if (done) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                this._lastFrame();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
        _runAttrs: function(t, d, reverse) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
            var attr = this._runtimeAttr,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                customAttr = Y.Anim.behaviors,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                easing = attr.easing,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
                lastFrame = d,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
                done = false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
                attribute,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
                setter,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
                i;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
            if (t >= d) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
                done = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
            if (reverse) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
                t = d - t;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
                lastFrame = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
            for (i in attr) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
                if (attr[i].to) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
                    attribute = attr[i];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
                    setter = (i in customAttr && 'set' in customAttr[i]) ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
                            customAttr[i].set : Y.Anim.DEFAULT_SETTER;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
                    if (!done) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
                        setter(this, i, attribute.from, attribute.to, t, d, easing, attribute.unit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
                        setter(this, i, attribute.from, attribute.to, lastFrame, d, easing, attribute.unit);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
        _lastFrame: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
            var iter = this.get('iterations'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
                iterCount = this.get(ITERATION_COUNT);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
            iterCount += 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
            if (iter === 'infinite' || iterCount < iter) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
                if (this.get('direction') === 'alternate') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
                    this.set(REVERSE, !this.get(REVERSE)); // flip it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
                /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
                * @event iteration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
                * @description fires when an animation begins an iteration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
                * @param {Event} ev The iteration event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
                * @type Event.Custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
                */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
                this.fire('iteration');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
                iterCount = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
                this._end();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
            this._set(START_TIME, new Date());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
            this._set(ITERATION_COUNT, iterCount);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
        _initAnimAttr: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
            var from = this.get('from') || {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
                to = this.get('to') || {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
                attr = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
                    duration: this.get('duration') * 1000,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
                    easing: this.get('easing')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
                },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
                customAttr = Y.Anim.behaviors,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
                node = this.get(NODE), // implicit attr init
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
                unit, begin, end;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
            Y.each(to, function(val, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
                if (typeof val === 'function') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
                    val = val.call(this, node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
                begin = from[name];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
                if (begin === undefined) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
                    begin = (name in customAttr && 'get' in customAttr[name])  ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
                            customAttr[name].get(this, name) : Y.Anim.DEFAULT_GETTER(this, name);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
                } else if (typeof begin === 'function') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
                    begin = begin.call(this, node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
                var mFrom = Y.Anim.RE_UNITS.exec(begin),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
                    mTo = Y.Anim.RE_UNITS.exec(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
                begin = mFrom ? mFrom[1] : begin;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
                end = mTo ? mTo[1] : val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
                unit = mTo ? mTo[2] : mFrom ?  mFrom[2] : ''; // one might be zero TODO: mixed units
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
                if (!unit && Y.Anim.RE_DEFAULT_UNIT.test(name)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
                    unit = Y.Anim.DEFAULT_UNIT;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
                if (!begin || !end) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
                    Y.error('invalid "from" or "to" for "' + name + '"', 'Anim');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
                    return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
                attr[name] = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
                    from: Y.Lang.isObject(begin) ? Y.clone(begin) : begin,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
                    to: end,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
                    unit: unit
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
                };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
            this._runtimeAttr = attr;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
        // TODO: move to computedStyle? (browsers dont agree on default computed offsets)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
        _getOffset: function(attr) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
            var node = this._node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
                val = node.getComputedStyle(attr),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
                get = (attr === 'left') ? 'getX': 'getY',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
                set = (attr === 'left') ? 'setX': 'setY',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
                position;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
            if (val === 'auto') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
                position = node.getStyle('position');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
                if (position === 'absolute' || position === 'fixed') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
                    val = node[get]();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
                    node[set](val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
                    val = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
        destructor: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
            delete Y.Anim._instances[Y.stamp(this)];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
    Y.extend(Y.Anim, Y.Base, proto);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
}, '3.10.3', {"requires": ["base-base", "node-style"]});