Calendar.setup=function(g){function f(h,i){if(typeof g[h]=="undefined"){g[h]=i}}f("inputField",null);f("displayArea",null);f("button",null);f("eventName","click");f("ifFormat","%Y/%m/%d");f("daFormat","%Y/%m/%d");f("singleClick",true);f("disableFunc",null);f("dateStatusFunc",g.disableFunc);f("dateText",null);f("firstDay",null);f("align","Br");f("range",[1900,2999]);f("weekNumbers",true);f("flat",null);f("flatCallback",null);f("onSelect",null);f("onClose",null);f("onUpdate",null);f("date",null);f("showsTime",false);f("timeFormat","24");f("electric",true);f("step",2);f("position",null);f("cache",false);f("showOthers",false);f("multiple",null);var c=["inputField","displayArea","button"];for(var b in c){if(typeof g[c[b]]=="string"){g[c[b]]=document.getElementById(g[c[b]])}}if(!(g.flat||g.multiple||g.inputField||g.displayArea||g.button)){alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");return false}function a(i){var h=i.params;var j=(i.dateClicked||h.electric);if(j&&h.inputField){h.inputField.value=i.date.print(h.ifFormat);if(typeof h.inputField.onchange=="function"){h.inputField.onchange()}}if(j&&h.displayArea){h.displayArea.innerHTML=i.date.print(h.daFormat)}if(j&&typeof h.onUpdate=="function"){h.onUpdate(i)}if(j&&h.flat){if(typeof h.flatCallback=="function"){h.flatCallback(i)}}if(j&&h.singleClick&&i.dateClicked){i.callCloseHandler()}}if(g.flat!=null){if(typeof g.flat=="string"){g.flat=document.getElementById(g.flat)}if(!g.flat){alert("Calendar.setup:\n  Flat specified but can't find parent.");return false}var e=new Calendar(g.firstDay,g.date,g.onSelect||a);e.showsOtherMonths=g.showOthers;e.showsTime=g.showsTime;e.time24=(g.timeFormat=="24");e.params=g;e.weekNumbers=g.weekNumbers;e.setRange(g.range[0],g.range[1]);e.setDateStatusHandler(g.dateStatusFunc);e.getDateText=g.dateText;if(g.ifFormat){e.setDateFormat(g.ifFormat)}if(g.inputField&&typeof g.inputField.value=="string"){e.parseDate(g.inputField.value)}e.create(g.flat);e.show();return false}var d=g.button||g.displayArea||g.inputField;d["on"+g.eventName]=function(){var m=g.inputField||g.displayArea;var s=g.inputField?g.ifFormat:g.daFormat;var j=false;var h=window.calendar;if(m){g.date=Date.parseDate(m.value||m.innerHTML,s)}if(!(h&&g.cache)){window.calendar=h=new Calendar(g.firstDay,g.date,g.onSelect||a,g.onClose||function(i){i.hide()});h.showsTime=g.showsTime;h.time24=(g.timeFormat=="24");h.weekNumbers=g.weekNumbers;j=true}else{if(g.date){h.setDate(g.date)}h.hide()}if(g.multiple){h.multiple={};for(var n=g.multiple.length;--n>=0;){var q=g.multiple[n];var k=q.print("%Y%m%d");h.multiple[k]=q}}h.showsOtherMonths=g.showOthers;h.yearStep=g.step;h.setRange(g.range[0],g.range[1]);h.params=g;h.setDateStatusHandler(g.dateStatusFunc);h.getDateText=g.dateText;h.setDateFormat(s);if(j){h.create()}h.refresh();if(!g.position){h.showAtElement(g.button||g.displayArea||g.inputField,g.align);var l=g.button||g.displayArea||g.inputField;var p=YAHOO.util.Dom.getX(l);var o=YAHOO.util.Dom.getY(l);var r=YAHOO.util.Dom.getRegion(l);o+=r.bottom-r.top;YAHOO.util.Dom.setXY(h.element,[p,o])}else{h.showAt(g.position[0],g.position[1])}return false};return e};