⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calendar-debug.js

📁 这是YUI的源码及相关示例。里面有很多很炫的Javascript效果。
💻 JS
📖 第 1 页 / 共 5 页
字号:
/*Copyright (c) 2008, Yahoo! Inc. All rights reserved.Code licensed under the BSD License:http://developer.yahoo.net/yui/license.txtversion: 2.6.0*/(function () {    /**    * Config is a utility used within an Object to allow the implementer to    * maintain a list of local configuration properties and listen for changes     * to those properties dynamically using CustomEvent. The initial values are     * also maintained so that the configuration can be reset at any given point     * to its initial state.    * @namespace YAHOO.util    * @class Config    * @constructor    * @param {Object} owner The owner Object to which this Config Object belongs    */    YAHOO.util.Config = function (owner) {        if (owner) {            this.init(owner);        }        if (!owner) {  YAHOO.log("No owner specified for Config object", "error", "Config"); }    };    var Lang = YAHOO.lang,        CustomEvent = YAHOO.util.CustomEvent,        Config = YAHOO.util.Config;    /**     * Constant representing the CustomEvent type for the config changed event.     * @property YAHOO.util.Config.CONFIG_CHANGED_EVENT     * @private     * @static     * @final     */    Config.CONFIG_CHANGED_EVENT = "configChanged";        /**     * Constant representing the boolean type string     * @property YAHOO.util.Config.BOOLEAN_TYPE     * @private     * @static     * @final     */    Config.BOOLEAN_TYPE = "boolean";        Config.prototype = {             /**        * Object reference to the owner of this Config Object        * @property owner        * @type Object        */        owner: null,                /**        * Boolean flag that specifies whether a queue is currently         * being executed        * @property queueInProgress        * @type Boolean        */        queueInProgress: false,                /**        * Maintains the local collection of configuration property objects and         * their specified values        * @property config        * @private        * @type Object        */         config: null,                /**        * Maintains the local collection of configuration property objects as         * they were initially applied.        * This object is used when resetting a property.        * @property initialConfig        * @private        * @type Object        */         initialConfig: null,                /**        * Maintains the local, normalized CustomEvent queue        * @property eventQueue        * @private        * @type Object        */         eventQueue: null,                /**        * Custom Event, notifying subscribers when Config properties are set         * (setProperty is called without the silent flag        * @event configChangedEvent        */        configChangedEvent: null,            /**        * Initializes the configuration Object and all of its local members.        * @method init        * @param {Object} owner The owner Object to which this Config         * Object belongs        */        init: function (owner) {                this.owner = owner;                this.configChangedEvent =                 this.createEvent(Config.CONFIG_CHANGED_EVENT);                this.configChangedEvent.signature = CustomEvent.LIST;            this.queueInProgress = false;            this.config = {};            this.initialConfig = {};            this.eventQueue = [];                },                /**        * Validates that the value passed in is a Boolean.        * @method checkBoolean        * @param {Object} val The value to validate        * @return {Boolean} true, if the value is valid        */         checkBoolean: function (val) {            return (typeof val == Config.BOOLEAN_TYPE);        },                /**        * Validates that the value passed in is a number.        * @method checkNumber        * @param {Object} val The value to validate        * @return {Boolean} true, if the value is valid        */        checkNumber: function (val) {            return (!isNaN(val));        },                /**        * Fires a configuration property event using the specified value.         * @method fireEvent        * @private        * @param {String} key The configuration property's name        * @param {value} Object The value of the correct type for the property        */         fireEvent: function ( key, value ) {            YAHOO.log("Firing Config event: " + key + "=" + value, "info", "Config");            var property = this.config[key];                    if (property && property.event) {                property.event.fire(value);            }         },                /**        * Adds a property to the Config Object's private config hash.        * @method addProperty        * @param {String} key The configuration property's name        * @param {Object} propertyObject The Object containing all of this         * property's arguments        */        addProperty: function ( key, propertyObject ) {            key = key.toLowerCase();            YAHOO.log("Added property: " + key, "info", "Config");                    this.config[key] = propertyObject;                    propertyObject.event = this.createEvent(key, { scope: this.owner });            propertyObject.event.signature = CustomEvent.LIST;                                    propertyObject.key = key;                    if (propertyObject.handler) {                propertyObject.event.subscribe(propertyObject.handler,                     this.owner);            }                    this.setProperty(key, propertyObject.value, true);                        if (! propertyObject.suppressEvent) {                this.queueProperty(key, propertyObject.value);            }                    },                /**        * Returns a key-value configuration map of the values currently set in          * the Config Object.        * @method getConfig        * @return {Object} The current config, represented in a key-value map        */        getConfig: function () {                    var cfg = {},                currCfg = this.config,                prop,                property;                            for (prop in currCfg) {                if (Lang.hasOwnProperty(currCfg, prop)) {                    property = currCfg[prop];                    if (property && property.event) {                        cfg[prop] = property.value;                    }                }            }            return cfg;        },                /**        * Returns the value of specified property.        * @method getProperty        * @param {String} key The name of the property        * @return {Object}  The value of the specified property        */        getProperty: function (key) {            var property = this.config[key.toLowerCase()];            if (property && property.event) {                return property.value;            } else {                return undefined;            }        },                /**        * Resets the specified property's value to its initial value.        * @method resetProperty        * @param {String} key The name of the property        * @return {Boolean} True is the property was reset, false if not        */        resetProperty: function (key) {                key = key.toLowerCase();                    var property = this.config[key];                if (property && property.event) {                    if (this.initialConfig[key] &&                     !Lang.isUndefined(this.initialConfig[key])) {                        this.setProperty(key, this.initialConfig[key]);                    return true;                    }                } else {                    return false;            }            },                /**        * Sets the value of a property. If the silent property is passed as         * true, the property's event will not be fired.        * @method setProperty        * @param {String} key The name of the property        * @param {String} value The value to set the property to        * @param {Boolean} silent Whether the value should be set silently,         * without firing the property event.        * @return {Boolean} True, if the set was successful, false if it failed.        */        setProperty: function (key, value, silent) {                    var property;                    key = key.toLowerCase();            YAHOO.log("setProperty: " + key + "=" + value, "info", "Config");                    if (this.queueInProgress && ! silent) {                // Currently running through a queue...                 this.queueProperty(key,value);                return true;                } else {                property = this.config[key];                if (property && property.event) {                    if (property.validator && !property.validator(value)) {                        return false;                    } else {                        property.value = value;                        if (! silent) {                            this.fireEvent(key, value);                            this.configChangedEvent.fire([key, value]);                        }                        return true;                    }                } else {                    return false;                }            }        },                /**        * Sets the value of a property and queues its event to execute. If the         * event is already scheduled to execute, it is        * moved from its current position to the end of the queue.        * @method queueProperty        * @param {String} key The name of the property        * @param {String} value The value to set the property to        * @return {Boolean}  true, if the set was successful, false if         * it failed.        */         queueProperty: function (key, value) {                    key = key.toLowerCase();            YAHOO.log("queueProperty: " + key + "=" + value, "info", "Config");                    var property = this.config[key],                foundDuplicate = false,                iLen,                queueItem,                queueItemKey,                queueItemValue,                sLen,                supercedesCheck,                qLen,                queueItemCheck,                queueItemCheckKey,                queueItemCheckValue,                i,                s,                q;                                            if (property && property.event) {                    if (!Lang.isUndefined(value) && property.validator &&                     !property.validator(value)) { // validator                    return false;                } else {                            if (!Lang.isUndefined(value)) {                        property.value = value;                    } else {                        value = property.value;                    }                            foundDuplicate = false;                    iLen = this.eventQueue.length;                            for (i = 0; i < iLen; i++) {                        queueItem = this.eventQueue[i];                                if (queueItem) {                            queueItemKey = queueItem[0];                            queueItemValue = queueItem[1];                            if (queueItemKey == key) {                                    /*                                    found a dupe... push to end of queue, null                                     current item, and break                                */                                    this.eventQueue[i] = null;                                    this.eventQueue.push(                                    [key, (!Lang.isUndefined(value) ?                                     value : queueItemValue)]);                                    foundDuplicate = true;                                break;                            }                        }                    }                                        // this is a refire, or a new property in the queue                        if (! foundDuplicate && !Lang.isUndefined(value)) {                         this.eventQueue.push([key, value]);                    }                }                        if (property.supercedes) {                    sLen = property.supercedes.length;                    for (s = 0; s < sLen; s++) {                        supercedesCheck = property.supercedes[s];                        qLen = this.eventQueue.length;                        for (q = 0; q < qLen; q++) {                            queueItemCheck = this.eventQueue[q];                            if (queueItemCheck) {                                queueItemCheckKey = queueItemCheck[0];                                queueItemCheckValue = queueItemCheck[1];                                if (queueItemCheckKey ==                                     supercedesCheck.toLowerCase() ) {                                    this.eventQueue.push([queueItemCheckKey,                                         queueItemCheckValue]);                                    this.eventQueue[q] = null;                                    break;                                }                            }                        }                    }                }                YAHOO.log("Config event queue: " + this.outputEventQueue(), "info", "Config");                return true;            } else {                return false;            }        },                /**        * Fires the event for a property using the property's current value.        * @method refireEvent        * @param {String} key The name of the property        */        refireEvent: function (key) {                key = key.toLowerCase();                    var property = this.config[key];                if (property && property.event &&                     !Lang.isUndefined(property.value)) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -