//Calendar, <http://www.circlesquare.biz>. Copyright (c) 2008, circlesquare solutions ltd. BSD Style License.

var Calendar=new Class({Implements:[Events,Options],options:{year:0,month:0,day:0,className:"calendar",show:false,months:["January","February","March","April","May","June","July","August","September","October","November","December"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekBeginning:0},initialize:function(_1,_2){this.setOptions(_2);this.calendar=$(_1);this.input=this.calendar.getElement("input");if(this.options.year==0||this.options.month==0||this.options.day==0){arrDate=this.input.getProperty("value").split("-");if(arrDate.length==3){this.options.year=arrDate[0].toInt();this.options.month=arrDate[1].toInt();this.options.day=arrDate[2].toInt();}else{this.options.year=-1;this.options.month=-1;this.options.day=-1;}}this.selectyear=this.options.year.toInt();this.selectmonth=(this.options.month-1).toInt();this.selectday=this.options.day.toInt();this.selectdate=new Date(this.selectyear,this.selectmonth,this.selectday);this.today=new Date();this.draw();this.build();this.display();this.save();this.input.setStyle("display","none");this.container.injectInside(this.calendar);if(this.selectyear!=-1&&this.selectmonth!=-1&&this.selectday!=-1&&!this.options.show){this.toggle();}this.disable(this.input.disabled);},disable:function(_3){if(_3){this.input.disabled=true;this.displaydate.addClass("disabled");this.wrapper.setStyle("display","none");}else{this.input.disabled=false;this.displaydate.removeClass("disabled");}},draw:function(){this.container=new Element("div",{"class":this.options.className});this.displaydate=new Element("div",{"class":"date"}).addEvent("click",function(){if(this.input.disabled){if(!this.displaydate.hasClass("disabled")){this.displaydate.addClass("disabled");}}else{this.displaydate.removeClass("disabled");this.toggle();}}.bind(this)).injectInside(this.container);this.wrapper=new Element("div",{"class":"wrapper"}).injectInside(this.container);this.formyear=new Element("input",{"value":this.selectyear,"readonly":"true"});new Element("div",{"class":"year"}).adopt(new Element("a",{"href":""}).set("text","[-]").addEvent("click",function(e){e=new Event(e).stop();this.stopyear();}.bind(this)).addEvent("mousedown",function(e){e=new Event(e).stop();this.startyear(-1);}.bind(this)).addEvent("mouseup",function(e){e=new Event(e).stop();this.stopyear();}.bind(this))).adopt(this.formyear).adopt(new Element("a",{"href":""}).set("text","[+]").addEvent("click",function(e){e=new Event(e).stop();this.stopyear();}.bind(this)).addEvent("mousedown",function(e){e=new Event(e).stop();this.startyear(1);}.bind(this)).addEvent("mouseup",function(e){e=new Event(e).stop();this.stopyear();}.bind(this))).injectInside(this.wrapper);this.formmonth=new Element("select").addEvent("change",function(e){e=new Event(e).stop();this.selectmonth=this.formmonth.getProperty("value").toInt();this.selectdate=new Date(this.selectyear,this.selectmonth,this.selectday);while(this.selectdate.getMonth()>this.selectmonth){this.selectday--;this.selectdate=new Date(this.selectyear,this.selectmonth,this.selectday);}this.display();this.save();this.build();}.bind(this));for(i=0;i<12;i++){if(this.selectmonth==i){new Element("option",{"selected":"selected"}).setProperty("value",i).set("text",this.options.months[i]).injectInside(this.formmonth);}else{new Element("option").setProperty("value",i).set("text",this.options.months[i]).injectInside(this.formmonth);}}new Element("div",{"class":"month"}).adopt(this.formmonth).injectInside(this.wrapper);this.formday=new Element("table",{"class":"day","cellspacing":2,"cellpadding":0}).injectInside(this.wrapper);var _b=new Element("thead").injectInside(this.formday);var _c=new Element("tbody").injectInside(this.formday);var i=0;var tr=new Element("tr").injectInside(_b);for(i=0;i<7;i++){new Element("th").set("text",this.options.days[(this.options.weekBeginning+i)%7].substr(0,1)).injectInside(tr);}for(i=0;i<6;i++){tr=new Element("tr").injectInside(_c);for(j=0;j<7;j++){new Element("td").injectInside(tr);}}this.formnone=new Element("a").set("text","None").addEvent("click",function(e){e=new Event(e).stop();this.selectyear=-1;this.selectmonth=-1;this.selectday=-1;this.display();this.save();this.build();}.bind(this));new Element("div",{"class":"none"}).adopt(this.formnone).injectInside(this.wrapper);},build:function(){this.today=new Date();this.currentdate=new Date(this.selectyear,this.selectmonth,1);if(this.currentdate.getDay()==this.options.weekBeginning){this.currentdate.setDate(1-7-(7+this.currentdate.getDay()-this.options.weekBeginning)%7);}else{this.currentdate.setDate(1-(7+this.currentdate.getDay()-this.options.weekBeginning)%7);}this.formday.getElements("tbody td").each(function(td){td.removeEvents();td.removeClass("selected");td.removeClass("today");if(this.currentdate.getMonth()==this.selectmonth){td.removeClass("empty");td.set("text",this.currentdate.getDate());if(this.selectdate.getDate()==this.currentdate.getDate()){td.addClass("selected");}if(this.currentdate.getDate()==this.today.getDate()&&this.currentdate.getMonth()==this.today.getMonth()&&this.currentdate.getFullYear()==this.today.getFullYear()){td.addClass("today");}td.addEvent("click",function(){this.selectday=td.get("text").toInt();this.display();this.save();}.bind(this)).addEvent("mouseover",function(){td.addClass("over");}.bind(this)).addEvent("mouseout",function(){td.removeClass("over");}.bind(this));}else{td.set("text"," ");td.addClass("empty");}this.currentdate.setDate(this.currentdate.getDate()+1);}.bind(this));this.formday.getElements("tbody tr").each(function(tr){var _12=true;tr.getElements("td").each(function(td){if(td.get("text")!=" "){_12=false;}});if(_12){tr.setStyle("display","none");}else{tr.setStyle("display","");}}.bind(this));},display:function(){if(this.selectyear==-1||this.selectmonth==-1||this.selectday==-1){this.wrapper.setStyle("display","none");this.displaydate.set("text","None");}else{this.selectdate=new Date(this.selectyear,this.selectmonth,this.selectday);var day=(this.selectdate.getDate()<10)?"0"+this.selectdate.getDate():this.selectdate.getDate();var _15=this.options.months[this.selectdate.getMonth()];var _16=this.selectdate.getFullYear();this.displaydate.set("text",_15+" "+day+", "+_16);this.formyear.setProperty("value",this.selectyear);this.formmonth.setProperty("value",this.selectmonth);this.formday.getElements("tbody td").each(function(td){td.removeClass("selected");if(td.get("text").toInt()==day.toInt()){td.addClass("selected");}}.bind(this));}},save:function(){if(this.selectyear==-1||this.selectmonth==-1||this.selectday==-1){this.input.setProperty("value","");}else{this.selectdate=new Date(this.selectyear,this.selectmonth,this.selectday);var day=(this.selectdate.getDate()<10)?"0"+this.selectdate.getDate():this.selectdate.getDate();var _19=((this.selectdate.getMonth()+1)<10)?"0"+(this.selectdate.getMonth()+1):(this.selectdate.getMonth()+1);var _1a=this.selectdate.getFullYear();this.input.setProperty("value",_1a+"-"+_19+"-"+day);}},toggle:function(){if(this.wrapper.getStyle("display")=="none"){this.wrapper.setStyle("display","");if(this.selectyear==-1||this.selectmonth==-1||this.selectday==-1){this.selectdate=new Date();}this.selectyear=this.selectdate.getFullYear();this.selectmonth=this.selectdate.getMonth();this.selectday=this.selectdate.getDate();this.display();this.save();this.build();}else{this.wrapper.setStyle("display","none");}},startyear:function(_1b){this.changeyear(_1b,250);},stopyear:function(){$clear(this.changingyear);this.display();this.save();this.build();},changeyear:function(_1c,_1d){this.selectyear+=_1c;this.formyear.setProperty("value",this.selectyear);_1d-=(_1d/10).round();this.changingyear=this.changeyear.delay(_1d,this,[_1c,_1d]);}});
