var DatePicker=Class.create({monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],senderObjectList:null,currentDate:null,dayList:null,valueFormat:null,changeYearTimeout:null,initialize:function(i){var g=new Date,a=new Element("div",{id:"FBDatePicker","class":"fbDatePicker",style:"display: inline; position: absolute; left: "+(i.left+18)+"px; top: "+i.top+"px;"}),d=new Element("span",{id:"FBDatePickerPrev","class":"fbdMove",style:"text-align: left;"}).update("Prev");d.rel=-1;d.observe("click",this.changeMonth.bindAsEventListener(this));var j=new Element("span",{id:"FBDatePickerTitle","class":"fbdTitle",style:"text-align: center;"}).update(this.monthNames[g.getMonth()]+", "+g.getFullYear()),c=new Element("span",{id:"FBDatePickerNext","class":"fbdMove",style:"text-align: right;"}).update("Next");c.rel=1;c.observe("click",this.changeMonth.bindAsEventListener(this));var b=new Element("div",{"class":"fbdRow fbdTitleRow"});b.insert(d);b.insert(j);b.insert(c);a.insert(b);this.dayList=new Element("span",{"class":"fbdDayList"});this.dayList.observe("click",this.setValues.bindAsEventListener(this));a.insert(this.dayList);var e=new Element("div",{"class":"fbdRow fbdDateFieldsRow"}),f=new Element("select",{id:"FBDatePickerMonth",style:"float: left"});this.monthNames.each(function(b,a){f.insert(new Element("option",{value:a}).update(b))},this);f.observe("change",this.changeMonth.bindAsEventListener(this));var h=new Element("input",{id:"FBDatePickerYear",type:"text",size:"3",style:"float: left"});h.observe("keypress",this.changeYear.bindAsEventListener(this,false));e.insert(f);e.insert(h);a.insert(e);a.observe("click",function(a){Event.stop(a)});document.body.appendChild(a);this.setDate(g)},setDate:function(a){this.currentDate=a;this.dayList.update();$PROTO("FBDatePickerTitle")&&$PROTO("FBDatePickerTitle").update(this.monthNames[a.getMonth()]+", "+a.getFullYear());this.buildDayList();$PROTO("FBDatePickerMonth").value=a.getMonth();$PROTO("FBDatePickerYear").value=a.getFullYear()},buildDayList:function(){var c=new Date;c.setTime(this.currentDate.getTime());c.setDate(1);var a=new Element("div",{"class":"fbdRow"}),b=c.getDay();for(i=0;i<b;i++)a.insert(new Element("span",{"class":"frbDayBlock frbDayBlank"}).update("&nbsp;"));var d=this.getMonthLen(this.currentDate.getMonth(),this.currentDate.getYear());for(i=1;i<=d;i++){if(b!=0&&b%7==0){this.dayList.insert(a);a=new Element("div",{"class":"fbdRow"})}a.insert(new Element("span",{"class":"frbDayBlock"}).update(i));b++}this.dayList.insert(a)},changeMonth:function(b){var a=Event.element(b);if(a.rel){this.currentDate.setMonth(this.currentDate.getMonth()+Number(a.rel));this.setDate(this.currentDate)}else{this.currentDate.setMonth($PROTO("FBDatePickerMonth").value);this.setDate(this.currentDate)}},changeYear:function(b,a){if(!a){this.changeYearTimeout&&clearTimeout(this.changeYearTimeout);this.changeYearTimeout=setTimeout(this.changeYear.bindAsEventListener(this,true),1e3)}else if(isFinite(Number($PROTO("FBDatePickerYear").value))){this.currentDate.setYear($PROTO("FBDatePickerYear").value);this.setDate(this.currentDate)}else alert("Invalid Year")},getMonthLen:function(a,c){var b=[31,0,31,30,31,30,31,31,30,31,30,31];return a==1?c%4==0?29:28:b[a]},setValues:function(c){var b=Event.element(c);if(b.innerHTML!="&nbsp;"){var a=[];this.valueFormat.split("/").each(function(c,b){if(c=="mm")a[b]=0;else if(c=="dd")a[b]=1;else a[b]=2},this);this.senderObjectList[a[0]].value=this.currentDate.getMonth()+1;this.senderObjectList[a[1]].value=b.innerHTML;this.senderObjectList[a[2]].value=this.currentDate.getFullYear();DatePickerManager.Close()}else Event.stop(c)}}),DatePickerManager={datePicker:null,Show:function(a,d){document.observe("click",this.Close);var b=$PROTO("FBDatePicker");if(!b){var c=a.cumulativeOffset();this.datePicker=new DatePicker(c);this.datePicker.senderObjectList=d.select("INPUT");this.datePicker.valueFormat=a.rel?a.rel:"mm/dd/yyyy"}else{var c=a.cumulativeOffset();this.datePicker.senderObjectList=d.select("INPUT");this.datePicker.valueFormat=a.rel?a.rel:"mm/dd/yyyy";b.style.left=c.left+18+"px";b.style.top=c.top+"px";b.show()}},Close:function(){$PROTO("FBDatePicker").hide();document.stopObserving("click",this.Close)}}
