jquery_datepick 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +58 -0
  5. data/Rakefile +1 -0
  6. data/jquery_datepick.gemspec +20 -0
  7. data/lib/jquery_datepick/datepick_helper.rb +13 -0
  8. data/lib/jquery_datepick/form_helper.rb +61 -0
  9. data/lib/jquery_datepick/version.rb +3 -0
  10. data/lib/jquery_datepick.rb +16 -0
  11. data/vendor/assets/images/calendar-blue.gif +0 -0
  12. data/vendor/assets/images/calendar-green.gif +0 -0
  13. data/vendor/assets/images/calendar.gif +0 -0
  14. data/vendor/assets/javascripts/jquery.datepick-af.js +29 -0
  15. data/vendor/assets/javascripts/jquery.datepick-am.js +29 -0
  16. data/vendor/assets/javascripts/jquery.datepick-ar-DZ.js +28 -0
  17. data/vendor/assets/javascripts/jquery.datepick-ar-EG.js +29 -0
  18. data/vendor/assets/javascripts/jquery.datepick-ar.js +30 -0
  19. data/vendor/assets/javascripts/jquery.datepick-az.js +29 -0
  20. data/vendor/assets/javascripts/jquery.datepick-bg.js +29 -0
  21. data/vendor/assets/javascripts/jquery.datepick-bs.js +29 -0
  22. data/vendor/assets/javascripts/jquery.datepick-ca.js +29 -0
  23. data/vendor/assets/javascripts/jquery.datepick-cs.js +29 -0
  24. data/vendor/assets/javascripts/jquery.datepick-da.js +29 -0
  25. data/vendor/assets/javascripts/jquery.datepick-de-CH.js +29 -0
  26. data/vendor/assets/javascripts/jquery.datepick-de.js +29 -0
  27. data/vendor/assets/javascripts/jquery.datepick-el.js +29 -0
  28. data/vendor/assets/javascripts/jquery.datepick-en-AU.js +29 -0
  29. data/vendor/assets/javascripts/jquery.datepick-en-GB.js +29 -0
  30. data/vendor/assets/javascripts/jquery.datepick-en-NZ.js +29 -0
  31. data/vendor/assets/javascripts/jquery.datepick-eo.js +29 -0
  32. data/vendor/assets/javascripts/jquery.datepick-es-AR.js +29 -0
  33. data/vendor/assets/javascripts/jquery.datepick-es-PE.js +29 -0
  34. data/vendor/assets/javascripts/jquery.datepick-es.js +29 -0
  35. data/vendor/assets/javascripts/jquery.datepick-et.js +29 -0
  36. data/vendor/assets/javascripts/jquery.datepick-eu.js +29 -0
  37. data/vendor/assets/javascripts/jquery.datepick-fa.js +29 -0
  38. data/vendor/assets/javascripts/jquery.datepick-fi.js +29 -0
  39. data/vendor/assets/javascripts/jquery.datepick-fo.js +29 -0
  40. data/vendor/assets/javascripts/jquery.datepick-fr-CH.js +29 -0
  41. data/vendor/assets/javascripts/jquery.datepick-fr.js +29 -0
  42. data/vendor/assets/javascripts/jquery.datepick-gl.js +29 -0
  43. data/vendor/assets/javascripts/jquery.datepick-gu.js +29 -0
  44. data/vendor/assets/javascripts/jquery.datepick-he.js +29 -0
  45. data/vendor/assets/javascripts/jquery.datepick-hi-IN.js +27 -0
  46. data/vendor/assets/javascripts/jquery.datepick-hi.js +27 -0
  47. data/vendor/assets/javascripts/jquery.datepick-hr.js +29 -0
  48. data/vendor/assets/javascripts/jquery.datepick-hu.js +29 -0
  49. data/vendor/assets/javascripts/jquery.datepick-hy.js +29 -0
  50. data/vendor/assets/javascripts/jquery.datepick-id.js +29 -0
  51. data/vendor/assets/javascripts/jquery.datepick-is.js +29 -0
  52. data/vendor/assets/javascripts/jquery.datepick-it.js +29 -0
  53. data/vendor/assets/javascripts/jquery.datepick-ja.js +31 -0
  54. data/vendor/assets/javascripts/jquery.datepick-ka.js +29 -0
  55. data/vendor/assets/javascripts/jquery.datepick-km.js +29 -0
  56. data/vendor/assets/javascripts/jquery.datepick-ko.js +31 -0
  57. data/vendor/assets/javascripts/jquery.datepick-lt.js +29 -0
  58. data/vendor/assets/javascripts/jquery.datepick-lv.js +29 -0
  59. data/vendor/assets/javascripts/jquery.datepick-me-ME.js +29 -0
  60. data/vendor/assets/javascripts/jquery.datepick-me.js +29 -0
  61. data/vendor/assets/javascripts/jquery.datepick-mk.js +31 -0
  62. data/vendor/assets/javascripts/jquery.datepick-ml.js +29 -0
  63. data/vendor/assets/javascripts/jquery.datepick-ms.js +29 -0
  64. data/vendor/assets/javascripts/jquery.datepick-mt.js +29 -0
  65. data/vendor/assets/javascripts/jquery.datepick-nl-BE.js +29 -0
  66. data/vendor/assets/javascripts/jquery.datepick-nl.js +29 -0
  67. data/vendor/assets/javascripts/jquery.datepick-no.js +29 -0
  68. data/vendor/assets/javascripts/jquery.datepick-pl.js +29 -0
  69. data/vendor/assets/javascripts/jquery.datepick-pt-BR.js +29 -0
  70. data/vendor/assets/javascripts/jquery.datepick-pt.js +29 -0
  71. data/vendor/assets/javascripts/jquery.datepick-rm.js +29 -0
  72. data/vendor/assets/javascripts/jquery.datepick-ro.js +29 -0
  73. data/vendor/assets/javascripts/jquery.datepick-ru.js +29 -0
  74. data/vendor/assets/javascripts/jquery.datepick-sk.js +29 -0
  75. data/vendor/assets/javascripts/jquery.datepick-sl.js +30 -0
  76. data/vendor/assets/javascripts/jquery.datepick-sq.js +29 -0
  77. data/vendor/assets/javascripts/jquery.datepick-sr-SR.js +29 -0
  78. data/vendor/assets/javascripts/jquery.datepick-sr.js +29 -0
  79. data/vendor/assets/javascripts/jquery.datepick-sv.js +29 -0
  80. data/vendor/assets/javascripts/jquery.datepick-ta.js +29 -0
  81. data/vendor/assets/javascripts/jquery.datepick-th.js +29 -0
  82. data/vendor/assets/javascripts/jquery.datepick-tr.js +29 -0
  83. data/vendor/assets/javascripts/jquery.datepick-uk.js +29 -0
  84. data/vendor/assets/javascripts/jquery.datepick-ur.js +30 -0
  85. data/vendor/assets/javascripts/jquery.datepick-vi.js +29 -0
  86. data/vendor/assets/javascripts/jquery.datepick-zh-CN.js +31 -0
  87. data/vendor/assets/javascripts/jquery.datepick-zh-HK.js +31 -0
  88. data/vendor/assets/javascripts/jquery.datepick-zh-TW.js +31 -0
  89. data/vendor/assets/javascripts/jquery.datepick.ext.js +264 -0
  90. data/vendor/assets/javascripts/jquery.datepick.ext.min.js +7 -0
  91. data/vendor/assets/javascripts/jquery.datepick.js +2056 -0
  92. data/vendor/assets/javascripts/jquery.datepick.lang.js +2185 -0
  93. data/vendor/assets/javascripts/jquery.datepick.lang.min.js +3 -0
  94. data/vendor/assets/javascripts/jquery.datepick.min.js +7 -0
  95. data/vendor/assets/javascripts/jquery.datepick.validation.js +230 -0
  96. data/vendor/assets/javascripts/jquery.datepick.validation.min.js +8 -0
  97. data/vendor/assets/stylesheets/flora.datepick.css +208 -0
  98. data/vendor/assets/stylesheets/humanity.datepick.css +197 -0
  99. data/vendor/assets/stylesheets/jquery.datepick.css +216 -0
  100. data/vendor/assets/stylesheets/redmond.datepick.css +199 -0
  101. data/vendor/assets/stylesheets/smoothness.datepick.css +200 -0
  102. data/vendor/assets/stylesheets/ui-black-tie.datepick.css +18 -0
  103. data/vendor/assets/stylesheets/ui-blitzer.datepick.css +18 -0
  104. data/vendor/assets/stylesheets/ui-cupertino.datepick.css +18 -0
  105. data/vendor/assets/stylesheets/ui-dark-hive.datepick.css +18 -0
  106. data/vendor/assets/stylesheets/ui-dot-luv.datepick.css +18 -0
  107. data/vendor/assets/stylesheets/ui-eggplant.datepick.css +18 -0
  108. data/vendor/assets/stylesheets/ui-excite-bike.datepick.css +18 -0
  109. data/vendor/assets/stylesheets/ui-flick.datepick.css +18 -0
  110. data/vendor/assets/stylesheets/ui-hot-sneaks.datepick.css +18 -0
  111. data/vendor/assets/stylesheets/ui-humanity.datepick.css +18 -0
  112. data/vendor/assets/stylesheets/ui-le-frog.datepick.css +18 -0
  113. data/vendor/assets/stylesheets/ui-mint-choc.datepick.css +18 -0
  114. data/vendor/assets/stylesheets/ui-overcast.datepick.css +18 -0
  115. data/vendor/assets/stylesheets/ui-pepper-grinder.datepick.css +18 -0
  116. data/vendor/assets/stylesheets/ui-redmond.datepick.css +18 -0
  117. data/vendor/assets/stylesheets/ui-smoothness.datepick.css +18 -0
  118. data/vendor/assets/stylesheets/ui-south-street.datepick.css +18 -0
  119. data/vendor/assets/stylesheets/ui-start.datepick.css +18 -0
  120. data/vendor/assets/stylesheets/ui-sunny.datepick.css +18 -0
  121. data/vendor/assets/stylesheets/ui-swanky-purse.datepick.css +18 -0
  122. data/vendor/assets/stylesheets/ui-trontastic.datepick.css +18 -0
  123. data/vendor/assets/stylesheets/ui-ui-darkness.datepick.css +18 -0
  124. data/vendor/assets/stylesheets/ui-ui-lightness.datepick.css +18 -0
  125. data/vendor/assets/stylesheets/ui-vader.datepick.css +18 -0
  126. data/vendor/assets/stylesheets/ui.datepick.css +118 -0
  127. metadata +194 -0
@@ -0,0 +1,230 @@
1
+ /* http://keith-wood.name/datepick.html
2
+ Datepicker Validation extension for jQuery 4.1.0.
3
+ Requires Jörn Zaefferer's Validation plugin (http://plugins.jquery.com/project/validate).
4
+ Written by Keith Wood (kbwood{at}iinet.com.au).
5
+ Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and
6
+ MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses.
7
+ Please attribute the author if you use it. */
8
+
9
+ (function($) { // Hide the namespace
10
+
11
+ /* Add validation methods if validation plugin available. */
12
+ if ($.fn.validate) {
13
+
14
+ $.datepick.selectDateOrig = $.datepick.selectDate;
15
+
16
+ $.extend($.datepick.regional[''], {
17
+ validateDate: 'Please enter a valid date',
18
+ validateDateMin: 'Please enter a date on or after {0}',
19
+ validateDateMax: 'Please enter a date on or before {0}',
20
+ validateDateMinMax: 'Please enter a date between {0} and {1}',
21
+ validateDateCompare: 'Please enter a date {0} {1}',
22
+ validateDateToday: 'today',
23
+ validateDateOther: 'the other date',
24
+ validateDateEQ: 'equal to',
25
+ validateDateNE: 'not equal to',
26
+ validateDateLT: 'before',
27
+ validateDateGT: 'after',
28
+ validateDateLE: 'not after',
29
+ validateDateGE: 'not before'
30
+ });
31
+
32
+ $.extend($.datepick._defaults, $.datepick.regional['']);
33
+
34
+ $.extend($.datepick, {
35
+
36
+ /* Trigger a validation after updating the input field with the selected date.
37
+ @param target (element) the control to examine
38
+ @param elem (element) the selected datepicker element */
39
+ selectDate: function(target, elem) {
40
+ this.selectDateOrig(target, elem);
41
+ var inst = $.data(target, $.datepick.propertyName);
42
+ if (!inst.inline && $.fn.validate) {
43
+ var validation = $(target).parents('form').validate();
44
+ if (validation) {
45
+ validation.element('#' + target.id);
46
+ }
47
+ }
48
+ },
49
+
50
+ /* Correct error placement for validation errors - after any trigger.
51
+ @param error (jQuery) the error message
52
+ @param element (jQuery) the field in error */
53
+ errorPlacement: function(error, element) {
54
+ var inst = $.data(element[0], $.datepick.propertyName);
55
+ if (inst) {
56
+ error[inst.options.isRTL ? 'insertBefore' : 'insertAfter'](
57
+ inst.trigger.length > 0 ? inst.trigger : element);
58
+ }
59
+ else {
60
+ error.insertAfter(element);
61
+ }
62
+ },
63
+
64
+ /* Format a validation error message involving dates.
65
+ @param source (string) the error message
66
+ @param params (Date[]) the dates
67
+ @return (string) the formatted message */
68
+ errorFormat: function(source, params) {
69
+ var format = ($.datepick.curInst ?
70
+ $.datepick.curInst.options.dateFormat :
71
+ $.datepick._defaults.dateFormat);
72
+ $.each(params, function(index, value) {
73
+ source = source.replace(new RegExp('\\{' + index + '\\}', 'g'),
74
+ $.datepick.formatDate(format, value) || 'nothing');
75
+ });
76
+ return source;
77
+ }
78
+ });
79
+
80
+ var lastElement = null;
81
+
82
+ /* Validate date field. */
83
+ $.validator.addMethod('dpDate', function(value, element) {
84
+ lastElement = element;
85
+ return this.optional(element) || validateEach(value, element);
86
+ },
87
+ function(params) {
88
+ var inst = $.data(lastElement, $.datepick.propertyName);
89
+ var minDate = inst.get('minDate');
90
+ var maxDate = inst.get('maxDate');
91
+ var messages = $.datepick._defaults;
92
+ return (minDate && maxDate ?
93
+ $.datepick.errorFormat(messages.validateDateMinMax, [minDate, maxDate]) :
94
+ (minDate ? $.datepick.errorFormat(messages.validateDateMin, [minDate]) :
95
+ (maxDate ? $.datepick.errorFormat(messages.validateDateMax, [maxDate]) :
96
+ messages.validateDate)));
97
+ });
98
+
99
+ /* Apply a validation test to each date provided.
100
+ @param value (string) the current field value
101
+ @param element (element) the field control
102
+ @return (boolean) true if OK, false if failed validation */
103
+ function validateEach(value, element) {
104
+ var inst = $.data(element, $.datepick.propertyName);
105
+ var dates = (inst.options.multiSelect ? value.split(inst.options.multiSeparator) :
106
+ (inst.options.rangeSelect ? value.split(inst.options.rangeSeparator) : [value]));
107
+ var ok = (inst.options.multiSelect && dates.length <= inst.options.multiSelect) ||
108
+ (!inst.options.multiSelect && inst.options.rangeSelect && dates.length == 2) ||
109
+ (!inst.options.multiSelect && !inst.options.rangeSelect && dates.length == 1);
110
+ if (ok) {
111
+ try {
112
+ var dateFormat = inst.options.dateFormat;
113
+ var minDate = inst.get('minDate');
114
+ var maxDate = inst.get('maxDate');
115
+ var dp = $(element);
116
+ $.each(dates, function(i, v) {
117
+ dates[i] = $.datepick.parseDate(dateFormat, v);
118
+ ok = ok && (!dates[i] || (dp.datepick('isSelectable', dates[i]) &&
119
+ (!minDate || dates[i].getTime() >= minDate.getTime()) &&
120
+ (!maxDate || dates[i].getTime() <= maxDate.getTime())));
121
+ });
122
+ }
123
+ catch (e) {
124
+ ok = false;
125
+ }
126
+ }
127
+ if (ok && inst.options.rangeSelect) {
128
+ ok = (dates[0].getTime() <= dates[1].getTime());
129
+ }
130
+ return ok;
131
+ }
132
+
133
+ /* And allow as a class rule. */
134
+ $.validator.addClassRules('dpDate', {dpDate: true});
135
+
136
+ var comparisons = {equal: 'eq', same: 'eq', notEqual: 'ne', notSame: 'ne',
137
+ lessThan: 'lt', before: 'lt', greaterThan: 'gt', after: 'gt',
138
+ notLessThan: 'ge', notBefore: 'ge', notGreaterThan: 'le', notAfter: 'le'};
139
+
140
+ /* Cross-validate date fields.
141
+ params should be an array with [0] comparison type eq/ne/lt/gt/le/ge or synonyms,
142
+ [1] 'today' or date string or Date or other field selector/element/jQuery OR
143
+ an object with one attribute with name eq/ne/lt/gt/le/ge or synonyms
144
+ and value 'today' or date string or Date or other field selector/element/jQuery OR
145
+ a string with eq/ne/lt/gt/le/ge or synonyms followed by 'today' or date string or jQuery selector */
146
+ $.validator.addMethod('dpCompareDate', function(value, element, params) {
147
+ if (this.optional(element)) {
148
+ return true;
149
+ }
150
+ params = normaliseParams(params);
151
+ var thisDate = $(element).datepick('getDate');
152
+ var thatDate = extractOtherDate(element, params[1]);
153
+ if (thisDate.length == 0 || thatDate.length == 0) {
154
+ return true;
155
+ }
156
+ lastElement = element;
157
+ var finalResult = true;
158
+ for (var i = 0; i < thisDate.length; i++) {
159
+ switch (comparisons[params[0]] || params[0]) {
160
+ case 'eq': finalResult = (thisDate[i].getTime() == thatDate[0].getTime()); break;
161
+ case 'ne': finalResult = (thisDate[i].getTime() != thatDate[0].getTime()); break;
162
+ case 'lt': finalResult = (thisDate[i].getTime() < thatDate[0].getTime()); break;
163
+ case 'gt': finalResult = (thisDate[i].getTime() > thatDate[0].getTime()); break;
164
+ case 'le': finalResult = (thisDate[i].getTime() <= thatDate[0].getTime()); break;
165
+ case 'ge': finalResult = (thisDate[i].getTime() >= thatDate[0].getTime()); break;
166
+ default: finalResult = true;
167
+ }
168
+ if (!finalResult) {
169
+ break;
170
+ }
171
+ }
172
+ return finalResult;
173
+ },
174
+ function(params) {
175
+ var messages = $.datepick._defaults;
176
+ var inst = $.data(lastElement, $.datepick.propertyName);
177
+ params = normaliseParams(params);
178
+ var thatDate = extractOtherDate(lastElement, params[1], true);
179
+ thatDate = (params[1] == 'today' ? messages.validateDateToday : (thatDate.length ?
180
+ $.datepick.formatDate(inst.options.dateFormat, thatDate[0], inst.getConfig()) :
181
+ messages.validateDateOther));
182
+ return messages.validateDateCompare.replace(/\{0\}/,
183
+ messages['validateDate' + (comparisons[params[0]] || params[0]).toUpperCase()]).
184
+ replace(/\{1\}/, thatDate);
185
+ });
186
+
187
+ /* Normalise the comparison parameters to an array.
188
+ @param params (array or object or string) the original parameters
189
+ @return (array) the normalised parameters */
190
+ function normaliseParams(params) {
191
+ if (typeof params == 'string') {
192
+ params = params.split(' ');
193
+ }
194
+ else if (!$.isArray(params)) {
195
+ var opts = [];
196
+ for (var name in params) {
197
+ opts[0] = name;
198
+ opts[1] = params[name];
199
+ }
200
+ params = opts;
201
+ }
202
+ return params;
203
+ }
204
+
205
+ /* Determine the comparison date.
206
+ @param element (element) the current datepicker element
207
+ @param source (string or Date or jQuery or element) the source of the other date
208
+ @param noOther (boolean) true to not get the date from another field
209
+ @return (Date[1]) the date for comparison */
210
+ function extractOtherDate(element, source, noOther) {
211
+ if (source.constructor == Date) {
212
+ return [source];
213
+ }
214
+ var inst = $.data(element, $.datepick.propertyName);
215
+ var thatDate = null;
216
+ try {
217
+ if (typeof source == 'string' && source != 'today') {
218
+ thatDate = $.datepick.parseDate(inst.options.dateFormat, source, inst.getConfig());
219
+ }
220
+ }
221
+ catch (e) {
222
+ // Ignore
223
+ }
224
+ thatDate = (thatDate ? [thatDate] : (source == 'today' ?
225
+ [$.datepick.today()] : (noOther ? [] : $(source).datepick('getDate'))));
226
+ return thatDate;
227
+ }
228
+ }
229
+
230
+ })(jQuery);
@@ -0,0 +1,8 @@
1
+ /* http://keith-wood.name/datepick.html
2
+ Datepicker Validation extension for jQuery 4.1.0.
3
+ Requires J�rn Zaefferer's Validation plugin (http://plugins.jquery.com/project/validate).
4
+ Written by Keith Wood (kbwood{at}iinet.com.au).
5
+ Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and
6
+ MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses.
7
+ Please attribute the author if you use it. */
8
+ (function($){if($.fn.validate){$.datepick.selectDateOrig=$.datepick.selectDate;$.extend($.datepick.regional[''],{validateDate:'Please enter a valid date',validateDateMin:'Please enter a date on or after {0}',validateDateMax:'Please enter a date on or before {0}',validateDateMinMax:'Please enter a date between {0} and {1}',validateDateCompare:'Please enter a date {0} {1}',validateDateToday:'today',validateDateOther:'the other date',validateDateEQ:'equal to',validateDateNE:'not equal to',validateDateLT:'before',validateDateGT:'after',validateDateLE:'not after',validateDateGE:'not before'});$.extend($.datepick._defaults,$.datepick.regional['']);$.extend($.datepick,{selectDate:function(a,b){this.selectDateOrig(a,b);var c=$.data(a,$.datepick.propertyName);if(!c.inline&&$.fn.validate){var d=$(a).parents('form').validate();if(d){d.element('#'+a.id)}}},errorPlacement:function(a,b){var c=$.data(b[0],$.datepick.propertyName);if(c){a[c.options.isRTL?'insertBefore':'insertAfter'](c.trigger.length>0?c.trigger:b)}else{a.insertAfter(b)}},errorFormat:function(c,d){var e=($.datepick.curInst?$.datepick.curInst.options.dateFormat:$.datepick._defaults.dateFormat);$.each(d,function(a,b){c=c.replace(new RegExp('\\{'+a+'\\}','g'),$.datepick.formatDate(e,b)||'nothing')});return c}});var l=null;$.validator.addMethod('dpDate',function(a,b){l=b;return this.optional(b)||validateEach(a,b)},function(a){var b=$.data(l,$.datepick.propertyName);var c=b.get('minDate');var d=b.get('maxDate');var e=$.datepick._defaults;return(c&&d?$.datepick.errorFormat(e.validateDateMinMax,[c,d]):(c?$.datepick.errorFormat(e.validateDateMin,[c]):(d?$.datepick.errorFormat(e.validateDateMax,[d]):e.validateDate)))});function validateEach(a,b){var c=$.data(b,$.datepick.propertyName);var d=(c.options.multiSelect?a.split(c.options.multiSeparator):(c.options.rangeSelect?a.split(c.options.rangeSeparator):[a]));var f=(c.options.multiSelect&&d.length<=c.options.multiSelect)||(!c.options.multiSelect&&c.options.rangeSelect&&d.length==2)||(!c.options.multiSelect&&!c.options.rangeSelect&&d.length==1);if(f){try{var g=c.options.dateFormat;var h=c.get('minDate');var j=c.get('maxDate');var k=$(b);$.each(d,function(i,v){d[i]=$.datepick.parseDate(g,v);f=f&&(!d[i]||(k.datepick('isSelectable',d[i])&&(!h||d[i].getTime()>=h.getTime())&&(!j||d[i].getTime()<=j.getTime())))})}catch(e){f=false}}if(f&&c.options.rangeSelect){f=(d[0].getTime()<=d[1].getTime())}return f}$.validator.addClassRules('dpDate',{dpDate:true});var m={equal:'eq',same:'eq',notEqual:'ne',notSame:'ne',lessThan:'lt',before:'lt',greaterThan:'gt',after:'gt',notLessThan:'ge',notBefore:'ge',notGreaterThan:'le',notAfter:'le'};$.validator.addMethod('dpCompareDate',function(a,b,c){if(this.optional(b)){return true}c=normaliseParams(c);var d=$(b).datepick('getDate');var e=extractOtherDate(b,c[1]);if(d.length==0||e.length==0){return true}l=b;var f=true;for(var i=0;i<d.length;i++){switch(m[c[0]]||c[0]){case'eq':f=(d[i].getTime()==e[0].getTime());break;case'ne':f=(d[i].getTime()!=e[0].getTime());break;case'lt':f=(d[i].getTime()<e[0].getTime());break;case'gt':f=(d[i].getTime()>e[0].getTime());break;case'le':f=(d[i].getTime()<=e[0].getTime());break;case'ge':f=(d[i].getTime()>=e[0].getTime());break;default:f=true}if(!f){break}}return f},function(a){var b=$.datepick._defaults;var c=$.data(l,$.datepick.propertyName);a=normaliseParams(a);var d=extractOtherDate(l,a[1],true);d=(a[1]=='today'?b.validateDateToday:(d.length?$.datepick.formatDate(c.options.dateFormat,d[0],c.getConfig()):b.validateDateOther));return b.validateDateCompare.replace(/\{0\}/,b['validateDate'+(m[a[0]]||a[0]).toUpperCase()]).replace(/\{1\}/,d)});function normaliseParams(a){if(typeof a=='string'){a=a.split(' ')}else if(!$.isArray(a)){var b=[];for(var c in a){b[0]=c;b[1]=a[c]}a=b}return a}function extractOtherDate(a,b,c){if(b.constructor==Date){return[b]}var d=$.data(a,$.datepick.propertyName);var f=null;try{if(typeof b=='string'&&b!='today'){f=$.datepick.parseDate(d.options.dateFormat,b,d.getConfig())}}catch(e){}f=(f?[f]:(b=='today'?[$.datepick.today()]:(c?[]:$(b).datepick('getDate'))));return f}}})(jQuery);
@@ -0,0 +1,208 @@
1
+ /* Flora style sheet for jQuery Datepicker v4.1.0. */
2
+ .datepick {
3
+ background-color: #e0f4d7;
4
+ color: #000;
5
+ border: 1px solid #f90;
6
+ border-radius: 0.25em;
7
+ -moz-border-radius: 0.25em;
8
+ -webkit-border-radius: 0.25em;
9
+ font-family: Arial,Helvetica,Sans-serif;
10
+ font-size: 90%;
11
+ }
12
+ .datepick-rtl {
13
+ direction: rtl;
14
+ }
15
+ .datepick-popup {
16
+ z-index: 1000;
17
+ }
18
+ .datepick-disable {
19
+ position: absolute;
20
+ z-index: 100;
21
+ background-color: white;
22
+ opacity: 0.5;
23
+ filter: alpha(opacity=50);
24
+ }
25
+ .datepick a {
26
+ color: #000;
27
+ text-decoration: none;
28
+ }
29
+ .datepick a.datepick-disabled {
30
+ color: #888;
31
+ cursor: auto;
32
+ }
33
+ .datepick button {
34
+ margin: 0.25em;
35
+ padding: 0.125em 0em;
36
+ background-color: #fc8;
37
+ border: none;
38
+ border-radius: 0.25em;
39
+ -moz-border-radius: 0.25em;
40
+ -webkit-border-radius: 0.25em;
41
+ font-weight: bold;
42
+ }
43
+ .datepick-nav, .datepick-ctrl {
44
+ float: left;
45
+ width: 100%;
46
+ background-color: #e0f4d7;
47
+ color: #fff;
48
+ font-size: 90%;
49
+ font-weight: bold;
50
+ }
51
+ .datepick-ctrl {
52
+ background-color: #f90;
53
+ }
54
+ .datepick-cmd {
55
+ width: 30%;
56
+ }
57
+ .datepick-cmd:hover {
58
+ background-color: #b1db87;
59
+ }
60
+ .datepick-ctrl .datepick-cmd:hover {
61
+ background-color: #fa4;
62
+ }
63
+ .datepick-cmd-prevJump, .datepick-cmd-nextJump {
64
+ width: 8%;
65
+ }
66
+ a.datepick-cmd {
67
+ height: 1.5em;
68
+ }
69
+ button.datepick-cmd {
70
+ text-align: center;
71
+ }
72
+ .datepick-cmd-prev, .datepick-cmd-prevJump, .datepick-cmd-clear {
73
+ float: left;
74
+ padding-left: 2%;
75
+ }
76
+ .datepick-cmd-current, .datepick-cmd-today {
77
+ float: left;
78
+ width: 35%;
79
+ text-align: center;
80
+ }
81
+ .datepick-cmd-next, .datepick-cmd-nextJump, .datepick-cmd-close {
82
+ float: right;
83
+ padding-right: 2%;
84
+ text-align: right;
85
+ }
86
+ .datepick-rtl .datepick-cmd-prev, .datepick-rtl .datepick-cmd-prevJump,
87
+ .datepick-rtl .datepick-cmd-clear {
88
+ float: right;
89
+ padding-left: 0%;
90
+ padding-right: 2%;
91
+ text-align: right;
92
+ }
93
+ .datepick-rtl .datepick-cmd-current, .datepick-rtl .datepick-cmd-today {
94
+ float: right;
95
+ }
96
+ .datepick-rtl .datepick-cmd-next, .datepick-rtl .datepick-cmd-nextJump,
97
+ .datepick-rtl .datepick-cmd-close {
98
+ float: left;
99
+ padding-left: 2%;
100
+ padding-right: 0%;
101
+ text-align: left;
102
+ }
103
+ .datepick-month-nav {
104
+ float: left;
105
+ background-color: #b1db87;
106
+ text-align: center;
107
+ }
108
+ .datepick-month-nav div {
109
+ float: left;
110
+ width: 12.5%;
111
+ margin: 1%;
112
+ padding: 1%;
113
+ }
114
+ .datepick-month-nav span {
115
+ color: #888;
116
+ }
117
+ .datepick-month-row {
118
+ clear: left;
119
+ }
120
+ .datepick-month {
121
+ float: left;
122
+ width: 15em;
123
+ border: 1px solid #83c948;
124
+ text-align: center;
125
+ }
126
+ .datepick-month-header, .datepick-month-header select, .datepick-month-header input {
127
+ height: 1.5em;
128
+ background-color: #83c948;
129
+ color: #fff;
130
+ font-weight: bold;
131
+ }
132
+ .datepick-month-header select, .datepick-month-header input {
133
+ height: 1.4em;
134
+ border: none;
135
+ }
136
+ .datepick-month-header input {
137
+ position: absolute;
138
+ display: none;
139
+ }
140
+ .datepick-month table {
141
+ width: 100%;
142
+ border-collapse: collapse;
143
+ }
144
+ .datepick-month thead {
145
+ border-bottom: 1px solid #aaa;
146
+ }
147
+ .datepick-month th, .datepick-month td {
148
+ margin: 0em;
149
+ padding: 0em;
150
+ font-weight: normal;
151
+ text-align: center;
152
+ }
153
+ .datepick-month th {
154
+ border: 1px solid #b1db87;
155
+ }
156
+ .datepick-month th, .datepick-month th a {
157
+ background-color: #b1db87;
158
+ color: #000;
159
+ border: 1px solid #b1db87;
160
+ }
161
+ .datepick-month td {
162
+ background-color: #fff;
163
+ color: #666;
164
+ border: 1px solid #b1db87;
165
+ }
166
+ .datepick-month td.datepick-week * {
167
+ background-color: #b1db87;
168
+ color: #666;
169
+ border: none;
170
+ }
171
+ .datepick-month a {
172
+ display: block;
173
+ width: 100%;
174
+ padding: 0.125em 0em;
175
+ text-decoration: none;
176
+ }
177
+ .datepick-month span {
178
+ display: block;
179
+ width: 100%;
180
+ padding: 0.125em 0em;
181
+ }
182
+ .datepick-month td span {
183
+ color: #888;
184
+ }
185
+ .datepick-month td .datepick-other-month {
186
+ background-color: #e0f4d7;
187
+ }
188
+ .datepick-month td .datepick-weekend {
189
+ background-color: #e0f4d7;
190
+ }
191
+ .datepick-month td .datepick-today {
192
+ background-color: #b1db87;
193
+ }
194
+ .datepick-month td .datepick-highlight {
195
+ background-color: #fc8;
196
+ }
197
+ .datepick-month td .datepick-selected {
198
+ background-color: #f90;
199
+ color: #fff;
200
+ }
201
+ .datepick-status {
202
+ clear: both;
203
+ background-color: #b1db87;
204
+ text-align: center;
205
+ }
206
+ .datepick-clear-fix {
207
+ clear: both;
208
+ }
@@ -0,0 +1,197 @@
1
+ /* Humanity style sheet for jQuery Datepicker v4.1.0. */
2
+ .datepick {
3
+ background-color: #f4f0ec;
4
+ color: #1e1b1c;
5
+ border: 1px solid #cb842e;
6
+ border-radius: 0.25em;
7
+ -moz-border-radius: 0.25em;
8
+ -webkit-border-radius: 0.25em;
9
+ font-family: Arial,Helvetica,Sans-serif;
10
+ font-size: 90%;
11
+ }
12
+ .datepick-rtl {
13
+ direction: rtl;
14
+ }
15
+ .datepick-popup {
16
+ z-index: 1000;
17
+ }
18
+ .datepick-disable {
19
+ position: absolute;
20
+ z-index: 100;
21
+ background-color: white;
22
+ opacity: 0.5;
23
+ filter: alpha(opacity=50);
24
+ }
25
+ .datepick a {
26
+ color: #1e1b1c;
27
+ text-decoration: none;
28
+ }
29
+ .datepick a.datepick-disabled {
30
+ color: #888;
31
+ cursor: auto;
32
+ }
33
+ .datepick button {
34
+ margin: 0.25em;
35
+ padding: 0.125em 0em;
36
+ background-color: #ede4d4;
37
+ border: none;
38
+ border-radius: 0.25em;
39
+ -moz-border-radius: 0.25em;
40
+ -webkit-border-radius: 0.25em;
41
+ font-weight: bold;
42
+ }
43
+ .datepick-nav, .datepick-ctrl {
44
+ float: left;
45
+ width: 100%;
46
+ background-color: #ede4d4;
47
+ font-size: 90%;
48
+ font-weight: bold;
49
+ }
50
+ .datepick-ctrl {
51
+ background-color: #cb842e;
52
+ }
53
+ .datepick-cmd {
54
+ width: 30%;
55
+ }
56
+ .datepick-cmd:hover {
57
+ background-color: #f4f0ec;
58
+ }
59
+ .datepick-cmd-prevJump, .datepick-cmd-nextJump {
60
+ width: 8%;
61
+ }
62
+ a.datepick-cmd {
63
+ height: 1.5em;
64
+ }
65
+ button.datepick-cmd {
66
+ text-align: center;
67
+ }
68
+ .datepick-cmd-prev, .datepick-cmd-prevJump, .datepick-cmd-clear {
69
+ float: left;
70
+ padding-left: 2%;
71
+ }
72
+ .datepick-cmd-current, .datepick-cmd-today {
73
+ float: left;
74
+ width: 35%;
75
+ text-align: center;
76
+ }
77
+ .datepick-cmd-next, .datepick-cmd-nextJump, .datepick-cmd-close {
78
+ float: right;
79
+ padding-right: 2%;
80
+ text-align: right;
81
+ }
82
+ .datepick-rtl .datepick-cmd-prev, .datepick-rtl .datepick-cmd-prevJump,
83
+ .datepick-rtl .datepick-cmd-clear {
84
+ float: right;
85
+ padding-left: 0%;
86
+ padding-right: 2%;
87
+ text-align: right;
88
+ }
89
+ .datepick-rtl .datepick-cmd-current, .datepick-rtl .datepick-cmd-today {
90
+ float: right;
91
+ }
92
+ .datepick-rtl .datepick-cmd-next, .datepick-rtl .datepick-cmd-nextJump,
93
+ .datepick-rtl .datepick-cmd-close {
94
+ float: left;
95
+ padding-left: 2%;
96
+ padding-right: 0%;
97
+ text-align: left;
98
+ }
99
+ .datepick-month-nav {
100
+ float: left;
101
+ text-align: center;
102
+ }
103
+ .datepick-month-nav div {
104
+ float: left;
105
+ width: 12.5%;
106
+ margin: 1%;
107
+ padding: 1%;
108
+ }
109
+ .datepick-month-nav span {
110
+ color: #888;
111
+ }
112
+ .datepick-month-row {
113
+ clear: left;
114
+ }
115
+ .datepick-month {
116
+ float: left;
117
+ width: 17em;
118
+ border: 1px solid #e0cfc2;
119
+ text-align: center;
120
+ }
121
+ .datepick-month-header, .datepick-month-header select, .datepick-month-header input {
122
+ height: 1.5em;
123
+ background-color: #cb842e;
124
+ color: #fff;
125
+ font-weight: bold;
126
+ }
127
+ .datepick-month-header select, .datepick-month-header input {
128
+ height: 1.4em;
129
+ border: none;
130
+ }
131
+ .datepick-month-header input {
132
+ position: absolute;
133
+ display: none;
134
+ }
135
+ .datepick-month table {
136
+ width: 100%;
137
+ border: 2px solid transparent;
138
+ border-collapse: collapse;
139
+ }
140
+ .datepick-month th, .datepick-month td {
141
+ margin: 0em;
142
+ padding: 0.125em;
143
+ font-weight: normal;
144
+ text-align: center;
145
+ }
146
+ .datepick-month td.datepick-week,
147
+ .datepick-month td.datepick-week * {
148
+ background-color: #cb842e;
149
+ color: #fff;
150
+ border: 1px solid #cb842e;
151
+ }
152
+ .datepick-month a {
153
+ display: block;
154
+ width: 100%;
155
+ padding: 0.125em 0em;
156
+ background-color: #ede4d4;
157
+ color: #000;
158
+ border: 1px solid #cdc3b7;
159
+ text-decoration: none;
160
+ }
161
+ .datepick-month a, .datepick-month span {
162
+ display: block;
163
+ margin-top: 0.25em;
164
+ }
165
+ .datepick-month a {
166
+ background-color: #ede4d4;
167
+ color: #444;
168
+ border: 1px solid #cdc3b7;
169
+ text-decoration: none;
170
+ }
171
+ .datepick-month td span {
172
+ color: #888;
173
+ }
174
+ .datepick-month td .datepick-other-month {
175
+ background-color: #f4f0ec;
176
+ }
177
+ .datepick-month td .datepick-today {
178
+ background-color: #f5f5b5;
179
+ border: 1px solid #d9bb73;
180
+ }
181
+ .datepick-month td .datepick-highlight {
182
+ background-color: #f5f0e5;
183
+ color: #1e1b1c;
184
+ border: 1px solid #f5ad66;
185
+ }
186
+ .datepick-month td .datepick-selected {
187
+ background-color: #cb842e;
188
+ color: #fff;
189
+ border: 1px solid #cb842e;
190
+ }
191
+ .datepick-status {
192
+ clear: both;
193
+ text-align: center;
194
+ }
195
+ .datepick-clear-fix {
196
+ clear: both;
197
+ }