var LSB_EventCalendar=new Class({Implements:[Options,Events],options:{containerYear:null,containerMonth:null,containerDay:null,yearSelector:"",monthSelector:"",daySelector:"",classes:{yearCurrent:"ec_yearCur",yearHovered:"ec_yearHovered",leaveYear:"",monthCurrent:"ec_monthCur",monthHovered:"ec_monthHovered",leaveMonth:"ec_monthOut",dayCurrent:"ec_dayCur",dayHovered:"ec_dayHovered",dayMarked:"ec_dayOut",leaveDay:"ec_dayOut"},url:null,urlDayAction:null,onDaySelected:$empty()},initialize:function(d,f,e,a,b){this.setOptions(b);this.calendar=d;this.containerYear=f;this.containerMonth=e;this.containerDay=a;this.debugMode=true;this.mode="index";this.elmCurrentYear=null;this.elmCurrentMonth=null;this.elmCurrentDay=null;this.elmYear=[];this.elmMonth=[];this.elmDay=[];if(!this.checkInit()){return}var c=this;this.calendarRequest=new Request({url:c.options.url,onFailure:function(){},onComplete:function(h,i){var g=i.getElementsByTagName("results")[0];c.updateCalendar(g)}}).send()},checkInit:function(){var a=1;var b="";if(!$chk(this.calendar)){b+=a+": Required element 'Calendar' not found.\n";a++}if(!$chk(this.containerYear)){b+=a+": Required element 'containerYear' not found.\n";a++}if(!$chk(this.containerMonth)){b+=a+": Required element 'containerMonth' not found.\n";a++}if(!$chk(this.containerDay)){b+=a+": Required element 'containerDay' not found.\n";a++}if(this.options.yearSelector.clean()==""){b+=a+": Please check required option 'yearSelector'.\n";a++}if(this.options.monthSelector.clean()==""){b+=a+": Please check required option 'monthSelector'.\n";a++}if(this.options.daySelector.clean()==""){b+=a+": Please check required option 'daySelector'.\n";a++}if(this.debugNode==true&&b!=""){alert(b);return false}return true},updateCalendar:function(a){this.garbageElements();switch(this.mode){case"year":if(a.getElementsByTagName("month")[0]){this.containerMonth.set("html",a.getElementsByTagName("month")[0].childNodes[0].nodeValue);this.parseMonth()}if(a.getElementsByTagName("day")[0]){this.containerDay.set("html",a.getElementsByTagName("day")[0].childNodes[0].nodeValue);this.parseDay()}break;case"month":if(a.getElementsByTagName("day")[0]){this.containerDay.set("html",a.getElementsByTagName("day")[0].childNodes[0].nodeValue);this.parseDay()}break;default:if(a.getElementsByTagName("year")[0]){this.containerYear.set("html",a.getElementsByTagName("year")[0].childNodes[0].nodeValue);this.parseYear()}if(a.getElementsByTagName("month")[0]){this.containerMonth.set("html",a.getElementsByTagName("month")[0].childNodes[0].nodeValue);this.parseMonth()}if(a.getElementsByTagName("day")[0]){this.containerDay.set("html",a.getElementsByTagName("day")[0].childNodes[0].nodeValue);this.parseDay()}break}},parseYear:function(){var c=this;var a=this.options.classes.leaveYear;var b=this.containerYear.getElements(this.options.yearSelector).filter(function(d){return(d.hasClass(a))?false:true});if(b.length>0){b.each(function(d){d.addEvents({mouseenter:function(e){this.addClass(c.options.classes.yearHovered)},mouseleave:function(e){this.removeClass(c.options.classes.yearHovered)},click:function(f){var e=(this.getProperty("rel"))?this.getProperty("rel"):"";if($chk(c.elmCurrentYear)){c.elmCurrentYear.removeClass(c.options.classes.yearCurrent)}this.addClass(c.options.classes.yearCurrent);c.elmCurrentYear=this;c.mode="year";c.calendarRequest.send({data:"date="+e})}});if(d.hasClass(c.options.classes.yearCurrent)){c.elmCurrentYear=d}})}},parseMonth:function(){var c=this;var b=this.options.classes.leaveMonth;var a=this.containerMonth.getElements(this.options.monthSelector).filter(function(d){return(d.hasClass(b))?false:true});if(a.length>0){a.each(function(d){d.addEvents({mouseenter:function(e){this.addClass(c.options.classes.monthHovered)},mouseleave:function(e){this.removeClass(c.options.classes.monthHovered)},click:function(f){var e=(this.getProperty("rel"))?this.getProperty("rel"):"";if($chk(c.elmCurrentMonth)){c.elmCurrentMonth.removeClass(c.options.classes.monthCurrent)}this.addClass(c.options.classes.monthCurrent);c.elmCurrentMonth=this;c.mode="month";c.calendarRequest.send({data:"date="+e})}});if(d.hasClass(c.options.classes.monthCurrent)){c.elmCurrentMonth=d}})}},parseDay:function(){var b=this;var c=this.options.classes.dayMarked;var a=this.containerDay.getElements(this.options.daySelector).filter(function(d){return(d.hasClass(c))?true:false});if(a.length>0){a.each(function(d){d.addEvents({mouseenter:function(e){this.addClass(b.options.classes.dayHovered)},mouseleave:function(e){this.removeClass(b.options.classes.dayHovered)},click:function(f){var e=(this.getProperty("rel"))?this.getProperty("rel"):"";if(b.options.urlDayAction!=""){document.location.href=b.options.urlDayAction+e}else{b.fireEvent("onDaySelected",this)}}});if(d.hasClass(b.options.classes.dayCurrent)){b.elmCurrentDay=d}})}},garbageElements:function(){switch(this.mode){case"year":this.elmMonth.each(function(a){a.removeEvents()});break;case"month":this.elmDay.each(function(a){a.removeEvents()});break;default:this.elmYear.each(function(a){a.removeEvents()});this.elmMonth.each(function(a){a.removeEvents()});this.elmDay.each(function(a){a.removeEvents()});break}},getData:function(b){var a=new Hash({date:$chk(b)?b.clean():""});this.calendarRequest.send({date:a.toQueryString()})}});