1 /* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/
2 * ---------------------------------------------------------------------------
6 * Details and latest version at:
7 * http://dynarch.com/mishoo/calendar.epl
9 * This script is distributed under the GNU Lesser General Public License.
10 * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
12 * This file defines helper functions for setting up the calendar. They are
13 * intended to help non-programmers get a working calendar on their site
14 * quickly. This script should not be seen as part of the calendar. It just
15 * shows you what one can do with the calendar, while in the same time
16 * providing a quick and simple method for setting it up. If you need
17 * exhaustive customization of the calendar creation process feel free to
18 * modify this code to suit your needs (this is recommended and much better
19 * than modifying calendar.js itself).
21 Calendar
.setup=function(params
){function param_default(pname
,def
){if(typeof params
[pname
]=="undefined"){params
[pname
]=def
;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");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"]);param_default("firstDay",0);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("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",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
.flat
||params
.inputField
||params
.displayArea
||params
.button
)){alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code");return false;}function onSelect(cal
){var p
=cal
.params
;var update
=(cal
.dateClicked
||p
.electric
);if(update
&&p
.flat
){if(typeof p
.flatCallback
=="function")p
.flatCallback(cal
);else alert("No flatCallback given -- doing nothing.");return false;}if(update
&&p
.inputField
){p
.inputField
.value
=cal
.date
.print(p
.ifFormat
);if(typeof p
.inputField
.onchange
=="function")p
.inputField
.onchange();}if(update
&&p
.displayArea
)p
.displayArea
.innerHTML
=cal
.date
.print(p
.daFormat
);if(update
&&p
.singleClick
&&cal
.dateClicked
)cal
.callCloseHandler();if(update
&&typeof p
.onUpdate
=="function")p
.onUpdate(cal
);};if(params
.flat
!=null){if(typeof params
.flat
=="string")params
.flat
=document
.getElementById(params
.flat
);if(!params
.flat
){alert("Calendar.setup:\n Flat specified but can't find parent.");return false;}var cal
=new Calendar(params
.firstDay
,params
.date
,params
.onSelect
||onSelect
);cal
.showsTime
=params
.showsTime
;cal
.time24
=(params
.timeFormat
=="24");cal
.params
=params
;cal
.weekNumbers
=params
.weekNumbers
;cal
.setRange(params
.range
[0],params
.range
[1]);cal
.setDateStatusHandler(params
.dateStatusFunc
);cal
.create(params
.flat
);cal
.show();return false;}var triggerEl
=params
.button
||params
.displayArea
||params
.inputField
;triggerEl
["on"+params
.eventName
]=function(){var dateEl
=params
.inputField
||params
.displayArea
;var dateFmt
=params
.inputField
?params
.ifFormat
:params
.daFormat
;var mustCreate
=false;var cal
=window
.calendar
;if(!(cal
&¶ms
.cache
)){window
.calendar
=cal
=new Calendar(params
.firstDay
,params
.date
,params
.onSelect
||onSelect
,params
.onClose
||function(cal
){cal
.hide();});cal
.showsTime
=params
.showsTime
;cal
.time24
=(params
.timeFormat
=="24");cal
.weekNumbers
=params
.weekNumbers
;mustCreate
=true;}else{if(params
.date
)cal
.setDate(params
.date
);cal
.hide();}cal
.showsOtherMonths
=params
.showOthers
;cal
.yearStep
=params
.step
;cal
.setRange(params
.range
[0],params
.range
[1]);cal
.params
=params
;cal
.setDateStatusHandler(params
.dateStatusFunc
);cal
.setDateFormat(dateFmt
);if(mustCreate
)cal
.create();cal
.parseDate(dateEl
.value
||dateEl
.innerHTML
);cal
.refresh();if(!params
.position
)cal
.showAtElement(params
.button
||params
.displayArea
||params
.inputField
,params
.align
);else cal
.showAt(params
.position
[0],params
.position
[1]);return false;};};