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

📄 calendar.js

📁 国外的人才求职招聘最新版
💻 JS
📖 第 1 页 / 共 5 页
字号:
/*Copyright (c) 2007, Yahoo! Inc. All rights reserved.Code licensed under the BSD License:http://developer.yahoo.net/yui/license.txtversion: 2.3.0*//** * This file is a modified version of calendar.js from the Yahoo! UI Library. (http://developer.yahoo.com/yui/) * * See license/3rdParty/yui.license for the license. * * Modifications done by OrangeHRM. * 1) CSS_NAV_FIRST and CSS_NAV_LAST style methods introduced for year navigation * 2) Year navigation introduced * */(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) {        }    };    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 ) {            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();            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 = {},                prop,                property;            for (prop in this.config) {                property = this.config[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();            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();            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;                                }                            }                        }                    }                }                return true;            } else {                return false;            }        },        /**

⌨️ 快捷键说明

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