/*! 
 | 
Copyright (c) 2011, Yahoo! Inc. All rights reserved. 
 | 
Code licensed under the BSD License: 
 | 
http://developer.yahoo.com/yui/license.html 
 | 
version: 2.9.0 
 | 
*/ 
 | 
export var YAHOO = {}; 
 | 
YAHOO.lang = { 
 | 
    /** 
 | 
     * Utility to set up the prototype, constructor and superclass properties to 
 | 
     * support an inheritance strategy that can chain constructors and methods. 
 | 
     * Static members will not be inherited. 
 | 
     * 
 | 
     * @method extend 
 | 
     * @static 
 | 
     * @param {Function} subc   the object to modify 
 | 
     * @param {Function} superc the object to inherit 
 | 
     * @param {Object} overrides  additional properties/methods to add to the 
 | 
     *                              subclass prototype.  These will override the 
 | 
     *                              matching items obtained from the superclass 
 | 
     *                              if present. 
 | 
     */ 
 | 
    extend: function (subc, superc, overrides) { 
 | 
        if (!superc || !subc) { 
 | 
            throw new Error("YAHOO.lang.extend failed, please check that " + 
 | 
                "all dependencies are included."); 
 | 
        } 
 | 
        var F = function () { }; 
 | 
        F.prototype = superc.prototype; 
 | 
        subc.prototype = new F(); 
 | 
        subc.prototype.constructor = subc; 
 | 
        subc.superclass = superc.prototype; 
 | 
        if (superc.prototype.constructor == Object.prototype.constructor) { 
 | 
            superc.prototype.constructor = superc; 
 | 
        } 
 | 
        if (overrides) { 
 | 
            var i; 
 | 
            for (i in overrides) { 
 | 
                subc.prototype[i] = overrides[i]; 
 | 
            } 
 | 
            /* 
 | 
             * IE will not enumerate native functions in a derived object even if the 
 | 
             * function was overridden.  This is a workaround for specific functions 
 | 
             * we care about on the Object prototype. 
 | 
             * @property _IEEnumFix 
 | 
             * @param {Function} r  the object to receive the augmentation 
 | 
             * @param {Function} s  the object that supplies the properties to augment 
 | 
             * @static 
 | 
             * @private 
 | 
             */ 
 | 
            var _IEEnumFix = function () { }, ADD = ["toString", "valueOf"]; 
 | 
            try { 
 | 
                if (/MSIE/.test(navigator.userAgent)) { 
 | 
                    _IEEnumFix = function (r, s) { 
 | 
                        for (i = 0; i < ADD.length; i = i + 1) { 
 | 
                            var fname = ADD[i], f = s[fname]; 
 | 
                            if (typeof f === 'function' && f != Object.prototype[fname]) { 
 | 
                                r[fname] = f; 
 | 
                            } 
 | 
                        } 
 | 
                    }; 
 | 
                } 
 | 
            } 
 | 
            catch (ex) { } 
 | 
            ; 
 | 
            _IEEnumFix(subc.prototype, overrides); 
 | 
        } 
 | 
    } 
 | 
}; 
 |