if(typeof Prototype=="undefined"){alert("CalendarDateSelect Error: Prototype could not be found. Please make sure that your application's layout includes prototype.js (.g. <%= javascript_include_tag :defaults %>) *before* it includes calendar_date_select.js (.g. <%= calendar_date_select_includes %>).")}if(Prototype.Version<"1.6"){alert("Prototype 1.6.0 is required.  If using earlier version of prototype, please use calendar_date_select version 1.8.3")}Element.addMethods({purgeChildren:function(A){$A(A.childNodes).each(function(B){$(B).remove()})},build:function(B,D,A,C){var E=Element.buildAndAppend(D,A,C);B.appendChild(E);return E}});Element.buildAndAppend=function(type,options,style){var e=$(document.createElement(type));$H(options).each(function(pair){eval("e."+pair.key+" = pair.value")});if(style){$H(style).each(function(pair){eval("e.style."+pair.key+" = pair.value")})}return e};nil=null;Date.one_day=24*60*60*1000;Date.weekdays=$w("M T W T F S S");Date.weekdaysAbbr=$w("Mon. Tue. Wed. Thu. Fri. Sat. Sun.");Date.first_day_of_week=1;Date.months=$w("Jan. Feb. Mar. Apr. May Jun. Jul. Aug. Sep. Oct. Nov. Dec.");Date.padded2=function(A){var B=parseInt(A,10);if(A<10){B="0"+B}return B};Date.prototype.getPaddedMinutes=function(){return Date.padded2(this.getMinutes())};Date.prototype.getAMPMHour=function(){var A=this.getHours();return(A==0)?12:(A>12?A-12:A)};Date.prototype.getAMPM=function(){return(this.getHours()<12)?"AM":"PM"};Date.prototype.stripTime=function(){return new Date(this.getFullYear(),this.getMonth(),this.getDate())};Date.prototype.stripDate=function(){return new Date(2000,0,1,this.getHours(),this.getMinutes(),this.getSeconds())};Date.prototype.daysDistance=function(A){return Math.round((A-this)/Date.one_day)};Date.prototype.getEndOfWeek=function(){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(6-this.getDay())+2,0,-1,0)};Date.prototype.getStartOfWeek=function(){var A=this.getDay()+(this.getDay()==0?7:0);return new Date(this.getFullYear(),this.getMonth(),this.getDate()-A+1,0,0,0)};Date.prototype.addWeeks=function(A){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(A*7),this.getHours(),this.getMinutes(),this.getSeconds())};Date.prototype.addSeconds=function(A){return new Date(this.getFullYear(),this.getMonth(),this.getDate(),this.getHours(),this.getMinutes(),this.getSeconds()+A)};Date.prototype.addDays=function(A){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+A,this.getHours(),this.getMinutes(),this.getSeconds())};Date.prototype.toFormattedString=function(B){var A,C;C=Date.months[this.getMonth()]+" "+this.getDate()+", "+this.getFullYear();if(B){A=this.getHours();C+=" "+this.getAMPMHour()+":"+this.getPaddedMinutes()+" "+this.getAMPM()}return C};Date.parseFormattedString=function(A){return new Date(A)};Date.prototype.toDBFormattedString=function(A){str=this.getFullYear()+"-"+Date.padded2(this.getMonth()+1)+"-"+Date.padded2(this.getDate());if(A){str+=" "+Date.padded2(this.getHours())+":"+this.getPaddedMinutes()+":"+Date.padded2(this.getSeconds())}return str};Date.parseDBFormattedString=function(B){var C="([0-9]{4})-(([0-9]{1,2})-(([0-9]{1,2})( ([0-9]{1,2}):([0-9]{2})? *)?)?)?";var E=B.match(new RegExp(C,"i"));if(E==null){return Date.parse(B)}var D=0;var A=new Date(E[1],0,1);if(E[3]){A.setMonth(E[3]-1)}if(E[5]){A.setDate(E[5])}if(E[7]){A.setHours(parseInt(E[7],10))}if(E[8]){A.setMinutes(E[8])}if(E[10]){A.setSeconds(E[10])}return A};Math.floor_to_interval=function(B,A){return Math.floor(B/A)*A};window.f_height=function(){return([window.innerHeight?window.innerHeight:null,document.documentElement?document.documentElement.clientHeight:null,document.body?document.body.clientHeight:null].select(function(A){return A>0}).first()||0)};window.f_scrollTop=function(){return([window.pageYOffset?window.pageYOffset:null,document.documentElement?document.documentElement.scrollTop:null,document.body?document.body.scrollTop:null].select(function(A){return A>0}).first()||0)};_translations={"OK":"OK","Now":"Now","Today":"Today"};SelectBox=Class.create();SelectBox.prototype={initialize:function(D,B,C,A){this.element=$(D).build("select",C,A);this.populate(B)},populate:function(A){this.element.purgeChildren();var B=this;$A(A).each(function(C){if(typeof (C)!="object"){C=[C,C]}B.element.build("option",{value:C[1],innerHTML:C[0]})})},setValue:function(B){var C=this.element;var A=false;$R(0,C.options.length-1).each(function(D){if(C.options[D].value==B.toString()){C.selectedIndex=D;A=true}});return A},getValue:function(){return $F(this.element)}};CalendarDateSelect=Class.create();CalendarDateSelect.prototype={initialize:function(B,A){this.target_element=$(B);if(!this.target_element){alert("Target element "+B+" not found!");return false}if(this.target_element.tagName!="INPUT"){this.target_element=this.target_element.down("input")}this.target_element.calendar_date_select=this;this.last_click_at=0;this.options=$H({embedded:false,popup:nil,time:false,buttons:true,year_range:10,close_on_click:nil,minute_interval:5,popup_by:this.target_element,month_year:"dropdowns",onchange:this.target_element.onchange,valid_date_check:nil}).merge(A||{});this.use_time=this.options.get("time");this.parseDate();this.callback("before_show");this.initCalendarDiv();if(!this.options.get("embedded")){this.positionCalendarDiv();Event.observe(document,"mousedown",this.closeIfClickedOut_handler=this.closeIfClickedOut.bindAsEventListener(this));Event.observe(document,"keypress",this.keyPress_handler=this.keyPress.bindAsEventListener(this))}this.callback("after_show")},positionCalendarDiv:function(){var C=this.calendar_div.style.left=this.target_element.positionedOffset().left+this.target_element.getWidth()+30+"px";var B=this.calendar_div.style.top=this.target_element.positionedOffset().top+"px";var A=this.calendar_div.getHeight();this.calendar_div.setStyle({visibility:""})},initCalendarDiv:function(){if(this.options.get("embedded")){var parent=this.target_element.parentNode;var style={}}else{var parent=this.target_element.parentNode;var style={position:"absolute",visibility:"hidden",left:0,top:0}}this.calendar_div=$(parent).build("div",{className:"calendar_date_select"},style);var that=this;$w("top header body buttons footer bottom").each(function(name){eval("var "+name+"_div = that."+name+"_div = that.calendar_div.build('div', { className: 'cds_"+name+"' }, { clear: 'left'} ); ")});this.initHeaderDiv();this.initButtonsDiv();this.initCalendarGrid();this.updateFooter("&#160;");this.refresh();this.setUseTime(this.use_time)},initHeaderDiv:function(){var A=this.header_div;this.close_button=A.build("a",{innerHTML:"x",href:"#",onclick:function(){this.close();return false}.bindAsEventListener(this),className:"close"});this.next_month_button=A.build("a",{innerHTML:"&gt;",href:"#",onclick:function(){this.navMonth(this.date.getMonth()+1);return false}.bindAsEventListener(this),className:"next"});this.prev_month_button=A.build("a",{innerHTML:"&lt;",href:"#",onclick:function(){this.navMonth(this.date.getMonth()-1);return false}.bindAsEventListener(this),className:"prev"});if(this.options.get("month_year")=="dropdowns"){this.month_select=new SelectBox(A,$R(0,11).map(function(B){return[Date.months[B],B]}),{className:"month",onchange:function(){this.navMonth(this.month_select.getValue())}.bindAsEventListener(this)});this.year_select=new SelectBox(A,[],{className:"year",onchange:function(){this.navYear(this.year_select.getValue())}.bindAsEventListener(this)});this.populateYearRange()}else{this.month_year_label=A.build("span")}},initCalendarGrid:function(){var A=this.body_div;this.calendar_day_grid=[];var G=A.build("table",{cellPadding:"0px",cellSpacing:"0px",width:"100%"});var B=G.build("thead").build("tr");Date.weekdays.each(function(H){B.build("th",{innerHTML:H})});var E=G.build("tbody");var C=0,D;for(var F=0;F<42;F++){D=(F+Date.first_day_of_week)%7;if(F%7==0){days_row=E.build("tr",{className:"row_"+C++})}(this.calendar_day_grid[F]=days_row.build("td",{calendar_date_select:this,onmouseover:function(){this.calendar_date_select.dayHover(this)},onmouseout:function(){this.calendar_date_select.dayHoverOut(this)},onclick:function(){this.calendar_date_select.updateSelectedDate(this,true)},className:(D==0)||(D==6)?" weekend":""},{cursor:"pointer"})).build("div");this.calendar_day_grid[F]}},initButtonsDiv:function(){var D=this.buttons_div;if(this.options.get("time")){var B=$A(this.options.get("time")=="mixed"?[[" - ",""]]:[]);D.build("span",{innerHTML:"@",className:"at_sign"});var A=new Date();this.hour_select=new SelectBox(D,B.concat($A($R(0,23))),{calendar_date_select:this,onchange:function(){this.calendar_date_select.updateSelectedDate({hour:this.value})},className:"hour"});D.build("span",{innerHTML:":",className:"seperator"});var C=this;this.minute_select=new SelectBox(D,B.concat($R(0,59).select(function(E){return(E%C.options.get("minute_interval")==0)}).map(function(E){return $A([Date.padded2(E),E])})),{calendar_date_select:this,onchange:function(){this.calendar_date_select.updateSelectedDate({minute:this.value})},className:"minute"})}else{if(!this.options.get("buttons")){D.remove()}}if(this.options.get("buttons")){if(!this.options.get("embedded")){D.build("span",{innerHTML:"&#160;"});D.build("a",{innerHTML:_translations["OK"],href:"#",onclick:function(){this.close();return false}.bindAsEventListener(this)})}}},refresh:function(){this.refreshMonthYear();this.refreshCalendarGrid();this.setSelectedClass();this.updateFooter()},refreshCalendarGrid:function(){this.beginning_date=new Date(this.date).stripTime();this.beginning_date.setDate(1);this.beginning_date.setHours(12);var B=this.beginning_date.getDay();if(B<3){B+=7}this.beginning_date.setDate(1-B+Date.first_day_of_week);var D=new Date(this.beginning_date);var A=new Date().stripTime();var C=this.date.getMonth();vdc=this.options.get("valid_date_check");for(var E=0;E<42;E++){day=D.getDate();month=D.getMonth();cell=this.calendar_day_grid[E];Element.remove(cell.childNodes[0]);div=cell.build("div",{innerHTML:day});if(month!=C){div.className="other"}cell.day=day;cell.month=month;cell.year=D.getFullYear();if(vdc){if(vdc(D.stripTime())){cell.removeClassName("disabled")}else{cell.addClassName("disabled")}}D.setDate(day+1)}if(this.today_cell){this.today_cell.removeClassName("today")}if($R(0,41).include(days_until=this.beginning_date.stripTime().daysDistance(A))){this.today_cell=this.calendar_day_grid[days_until];this.today_cell.addClassName("today")}},refreshMonthYear:function(){var A=this.date.getMonth();var C=this.date.getFullYear();if(this.options.get("month_year")=="dropdowns"){this.month_select.setValue(A,false);var B=this.year_select.element;if(this.flexibleYearRange()&&(!(this.year_select.setValue(C,false))||B.selectedIndex<=1||B.selectedIndex>=B.options.length-2)){this.populateYearRange()}this.year_select.setValue(C)}else{this.month_year_label.update(Date.months[A]+" "+C.toString())}},populateYearRange:function(){this.year_select.populate(this.yearRange().toArray())},yearRange:function(){if(!this.flexibleYearRange()){return $R(this.options.get("year_range")[0],this.options.get("year_range")[1])}var A=this.date.getFullYear();return $R(A-this.options.get("year_range"),A+this.options.get("year_range"))},flexibleYearRange:function(){return(typeof (this.options.get("year_range"))=="number")},validYear:function(A){if(this.flexibleYearRange()){return true}else{return this.yearRange().include(A)}},dayHover:function(A){var B=new Date(this.selected_date);B.setYear(A.year);B.setMonth(A.month);B.setDate(A.day);this.updateFooter(B.toFormattedString(this.use_time))},dayHoverOut:function(A){this.updateFooter()},clearSelectedClass:function(){if(this.selected_cell){this.selected_cell.removeClassName("selected")}},setSelectedClass:function(){if(!this.selection_made){return }this.clearSelectedClass();if($R(0,42).include(days_until=this.beginning_date.stripTime().daysDistance(this.selected_date.stripTime()))){this.selected_cell=this.calendar_day_grid[days_until];this.selected_cell.addClassName("selected")}},reparse:function(){this.parseDate();this.refresh()},dateString:function(){return(this.selection_made)?this.selected_date.toFormattedString(this.use_time):"&#160;"},parseDate:function(){var B=$F(this.target_element).strip();this.selection_made=(B!="");this.date=B==""?NaN:Date.parseFormattedString(this.options.get("date")||B);if(isNaN(this.date)){this.date=new Date()}if(!this.validYear(this.date.getFullYear())){this.date.setYear((this.date.getFullYear()<this.yearRange().start)?this.yearRange().start:this.yearRange().end)}this.selected_date=new Date(this.date);var A=60;if(this.options.get("minute_interval")){A=this.options.get("minute_interval")}this.selected_date.setMinutes(Math.floor_to_interval(this.selected_date.getMinutes(),A));this.use_time=/[0-9]:[0-9]{2}/.exec(B)?true:false;this.date.setDate(1)},updateFooter:function(A){if(!A){A=this.dateString()}this.footer_div.purgeChildren();this.footer_div.build("span",{innerHTML:A})},updateSelectedDate:function(C,B){var F=$H(C);if((this.target_element.disabled||this.target_element.readOnly)&&this.options.get("popup")!="force"){return false}if(F.get("day")){var E=this.selected_date,D=this.options.get("valid_date_check");for(var A=0;A<=3;A++){E.setDate(F.get("day"))}E.setYear(F.get("year"));E.setMonth(F.get("month"));if(D&&!D(E.stripTime())){return false}this.selected_date=E;this.selection_made=true}if(!isNaN(F.get("hour"))){this.selected_date.setHours(F.get("hour"))}if(!isNaN(F.get("minute"))){this.selected_date.setMinutes(Math.floor_to_interval(F.get("minute"),this.options.get("minute_interval")))}if(F.get("hour")===""||F.get("minute")===""){this.setUseTime(false)}else{if(!isNaN(F.get("hour"))||!isNaN(F.get("minute"))){this.setUseTime(true)}}this.updateFooter();this.setSelectedClass();if(this.selection_made){this.updateValue()}if(this.closeOnClick()){this.close()}if(B&&!this.options.get("embedded")){if((new Date()-this.last_click_at)<333){this.close()}this.last_click_at=new Date()}},closeOnClick:function(){if(this.options.get("embedded")){return false}if(this.options.get("close_on_click")===nil){return(this.options.get("time"))?false:true}else{return(this.options.get("close_on_click"))}},navMonth:function(A){(target_date=new Date(this.date)).setMonth(A);return(this.navTo(target_date))},navYear:function(A){(target_date=new Date(this.date)).setYear(A);return(this.navTo(target_date))},navTo:function(A){if(!this.validYear(A.getFullYear())){return false}this.date=A;this.date.setDate(1);this.refresh();this.callback("after_navigate",this.date);return true},setUseTime:function(B){this.use_time=this.options.get("time")&&(this.options.get("time")=="mixed"?B:true);if(this.use_time&&this.selected_date){var C=Math.floor_to_interval(this.selected_date.getMinutes(),this.options.get("minute_interval"));var A=this.selected_date.getHours();this.hour_select.setValue(A);this.minute_select.setValue(C)}else{if(this.options.get("time")=="mixed"){this.hour_select.setValue("");this.minute_select.setValue("")}}},updateValue:function(){var A=this.target_element.value;this.target_element.value=this.dateString();if(A!=this.target_element.value){this.callback("onchange")}},today:function(A){var C=new Date();this.date=new Date();var B=$H({day:C.getDate(),month:C.getMonth(),year:C.getFullYear(),hour:C.getHours(),minute:C.getMinutes()});if(!A){B=B.merge({hour:"",minute:""})}this.updateSelectedDate(B,true);this.refresh()},close:function(){if(this.closed){return false}this.callback("before_close");this.calendar_div.hide();this.closed=true;if(this.iframe){this.iframe.hide()}if(this.target_element.type!="hidden"){this.target_element.focus()}this.callback("after_close")},show:function(){this.callback("before_show");this.closed=false;this.calendar_div.show();if(this.iframe){this.iframe.show()}this.callback("after_show")},closeIfClickedOut:function(A){if(!A.element().descendantOf(this.calendar_div)&&A.element()!=this.target_element&&A.element()!=this.target_element.next("img")){this.close()}},keyPress:function(A){if(A.keyCode==Event.KEY_ESC){this.close()}},callback:function(A,B){if(this.options.get(A)){this.options.get(A).bind(this.target_element)(B)}}};DM_Widget_DateSelect={calendars:$H(),rules:{"input.cal_spawn":function(A){A.observe("keypress",function(B){var C=B.keyCode?B.keyCode:B.which;if(C!=Event.KEY_RETURN){B.stop()}return false})},"img.cal_spawn":function(A){A.observe("click",DM_Widget_DateSelect.calendar)}},calendar:function(D){var B=D.element();if(B.tagName.toLowerCase()=="img"){var A=B.previous("input")}else{var A=B}if(!DM_Widget_DateSelect.calendars.get(A.identify())){var H=function(I){return true};var G=A.hasClassName("time");var C=[1900,2009];if(A.hasClassName("past")){if(G){H=function(I){return I<=new Date().stripTime()}}else{H=function(I){return I<=(new Date()).stripTime()}}}else{if(A.hasClassName("future")){if(G){H=function(I){return I>=new Date().stripTime()}}else{H=function(I){return I>=(new Date()).stripTime()}}var C=[2009,2019]}}if(A.hasClassName("withminuteinterval")){var F=A.findParamInClass("minuteinterval")}DM_Widget_DateSelect.calendars.set(A.identify(),new CalendarDateSelect($(A),{popup_by:B,year_range:C,valid_date_check:H,popup:"force",time:G,minute_interval:F,onchange:function(){B.next("input").value=A.calendar_date_select.selected_date.toDBFormattedString(G)}}))}else{var E=DM_Widget_DateSelect.calendars.get(A.identify());if(E.closed){E.show()}else{E.close()}}}};Event.onDOMReady(function(){EventSelectors.start(DM_Widget_DateSelect.rules)})