MooTools.lang.set("ru-RU","Date",{months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],days:["Вc","Пн","Вт","Ср","Чт","Пт","Сб"],dateOrder: ['date', 'month', 'year'],shortDate:"%d.%m.%Y"});MooTools.lang.setLanguage("ru-RU");
var CalendarEightysix=new Class({Implements:Options,options:{'slideDuration': 300,'fadeDuration': 200,'toggleDuration': 200,'fadeTransition': Fx.Transitions.linear,'slideTransition': Fx.Transitions.linear,prefill:true,defaultDate:null,linkWithInput:true,theme:"default",defaultView:"month",startMonday:false,alwaysShow:false,injectInsideTarget:false,unique:true,format:"%d.%m.%Y",alignX:"right",alignY:"ceiling",offsetX:0,offsetY:0,draggable:false,pickable:true,toggler:null,pickFunction:$empty,disallowUserInput:false,minDate:null,maxDate:null,excludedWeekdays:null,includedWeekdays:null,excludedDates:null,includedDates:null,redSeason:null,greenSeason:null,createHiddenInput:false,hiddenInputName:"date_hidden",hiddenInputFormat:"%d.%m.%Y"},initialize:function(f,c){this.setOptions(c);this.target=$(f);this.transitioning=false;Date.defineParser({re:/^[0-9]{10}$/,handler:function(g){return new Date.parse("Jan 01 1970").set("seconds",g[0])}});if($defined(this.options.defaultDate)){this.selectedDate=new Date().parse(this.options.defaultDate).clearTime()}else{if(this.options.linkWithInput&&$chk(this.target.get("value"))){this.selectedDate=new Date().parse(this.target.get("value")).clearTime()}}if(!$defined(this.selectedDate)||!this.selectedDate.isValid()){this.selectedDate=new Date()}this.viewDate=this.selectedDate.clone().set("date",1).clearTime();var a='<div class="wrapper"><div class="calheader"><div class="arrow-left" style="display:block;"></div><div class="label clickable"></div><div class="arrow-right" style="display:block;margin-left:155px;margin-top:-31px;position:absolute;"></div></div><div class="body"><div class="inner"><div class="container a"></div><div class="container b"></div></div></div><div class="footer"></div></div>';this.element=new Element("div",{"id":this.setID(),"class":"calendar-eightysix",html:a,style:"display: "+(this.options.alwaysShow?"block":"none")}).addClass(this.options.theme);if(this.options.injectInsideTarget){this.element.injectBottom(this.target)}else{this.element.injectBottom($(document.body));this.position();window.addEvent("resize",this.position.bind(this))}this.currentContainer=this.element.getElement(".container.a").setStyle("z-index",999);this.tempContainer=this.element.getElement(".container.b").setStyle("z-index",998);this.header=this.element.getElement(".calheader");this.label=this.header.getElement(".label");this.arrowLeft=this.header.getElement(".arrow-left");this.arrowRight=this.header.getElement(".arrow-right");/*this.label.addEvent("click",this.levelUp.bind(this));*/this.arrowLeft.addEvent("click",this.slideLeft.bind(this));this.arrowRight.addEvent("click",this.slideRight.bind(this));if($defined(this.options.minDate)){this.options.minDate=Date.parse(this.options.minDate).clearTime();if(!this.options.minDate.isValid()){this.options.minDate=null}}if($defined(this.options.maxDate)){this.options.maxDate=Date.parse(this.options.maxDate).clearTime();if(!this.options.maxDate.isValid()){this.options.maxDate=null}}if($defined(this.options.includedDates)) {
var includedDates = [];
this.options.includedDates.each(function(date) {
includedDates.include(this.format(new Date().parse(g).clearTime(), '%t'));
}.bind(this));this.options.includedDates = includedDates;
}if($defined(this.options.excludedDates)){var b=[];this.options.excludedDates.each(function(g){b.include(this.format(new Date().parse(g).clearTime(),"%t"))}.bind(this));this.options.excludedDates=b}if($defined(this.options.redSeason)&&$defined(this.options.greenSeason)){var d=[];var e=[];this.options.redSeason.each(function(g){e.include(this.format(new Date().parse(g).clearTime(),"%d.%m.%Y"))}.bind(this));this.options.greenSeason.each(function(g){d.include(this.format(new Date().parse(g).clearTime(),"%d.%m.%Y"))}.bind(this));this.options.redSeason=e;this.options.greenSeason=d}if(this.options.draggable&&!this.options.injectInsideTarget){this.header.addClass("dragger");new Drag(this.element,{handle:this.header})}if(this.options.createHiddenInput){this.hiddenInput=new Element("input",{type:"hidden",name:this.options.hiddenInputName}).injectAfter(this.target)}if(this.options.prefill){this.pick()}if(!this.options.disallowUserInput&&this.options.linkWithInput&&this.target.get("tag")=="input"){this.target.addEvent("keyup",function(){this.setDate(this.target.get("value"),false)}.bind(this))}if(this.options.disallowUserInput&&this.target.get("tag")=="input"){this.target.addEvents({keydown:($lambda(false)),contextmenu:($lambda(false))})}if($defined(this.options.toggler)){this.options.toggler=$(this.options.toggler)}($defined(this.options.toggler)?this.options.toggler:this.target).addEvents({focus:this.show.bind(this),click:this.show.bind(this)});if(!this.options.alwaysShow){document.addEvent("mousedown",this.outsideClick.bind(this))}MooTools.lang.addEvent("langChange",function(){this.render();this.pick()}.bind(this));this.view=this.options.defaultView;this.render()},render:function(){this.currentContainer.empty();switch(this.view){case"decade":this.renderDecade();break;case"year":this.renderYear();break;default:this.renderMonth()}},renderMonth:function(){this.view="month";this.currentContainer.empty().addClass("month");if(this.options.pickable){this.currentContainer.addClass("pickable")}var a=MooTools.lang.get("Date"),e=this.viewDate.format("%w")-(this.options.startMonday?1:0);if(e==-1){e=6}var f=new Date();this.label.set("html",a.months[this.viewDate.get("month")]+" "+this.viewDate.format("%Y"));var j=new Element("div",{"class":"row"}).injectBottom(this.currentContainer);for(var c=(this.options.startMonday?1:0);c<(this.options.startMonday?8:7);c++){var h=new Element("div",{html:a.days[this.options.startMonday&&c==7?0:c]}).injectBottom(j);h.set("html",h.get("html").substr(0,2))}j=new Element("div",{"class":"row"}).injectBottom(this.currentContainer);g=this.viewDate.clone().decrement("month").getLastDayOfMonth();for(var c=0;c<e;c++){this.injectDay(j,this.viewDate.clone().decrement("month").set("date",g-(e-c)+1),true)}for(var c=1;c<=this.viewDate.getLastDayOfMonth();c++){this.injectDay(j,this.viewDate.clone().set("date",c));if(j.getChildren().length==7){j=new Element("div",{"class":"row"}).injectBottom(this.currentContainer)}}var g=8-j.getChildren().length,b=this.viewDate.clone().increment("month").set("date",1);for(var c=1;c<g;c++){this.injectDay(j,b.clone().set("date",c),true)}for(var g=this.currentContainer.getElements(".row").length;g<7;g++){j=new Element("div",{"class":"row"}).injectBottom(this.currentContainer);for(var d=0;d<7;d++){this.injectDay(j,b.clone().set("date",c),true);c++}}this.renderAfter()},injectDay:function(d,b,c){today=new Date();var a=new Element("div",{html:b.get("date")}).injectBottom(d);a.date=b;if(c){a.addClass("outside")}if(($defined(this.options.minDate)&&this.format(this.options.minDate,"%t")>this.format(b,"%t"))||($defined(this.options.maxDate)&&this.format(this.options.maxDate,"%t")<this.format(b,"%t"))||($defined(this.options.includedDates) && !this.options.includedDates.contains(this.format(b, '%t')))||($defined(this.options.excludedWeekdays)&&this.options.excludedWeekdays.contains(b.format("%w").toInt()))||($defined(this.options.excludedDates)&&this.options.excludedDates.contains(this.format(b,"%t")))){a.addClass("non-selectable")}else if(($defined(this.options.includedWeekdays) && this.options.includedWeekdays.contains(b.format("%w").toInt())) || ($defined(this.options.includedWeekdays) && this.options.includedWeekdays.contains(this.format(b, "%t"))))
		{a.removeCLass('non-selectable').setStyle("background-image","#CCC!important").addEvent("click", this.pick.bind(this))}else{if(this.options.pickable){a.addEvent("click",this.pick.bind(this)).addClass("selectable");if($defined(this.options.redSeason)&&this.options.redSeason.contains(this.format(b,"%d.%m.%Y"))){a.addClass("red_season").addEvent("click",this.pick.bind(this))}if($defined(this.options.greenSeason)&&this.options.greenSeason.contains(this.format(b,"%d.%m.%Y"))){a.addClass("green_season").addEvent("click",this.pick.bind(this))}}}if(b.format("%x")==today.format("%x")){a.addClass("today")}if(b.format("%x")==this.selectedDate.format("%x")){a.addClass("selected").removeClass('selectable');}},renderYear:function(){this.view="year";this.currentContainer.addClass("year-decade");var a=new Date(),e=MooTools.lang.get("Date").months;this.label.set("html",this.viewDate.format("%Y"));var d=new Element("div",{"class":"row"}).injectBottom(this.currentContainer);for(var b=1;b<13;b++){var c=new Element("div",{html:e[b-1]}).injectBottom(d);c.set("html",c.get("html").substr(0,3));var f=this.viewDate.clone().set("month",b-1);c.date=f;if(($defined(this.options.minDate)&&this.format(this.options.minDate.clone().set("date",1),"%t")>this.format(f,"%t"))||($defined(this.options.maxDate)&&this.format(this.options.maxDate.clone().set("date",1),"%t")<this.format(f,"%t"))){c.addClass("non-selectable")}else{c.addEvent("click",this.levelDown.bind(this))}if(b-1==a.get("month")&&this.viewDate.get("year")==a.get("year")){c.addClass("today")}if(b-1==this.selectedDate.get("month")&&this.viewDate.get("year")==this.selectedDate.get("year")){c.addClass("selected")}if(!(b%4)&&b!=12){d=new Element("div",{"class":"row"}).injectBottom(this.currentContainer)}}this.renderAfter()},renderDecade:function(){this.label.removeClass("clickable");this.view="decade";this.currentContainer.addClass("year-decade");var c=new Date();var a,b;a=b=this.viewDate.format("%Y").toInt();while(b%12){b--}this.label.set("html",b+" &#150; "+(b+11));var g=new Element("div",{"class":"row"}).injectBottom(this.currentContainer);for(var d=b;d<b+12;d++){var f=new Element("div",{html:d}).injectBottom(g);var e=this.viewDate.clone().set("year",d);f.date=e;if(($defined(this.options.minDate)&&this.options.minDate.get("year")>d)||($defined(this.options.maxDate)&&this.options.maxDate.get("year")<d)){f.addClass("non-selectable")}else{f.addEvent("click",this.levelDown.bind(this))}if(d==c.get("year")){f.addClass("today")}if(d==this.selectedDate.get("year")){f.addClass("selected")}if(!((d+1)%4)&&d!=b+11){g=new Element("div",{"class":"row"}).injectBottom(this.currentContainer)}}this.renderAfter()},renderAfter:function(){var b=this.currentContainer.getElements(".row");for(var a=0;a<b.length;a++){b[a].set("class","row "+["a","b","c","d","e","f","g"][a]+" "+(a%2?"even":"odd")).getFirst().addClass("first");b[a].getLast().addClass("last");if(a==(this.view=="month"?1:0)&&$defined(this.options.minDate)&&this.format(this.options.minDate,"%t")>=this.format(b[a].getFirst().date,"%t")){this.arrowLeft.setStyle("visibility","hidden")}if(a==b.length-1&&$defined(this.options.maxDate)){if((this.view=="month"&&this.format(this.options.maxDate,"%t")<=this.format(b[a].getLast().date,"%t"))||(this.view=="year"&&this.format(this.options.maxDate,"%t")<=this.format(b[a].getLast().date.clone().increment("month"),"%t"))||(this.view=="decade"&&this.format(this.options.maxDate,"%t")<=this.format(b[a].getLast().date.clone().increment("year"),"%t"))){this.arrowRight.setStyle("visibility","hidden")}}}},slideLeft:function(){this.switchContainers();switch(this.view){case"month":this.viewDate.decrement("month");break;case"year":this.viewDate.decrement("year");break;case"decade":this.viewDate.set("year",this.viewDate.get("year")-12);break}this.render();this.currentContainer.set("tween",{duration:this.options.slideDuration,transition:this.options.slideTransition}).tween("left",[-this.currentContainer.getWidth(),0]);this.tempContainer.set("tween",{duration:this.options.slideDuration,transition:this.options.slideTransition}).tween("left",[0,this.currentContainer.getWidth()])},slideRight:function(){this.switchContainers();switch(this.view){case"month":this.viewDate.increment("month");break;case"year":this.viewDate.increment("year");break;case"decade":this.viewDate.set("year",this.viewDate.get("year")+12);break}this.render();this.currentContainer.set("tween",{duration:this.options.slideDuration,transition:this.options.slideTransition}).tween("left",[this.currentContainer.getWidth(),0]);this.tempContainer.set("tween",{duration:this.options.slideDuration,transition:this.options.slideTransition}).tween("left",[0,-this.currentContainer.getWidth()])},levelDown:function(a){if(this.transitioning){return}this.switchContainers();this.viewDate=a.target.date;switch(this.view){case"year":this.renderMonth();break;case"decade":this.renderYear();break}this.transitioning=true;this.currentContainer.set("tween",{duration:this.options.fadeDuration,transition:this.options.fadeTransition,onComplete:function(){this.transitioning=false}.bind(this)}).setStyles({opacity:0,left:0}).fade("in");this.tempContainer.set("tween",{duration:this.options.fadeDuration,transition:this.options.fadeTransition}).fade("out")},levelUp:function(){if(this.view=="decade"||this.transitioning){return}this.switchContainers();switch(this.view){case"month":this.renderYear();break;case"year":this.renderDecade();break}this.transitioning=true;this.currentContainer.set("tween",{duration:this.options.fadeDuration,transition:this.options.fadeTransition,onComplete:function(){this.transitioning=false}.bind(this)}).setStyles({opacity:0,left:0}).fade("in");this.tempContainer.set("tween",{duration:this.options.fadeDuration,transition:this.options.fadeTransition}).fade("out")},switchContainers:function(){this.currentContainer=this.currentContainer.hasClass("a")?this.element.getElement(".container.b"):this.element.getElement(".container.a");this.tempContainer=this.tempContainer.hasClass("a")?this.element.getElement(".container.b"):this.element.getElement(".container.a");this.currentContainer.empty().removeClass("month").removeClass("year-decade").setStyles({opacity:1,display:"inline-block","z-index":999});this.tempContainer.setStyle("z-index",998);this.label.set('id','cal_lbl');this.arrowLeft.setStyle("visibility","visible");this.arrowRight.setStyle("visibility","visible")},pick:function(b){if($defined(b)){this.selectedDate=b.target.date;this.element.getElements(".selected").removeClass("selected").addClass('selectable');b.target.addClass("selected").removeClass('selectable');}var a=this.format(this.selectedDate);if(!this.options.injectInsideTarget){switch(this.target.get("tag")){case"input":this.target.set("value",a);break;default:this.target.set("html",a)}(this.hide.bind(this)).delay(150)}if($defined(this.hiddenInput)){this.hiddenInput.set("value",this.format(this.selectedDate,this.options.hiddenInputFormat))}this.options.pickFunction(this.selectedDate)},position:function(){var b,a;var c=this.target.getCoordinates();switch(this.options.alignX){case"left":a=c.left;break;case"middle":a=c.left+(c.width/2)-(this.element.getWidth()/2);break;case"right":default:a=c.left+c.width}switch(this.options.alignY){case"bottom":b=c.top+c.height;break;case"top":b=c.top-this.element.getHeight();break;case"ceiling":default:b=c.top}a+=this.options.offsetX.toInt();b+=this.options.offsetY.toInt();this.element.setStyles({top:b,left:a})},show:function(){if(!this.visible&!this.options.alwaysShow){this.visible=true;if(!Browser.Engine.trident){this.element.setStyles({opacity:0,display:"block"});if(!this.options.injectInsideTarget){this.position()}this.element.set("tween",{duration:this.options.toggleDuration,transition:this.options.fadeTransition}).fade("in")}else{this.element.setStyles({opacity:1,display:"block"});if(!this.options.injectInsideTarget){this.position()}}}},hide:function(){if(this.visible&!this.options.alwaysShow){this.visible=false;if(!Browser.Engine.trident){this.element.set("tween",{duration:this.options.toggleDuration,transition:this.options.fadeTransition,onComplete:function(){this.element.setStyle("display","none")}.bind(this)}).fade("out")}else{this.element.setStyle("display","none")}}},toggle:function(){if(this.visible){this.hide()}else{this.show()}},format:function(a,b){if(!$defined(b)){b=this.options.format}if(!$defined(a)){return}b=b.replace(/%([a-z%])/gi,function(c,d){switch(d){case"D":return a.get("date");case"n":return a.get("mo")+1;case 't': return Date.UTC(a.get('fullyear'), a.get('month'), a.get('date')) / 1000;}return"%"+d});return a.format(b)},outsideClick:function(c){if(this.visible){var a=this.element.getCoordinates();var b=this.target.getCoordinates();if(((c.page.x<a.left||c.page.x>(a.left+a.width))||(c.page.y<a.top||c.page.y>(a.top+a.height)))&&((c.page.x<b.left||c.page.x>(b.left+b.width))||(c.page.y<b.top||c.page.y>(b.top+b.height)))){this.hide()}}},setDate:function(c,b){if(!$defined(b)){b=true}if($type(c)=="date"){var a=c.clearTime()}else{var a=$chk(c)?new Date().parse(this.target.get("value")).clearTime():new Date().clearTime()}if(a.isValid()){this.selectedDate=a.clone();this.viewDate=this.selectedDate.clone().set("date",1);this.render();if(b){this.pick()}}
},
toElement:function(){return this.element;}})


CalendarEightysix.implement({

    reConstruct_excludedWeekdays:function(excludedWeekdays){
	this.options.excludedWeekdays=excludedWeekdays;
	this.render();
},
    reConstruct_excludedDates:function(excludedDates){
	this.options.excludedDates=excludedDates;
	this.render();
},

reConstruct_includedDates:function(includedDates){
	this.options.includedDates=includedDates;
	this.render();
},

setID: function() {
if (this.options.unique==true) {return 'calendar';}
else {return 'calendar_'+$random(0,9999);}
}

});

/*thx goes to dev.base86.com*/
