'use strict'; /*@ Ox.DateTimeInput <f> DateTimeInput Element options <o> Options object ampm <b|false> false is 24h true is am/pm format <s|short> options are short, medium, long seconds <b|false> show seconds value <d> defautls to now weekday <b|false> weekday self <o> Shared private variable ([options[, self]]) -> <o:Ox.InputGroup> DateTimeInput Element change <!> triggered on change of value @*/ Ox.DateTimeInput = function(options, self) { var that; self = Ox.extend(self || {}, { options: Ox.extend({ ampm: false, format: 'short', milliseconds: false, seconds: false, value: (function() { var date = new Date(); return Ox.formatDate( date, '%F ' + (options && (options.seconds || options.milliseconds) ? '%T' : '%H:%M') ) + (options && options.milliseconds ? '.' + Ox.pad(date % 1000, 3) : ''); }()), weekday: false }, options || {}) }); self.options.seconds = self.options.seconds || self.options.milliseconds; that = Ox.InputGroup(Ox.extend(self.options, { inputs: [ Ox.DateInput({ format: self.options.format, id: 'date', weekday: self.options.weekday }), Ox.TimeInput({ ampm: self.options.ampm, id: 'time', seconds: self.options.seconds }) ], join: join, separators: [ {title: '', width: 8} ], split: split }), self); function join() { return that.options('inputs').map(function($input) { return $input.value(); }).join(' '); } function split() { return self.options.value.split(' '); } return that; };