+++ /dev/null
-<html><head><title>/home/alan/gitlive/roojs1/Function.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
- * Based on:
- * Ext JS Library 1.1.1
- * Copyright(c) 2006-2007, Ext JS, LLC.
- *
- * Originally Released Under LGPL - original licence link has changed is not relivant.
- *
- * Fork - LGPL
- * <script type="text/javascript">
- */
-
-</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
- </span><span class="jsdoc-comment">// wrappedn so fnCleanup is not in global scope...
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">) {
- </span><span class="jsdoc-keyword">function </span><span class="jsdoc-var">fnCleanUp</span><span class="jsdoc-syntax">() {
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Function.prototype</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">p.createSequence</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">p.defer</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">p.createDelegate</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">p.createCallback</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">p.createInterceptor</span><span class="jsdoc-syntax">;
-
- </span><span class="jsdoc-var">window.detachEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"onunload"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fnCleanUp</span><span class="jsdoc-syntax">);
- }
- </span><span class="jsdoc-var">window.attachEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"onunload"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fnCleanUp</span><span class="jsdoc-syntax">);
- }
-})();
-
-
-</span><span class="jsdoc-comment">/**
- * @class Function
- * These functions are available on every Function object (any JavaScript function).
- */
-</span><span class="jsdoc-var">Roo.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Function.prototype</span><span class="jsdoc-syntax">, {
- </span><span class="jsdoc-comment">/**
- * Creates a callback that passes arguments[0], arguments[1], arguments[2], ...
- * Call directly on any function. Example: <code>myFunction.createCallback(myarg, myarg2)</code>
- * Will create a function that is bound to those 2 args.
- * @return {Function} The new function
- */
- </span><span class="jsdoc-var">createCallback </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-comment">/*args...*/</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-comment">// make args available, in function below
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">() {
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">method.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">);
- };
- },
-
- </span><span class="jsdoc-comment">/**
- * Creates a delegate (callback) that sets the scope to obj.
- * Call directly on any function. Example: <code>this.myFunction.createDelegate(this)</code>
- * Will create a function that is automatically scoped to this.
- * @param {Object} obj (optional) The object for which the scope is set
- * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
- * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
- * if a number the args are inserted at the specified position
- * @return {Function} The new function
- */
- </span><span class="jsdoc-var">createDelegate </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">appendArgs</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">() {
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">callArgs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">args </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">appendArgs </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">callArgs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.prototype.slice.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">, 0);
- </span><span class="jsdoc-var">callArgs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">callArgs.concat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">);
- }</span><span class="jsdoc-keyword">else if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">appendArgs </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">"number"</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-var">callArgs </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Array.prototype.slice.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">, 0); </span><span class="jsdoc-comment">// copy arguments first
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">applyArgs </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-var">appendArgs</span><span class="jsdoc-syntax">, 0]</span><span class="jsdoc-var">.concat</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// create method call params
- </span><span class="jsdoc-var">Array.prototype.splice.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">callArgs</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">applyArgs</span><span class="jsdoc-syntax">); </span><span class="jsdoc-comment">// splice them in
- </span><span class="jsdoc-syntax">}
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">method.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">callArgs</span><span class="jsdoc-syntax">);
- };
- },
-
- </span><span class="jsdoc-comment">/**
- * Calls this function after the number of millseconds specified.
- * @param {Number} millis The number of milliseconds for the setTimeout call (if 0 the function is executed immediately)
- * @param {Object} obj (optional) The object for which the scope is set
- * @param {Array} args (optional) Overrides arguments for the call. (Defaults to the arguments passed by the caller)
- * @param {Boolean/Number} appendArgs (optional) if True args are appended to call args instead of overriding,
- * if a number the args are inserted at the specified position
- * @return {Number} The timeout id that can be used with clearTimeout
- */
- </span><span class="jsdoc-var">defer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">millis</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">appendArgs</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">fn </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.createDelegate</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">appendArgs</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">millis</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">setTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">millis</span><span class="jsdoc-syntax">);
- }
- </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">();
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">0;
- },
- </span><span class="jsdoc-comment">/**
- * Create a combined function call sequence of the original function + the passed function.
- * The resulting function returns the results of the original function.
- * The passed fcn is called with the parameters of the original function
- * @param {Function} fcn The function to sequence
- * @param {Object} scope (optional) The scope of the passed fcn (Defaults to scope of original function or window)
- * @return {Function} The new function
- */
- </span><span class="jsdoc-var">createSequence </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fcn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">fcn </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
- }
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">() {
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">retval </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">method.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-var">fcn.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">retval</span><span class="jsdoc-syntax">;
- };
- },
-
- </span><span class="jsdoc-comment">/**
- * Creates an interceptor function. The passed fcn is called before the original one. If it returns false, the original one is not called.
- * The resulting function returns the results of the original function.
- * The passed fcn is called with the parameters of the original function.
- * @addon
- * @param {Function} fcn The function to call before the original
- * @param {Object} scope (optional) The scope of the passed fcn (Defaults to scope of original function or window)
- * @return {Function} The new function
- */
- </span><span class="jsdoc-var">createInterceptor </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fcn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">fcn </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-string">"function"</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
- }
- </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">method </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">return function</span><span class="jsdoc-syntax">() {
- </span><span class="jsdoc-var">fcn.target </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-var">fcn.method </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">method</span><span class="jsdoc-syntax">;
- </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fcn.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">){
- </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
- }
- </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">method.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">arguments</span><span class="jsdoc-syntax">);
- };
- }
-});
-</span></code></body></html>
\ No newline at end of file