forked from amsul/pickadate.js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpickadate.min.js
6 lines (6 loc) · 6.72 KB
/
pickadate.min.js
1
2
3
4
5
6
/*!
* datepicker.js v1.0.5 - 21 November, 2012
* By Amsul (http://amsul.ca)
* Hosted on https://github.com/amsul/pickadate.js
*/
(function(e,i,o,g){var s=86400000,h=7,r=6,f=r*h,n="div",t="tr",p="/",u="prev",v="next",m="datepicker--",a="click.P",d="widgets.datepicker",l=e(i),k=Array.isArray||function(w){return{}.toString.call(w)==="[object Array]"},b=function(w){return((w<10)?"0":"")+w},j=function(z,x,w,y){x=(k(x))?x.join(""):x;y=(y&&y.name)?" data-"+y.name+'="'+y.value+'"':"";w=(w)?' class="'+w+'"':"";return"<"+z+y+w+">"+x+"</"+z+">"},c=function(x){var w;if(k(x)){w=(function(z,B,y){var A=(function(){if(B>11){z+=1;return 0}if(B<0){z-=1;return 11}return B})();return new Date(z,A,y)})(x[0],x[1],x[2])}else{if(x===true){w=new Date();w.setHours(0,0,0,0)}else{if(!isNaN(x)){w=new Date(x)}}}return{YEAR:w.getFullYear(),MONTH:w.getMonth(),DATE:w.getDate(),DAY:w.getDay(),TIME:w.getTime()}},q=function(E,F){var x,B,w,y,z,C,A,D=function(G,H){return new A.init(G,H)};A=D.prototype={constructor:D,init:function(G,H){var I=G[0];if(I.nodeName!=="INPUT"){return false}C=e.extend({},q.defaults,H);if(C.disable_picker){return false}A.$element=G;A._element=I;I.type="text";I.readOnly=true;x=A.getDateToday();B=A.getDateSelected();z=A.getMonthFocused();w=A.getDateRange(C.date_min);y=A.getDateRange(C.date_max,1);A.calendar=A.createCalendar().render();if(I===o.activeElement){G.trigger("focus")}return A},createCalendar:function(){var J=(function(){var N=function(P){return j("th",P,C.class_weekdays)},O=(C.show_weekdays_short)?C.weekdays_short:C.weekdays_full;return j("thead",j(t,O.map(N)))})(),I=function(){var T,N,Q,S=true,U=[],R=[],V=M(z.YEAR,z.MONTH),O=H(z.DATE,z.DAY),W=function(Y){var Z=false,X=[C.class_calendar_date];X.push((S)?C.class_day_infocus:C.class_day_outfocus);if(Y.TIME<w.TIME||Y.TIME>y.TIME){Z=true;X.push(C.class_day_disabled)}if(Y.TIME===x.TIME){X.push(C.class_day_today)}if(Y.TIME===B.TIME){X.push(C.class_day_selected)}return[X.join(" "),{name:(Z)?"disabled":"date",value:[Y.YEAR,Y.MONTH+1,Y.DATE,Y.DAY,Y.TIME].join(p)}]};for(var P=0;P<f;P+=1){N=P-O;S=(N<=0||N>V)?false:true;T=c([z.YEAR,z.MONTH,N]);Q=W(T);U.push(j("td",j(n,T.DATE,Q[0],Q[1])));if((P%h)+1===h){R.push(j(t,U.splice(0,h)))}}return j("tbody",R,C.class_calendar_body)},L=function(){var N=function(O){if(w&&(O===u&&z.MONTH<=w.MONTH&&z.YEAR<=w.YEAR)||y&&(O===v&&z.MONTH>=y.MONTH&&z.YEAR>=y.YEAR)){return""}return j(n,C["month_"+O],C["class_month_"+O],{name:"nav",value:O})};return N(u)+N(v)},K=function(){return((C.show_months_full)?C.months_full:C.months_short)[z.MONTH]},G=function(){return[j(n,L(),C.class_month_nav),j(n,K(),C.class_month),j(n,z.YEAR,C.class_year)]},M=function(N,P){var O=(P>6)?true:false;if(P===1){return(N%4)?28:29}if(P%2){return(O)?31:30}return(O)?30:31},H=function(O,P){var N=O%h,Q=Math.abs(P-N);return(P>=N)?Q:h-Q};return{render:function(){var O=this,N=(function(){var Q=I(),P=G();P.push(j("table",[J,Q],C.class_calendar));return j(n,j(n,P,C.class_calendar_box),C.class_calendar_wrap)})();if(A.$holder){A.$holder.html(N);return O}A.$holder=e(j(n,N,C.class_picker_holder)).on({click:A.onClickCalendar});A.$element.on({keydown:function(P){if(P.keyCode===9){O.close()}},focusin:function(){O.open()}}).after(A.$holder);O.id=Math.floor(Math.random()*1000000000);return O},open:function(){var N=this,O=function(P){if(N.isOpen&&A._element!==P.target){N.close()}};if(N.isOpen){return N}N.isOpen=true;A.$element.addClass(C.class_input_focus);A.$holder.addClass(C.class_picker_open);l.on(a+N.id,O);return N},close:function(){var N=this;N.isOpen=false;A.$element.removeClass(C.class_input_focus);A.$holder.removeClass(C.class_picker_open);l.off(a+N.id);return N}}},getDateRange:function(G,H){if(!G){return false}if(k(G)){return c([G[0],G[1]-1,G[2]])}if(H&&!isNaN(G)&&G>0){return c([x.YEAR,x.MONTH,x.DATE+G])}return x},getDateFormatted:function(){var G=A.dateFormats;return G.toArray().map(function(H){return(G[H])?G[H]():H.replace(/^!/,"")}).join("")},getDateToday:function(){return x||(x=c(true))},getMonthFocused:function(){return z||(z=B)},setMonthFocused:function(G,H){return(z=c([G,H,1]))},getDateSelected:function(){return B||(B=(function(G){if(isNaN(G)){return x}return c(G)})(Date.parse(A._element.value)))},setDateSelected:function(H,J){var I,G=A.findSelectedDay();if(!H){return A}I={YEAR:+H[0],MONTH:+H[1]-1,DATE:+H[2],DAY:+H[3],TIME:+H[4]};B=I;if(I.MONTH===z.MONTH){G.removeClass(C.class_day_selected);J.addClass(C.class_day_selected)}else{z=I;A.calendar.render()}if(J){A._element.value=A.getDateFormatted();A.calendar.close();A.$element.trigger("change")}return A},findSelectedDay:function(){return A.$holder.find("."+C.class_day_selected)},changeMonth:function(G){A.setMonthFocused(z.YEAR,z.MONTH+G);A.calendar.render();return A},onClickCalendar:function(H){var G=e(H.target||H.srcTarget),J=G.data();H.stopPropagation();if(J.date){A.setDateSelected(J.date.split(p),G);return}if(J.nav){var I=(J.nav===u)?-1:1;A.changeMonth(I)}A.$element.focus()},dateFormats:{d:function(){return B.DATE},dd:function(){return b(B.DATE)},ddd:function(){return C.weekdays_short[B.DAY]},dddd:function(){return C.weekdays_full[B.DAY]},m:function(){return B.MONTH+1},mm:function(){return b(B.MONTH+1)},mmm:function(){return C.months_short[B.MONTH]},mmmm:function(){return C.months_full[B.MONTH]},yy:function(){return B.YEAR.toString().substr(2,2)},yyyy:function(){return B.YEAR},toArray:function(){return C.format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)}}};return new D(E,F)};q.defaults={months_full:["January","February","March","April","May","June","July","August","September","October","November","December"],months_short:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdays_full:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdays_short:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],month_prev:"◀",month_next:"▶",date_min:true,date_max:false,show_months_full:true,show_weekdays_short:true,format:"d mmmm, yyyy",disable_picker:false,class_input_focus:m+"input__focused",class_picker_open:m+"opened",class_picker_holder:m+"holder",class_calendar_wrap:m+"calendar__wrap",class_calendar_box:m+"calendar__box",class_calendar:m+"calendar",class_calendar_body:m+"calendar__body",class_calendar_date:m+"calendar__date",class_year:m+"year",class_month:m+"month",class_month_nav:m+"month__nav",class_month_prev:m+"month__prev",class_month_next:m+"month__next",class_week:m+"week",class_weekdays:m+"weekday",class_day_disabled:m+"day__disabled",class_day_selected:m+"day__selected",class_day_today:m+"day__today",class_day_infocus:m+"day__infocus",class_day_outfocus:m+"day__outfocus",class_box_months:m+"holder__months",class_box_years:m+"holder__years",class_box_weekdays:m+"holder__weekdays"};e.fn.datepicker=function(w){return this.each(function(){var x=e(this);if(!x.data(d)){x.data(d,new q(x,w))}return this})}})(jQuery,window,document);