aureus 0.3.6

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 (35) hide show
  1. data/Gemfile +2 -0
  2. data/Gemfile.lock +14 -0
  3. data/Rakefile +20 -0
  4. data/Readme.md +3 -0
  5. data/app/assets/images/aureus/background.png +0 -0
  6. data/app/assets/images/aureus/icon-cross.png +0 -0
  7. data/app/assets/images/aureus/icon-eye.png +0 -0
  8. data/app/assets/images/aureus/icon-pencil.png +0 -0
  9. data/app/assets/images/aureus/icon-print.png +0 -0
  10. data/app/assets/images/aureus/icon-refresh.png +0 -0
  11. data/app/assets/images/aureus/icon-sort-abc-asc.png +0 -0
  12. data/app/assets/images/aureus/icon-sort-abc-desc.png +0 -0
  13. data/app/assets/images/aureus/icon-sort.png +0 -0
  14. data/app/assets/images/aureus/topbar.png +0 -0
  15. data/app/assets/javascripts/aureus/extensions.js +42 -0
  16. data/app/assets/javascripts/aureus/functions.js +18 -0
  17. data/app/assets/javascripts/aureus/index.js +55 -0
  18. data/app/assets/javascripts/aureus/plugins/jquery-calendrical.js +508 -0
  19. data/app/assets/javascripts/aureus/plugins/jquery-datatables.js +11838 -0
  20. data/app/assets/javascripts/aureus/plugins/jquery-qtip.js +15 -0
  21. data/app/assets/stylesheets/aureus/base.scss +43 -0
  22. data/app/assets/stylesheets/aureus/content.scss +124 -0
  23. data/app/assets/stylesheets/aureus/form.scss +73 -0
  24. data/app/assets/stylesheets/aureus/index.scss +38 -0
  25. data/app/assets/stylesheets/aureus/mixins.scss +43 -0
  26. data/app/assets/stylesheets/aureus/navigation.scss +44 -0
  27. data/app/assets/stylesheets/aureus/reset.scss +50 -0
  28. data/app/assets/stylesheets/aureus/table.scss +164 -0
  29. data/app/assets/stylesheets/aureus/topbar.scss +43 -0
  30. data/app/assets/stylesheets/aureus/ui.scss +98 -0
  31. data/aureus.gemspec +23 -0
  32. data/lib/aureus.rb +5 -0
  33. data/lib/aureus/engine.rb +5 -0
  34. data/lib/aureus/version.rb +3 -0
  35. metadata +79 -0
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source "http://rubygems.org"
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,14 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ Aureus (0.1.5)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+
10
+ PLATFORMS
11
+ ruby
12
+
13
+ DEPENDENCIES
14
+ Aureus!
data/Rakefile ADDED
@@ -0,0 +1,20 @@
1
+ require 'rake/testtask'
2
+ require 'highline/import'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.libs << 'test'
6
+ end
7
+
8
+ desc "build and publish"
9
+ task :build do
10
+ puts "build gem..."
11
+ `gem build aureus.gemspec`
12
+ Dir["*.gem"].each do |file|
13
+ if agree "publish gem: #{file}? (y,n)"
14
+ puts "publishing gem..."
15
+ `gem push #{file}`
16
+ end
17
+ end
18
+ puts "remove gem..."
19
+ `rm *.gem`
20
+ end
data/Readme.md ADDED
@@ -0,0 +1,3 @@
1
+ # Aureus Admin Template
2
+
3
+ **a nice looking css framework for your rails admin interfaces**
Binary file
@@ -0,0 +1,42 @@
1
+ jQuery.extend( jQuery.fn.dataTableExt.oSort, {
2
+ "date-eu-pre": function ( date ) {
3
+ var date = date.replace(" ", "");
4
+
5
+ if (date.indexOf('.') > 0) {
6
+ /*date a, format dd.mn.(yyyy) ; (year is optional)*/
7
+ var eu_date = date.split('.');
8
+ } else {
9
+ /*date a, format dd/mn/(yyyy) ; (year is optional)*/
10
+ var eu_date = date.split('/');
11
+ }
12
+
13
+ /*year (optional)*/
14
+ if (eu_date[2]) {
15
+ var year = eu_date[2];
16
+ } else {
17
+ var year = 0;
18
+ }
19
+
20
+ /*month*/
21
+ var month = eu_date[1];
22
+ if (month.length == 1) {
23
+ month = 0+month;
24
+ }
25
+
26
+ /*day*/
27
+ var day = eu_date[0];
28
+ if (day.length == 1) {
29
+ day = 0+day;
30
+ }
31
+
32
+ return (year + month + day) * 1;
33
+ },
34
+
35
+ "date-eu-asc": function ( a, b ) {
36
+ return ((a < b) ? -1 : ((a > b) ? 1 : 0));
37
+ },
38
+
39
+ "date-eu-desc": function ( a, b ) {
40
+ return ((a < b) ? 1 : ((a > b) ? -1 : 0));
41
+ }
42
+ } );
@@ -0,0 +1,18 @@
1
+ // Column Configurator for Datatables
2
+ function datatablesColumnConf(table) {
3
+ var ret = Array();
4
+ table.children("thead").children("tr").children("th").each(function(){
5
+ if($(this).hasClass("no-sorting")) {
6
+ ret.push({ bSortable: false });
7
+ } else if($(this).hasClass("date-sorting")) {
8
+ ret.push({ sType: "date-eu" });
9
+ } else {
10
+ ret.push(null);
11
+ }
12
+ });
13
+ return ret;
14
+ }
15
+
16
+ function triggerForm(selector) {
17
+ $(selector).submit();
18
+ }
@@ -0,0 +1,55 @@
1
+ //= require jquery
2
+ //= require jquery_ujs
3
+ //= require jquery-ui
4
+ //= require_directory ./plugins
5
+ //= require ./functions
6
+ //= require ./extensions
7
+ //= require_self
8
+
9
+ var datatablesLanguageConfig = {
10
+ sSearch : "Suchen:",
11
+ sLengthMenu: "Zeige _MENU_ Einträge pro Seite",
12
+ sZeroRecords: "Keine Daten gefunden",
13
+ sInfo: "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
14
+ sInfoEmpty: "Zeige 0 Einträge",
15
+ sInfoFiltered: "(Total _MAX_ Einträge)"
16
+ };
17
+
18
+ $(document).ready(function(){
19
+
20
+ $("td.buttons a").wrapInner("<span/>");
21
+
22
+ $.fn.dataTableExt.oStdClasses.sWrapper = "datatable-wrapper";
23
+ $.fn.dataTableExt.oStdClasses.sLength = "datatable-length";
24
+ $.fn.dataTableExt.oStdClasses.sFilter = "datatable-filter";
25
+ $.fn.dataTableExt.oStdClasses.sInfo = "datatable-info";
26
+ $.fn.dataTableExt.oStdClasses.sPaging = "datatable-paging";
27
+
28
+ $('.datatable').each(function(){
29
+ $(this).dataTable({
30
+ sDom: '<"toolbar"fi>t',
31
+ oLanguage: datatablesLanguageConfig,
32
+ bPaginate: false,
33
+ aoColumns: datatablesColumnConf($(this))
34
+ });
35
+ });
36
+
37
+ $('.datatable-no-toolbar').each(function(){
38
+ $(this).dataTable({
39
+ sDom: 't',
40
+ oLanguage: datatablesLanguageConfig,
41
+ bPaginate: false,
42
+ aoColumns: datatablesColumnConf($(this))
43
+ });
44
+ });
45
+
46
+ $(".datepicker").datepicker(datepickerConfiguration);
47
+
48
+ // Prevent Bug
49
+ $("div.ui-datepicker").hide();
50
+
51
+ $(".timepicker").calendricalTime(timepickerConfiguration);
52
+
53
+ $.fn.qtip.styles.single = tooltipConfiguration;
54
+
55
+ });
@@ -0,0 +1,508 @@
1
+ (function($) {
2
+ var monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
3
+ 'July', 'August', 'September', 'October', 'November', 'December'];
4
+
5
+ function getToday()
6
+ {
7
+ var date = new Date();
8
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
9
+ }
10
+
11
+ function areDatesEqual(date1, date2)
12
+ {
13
+ return String(date1) == String(date2);
14
+ }
15
+
16
+ function daysInMonth(year, month)
17
+ {
18
+ if (year instanceof Date) return daysInMonth(year.getFullYear(), year.getMonth());
19
+ if (month == 1) {
20
+ var leapYear = (year % 4 == 0) &&
21
+ (!(year % 100 == 0) || (year % 400 == 0));
22
+ return leapYear ? 29 : 28;
23
+ } else if (month == 3 || month == 5 || month == 8 || month == 10) {
24
+ return 30;
25
+ } else {
26
+ return 31;
27
+ }
28
+ }
29
+
30
+ function dayAfter(date)
31
+ {
32
+ var year = date.getFullYear();
33
+ var month = date.getMonth();
34
+ var day = date.getDate();
35
+ var lastDay = daysInMonth(date);
36
+ return (day == lastDay) ?
37
+ ((month == 11) ?
38
+ new Date(year + 1, 0, 1) :
39
+ new Date(year, month + 1, 1)
40
+ ) :
41
+ new Date(year, month, day + 1);
42
+ }
43
+
44
+ function dayBefore(date)
45
+ {
46
+ var year = date.getFullYear();
47
+ var month = date.getMonth();
48
+ var day = date.getDate();
49
+ return (day == 1) ?
50
+ ((month == 0) ?
51
+ new Date(year - 1, 11, daysInMonth(year - 1, 11)) :
52
+ new Date(year, month - 1, daysInMonth(year, month - 1))
53
+ ) :
54
+ new Date(year, month, day - 1);
55
+ }
56
+
57
+ function monthAfter(year, month)
58
+ {
59
+ return (month == 11) ?
60
+ new Date(year + 1, 0, 1) :
61
+ new Date(year, month + 1, 1);
62
+ }
63
+
64
+ function formatDate(date, usa)
65
+ {
66
+ return (usa ?
67
+ ((date.getMonth() + 1) + '/' + date.getDate()) :
68
+ (date.getDate() + '/' + (date.getMonth() + 1))
69
+ ) + '/' + date.getFullYear();
70
+ }
71
+
72
+ function parseDate(date, usa)
73
+ {
74
+ if (usa) return new Date(date);
75
+ a = date.split(/[\.\-\/]/);
76
+ var day = a.shift();
77
+ var month = a.shift();
78
+ a.unshift(day);
79
+ a.unshift(month);
80
+ return new Date(a.join('/'));
81
+ }
82
+
83
+ function formatTime(hour, minute, options)
84
+ {
85
+ var printMinute = minute;
86
+ if (minute < 10) printMinute = '0' + minute;
87
+
88
+ if (options.isoTime) {
89
+ var printHour = hour
90
+ if (printHour < 10) printHour = '0' + hour;
91
+ return printHour + ':' + printMinute;
92
+ } else {
93
+ var printHour = hour % 12;
94
+ if (printHour == 0) printHour = 12;
95
+
96
+ if (options.meridiemUpperCase) {
97
+ var half = (hour < 12) ? 'AM' : 'PM';
98
+ } else {
99
+ var half = (hour < 12) ? 'am' : 'pm';
100
+ }
101
+
102
+ return printHour + ':' + printMinute + half;
103
+ }
104
+ }
105
+
106
+ function parseTime(text)
107
+ {
108
+ var match = match = /(\d+)\s*[:\-\.,]\s*(\d+)\s*(am|pm)?/i.exec(text);
109
+ if (match && match.length >= 3) {
110
+ var hour = Number(match[1]);
111
+ var minute = Number(match[2])
112
+ if (hour == 12 && match[3]) hour -= 12;
113
+ if (match[3] && match[3].toLowerCase() == 'pm') hour += 12;
114
+ return {
115
+ hour: hour,
116
+ minute: minute
117
+ };
118
+ } else {
119
+ return null;
120
+ }
121
+ }
122
+
123
+ function timeToMinutes(time)
124
+ {
125
+ return time && (time.hour * 60 + time.minute);
126
+ }
127
+
128
+ /**
129
+ * Generates calendar header, with month name, << and >> controls, and
130
+ * initials for days of the week.
131
+ */
132
+ function renderCalendarHeader(element, year, month, options)
133
+ {
134
+ //Prepare thead element
135
+ var thead = $('<thead />');
136
+ var titleRow = $('<tr />').appendTo(thead);
137
+
138
+ //Generate << (back a month) link
139
+ $('<th />').addClass('monthCell').append(
140
+ $('<a href="javascript:;">&laquo;</a>')
141
+ .addClass('prevMonth')
142
+ .mousedown(function(e) {
143
+ renderCalendarPage(element,
144
+ month == 0 ? (year - 1) : year,
145
+ month == 0 ? 11 : (month - 1), options
146
+ );
147
+ e.preventDefault();
148
+ })
149
+ ).appendTo(titleRow);
150
+
151
+ //Generate month title
152
+ $('<th />').addClass('monthCell').attr('colSpan', 5).append(
153
+ $('<a href="javascript:;">' + monthNames[month] + ' ' +
154
+ year + '</a>').addClass('monthName')
155
+ ).appendTo(titleRow);
156
+
157
+ //Generate >> (forward a month) link
158
+ $('<th />').addClass('monthCell').append(
159
+ $('<a href="javascript:;">&raquo;</a>')
160
+ .addClass('nextMonth')
161
+ .mousedown(function() {
162
+ renderCalendarPage(element,
163
+ month == 11 ? (year + 1) : year,
164
+ month == 11 ? 0 : (month + 1), options
165
+ );
166
+ })
167
+ ).appendTo(titleRow);
168
+
169
+ //Generate weekday initials row
170
+ var dayNames = $('<tr />').appendTo(thead);
171
+ $.each(String('SMTWTFS').split(''), function(k, v) {
172
+ $('<td />').addClass('dayName').append(v).appendTo(dayNames);
173
+ });
174
+
175
+ return thead;
176
+ }
177
+
178
+ function renderCalendarPage(element, year, month, options)
179
+ {
180
+ options = options || {};
181
+
182
+ var today = getToday();
183
+
184
+ var date = new Date(year, month, 1);
185
+
186
+ //Wind end date forward to saturday week after month
187
+ var endDate = monthAfter(year, month);
188
+ var ff = 6 - endDate.getDay();
189
+ if (ff < 6) ff += 7;
190
+ for (var i = 0; i < ff; i++) endDate = dayAfter(endDate);
191
+
192
+ var table = $('<table />');
193
+ renderCalendarHeader(element, year, month, options).appendTo(table);
194
+
195
+ var tbody = $('<tbody />').appendTo(table);
196
+ var row = $('<tr />');
197
+
198
+ //Rewind date to monday week before month
199
+ var rewind = date.getDay() + 7;
200
+ for (var i = 0; i < rewind; i++) date = dayBefore(date);
201
+
202
+ while (date <= endDate) {
203
+ var td = $('<td />')
204
+ .addClass('day')
205
+ .append(
206
+ $('<a href="javascript:;">' +
207
+ date.getDate() + '</a>'
208
+ ).click((function() {
209
+ var thisDate = date;
210
+
211
+ return function() {
212
+ if (options && options.selectDate) {
213
+ options.selectDate(thisDate);
214
+ }
215
+ }
216
+ }()))
217
+ )
218
+ .appendTo(row);
219
+
220
+ var isToday = areDatesEqual(date, today);
221
+ var isSelected = options.selected &&
222
+ areDatesEqual(options.selected, date);
223
+
224
+ if (isToday) td.addClass('today');
225
+ if (isSelected) td.addClass('selected');
226
+ if (isToday && isSelected) td.addClass('today_selected');
227
+ if (date.getMonth() != month) td.addClass('nonMonth');
228
+
229
+ dow = date.getDay();
230
+ if (dow == 6) {
231
+ tbody.append(row);
232
+ row = $('<tr />');
233
+ }
234
+ date = dayAfter(date);
235
+ }
236
+ if (row.children().length) {
237
+ tbody.append(row);
238
+ } else {
239
+ row.remove();
240
+ }
241
+
242
+ element.empty().append(table);
243
+ }
244
+
245
+ function renderTimeSelect(element, options)
246
+ {
247
+ var minTime = timeToMinutes(options.minTime);
248
+ var maxTime = timeToMinutes(options.maxTime);
249
+ var defaultTime = timeToMinutes(options.defaultTime);
250
+ var selection = options.selection && timeToMinutes(parseTime(options.selection));
251
+
252
+ //Round selection to nearest time interval so that it matches a list item
253
+ selection = selection && (
254
+ (
255
+ Math.floor((selection - minTime) / options.timeInterval) *
256
+ options.timeInterval
257
+ ) + minTime
258
+ );
259
+
260
+ var scrollTo; //Element to scroll the dropdown box to when shown
261
+ var ul = $('<ul />');
262
+
263
+ for (var time = minTime; time <= maxTime; time += options.timeInterval) {
264
+ (function(time) {
265
+ var hour = Math.floor(time / 60);
266
+ var minute = time % 60;
267
+ var timeText = formatTime(hour, minute, options);
268
+ var fullText = timeText;
269
+ if (options.showDuration) {
270
+ var duration = time - minTime;
271
+ if (duration < 60) {
272
+ fullText += ' (' + duration + ' mins)';
273
+ } else if (duration == 60) {
274
+ fullText += ' (1 hr)';
275
+ } else {
276
+ //Round partial hours to 1 decimal place
277
+ fullText += ' (' + (Math.round(duration / 60.0 * 10.0) / 10.0) + ' hrs)';
278
+ }
279
+ }
280
+ var li = $('<li />').append(
281
+ $('<a href="javascript:;">' + fullText + '</a>')
282
+ .click(function() {
283
+ if (options && options.selectTime) {
284
+ options.selectTime(timeText);
285
+ }
286
+ }).mousemove(function() {
287
+ $('li.selected', ul).removeClass('selected');
288
+ })
289
+ ).appendTo(ul);
290
+
291
+ //Set to scroll to the default hour, unless already set
292
+ if (!scrollTo && time == defaultTime) scrollTo = li;
293
+
294
+ if (selection == time) {
295
+ //Highlight selected item
296
+ li.addClass('selected');
297
+
298
+ //Set to scroll to the selected hour
299
+ //
300
+ //This is set even if scrollTo is already set, since
301
+ //scrolling to selected hour is more important than
302
+ //scrolling to default hour
303
+ scrollTo = li;
304
+ }
305
+ })(time);
306
+ }
307
+ if (scrollTo) {
308
+ //Set timeout of zero so code runs immediately after any calling
309
+ //functions are finished (this is needed, since box hasn't been
310
+ //added to the DOM yet)
311
+ setTimeout(function() {
312
+ //Scroll the dropdown box so that scrollTo item is in
313
+ //the middle
314
+ element[0].scrollTop =
315
+ scrollTo[0].offsetTop - scrollTo.height() * 2;
316
+ }, 0);
317
+ }
318
+ element.empty().append(ul);
319
+ }
320
+
321
+ $.fn.calendricalDate = function(options)
322
+ {
323
+ options = options || {};
324
+ options.padding = options.padding || 4;
325
+
326
+ return this.each(function() {
327
+ var element = $(this);
328
+ var div;
329
+ var within = false;
330
+
331
+ element.bind('focus click', function() {
332
+ if (div) return;
333
+ var offset = element.position();
334
+ var padding = element.css('padding-left');
335
+ div = $('<div />')
336
+ .addClass('calendricalDatePopup')
337
+ .mouseenter(function() { within = true; })
338
+ .mouseleave(function() { within = false; })
339
+ .mousedown(function(e) {
340
+ e.preventDefault();
341
+ })
342
+ .css({
343
+ position: 'absolute',
344
+ left: offset.left,
345
+ top: offset.top + element.height() +
346
+ options.padding * 2
347
+ });
348
+ element.after(div);
349
+
350
+ var selected = parseDate(element.val(), options.usa);
351
+ if (!selected.getFullYear()) selected = getToday();
352
+
353
+ renderCalendarPage(
354
+ div,
355
+ selected.getFullYear(),
356
+ selected.getMonth(), {
357
+ selected: selected,
358
+ selectDate: function(date) {
359
+ within = false;
360
+ element.val(formatDate(date, options.usa));
361
+ div.remove();
362
+ div = null;
363
+ if (options.endDate) {
364
+ var endDate = parseDate(
365
+ options.endDate.val(), options.usa
366
+ );
367
+ if (endDate >= selected) {
368
+ options.endDate.val(formatDate(
369
+ new Date(
370
+ date.getTime() +
371
+ endDate.getTime() -
372
+ selected.getTime()
373
+ ),
374
+ options.usa
375
+ ));
376
+ }
377
+ }
378
+ }
379
+ }
380
+ );
381
+ }).blur(function() {
382
+ if (within){
383
+ if (div) element.focus();
384
+ return;
385
+ }
386
+ if (!div) return;
387
+ div.remove();
388
+ div = null;
389
+ });
390
+ });
391
+ };
392
+
393
+ $.fn.calendricalDateRange = function(options)
394
+ {
395
+ if (this.length >= 2) {
396
+ $(this[0]).calendricalDate($.extend({
397
+ endDate: $(this[1])
398
+ }, options));
399
+ $(this[1]).calendricalDate(options);
400
+ }
401
+ return this;
402
+ };
403
+
404
+ $.fn.calendricalTime = function(options)
405
+ {
406
+ options = options || {};
407
+ options.timeInterval = options.timeInterval || 30;
408
+ options.padding = options.padding || 4;
409
+
410
+ return this.each(function() {
411
+ var element = $(this);
412
+ var div;
413
+ var within = false;
414
+
415
+ element.bind('focus click', function() {
416
+ if (div) return;
417
+
418
+ var offset = element.position();
419
+ div = $('<div />')
420
+ .addClass('calendricalTimePopup')
421
+ .mouseenter(function() { within = true; })
422
+ .mouseleave(function() { within = false; })
423
+ .mousedown(function(e) {
424
+ e.preventDefault();
425
+ })
426
+ .css({
427
+ position: 'absolute',
428
+ left: offset.left,
429
+ top: offset.top + element.height() +
430
+ options.padding * 2
431
+ });
432
+
433
+ element.after(div);
434
+
435
+ var renderOptions = {
436
+ selection: element.val(),
437
+ selectTime: function(time) {
438
+ within = false;
439
+ element.val(time);
440
+ element.trigger("change");
441
+ div.remove();
442
+ div = null;
443
+ },
444
+ isoTime: options.isoTime || false,
445
+ meridiemUpperCase: options.meridiemUpperCase || false,
446
+ defaultTime: options.defaultTime || {hour: 8, minute: 0},
447
+ minTime: options.minTime || {hour: 0, minute: 0},
448
+ maxTime: options.maxTime || {hour: 23, minute: 59},
449
+ timeInterval: options.timeInterval || 30
450
+ };
451
+
452
+ if (options.startTime) {
453
+ var startTime = parseTime(options.startTime.val());
454
+ //Don't display duration if part of a datetime range,
455
+ //and start and end times are on different days
456
+ if (options.startDate && options.endDate &&
457
+ !areDatesEqual(parseDate(options.startDate.val()),
458
+ parseDate(options.endDate.val()))) {
459
+ startTime = null;
460
+ }
461
+ if (startTime) {
462
+ renderOptions.minTime = startTime;
463
+ renderOptions.showDuration = true;
464
+ div.addClass('calendricalEndTimePopup');
465
+ }
466
+ }
467
+
468
+ renderTimeSelect(div, renderOptions);
469
+ }).blur(function() {
470
+ if (within){
471
+ if (div) element.focus();
472
+ return;
473
+ }
474
+ if (!div) return;
475
+ div.remove();
476
+ div = null;
477
+ });
478
+ });
479
+ },
480
+
481
+ $.fn.calendricalTimeRange = function(options)
482
+ {
483
+ if (this.length >= 2) {
484
+ $(this[0]).calendricalTime(options);
485
+ $(this[1]).calendricalTime($.extend({
486
+ startTime: $(this[0])
487
+ }, options));
488
+ }
489
+ return this;
490
+ };
491
+
492
+ $.fn.calendricalDateTimeRange = function(options)
493
+ {
494
+ if (this.length >= 4) {
495
+ $(this[0]).calendricalDate($.extend({
496
+ endDate: $(this[2])
497
+ }, options));
498
+ $(this[1]).calendricalTime(options);
499
+ $(this[2]).calendricalDate(options);
500
+ $(this[3]).calendricalTime($.extend({
501
+ startTime: $(this[1]),
502
+ startDate: $(this[0]),
503
+ endDate: $(this[2])
504
+ }, options));
505
+ }
506
+ return this;
507
+ };
508
+ })(jQuery);