// DatePicker (function( $ ) { $.widget("metro.datepicker", { version: "1.0.0", options: { format: "dd.mm.yyyy", date: undefined, effect: 'none', position: 'bottom', locale: $.Metro.currentLocale, weekStart: (METRO_WEEK_START != undefined ? METRO_WEEK_START : 0), // 0 - Sunday, 1 - Monday otherDays: false, selected: function(d, d0){}, _calendar: undefined }, _create: function(){ var that = this, element = this.element, input = element.children("input"), button = element.children("button.btn-date"); if (element.data('date') != undefined) this.options.date = element.data('date'); if (element.data('format') != undefined) this.options.format = element.data('format'); if (element.data('effect') != undefined) this.options.effect = element.data('effect'); if (element.data('position') != undefined) this.options.position = element.data('position'); if (element.data('locale') != undefined) this.options.locale = element.data('locale'); if (element.data('weekStart') != undefined) this.options.weekStart = element.data('weekStart'); if (element.data('otherDays') != undefined) this.options.otherDays = element.data('otherDays'); this._createCalendar(element, this.options.date); input.attr('readonly', true); button.on('click', function(e){ e.stopPropagation(); if (that.options._calendar.css('display') == 'none') { that._show(); } else { that._hide(); } }); element.on('click', function(e){ e.stopPropagation(); if (that.options._calendar.css('display') == 'none') { that._show(); } else { that._hide(); } }); $('html').on('click', function(e){ $(".calendar-dropdown").hide(); }) }, _createCalendar: function(to, curDate){ var _calendar, that = this; _calendar = $("
").css({ position: 'absolute' , display: 'none' , 'max-width': 260 , 'z-index': 1000 }).addClass('calendar calendar-dropdown').appendTo(to); if (that.options.date != undefined) { _calendar.data('date', that.options.date); } _calendar.calendar({ multiSelect: false, format: that.options.format, buttons: false, locale: that.options.locale, otherDays: that.options.otherDays, weekStart: that.options.weekStart, click: function(d, d0){ //console.log(d, d0); _calendar.calendar('setDate', d0); to.children("input[type=text]").val(d); that.options.selected(d, d0); that._hide(); } }); if (curDate != undefined) { _calendar.calendar('setDate', curDate); to.children("input[type=text]").val(_calendar.calendar('getDate')); } // Set position switch (this.options.position) { case 'top': _calendar.css({top: (0-_calendar.height()), left: 0}); break; default: _calendar.css({top: '100%', left: 0}); } this.options._calendar = _calendar; }, _show: function(){ if (this.options.effect == 'slide') { $(".calendar-dropdown").slideUp('fast'); this.options._calendar.slideDown('fast'); } else if (this.options.effect == 'fade') { $(".calendar-dropdown").fadeOut('fast'); this.options._calendar.fadeIn('fast'); } else { $(".calendar-dropdown").hide(); this.options._calendar.show(); } }, _hide: function(){ if (this.options.effect == 'slide') { this.options._calendar.slideUp('fast'); } else if (this.options.effect == 'fade') { this.options._calendar.fadeOut('fast'); } else { this.options._calendar.hide(); } }, _destroy: function(){ }, _setOption: function(key, value){ this._super('_setOption', key, value); } }) })( jQuery );