');
t = "INPUT" == this.el.nodeName ? this.opts.inline ? i.insertAfter(this.$el) : a : i.appendTo(this.$el), this.$datepicker = e(c).appendTo(t), this.$content = e(".datepicker--content", this.$datepicker), this.$nav = e(".datepicker--nav", this.$datepicker)
}, _triggerOnChange: function () {
if (!this.selectedDates.length) {
if ("" === this._prevOnSelectValue)return;
return this._prevOnSelectValue = "", this.opts.onSelect("", "", this)
}
var t, e = this.selectedDates, i = n.getParsedDate(e[0]), s = this, a = new Date(i.year, i.month, i.date, i.hours, i.minutes);
t = e.map(function (t) {
return s.formatDate(s.loc.dateFormat, t)
}).join(this.opts.multipleDatesSeparator), (this.opts.multipleDates || this.opts.range) && (a = e.map(function (t) {
var e = n.getParsedDate(t);
return new Date(e.year, e.month, e.date, e.hours, e.minutes)
})), this._prevOnSelectValue = t, this.opts.onSelect(t, a, this)
}, next: function () {
var t = this.parsedDate, e = this.opts;
switch (this.view) {
case"days":
this.date = new Date(t.year, t.month + 1, 1), e.onChangeMonth && e.onChangeMonth(this.parsedDate.month, this.parsedDate.year);
break;
case"months":
this.date = new Date(t.year + 1, t.month, 1), e.onChangeYear && e.onChangeYear(this.parsedDate.year);
break;
case"years":
this.date = new Date(t.year + 10, 0, 1), e.onChangeDecade && e.onChangeDecade(this.curDecade)
}
}, prev: function () {
var t = this.parsedDate, e = this.opts;
switch (this.view) {
case"days":
this.date = new Date(t.year, t.month - 1, 1), e.onChangeMonth && e.onChangeMonth(this.parsedDate.month, this.parsedDate.year);
break;
case"months":
this.date = new Date(t.year - 1, t.month, 1), e.onChangeYear && e.onChangeYear(this.parsedDate.year);
break;
case"years":
this.date = new Date(t.year - 10, 0, 1), e.onChangeDecade && e.onChangeDecade(this.curDecade)
}
}, formatDate: function (t, e) {
e = e || this.date;
var i, s = t, a = this._getWordBoundaryRegExp, h = this.loc, r = n.getLeadingZeroNum, o = n.getDecade(e), c = n.getParsedDate(e), d = c.fullHours, l = c.hours, u = "am";
switch (this.opts.timepicker && this.timepicker && this.ampm && (i = this.timepicker._getValidHoursFromDate(e), d = r(i.hours), l = i.hours, u = i.dayPeriod), !0) {
case/@/.test(s):
s = s.replace(/@/, e.getTime());
case/aa/.test(s):
s = s.replace(a("aa"), u);
case/AA/.test(s):
s = s.replace(a("AA"), u.toUpperCase());
case/dd/.test(s):
s = s.replace(a("dd"), c.fullDate);
case/d/.test(s):
s = s.replace(a("d"), c.date);
case/DD/.test(s):
s = s.replace(a("DD"), h.days[c.day]);
case/D/.test(s):
s = s.replace(a("D"), h.daysShort[c.day]);
case/mm/.test(s):
s = s.replace(a("mm"), c.fullMonth);
case/m/.test(s):
s = s.replace(a("m"), c.month + 1);
case/MM/.test(s):
s = s.replace(a("MM"), this.loc.months[c.month]);
case/M/.test(s):
s = s.replace(a("M"), h.monthsShort[c.month]);
case/ii/.test(s):
s = s.replace(a("ii"), c.fullMinutes);
case/i/.test(s):
s = s.replace(a("i"), c.minutes);
case/hh/.test(s):
s = s.replace(a("hh"), d);
case/h/.test(s):
s = s.replace(a("h"), l);
case/yyyy/.test(s):
s = s.replace(a("yyyy"), c.year);
case/yyyy1/.test(s):
s = s.replace(a("yyyy1"), o[0]);
case/yyyy2/.test(s):
s = s.replace(a("yyyy2"), o[1]);
case/yy/.test(s):
s = s.replace(a("yy"), c.year.toString().slice(-2))
}
return s
}, _getWordBoundaryRegExp: function (t) {
return new RegExp("\\b(?=[a-zA-Z0-9äöüßÄÖÜ<])" + t + "(?![>a-zA-Z0-9äöüßÄÖÜ])")
}, selectDate: function (t) {
var e = this, i = e.opts, s = e.parsedDate, a = e.selectedDates, h = a.length, r = "";
if (Array.isArray(t))return void t.forEach(function (t) {
e.selectDate(t)
});
if (t instanceof Date) {
if (this.lastSelectedDate = t, this.timepicker && this.timepicker._setTime(t), e._trigger("selectDate", t), this.timepicker && (t.setHours(this.timepicker.hours), t.setMinutes(this.timepicker.minutes)), "days" == e.view && t.getMonth() != s.month && i.moveToOtherMonthsOnSelect && (r = new Date(t.getFullYear(), t.getMonth(), 1)), "years" == e.view && t.getFullYear() != s.year && i.moveToOtherYearsOnSelect && (r = new Date(t.getFullYear(), 0, 1)), r && (e.silent = !0, e.date = r, e.silent = !1, e.nav._render()), i.multipleDates && !i.range) {
if (h === i.multipleDates)return;
e._isSelected(t) || e.selectedDates.push(t)
} else i.range ? 2 == h ? (e.selectedDates = [t], e.minRange = t, e.maxRange = "") : 1 == h ? (e.selectedDates.push(t), e.maxRange ? e.minRange = t : e.maxRange = t, n.bigger(e.maxRange, e.minRange) && (e.maxRange = e.minRange, e.minRange = t), e.selectedDates = [e.minRange, e.maxRange]) : (e.selectedDates = [t], e.minRange = t) : e.selectedDates = [t];
e._setInputValue(), i.onSelect && e._triggerOnChange(), i.autoClose && !this.timepickerIsActive && (i.multipleDates || i.range ? i.range && 2 == e.selectedDates.length && e.hide() : e.hide()), e.views[this.currentView]._render()
}
}, removeDate: function (t) {
var e = this.selectedDates, i = this;
if (t instanceof Date)return e.some(function (s, a) {
return n.isSame(s, t) ? (e.splice(a, 1), i.selectedDates.length ? i.lastSelectedDate = i.selectedDates[i.selectedDates.length - 1] : (i.minRange = "", i.maxRange = "", i.lastSelectedDate = ""), i.views[i.currentView]._render(), i._setInputValue(), i.opts.onSelect && i._triggerOnChange(), !0) : void 0
})
}, today: function () {
this.silent = !0, this.view = this.opts.minView, this.silent = !1, this.date = new Date, this.opts.todayButton instanceof Date && this.selectDate(this.opts.todayButton)
}, clear: function () {
this.selectedDates = [], this.minRange = "", this.maxRange = "", this.views[this.currentView]._render(), this._setInputValue(), this.opts.onSelect && this._triggerOnChange()
}, update: function (t, i) {
var s = arguments.length;
return 2 == s ? this.opts[t] = i : 1 == s && "object" == typeof t && (this.opts = e.extend(!0, this.opts, t)), this._createShortCuts(), this._syncWithMinMaxDates(), this._defineLocale(this.opts.language), this.nav._addButtonsIfNeed(), this.nav._render(), this.views[this.currentView]._render(), this.elIsInput && !this.opts.inline && (this._setPositionClasses(this.opts.position), this.visible && this.setPosition(this.opts.position)), this.opts.classes && this.$datepicker.addClass(this.opts.classes), this.opts.timepicker && (this.timepicker._handleDate(this.lastSelectedDate), this.timepicker._updateRanges(), this.timepicker._updateCurrentTime(), this.lastSelectedDate && (this.lastSelectedDate.setHours(this.timepicker.hours), this.lastSelectedDate.setMinutes(this.timepicker.minutes))), this._setInputValue(), this
}, _syncWithMinMaxDates: function () {
var t = this.date.getTime();
this.silent = !0, this.minTime > t && (this.date = this.minDate), this.maxTime < t && (this.date = this.maxDate), this.silent = !1
}, _isSelected: function (t, e) {
var i = !1;
return this.selectedDates.some(function (s) {
return n.isSame(s, t, e) ? (i = s, !0) : void 0
}), i
}, _setInputValue: function () {
var t, e = this, i = e.opts, s = e.loc.dateFormat, a = i.altFieldDateFormat, n = e.selectedDates.map(function (t) {
return e.formatDate(s, t)
});
i.altField && e.$altField.length && (t = this.selectedDates.map(function (t) {
return e.formatDate(a, t)
}), t = t.join(this.opts.multipleDatesSeparator), this.$altField.val(t)), n = n.join(this.opts.multipleDatesSeparator), this.$el.val(n)
}, _isInRange: function (t, e) {
var i = t.getTime(), s = n.getParsedDate(t), a = n.getParsedDate(this.minDate), h = n.getParsedDate(this.maxDate), r = new Date(s.year, s.month, a.date).getTime(), o = new Date(s.year, s.month, h.date).getTime(), c = {
day: i >= this.minTime && i <= this.maxTime,
month: r >= this.minTime && o <= this.maxTime,
year: s.year >= a.year && s.year <= h.year
};
return e ? c[e] : c.day
}, _getDimensions: function (t) {
var e = t.offset();
return {width: t.outerWidth(), height: t.outerHeight(), left: e.left, top: e.top}
}, _getDateFromCell: function (t) {
var e = this.parsedDate, s = t.data("year") || e.year, a = t.data("month") == i ? e.month : t.data("month"), n = t.data("date") || 1;
return new Date(s, a, n)
}, _setPositionClasses: function (t) {
t = t.split(" ");
var e = t[0], i = t[1], s = "datepicker -" + e + "-" + i + "- -from-" + e + "-";
this.visible && (s += " active"), this.$datepicker.removeAttr("class").addClass(s)
}, setPosition: function (t) {
t = t || this.opts.position;
var e, i, s = this._getDimensions(this.$el), a = this._getDimensions(this.$datepicker), n = t.split(" "), h = this.opts.offset, r = n[0], o = n[1];
switch (r) {
case"top":
e = s.top - a.height - h;
break;
case"right":
i = s.left + s.width + h;
break;
case"bottom":
e = s.top + s.height + h;
break;
case"left":
i = s.left - a.width - h
}
switch (o) {
case"top":
e = s.top;
break;
case"right":
i = s.left + s.width - a.width;
break;
case"bottom":
e = s.top + s.height - a.height;
break;
case"left":
i = s.left;
break;
case"center":
/left|right/.test(r) ? e = s.top + s.height / 2 - a.height / 2 : i = s.left + s.width / 2 - a.width / 2
}
this.$datepicker.css({left: i, top: e})
}, show: function () {
this.setPosition(this.opts.position), this.$datepicker.addClass("active"), this.visible = !0
}, hide: function () {
this.$datepicker.removeClass("active").css({left: "-100000px"}), this.focused = "", this.keys = [], this.inFocus = !1, this.visible = !1, this.$el.blur()
}, down: function (t) {
this._changeView(t, "down")
}, up: function (t) {
this._changeView(t, "up")
}, _changeView: function (t, e) {
t = t || this.focused || this.date;
var i = "up" == e ? this.viewIndex + 1 : this.viewIndex - 1;
i > 2 && (i = 2), 0 > i && (i = 0), this.silent = !0, this.date = new Date(t.getFullYear(), t.getMonth(), 1), this.silent = !1, this.view = this.viewIndexes[i]
}, _handleHotKey: function (t) {
var e, i, s, a = n.getParsedDate(this._getFocusedDate()), h = this.opts, r = !1, o = !1, c = !1, d = a.year, l = a.month, u = a.date;
switch (t) {
case"ctrlRight":
case"ctrlUp":
l += 1, r = !0;
break;
case"ctrlLeft":
case"ctrlDown":
l -= 1, r = !0;
break;
case"shiftRight":
case"shiftUp":
o = !0, d += 1;
break;
case"shiftLeft":
case"shiftDown":
o = !0, d -= 1;
break;
case"altRight":
case"altUp":
c = !0, d += 10;
break;
case"altLeft":
case"altDown":
c = !0, d -= 10;
break;
case"ctrlShiftUp":
this.up()
}
s = n.getDaysCount(new Date(d, l)), i = new Date(d, l, u), u > s && (u = s), i.getTime() < this.minTime ? i = this.minDate : i.getTime() > this.maxTime && (i = this.maxDate), this.focused = i, e = n.getParsedDate(i), r && h.onChangeMonth && h.onChangeMonth(e.month, e.year), o && h.onChangeYear && h.onChangeYear(e.year), c && h.onChangeDecade && h.onChangeDecade(this.curDecade)
}, _registerKey: function (t) {
var e = this.keys.some(function (e) {
return e == t
});
e || this.keys.push(t)
}, _unRegisterKey: function (t) {
var e = this.keys.indexOf(t);
this.keys.splice(e, 1)
}, _isHotKeyPressed: function () {
var t, e = !1, i = this, s = this.keys.sort();
for (var a in l)t = l[a], s.length == t.length && t.every(function (t, e) {
return t == s[e]
}) && (i._trigger("hotKey", a), e = !0);
return e
}, _trigger: function (t, e) {
this.$el.trigger(t, e)
}, _focusNextCell: function (t, e) {
e = e || this.cellType;
var i = n.getParsedDate(this._getFocusedDate()), s = i.year, a = i.month, h = i.date;
if (!this._isHotKeyPressed()) {
switch (t) {
case 37:
"day" == e ? h -= 1 : "", "month" == e ? a -= 1 : "", "year" == e ? s -= 1 : "";
break;
case 38:
"day" == e ? h -= 7 : "", "month" == e ? a -= 3 : "", "year" == e ? s -= 4 : "";
break;
case 39:
"day" == e ? h += 1 : "", "month" == e ? a += 1 : "", "year" == e ? s += 1 : "";
break;
case 40:
"day" == e ? h += 7 : "", "month" == e ? a += 3 : "", "year" == e ? s += 4 : ""
}
var r = new Date(s, a, h);
r.getTime() < this.minTime ? r = this.minDate : r.getTime() > this.maxTime && (r = this.maxDate), this.focused = r
}
}, _getFocusedDate: function () {
var t = this.focused || this.selectedDates[this.selectedDates.length - 1], e = this.parsedDate;
if (!t)switch (this.view) {
case"days":
t = new Date(e.year, e.month, (new Date).getDate());
break;
case"months":
t = new Date(e.year, e.month, 1);
break;
case"years":
t = new Date(e.year, 0, 1)
}
return t
}, _getCell: function (t, e) {
e = e || this.cellType;
var i, s = n.getParsedDate(t), a = '.datepicker--cell[data-year="' + s.year + '"]';
switch (e) {
case"month":
a = '[data-month="' + s.month + '"]';
break;
case"day":
a += '[data-month="' + s.month + '"][data-date="' + s.date + '"]'
}
return i = this.views[this.currentView].$el.find(a), i.length ? i : ""
}, destroy: function () {
var t = this;
t.$el.off(".adp").data("datepicker", ""), t.selectedDates = [], t.focused = "", t.views = {}, t.keys = [], t.minRange = "", t.maxRange = "", t.opts.inline || !t.elIsInput ? t.$datepicker.closest(".datepicker-inline").remove() : t.$datepicker.remove()
}, _onShowEvent: function (t) {
this.visible || this.show()
}, _onBlur: function () {
!this.inFocus && this.visible && this.hide()
}, _onMouseDownDatepicker: function (t) {
this.inFocus = !0
}, _onMouseUpDatepicker: function (t) {
this.inFocus = !1, t.originalEvent.inFocus = !0, t.originalEvent.timepickerFocus || this.$el.focus()
}, _onKeyUpGeneral: function (t) {
var e = this.$el.val();
e || this.clear()
}, _onResize: function () {
this.visible && this.setPosition()
}, _onMouseUpBody: function (t) {
t.originalEvent.inFocus || this.visible && !this.inFocus && this.hide()
}, _onMouseUpEl: function (t) {
t.originalEvent.inFocus = !0, setTimeout(this._onKeyUpGeneral.bind(this), 4)
}, _onKeyDown: function (t) {
var e = t.which;
if (this._registerKey(e), e >= 37 && 40 >= e && (t.preventDefault(), this._focusNextCell(e)), 13 == e && this.focused) {
if (this._getCell(this.focused).hasClass("-disabled-"))return;
if (this.view != this.opts.minView) this.down(); else {
var i = this._isSelected(this.focused, this.cellType);
i ? i && this.opts.toggleSelected && this.removeDate(this.focused) : (this.timepicker && (this.focused.setHours(this.timepicker.hours), this.focused.setMinutes(this.timepicker.minutes)), this.selectDate(this.focused))
}
}
27 == e && this.hide()
}, _onKeyUp: function (t) {
var e = t.which;
this._unRegisterKey(e)
}, _onHotKey: function (t, e) {
this._handleHotKey(e)
}, _onMouseEnterCell: function (t) {
var i = e(t.target).closest(".datepicker--cell"), s = this._getDateFromCell(i);
this.silent = !0, this.focused && (this.focused = ""), i.addClass("-focus-"), this.focused = s, this.silent = !1, this.opts.range && 1 == this.selectedDates.length && (this.minRange = this.selectedDates[0], this.maxRange = "", n.less(this.minRange, this.focused) && (this.maxRange = this.minRange, this.minRange = ""), this.views[this.currentView]._update())
}, _onMouseLeaveCell: function (t) {
var i = e(t.target).closest(".datepicker--cell");
i.removeClass("-focus-"), this.silent = !0, this.focused = "", this.silent = !1
}, _onTimeChange: function (t, e, i) {
var s = new Date, a = this.selectedDates, n = !1;
a.length && (n = !0, s = this.lastSelectedDate), s.setHours(e), s.setMinutes(i), n || this._getCell(s).hasClass("-disabled-") ? (this._setInputValue(), this.opts.onSelect && this._triggerOnChange()) : this.selectDate(s)
}, _onClickCell: function (t, e) {
this.timepicker && (e.setHours(this.timepicker.hours), e.setMinutes(this.timepicker.minutes)), this.selectDate(e)
}, set focused(t) {
if (!t && this.focused) {
var e = this._getCell(this.focused);
e.length && e.removeClass("-focus-")
}
this._focused = t, this.opts.range && 1 == this.selectedDates.length && (this.minRange = this.selectedDates[0], this.maxRange = "", n.less(this.minRange, this._focused) && (this.maxRange = this.minRange, this.minRange = "")), this.silent || (this.date = t)
}, get focused() {
return this._focused
}, get parsedDate() {
return n.getParsedDate(this.date)
}, set date(t) {
return t instanceof Date ? (this.currentDate = t, this.inited && !this.silent && (this.views[this.view]._render(), this.nav._render(), this.visible && this.elIsInput && this.setPosition()), t) : void 0
}, get date() {
return this.currentDate
}, set view(t) {
return this.viewIndex = this.viewIndexes.indexOf(t), this.viewIndex < 0 ? void 0 : (this.prevView = this.currentView, this.currentView = t, this.inited && (this.views[t] ? this.views[t]._render() : this.views[t] = new e.fn.datepicker.Body(this, t, this.opts), this.views[this.prevView].hide(), this.views[t].show(), this.nav._render(), this.opts.onChangeView && this.opts.onChangeView(t), this.elIsInput && this.visible && this.setPosition()), t)
}, get view() {
return this.currentView
}, get cellType() {
return this.view.substring(0, this.view.length - 1)
}, get minTime() {
var t = n.getParsedDate(this.minDate);
return new Date(t.year, t.month, t.date).getTime()
}, get maxTime() {
var t = n.getParsedDate(this.maxDate);
return new Date(t.year, t.month, t.date).getTime()
}, get curDecade() {
return n.getDecade(this.date)
}
}, n.getDaysCount = function (t) {
return new Date(t.getFullYear(), t.getMonth() + 1, 0).getDate()
}, n.getParsedDate = function (t) {
return {
year: t.getFullYear(),
month: t.getMonth(),
fullMonth: t.getMonth() + 1 < 10 ? "0" + (t.getMonth() + 1) : t.getMonth() + 1,
date: t.getDate(),
fullDate: t.getDate() < 10 ? "0" + t.getDate() : t.getDate(),
day: t.getDay(),
hours: t.getHours(),
fullHours: t.getHours() < 10 ? "0" + t.getHours() : t.getHours(),
minutes: t.getMinutes(),
fullMinutes: t.getMinutes() < 10 ? "0" + t.getMinutes() : t.getMinutes()
}
}, n.getDecade = function (t) {
var e = 10 * Math.floor(t.getFullYear() / 10);
return [e, e + 9]
}, n.template = function (t, e) {
return t.replace(/#\{([\w]+)\}/g, function (t, i) {
return e[i] || 0 === e[i] ? e[i] : void 0
})
}, n.isSame = function (t, e, i) {
if (!t || !e)return !1;
var s = n.getParsedDate(t), a = n.getParsedDate(e), h = i ? i : "day", r = {
day: s.date == a.date && s.month == a.month && s.year == a.year,
month: s.month == a.month && s.year == a.year,
year: s.year == a.year
};
return r[h]
}, n.less = function (t, e, i) {
return t && e ? e.getTime() < t.getTime() : !1
}, n.bigger = function (t, e, i) {
return t && e ? e.getTime() > t.getTime() : !1
}, n.getLeadingZeroNum = function (t) {
return parseInt(t) < 10 ? "0" + t : t
}, e.fn.datepicker = function (t) {
return this.each(function () {
if (e.data(this, h)) {
var i = e.data(this, h);
i.opts = e.extend(!0, i.opts, t), i.update()
} else e.data(this, h, new u(this, t))
})
}, e.fn.datepicker.Constructor = u, e.fn.datepicker.language = {
ru: {
days: ["Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота"],
daysShort: ["Вос", "Пон", "Вто", "Сре", "Чет", "Пят", "Суб"],
daysMin: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
months: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
monthsShort: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"],
today: "Сегодня",
clear: "Очистить",
dateFormat: "dd.mm.yyyy",
timeFormat: "hh:ii",
firstDay: 1
}
}, e(function () {
e(r).datepicker()
})
}(), function () {
var t = {
days: '
',
months: '
',
years: '
'
}, s = e.fn.datepicker, a = s.Constructor;
s.Body = function (t, e, i) {
this.d = t, this.type = e, this.opts = i, this.init()
}, s.Body.prototype = {
init: function () {
this._buildBaseHtml(), this._render(), this._bindEvents()
}, _bindEvents: function () {
this.$el.on("click", ".datepicker--cell", e.proxy(this._onClickCell, this))
}, _buildBaseHtml: function () {
this.$el = e(t[this.type]).appendTo(this.d.$content), this.$names = e(".datepicker--days-names", this.$el), this.$cells = e(".datepicker--cells", this.$el)
}, _getDayNamesHtml: function (t, e, s, a) {
return e = e != i ? e : t, s = s ? s : "", a = a != i ? a : 0, a > 7 ? s : 7 == e ? this._getDayNamesHtml(t, 0, s, ++a) : (s += '
' + this.d.loc.daysMin[e] + "
", this._getDayNamesHtml(t, ++e, s, ++a))
}, _getCellContents: function (t, e) {
var i = "datepicker--cell datepicker--cell-" + e, s = new Date, n = this.d, h = n.opts, r = a.getParsedDate(t), o = {}, c = r.date;
switch (h.onRenderCell && (o = h.onRenderCell(t, e) || {}, c = o.html ? o.html : c, i += o.classes ? " " + o.classes : ""), e) {
case"day":
n.isWeekend(r.day) && (i += " -weekend-"), r.month != this.d.parsedDate.month && (i += " -other-month-", h.selectOtherMonths || (i += " -disabled-"), h.showOtherMonths || (c = ""));
break;
case"month":
c = n.loc[n.opts.monthsField][r.month];
break;
case"year":
var d = n.curDecade;
c = r.year, (r.year < d[0] || r.year > d[1]) && (i += " -other-decade-", h.selectOtherYears || (i += " -disabled-"), h.showOtherYears || (c = ""))
}
return h.onRenderCell && (o = h.onRenderCell(t, e) || {}, c = o.html ? o.html : c, i += o.classes ? " " + o.classes : ""), h.range && (a.isSame(n.minRange, t, e) && (i += " -range-from-"), a.isSame(n.maxRange, t, e) && (i += " -range-to-"), 1 == n.selectedDates.length && n.focused ? ((a.bigger(n.minRange, t) && a.less(n.focused, t) || a.less(n.maxRange, t) && a.bigger(n.focused, t)) && (i += " -in-range-"), a.less(n.maxRange, t) && a.isSame(n.focused, t) && (i += " -range-from-"), a.bigger(n.minRange, t) && a.isSame(n.focused, t) && (i += " -range-to-")) : 2 == n.selectedDates.length && a.bigger(n.minRange, t) && a.less(n.maxRange, t) && (i += " -in-range-")), a.isSame(s, t, e) && (i += " -current-"), n.focused && a.isSame(t, n.focused, e) && (i += " -focus-"), n._isSelected(t, e) && (i += " -selected-"), (!n._isInRange(t, e) || o.disabled) && (i += " -disabled-"), {
html: c,
classes: i
}
}, _getDaysHtml: function (t) {
var e = a.getDaysCount(t), i = new Date(t.getFullYear(), t.getMonth(), 1).getDay(), s = new Date(t.getFullYear(), t.getMonth(), e).getDay(), n = i - this.d.loc.firstDay, h = 6 - s + this.d.loc.firstDay;
n = 0 > n ? n + 7 : n, h = h > 6 ? h - 7 : h;
for (var r, o, c = -n + 1, d = "", l = c, u = e + h; u >= l; l++)o = t.getFullYear(), r = t.getMonth(), d += this._getDayHtml(new Date(o, r, l));
return d
}, _getDayHtml: function (t) {
var e = this._getCellContents(t, "day");
return '
' + e.html + "
"
}, _getMonthsHtml: function (t) {
for (var e = "", i = a.getParsedDate(t), s = 0; 12 > s;)e += this._getMonthHtml(new Date(i.year, s)), s++;
return e
}, _getMonthHtml: function (t) {
var e = this._getCellContents(t, "month");
return '
' + e.html + "
"
}, _getYearsHtml: function (t) {
var e = (a.getParsedDate(t), a.getDecade(t)), i = e[0] - 1, s = "", n = i;
for (n; n <= e[1] + 1; n++)s += this._getYearHtml(new Date(n, 0));
return s
}, _getYearHtml: function (t) {
var e = this._getCellContents(t, "year");
return '
' + e.html + "
"
}, _renderTypes: {
days: function () {
var t = this._getDayNamesHtml(this.d.loc.firstDay), e = this._getDaysHtml(this.d.currentDate);
this.$cells.html(e), this.$names.html(t)
}, months: function () {
var t = this._getMonthsHtml(this.d.currentDate);
this.$cells.html(t)
}, years: function () {
var t = this._getYearsHtml(this.d.currentDate);
this.$cells.html(t)
}
}, _render: function () {
this._renderTypes[this.type].bind(this)()
}, _update: function () {
var t, i, s, a = e(".datepicker--cell", this.$cells), n = this;
a.each(function (a, h) {
i = e(this), s = n.d._getDateFromCell(e(this)), t = n._getCellContents(s, n.d.cellType), i.attr("class", t.classes)
})
}, show: function () {
this.$el.addClass("active"), this.acitve = !0
}, hide: function () {
this.$el.removeClass("active"), this.active = !1
}, _handleClick: function (t) {
var e = t.data("date") || 1, i = t.data("month") || 0, s = t.data("year") || this.d.parsedDate.year;
if (this.d.view != this.opts.minView)return void this.d.down(new Date(s, i, e));
var a = new Date(s, i, e), n = this.d._isSelected(a, this.d.cellType);
n ? n && this.opts.toggleSelected ? this.d.removeDate(a) : n && !this.opts.toggleSelected && (this.d.lastSelectedDate = n, this.d.opts.timepicker && (this.d.timepicker._setTime(n), this.d.timepicker.update())) : this.d._trigger("clickCell", a)
}, _onClickCell: function (t) {
var i = e(t.target).closest(".datepicker--cell");
i.hasClass("-disabled-") || this._handleClick.bind(this)(i)
}
}
}(), function () {
var t = '
#{prevHtml}
#{title}
#{nextHtml}
', i = '
', s = '
#{label}', a = e.fn.datepicker, n = a.Constructor;
a.Navigation = function (t, e) {
this.d = t, this.opts = e, this.$buttonsContainer = "", this.init()
}, a.Navigation.prototype = {
init: function () {
this._buildBaseHtml(), this._bindEvents()
}, _bindEvents: function () {
this.d.$nav.on("click", ".datepicker--nav-action", e.proxy(this._onClickNavButton, this)), this.d.$nav.on("click", ".datepicker--nav-title", e.proxy(this._onClickNavTitle, this)), this.d.$datepicker.on("click", ".datepicker--button", e.proxy(this._onClickNavButton, this))
}, _buildBaseHtml: function () {
this._render(), this._addButtonsIfNeed()
}, _addButtonsIfNeed: function () {
this.opts.todayButton && this._addButton("today"), this.opts.clearButton && this._addButton("clear")
}, _render: function () {
var i = this._getTitle(this.d.currentDate), s = n.template(t, e.extend({title: i}, this.opts));
this.d.$nav.html(s), "years" == this.d.view && e(".datepicker--nav-title", this.d.$nav).addClass("-disabled-"), this.setNavStatus()
}, _getTitle: function (t) {
return this.d.formatDate(this.opts.navTitles[this.d.view], t)
}, _addButton: function (t) {
this.$buttonsContainer.length || this._addButtonsContainer();
var i = {action: t, label: this.d.loc[t]}, a = n.template(s, i);
e("[data-action=" + t + "]", this.$buttonsContainer).length || this.$buttonsContainer.append(a)
}, _addButtonsContainer: function () {
this.d.$datepicker.append(i), this.$buttonsContainer = e(".datepicker--buttons", this.d.$datepicker)
}, setNavStatus: function () {
if ((this.opts.minDate || this.opts.maxDate) && this.opts.disableNavWhenOutOfRange) {
var t = this.d.parsedDate, e = t.month, i = t.year, s = t.date;
switch (this.d.view) {
case"days":
this.d._isInRange(new Date(i, e - 1, s), "month") || this._disableNav("prev"), this.d._isInRange(new Date(i, e + 1, s), "month") || this._disableNav("next");
break;
case"months":
this.d._isInRange(new Date(i - 1, e, s), "year") || this._disableNav("prev"), this.d._isInRange(new Date(i + 1, e, s), "year") || this._disableNav("next");
break;
case"years":
this.d._isInRange(new Date(i - 10, e, s), "year") || this._disableNav("prev"), this.d._isInRange(new Date(i + 10, e, s), "year") || this._disableNav("next")
}
}
}, _disableNav: function (t) {
e('[data-action="' + t + '"]', this.d.$nav).addClass("-disabled-")
}, _activateNav: function (t) {
e('[data-action="' + t + '"]', this.d.$nav).removeClass("-disabled-")
}, _onClickNavButton: function (t) {
var i = e(t.target).closest("[data-action]"), s = i.data("action");
this.d[s]()
}, _onClickNavTitle: function (t) {
return e(t.target).hasClass("-disabled-") ? void 0 : "days" == this.d.view ? this.d.view = "months" : void(this.d.view = "years")
}
}
}(), function () {
var t = '
#{hourValue} : #{minValue}
', i = e.fn.datepicker, s = i.Constructor;
i.Timepicker = function (t, e) {
this.d = t, this.opts = e, this.init()
}, i.Timepicker.prototype = {
init: function () {
var t = "input";
this._setTime(this.d.date), this._buildHTML(), navigator.userAgent.match(/trident/gi) && (t = "change"), this.d.$el.on("selectDate", this._onSelectDate.bind(this)), this.$ranges.on(t, this._onChangeRange.bind(this)), this.$ranges.on("mouseup", this._onMouseUpRange.bind(this)), this.$ranges.on("mousemove focus ", this._onMouseEnterRange.bind(this)), this.$ranges.on("mouseout blur", this._onMouseOutRange.bind(this))
}, _setTime: function (t) {
var e = s.getParsedDate(t);
this._handleDate(t), this.hours = e.hours < this.minHours ? this.minHours : e.hours, this.minutes = e.minutes < this.minMinutes ? this.minMinutes : e.minutes
}, _setMinTimeFromDate: function (t) {
this.minHours = t.getHours(), this.minMinutes = t.getMinutes()
}, _setMaxTimeFromDate: function (t) {
this.maxHours = t.getHours(), this.maxMinutes = t.getMinutes()
}, _setDefaultMinMaxTime: function () {
var t = 23, e = 59, i = this.opts;
this.minHours = i.minHours < 0 || i.minHours > t ? 0 : i.minHours, this.minMinutes = i.minMinutes < 0 || i.minMinutes > e ? 0 : i.minMinutes, this.maxHours = i.maxHours < 0 || i.maxHours > t ? t : i.maxHours, this.maxMinutes = i.maxMinutes < 0 || i.maxMinutes > e ? e : i.maxMinutes
}, _validateHoursMinutes: function (t) {
this.hours < this.minHours ? this.hours = this.minHours : this.hours > this.maxHours && (this.hours = this.maxHours), this.minutes < this.minMinutes ? this.minutes = this.minMinutes : this.minutes > this.maxMinutes && (this.minutes = this.maxMinutes)
}, _buildHTML: function () {
var i = s.getLeadingZeroNum, a = {
hourMin: this.minHours,
hourMax: i(this.maxHours),
hourStep: this.opts.hoursStep,
hourValue: i(this.displayHours),
minMin: this.minMinutes,
minMax: i(this.maxMinutes),
minStep: this.opts.minutesStep,
minValue: i(this.minutes)
}, n = s.template(t, a);
this.$timepicker = e(n).appendTo(this.d.$datepicker), this.$ranges = e('[type="range"]', this.$timepicker), this.$hours = e('[name="hours"]', this.$timepicker),
this.$minutes = e('[name="minutes"]', this.$timepicker), this.$hoursText = e(".datepicker--time-current-hours", this.$timepicker), this.$minutesText = e(".datepicker--time-current-minutes", this.$timepicker), this.d.ampm && (this.$ampm = e('
').appendTo(e(".datepicker--time-current", this.$timepicker)).html(this.dayPeriod), this.$timepicker.addClass("-am-pm-"))
}, _updateCurrentTime: function () {
var t = s.getLeadingZeroNum(this.displayHours), e = s.getLeadingZeroNum(this.minutes);
this.$hoursText.html(t), this.$minutesText.html(e), this.d.ampm && this.$ampm.html(this.dayPeriod)
}, _updateRanges: function () {
this.$hours.attr({
min: this.minHours,
max: this.maxHours
}).val(this.hours), this.$minutes.attr({min: this.minMinutes, max: this.maxMinutes}).val(this.minutes)
}, _handleDate: function (t) {
this._setDefaultMinMaxTime(), t && (s.isSame(t, this.d.opts.minDate) ? this._setMinTimeFromDate(this.d.opts.minDate) : s.isSame(t, this.d.opts.maxDate) && this._setMaxTimeFromDate(this.d.opts.maxDate)), this._validateHoursMinutes(t)
}, update: function () {
this._updateRanges(), this._updateCurrentTime()
}, _getValidHoursFromDate: function (t) {
var e = t, i = t;
t instanceof Date && (e = s.getParsedDate(t), i = e.hours);
var a = this.d.ampm, n = "am";
if (a)switch (!0) {
case 0 == i:
i = 12;
break;
case 12 == i:
n = "pm";
break;
case i > 11:
i -= 12, n = "pm"
}
return {hours: i, dayPeriod: n}
}, set hours(t) {
this._hours = t;
var e = this._getValidHoursFromDate(t);
this.displayHours = e.hours, this.dayPeriod = e.dayPeriod
}, get hours() {
return this._hours
}, _onChangeRange: function (t) {
var i = e(t.target), s = i.attr("name");
this.d.timepickerIsActive = !0, this[s] = i.val(), this._updateCurrentTime(), this.d._trigger("timeChange", [this.hours, this.minutes])
}, _onSelectDate: function (t, e) {
this._handleDate(e), this.update()
}, _onMouseEnterRange: function (t) {
var i = e(t.target).attr("name");
e(".datepicker--time-current-" + i, this.$timepicker).addClass("-focus-")
}, _onMouseOutRange: function (t) {
var i = e(t.target).attr("name");
this.d.inFocus || e(".datepicker--time-current-" + i, this.$timepicker).removeClass("-focus-")
}, _onMouseUpRange: function (t) {
this.d.timepickerIsActive = !1
}
}
}()
}(window, jQuery);
;(function ($) {
$.fn.datepicker.language['en'] = {
days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
today: 'Today',
clear: 'Clear',
dateFormat: 'mm/dd/yyyy',
timeFormat: 'hh:ii aa',
firstDay: 0
};
})(jQuery);
$('input.md_vc_datepicker').datepicker({
language: 'en',
minDate: new Date()
});
function base64EncodeUnicode(str) {
return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {
return String.fromCharCode('0x' + p1);
}));
};
function base64DecodeUnicode(str) {
return decodeURIComponent(Array.prototype.map.call(atob(str), function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
$(function () {
$('.to-base64').each(function () {
$(this).val(base64DecodeUnicode($(this).siblings('input[type="hidden"],textarea.mBuilder-hidden').val().replace(/pixflow_base64/g, '')));
});
});
$('.to-base64').keyup(function () {
var value = $(this).val();
value = base64EncodeUnicode(value);
$(this).siblings('input[type="hidden"],textarea.mBuilder-hidden').val('pixflow_base64' + value);
});
var pixflow_increase_value = function ( $el ){
var $input_el = $el.closest('.param-md-vc-slider').find('.md_vc_number');
var input_info = {
current_value : parseFloat( $input_el.val() ) ,
min : parseFloat( $input_el.attr('data-min') ) ,
max : parseFloat( $input_el.attr('data-max') ) ,
step : parseFloat( $input_el.attr('data-step') ) ,
}
var real_value = input_info.current_value + input_info.step ;
if ( isNaN( input_info.current_value ) || real_value > input_info.max ){
return ;
}
if ( parseInt( real_value ) != real_value ){
$input_el.val( real_value.toFixed(1) );
return ;
}
$input_el.val( real_value );
}
var pixflow_reduce_value = function ( $el ){
var $input_el = $el.closest('.param-md-vc-slider').find('.md_vc_number');
var input_info = {
current_value : parseFloat( $input_el.val() ) ,
min : parseFloat( $input_el.attr('data-min') ) ,
max : parseFloat( $input_el.attr('data-max') ) ,
step : parseFloat( $input_el.attr('data-step') ) ,
}
var real_value = input_info.current_value - input_info.step ;
if ( isNaN( input_info.current_value ) || real_value < input_info.min ){
return ;
}
if ( parseInt( real_value ) != real_value ){
$input_el.val( real_value.toFixed(1) );
return ;
}
$input_el.val( real_value );
}
var interval;
$('.md-increament-controller span').on('mousedown',function(e) {
var that = $(this);
interval = setInterval(function() {
var action = that.attr('data-action');
if( action == 'plus' ){
pixflow_increase_value( that );
}else{
pixflow_reduce_value( that );
}
},100);
});
$('.md-increament-controller span').on('mouseup',function(e) {
clearInterval(interval);
});
$('.md-increament-controller span').on('mouseout',function(e) {
clearInterval(interval);
});
$('.md_vc_number').on( 'keypress' , function () {
return event.charCode >= 48 && event.charCode <= 57 ;
});
$('.md_vc_number').on('keyup' , function(){
var that = $(this);
setTimeout(function(){
var value = parseInt( that.val() ),
max = parseInt( that.attr('data-max') ) ,
min = parseInt( that.attr('data-min') ) ;
if( value > max ){
that.val(max);
}
if( value < min ){
that.val(min);
}
} , 500 );
});
var tinymce_string = function () {
var font_string = '',
count;
for (count = 1; count <= 100; count++) {
font_string += count + 'px ';
}
return font_string.trim();
};
setTimeout(function () {
if ( $('body').hasClass('pixflow-builder') ){
try {
tinymce.EditorManager.execCommand('mceRemoveEditor', true, 'wpb_tinymce_content');
} catch (e) {}
tinymce.EditorManager.execCommand('mceRemoveEditor', true, 'content');
}
try {
tinymce.EditorManager.execCommand('mceRemoveEditor', true, 'md_text_title1_text');
} catch (e) {}
tinymce.init({
selector: '.tinymce-editor input[type="text"]',
content_style: "body {background:#fbfbfb!important}",
theme_advanced_toolbar_location: "top",
forced_root_block: 'div',
force_p_newlines: false,
theme_advanced_resizing: false,
theme_advanced_resizing_use_cookie: false,
force_br_newlines: false,
toolbar_items_size: 'small',
tabfocus_elements: ":next",
block_formats: 'Header 1=h1;Header 2=h2;Header 3=h3;Header 4=h4;Header 5=h5;Header 6=h6',
fontsize_formats: tinymce_string(),
toolbar: 'fontsizeselect | forecolor | styleselect | link | code | undo redo ',
menubar: false,
paste_as_text: true,
paste_preprocess: function (plugin, args) {
args.content = args.content.toString().replace(/<\/?[^>]+>/gi, '');
},
plugins: 'textcolor wordpress wplink tabfocus textcolor colorpicker paste lists code',
external_plugins: {
'code': tinyMceValues.tinymce_code_plugin_url,
},
init_instance_callback: function (editor) {
editor.on('blur', function (e) {
update_text_input(e);
});
}
});
tinymce.init({
selector: '.tinymce-content-editor textarea',
content_style: "body {background:#fbfbfb!important}",
convert_urls: false,
theme_advanced_toolbar_location: "top",
forced_root_block: 'div',
force_p_newlines: false,
theme_advanced_resizing: false,
theme_advanced_resizing_use_cookie: false,
force_br_newlines: false,
menubar: false,
toolbar_items_size: 'small',
tabfocus_elements: ":next",
block_formats: 'Header 1=h1;Header 2=h2;Header 3=h3;Header 4=h4;Header 5=h5;Header 6=h6',
fontsize_formats: tinymce_string(),
toolbar: 'fontsizeselect | forecolor | styleselect | bullist numlist | link image | code | undo redo ',
paste_as_text: true,
paste_preprocess: function (plugin, args) {
args.content = args.content.toString().replace(/<\/?[^>]+>/gi, '');
},
plugins: 'textcolor wordpress wplink tabfocus image textcolor colorpicker paste lists code',
external_plugins: {
'code': tinyMceValues.tinymce_code_plugin_url,
},
});
}, 300);
change_font_event();
function change_font_event() {
// Title font change
$('div[data-vc-shortcode-param-name="md_text_title_google_fonts"] .vc_google_fonts_form_field-font_family-select,' +
' div[data-vc-shortcode-param-name="md_text_title_google_fonts"] .vc_google_fonts_form_field-font_style-select,' +
'.google-fonts-families[data-input="md_text_title_google_fonts"],' +
'.google-fonts-styles[data-input="md_text_title_google_fonts"]').change(function (e) {
if (typeof e.originalEvent != 'undefined') {
var content = tinymce.get('md_text_title1_text').getContent();
pixflow_remove_fonts('md_text_title1_text', content);
}
});
// Description font change
$('div[data-vc-shortcode-param-name="md_text_desc_google_fonts"] .vc_google_fonts_form_field-font_family-select,' +
' div[data-vc-shortcode-param-name="md_text_desc_google_fonts"] .vc_google_fonts_form_field-font_style-select,' +
'.google-fonts-families[data-input="md_text_desc_google_fonts"],' +
'.google-fonts-styles[data-input="md_text_desc_google_fonts"]').change(function (e) {
if (typeof e.originalEvent != 'undefined') {
if (tinymce.get('wpb_tinymce_content') != null) {
var tinymce_id = 'wpb_tinymce_content';
} else {
var tinymce_id = 'content';
}
var content = tinymce.get(tinymce_id).getContent();
pixflow_remove_fonts(tinymce_id, content);
}
});
}
function pixflow_remove_fonts(tinymce_id, content) {
$('body').append('');
var $temp_div = $('#temp-fonts');
$temp_div.html(content);
$('#temp-fonts [style*="font-family"]').css('font-family', '');
var new_content = $temp_div.html();
tinymce.get(tinymce_id).setContent(new_content);
tinymce.get(tinymce_id).save();
$temp_div.remove();
}
function update_text_input(e) {
var target = e.target || e.srcElement;
tinyMCE.triggerSave();
var $el = $(target.targetElm);
if ($el.hasClass('textarea_html')) {
$el.parent().parent().siblings('input[type=hidden]').val("" + $el.val() + "
");
} else {
$(target.targetElm).trigger('keyup');
}
}