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.
Files changed (32) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/Rakefile +21 -0
  3. data/app/views/event_calendar/_calendar.html.haml +9 -0
  4. data/app/views/event_calendar/_date.html.haml +10 -0
  5. data/app/views/event_calendar/_event_details.html.haml +4 -0
  6. data/lib/event_calendar/calendar.rb +50 -0
  7. data/lib/event_calendar/calendar_helper.rb +45 -0
  8. data/lib/event_calendar/engine.rb +15 -0
  9. data/lib/event_calendar/event.rb +16 -0
  10. data/lib/event_calendar/version.rb +3 -0
  11. data/lib/event_calendar.rb +4 -0
  12. data/lib/tasks/event_calendar_tasks.rake +4 -0
  13. data/vendor/assets/images/calendar_next.png +0 -0
  14. data/vendor/assets/images/calendar_prev.png +0 -0
  15. data/vendor/assets/images/icon_config.png +0 -0
  16. data/vendor/assets/javascripts/calendarApplication.js.coffee +11 -0
  17. data/vendor/assets/javascripts/controllers/calendarDatesController.js.coffee +32 -0
  18. data/vendor/assets/javascripts/controllers/calendarEventsController.js.coffee +19 -0
  19. data/vendor/assets/javascripts/event_calendar.js +1117 -0
  20. data/vendor/assets/javascripts/event_calendar_no_libs.js +191 -0
  21. data/vendor/assets/javascripts/lib/moment.js +1 -0
  22. data/vendor/assets/javascripts/lib/spine.js.coffee +535 -0
  23. data/vendor/assets/javascripts/lib/spinelib/ajax.js.coffee +223 -0
  24. data/vendor/assets/javascripts/lib/spinelib/list.js.coffee +43 -0
  25. data/vendor/assets/javascripts/lib/spinelib/local.js.coffee +16 -0
  26. data/vendor/assets/javascripts/lib/spinelib/manager.js.coffee +83 -0
  27. data/vendor/assets/javascripts/lib/spinelib/relation.js.coffee +144 -0
  28. data/vendor/assets/javascripts/lib/spinelib/route.js.coffee +151 -0
  29. data/vendor/assets/javascripts/models/calendarDate.js.coffee +7 -0
  30. data/vendor/assets/javascripts/models/calendarEvent.js.coffee +11 -0
  31. data/vendor/assets/stylesheets/event_calendar.css.scss +251 -0
  32. 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)