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/mm/dd"); param_default("daFormat", "y/mm/dd"); param_default("singleClick", true); param_default("disableFunc", null); param_default("mondayFirst", false); param_default("align", "Bl"); param_default("range", [1900, 2999]); param_default("weekNumbers", true); param_default("flat", null); param_default("flatCallback", null); 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) { if (cal.params.flat) { if (typeof cal.params.flatCallback == "function") { cal.params.flatCallback(cal); } else { alert("No flatCallback given -- doing nothing."); } return false; } if (cal.params.inputField) { cal.params.inputField.value = cal.date.print(cal.params.ifFormat); } if (cal.params.displayArea) { cal.params.displayArea.innerHTML = cal.date.print(cal.params.daFormat); } if (cal.params.singleClick && cal.dateClicked) { cal.callCloseHandler(); } }; if (params.flat != null) { 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.mondayFirst, null, onSelect); cal.params = params; cal.weekNumbers = params.weekNumbers; cal.setRange(params.range[0], params.range[1]); cal.setDisabledHandler(params.disableFunc); 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; if (!window.calendar) { window.calendar = new Calendar(params.mondayFirst, null, onSelect, function(cal) { cal.hide(); }); window.calendar.weekNumbers = params.weekNumbers; mustCreate = true; } else { window.calendar.hide(); } window.calendar.setRange(params.range[0], params.range[1]); window.calendar.params = params; window.calendar.setDisabledHandler(params.disableFunc); window.calendar.setDateFormat(dateFmt); if (mustCreate) { window.calendar.create(); } window.calendar.parseDate(dateEl.value || dateEl.innerHTML); window.calendar.refresh(); window.calendar.showAtElement(params.displayArea || params.inputField, params.align); return false; }; };