?? calendar-setup.js
字號:
/* * $Id: calendar-setup.js 7059 2007-05-03 14:28:07Z slip $ * The Zapatec DHTML Calendar * * Copyright (c) 2004-2006 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. * * Original version written by Mihai Bazon, * http://www.bazon.net/mishoo/calendar.epl * * This file defines helper functions for setting up the calendar. They are * intended to help non-programmers get a working calendar on their site * quickly. This script should not be seen as part of the calendar. It just * shows you what one can do with the calendar, while in the same time * providing a quick and simple method for setting it up. If you need * exhaustive customization of the calendar creation process feel free to * modify this code to suit your needs (this is recommended and much better * than modifying calendar.js itself). */// $Id: calendar-setup.js 7059 2007-05-03 14:28:07Z slip $//test for the right pathZapatec.Setup = function () {};Zapatec.Setup.test = true;/** * This function "patches" an input field (or other element) to use a calendar * widget for date selection. * * Note that you can use the Zapatec DHTML Calendar Wizard and generate the code * and modify the results. * The "params" is a single object that can have the following properties: * * \code * prop. name | description * ------------------------------------------------------------------------------------------------- * inputField | the ID of an input field to store the date * displayArea | the ID of a DIV or other element to show the date * button | ID of a button or other element that will trigger the calendar * eventName | event that will trigger the calendar, without the "on" prefix (default: "click") * closeEventName| event that will close the calendar (i.e. one can use "focus" for eventName and "blur" for closeEventName) * ifFormat | date format that will be stored in the input field * daFormat | the date format that will be used to display the date in displayArea * singleClick | (true/false) wether the calendar is in single click mode or not (default: true) * firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc. * align | alignment (default: "Br"); if you don't know what's this see the calendar documentation * range | array with 2 elements. Default: [1900.0, 2999.12] -- the range of years available * weekNumbers | (true/false) if it's true (default) the calendar will display week numbers * flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID * flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar) * disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar * onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay) * onClose | function that gets called when the calendar is closed. [default] * onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar. * date | the date that the calendar will be initially displayed to * showsTime | default: false; if true the calendar will include a time selector * timeFormat | the time format; can be "12" or "24", default is "12" * electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close * sortOrder | ("asc"(ending)/"desc"(ending)/"none"). If "asc" (default), order of the multiple dates (when multiple dates is on) will be sorted in ascending order. Otherwise, it will be sorted in descending order. "none" means no sorting is needed. * step | configures the step of the years in drop-down boxes; default: 2 * position | configures the calendar absolute position; default: null * cache | if "true" (but default: "false") it will reuse the same calendar object, where possible * showOthers | if "true" (but default: "false") it will show days from other months too * saveDate | if set (default unset) will save a cookie for this duration. * numberMonths | Have the calendar display multiple months * controlMonth | When displaying multiple months, this will be the control month. Default 1. * vertical | When displaying multiple months, months can progress in a vertical or horizontal way. Horizontal is the default. * monthsInRow | When displaying multiple months how many months in a horizontal row. Works both in vertical and horizontal mode. Default numberMonths * fdowClick | Allow click on Days of Week 1st day * titleHtml | Html you can put in title of calendar * noHelp | Disables "?" button in your calendar * noCloseButton | Disables "X" button in your calendar * disableYearNav| Disables year navigation buttons * * \endcode * * None of them is required, they all have default values. However, if you * pass none of "inputField", "displayArea" or "button" you'll get a warning * saying "nothing to setup". */Zapatec.Calendar.setup = function (params) { paramsList = ["id"]; function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } paramsList.push(pname); }; params.id = Zapatec.Utils.generateID("calendar"); param_default("inputField", null); param_default("displayArea", null); param_default("button", null); param_default("eventName", "click"); param_default("closeEventName", null); param_default("ifFormat", "%Y/%m/%d"); param_default("daFormat", "%Y/%m/%d"); param_default("singleClick", true); param_default("disableFunc", null); param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined param_default("dateText", null); param_default("firstDay", null); param_default("align", "Br"); param_default("range", [1900, 2999]); param_default("weekNumbers", true); param_default("flat", null); param_default("flatCallback", null); param_default("onSelect", null); param_default("onClose", null); param_default("onUpdate", null); param_default("date", null); param_default("showsTime", false); param_default("sortOrder", "asc"); param_default("timeFormat", "24"); param_default("timeInterval", null); param_default("electric", true); param_default("step", 2); param_default("position", null); param_default("cache", false); param_default("showOthers", false); param_default("multiple", null); param_default("saveDate", null); param_default("fdowClick", false); param_default("titleHtml", null); param_default("noHelp", false); param_default("noCloseButton", false); param_default("disableYearNav", false); param_default("disableFdowChange", false); if (params.weekNumbers) { params.disableFdowChange = true; params.firstDay = 1; } param_default("disableDrag", false); param_default("numberMonths", 1); if ((params.numberMonths > 12) || (params.numberMonths < 1)) { params.numberMonths = 1; } if (params.numberMonths > 1) { params.showOthers = false; } params.numberMonths = parseInt(params.numberMonths, 10); param_default("controlMonth", 1); if ((params.controlMonth > params.numberMonths) || (params.controlMonth < 1)) { params.controlMonth = 1; } params.controlMonth = parseInt(params.controlMonth, 10); param_default("vertical", false); if (params.monthsInRow > params.numberMonths) { params.monthsInRow = params.numberMonths; } param_default("monthsInRow", params.numberMonths); params.monthsInRow = parseInt(params.monthsInRow, 10); param_default("multiple", false); if (params.multiple) { params.singleClick = false; } param_default("canType", false); var tmp = ["inputField", "displayArea", "button"]; for (var i in tmp) { if (typeof params[tmp[i]] == "string") { params[tmp[i]] = document.getElementById(params[tmp[i]]); } } if (!params.inputField) { params.canType = false; } else { params.inputField.setAttribute("autocomplete", "off"); } if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) { alert("Calendar.setup '" + params.id + "':\n Nothing to setup (no fields found). Please check your code"); return false; } if (((params.timeInterval) && ((params.timeInterval !== Math.floor(params.timeInterval)) || ((60 % params.timeInterval !== 0) && (params.timeInterval % 60 !== 0)))) || (params.timeInterval > 360)) { alert("'" + params.id + "': timeInterval option can only have the following number of minutes:\n1, 2, 3, 4, 5, 6, 10, 15, 30, 60, 120, 180, 240, 300, 360 "); params.timeInterval = null; } if (params.date && !Date.parse(params.date)) { alert("'" + params.id + "' Start Date Invalid: " + params.date + ".\nSee date option.\nDefaulting to today."); params.date = null; } if (params.saveDate) { //If saveDate is on We're saving the date in a cookie param_default("cookiePrefix", window.location.href + "--" + params.button.id); //fetch the cookie var cookieName = params.cookiePrefix; var newdate = Zapatec.Utils.getCookie(cookieName); if (newdate != null) { //if there's a cookie //set the value of the text field document.getElementById(params.inputField.id).value = newdate; } } for(var ii in params) { if (typeof params.constructor.prototype[ii] != "undefined") { continue;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -