-
Notifications
You must be signed in to change notification settings - Fork 0
/
calendar.min.js
14 lines (14 loc) · 4.88 KB
/
calendar.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/*
Aleksey Zhikharev 2017
@tutorial https://github.com/amarilis/calendar
*/
(function(m,e,t){function p(a){e.querySelector(".calendarOut")&&e.querySelector(".calendarOut").parentNode.removeChild(e.querySelector(".calendarOut"));var d=e.createElement("div");d.className="calendarOut";e.body.appendChild(d);var g=a.getBoundingClientRect();var b=e.body;var f=e.documentElement;var l=Math.round(g.top+(m.pageYOffset||f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0));g=Math.round(g.left+(m.pageXOffset||f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0));if(m.pageXOffset!=
t)f=pageXOffset,b=pageYOffset;else{b=e.documentElement;var h=e.body;f=b.scrollTop||h&&h.scrollTop||0;f-=b.clientTop;h=b.scrollLeft||h&&h.scrollLeft||0;h-=b.clientLeft;b=f;f=h}h=new Date;c.drawCalendar(parseInt(h.getMonth())+1,h.getFullYear(),a.getAttribute("calendar"));""!=a.value&&c.selectDate(a.value.split(".")[0],a.value.split(".")[1],a.value.split(".")[2],a.getAttribute("calendar"));g+=(a.offsetWidth-d.offsetWidth)/2;g<f&&(g=f);f=l-d.offsetHeight-5;f<b&&(f=l+a.offsetHeight+5);d.style.left=g+"px";
d.style.top=f+"px";d.style.opacity=1}var c={monthName:"\u042f\u043d\u0432\u0430\u0440\u044c \u0424\u0435\u0432\u0440\u0430\u043b\u044c \u041c\u0430\u0440\u0442 \u0410\u043f\u0440\u0435\u043b\u044c \u041c\u0430\u0439 \u0418\u044e\u043d\u044c \u0418\u044e\u043b\u044c \u0410\u0432\u0433\u0443\u0441\u0442 \u0421\u0435\u043d\u0442\u044f\u0431\u0440\u044c \u041e\u043a\u0442\u044f\u0431\u0440\u044c \u041d\u043e\u044f\u0431\u0440\u044c \u0414\u0435\u043a\u0430\u0431\u0440\u044c".split(" "),dayName:"\u041f\u041d \u0412\u0422 \u0421\u0420 \u0427\u0422 \u041f\u0422 \u0421\u0411 \u0412\u0421".split(" ")};
c.selectedDate={Day:(new Date).getDate(),Month:parseInt((new Date).getMonth())+1,Year:(new Date).getFullYear()};c.selectDate=function(a,d,g,b){1==a.slice().length&&(a="0"+a);1==d.slice().length&&(d="0"+d);c.selectedDate={Day:a,Month:d,Year:g};null==e.querySelector(".calendarOut")&&p(e.querySelector("input[calendar="+b+"]"));c.drawCalendar(d,g,b)};c.drawCalendar=function(a,d,g){var b='<table class="calendarTable" cellspacing="0" cellpadding="0"><tr>'+('<td class="navigation navigation_to_left" month="'+
(1<a?+a-1:12)+'" year="'+(1<a?d:+d-1)+'" classinput="'+g+'">◄</td>')+('<td colspan="5" class="navigation navigation_to_this_day" month="'+c.selectedDate.Month+'" year="'+c.selectedDate.Year+'" classinput="'+g+'">'+c.monthName[a-1]+" - "+d+"</td>");b=b+('<td class="navigation navigation_to_right" month="'+(12>a?+a+1:1)+'" year="'+(12>a?d:+d+1)+'" classinput="'+g+'">►</td>')+"</tr><tr>";b+="<th>"+c.dayName[0]+"</th>";b+="<th>"+c.dayName[1]+"</th>";b+="<th>"+c.dayName[2]+"</th>";
b+="<th>"+c.dayName[3]+"</th>";b+="<th>"+c.dayName[4]+"</th>";b+='<th class="holiday">'+c.dayName[5]+"</th>";b+='<th class="holiday">'+c.dayName[6]+"</th>";b+="</tr>";var f=32-(new Date(d,a-1,32)).getDate(),l=(new Date(d,a-1,1)).getDay();0==l&&(l=7);l--;var h=7*Math.ceil((f+l)/7),k=1,n=0;do{0==n%7&&(b+="<tr>");if(n<l||n>=f+l)b+='<td class="grayed"> </td>';else{var m="";if(c.selectedDate.Day==k&&c.selectedDate.Month==a&&c.selectedDate.Year==d)m="selected";else if(6==n%7||5==n%7)m="holiday";b+=
'<td class="td_day_active '+m+'" day="'+k+'" month="'+a+'" year="'+d+'" classinput="'+g+'">'+k+"</td>";k++}6==n%7&&(b+="</tr>");n++}while(n<h);b+="</table>";e.querySelector(".calendarOut").innerHTML=b;e.querySelector(".navigation_to_left").addEventListener("click",function(a){c.drawCalendar(this.getAttribute("month"),this.getAttribute("year"),this.getAttribute("classinput"));a.stopPropagation()},!1);e.querySelector(".navigation_to_this_day").addEventListener("click",function(a){c.drawCalendar(this.getAttribute("month"),
this.getAttribute("year"),this.getAttribute("classinput"));a.stopPropagation()},!1);e.querySelector(".navigation_to_right").addEventListener("click",function(a){c.drawCalendar(this.getAttribute("month"),this.getAttribute("year"),this.getAttribute("classinput"));a.stopPropagation()},!1);a=e.querySelectorAll(".td_day_active");for(d=0;d<a.length;d++)b=a[d],b.addEventListener("click",function(a){c.selectDate(a.target.getAttribute("day"),a.target.getAttribute("month"),a.target.getAttribute("year"),a.target.getAttribute("classinput"));
e.querySelector("input[calendar="+g+"]").value=c.selectedDate.Day+"."+c.selectedDate.Month+"."+c.selectedDate.Year;e.querySelector(".calendarOut").parentNode.removeChild(e.querySelector(".calendarOut"));a.stopPropagation()},!1)};var q=e.querySelectorAll(".calendar"),k;for(k=0;k<q.length;k++){var r=q[k];r.setAttribute("calendar","calendar_"+k);r.addEventListener("click",function(a){p(a.target);a.stopPropagation()},!1)}e.addEventListener("click",function(a){null!=e.querySelector(".calendarOut")&&(e.querySelector(".calendarOut").parentNode.removeChild(e.querySelector(".calendarOut")),
a.stopPropagation())},!1);m.calendar=c})(window,document);