Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def}}param_default("inputField",null);param_default("context",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("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("useISO8601WeekNumbers",false);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);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){var id="#"+params[tmp[i]].escapejQuerySelector();if(params.context){params[tmp[i]]=AJS.$(params.context).find(id).get(0)}else{params[tmp[i]]=AJS.$(id).get(0)}}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){AJS.log("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");return false}if(params.firstDay&&params.firstDay!==null){params.firstDay=+params.firstDay}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);jQuery(p.inputField).change()}if(update&&p.displayArea){p.displayArea.innerHTML=cal.date.print(p.daFormat)}if(update&&typeof p.onUpdate=="function"){p.onUpdate(cal)}if(update&&p.flat){if(typeof p.flatCallback=="function"){p.flatCallback(cal)}}if(p.singleClick==="true"){p.singleClick=true}else{if(p.singleClick==="false"){p.singleClick=false}}if(update&&p.singleClick&&cal.dateClicked){cal.callCloseHandler()}}if(params.flat!=null){if(typeof params.flat=="string"){params.flat=document.getElementById(params.flat)}if(!params.flat){AJS.log("Calendar.setup:\n  Flat specified but can't find parent.");return false}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;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.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat)}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value)}cal.create(params.flat);cal.show();return false}var triggerEl=params.button||params.displayArea||params.inputField;jQuery(triggerEl).bind(params.eventName,function(e){e.preventDefault();var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl){if(dateEl.value||dateEl.innerHTML){params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt)}}if(!(cal&&params.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;Date.useISO8601WeekNumbers=params.useISO8601WeekNumbers;if(params.useISO8601WeekNumbers){cal.firstDayOfWeek=1}mustCreate=true}else{if(params.date){cal.setDate(params.date)}cal.hide()}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate){cal.create()}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});return cal};
