event_cal 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +20 -0
- data/Rakefile +21 -0
- data/app/views/event_calendar/_calendar.html.haml +9 -0
- data/app/views/event_calendar/_date.html.haml +10 -0
- data/app/views/event_calendar/_event_details.html.haml +4 -0
- data/lib/event_calendar/calendar.rb +50 -0
- data/lib/event_calendar/calendar_helper.rb +45 -0
- data/lib/event_calendar/engine.rb +15 -0
- data/lib/event_calendar/event.rb +16 -0
- data/lib/event_calendar/version.rb +3 -0
- data/lib/event_calendar.rb +4 -0
- data/lib/tasks/event_calendar_tasks.rake +4 -0
- data/vendor/assets/images/calendar_next.png +0 -0
- data/vendor/assets/images/calendar_prev.png +0 -0
- data/vendor/assets/images/icon_config.png +0 -0
- data/vendor/assets/javascripts/calendarApplication.js.coffee +11 -0
- data/vendor/assets/javascripts/controllers/calendarDatesController.js.coffee +32 -0
- data/vendor/assets/javascripts/controllers/calendarEventsController.js.coffee +19 -0
- data/vendor/assets/javascripts/event_calendar.js +1117 -0
- data/vendor/assets/javascripts/event_calendar_no_libs.js +191 -0
- data/vendor/assets/javascripts/lib/moment.js +1 -0
- data/vendor/assets/javascripts/lib/spine.js.coffee +535 -0
- data/vendor/assets/javascripts/lib/spinelib/ajax.js.coffee +223 -0
- data/vendor/assets/javascripts/lib/spinelib/list.js.coffee +43 -0
- data/vendor/assets/javascripts/lib/spinelib/local.js.coffee +16 -0
- data/vendor/assets/javascripts/lib/spinelib/manager.js.coffee +83 -0
- data/vendor/assets/javascripts/lib/spinelib/relation.js.coffee +144 -0
- data/vendor/assets/javascripts/lib/spinelib/route.js.coffee +151 -0
- data/vendor/assets/javascripts/models/calendarDate.js.coffee +7 -0
- data/vendor/assets/javascripts/models/calendarEvent.js.coffee +11 -0
- data/vendor/assets/stylesheets/event_calendar.css.scss +251 -0
- metadata +274 -0
@@ -0,0 +1,191 @@
|
|
1
|
+
// Generated by CoffeeScript 1.3.3
|
2
|
+
(function() {
|
3
|
+
var CalendarApplication, CalendarDate, CalendarDatesController, CalendarEvent, CalendarEventsController,
|
4
|
+
__hasProp = {}.hasOwnProperty,
|
5
|
+
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
|
6
|
+
|
7
|
+
CalendarDate = (function(_super) {
|
8
|
+
|
9
|
+
__extends(CalendarDate, _super);
|
10
|
+
|
11
|
+
function CalendarDate() {
|
12
|
+
return CalendarDate.__super__.constructor.apply(this, arguments);
|
13
|
+
}
|
14
|
+
|
15
|
+
CalendarDate.configure('CalendarDate', 'element', 'date', 'active');
|
16
|
+
|
17
|
+
CalendarDate.deactivateAllDates = function() {
|
18
|
+
return CalendarDate.each(function(date) {
|
19
|
+
return date.updateAttributes({
|
20
|
+
active: false
|
21
|
+
});
|
22
|
+
});
|
23
|
+
};
|
24
|
+
|
25
|
+
return CalendarDate;
|
26
|
+
|
27
|
+
})(Spine.Model);
|
28
|
+
|
29
|
+
window.CalendarDate = CalendarDate;
|
30
|
+
|
31
|
+
CalendarEvent = (function(_super) {
|
32
|
+
|
33
|
+
__extends(CalendarEvent, _super);
|
34
|
+
|
35
|
+
function CalendarEvent() {
|
36
|
+
return CalendarEvent.__super__.constructor.apply(this, arguments);
|
37
|
+
}
|
38
|
+
|
39
|
+
CalendarEvent.configure('CalendarEvent', 'held_on', 'active', 'element');
|
40
|
+
|
41
|
+
CalendarEvent.activateAllEventsOn = function(date) {
|
42
|
+
var event, _i, _len, _ref, _results;
|
43
|
+
_ref = CalendarEvent.findAllByAttribute('held_on', date);
|
44
|
+
_results = [];
|
45
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
46
|
+
event = _ref[_i];
|
47
|
+
_results.push(event.updateAttributes({
|
48
|
+
active: true
|
49
|
+
}));
|
50
|
+
}
|
51
|
+
return _results;
|
52
|
+
};
|
53
|
+
|
54
|
+
CalendarEvent.deactivateAllEvents = function() {
|
55
|
+
return CalendarEvent.each(function(event) {
|
56
|
+
return event.updateAttributes({
|
57
|
+
active: false
|
58
|
+
});
|
59
|
+
});
|
60
|
+
};
|
61
|
+
|
62
|
+
return CalendarEvent;
|
63
|
+
|
64
|
+
})(Spine.Model);
|
65
|
+
|
66
|
+
window.CalendarEvent = CalendarEvent;
|
67
|
+
|
68
|
+
CalendarDatesController = (function(_super) {
|
69
|
+
|
70
|
+
__extends(CalendarDatesController, _super);
|
71
|
+
|
72
|
+
function CalendarDatesController(element) {
|
73
|
+
this.element = element;
|
74
|
+
this.initializeDates();
|
75
|
+
}
|
76
|
+
|
77
|
+
CalendarDatesController.prototype.initializeDates = function() {
|
78
|
+
var date, el, _i, _len, _ref, _results;
|
79
|
+
_ref = this.element.find('.date');
|
80
|
+
_results = [];
|
81
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
82
|
+
el = _ref[_i];
|
83
|
+
date = CalendarDate.create({
|
84
|
+
element: $(el),
|
85
|
+
date: $(el).data('date'),
|
86
|
+
active: false
|
87
|
+
});
|
88
|
+
_results.push(this.initializeEventSelect(date));
|
89
|
+
}
|
90
|
+
return _results;
|
91
|
+
};
|
92
|
+
|
93
|
+
CalendarDatesController.prototype.initializeEventSelect = function(date) {
|
94
|
+
date.element.bind('click', function() {
|
95
|
+
date.trigger('activate');
|
96
|
+
CalendarDate.deactivateAllDates();
|
97
|
+
return date.updateAttributes({
|
98
|
+
active: true
|
99
|
+
});
|
100
|
+
});
|
101
|
+
date.bind('activate', function(date) {
|
102
|
+
CalendarEvent.deactivateAllEvents();
|
103
|
+
return CalendarEvent.activateAllEventsOn(date.date);
|
104
|
+
});
|
105
|
+
return date.bind('change', function(date) {
|
106
|
+
if (date.active === true) {
|
107
|
+
date.element.addClass('selected');
|
108
|
+
}
|
109
|
+
if (date.active === false) {
|
110
|
+
return date.element.removeClass('selected');
|
111
|
+
}
|
112
|
+
});
|
113
|
+
};
|
114
|
+
|
115
|
+
return CalendarDatesController;
|
116
|
+
|
117
|
+
})(Spine.Module);
|
118
|
+
|
119
|
+
window.CalendarDatesController = CalendarDatesController;
|
120
|
+
|
121
|
+
CalendarEventsController = (function(_super) {
|
122
|
+
|
123
|
+
__extends(CalendarEventsController, _super);
|
124
|
+
|
125
|
+
function CalendarEventsController(element) {
|
126
|
+
var el, event, _i, _len, _ref;
|
127
|
+
_ref = element.find('.event_detail');
|
128
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
129
|
+
el = _ref[_i];
|
130
|
+
event = CalendarEvent.create({
|
131
|
+
element: $(el).hide(),
|
132
|
+
held_on: $(el).data('event-date'),
|
133
|
+
active: false
|
134
|
+
});
|
135
|
+
this.initializeEventSelect(event);
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
CalendarEventsController.prototype.initializeEventSelect = function(event) {
|
140
|
+
return event.bind('change', function() {
|
141
|
+
if (event.active === true) {
|
142
|
+
event.element.show();
|
143
|
+
}
|
144
|
+
if (event.active === false) {
|
145
|
+
return event.element.hide();
|
146
|
+
}
|
147
|
+
});
|
148
|
+
};
|
149
|
+
|
150
|
+
return CalendarEventsController;
|
151
|
+
|
152
|
+
})(Spine.Module);
|
153
|
+
|
154
|
+
window.CalendarEventsController = CalendarEventsController;
|
155
|
+
|
156
|
+
CalendarApplication = (function() {
|
157
|
+
var calendarElements;
|
158
|
+
|
159
|
+
function CalendarApplication() {}
|
160
|
+
|
161
|
+
calendarElements = {
|
162
|
+
'ul.dates': CalendarDatesController,
|
163
|
+
'ul.event_details': CalendarEventsController
|
164
|
+
};
|
165
|
+
|
166
|
+
CalendarApplication.initialize = function() {
|
167
|
+
var controller, el, element, _results;
|
168
|
+
_results = [];
|
169
|
+
for (element in calendarElements) {
|
170
|
+
controller = calendarElements[element];
|
171
|
+
_results.push((function() {
|
172
|
+
var _i, _len, _ref, _results1;
|
173
|
+
_ref = $(element);
|
174
|
+
_results1 = [];
|
175
|
+
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
176
|
+
el = _ref[_i];
|
177
|
+
_results1.push(new controller($(el)));
|
178
|
+
}
|
179
|
+
return _results1;
|
180
|
+
})());
|
181
|
+
}
|
182
|
+
return _results;
|
183
|
+
};
|
184
|
+
|
185
|
+
return CalendarApplication;
|
186
|
+
|
187
|
+
})();
|
188
|
+
|
189
|
+
window.CalendarApplication = CalendarApplication;
|
190
|
+
|
191
|
+
}).call(this);
|
@@ -0,0 +1 @@
|
|
1
|
+
(function(e){function O(e,t,n,r){var i=n.lang();return i[e].call?i[e](n,r):i[e][t]}function M(e,t){return function(n){return B(e.call(this,n),t)}}function _(e){return function(t){var n=e.call(this,t);return n+this.lang().ordinal(n)}}function D(e,t,n){this._d=e;this._isUTC=!!t;this._a=e._a||null;this._lang=n||false}function P(e){var t=this._data={},n=e.years||e.y||0,r=e.months||e.M||0,i=e.weeks||e.w||0,s=e.days||e.d||0,o=e.hours||e.h||0,u=e.minutes||e.m||0,a=e.seconds||e.s||0,f=e.milliseconds||e.ms||0;this._milliseconds=f+a*1e3+u*6e4+o*36e5;this._days=s+i*7;this._months=r+n*12;t.milliseconds=f%1e3;a+=H(f/1e3);t.seconds=a%60;u+=H(a/60);t.minutes=u%60;o+=H(u/60);t.hours=o%24;s+=H(o/24);s+=i*7;t.days=s%30;r+=H(s/30);t.months=r%12;n+=H(r/12);t.years=n;this._lang=false}function H(e){if(e<0){return Math.ceil(e)}else{return Math.floor(e)}}function B(e,t){var n=e+"";while(n.length<t){n="0"+n}return n}function j(e,t,n){var r=t._milliseconds,i=t._days,s=t._months,o;if(r){e._d.setTime(+e+r*n)}if(i){e.date(e.date()+i*n)}if(s){o=e.date();e.date(1).month(e.month()+s*n).date(Math.min(o,e.daysInMonth()))}}function F(e){return Object.prototype.toString.call(e)==="[object Array]"}function I(e,t){var n=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),i=0,s;for(s=0;s<n;s++){if(~~e[s]!==~~t[s]){i++}}return i+r}function q(e,t,n,r){var i,s,o=[];for(i=0;i<7;i++){o[i]=e[i]=e[i]==null?i===2?1:0:e[i]}e[7]=o[7]=t;if(e[8]!=null){o[8]=e[8]}e[3]+=n||0;e[4]+=r||0;s=new Date(0);if(t){s.setUTCFullYear(e[0],e[1],e[2]);s.setUTCHours(e[3],e[4],e[5],e[6])}else{s.setFullYear(e[0],e[1],e[2]);s.setHours(e[3],e[4],e[5],e[6])}s._a=o;return s}function R(e,n){var r,i,o=[];if(!n&&u){n=require("./lang/"+e)}for(r=0;r<a.length;r++){n[a[r]]=n[a[r]]||s.en[a[r]]}for(r=0;r<12;r++){i=t([2e3,r]);o[r]=new RegExp("^"+(n.months[r]||n.months(i,""))+"|^"+(n.monthsShort[r]||n.monthsShort(i,"")).replace(".",""),"i")}n.monthsParse=n.monthsParse||o;s[e]=n;return n}function U(e){var n=typeof e==="string"&&e||e&&e._lang||null;return n?s[n]||R(n):t}function z(e){if(e.match(/\[.*\]/)){return e.replace(/^\[|\]$/g,"")}return e.replace(/\\/g,"")}function W(e){var t=e.match(l),n,r;for(n=0,r=t.length;n<r;n++){if(A[t[n]]){t[n]=A[t[n]]}else{t[n]=z(t[n])}}return function(i){var s="";for(n=0;n<r;n++){s+=typeof t[n].call==="function"?t[n].call(i,e):t[n]}return s}}function X(e,t){function r(t){return e.lang().longDateFormat[t]||t}var n=5;while(n--&&c.test(t)){t=t.replace(c,r)}if(!C[t]){C[t]=W(t)}return C[t](e)}function V(e){switch(e){case"DDDD":return v;case"YYYY":return m;case"S":case"SS":case"SSS":case"DDD":return d;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":case"a":case"A":return g;case"Z":case"ZZ":return y;case"T":return b;case"MM":case"DD":case"YY":case"HH":case"hh":case"mm":case"ss":case"M":case"D":case"d":case"H":case"h":case"m":case"s":return p;default:return new RegExp(e.replace("\\",""))}}function $(e,t,n,r){var i,s;switch(e){case"M":case"MM":n[1]=t==null?0:~~t-1;break;case"MMM":case"MMMM":for(i=0;i<12;i++){if(U().monthsParse[i].test(t)){n[1]=i;s=true;break}}if(!s){n[8]=false}break;case"D":case"DD":case"DDD":case"DDDD":if(t!=null){n[2]=~~t}break;case"YY":n[0]=~~t+(~~t>70?1900:2e3);break;case"YYYY":n[0]=~~Math.abs(t);break;case"a":case"A":r.isPm=(t+"").toLowerCase()==="pm";break;case"H":case"HH":case"h":case"hh":n[3]=~~t;break;case"m":case"mm":n[4]=~~t;break;case"s":case"ss":n[5]=~~t;break;case"S":case"SS":case"SSS":n[6]=~~(("0."+t)*1e3);break;case"Z":case"ZZ":r.isUTC=true;i=(t+"").match(x);if(i&&i[1]){r.tzh=~~i[1]}if(i&&i[2]){r.tzm=~~i[2]}if(i&&i[0]==="+"){r.tzh=-r.tzh;r.tzm=-r.tzm}break}if(t==null){n[8]=false}}function J(e,t){var n=[0,0,1,0,0,0,0],r={tzh:0,tzm:0},i=t.match(l),s,o;for(s=0;s<i.length;s++){o=(V(i[s]).exec(e)||[])[0];if(o){e=e.slice(e.indexOf(o)+o.length)}if(A[i[s]]){$(i[s],o,n,r)}}if(r.isPm&&n[3]<12){n[3]+=12}if(r.isPm===false&&n[3]===12){n[3]=0}return q(n,r.isUTC,r.tzh,r.tzm)}function K(e,t){var n,r=e.match(h)||[],i,s=99,o,u,a;for(o=0;o<t.length;o++){u=J(e,t[o]);i=X(new D(u),t[o]).match(h)||[];a=I(r,i);if(a<s){s=a;n=u}}return n}function Q(e){var t="YYYY-MM-DDT",n;if(w.exec(e)){for(n=0;n<4;n++){if(S[n][1].exec(e)){t+=S[n][0];break}}return y.exec(e)?J(e,t+" Z"):J(e,t)}return new Date(e)}function G(e,t,n,r,i){var s=i.relativeTime[e];return typeof s==="function"?s(t||1,!!n,e,r):s.replace(/%d/i,t||1)}function Y(e,t,n){var i=r(Math.abs(e)/1e3),s=r(i/60),o=r(s/60),u=r(o/24),a=r(u/365),f=i<45&&["s",i]||s===1&&["m"]||s<45&&["mm",s]||o===1&&["h"]||o<22&&["hh",o]||u===1&&["d"]||u<=25&&["dd",u]||u<=45&&["M"]||u<345&&["MM",r(u/30)]||a===1&&["y"]||["yy",a];f[2]=t;f[3]=e>0;f[4]=n;return G.apply({},f)}function Z(e,n){t.fn[e]=function(e){var t=this._isUTC?"UTC":"";if(e!=null){this._d["set"+t+n](e);return this}else{return this._d["get"+t+n]()}}}function et(e){t.duration.fn[e]=function(){return this._data[e]}}function tt(e,n){t.duration.fn["as"+e]=function(){return+this/n}}var t,n="1.7.2",r=Math.round,i,s={},o="en",u=typeof module!=="undefined"&&module.exports,a="months|monthsShort|weekdays|weekdaysShort|weekdaysMin|longDateFormat|calendar|relativeTime|ordinal|meridiem".split("|"),f=/^\/?Date\((\-?\d+)/i,l=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|SS?S?|zz?|ZZ?|.)/g,c=/(\[[^\[]*\])|(\\)?(LT|LL?L?L?)/g,h=/([0-9a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)/gi,p=/\d\d?/,d=/\d{1,3}/,v=/\d{3}/,m=/\d{1,4}/,g=/[0-9a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+/i,y=/Z|[\+\-]\d\d:?\d\d/i,b=/T/i,w=/^\s*\d{4}-\d\d-\d\d(T(\d\d(:\d\d(:\d\d(\.\d\d?\d?)?)?)?)?([\+\-]\d\d:?\d\d)?)?/,E="YYYY-MM-DDTHH:mm:ssZ",S=[["HH:mm:ss.S",/T\d\d:\d\d:\d\d\.\d{1,3}/],["HH:mm:ss",/T\d\d:\d\d:\d\d/],["HH:mm",/T\d\d:\d\d/],["HH",/T\d\d/]],x=/([\+\-]|\d\d)/gi,T="Month|Date|Hours|Minutes|Seconds|Milliseconds".split("|"),N={Milliseconds:1,Seconds:1e3,Minutes:6e4,Hours:36e5,Days:864e5,Months:2592e6,Years:31536e6},C={},k="DDD w M D d".split(" "),L="M D H h m s w".split(" "),A={M:function(){return this.month()+1},MMM:function(e){return O("monthsShort",this.month(),this,e)},MMMM:function(e){return O("months",this.month(),this,e)},D:function(){return this.date()},DDD:function(){var e=new Date(this.year(),this.month(),this.date()),t=new Date(this.year(),0,1);return~~((e-t)/864e5+1.5)},d:function(){return this.day()},dd:function(e){return O("weekdaysMin",this.day(),this,e)},ddd:function(e){return O("weekdaysShort",this.day(),this,e)},dddd:function(e){return O("weekdays",this.day(),this,e)},w:function(){var e=new Date(this.year(),this.month(),this.date()-this.day()+5),t=new Date(e.getFullYear(),0,4);return~~((e-t)/864e5/7+1.5)},YY:function(){return B(this.year()%100,2)},YYYY:function(){return B(this.year(),4)},a:function(){return this.lang().meridiem(this.hours(),this.minutes(),true)},A:function(){return this.lang().meridiem(this.hours(),this.minutes(),false)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return~~(this.milliseconds()/100)},SS:function(){return B(~~(this.milliseconds()/10),2)},SSS:function(){return B(this.milliseconds(),3)},Z:function(){var e=-this.zone(),t="+";if(e<0){e=-e;t="-"}return t+B(~~(e/60),2)+":"+B(~~e%60,2)},ZZ:function(){var e=-this.zone(),t="+";if(e<0){e=-e;t="-"}return t+B(~~(10*e/6),4)}};while(k.length){i=k.pop();A[i+"o"]=_(A[i])}while(L.length){i=L.pop();A[i+i]=M(A[i],2)}A.DDDD=M(A.DDD,3);t=function(n,r){if(n===null||n===""){return null}var i,s;if(t.isMoment(n)){return new D(new Date(+n._d),n._isUTC,n._lang)}else if(r){if(F(r)){i=K(n,r)}else{i=J(n,r)}}else{s=f.exec(n);i=n===e?new Date:s?new Date(+s[1]):n instanceof Date?n:F(n)?q(n):typeof n==="string"?Q(n):new Date(n)}return new D(i)};t.utc=function(e,n){if(F(e)){return new D(q(e,true),true)}if(typeof e==="string"&&!y.exec(e)){e+=" +0000";if(n){n+=" Z"}}return t(e,n).utc()};t.unix=function(e){return t(e*1e3)};t.duration=function(e,n){var r=t.isDuration(e),i=typeof e==="number",s=r?e._data:i?{}:e,o;if(i){if(n){s[n]=e}else{s.milliseconds=e}}o=new P(s);if(r){o._lang=e._lang}return o};t.humanizeDuration=function(e,n,r){return t.duration(e,n===true?null:n).humanize(n===true?true:r)};t.version=n;t.defaultFormat=E;t.lang=function(e,n){var r;if(!e){return o}if(n||!s[e]){R(e,n)}if(s[e]){for(r=0;r<a.length;r++){t[a[r]]=s[e][a[r]]}t.monthsParse=s[e].monthsParse;o=e}};t.langData=U;t.isMoment=function(e){return e instanceof D};t.isDuration=function(e){return e instanceof P};t.lang("en",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D YYYY",LLL:"MMMM D YYYY LT",LLLL:"dddd, MMMM D YYYY LT"},meridiem:function(e,t,n){if(e>11){return n?"pm":"PM"}else{return n?"am":"AM"}},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinal:function(e){var t=e%10;return~~(e%100/10)===1?"th":t===1?"st":t===2?"nd":t===3?"rd":"th"}});t.fn=D.prototype={clone:function(){return t(this)},valueOf:function(){return+this._d},unix:function(){return Math.floor(+this._d/1e3)},toString:function(){return this._d.toString()},toDate:function(){return this._d},toArray:function(){var e=this;return[e.year(),e.month(),e.date(),e.hours(),e.minutes(),e.seconds(),e.milliseconds(),!!this._isUTC]},isValid:function(){if(this._a){if(this._a[8]!=null){return!!this._a[8]}return!I(this._a,(this._a[7]?t.utc(this._a):t(this._a)).toArray())}return!isNaN(this._d.getTime())},utc:function(){this._isUTC=true;return this},local:function(){this._isUTC=false;return this},format:function(e){return X(this,e?e:t.defaultFormat)},add:function(e,n){var r=n?t.duration(+n,e):t.duration(e);j(this,r,1);return this},subtract:function(e,n){var r=n?t.duration(+n,e):t.duration(e);j(this,r,-1);return this},diff:function(e,n,i){var s=this._isUTC?t(e).utc():t(e).local(),o=(this.zone()-s.zone())*6e4,u=this._d-s._d-o,a=this.year()-s.year(),f=this.month()-s.month(),l=this.date()-s.date(),c;if(n==="months"){c=a*12+f+l/30}else if(n==="years"){c=a+(f+l/30)/12}else{c=n==="seconds"?u/1e3:n==="minutes"?u/6e4:n==="hours"?u/36e5:n==="days"?u/864e5:n==="weeks"?u/6048e5:u}return i?c:r(c)},from:function(e,n){return t.duration(this.diff(e)).lang(this._lang).humanize(!n)},fromNow:function(e){return this.from(t(),e)},calendar:function(){var e=this.diff(t().sod(),"days",true),n=this.lang().calendar,r=n.sameElse,i=e<-6?r:e<-1?n.lastWeek:e<0?n.lastDay:e<1?n.sameDay:e<2?n.nextDay:e<7?n.nextWeek:r;return this.format(typeof i==="function"?i.apply(this):i)},isLeapYear:function(){var e=this.year();return e%4===0&&e%100!==0||e%400===0},isDST:function(){return this.zone()<t([this.year()]).zone()||this.zone()<t([this.year(),5]).zone()},day:function(e){var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return e==null?t:this.add({d:e-t})},startOf:function(e){switch(e.replace(/s$/,"")){case"year":this.month(0);case"month":this.date(1);case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return this},endOf:function(e){return this.startOf(e).add(e.replace(/s?$/,"s"),1).subtract("ms",1)},sod:function(){return this.clone().startOf("day")},eod:function(){return this.clone().endOf("day")},zone:function(){return this._isUTC?0:this._d.getTimezoneOffset()},daysInMonth:function(){return t.utc([this.year(),this.month()+1,0]).date()},lang:function(t){if(t===e){return U(this)}else{this._lang=t;return this}}};for(i=0;i<T.length;i++){Z(T[i].toLowerCase(),T[i])}Z("year","FullYear");t.duration.fn=P.prototype={weeks:function(){return H(this.days()/7)},valueOf:function(){return this._milliseconds+this._days*864e5+this._months*2592e6},humanize:function(e){var t=+this,n=this.lang().relativeTime,r=Y(t,!e,this.lang()),i=t<=0?n.past:n.future;if(e){if(typeof i==="function"){r=i(r)}else{r=i.replace(/%s/i,r)}}return r},lang:t.fn.lang};for(i in N){if(N.hasOwnProperty(i)){tt(i,N[i]);et(i.toLowerCase())}}tt("Weeks",6048e5);if(u){module.exports=t}if(typeof ender==="undefined"){this["moment"]=t}if(typeof define==="function"&&define.amd){define("moment",[],function(){return t})}}).call(this)
|