/** * @copyright (C) 2016 Open Source Matters, Inc. * @license GNU General Public License version 2 or later; see LICENSE.txt */(function(S,c){"use strict";var o=function(e){if(!e)throw new Error(`Calendar setup failed: No valid element found, Please check your code`);if(typeof Date.parseFieldDate!="function")throw new Error(`Calendar setup failed: No valid date helper, Please check your code`);if(e._joomlaCalendar)throw new Error("JoomlaCalendar instance already exists for the element");e._joomlaCalendar=this;var a=this;if(this.writable=!0,this.hidden=!0,this.params={},this.element=e,this.inputField=e.getElementsByTagName("input")[0],this.button=e.getElementsByTagName("button")[0],!this.inputField)throw new Error(`Calendar setup failed: No valid input found, Please check your code`);this.params={debug:!1,clicked:!1,element:{style:{display:"none"}},writable:!0};var t=Joomla.Text._;this.strings={today:t("JLIB_HTML_BEHAVIOR_TODAY","Today"),wk:t("JLIB_HTML_BEHAVIOR_WK","wk"),days:["SUNDAY","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY"],shortDays:["SUN","MON","TUE","WED","THU","FRI","SAT"],months:["JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER"],shortMonths:["JANUARY_SHORT","FEBRUARY_SHORT","MARCH_SHORT","APRIL_SHORT","MAY_SHORT","JUNE_SHORT","JULY_SHORT","AUGUST_SHORT","SEPTEMBER_SHORT","OCTOBER_SHORT","NOVEMBER_SHORT","DECEMBER_SHORT"],am:t("JLIB_HTML_BEHAVIOR_AM","am"),pm:t("JLIB_HTML_BEHAVIOR_PM","pm"),exit:t("JCLOSE","Close"),clear:t("JCLEAR","Clear")},this.strings.days=this.strings.days.map(function(n){return t(n)}),this.strings.shortDays=this.strings.shortDays.map(function(n){return t(n)}),this.strings.months=this.strings.months.map(function(n){return t(n)}),this.strings.shortMonths=this.strings.shortMonths.map(function(n){return t(n)});var s=this.button,d={inputField:this.inputField,dateType:s.dataset.dateType||"gregorian",direction:c.dir?c.dir:c.getElementsByTagName("html")[0].getAttribute("dir"),firstDayOfWeek:s.dataset.firstday?parseInt(s.dataset.firstday,10):0,dateFormat:s.dataset.dateFormat||"%Y-%m-%d %H:%M:%S",weekend:[0,6],minYear:1e3,maxYear:2100,time24:!0,showsOthers:!0,showsTime:!0,weekNumbers:!0,showsTodayBtn:!0,compressedHeader:!1};"showOthers"in s.dataset&&(d.showsOthers=parseInt(s.dataset.showOthers,10)===1),"weekNumbers"in s.dataset&&(d.weekNumbers=parseInt(s.dataset.weekNumbers,10)===1),"onlyMonthsNav"in s.dataset&&(d.compressedHeader=parseInt(s.dataset.onlyMonthsNav,10)===1),"time24"in s.dataset&&(d.time24=parseInt(s.dataset.time24,10)===24),"showTime"in s.dataset&&(d.showsTime=parseInt(s.dataset.showTime,10)===1),"todayBtn"in s.dataset&&(d.showsTodayBtn=parseInt(s.dataset.todayBtn,10)===1);for(var i in d)this.params[i]=d[i];s.dataset.minYear&&(a.params.minYear=P(parseInt(s.dataset.minYear,10),a.params.dateType)),s.dataset.maxYear&&(a.params.maxYear=P(parseInt(s.dataset.maxYear,10),a.params.dateType)),s.dataset.weekend&&(a.params.weekend=s.dataset.weekend.split(",").map(function(n){return parseInt(n,10)})),this.params.direction==="rtl"&&(this.strings.days=this.strings.days.reverse(),this.strings.shortDays=this.strings.shortDays.reverse()),this.strings.months=Date.monthsToLocalOrder(this.strings.months,this.params.dateType),this.strings.shortMonths=Date.monthsToLocalOrder(this.strings.shortMonths,this.params.dateType),this._dayMouseDown=function(n){return a._handleDayMouseDown(n)},this._calKeyEvent=function(n){return a._handleCalKeyEvent(n)},this._documentClick=function(n){return a._handleDocumentClick(n)},this.checkInputs(),!this.inputField.getAttribute("readonly")&&(this._create(),this._bindEvents())};o.prototype.checkInputs=function(){var e=Date.parseFieldDate(this.inputField.getAttribute("data-alt-value"),this.params.dateFormat,"gregorian",this.strings);this.inputField.value!==""?(this.date=e,this.inputField.value=e.print(this.params.dateFormat,this.params.dateType,!0,this.strings)):this.date=new Date},o.prototype.recreate=function(){var e=this.element,a=e.querySelector(".js-calendar");a&&(e._joomlaCalendar=null,a.parentNode.removeChild(a),new o(e))},o.prototype.updateTime=function(e,a,t){var s=this,d=s.date,i=s.date.getLocalDate(s.params.dateType),n=s.date.getLocalMonth(s.params.dateType),l=s.date.getLocalFullYear(s.params.dateType),p=this.inputField.parentNode.parentNode.querySelectorAll(".time-ampm")[0];s.params.time24||(/pm/i.test(p.value)&&e<12?e=parseInt(e)+12:/am/i.test(p.value)&&e==12&&(e=0)),d.setHours(e),d.setMinutes(parseInt(a,10)),d.setSeconds(d.getSeconds()),d.setLocalFullYear(s.params.dateType,l),d.setLocalMonth(s.params.dateType,n),d.setLocalDate(s.params.dateType,i),s.dateClicked=!1,this.callHandler()},o.prototype.setDate=function(e){e.equalsTo(this.date)||(this.date=e,this.processCalendar(this.params.firstDayOfWeek,e))},o.prototype.moveCursorBy=function(e){var a=new Date(this.date);a.setDate(a.getDate()-e),this.setDate(a)},o.prototype.resetSelected=function(e){for(var a=e.options,t=a.length;t--;){var s=a[t];s.selected&&(s.selected=!1)}},o.prototype.callHandler=function(){this.inputField.setAttribute("data-alt-value",this.date.print(this.params.dateFormat,"gregorian",!1,this.strings)),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,!0,this.strings),this.params.dateType!=="gregorian"&&this.inputField.setAttribute("data-local-value",this.date.print(this.params.dateFormat,this.params.dateType,!0,this.strings))),this.inputField.value=this.date.print(this.params.dateFormat,this.params.dateType,!0,this.strings),this.dateClicked&&typeof this.params.onUpdate=="function"&&this.params.onUpdate(this),this.inputField.dispatchEvent(new CustomEvent("change",{bubbles:!0,cancelable:!0})),this.dateClicked?this.close():this.processCalendar()},o.prototype.close=function(){this.hide()},o.prototype.show=function(){this.checkInputs(),this.inputField.focus(),this.dropdownElement.classList.add("open"),this.dropdownElement.removeAttribute("hidden"),this.hidden=!1,c.addEventListener("keydown",this._calKeyEvent,!0),c.addEventListener("keypress",this._calKeyEvent,!0),c.addEventListener("mousedown",this._documentClick,!0);var e=this.element.querySelector(".js-calendar");S.innerHeight"u"||t.navtype!==300){t.navtype===50&&(t._current=t.innerHTML),(s===t||s.parentNode===t)&&a.cellClick(t,e);var i=null;typeof t.month<"u"&&(i=t),typeof t.parentNode.month<"u"&&(i=t.parentNode);var n=null;if(i)n=new Date(a.date),i.month!==n.getLocalMonth(a.params.dateType)&&(n.setLocalMonth(a.params.dateType,i.month),a.setDate(n),a.dateClicked=!1,this.callHandler());else{var l=null;typeof t.year<"u"&&(l=s),typeof t.parentNode.year<"u"&&(l=s.parentNode),l&&(n=new Date(a.date),l.year!==n.getLocalFullYear(a.params.dateType)&&(n.setFullYear(a.params.dateType,l.year),a.setDate(n),a.dateClicked=!1,this.callHandler()))}}return q(e)}},o.prototype.cellClick=function(e,a){var t=this,s=!1,d=!1,i=null;if(typeof e.navtype>"u"){t.currentDateEl&&(e.classList.add("selected"),t.currentDateEl=e.caldate,s=t.currentDateEl===e.caldate,s||(t.currentDateEl=e.caldate)),t.date.setLocalDateOnly("gregorian",e.caldate);var n=!(t.dateClicked=!e.otherMonth);t.currentDateEl&&(d=!e.disabled),n&&this.processCalendar()}else{i=new Date(t.date),t.dateClicked=!1;var l=i.getOtherFullYear(t.params.dateType),p=i.getLocalMonth(t.params.dateType);switch(e.navtype){case 400:break;case-2:t.params.compressedHeader||l>t.params.minYear&&i.setOtherFullYear(t.params.dateType,l-1);break;case-1:var r=i.getLocalDate(t.params.dateType);if(p>0){var g=i.getLocalMonthDays(t.params.dateType,p-1);r>g&&i.setLocalDate(t.params.dateType,g),i.setLocalMonth(t.params.dateType,p-1)}else if(l-- >t.params.minYear){i.setOtherFullYear(t.params.dateType,l);var g=i.getLocalMonthDays(t.params.dateType,11);r>g&&i.setLocalDate(t.params.dateType,g),i.setLocalMonth(t.params.dateType,11)}break;case 1:var r=i.getLocalDate(t.params.dateType);if(p<11){var g=i.getLocalMonthDays(t.params.dateType,p+1);r>g&&i.setLocalDate(t.params.dateType,g),i.setLocalMonth(t.params.dateType,p+1)}else if(lg&&i.setLocalDate(t.params.dateType,g),i.setLocalMonth(t.params.dateType,0)}break;case 2:t.params.compressedHeader||l"+w+""):(r.innerHTML=m?Joomla.sanitizeHtml("
"+w+"
"):Joomla.sanitizeHtml(w),!m&&f&&(r.className=f)),r};this.params.compressedHeader===!1&&(i=u("tr",d),i.className="calendar-head-row",this._nav_py=l("‹",1,-2,"",{"text-align":"center","font-size":"18px","line-height":"18px"},"js-btn btn-prev-year"),this.title=l('
',this.params.weekNumbers?6:5,300),this.title.className="title title-year",this._nav_ny=l(" ›",1,2,"",{"text-align":"center","font-size":"18px","line-height":"18px"},"js-btn btn-next-year")),i=u("tr",d),i.className="calendar-head-row",this._nav_pm=l("‹",1,-1,"",{"text-align":"center","font-size":"2em","line-height":"1em"},"js-btn btn-prev-month"),this._nav_month=l('
',this.params.weekNumbers?6:5,888,"td",{textAlign:"center"}),this._nav_month.className="title title-month",this._nav_nm=l(" ›",1,1,"",{"text-align":"center","font-size":"2em","line-height":"1em"},"js-btn btn-next-month"),i=u("tr",d),i.className=e.params.weekNumbers?"daynames wk":"daynames",this.params.weekNumbers&&(r=u("td",i),r.className="day-name wn",r.textContent=e.strings.wk);for(var p=7;p>0;--p)r=u("td",i),p||(r.calendar=e);this.firstdayname=this.params.weekNumbers?i.firstChild.nextSibling:i.firstChild;for(var g=this.params.firstDayOfWeek,r=this.firstdayname,D=this.params.weekend,p=0;p<7;++p){var R=(p+g)%7;r.classList.add("day-name"),this.params.weekNumbers&&r.classList.add("day-name-week"),p&&(r.calendar=e,r.fdow=R),D.indexOf(D)!==-1&&r.classList.add("weekend"),r.textContent=this.strings.shortDays[(p+g)%7],r=r.nextSibling}var k=u("tbody",t);for(this.tbody=k,p=6;p>0;--p){i=u("tr",k),this.params.weekNumbers&&(r=u("td",i));for(var T=7;T>0;--T)r=u("td",i),r.calendar=this,r.addEventListener("mousedown",this._dayMouseDown,!0)}if(this.params.showsTime){i=u("tr",k),i.className="time";var r=u("td",i);r.className="time time-title",r.colSpan=1,r.style.verticalAlign="middle",r.innerHTML=" ";var O=u("td",i);O.className="time hours-select",O.colSpan=e.params.time24?3:2;var H=u("td",i);H.className="time minutes-select",H.colSpan=e.params.time24?3:2,function(){function m(y,K,V,z,j){var L=u("select",j),I;L.calendar=e,L.className=y,L.setAttribute("data-chosen",!0),L.style.width="100%",L.navtype=50,L._range=[];for(var E=V;E<=z;++E){var J,U="";E===K&&(U=!0),E<10&&z>=10?(I="0"+E,J=Date.convertNumbers("0")+Date.convertNumbers(E)):(I=""+E,J=""+Date.convertNumbers(E)),L.options.add(new Option(J,I,U,U))}return L}var v=e.date.getHours(),F=e.date.getMinutes(),b=!e.params.time24,f=e.date.getHours()>12;b&&f&&(v-=12);var A=m("time time-hours form-control form-select",v,b?1:0,b?12:23,O),N=m("time time-minutes form-control form-select",F,0,59,H),x=null;if(b){r=u("td",i),r.className="time ampm-select",r.colSpan=e.params.weekNumbers?3:2;var M=!0,B=Date.parseFieldDate(e.inputField.getAttribute("data-alt-value"),e.params.dateFormat,"gregorian",e.strings);f=B.getHours()>=12;var C=u("select",r);C.className="time-ampm",C.style.width="100%",C.options.add(new Option(e.strings.pm,"pm",f?M:"",f?M:"")),C.options.add(new Option(e.strings.am,"am",f?"":M,f?"":M)),x=C,x.addEventListener("change",function(y){e.updateTime(y.target.parentNode.parentNode.childNodes[1].childNodes[0].value,y.target.parentNode.parentNode.childNodes[2].childNodes[0].value,y.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},!1)}else e.params.weekNumbers&&(r=u("td",i),r.innerHTML=" ",r.colSpan=1);A.addEventListener("change",function(y){e.updateTime(y.target.parentNode.parentNode.childNodes[1].childNodes[0].value,y.target.parentNode.parentNode.childNodes[2].childNodes[0].value,y.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},!1),N.addEventListener("change",function(y){e.updateTime(y.target.parentNode.parentNode.childNodes[1].childNodes[0].value,y.target.parentNode.parentNode.childNodes[2].childNodes[0].value,y.target.parentNode.parentNode.childNodes[3].childNodes[0].value)},!1)}()}i=u("div",this.wrapper),i.className="buttons-wrapper btn-group",this._nav_clear=l(this.strings.clear,"",100,"button","","js-btn btn btn-clear",{type:"button","data-action":"clear"});var Y=i.querySelector('[data-action="clear"]');if(Y.addEventListener("click",function(w){w.preventDefault();for(var m=e.table.querySelectorAll("td"),v=0;v"u"?e.inputField.setAttribute("data-alt-value",Date.parseFieldDate(e.inputField.value,e.params.dateFormat,e.params.dateType,e.strings).print(e.params.dateFormat,"gregorian",!1,e.strings)):e.inputField.setAttribute("data-alt-value",e.date.print(e.params.dateFormat,"gregorian",!1,e.strings))):e.inputField.setAttribute("data-alt-value","0000-00-00 00:00:00"),e.date=Date.parseFieldDate(e.inputField.getAttribute("data-alt-value"),e.params.dateFormat,e.params.dateType,e.strings)),e.close()}),this.processCalendar()},o.prototype.processCalendar=function(){this.table.style.visibility="hidden";var e=this.params.firstDayOfWeek,a=this.date,t=new Date,s=t.getLocalFullYear(this.params.dateType),d=t.getLocalMonth(this.params.dateType),i=t.getLocalDate(this.params.dateType),n=a.getOtherFullYear(this.params.dateType),l=a.getHours(),p=a.getMinutes(),g=a.getSeconds(),r=!this.params.time24;nthis.params.maxYear&&(n=this.params.maxYear,a.setOtherFullYear(this.params.dateType,n)),this.params.firstDayOfWeek=e,this.date=new Date(a);var D=a.getLocalMonth(this.params.dateType),R=a.getLocalDate(this.params.dateType);a.setLocalDate(this.params.dateType,1);var k=(a.getLocalDay(this.params.dateType)-this.params.firstDayOfWeek)%7;k<0&&(k+=7),a.setLocalDate(this.params.dateType,-k),a.setLocalDate(this.params.dateType,a.getLocalDate(this.params.dateType)+1);for(var T=this.tbody.firstChild,O=this.ar_days=new Array,H=this.params.weekend,Y=parseInt(a.getLocalWeekDays(this.params.dateType)),_=0;_12&&r&&(l-=12),l=l<10?"0"+l:l,p=p<10?"0"+p:p;var N=this.table.querySelector(".time-hours"),x=this.table.querySelector(".time-minutes");if(this.resetSelected(N),this.params.time24?N.value=l:N.value=l=="00"?"12":l,this.resetSelected(x),x.value=p,!this.params.time24){var M=new Date(this.inputField.getAttribute("data-alt-value")),B=this.table.querySelector(".time-ampm"),C=M.getHours();C>12&&(this.resetSelected(B),B.value="pm")}}if(!this.params.compressedHeader)this._nav_month.getElementsByTagName("span")[0].textContent=this.params.debug?D+" "+this.strings.months[D]:this.strings.months[D],this.title.getElementsByTagName("span")[0].textContent=this.params.debug?n+" "+Date.convertNumbers(n.toString()):Date.convertNumbers(n.toString());else{var y=Date.convertNumbers(n.toString());this._nav_month.getElementsByTagName("span")[0].textContent=this.params.monthBefore?y+" - "+this.strings.months[D]:this.strings.months[D]+" - "+y}this.table.style.visibility="visible"},o.prototype._bindEvents=function(){var e=this;this.inputField.addEventListener("blur",function(a){var t=o.getCalObject(this)._joomlaCalendar;if(!t.dropdownElement.hasAttribute("hidden")){a.preventDefault();return}if(t){if(t.inputField.value)if(typeof t.params.dateClicked>"u")if(t.inputField.setAttribute("data-local-value",t.inputField.value),t.params.dateType!=="gregorian"){var s,d=Date.parseFieldDate(t.inputField.value,t.params.dateFormat,t.params.dateType,t.strings);s=Date.localCalToGregorian(d.getFullYear(),d.getMonth(),d.getDate()),d.setFullYear(s[0]),d.setMonth(s[1]),d.setDate(s[2]),t.inputField.setAttribute("data-alt-value",d.print(t.params.dateFormat,"gregorian",!1,t.strings))}else t.inputField.setAttribute("data-alt-value",Date.parseFieldDate(t.inputField.value,t.params.dateFormat,t.params.dateType,t.strings).print(t.params.dateFormat,"gregorian",!1,t.strings));else t.inputField.setAttribute("data-alt-value",t.date.print(t.params.dateFormat,"gregorian",!1,t.strings));else t.inputField.setAttribute("data-alt-value","0000-00-00 00:00:00");t.date=Date.parseFieldDate(t.inputField.getAttribute("data-alt-value"),t.params.dateFormat,t.params.dateType,t.strings)}e.close()},!0),this.button.addEventListener("click",function(){e.show()},!1)};var q=function(e){return e||(e=S.event),e.preventDefault(),e.stopPropagation(),!1},u=function(e,a){var t=null;return t=c.createElement(e),typeof a<"u"&&a.appendChild(t),t},G=function(e){return!isNaN(e)&&function(a){return(a|0)===a}(parseFloat(e))},P=function(e,a){var t=new Date,s=t.getLocalFullYear(a);return s+e};o.getCalObject=function(e){if(!e)return!1;for(;e.parentNode;)if(e=e.parentNode,e.classList.contains("field-calendar"))return e;return!1},o.prototype.setAltValue=function(){var e=this.inputField;e.getAttribute("disabled")||(e.value=e.getAttribute("data-alt-value")&&e.getAttribute("data-alt-value")!=="0000-00-00 00:00:00"?e.getAttribute("data-alt-value"):"")},o.onSubmit=function(){if(Joomla=S.Joomla||{},!Joomla.calendarProcessed){Joomla.calendarProcessed=!0;for(var e=c.querySelectorAll(".field-calendar"),a=0;a