var CtDateTimeCalendar=Class.create(CtComponent_Abstract,{initialize:function(){this.element=$$('body')[0];this._namespace='ctDateTimeCalendar';this.callbacks=new Array('onchange','after_navigate','before_show','after_show','before_close','after_close');this.element.on('click','.'+this._namespace+' .'+this._namespace+'-openButton',this.onOpenButtonClick.bindAsEventListener(this));this.element.on('click','.'+this._namespace+' .'+this._namespace+'-input',this.onOpenButtonClick.bindAsEventListener(this));this._assemble();this.element.on('CtPage:refresh',null,this._assemble.bind(this));},_assemble:function(){$$('.'+this._namespace).each(function(element){var config;if(element.retrieve('config',false)!==false){return;}
config=this._makeConfig(element);for(option in config.calendarOptions){if(this.callbacks.include(option)){if(!Object.isFunction(config.calendarOptions[option])){config.calendarOptions[option]=eval(config.calendarOptions[option]);}}}
element.store('config',config);this._componentLoaded(element);}.bind(this));},onOpenButtonClick:function(event){var element;Event.stop(event);element=Event.findElement(event,'.'+this._namespace);this._createAndShowCalendar(element);},_componentLoaded:function(element){element.removeClassName('ctInitializing');element.down('.ctInitializing-text').remove();},_createAndShowCalendar:function(element){var calendar,config;config=element.retrieve('config');calendar=new CalendarDateSelect(element,config.calendarOptions,config.translations,config.defaultTime);},refresh:function(ident,response){var element=$(ident);if(!Object.isElement(element)){return;}
if(response.html&&response.html.length){element.update(response.html);}},_makeConfig:function(element){var configElement,config;if(!Object.isElement(element)){throw this._namespace+': _makeConfig - invalid Element';}
config={};configElement=element.down('> .ctConfig');if(!Object.isElement(configElement)){return config;}
try{config=configElement.innerHTML.evalJSON(true);Element.remove(configElement);}catch(ex){}
return config;}});Object.extend(CtDateTimeCalendar,{vdcLessThanNow:function(date){return date<new Date().stripTime();},vdcLessOrEqualThanNow:function(date){return date<=new Date().stripTime();},vdcGreatThanNow:function(date){return date>new Date().stripTime();},vdcGreatOrEqualThanNow:function(date){return date>=new Date().stripTime();}});CtPage.scriptIsReady('/js/calendar/calendar_date_select.js',function(){Event.observe(document,'dom:loaded',function(){CtPage.registerScript('CtDateTimeCalendar');window.ctDateTimeCalendar=new CtDateTimeCalendar();});});
