function DateManager(b){this.validDates=new Array();this.invalidDates=new Array();this.formFields=b;this.hasBlankMonth=(typeof b.hasBlankMonth!="undefined"?b.hasBlankMonth:false);this.hasBlankDay=(typeof b.hasBlankDay!="undefined"?b.hasBlankDay:false);this.onChange=(typeof b.onChange=="function"?b.onChange:null);if(this.formFields.months&&this.formFields.days){this.formFields.months.observe("change",this.doDays.bindAsEventListener(this))}if(this.formFields.days&&this.formFields.hidden){this.formFields.days.observe("change",this.updateHidden.bindAsEventListener(this))}if(this.formFields.after){var a=(new Array(this.formFields.after)).flatten();a.each(function(c){if(c.constructor==DateManager){c.formFields.months.observe("change",this.doMonths.bindAsEventListener(this));c.formFields.days.observe("change",this.doMonths.bindAsEventListener(this));c.formFields.hidden.observe("dateManager:dateChange",this.doMonths.bindAsEventListener(this))}},this)}if(this.formFields.before&&this.formFields.before.constructor==DateManager){this.formFields.before.formFields.months.observe("change",this.doMonths.bindAsEventListener(this));this.formFields.before.formFields.days.observe("change",this.doMonths.bindAsEventListener(this))}if(systemStartDate){this.invalidDates[this.invalidDates.length]={dateFrom:null,dateTo:addToDate(systemStartDate,-1)}}if(systemEndDate){this.invalidDates[this.invalidDates.length]={dateFrom:systemEndDate,dateTo:null}}this.doMonths();if($(this.formFields.hidden.id+"_link")){this.formFields.calendar=$(this.formFields.hidden.id+"_link");this.formFields.calendar.observe("click",this.showCalendar.bindAsEventListener(this))}else{this.formFields.calendar=null}}DateManager.prototype.MONTHS_PATTERN="NNN yyyy";DateManager.prototype.DAYS_PATTERN="dd";DateManager.prototype.addDisabledDates=function(b,a){if(calendar!=null){calendar.hideCalendar()}if(b==null&&a==null){return}this.invalidDates[this.invalidDates.length]={dateFrom:b,dateTo:a};this.doMonths()};DateManager.prototype.updateHidden=function(){if(this.formFields==null||this.formFields.months==null||this.formFields.months.type!="select-one"){return}if(this.formFields==null||this.formFields.days==null||this.formFields.days.type!="select-one"){return}if(this.formFields==null||this.formFields.hidden==null){return}var a=$F(this.formFields.hidden);var b=this.getValue();if(b==null){this.formFields.hidden.value=""}else{this.formFields.hidden.value=formatDate(this.getValue(),"yyMMdd")}if(Object.isFunction(this.onChange)){this.onChange()}this.formFields.hidden.fire("dateManager:dateChange")};DateManager.prototype.setValidDates=function(a){if(calendar!=null){calendar.hideCalendar()}this.validDates=$A(a).flatten().compact();this.doMonths()};DateManager.prototype._evaluate=function(e,b){if(Object.isFunction(e)){return e()}else{if(e.constructor==DateManager){var a=e.getValue();if(a==null){a=createDate($F(e.formFields.months)+"01");if(b=="min"){var c=e.getMinDate();if(c.getTime()>a.getTime()){a=c}}else{if(b=="max"){var g=e.getMaxDate();if(g.getTime()<a.getTime()){a=g}}}}return a}else{if(e.constructor==Date){return e}else{if(typeof e=="string"&&e.length==6){return this.createDate(e)}else{if(Object.isArray(e)&&e.length>0){var a=this._evaluate(e[0],b);for(var d=1;d<e.length;d++){var f=this._evaluate(e[d],b);if(a==null||(b=="min"&&f!=null&&f.getTime()<a.getTime())){a=f}else{if(b=="max"&&f!=null&&f.getTime()>a.getTime()){a=f}}}return a}else{return null}}}}}};DateManager.prototype.getMinDate=function(){var e=new Date();for(var a=0;a<this.invalidDates.length;++a){if(this.invalidDates[a].dateFrom==null&&this.invalidDates[a].dateTo.getTime()>e.getTime()){e=this.invalidDates[a].dateTo}}if(this.formFields.after!=null){var b=this._evaluate(this.formFields.after,"max");if(b!=null){if(this.formFields.afterOffset&&this.formFields.afterOffset>0){b=new Date(b.getTime()+this.formFields.afterOffset*24*60*60*1000)}if(b.getTime()>e.getTime()){e=b}}}if(this.validDates.length>0){var c="999999";var d=formatDate(e,"yyMMdd");for(var a=0;a<this.validDates.length;a++){if(this.validDates[a]<c&&this.validDates[a]>=d){c=this.validDates[a]}}if(this.createDate(c).getTime()>e.getTime()){e=this.createDate(c)}}log("minDate: "+e);return e};DateManager.prototype.getValue=function(){if(this.formFields==null||this.formFields.months==null||this.formFields.months.type!="select-one"){return null}if(this.formFields==null||this.formFields.days==null||this.formFields.days.type!="select-one"){return null}var a=$F(this.formFields.months)+""+$F(this.formFields.days);if(a.length!=6){return null}return this.createDate(a)};DateManager.prototype.setValue=function(d,e,a){var c=parseDate(d+"-"+e+"-"+a);var b=formatDate(c,"yyMM");AniteDDB.setValue(this.formFields.months,b);this.doDays();AniteDDB.setValue(this.formFields.days,a.toPaddedString(2));this.updateHidden()};DateManager.prototype.getMaxDate=function(){var e=null;for(var b=0;b<this.invalidDates.length;++b){if(this.invalidDates[b].dateTo==null&&(e==null||this.invalidDates[b].dateFrom.getTime()<e.getTime())){e=this.invalidDates[b].dateFrom}}if(this.formFields.before!=null&&this.formFields.before.constructor==DateManager){var a=this.formFields.before.getValue();if(a.getTime()<e.getTime()){e=a}}if(this.validDates.length>0){var c="000000";var d=(e==null?"999999":formatDate(e,"yyMMdd"));for(var b=0;b<this.validDates.length;b++){if(this.validDates[b]>c&&this.validDates[b]<d){c=this.validDates[b]}}if(e==null||this.createDate(c).getTime()<e.getTime()){e=this.createDate(c)}}if(e==null){e=new Date(this.getMinDate().getTime()+365.25*24*60*60*1000)}return e};DateManager.prototype.doMonths=function(){if(calendar!=null){calendar.hideCalendar()}if(this.formFields==null||this.formFields.months==null||this.formFields.months.type!="select-one"){return}var c=$F(this.formFields.months);AniteDDB.clear(this.formFields.months);if(this.hasBlankMonth){this.formFields.months.options[0]=new Option(" "," ")}var d=this.getMinDate();var e=this.getMaxDate();var b=new Date(d.getTime());b.setDate(1);while(b.getTime()<e.getTime()){this.formFields.months.options[this.formFields.months.options.length]=new Option(formatDate(b,this.MONTHS_PATTERN),formatDate(b,"yyMM"));var a=b.getMonth();a++;if(a==12){a=0;b.setFullYear(b.getFullYear()+1)}b.setMonth(a)}AniteDDB.setValue(this.formFields.months,c);if($F(this.formFields.months)==null){AniteDDB.setSelectedIndex(this.formFields.months,0)}this.doDays()};DateManager.prototype.doDays=function(){if(calendar!=null){calendar.hideCalendar()}if(this.formFields==null||this.formFields.days==null||this.formFields.days.type!="select-one"){return}var a=$F(this.formFields.days);AniteDDB.clear(this.formFields.days);if(this.hasBlankDay){this.formFields.days.options[0]=new Option(" "," ")}var c=parseFloat($F(this.formFields.months).substring(2,4))-1;var b=parseFloat($F(this.formFields.months).substring(0,2))+2000;var d=this.getDays(c,b);d.each(function(f){var e=f.toPaddedString(2);this.formFields.days.options[this.formFields.days.options.length]=new Option(f,f.toPaddedString(2),false,(e==a))},this);AniteDDB.setValue(this.formFields.days,a);this.updateHidden()};DateManager.prototype.getDays=function(g,j){j=2000+(j%100);var h=new Date(j,g,1);var c=this.monthLength(h.getMonth(),h.getFullYear());var k=new Array();for(var f=1;f<c+1;f++){k[k.length]=f}var e=this.getMinDate();var b=this.getMaxDate();if(g==b.getMonth()&&j==b.getFullYear()){k=k.slice(0,b.getDate())}if(g==e.getMonth()&&j==e.getFullYear()){k=k.slice(e.getDate()-1,k.length)}if(this.validDates!=null&&this.validDates.length>0){for(var f=0;f<k.length;++f){var a=formatDate(new Date(j,g,k[f]),"yyMMdd");if(this.validDates.indexOf(a)<0){k[f]=null}}k=k.compact()}return k};DateManager.prototype.monthLength=function(c,a){var b=new Array(31,28,31,30,31,30,31,31,30,31,30,31);if(c!=1){return b[c]}else{if(((a%400)==0)||(((a%100)!=0)&&((a%4)==0))){return 29}else{return 28}}};DateManager.prototype.createDate=function(c){if(c==null||typeof c!="string"||c.length!=6){return null}var e=parseFloat(c.substr(0,2));if(e<46){e+=2000}else{e+=1900}var a=parseFloat(c.substr(2,2)-1);var d=parseFloat(c.substr(4,2));var b=new Date(e,a,d);return b};DateManager.prototype.disable=function(){this.formFields.months&&this.formFields.months.disable();this.formFields.months&&this.formFields.days.disable();this.formFields.hidden&&(this.formFields.hidden.value="");this.formFields.calendar&&disableCalendar(this.formFields.hidden.id)};DateManager.prototype.enable=function(){this.formFields.months&&this.formFields.months.enable();this.formFields.months&&this.formFields.days.enable();this.formFields.calendar&&enableCalendar(this.formFields.hidden.id);this.updateHidden()};DateManager.prototype.showCalendar=function(){if(calendar!=null){calendar.hideCalendar()}var a=this.formFields.calendar;if($("popupCalendar")==null){new Insertion.Bottom(document.body,'<div id="popupCalendar"></div>')}calendar=new CalendarPopup("popupCalendar");calendar.offsetX=20;calendar.offsetY=0;this.invalidDates.each(function(g){calendar.addDisabledDates((g.dateFrom==null?null:formatDate(g.dateFrom,"yyyy-MM-dd")),(g.dateTo==null?null:formatDate(g.dateTo,"yyyy-MM-dd")))});if(this.validDates.length>1){for(var d=1;d<this.validDates.length;d++){var f=formatDate(addToDate(this.validDates[d],-1),"yyyy-MM-dd");var c=formatDate(addToDate(this.validDates[d-1],1),"yyyy-MM-dd");if(f>=c){calendar.addDisabledDates(c,f)}}calendar.addDisabledDates(formatDate(addToDate(this.validDates[this.validDates.length-1],1),"yyyy-MM-dd"),null)}calendar.addDisabledDates(null,formatDate(addToDate(this.getMinDate(),-1),"yyyy-MM-dd"));calendar.addDisabledDates(formatDate(addToDate(this.getMaxDate(),1),"yyyy-MM-dd"),null);if(Prototype.Browser.IE){var b=navigator.appVersion;b=parseFloat(b.substr(b.indexOf("MSIE")+5,4));if(b<=6){calendar.offsetX=75;calendar.offsetY=0}}var e=this.getValue();if(e==null){e=this.getMinDate()}calendar.setReturnFunction("setDateFromCalendar");calendar.showCalendar(a.id,formatDate(e,"yyyy-MM-dd"));calendar.dateManager=this;calendarInput=this.formFields.hidden};
