diff --git a/media/system/js/fields/calendar.js b/media/system/js/fields/calendar.js
index 6adf6b9faf74b..26c99eb99956e 100644
--- a/media/system/js/fields/calendar.js
+++ b/media/system/js/fields/calendar.js
@@ -17,7 +17,7 @@
return str;
};
- /** Traslates to english numbers a string. */
+ /** Translates to english numbers a string. */
Date.toEnglish = function(str) {
str = this.toString();
var nums = [0,1,2,3,4,5,6,7,8,9];
@@ -67,7 +67,7 @@
instanceParams = {
inputField : this.inputField,
dateType : JoomlaCalLocale.dateType ? JoomlaCalLocale.dateType : 'gregorian',
- direction : (document.dir != undefined) ? document.dir : document.getElementsByTagName("html")[0].getAttribute("dir"),
+ direction : (document.dir !== undefined) ? document.dir : document.getElementsByTagName("html")[0].getAttribute("dir"),
firstDayOfWeek : btn.getAttribute("data-firstday") ? parseInt(btn.getAttribute("data-firstday")) : 0,
dateFormat : "%Y-%m-%d %H:%M:%S",
weekend : JoomlaCalLocale.weekend ? JoomlaCalLocale.weekend : [0,6],
@@ -146,7 +146,7 @@
// Get the date from the input
var inputAltValueDate = Date.parseFieldDate(this.inputField.getAttribute('data-alt-value'), this.params.dateFormat, 'gregorian');
- if (this.inputField.value.length) {
+ if (this.inputField.value !== '') {
this.date = inputAltValueDate;
this.inputField.value = inputAltValueDate.print(this.params.dateFormat, this.params.dateType, true);
} else {
@@ -177,7 +177,7 @@
if (!self.params.time24) {
if (/pm/i.test(ampm.value) && hours < 12) {
hours = parseInt(hours) + 12;
- } else if (/am/i.test(ampm.value) && hours == 12) {
+ } else if (/am/i.test(ampm.value) && hours === 12) {
hours = 0;
}
}
@@ -223,22 +223,21 @@
/** Method to set the value for the input field */
JoomlaCalendar.prototype.callHandler = function () {
/** Output the date **/
- if (this.params.dateType == 'gregorian') {
- this.inputField.setAttribute('data-alt-value', this.date.print(this.params.dateFormat, this.params.dateType, false));
- if (this.inputField.getAttribute('data-alt-value') && this.inputField.getAttribute('data-alt-value') != '0000-00-00 00:00:00') {
- this.inputField.value = this.date.print(this.params.dateFormat, this.params.dateType, true);
- }
- } else {
- this.inputField.setAttribute('data-alt-value', this.date.print(this.params.dateFormat, 'gregorian', false));
- this.inputField.setAttribute('data-local-value', this.date.print(this.params.dateFormat, this.params.dateType, false));
+ this.inputField.setAttribute('data-alt-value', this.date.print(this.params.dateFormat, 'gregorian', false));
+
+ if (this.inputField.getAttribute('data-alt-value') && this.inputField.getAttribute('data-alt-value') !== '0000-00-00 00:00:00') {
this.inputField.value = this.date.print(this.params.dateFormat, this.params.dateType, true);
+ if (this.params.dateType !== 'gregorian') {
+ this.inputField.setAttribute('data-local-value', this.date.print(this.params.dateFormat, this.params.dateType, true));
+ }
}
+ this.inputField.value = this.date.print(this.params.dateFormat, this.params.dateType, true);
if (typeof this.inputField.onchange == "function") {
this.inputField.onchange();
}
- if (this.dateClicked && typeof this.params.onUpdate == "function") {
+ if (this.dateClicked && typeof this.params.onUpdate === "function") {
this.params.onUpdate(this);
}
@@ -258,10 +257,10 @@
/** Method to show the calendar. */
JoomlaCalendar.prototype.show = function () {
/** This is needed for IE8 */
- if (navigator.appName.indexOf("Internet Explorer")!=-1) {
+ if (navigator.appName.indexOf("Internet Explorer")!==-1) {
var badBrowser = (
- navigator.appVersion.indexOf("MSIE 9")==-1 &&
- navigator.appVersion.indexOf("MSIE 1")==-1
+ navigator.appVersion.indexOf("MSIE 9")===-1 &&
+ navigator.appVersion.indexOf("MSIE 1")===-1
);
if (badBrowser) {
@@ -276,15 +275,6 @@
this.checkInputs();
this.inputField.focus();
- var rows = this.table.getElementsByTagName("tr");
- for (var i = rows.length; i > 0;) {
- var row = rows[--i];
- var cells = row.getElementsByTagName("td");
- for (var j = cells.length; j > 0;) {
- var cell = cells[--j];
- }
- }
-
this.dropdownElement.style.display = "block";
this.hidden = false;
@@ -332,7 +322,8 @@
var self = this,
el = ev.currentTarget,
target = ev.target || ev.srcElement;
- if (ev.srcElement && ev.srcElement.hasAttribute('data-action')) {
+
+ if (target && target.hasAttribute('data-action')) {
return;
}
@@ -356,22 +347,22 @@
return false;
}
- if (typeof el.navtype === "undefined" || el.navtype != 300) {
- if (el.navtype == 50) { el._current = el.innerHTML; }
+ if (typeof el.navtype === "undefined" || el.navtype !== 300) {
+ if (el.navtype === 50) { el._current = el.innerHTML; }
- if (target == el || target.parentNode == el) { self.cellClick(el, ev); }
+ if (target === el || target.parentNode === el) { self.cellClick(el, ev); }
var mon = null;
- if (typeof el.month != "undefined") {
+ if (typeof el.month !== "undefined") {
mon = el;
}
- if (typeof el.parentNode.month != "undefined") {
+ if (typeof el.parentNode.month !== "undefined") {
mon = el.parentNode;
}
var date = null;
if (mon) {
date = new Date(self.date);
- if (mon.month != date.getLocalMonth(self.params.dateType)) {
+ if (mon.month !== date.getLocalMonth(self.params.dateType)) {
date.setLocalMonth(self.params.dateType, mon.month);
self.setDate(date);
self.dateClicked = false;
@@ -379,15 +370,15 @@
}
} else {
var year = null;
- if (typeof el.year != "undefined") {
+ if (typeof el.year !== "undefined") {
year = target;
}
- if (typeof el.parentNode.year != "undefined") {
+ if (typeof el.parentNode.year !== "undefined") {
year = target.parentNode;
}
if (year) {
date = new Date(self.date);
- if (year.year != date.getLocalFullYear(self.params.dateType)) {
+ if (year.year !== date.getLocalFullYear(self.params.dateType)) {
date.setFullYear(self.params.dateType, year.year);
self.setDate(date);
self.dateClicked = false;
@@ -407,17 +398,16 @@
newdate = false,
date = null;
- if (typeof el.navtype == "undefined") {
+ if (typeof el.navtype === "undefined") {
if (self.currentDateEl) {
el.classList.add("selected");
self.currentDateEl = el.caldate;
- closing = (self.currentDateEl == el.caldate);
+ closing = (self.currentDateEl === el.caldate);
if (!closing) {
self.currentDateEl = el.caldate;
}
}
self.date.setLocalDateOnly('gregorian', el.caldate);
- date = self.date;
var other_month = !(self.dateClicked = !el.otherMonth);
if (self.currentDateEl) { newdate = !el.disabled; }
if (other_month) {
@@ -484,7 +474,7 @@
if (!date.equalsTo(self.date)) {
this.setDate(date);
newdate = true;
- } else if (el.navtype == 0) {
+ } else if (el.navtype === 0) {
newdate = closing = true;
}
}
@@ -507,42 +497,31 @@
/** Method to handle keyboard click events **/
JoomlaCalendar.prototype._handleCalKeyEvent = function (ev) {
var self = this,
- K = parseInt(ev.keyCode);
+ K = ev.keyCode;
// Get value from input
- if (ev.target === this.inputField && (K === 13 || K === 9) && !ev.shiftKey) {
- if (this.inputField.value != '') {
- self.date = Date.parseFieldDate(this.inputField.value, self.params.dateFormat, self.params.dateType);
- this.processCalendar(self.params.firstDayOfWeek, self.date);
- this.cellClick(self.currentDateEl, ev);
- } else {
- this.inputField.value = '';
- this.inputField.setAttribute('value', '');
- this.inputField.setAttribute('data-alt-value', '0000-00-00 00:00:00');
- }
+ if (ev.target === this.inputField && (K === 13 || K === 9)) {
this.close();
}
- if (self.params.direction == 'rtl') {
- if (K == 37) {
+ if (self.params.direction === 'rtl') {
+ if (K === 37) {
K = 39;
- } else if (K == 39) {
+ } else if (K === 39) {
K = 37;
}
}
- if (ev.shiftKey && K === 32) { // KEY Shift + space (now)
- this.cellClick(self._nav_now, ev);
+ if (K === 32) { // KEY Shift + space (now)
+ if (ev.shiftKey) {
+ ev.preventDefault();
+ this.cellClick(self._nav_now, ev);
+ self.close();
+ }
}
if (K === 27) { // KEY esc (close);
this.close();
}
- if (ev.shiftKey && K === 13) { // KEY enter (select and close)
- if (this.params.showsTime) {
- this.dateClicked = false;
- }
- this.cellClick(self.currentDateEl, ev);
- }
if (K === 38) { // KEY up (previous week)
this.moveCursorBy(7);
}
@@ -555,12 +534,12 @@
if (K === 39) { // KEY right (next day)
this.moveCursorBy( -1);
}
- if (ev.target === this.inputField && !(K>48 || K<57 || K===186 || K===189 || K===190 || K === 32)) {
+ if (ev.target === this.inputField && !(K>48 || K<57 || K===186 || K===189 || K===190 || K===32)) {
return stopCalEvent(ev);
}
};
- /** Method to create the html stracture of the calendar */
+ /** Method to create the html structure of the calendar */
JoomlaCalendar.prototype._create = function () {
var self = this,
parent = this.element,
@@ -617,7 +596,7 @@
for (var key in dataAttr) {
cell.setAttribute(key, dataAttr[key]);
}
- if (navtype != 0 && Math.abs(navtype) <= 2) {
+ if (navtype !== 0 && Math.abs(navtype) <= 2) {
cell.className += " nav";
}
@@ -627,7 +606,7 @@
cell.calendar = cal;
cell.navtype = navtype;
- if (navtype != 0 && Math.abs(navtype) <= 2) {
+ if (navtype !== 0 && Math.abs(navtype) <= 2) {
cell.innerHTML = "" + text + "";
} else {
cell.innerHTML = cs ? "
" + text + "
" : text;
@@ -682,7 +661,7 @@
cell.calendar = self;
cell.fdow = realday;
}
- if (weekend.indexOf(weekend) != -1) {
+ if (weekend.indexOf(weekend) !== -1) {
cell.classList.add("weekend");
}
@@ -734,7 +713,7 @@
part._range = [];
for (var i = range_start; i <= range_end; ++i) {
var txt, selAttr = '';
- if (i == selected) {
+ if (i === selected) {
selAttr = true;
}
if (i < 10 && range_end >= 10) {
@@ -804,29 +783,31 @@
row = createElement("div", this.wrapper);
row.className = "buttons-wrapper btn-group";
+ this._nav_save = hh(JoomlaCalLocale.save, '', 100, 'button', '', 'js-btn btn btn-clear', {"data-action": "clear"});
+
+ if (!this.inputField.hasAttribute('required')) {
+ var savea = row.querySelector('[data-action="clear"]');
+ savea.addEventListener("click", function (e) {
+ e.preventDefault();
+ var days = self.table.querySelectorAll('td');
+ for (var i = 0; i < days.length; i++) {
+ if (days[i].classList.contains('selected')) {
+ days[i].classList.remove('selected');
+ break;
+ }
+ }
+ self.inputField.setAttribute('data-alt-value', "0000-00-00 00:00:00");
+ self.inputField.setAttribute('value', '');
+ self.inputField.value = '';
+ });
+ }
+
if (this.params.showsTodayBtn) {
- this._nav_save = hh(JoomlaCalLocale.save, '', 100, 'a', '', 'js-btn btn btn-clear', {"data-action": "clear"});
-
- if (!this.inputField.hasAttribute('required')) {
- var savea = row.querySelector('[data-action="clear"]');
- savea.addEventListener("click",
- function (e) {
- var days = self.table.querySelectorAll('td');
- for (var i = 0; i < days.length; i++) {
- if (days[i].classList.contains('selected')) {
- days[i].classList.remove('selected');
- break;
- }
- }
- self.inputField.setAttribute('data-alt-value', "0000-00-00 00:00:00");
- self.inputField.setAttribute('value', '');
- self.inputField.value = '';
- });
- }
+ this._nav_now = hh(JoomlaCalLocale.today, '', 0, 'button', '', 'js-btn btn btn-today', {"data-action": "today"});
- this._nav_now = hh(JoomlaCalLocale.today, '', 0, 'a', '', 'js-btn btn btn-today', {"data-action": "today"});
- var todaya = row.querySelector('[data-action="today"]');
- todaya.addEventListener('click', function () {
+ var todaya = this.wrapper.querySelector('[data-action="today"]');
+ todaya.addEventListener('click', function (e) {
+ e.preventDefault();
self.date.setLocalDateOnly('gregorian', new Date()); // TODAY
self.dateClicked = true;
self.callHandler();
@@ -834,9 +815,29 @@
});
}
- this._nav_exit = hh(JoomlaCalLocale.exit, '', 999, 'a', '', 'js-btn btn btn-exit', {"data-action": "exit"});
- var exita = row.querySelector('[data-action="exit"]');
- exita.addEventListener('click', function () { self.close(); });
+ this._nav_exit = hh(JoomlaCalLocale.exit, '', 999, 'button', '', 'js-btn btn btn-exit', {"data-action": "exit"});
+ var exita = this.wrapper.querySelector('[data-action="exit"]');
+ exita.addEventListener('click', function (e) {
+ e.preventDefault();
+ if (!self.dateClicked) {
+ if (self.inputField.value) {
+ if (self.params.dateType !== 'gregorian') {
+ self.inputField.setAttribute('data-local-value', self.inputField.value);
+ }
+ if (typeof self.dateClicked === 'undefined') {
+ // value needs to be validated
+ self.inputField.setAttribute('data-alt-value', Date.parseFieldDate(self.inputField.value, self.params.dateFormat, self.params.dateType)
+ .print(self.params.dateFormat, 'gregorian', false));
+ } else {
+ self.inputField.setAttribute('data-alt-value', self.date.print(self.params.dateFormat, 'gregorian', false));
+ }
+ } else {
+ self.inputField.setAttribute('data-alt-value', '0000-00-00 00:00:00');
+ }
+ self.date = Date.parseFieldDate(self.inputField.getAttribute('data-alt-value'), self.params.dateFormat, self.params.dateType);
+ }
+ self.close();
+ });
this.processCalendar();
};
@@ -908,7 +909,7 @@
var wday = date.getLocalDay(this.params.dateType);
cell.pos = i << 4 | j;
dpos[j] = cell;
- var current_month = (date.getLocalMonth(this.params.dateType) == month);
+ var current_month = (date.getLocalMonth(this.params.dateType) === month);
if (!current_month) {
if (this.params.showsOthers) {
cell.className += " disabled othermonth ";
@@ -925,17 +926,17 @@
cell.style.cursor = "pointer";
}
cell.disabled = false;
- cell.innerHTML = this.params.debug ? iday : Date.convertNumbers(iday); // translated day number for each cell
+ cell.innerHTML = this.params.debug ? iday : Date.convertNumbers(iday); // translated day number for each cell
if (!cell.disabled) {
cell.caldate = new Date(date);
- if (current_month && iday == mday) {
+ if (current_month && iday === mday) {
cell.className += " selected";
this.currentDateEl = cell;
}
- if (date.getLocalFullYear(this.params.dateType) == TY && date.getLocalMonth(this.params.dateType) == TM && iday == TD) {
+ if (date.getLocalFullYear(this.params.dateType) === TY && date.getLocalMonth(this.params.dateType) === TM && iday === TD) {
cell.className += " today";
}
- if (weekend.indexOf(wday) != -1)
+ if (weekend.indexOf(wday) !== -1)
cell.className += " weekend";
}
}
@@ -995,19 +996,32 @@
JoomlaCalendar.prototype._bindEvents = function () {
var self = this;
this.inputField.addEventListener('blur', function(event) {
- var elem = event.target;
- while (elem.parentNode) {
- elem = elem.parentNode;
- if (elem.classList.contains('field-calendar')) {
- if (event.target.value) {
- event.target.setAttribute('data-alt-value', event.target.value);
+ var calObj = JoomlaCalendar.getCalObject(this)._joomlaCalendar;
+
+ // If calendar is open we will handle the event elsewhere
+ if (calObj.dropdownElement.style.display === 'block') {
+ event.preventDefault();
+ return;
+ }
+
+ if (calObj) {
+ if (calObj.inputField.value) {
+ if (calObj.params.dateType !== 'gregorian') {
+ calObj.inputField.setAttribute('data-local-value', calObj.inputField.value);
+ }
+ if (typeof calObj.dateClicked === 'undefined') {
+ // value needs to be validated
+ calObj.inputField.setAttribute('data-alt-value', Date.parseFieldDate(calObj.inputField.value, calObj.params.dateFormat, calObj.params.dateType)
+ .print(calObj.params.dateFormat, 'gregorian', false));
} else {
- event.target.setAttribute('data-alt-value', '0000-00-00 00:00:00');
+ calObj.inputField.setAttribute('data-alt-value', calObj.date.print(calObj.params.dateFormat, 'gregorian', false));
}
- elem._joomlaCalendar.checkInputs();
- return;
+ } else {
+ calObj.inputField.setAttribute('data-alt-value', '0000-00-00 00:00:00');
}
+ calObj.date = Date.parseFieldDate(calObj.inputField.getAttribute('data-alt-value'), calObj.params.dateFormat, calObj.params.dateType);
}
+
self.close();
}, true);
this.button.addEventListener('click', function() {
@@ -1017,7 +1031,7 @@
/** Helpers **/
var stopCalEvent = function (ev) { ev || (ev = window.event); ev.preventDefault(); ev.stopPropagation(); return false; };
- var createElement = function (type, parent) { var el = null; el = document.createElement(type); if (typeof parent != "undefined") { parent.appendChild(el); } return el; };
+ var createElement = function (type, parent) { var el = null; el = document.createElement(type); if (typeof parent !== "undefined") { parent.appendChild(el); } return el; };
var isInt = function (input) { return !isNaN(input) && (function(x) { return (x | 0) === x; })(parseFloat(input)) };
var getBoundary = function (input, type) { var date = new Date(); var y = date.getLocalFullYear(type); return y + input; };
/**
@@ -1060,11 +1074,21 @@
/** Method to change input values with the data-alt-value values. **/
JoomlaCalendar.prototype.setAltValue = function() {
var input = this.inputField;
+ if (input.getAttribute('disabled')) return;
+ input.value = input.getAttribute('data-alt-value') ? input.getAttribute('data-alt-value') : '';
+ };
- if (input.getAttribute("data-alt-value")) {
- input.value = input.getAttribute('data-alt-value');
- } else {
- input.value = '';
+ /** Method to change the inputs before submit. **/
+ JoomlaCalendar.onSubmit = function() {
+ var elements = document.querySelectorAll(".field-calendar");
+
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i],
+ instance = element._joomlaCalendar;
+
+ if (instance) {
+ instance.setAltValue();
+ }
}
};
@@ -1104,21 +1128,8 @@
instance.recreate();
}
- var onSubmit = function () {
- var elements = (container || document).querySelectorAll(".field-calendar");
-
- for (var i = 0; i < elements.length; i++) {
- var element = elements[i],
- instance = element._joomlaCalendar;
-
- if (instance) {
- instance.setAltValue();
- }
- }
- };
-
- if (element && element.getElementsByTagName('input')[0] && element.getElementsByTagName('input')[0].form) {
- element.getElementsByTagName('input')[0].form.addEventListener('submit', onSubmit);
+ if (element && element.getElementsByTagName('input')[0] && element.getElementsByTagName('input')[0].form && !element.getElementsByTagName('input')[0].disabled) {
+ element.getElementsByTagName('input')[0].form.addEventListener('submit', JoomlaCalendar.onSubmit);
}
};
diff --git a/media/system/js/fields/calendar.min.js b/media/system/js/fields/calendar.min.js
index ea441ad7a7799..e9e11bb695558 100644
--- a/media/system/js/fields/calendar.min.js
+++ b/media/system/js/fields/calendar.min.js
@@ -1 +1 @@
-!function(window,document){"use strict";Date.convertNumbers=function(str){var str=str.toString();if(Object.prototype.toString.call(JoomlaCalLocale.localLangNumbers)==="[object Array]"){for(var i=0;i0;){var row=rows[--i];var cells=row.getElementsByTagName("td");for(var j=cells.length;j>0;){var cell=cells[--j]}}this.dropdownElement.style.display="block";this.hidden=false;document.addEventListener("keydown",this._calKeyEvent,true);document.addEventListener("keypress",this._calKeyEvent,true);document.addEventListener("mousedown",this._documentClick,true);var containerTmp=this.element.querySelector(".js-calendar");if(window.innerHeight+window.scrollYself.params.minYear){date.setOtherFullYear(self.params.dateType,year-1)}}break;case-1:var day=date.getLocalDate(self.params.dateType);if(mon>0){var max=date.getLocalMonthDays(self.params.dateType,mon-1);if(day>max){date.setLocalDate(self.params.dateType,max)}date.setLocalMonth(self.params.dateType,mon-1)}else if(year-->self.params.minYear){date.setOtherFullYear(self.params.dateType,year);var max=date.getLocalMonthDays(self.params.dateType,11);if(day>max){date.setLocalDate(self.params.dateType,max)}date.setLocalMonth(self.params.dateType,11)}break;case 1:var day=date.getLocalDate(self.params.dateType);if(mon<11){var max=date.getLocalMonthDays(self.params.dateType,mon+1);if(day>max){date.setLocalDate(self.params.dateType,max)}date.setLocalMonth(self.params.dateType,mon+1)}else if(yearmax){date.setLocalDate(self.params.dateType,max)}date.setLocalMonth(self.params.dateType,0)}break;case 2:if(!self.params.compressedHeader)if(year48||K<57||K===186||K===189||K===190||K===32)){return stopCalEvent(ev)}};JoomlaCalendar.prototype._create=function(){var self=this,parent=this.element,table=createElement("table"),div=createElement("div");this.table=table;table.className="table";table.cellSpacing=0;table.cellPadding=0;table.style.marginBottom=0;this.dropdownElement=div;parent.appendChild(div);if(this.params.direction){div.style.direction=this.params.direction}div.className="js-calendar";div.style.position="absolute";div.style.boxShadow="0px 0px 70px 0px rgba(0,0,0,0.67)";div.style.minWidth=this.inputField.width;div.style.padding="0";div.style.display="none";div.style.left="auto";div.style.top="auto";div.style.zIndex=1060;div.style.borderRadius="20px";this.wrapper=createElement("div");this.wrapper.className="calendar-container";div.appendChild(this.wrapper);this.wrapper.appendChild(table);var thead=createElement("thead",table);thead.className="calendar-header";var cell=null,row=null,cal=this,hh=function(text,cs,navtype,node,styles,classes,dataAttr){node=node?node:"td";styles=styles?styles:{};cell=createElement(node,row);if(cs){classes=classes?'class="'+classes+'"':"";cell.colSpan=cs}for(var key in styles){cell.style[key]=styles[key]}for(var key in dataAttr){cell.setAttribute(key,dataAttr[key])}if(navtype!=0&&Math.abs(navtype)<=2){cell.className+=" nav"}if(cs){cell.addEventListener("mousedown",self._dayMouseDown,true)}cell.calendar=cal;cell.navtype=navtype;if(navtype!=0&&Math.abs(navtype)<=2){cell.innerHTML=""+text+""}else{cell.innerHTML=cs?""+text+"
":text;if(!cs&&classes){cell.className=classes}}return cell};if(this.params.compressedHeader===false){row=createElement("tr",thead);row.className="calendar-head-row";this._nav_py=hh("‹",1,-2,"",{"text-align":"center","font-size":"18px","line-height":"18px"},"js-btn btn-prev-year");this.title=hh('
',this.params.weekNumbers?6:5,300);this.title.className="title";this._nav_ny=hh(" ›",1,2,"",{"text-align":"center","font-size":"18px","line-height":"18px"},"js-btn btn-next-year")}row=createElement("tr",thead);row.className="calendar-head-row";this._nav_pm=hh("‹",1,-1,"",{"text-align":"center","font-size":"2em","line-height":"1em"},"js-btn btn-prev-month");this._nav_month=hh('
',this.params.weekNumbers?6:5,888,"td",{textAlign:"center"});this._nav_month.className="title";this._nav_nm=hh(" ›",1,1,"",{"text-align":"center","font-size":"2em","line-height":"1em"},"js-btn btn-next-month");row=createElement("tr",thead);row.className=self.params.weekNumbers?"daynames wk":"daynames";if(this.params.weekNumbers){cell=createElement("td",row);cell.className="day-name wn";cell.innerHTML=JoomlaCalLocale.wk}for(var i=7;i>0;--i){cell=createElement("td",row);if(!i){cell.calendar=self}}this.firstdayname=this.params.weekNumbers?row.firstChild.nextSibling:row.firstChild;var fdow=this.params.firstDayOfWeek,cell=this.firstdayname,weekend=JoomlaCalLocale.weekend;for(var i=0;i<7;++i){var realday=(i+fdow)%7;cell.classList.add("day-name");this.params.weekNumbers?cell.classList.add("day-name-week"):"";if(i){cell.calendar=self;cell.fdow=realday}if(weekend.indexOf(weekend)!=-1){cell.classList.add("weekend")}cell.innerHTML=JoomlaCalLocale.shortDays[(i+fdow)%7];cell=cell.nextSibling}var tbody=createElement("tbody",table);this.tbody=tbody;for(i=6;i>0;--i){row=createElement("tr",tbody);if(this.params.weekNumbers){cell=createElement("td",row)}for(var j=7;j>0;--j){cell=createElement("td",row);cell.calendar=this;cell.addEventListener("mousedown",this._dayMouseDown,true)}}if(this.params.showsTime){row=createElement("tr",tbody);row.className="time";cell=createElement("td",row);cell.className="time time-title";cell.colSpan=1;cell.style.verticalAlign="middle";cell.innerHTML=" ";var cell1=createElement("td",row);cell1.className="time hours-select";cell1.colSpan=2;var cell2=createElement("td",row);cell2.className="time minutes-select";cell2.colSpan=2;(function(){function makeTimePart(className,selected,range_start,range_end,cellTml){var part=createElement("select",cellTml),num;part.calendar=self;part.className=className;part.setAttribute("data-chosen",true);part.style.width="100%";part.navtype=50;part._range=[];for(var i=range_start;i<=range_end;++i){var txt,selAttr="";if(i==selected){selAttr=true}if(i<10&&range_end>=10){num="0"+i;txt=Date.convertNumbers("0")+Date.convertNumbers(i)}else{num=""+i;txt=""+Date.convertNumbers(i)}part.options.add(new Option(txt,num,selAttr,selAttr))}return part}var hrs=self.date.getHours(),mins=self.date.getMinutes(),t12=!self.params.time24,pm=self.date.getHours()>12;if(t12&&pm){hrs-=12}var H=makeTimePart("time time-hours",hrs,t12?1:0,t12?12:23,cell1),M=makeTimePart("time time-minutes",mins,0,59,cell2),AP=null;cell=createElement("td",row);cell.className="time ampm-select";cell.colSpan=self.params.weekNumbers?1:2;if(t12){var selAttr=true,altDate=Date.parseFieldDate(self.inputField.getAttribute("data-alt-value"),self.params.dateFormat,"gregorian");pm=altDate.getHours()>12;var part=createElement("select",cell);part.className="time-ampm";part.style.width="100%";part.options.add(new Option(JoomlaCalLocale.PM,"pm",pm?selAttr:"",pm?selAttr:""));part.options.add(new Option(JoomlaCalLocale.AM,"am",pm?"":selAttr,pm?"":selAttr));AP=part;AP.addEventListener("change",function(event){self.updateTime(event.target.parentNode.parentNode.childNodes[1].childNodes[0].value,event.target.parentNode.parentNode.childNodes[2].childNodes[0].value,event.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},false)}else{cell.innerHTML=" ";cell.colSpan=self.params.weekNumbers?3:2}H.addEventListener("change",function(event){self.updateTime(event.target.parentNode.parentNode.childNodes[1].childNodes[0].value,event.target.parentNode.parentNode.childNodes[2].childNodes[0].value,event.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},false);M.addEventListener("change",function(event){self.updateTime(event.target.parentNode.parentNode.childNodes[1].childNodes[0].value,event.target.parentNode.parentNode.childNodes[2].childNodes[0].value,event.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},false)})()}row=createElement("div",this.wrapper);row.className="buttons-wrapper btn-group";if(this.params.showsTodayBtn){this._nav_save=hh(JoomlaCalLocale.save,"",100,"a","","js-btn btn btn-clear",{"data-action":"clear"});if(!this.inputField.hasAttribute("required")){var savea=row.querySelector('[data-action="clear"]');savea.addEventListener("click",function(e){var days=self.table.querySelectorAll("td");for(var i=0;ithis.params.maxYear){year=this.params.maxYear;date.getOtherFullYear(this.params.dateType,year)}this.params.firstDayOfWeek=firstDayOfWeek;this.date=new Date(date);var month=date.getLocalMonth(this.params.dateType);var mday=date.getLocalDate(this.params.dateType);date.setLocalDate(this.params.dateType,1);var day1=(date.getLocalDay(this.params.dateType)-this.params.firstDayOfWeek)%7;if(day1<0){day1+=7}date.setLocalDate(this.params.dateType,-day1);date.setLocalDate(this.params.dateType,date.getLocalDate(this.params.dateType)+1);var row=this.tbody.firstChild,ar_days=this.ar_days=new Array,weekend=JoomlaCalLocale.weekend,monthDays=parseInt(date.getLocalWeekDays(this.params.dateType));for(var i=0;i12&&t12){hrs-=12}hrs=hrs<10?"0"+hrs:hrs;mins=mins<10?"0"+mins:mins;var hoursEl=this.table.querySelector(".time-hours"),minsEl=this.table.querySelector(".time-minutes");this.resetSelected(hoursEl);hoursEl.value=hrs;this.resetSelected(minsEl);minsEl.value=mins;if(!this.params.time24){var dateAlt=new Date(this.inputField.getAttribute("data-alt-value")),ampmEl=this.table.querySelector(".time-ampm"),hrsAlt=dateAlt.getHours();if(hrsAlt>12){this.resetSelected(ampmEl);ampmEl.value="pm"}}}if(!this.params.compressedHeader){this._nav_month.getElementsByTagName("span")[0].innerHTML=this.params.debug?month+" "+JoomlaCalLocale.months[month]:JoomlaCalLocale.months[month];this.title.getElementsByTagName("span")[0].innerHTML=this.params.debug?year+" "+Date.convertNumbers(year.toString()):Date.convertNumbers(year.toString())}else{var tmpYear=Date.convertNumbers(year.toString());this._nav_month.getElementsByTagName("span")[0].innerHTML=!this.params.monthBefore?JoomlaCalLocale.months[month]+" - "+tmpYear:tmpYear+" - "+JoomlaCalLocale.months[month]}this.table.style.visibility="visible"};JoomlaCalendar.prototype._bindEvents=function(){var self=this;this.inputField.addEventListener("blur",function(event){var elem=event.target;while(elem.parentNode){elem=elem.parentNode;if(elem.classList.contains("field-calendar")){if(event.target.value){event.target.setAttribute("data-alt-value",event.target.value)}else{event.target.setAttribute("data-alt-value","0000-00-00 00:00:00")}elem._joomlaCalendar.checkInputs();return}}self.close()},true);this.button.addEventListener("click",function(){self.show()},false)};var stopCalEvent=function(ev){ev||(ev=window.event);ev.preventDefault();ev.stopPropagation();return false};var createElement=function(type,parent){var el=null;el=document.createElement(type);if(typeof parent!="undefined"){parent.appendChild(el)}return el};var isInt=function(input){return!isNaN(input)&&function(x){return(x|0)===x}(parseFloat(input))};var getBoundary=function(input,type){var date=new Date;var y=date.getLocalFullYear(type);return y+input};if(!Array.prototype.indexOf){Array.prototype.indexOf=function(elt){var len=this.length>>>0,from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0){from+=len}for(;fromt.params.minYear&&l.setOtherFullYear(t.params.dateType,i-1);break;case-1:d=l.getLocalDate(t.params.dateType);n>0?(d>(m=l.getLocalMonthDays(t.params.dateType,n-1))&&l.setLocalDate(t.params.dateType,m),l.setLocalMonth(t.params.dateType,n-1)):i-- >t.params.minYear&&(l.setOtherFullYear(t.params.dateType,i),d>(m=l.getLocalMonthDays(t.params.dateType,11))&&l.setLocalDate(t.params.dateType,m),l.setLocalMonth(t.params.dateType,11));break;case 1:var d=l.getLocalDate(t.params.dateType);if(n<11)d>(m=l.getLocalMonthDays(t.params.dateType,n+1))&&l.setLocalDate(t.params.dateType,m),l.setLocalMonth(t.params.dateType,n+1);else if(im&&l.setLocalDate(t.params.dateType,m),l.setLocalMonth(t.params.dateType,0)}break;case 2:t.params.compressedHeader||i48||t<57||186===t||189===t||190===t||32===t))return r(e)},t.prototype._create=function(){var e=this,a=this.element,t=s("table"),r=s("div");this.table=t,t.className="table",t.cellSpacing=0,t.cellPadding=0,t.style.marginBottom=0,this.dropdownElement=r,a.appendChild(r),this.params.direction&&(r.style.direction=this.params.direction),r.className="js-calendar",r.style.position="absolute",r.style.boxShadow="0px 0px 70px 0px rgba(0,0,0,0.67)",r.style.minWidth=this.inputField.width,r.style.padding="0",r.style.display="none",r.style.left="auto",r.style.top="auto",r.style.zIndex=1060,r.style.borderRadius="20px",this.wrapper=s("div"),this.wrapper.className="calendar-container",r.appendChild(this.wrapper),this.wrapper.appendChild(t);var l=s("thead",t);l.className="calendar-header";var o=null,i=null,n=this,d=function(a,t,r,l,d,m,p){l=l||"td",d=d||{},o=s(l,i),t&&(m=m?'class="'+m+'"':"",o.colSpan=t);for(var c in d)o.style[c]=d[c];for(var c in p)o.setAttribute(c,p[c]);return 0!==r&&Math.abs(r)<=2&&(o.className+=" nav"),t&&o.addEventListener("mousedown",e._dayMouseDown,!0),o.calendar=n,o.navtype=r,0!==r&&Math.abs(r)<=2?o.innerHTML=""+a+"":(o.innerHTML=t?""+a+"
":a,!t&&m&&(o.className=m)),o};!1===this.params.compressedHeader&&((i=s("tr",l)).className="calendar-head-row",this._nav_py=d("‹",1,-2,"",{"text-align":"center","font-size":"18px","line-height":"18px"},"js-btn btn-prev-year"),this.title=d('
',this.params.weekNumbers?6:5,300),this.title.className="title",this._nav_ny=d(" ›",1,2,"",{"text-align":"center","font-size":"18px","line-height":"18px"},"js-btn btn-next-year")),(i=s("tr",l)).className="calendar-head-row",this._nav_pm=d("‹",1,-1,"",{"text-align":"center","font-size":"2em","line-height":"1em"},"js-btn btn-prev-month"),this._nav_month=d('
',this.params.weekNumbers?6:5,888,"td",{textAlign:"center"}),this._nav_month.className="title",this._nav_nm=d(" ›",1,1,"",{"text-align":"center","font-size":"2em","line-height":"1em"},"js-btn btn-next-month"),(i=s("tr",l)).className=e.params.weekNumbers?"daynames wk":"daynames",this.params.weekNumbers&&((o=s("td",i)).className="day-name wn",o.innerHTML=JoomlaCalLocale.wk);for(c=7;c>0;--c)o=s("td",i),c||(o.calendar=e);this.firstdayname=this.params.weekNumbers?i.firstChild.nextSibling:i.firstChild;for(var m=this.params.firstDayOfWeek,o=this.firstdayname,p=JoomlaCalLocale.weekend,c=0;c<7;++c){var u=(c+m)%7;o.classList.add("day-name"),this.params.weekNumbers&&o.classList.add("day-name-week"),c&&(o.calendar=e,o.fdow=u),-1!==p.indexOf(p)&&o.classList.add("weekend"),o.innerHTML=JoomlaCalLocale.shortDays[(c+m)%7],o=o.nextSibling}var h=s("tbody",t);for(this.tbody=h,c=6;c>0;--c){i=s("tr",h),this.params.weekNumbers&&(o=s("td",i));for(var y=7;y>0;--y)(o=s("td",i)).calendar=this,o.addEventListener("mousedown",this._dayMouseDown,!0)}if(this.params.showsTime){(i=s("tr",h)).className="time",(o=s("td",i)).className="time time-title",o.colSpan=1,o.style.verticalAlign="middle",o.innerHTML=" ";var v=s("td",i);v.className="time hours-select",v.colSpan=2;var g=s("td",i);g.className="time minutes-select",g.colSpan=2,function(){function a(a,t,r,l,o){var i,n=s("select",o);n.calendar=e,n.className=a,n.setAttribute("data-chosen",!0),n.style.width="100%",n.navtype=50,n._range=[];for(var d=r;d<=l;++d){var m,p="";d===t&&(p=!0),d<10&&l>=10?(i="0"+d,m=Date.convertNumbers("0")+Date.convertNumbers(d)):(i=""+d,m=""+Date.convertNumbers(d)),n.options.add(new Option(m,i,p,p))}return n}var t=e.date.getHours(),r=e.date.getMinutes(),l=!e.params.time24,n=e.date.getHours()>12;l&&n&&(t-=12);var d=a("time time-hours",t,l?1:0,l?12:23,v),m=a("time time-minutes",r,0,59,g);if(o=s("td",i),o.className="time ampm-select",o.colSpan=e.params.weekNumbers?1:2,l){n=Date.parseFieldDate(e.inputField.getAttribute("data-alt-value"),e.params.dateFormat,"gregorian").getHours()>12;var p=s("select",o);p.className="time-ampm",p.style.width="100%",p.options.add(new Option(JoomlaCalLocale.PM,"pm",!!n||"",!!n||"")),p.options.add(new Option(JoomlaCalLocale.AM,"am",!n||"",!n||"")),p.addEventListener("change",function(a){e.updateTime(a.target.parentNode.parentNode.childNodes[1].childNodes[0].value,a.target.parentNode.parentNode.childNodes[2].childNodes[0].value,a.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},!1)}else o.innerHTML=" ",o.colSpan=e.params.weekNumbers?3:2;d.addEventListener("change",function(a){e.updateTime(a.target.parentNode.parentNode.childNodes[1].childNodes[0].value,a.target.parentNode.parentNode.childNodes[2].childNodes[0].value,a.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},!1),m.addEventListener("change",function(a){e.updateTime(a.target.parentNode.parentNode.childNodes[1].childNodes[0].value,a.target.parentNode.parentNode.childNodes[2].childNodes[0].value,a.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},!1)}()}(i=s("div",this.wrapper)).className="buttons-wrapper btn-group",this._nav_save=d(JoomlaCalLocale.save,"",100,"button","","js-btn btn btn-clear",{"data-action":"clear"}),this.inputField.hasAttribute("required")||i.querySelector('[data-action="clear"]').addEventListener("click",function(a){a.preventDefault();for(var t=e.table.querySelectorAll("td"),r=0;rthis.params.maxYear&&(o=this.params.maxYear,a.getOtherFullYear(this.params.dateType,o)),this.params.firstDayOfWeek=e,this.date=new Date(a);var m=a.getLocalMonth(this.params.dateType),p=a.getLocalDate(this.params.dateType);a.setLocalDate(this.params.dateType,1);var c=(a.getLocalDay(this.params.dateType)-this.params.firstDayOfWeek)%7;c<0&&(c+=7),a.setLocalDate(this.params.dateType,-c),a.setLocalDate(this.params.dateType,a.getLocalDate(this.params.dateType)+1);for(var u=this.tbody.firstChild,h=this.ar_days=new Array,y=JoomlaCalLocale.weekend,v=parseInt(a.getLocalWeekDays(this.params.dateType)),g=0;g12&&d&&(i-=12),i=i<10?"0"+i:i,n=n<10?"0"+n:n;var k=this.table.querySelector(".time-hours"),F=this.table.querySelector(".time-minutes");if(this.resetSelected(k),k.value=i,this.resetSelected(F),F.value=n,!this.params.time24){var J=new Date(this.inputField.getAttribute("data-alt-value")),A=this.table.querySelector(".time-ampm");J.getHours()>12&&(this.resetSelected(A),A.value="pm")}}if(this.params.compressedHeader){var M=Date.convertNumbers(o.toString());this._nav_month.getElementsByTagName("span")[0].innerHTML=this.params.monthBefore?M+" - "+JoomlaCalLocale.months[m]:JoomlaCalLocale.months[m]+" - "+M}else this._nav_month.getElementsByTagName("span")[0].innerHTML=this.params.debug?m+" "+JoomlaCalLocale.months[m]:JoomlaCalLocale.months[m],this.title.getElementsByTagName("span")[0].innerHTML=this.params.debug?o+" "+Date.convertNumbers(o.toString()):Date.convertNumbers(o.toString());this.table.style.visibility="visible"},t.prototype._bindEvents=function(){var e=this;this.inputField.addEventListener("blur",function(a){var r=t.getCalObject(this)._joomlaCalendar;"block"!==r.dropdownElement.style.display?(r&&(r.inputField.value?("gregorian"!==r.params.dateType&&r.inputField.setAttribute("data-local-value",r.inputField.value),void 0===r.dateClicked?r.inputField.setAttribute("data-alt-value",Date.parseFieldDate(r.inputField.value,r.params.dateFormat,r.params.dateType).print(r.params.dateFormat,"gregorian",!1)):r.inputField.setAttribute("data-alt-value",r.date.print(r.params.dateFormat,"gregorian",!1))):r.inputField.setAttribute("data-alt-value","0000-00-00 00:00:00"),r.date=Date.parseFieldDate(r.inputField.getAttribute("data-alt-value"),r.params.dateFormat,r.params.dateType)),e.close()):a.preventDefault()},!0),this.button.addEventListener("click",function(){e.show()},!1)};var r=function(a){return a||(a=e.event),a.preventDefault(),a.stopPropagation(),!1},s=function(e,t){var r=null;return r=a.createElement(e),void 0!==t&&t.appendChild(r),r},l=function(e){return!isNaN(e)&&function(e){return(0|e)===e}(parseFloat(e))},o=function(e,a){return(new Date).getLocalFullYear(a)+e};Array.prototype.indexOf||(Array.prototype.indexOf=function(e){var a=this.length>>>0,t=Number(arguments[1])||0;for((t=t<0?Math.ceil(t):Math.floor(t))<0&&(t+=a);t