code: function Datepicker(el, options) {
        _classCallCheck(this, Datepicker);
  
        var _this53 = _possibleConstructorReturn(this, (Datepicker.__proto__ || Object.getPrototypeOf(Datepicker)).call(this, Datepicker, el, options));
  
        _this53.el.M_Datepicker = _this53;
  
        _this53.options = $.extend({}, Datepicker.defaults, options);
  
        // make sure i18n defaults are not lost when only few i18n option properties are passed
        if (!!options && options.hasOwnProperty('i18n') && typeof options.i18n === 'object') {
          _this53.options.i18n = $.extend({}, Datepicker.defaults.i18n, options.i18n);
        }
  
        // Remove time component from minDate and maxDate options
        if (_this53.options.minDate) _this53.options.minDate.setHours(0, 0, 0, 0);
        if (_this53.options.maxDate) _this53.options.maxDate.setHours(0, 0, 0, 0);
  
        _this53.id = M.guid();
  
        _this53._setupVariables();
        _this53._insertHTMLIntoDOM();
        _this53._setupModal();
  
        _this53._setupEventHandlers();
  
        if (!_this53.options.defaultDate) {
          _this53.options.defaultDate = new Date(Date.parse(_this53.el.value));
        }
  
        var defDate = _this53.options.defaultDate;
        if (Datepicker._isDate(defDate)) {
          if (_this53.options.setDefaultDate) {
            _this53.setDate(defDate, true);
            _this53.setInputValue();
          } else {
            _this53.gotoDate(defDate);
          }
        } else {
          _this53.gotoDate(new Date());
        }
  
        /**
         * Describes open/close state of datepicker
         * @type {Boolean}
         */
        _this53.isOpen = false;
        return _this53;
      }
docs: Construct Datepicker instance and set up overlay
  @constructor
  @param {Element} el
  @param {Object} options