]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - jssource/src_files/include/javascript/yui3/build/yui/yui-later.js
Release 6.5.0
[Github/sugarcrm.git] / jssource / src_files / include / javascript / yui3 / build / yui / yui-later.js
1 /*
2 Copyright (c) 2010, Yahoo! Inc. All rights reserved.
3 Code licensed under the BSD License:
4 http://developer.yahoo.com/yui/license.html
5 version: 3.3.0
6 build: 3167
7 */
8 YUI.add('yui-later', function(Y) {
9
10 /**
11  * Provides a setTimeout/setInterval wrapper
12  * @module yui
13  * @submodule yui-later
14  */
15
16 /**
17  * Executes the supplied function in the context of the supplied
18  * object 'when' milliseconds later.  Executes the function a
19  * single time unless periodic is set to true.
20  * @method later
21  * @for YUI
22  * @param when {int} the number of milliseconds to wait until the fn
23  * is executed.
24  * @param o the context object.
25  * @param fn {Function|String} the function to execute or the name of
26  * the method in the 'o' object to execute.
27  * @param data [Array] data that is provided to the function.  This
28  * accepts either a single item or an array.  If an array is provided,
29  * the function is executed with one parameter for each array item.
30  * If you need to pass a single array parameter, it needs to be wrapped
31  * in an array [myarray].
32  * @param periodic {boolean} if true, executes continuously at supplied
33  * interval until canceled.
34  * @return {object} a timer object. Call the cancel() method on this
35  * object to stop the timer.
36  */
37 Y.later = function(when, o, fn, data, periodic) {
38     when = when || 0;
39
40     var m = fn, f, id;
41
42     if (o && Y.Lang.isString(fn)) {
43         m = o[fn];
44     }
45
46     f = !Y.Lang.isUndefined(data) ? function() {
47         m.apply(o, Y.Array(data));
48     } : function() {
49         m.call(o);
50     };
51
52     id = (periodic) ? setInterval(f, when) : setTimeout(f, when);
53
54     return {
55         id: id,
56         interval: periodic,
57         cancel: function() {
58             if (this.interval) {
59                 clearInterval(id);
60             } else {
61                 clearTimeout(id);
62             }
63         }
64     };
65 };
66
67 Y.Lang.later = Y.later;
68
69
70
71 }, '3.3.0' ,{requires:['yui-base']});