/* flatpickr v4.6.13,, @license MIT */ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).flatpickr=n()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var n,t=1,a=arguments.length;t",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var n=e%100;if(n>3&&n<21)return"th";switch(n%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},o=function(e,n){return void 0===n&&(n=2),("000"+e).slice(-1*n)},r=function(e){return!0===e?1:0};function l(e,n){var t;return function(){var a=this,i=arguments;clearTimeout(t),t=setTimeout((function(){return e.apply(a,i)}),n)}}var c=function(e){return e instanceof Array?e:[e]};function s(e,n,t){if(!0===t)return e.classList.add(n);e.classList.remove(n)}function d(e,n,t){var a=window.document.createElement(e);return n=n||"",t=t||"",a.className=n,void 0!==t&&(a.textContent=t),a}function u(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function f(e,n){return n(e)?e:e.parentNode?f(e.parentNode,n):void 0}function m(e,n){var t=d("div","numInputWrapper"),a=d("input","numInput "+e),i=d("span","arrowUp"),o=d("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==n)for(var r in n)a.setAttribute(r,n[r]);return t.appendChild(a),t.appendChild(i),t.appendChild(o),t}function g(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(n){return e.target}}var p=function(){},h=function(e,n,t){return t.months[n?"shorthand":"longhand"][e]},v={D:p,F:function(e,n,t){e.setMonth(t.months.longhand.indexOf(n))},G:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},H:function(e,n){e.setHours(parseFloat(n))},J:function(e,n){e.setDate(parseFloat(n))},K:function(e,n,t){e.setHours(e.getHours()%12+12*r(new RegExp(t.amPM[1],"i").test(n)))},M:function(e,n,t){e.setMonth(t.months.shorthand.indexOf(n))},S:function(e,n){e.setSeconds(parseFloat(n))},U:function(e,n){return new Date(1e3*parseFloat(n))},W:function(e,n,t){var a=parseInt(n),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+t.firstDayOfWeek),i},Y:function(e,n){e.setFullYear(parseFloat(n))},Z:function(e,n){return new Date(n)},d:function(e,n){e.setDate(parseFloat(n))},h:function(e,n){e.setHours((e.getHours()>=12?12:0)+parseFloat(n))},i:function(e,n){e.setMinutes(parseFloat(n))},j:function(e,n){e.setDate(parseFloat(n))},l:p,m:function(e,n){e.setMonth(parseFloat(n)-1)},n:function(e,n){e.setMonth(parseFloat(n)-1)},s:function(e,n){e.setSeconds(parseFloat(n))},u:function(e,n){return new Date(parseFloat(n))},w:p,y:function(e,n){e.setFullYear(2e3+parseFloat(n))}},D={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},w={Z:function(e){return e.toISOString()},D:function(e,n,t){return n.weekdays.shorthand[w.w(e,n,t)]},F:function(e,n,t){return h(w.n(e,n,t)-1,!1,n)},G:function(e,n,t){return o(w.h(e,n,t))},H:function(e){return o(e.getHours())},J:function(e,n){return void 0!==n.ordinal?e.getDate()+n.ordinal(e.getDate()):e.getDate()},K:function(e,n){return n.amPM[r(e.getHours()>11)]},M:function(e,n){return h(e.getMonth(),!0,n)},S:function(e){return o(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,n,t){return t.getWeek(e)},Y:function(e){return o(e.getFullYear(),4)},d:function(e){return o(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return o(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,n){return n.weekdays.longhand[e.getDay()]},m:function(e){return o(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o,l=e.isMobile,c=void 0!==l&&l;return function(e,n,a){var i=a||r;return void 0===t.formatDate||c?n.split("").map((function(n,a,o){return w[n]&&"\\"!==o[a-1]?w[n](e,i,t):"\\"!==n?n:""})).join(""):t.formatDate(e,n,i)}},C=function(e){var n=e.config,t=void 0===n?a:n,o=e.l10n,r=void 0===o?i:o;return function(e,n,i,o){if(0===e||e){var l,c=o||r,s=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var d=n||(t||a).dateFormat,u=String(e).trim();if("today"===u)l=new Date,i=!0;else if(t&&t.parseDate)l=t.parseDate(e,d);else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else{for(var f=void 0,m=[],g=0,p=0,h="";g=0?new Date:new Date(w.config.minDate.getTime()),t=x(w.config);n.setHours(t.hours,t.minutes,t.seconds,n.getMilliseconds()),w.selectedDates=[n],w.latestSelectedDateObj=n}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var n="keydown"===e.type,t=g(e),a=t;void 0!==w.amPM&&t===w.amPM&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]);var i=parseFloat(a.getAttribute("min")),l=parseFloat(a.getAttribute("max")),c=parseFloat(a.getAttribute("step")),s=parseInt(a.value,10),d=s+c*(e.delta||(n?38===e.which?1:-1:0));if(void 0!==a.value&&2===a.value.length){var u=a===w.hourElement,f=a===w.minuteElement;dl&&(d=a===w.hourElement?d-l-r(!w.amPM):i,f&&H(void 0,1,w.hourElement)),w.amPM&&u&&(1===c?d+s===23:Math.abs(d-s)>c)&&(w.amPM.textContent=w.l10n.amPM[r(w.amPM.textContent===w.l10n.amPM[0])]),a.value=o(d)}}(e);var a=w._input.value;_(),Me(),w._input.value!==a&&w._debouncedChange()}function _(){if(void 0!==w.hourElement&&void 0!==w.minuteElement){var e,n,t=(parseInt(w.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(w.minuteElement.value,10)||0)%60,i=void 0!==w.secondElement?(parseInt(w.secondElement.value,10)||0)%60:0;void 0!==w.amPM&&(e=t,n=w.amPM.textContent,t=e%12+12*r(n===w.l10n.amPM[1]));var o=void 0!==w.config.minTime||w.config.minDate&&w.minDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.minDate,!0),l=void 0!==w.config.maxTime||w.config.maxDate&&w.maxDateHasTime&&w.latestSelectedDateObj&&0===M(w.latestSelectedDateObj,w.config.maxDate,!0);if(void 0!==w.config.maxTime&&void 0!==w.config.minTime&&w.config.minTime>w.config.maxTime){var c=y(w.config.minTime.getHours(),w.config.minTime.getMinutes(),w.config.minTime.getSeconds()),s=y(w.config.maxTime.getHours(),w.config.maxTime.getMinutes(),w.config.maxTime.getSeconds()),d=y(t,a,i);if(d>s&&d=12)]),void 0!==w.secondElement&&(w.secondElement.value=o(t)))}function A(e){var n=g(e),t=parseInt(n.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&X(t)}function N(e,n,t,a){return n instanceof Array?n.forEach((function(n){return N(e,n,t,a)})):e instanceof Array?e.forEach((function(e){return N(e,n,t,a)})):(e.addEventListener(n,t,a),void w._handlers.push({remove:function(){return e.removeEventListener(n,t,a)}}))}function P(){ve("onChange")}function Y(e,n){var t=void 0!==e?w.parseDate(e):w.latestSelectedDateObj||(w.config.minDate&&w.config.minDate>w.now?w.config.minDate:w.config.maxDate&&w.config.maxDate=0&&M(e,w.selectedDates[1])<=0}(n)&&!we(n)&&o.classList.add("inRange"),w.weekNumbers&&1===w.config.showMonths&&"prevMonthDay"!==e&&a%7==6&&w.weekNumbers.insertAdjacentHTML("beforeend",""+w.config.getWeek(n)+""),ve("onDayCreate",o),o}function R(e){e.focus(),"range"===w.config.mode&&ie(e)}function W(e){for(var n=e>0?0:w.config.showMonths-1,t=e>0?w.config.showMonths:-1,a=n;a!=t;a+=e)for(var i=w.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&ee(c.dateObj))return c}}function B(e,n){var t=E(),a=ne(t||document.body),i=void 0!==e?e:a?t:void 0!==w.selectedDateElem&&ne(w.selectedDateElem)?w.selectedDateElem:void 0!==w.todayDateElem&&ne(w.todayDateElem)?w.todayDateElem:W(n>0?1:-1);void 0===i?w._input.focus():a?function(e,n){for(var t=-1===e.className.indexOf("Month")?e.dateObj.getMonth():w.currentMonth,a=n>0?w.config.showMonths:-1,i=n>0?1:-1,o=t-w.currentMonth;o!=a;o+=i)for(var r=w.daysContainer.children[o],l=t-w.currentMonth===o?e.$i+n:n<0?r.children.length-1:0,c=r.children.length,s=l;s>=0&&s0?c:-1);s+=i){var d=r.children[s];if(-1===d.className.indexOf("hidden")&&ee(d.dateObj)&&Math.abs(e.$i-s)>=Math.abs(n))return R(d)}w.changeMonth(i),B(W(i),0)}(i,n):R(i)}function J(e,n){for(var t=(new Date(e,n,1).getDay()-w.l10n.firstDayOfWeek+7)%7,a=w.utils.getDaysInMonth((n-1+12)%12,e),i=w.utils.getDaysInMonth(n,e),o=window.document.createDocumentFragment(),r=w.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",s=a+1-t,u=0;s<=a;s++,u++)o.appendChild(L("flatpickr-day "+l,new Date(e,n-1,s),0,u));for(s=1;s<=i;s++,u++)o.appendChild(L("flatpickr-day",new Date(e,n,s),0,u));for(var f=i+1;f<=42-t&&(1===w.config.showMonths||u%7!=0);f++,u++)o.appendChild(L("flatpickr-day "+c,new Date(e,n+1,f%i),0,u));var m=d("div","dayContainer");return m.appendChild(o),m}function K(){if(void 0!==w.daysContainer){u(w.daysContainer),w.weekNumbers&&u(w.weekNumbers);for(var e=document.createDocumentFragment(),n=0;n1||"dropdown"!==w.config.monthSelectorType)){var e=function(e){return!(void 0!==w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&ew.config.maxDate.getMonth())};w.monthsDropdownContainer.tabIndex=-1,w.monthsDropdownContainer.innerHTML="";for(var n=0;n<12;n++)if(e(n)){var t=d("option","flatpickr-monthDropdown-month");t.value=new Date(w.currentYear,n).getMonth().toString(),t.textContent=h(n,w.config.shorthandCurrentMonth,w.l10n),t.tabIndex=-1,w.currentMonth===n&&(t.selected=!0),w.monthsDropdownContainer.appendChild(t)}}}function $(){var e,n=d("div","flatpickr-month"),t=window.document.createDocumentFragment();w.config.showMonths>1||"static"===w.config.monthSelectorType?e=d("span","cur-month"):(w.monthsDropdownContainer=d("select","flatpickr-monthDropdown-months"),w.monthsDropdownContainer.setAttribute("aria-label",w.l10n.monthAriaLabel),N(w.monthsDropdownContainer,"change",(function(e){var n=g(e),t=parseInt(n.value,10);w.changeMonth(t-w.currentMonth),ve("onMonthChange")})),U(),e=w.monthsDropdownContainer);var a=m("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",w.l10n.yearAriaLabel),w.config.minDate&&i.setAttribute("min",w.config.minDate.getFullYear().toString()),w.config.maxDate&&(i.setAttribute("max",w.config.maxDate.getFullYear().toString()),i.disabled=!!w.config.minDate&&w.config.minDate.getFullYear()===w.config.maxDate.getFullYear());var o=d("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),t.appendChild(o),n.appendChild(t),{container:n,yearElement:i,monthElement:e}}function q(){u(w.monthNav),w.monthNav.appendChild(w.prevMonthNav),w.config.showMonths&&(w.yearElements=[],w.monthElements=[]);for(var e=w.config.showMonths;e--;){var n=$();w.yearElements.push(n.yearElement),w.monthElements.push(n.monthElement),w.monthNav.appendChild(n.container)}w.monthNav.appendChild(w.nextMonthNav)}function V(){w.weekdayContainer?u(w.weekdayContainer):w.weekdayContainer=d("div","flatpickr-weekdays");for(var e=w.config.showMonths;e--;){var n=d("div","flatpickr-weekdaycontainer");w.weekdayContainer.appendChild(n)}return z(),w.weekdayContainer}function z(){if(w.weekdayContainer){var e=w.l10n.firstDayOfWeek,t=n(w.l10n.weekdays.shorthand);e>0&&e\n "+t.join("")+"\n \n "}}function G(e,n){void 0===n&&(n=!0);var t=n?e:e-w.currentMonth;t<0&&!0===w._hidePrevMonthArrow||t>0&&!0===w._hideNextMonthArrow||(w.currentMonth+=t,(w.currentMonth<0||w.currentMonth>11)&&(w.currentYear+=w.currentMonth>11?1:-1,w.currentMonth=(w.currentMonth+12)%12,ve("onYearChange"),U()),K(),ve("onMonthChange"),be())}function Z(e){return w.calendarContainer.contains(e)}function Q(e){if(w.isOpen&&!w.config.inline){var n=g(e),t=Z(n),a=!(n===w.input||n===w.altInput||w.element.contains(n)||e.path&&e.path.indexOf&&(~e.path.indexOf(w.input)||~e.path.indexOf(w.altInput))||t||Z(e.relatedTarget)),i=!w.config.ignoredFocusElements.some((function(e){return e.contains(n)}));a&&i&&(w.config.allowInput&&w.setDate(w._input.value,!1,w.config.altInput?w.config.altFormat:w.config.dateFormat),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&""!==w.input.value&&void 0!==w.input.value&&S(),w.close(),w.config&&"range"===w.config.mode&&1===w.selectedDates.length&&w.clear(!1))}}function X(e){if(!(!e||w.config.minDate&&ew.config.maxDate.getFullYear())){var n=e,t=w.currentYear!==n;w.currentYear=n||w.currentYear,w.config.maxDate&&w.currentYear===w.config.maxDate.getFullYear()?w.currentMonth=Math.min(w.config.maxDate.getMonth(),w.currentMonth):w.config.minDate&&w.currentYear===w.config.minDate.getFullYear()&&(w.currentMonth=Math.max(w.config.minDate.getMonth(),w.currentMonth)),t&&(w.redraw(),ve("onYearChange"),U())}}function ee(e,n){var t;void 0===n&&(n=!0);var a=w.parseDate(e,void 0,n);if(w.config.minDate&&a&&M(a,w.config.minDate,void 0!==n?n:!w.minDateHasTime)<0||w.config.maxDate&&a&&M(a,w.config.maxDate,void 0!==n?n:!w.maxDateHasTime)>0)return!1;if(!w.config.enable&&0===w.config.disable.length)return!0;if(void 0===a)return!1;for(var i=!!w.config.enable,o=null!==(t=w.config.enable)&&void 0!==t?t:w.config.disable,r=0,l=void 0;r=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function ne(e){return void 0!==w.daysContainer&&-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&w.daysContainer.contains(e)}function te(e){var n=e.target===w._input,t=w._input.value.trimEnd()!==Ce();!n||!t||e.relatedTarget&&Z(e.relatedTarget)||w.setDate(w._input.value,!0,e.target===w.altInput?w.config.altFormat:w.config.dateFormat)}function ae(e){var n=g(e),t=w.config.wrap?p.contains(n):n===w._input,a=w.config.allowInput,i=w.isOpen&&(!a||!t),o=w.config.inline&&t&&!a;if(13===e.keyCode&&t){if(a)return w.setDate(w._input.value,!0,n===w.altInput?w.config.altFormat:w.config.dateFormat),w.close(),n.blur();w.open()}else if(Z(n)||i||o){var r=!!w.timeContainer&&w.timeContainer.contains(n);switch(e.keyCode){case 13:r?(e.preventDefault(),S(),ue()):fe(e);break;case 27:e.preventDefault(),ue();break;case 8:case 46:t&&!w.config.allowInput&&(e.preventDefault(),w.clear());break;case 37:case 39:if(r||t)w.hourElement&&w.hourElement.focus();else{e.preventDefault();var l=E();if(void 0!==w.daysContainer&&(!1===a||l&&ne(l))){var c=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(c),B(W(1),0)):B(void 0,c)}}break;case 38:case 40:e.preventDefault();var s=40===e.keyCode?1:-1;w.daysContainer&&void 0!==n.$i||n===w.input||n===w.altInput?e.ctrlKey?(e.stopPropagation(),X(w.currentYear-s),B(W(1),0)):r||B(void 0,7*s):n===w.currentYearElement?X(w.currentYear-s):w.config.enableTime&&(!r&&w.hourElement&&w.hourElement.focus(),S(e),w._debouncedChange());break;case 9:if(r){var d=[w.hourElement,w.minuteElement,w.secondElement,w.amPM].concat(w.pluginElements).filter((function(e){return e})),u=d.indexOf(n);if(-1!==u){var f=d[u+(e.shiftKey?-1:1)];e.preventDefault(),(f||w._input).focus()}}else!w.config.noCalendar&&w.daysContainer&&w.daysContainer.contains(n)&&e.shiftKey&&(e.preventDefault(),w._input.focus())}}if(void 0!==w.amPM&&n===w.amPM)switch(e.key){case w.l10n.amPM[0].charAt(0):case w.l10n.amPM[0].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[0],_(),Me();break;case w.l10n.amPM[1].charAt(0):case w.l10n.amPM[1].charAt(0).toLowerCase():w.amPM.textContent=w.l10n.amPM[1],_(),Me()}(t||Z(n))&&ve("onKeyDown",e)}function ie(e,n){if(void 0===n&&(n="flatpickr-day"),1===w.selectedDates.length&&(!e||e.classList.contains(n)&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():w.days.firstElementChild.dateObj.getTime(),a=w.parseDate(w.selectedDates[0],void 0,!0).getTime(),i=Math.min(t,w.selectedDates[0].getTime()),o=Math.max(t,w.selectedDates[0].getTime()),r=!1,l=0,c=0,s=i;si&&sl)?l=s:s>a&&(!c||s ."+n)).forEach((function(n){var i,o,s,d=n.dateObj.getTime(),u=l>0&&d0&&d>c;if(u)return n.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach((function(e){n.classList.remove(e)}));r&&!u||(["startRange","inRange","endRange","notAllowed"].forEach((function(e){n.classList.remove(e)})),void 0!==e&&(e.classList.add(t<=w.selectedDates[0].getTime()?"startRange":"endRange"),at&&d===a&&n.classList.add("endRange"),d>=l&&(0===c||d<=c)&&(o=a,s=t,(i=d)>Math.min(o,s)&&i0||t.getMinutes()>0||t.getSeconds()>0),w.selectedDates&&(w.selectedDates=w.selectedDates.filter((function(e){return ee(e)})),w.selectedDates.length||"min"!==e||O(t),Me()),w.daysContainer&&(de(),void 0!==t?w.currentYearElement[e]=t.getFullYear().toString():w.currentYearElement.removeAttribute(e),w.currentYearElement.disabled=!!a&&void 0!==t&&a.getFullYear()===t.getFullYear())}}function le(){return w.config.wrap?p.querySelector("[data-input]"):p}function ce(){"object"!=typeof w.config.locale&&void 0===T.l10ns[w.config.locale]&&w.config.errorHandler(new Error("flatpickr: invalid locale "+w.config.locale)),w.l10n=e(e({},T.l10ns.default),"object"==typeof w.config.locale?w.config.locale:"default"!==w.config.locale?T.l10ns[w.config.locale]:void 0),D.D="("+w.l10n.weekdays.shorthand.join("|")+")",D.l="("+w.l10n.weekdays.longhand.join("|")+")",D.M="("+w.l10n.months.shorthand.join("|")+")",D.F="("+w.l10n.months.longhand.join("|")+")",D.K="("+w.l10n.amPM[0]+"|"+w.l10n.amPM[1]+"|"+w.l10n.amPM[0].toLowerCase()+"|"+w.l10n.amPM[1].toLowerCase()+")",void 0===e(e({},v),JSON.parse(JSON.stringify(p.dataset||{}))).time_24hr&&void 0===T.defaultConfig.time_24hr&&(w.config.time_24hr=w.l10n.time_24hr),w.formatDate=b(w),w.parseDate=C({config:w.config,l10n:w.l10n})}function se(e){if("function"!=typeof w.config.position){if(void 0!==w.calendarContainer){ve("onPreCalendarPosition");var n=e||w._positionElement,t=Array.prototype.reduce.call(w.calendarContainer.children,(function(e,n){return e+n.offsetHeight}),0),a=w.calendarContainer.offsetWidth,i=w.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=n.getBoundingClientRect(),c=window.innerHeight-l.bottom,d="above"===o||"below"!==o&&ct,u=window.pageYOffset+l.top+(d?-t-2:n.offsetHeight+2);if(s(w.calendarContainer,"arrowTop",!d),s(w.calendarContainer,"arrowBottom",d),!w.config.inline){var f=window.pageXOffset+l.left,m=!1,g=!1;"center"===r?(f-=(a-l.width)/2,m=!0):"right"===r&&(f-=a-l.width,g=!0),s(w.calendarContainer,"arrowLeft",!m&&!g),s(w.calendarContainer,"arrowCenter",m),s(w.calendarContainer,"arrowRight",g);var p=window.document.body.offsetWidth-(window.pageXOffset+l.right),h=f+a>window.document.body.offsetWidth,v=p+a>window.document.body.offsetWidth;if(s(w.calendarContainer,"rightMost",h),!w.config.static)if(w.calendarContainer.style.top=u+"px",h)if(v){var D=function(){for(var e=null,n=0;nw.currentMonth+w.config.showMonths-1)&&"range"!==w.config.mode;if(w.selectedDateElem=t,"single"===w.config.mode)w.selectedDates=[a];else if("multiple"===w.config.mode){var o=we(a);o?w.selectedDates.splice(parseInt(o),1):w.selectedDates.push(a)}else"range"===w.config.mode&&(2===w.selectedDates.length&&w.clear(!1,!1),w.latestSelectedDateObj=a,w.selectedDates.push(a),0!==M(a,w.selectedDates[0],!0)&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()})));if(_(),i){var r=w.currentYear!==a.getFullYear();w.currentYear=a.getFullYear(),w.currentMonth=a.getMonth(),r&&(ve("onYearChange"),U()),ve("onMonthChange")}if(be(),K(),Me(),i||"range"===w.config.mode||1!==w.config.showMonths?void 0!==w.selectedDateElem&&void 0===w.hourElement&&w.selectedDateElem&&w.selectedDateElem.focus():R(t),void 0!==w.hourElement&&void 0!==w.hourElement&&w.hourElement.focus(),w.config.closeOnSelect){var l="single"===w.config.mode&&!w.config.enableTime,c="range"===w.config.mode&&2===w.selectedDates.length&&!w.config.enableTime;(l||c)&&ue()}P()}}w.parseDate=C({config:w.config,l10n:w.l10n}),w._handlers=[],w.pluginElements=[],w.loadedPlugins=[],w._bind=N,w._setHoursFromDate=O,w._positionCalendar=se,w.changeMonth=G,w.changeYear=X,w.clear=function(e,n){if(void 0===e&&(e=!0),void 0===n&&(n=!0),w.input.value="",void 0!==w.altInput&&(w.altInput.value=""),void 0!==w.mobileInput&&(w.mobileInput.value=""),w.selectedDates=[],w.latestSelectedDateObj=void 0,!0===n&&(w.currentYear=w._initialDate.getFullYear(),w.currentMonth=w._initialDate.getMonth()),!0===w.config.enableTime){var t=x(w.config);F(t.hours,t.minutes,t.seconds)}w.redraw(),e&&ve("onChange")},w.close=function(){w.isOpen=!1,w.isMobile||(void 0!==w.calendarContainer&&w.calendarContainer.classList.remove("open"),void 0!==w._input&&w._input.classList.remove("active")),ve("onClose")},w.onMouseOver=ie,w._createElement=d,w.createDay=L,w.destroy=function(){void 0!==w.config&&ve("onDestroy");for(var e=w._handlers.length;e--;)w._handlers[e].remove();if(w._handlers=[],w.mobileInput)w.mobileInput.parentNode&&w.mobileInput.parentNode.removeChild(w.mobileInput),w.mobileInput=void 0;else if(w.calendarContainer&&w.calendarContainer.parentNode)if(w.config.static&&w.calendarContainer.parentNode){var n=w.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else w.calendarContainer.parentNode.removeChild(w.calendarContainer);w.altInput&&(w.input.type="text",w.altInput.parentNode&&w.altInput.parentNode.removeChild(w.altInput),delete w.altInput),w.input&&(w.input.type=w.input._type,w.input.classList.remove("flatpickr-input"),w.input.removeAttribute("readonly")), ["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach((function(e){try{delete w[e]}catch(e){}}))},w.isEnabled=ee,w.jumpToDate=Y,w.updateValue=Me,w.open=function(e,n){if(void 0===n&&(n=w._positionElement),!0===w.isMobile){if(e){e.preventDefault();var t=g(e);t&&t.blur()}return void 0!==w.mobileInput&&(w.mobileInput.focus(),w.mobileInput.click()),void ve("onOpen")}if(!w._input.disabled&&!w.config.inline){var a=w.isOpen;w.isOpen=!0,a||(w.calendarContainer.classList.add("open"),w._input.classList.add("active"),ve("onOpen"),se(n)),!0===w.config.enableTime&&!0===w.config.noCalendar&&(!1!==w.config.allowInput||void 0!==e&&w.timeContainer.contains(e.relatedTarget)||setTimeout((function(){return w.hourElement.select()}),50))}},w.redraw=de,w.set=function(e,n){if(null!==e&&"object"==typeof e)for(var a in Object.assign(w.config,e),e)void 0!==me[a]&&me[a].forEach((function(e){return e()}));else w.config[e]=n,void 0!==me[e]?me[e].forEach((function(e){return e()})):t.indexOf(e)>-1&&(w.config[e]=c(n));w.redraw(),Me(!0)},w.setDate=function(e,n,t){if(void 0===n&&(n=!1),void 0===t&&(t=w.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return w.clear(n);ge(e,t),w.latestSelectedDateObj=w.selectedDates[w.selectedDates.length-1],w.redraw(),Y(void 0,n),O(),0===w.selectedDates.length&&w.clear(!1),Me(n),n&&ve("onChange")},w.toggle=function(e){if(!0===w.isOpen)return w.close();w.open(e)};var me={locale:[ce,z],showMonths:[q,I,V],minDate:[Y],maxDate:[Y],positionElement:[he],clickOpens:[function(){!0===w.config.clickOpens?(N(w._input,"focus",w.open),N(w._input,"click",w.open)):(w._input.removeEventListener("focus",w.open),w._input.removeEventListener("click",w.open))}]};function ge(e,n){var t=[];if(e instanceof Array)t=e.map((function(e){return w.parseDate(e,n)}));else if(e instanceof Date||"number"==typeof e)t=[w.parseDate(e,n)];else if("string"==typeof e)switch(w.config.mode){case"single":case"time":t=[w.parseDate(e,n)];break;case"multiple":t=e.split(w.config.conjunction).map((function(e){return w.parseDate(e,n)}));break;case"range":t=e.split(w.l10n.rangeSeparator).map((function(e){return w.parseDate(e,n)}))}else w.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));w.selectedDates=w.config.allowInvalidPreload?t:t.filter((function(e){return e instanceof Date&&ee(e,!1)})),"range"===w.config.mode&&w.selectedDates.sort((function(e,n){return e.getTime()-n.getTime()}))}function pe(e){return e.slice().map((function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?w.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:w.parseDate(e.from,void 0),to:w.parseDate(e.to,void 0)}:e})).filter((function(e){return e}))}function he(){w._positionElement=w.config.positionElement||w._input}function ve(e,n){if(void 0!==w.config){var t=w.config[e];if(void 0!==t&&t.length>0)for(var a=0;t[a]&&a1||"static"===w.config.monthSelectorType?w.monthElements[n].textContent=h(t.getMonth(),w.config.shorthandCurrentMonth,w.l10n)+" ":w.monthsDropdownContainer.value=t.getMonth().toString(),e.value=t.getFullYear().toString()})),w._hidePrevMonthArrow=void 0!==w.config.minDate&&(w.currentYear===w.config.minDate.getFullYear()?w.currentMonth<=w.config.minDate.getMonth():w.currentYearw.config.maxDate.getMonth():w.currentYear>w.config.maxDate.getFullYear()))}function Ce(e){var n=e||(w.config.altInput?w.config.altFormat:w.config.dateFormat);return w.selectedDates.map((function(e){return w.formatDate(e,n)})).filter((function(e,n,t){return"range"!==w.config.mode||w.config.enableTime||t.indexOf(e)===n})).join("range"!==w.config.mode?w.config.conjunction:w.l10n.rangeSeparator)}function Me(e){void 0===e&&(e=!0),void 0!==w.mobileInput&&w.mobileFormatStr&&(w.mobileInput.value=void 0!==w.latestSelectedDateObj?w.formatDate(w.latestSelectedDateObj,w.mobileFormatStr):""),w.input.value=Ce(w.config.dateFormat),void 0!==w.altInput&&(w.altInput.value=Ce(w.config.altFormat)),!1!==e&&ve("onValueUpdate")}function ye(e){var n=g(e),t=w.prevMonthNav.contains(n),a=w.nextMonthNav.contains(n);t||a?G(t?-1:1):w.yearElements.indexOf(n)>=0?n.select():n.classList.contains("arrowUp")?w.changeYear(w.currentYear+1):n.classList.contains("arrowDown")&&w.changeYear(w.currentYear-1)}return function(){w.element=w.input=p,w.isOpen=!1,function(){var n=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e(e({},JSON.parse(JSON.stringify(p.dataset||{}))),v),o={};w.config.parseDate=i.parseDate,w.config.formatDate=i.formatDate,Object.defineProperty(w.config,"enable",{get:function(){return w.config._enable},set:function(e){w.config._enable=pe(e)}}),Object.defineProperty(w.config,"disable",{get:function(){return w.config._disable},set:function(e){w.config._disable=pe(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var l=T.defaultConfig.dateFormat||a.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):l+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var s=T.defaultConfig.altFormat||a.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):s+" h:i"+(i.enableSeconds?":S":"")+" K"}Object.defineProperty(w.config,"minDate",{get:function(){return w.config._minDate},set:re("min")}),Object.defineProperty(w.config,"maxDate",{get:function(){return w.config._maxDate},set:re("max")});var d=function(e){return function(n){w.config["min"===e?"_minTime":"_maxTime"]=w.parseDate(n,"H:i:S")}};Object.defineProperty(w.config,"minTime",{get:function(){return w.config._minTime},set:d("min")}),Object.defineProperty(w.config,"maxTime",{get:function(){return w.config._maxTime},set:d("max")}),"time"===i.mode&&(w.config.noCalendar=!0,w.config.enableTime=!0),Object.assign(w.config,o,i);for(var u=0;u-1?w.config[m]=c(f[m]).map(k).concat(w.config[m]):void 0===i[m]&&(w.config[m]=f[m])}i.altInputClass||(w.config.altInputClass=le().className+" "+w.config.altInputClass),ve("onParseConfig")}(),ce(),w.input=le(),w.input?(w.input._type=w.input.type,w.input.type="text",w.input.classList.add("flatpickr-input"),w._input=w.input,w.config.altInput&&(w.altInput=d(w.input.nodeName,w.config.altInputClass),w._input=w.altInput,w.altInput.placeholder=w.input.placeholder,w.altInput.disabled=w.input.disabled,w.altInput.required=w.input.required,w.altInput.tabIndex=w.input.tabIndex,w.altInput.type="text",w.input.setAttribute("type","hidden"),!w.config.static&&w.input.parentNode&&w.input.parentNode.insertBefore(w.altInput,w.input.nextSibling)),w.config.allowInput||w._input.setAttribute("readonly","readonly"),he()):w.config.errorHandler(new Error("Invalid input element specified")),function(){w.selectedDates=[],w.now=w.parseDate(w.config.now)||new Date;var e=w.config.defaultDate||("INPUT"!==w.input.nodeName&&"TEXTAREA"!==w.input.nodeName||!w.input.placeholder||w.input.value!==w.input.placeholder?w.input.value:null);e&&ge(e,w.config.dateFormat),w._initialDate=w.selectedDates.length>0?w.selectedDates[0]:w.config.minDate&&w.config.minDate.getTime()>w.now.getTime()?w.config.minDate:w.config.maxDate&&w.config.maxDate.getTime()0&&(w.latestSelectedDateObj=w.selectedDates[0]),void 0!==w.config.minTime&&(w.config.minTime=w.parseDate(w.config.minTime,"H:i")),void 0!==w.config.maxTime&&(w.config.maxTime=w.parseDate(w.config.maxTime,"H:i")),w.minDateHasTime=!!w.config.minDate&&(w.config.minDate.getHours()>0||w.config.minDate.getMinutes()>0||w.config.minDate.getSeconds()>0),w.maxDateHasTime=!!w.config.maxDate&&(w.config.maxDate.getHours()>0||w.config.maxDate.getMinutes()>0||w.config.maxDate.getSeconds()>0)}(),w.utils={getDaysInMonth:function(e,n){return void 0===e&&(e=w.currentMonth),void 0===n&&(n=w.currentYear),1===e&&(n%4==0&&n%100!=0||n%400==0)?29:w.l10n.daysInMonth[e]}},w.isMobile||function(){var e=window.document.createDocumentFragment();if(w.calendarContainer=d("div","flatpickr-calendar"),w.calendarContainer.tabIndex=-1,!w.config.noCalendar){if(e.appendChild((w.monthNav=d("div","flatpickr-months"),w.yearElements=[],w.monthElements=[],w.prevMonthNav=d("span","flatpickr-prev-month"),w.prevMonthNav.innerHTML=w.config.prevArrow,w.nextMonthNav=d("span","flatpickr-next-month"),w.nextMonthNav.innerHTML=w.config.nextArrow,q(),Object.defineProperty(w,"_hidePrevMonthArrow",{get:function(){return w.__hidePrevMonthArrow},set:function(e){w.__hidePrevMonthArrow!==e&&(s(w.prevMonthNav,"flatpickr-disabled",e),w.__hidePrevMonthArrow=e)}}),Object.defineProperty(w,"_hideNextMonthArrow",{get:function(){return w.__hideNextMonthArrow},set:function(e){w.__hideNextMonthArrow!==e&&(s(w.nextMonthNav,"flatpickr-disabled",e),w.__hideNextMonthArrow=e)}}),w.currentYearElement=w.yearElements[0],be(),w.monthNav)),w.innerContainer=d("div","flatpickr-innerContainer"),w.config.weekNumbers){var n=function(){w.calendarContainer.classList.add("hasWeeks");var e=d("div","flatpickr-weekwrapper");e.appendChild(d("span","flatpickr-weekday",w.l10n.weekAbbreviation));var n=d("div","flatpickr-weeks");return e.appendChild(n),{weekWrapper:e,weekNumbers:n}}(),t=n.weekWrapper,a=n.weekNumbers;w.innerContainer.appendChild(t),w.weekNumbers=a,w.weekWrapper=t}w.rContainer=d("div","flatpickr-rContainer"),w.rContainer.appendChild(V()),w.daysContainer||(w.daysContainer=d("div","flatpickr-days"),w.daysContainer.tabIndex=-1),K(),w.rContainer.appendChild(w.daysContainer),w.innerContainer.appendChild(w.rContainer),e.appendChild(w.innerContainer)}w.config.enableTime&&e.appendChild(function(){w.calendarContainer.classList.add("hasTime"),w.config.noCalendar&&w.calendarContainer.classList.add("noCalendar");var e=x(w.config);w.timeContainer=d("div","flatpickr-time"),w.timeContainer.tabIndex=-1;var n=d("span","flatpickr-time-separator",":"),t=m("flatpickr-hour",{"aria-label":w.l10n.hourAriaLabel});w.hourElement=t.getElementsByTagName("input")[0];var a=m("flatpickr-minute",{"aria-label":w.l10n.minuteAriaLabel});if(w.minuteElement=a.getElementsByTagName("input")[0],w.hourElement.tabIndex=w.minuteElement.tabIndex=-1,w.hourElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getHours():w.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),w.minuteElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getMinutes():e.minutes),w.hourElement.setAttribute("step",w.config.hourIncrement.toString()),w.minuteElement.setAttribute("step",w.config.minuteIncrement.toString()),w.hourElement.setAttribute("min",w.config.time_24hr?"0":"1"),w.hourElement.setAttribute("max",w.config.time_24hr?"23":"12"),w.hourElement.setAttribute("maxlength","2"),w.minuteElement.setAttribute("min","0"),w.minuteElement.setAttribute("max","59"),w.minuteElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(t),w.timeContainer.appendChild(n),w.timeContainer.appendChild(a),w.config.time_24hr&&w.timeContainer.classList.add("time24hr"),w.config.enableSeconds){w.timeContainer.classList.add("hasSeconds");var i=m("flatpickr-second");w.secondElement=i.getElementsByTagName("input")[0],w.secondElement.value=o(w.latestSelectedDateObj?w.latestSelectedDateObj.getSeconds():e.seconds),w.secondElement.setAttribute("step",w.minuteElement.getAttribute("step")),w.secondElement.setAttribute("min","0"),w.secondElement.setAttribute("max","59"),w.secondElement.setAttribute("maxlength","2"),w.timeContainer.appendChild(d("span","flatpickr-time-separator",":")),w.timeContainer.appendChild(i)}return w.config.time_24hr||(w.amPM=d("span","flatpickr-am-pm",w.l10n.amPM[r((w.latestSelectedDateObj?w.hourElement.value:w.config.defaultHour)>11)]),w.amPM.title=w.l10n.toggleTitle,w.amPM.tabIndex=-1,w.timeContainer.appendChild(w.amPM)),w.timeContainer}()),s(w.calendarContainer,"rangeMode","range"===w.config.mode),s(w.calendarContainer,"animate",!0===w.config.animate),s(w.calendarContainer,"multiMonth",w.config.showMonths>1),w.calendarContainer.appendChild(e);var i=void 0!==w.config.appendTo&&void 0!==w.config.appendTo.nodeType;if((w.config.inline||w.config.static)&&(w.calendarContainer.classList.add(w.config.inline?"inline":"static"),w.config.inline&&(!i&&w.element.parentNode?w.element.parentNode.insertBefore(w.calendarContainer,w._input.nextSibling):void 0!==w.config.appendTo&&w.config.appendTo.appendChild(w.calendarContainer)),w.config.static)){var l=d("div","flatpickr-wrapper");w.element.parentNode&&w.element.parentNode.insertBefore(l,w.element),l.appendChild(w.element),w.altInput&&l.appendChild(w.altInput),l.appendChild(w.calendarContainer)}w.config.static||w.config.inline||(void 0!==w.config.appendTo?w.config.appendTo:window.document.body).appendChild(w.calendarContainer)}(),function(){if(w.config.wrap&&["open","close","toggle","clear"].forEach((function(e){Array.prototype.forEach.call(w.element.querySelectorAll("[data-"+e+"]"),(function(n){return N(n,"click",w[e])}))})),w.isMobile)!function(){var e=w.config.enableTime?w.config.noCalendar?"time":"datetime-local":"date";w.mobileInput=d("input",w.input.className+" flatpickr-mobile"),w.mobileInput.tabIndex=1,w.mobileInput.type=e,w.mobileInput.disabled=w.input.disabled,w.mobileInput.required=w.input.required,w.mobileInput.placeholder=w.input.placeholder,w.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",w.selectedDates.length>0&&(w.mobileInput.defaultValue=w.mobileInput.value=w.formatDate(w.selectedDates[0],w.mobileFormatStr)),w.config.minDate&&(w.mobileInput.min=w.formatDate(w.config.minDate,"Y-m-d")),w.config.maxDate&&(w.mobileInput.max=w.formatDate(w.config.maxDate,"Y-m-d")),w.input.getAttribute("step")&&(w.mobileInput.step=String(w.input.getAttribute("step"))),w.input.type="hidden",void 0!==w.altInput&&(w.altInput.type="hidden");try{w.input.parentNode&&w.input.parentNode.insertBefore(w.mobileInput,w.input.nextSibling)}catch(e){}N(w.mobileInput,"change",(function(e){w.setDate(g(e).value,!1,w.mobileFormatStr),ve("onChange"),ve("onClose")}))}();else{var e=l(oe,50);w._debouncedChange=l(P,300),w.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&N(w.daysContainer,"mouseover",(function(e){"range"===w.config.mode&&ie(g(e))})),N(w._input,"keydown",ae),void 0!==w.calendarContainer&&N(w.calendarContainer,"keydown",ae),w.config.inline||w.config.static||N(window,"resize",e),void 0!==window.ontouchstart?N(window.document,"touchstart",Q):N(window.document,"mousedown",Q),N(window.document,"focus",Q,{capture:!0}),!0===w.config.clickOpens&&(N(w._input,"focus",w.open),N(w._input,"click",w.open)),void 0!==w.daysContainer&&(N(w.monthNav,"click",ye),N(w.monthNav,["keyup","increment"],A),N(w.daysContainer,"click",fe)),void 0!==w.timeContainer&&void 0!==w.minuteElement&&void 0!==w.hourElement&&(N(w.timeContainer,["increment"],S),N(w.timeContainer,"blur",S,{capture:!0}),N(w.timeContainer,"click",j),N([w.hourElement,w.minuteElement],["focus","click"],(function(e){return g(e).select()})),void 0!==w.secondElement&&N(w.secondElement,"focus",(function(){return w.secondElement&&w.secondElement.select()})),void 0!==w.amPM&&N(w.amPM,"click",(function(e){S(e)}))),w.config.allowInput&&N(w._input,"blur",te)}}(),(w.selectedDates.length||w.config.noCalendar)&&(w.config.enableTime&&O(w.config.noCalendar?w.latestSelectedDateObj:void 0),Me(!1)),I();var n=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!w.isMobile&&n&&se(),ve("onReady")}(),w}function k(e,n){for(var t=Array.prototype.slice.call(e).filter((function(e){return e instanceof HTMLElement})),a=[],i=0;i":">",'"':""","'":"'","/":"/"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},i.appendMany=function(e,t){if("1.7"===o.fn.jquery.substr(0,3)){var n=o();o.map(t,function(e){n=n.add(e)}),t=n}e.append(t)},i.__cache={};var n=0;return i.GetUniqueElementId=function(e){var t=e.getAttribute("data-select2-id");return null==t&&(e.id?(t=e.id,e.setAttribute("data-select2-id",t)):(e.setAttribute("data-select2-id",++n),t=n.toString())),t},i.StoreData=function(e,t,n){var r=i.GetUniqueElementId(e);i.__cache[r]||(i.__cache[r]={}),i.__cache[r][t]=n},i.GetData=function(e,t){var n=i.GetUniqueElementId(e);return t?i.__cache[n]&&null!=i.__cache[n][t]?i.__cache[n][t]:o(e).data(t):i.__cache[n]},i.RemoveData=function(e){var t=i.GetUniqueElementId(e);null!=i.__cache[t]&&delete i.__cache[t],e.removeAttribute("data-select2-id")},i}),e.define("select2/results",["jquery","./utils"],function(h,f){function r(e,t,n){this.$element=e,this.data=n,this.options=t,r.__super__.constructor.call(this)}return f.Extend(r,f.Observable),r.prototype.render=function(){var e=h('
    ');return this.options.get("multiple")&&e.attr("aria-multiselectable","true"),this.$results=e},r.prototype.clear=function(){this.$results.empty()},r.prototype.displayMessage=function(e){var t=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var n=h(''),r=this.options.get("translations").get(e.message);n.append(t(r(e.args))),n[0].className+=" select2-results__message",this.$results.append(n)},r.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},r.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n",{class:"select2-results__options select2-results__options--nested"});p.append(l),s.append(a),s.append(p)}else this.template(e,t);return f.StoreData(t,"data",e),t},r.prototype.bind=function(t,e){var l=this,n=t.id+"-results";this.$results.attr("id",n),t.on("results:all",function(e){l.clear(),l.append(e.data),t.isOpen()&&(l.setClasses(),l.highlightFirstItem())}),t.on("results:append",function(e){l.append(e.data),t.isOpen()&&l.setClasses()}),t.on("query",function(e){l.hideMessages(),l.showLoading(e)}),t.on("select",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(l.setClasses(),l.options.get("scrollAfterSelect")&&l.highlightFirstItem())}),t.on("open",function(){l.$results.attr("aria-expanded","true"),l.$results.attr("aria-hidden","false"),l.setClasses(),l.ensureHighlightVisible()}),t.on("close",function(){l.$results.attr("aria-expanded","false"),l.$results.attr("aria-hidden","true"),l.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=l.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=l.getHighlightedResults();if(0!==e.length){var t=f.GetData(e[0],"data");"true"==e.attr("aria-selected")?l.trigger("close",{}):l.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e);if(!(n<=0)){var r=n-1;0===e.length&&(r=0);var i=t.eq(r);i.trigger("mouseenter");var o=l.$results.offset().top,s=i.offset().top,a=l.$results.scrollTop()+(s-o);0===r?l.$results.scrollTop(0):s-o<0&&l.$results.scrollTop(a)}}),t.on("results:next",function(){var e=l.getHighlightedResults(),t=l.$results.find("[aria-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var r=t.eq(n);r.trigger("mouseenter");var i=l.$results.offset().top+l.$results.outerHeight(!1),o=r.offset().top+r.outerHeight(!1),s=l.$results.scrollTop()+o-i;0===n?l.$results.scrollTop(0):ithis.$results.outerHeight()||o<0)&&this.$results.scrollTop(i)}},r.prototype.template=function(e,t){var n=this.options.get("templateResult"),r=this.options.get("escapeMarkup"),i=n(e,t);null==i?t.style.display="none":"string"==typeof i?t.innerHTML=r(i):h(t).append(i)},r}),e.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),e.define("select2/selection/base",["jquery","../utils","../keys"],function(n,r,i){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return r.Extend(o,r.Observable),o.prototype.render=function(){var e=n('');return this._tabindex=0,null!=r.GetData(this.$element[0],"old-tabindex")?this._tabindex=r.GetData(this.$element[0],"old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),e.attr("title",this.$element.attr("title")),e.attr("tabindex",this._tabindex),e.attr("aria-disabled","false"),this.$selection=e},o.prototype.bind=function(e,t){var n=this,r=e.id+"-results";this.container=e,this.$selection.on("focus",function(e){n.trigger("focus",e)}),this.$selection.on("blur",function(e){n._handleBlur(e)}),this.$selection.on("keydown",function(e){n.trigger("keypress",e),e.which===i.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){n.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){n.update(e.data)}),e.on("open",function(){n.$selection.attr("aria-expanded","true"),n.$selection.attr("aria-owns",r),n._attachCloseHandler(e)}),e.on("close",function(){n.$selection.attr("aria-expanded","false"),n.$selection.removeAttr("aria-activedescendant"),n.$selection.removeAttr("aria-owns"),n.$selection.trigger("focus"),n._detachCloseHandler(e)}),e.on("enable",function(){n.$selection.attr("tabindex",n._tabindex),n.$selection.attr("aria-disabled","false")}),e.on("disable",function(){n.$selection.attr("tabindex","-1"),n.$selection.attr("aria-disabled","true")})},o.prototype._handleBlur=function(e){var t=this;window.setTimeout(function(){document.activeElement==t.$selection[0]||n.contains(t.$selection[0],document.activeElement)||t.trigger("blur",e)},1)},o.prototype._attachCloseHandler=function(e){n(document.body).on("mousedown.select2."+e.id,function(e){var t=n(e.target).closest(".select2");n(".select2.select2-container--open").each(function(){this!=t[0]&&r.GetData(this,"element").select2("close")})})},o.prototype._detachCloseHandler=function(e){n(document.body).off("mousedown.select2."+e.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o.prototype.isEnabled=function(){return!this.isDisabled()},o.prototype.isDisabled=function(){return this.options.get("disabled")},o}),e.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,r){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html(''),e},i.prototype.bind=function(t,e){var n=this;i.__super__.bind.apply(this,arguments);var r=t.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",r).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",r),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("blur",function(e){}),t.on("focus",function(e){t.isOpen()||n.$selection.trigger("focus")})},i.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),r=this.display(t,n);n.empty().append(r);var i=t.title||t.text;i?n.attr("title",i):n.removeAttr("title")}else this.clear()},i}),e.define("select2/selection/multiple",["jquery","./base","../utils"],function(i,e,l){function n(e,t){n.__super__.constructor.apply(this,arguments)}return l.Extend(n,e),n.prototype.render=function(){var e=n.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('
      '),e},n.prototype.bind=function(e,t){var r=this;n.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){r.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(e){if(!r.isDisabled()){var t=i(this).parent(),n=l.GetData(t[0],"data");r.trigger("unselect",{originalEvent:e,data:n})}})},n.prototype.clear=function(){var e=this.$selection.find(".select2-selection__rendered");e.empty(),e.removeAttr("title")},n.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},n.prototype.selectionContainer=function(){return i('
    • ×
    • ')},n.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],n=0;n×');a.StoreData(r[0],"data",t),this.$selection.find(".select2-selection__rendered").prepend(r)}},e}),e.define("select2/selection/search",["jquery","../utils","../keys"],function(r,a,l){function e(e,t,n){e.call(this,t,n)}return e.prototype.render=function(e){var t=r('');this.$searchContainer=t,this.$search=t.find("input");var n=e.call(this);return this._transferTabIndex(),n},e.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),t.on("open",function(){r.$search.attr("aria-controls",i),r.$search.trigger("focus")}),t.on("close",function(){r.$search.val(""),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.trigger("focus")}),t.on("enable",function(){r.$search.prop("disabled",!1),r._transferTabIndex()}),t.on("disable",function(){r.$search.prop("disabled",!0)}),t.on("focus",function(e){r.$search.trigger("focus")}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")}),this.$selection.on("focusin",".select2-search--inline",function(e){r.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){r._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented(),e.which===l.BACKSPACE&&""===r.$search.val()){var t=r.$searchContainer.prev(".select2-selection__choice");if(0this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),e.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("select",function(){r._checkIfMaximumSelected()})},e.prototype.query=function(e,t,n){var r=this;this._checkIfMaximumSelected(function(){e.call(r,t,n)})},e.prototype._checkIfMaximumSelected=function(e,n){var r=this;this.current(function(e){var t=null!=e?e.length:0;0=r.maximumSelectionLength?r.trigger("results:message",{message:"maximumSelected",args:{maximum:r.maximumSelectionLength}}):n&&n()})},e}),e.define("select2/dropdown",["jquery","./utils"],function(t,e){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return e.Extend(n,e.Observable),n.prototype.render=function(){var e=t('');return e.attr("dir",this.options.get("dir")),this.$dropdown=e},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),e.define("select2/dropdown/search",["jquery","../utils"],function(o,e){function t(){}return t.prototype.render=function(e){var t=e.call(this),n=o('');return this.$searchContainer=n,this.$search=n.find("input"),t.prepend(n),t},t.prototype.bind=function(e,t,n){var r=this,i=t.id+"-results";e.call(this,t,n),this.$search.on("keydown",function(e){r.trigger("keypress",e),r._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(e){o(this).off("keyup")}),this.$search.on("keyup input",function(e){r.handleSearch(e)}),t.on("open",function(){r.$search.attr("tabindex",0),r.$search.attr("aria-controls",i),r.$search.trigger("focus"),window.setTimeout(function(){r.$search.trigger("focus")},0)}),t.on("close",function(){r.$search.attr("tabindex",-1),r.$search.removeAttr("aria-controls"),r.$search.removeAttr("aria-activedescendant"),r.$search.val(""),r.$search.trigger("blur")}),t.on("focus",function(){t.isOpen()||r.$search.trigger("focus")}),t.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(r.showSearch(e)?r.$searchContainer.removeClass("select2-search--hide"):r.$searchContainer.addClass("select2-search--hide"))}),t.on("results:focus",function(e){e.data._resultId?r.$search.attr("aria-activedescendant",e.data._resultId):r.$search.removeAttr("aria-activedescendant")})},t.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},t.prototype.showSearch=function(e,t){return!0},t}),e.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,r){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,r)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),r=t.length-1;0<=r;r--){var i=t[r];this.placeholder.id===i.id&&n.splice(r,1)}return n},e}),e.define("select2/dropdown/infiniteScroll",["jquery"],function(n){function e(e,t,n,r){this.lastParams={},e.call(this,t,n,r),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return e.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&(this.$results.append(this.$loadingMore),this.loadMoreIfNeeded())},e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("query",function(e){r.lastParams=e,r.loading=!0}),t.on("query:append",function(e){r.lastParams=e,r.loading=!0}),this.$results.on("scroll",this.loadMoreIfNeeded.bind(this))},e.prototype.loadMoreIfNeeded=function(){var e=n.contains(document.documentElement,this.$loadingMore[0]);if(!this.loading&&e){var t=this.$results.offset().top+this.$results.outerHeight(!1);this.$loadingMore.offset().top+this.$loadingMore.outerHeight(!1)<=t+50&&this.loadMore()}},e.prototype.loadMore=function(){this.loading=!0;var e=n.extend({},{page:1},this.lastParams);e.page++,this.trigger("query:append",e)},e.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},e.prototype.createLoadingMore=function(){var e=n('
    • '),t=this.options.get("translations").get("loadingMore");return e.html(t(this.lastParams)),e},e}),e.define("select2/dropdown/attachBody",["jquery","../utils"],function(f,a){function e(e,t,n){this.$dropdownParent=f(n.get("dropdownParent")||document.body),e.call(this,t,n)}return e.prototype.bind=function(e,t,n){var r=this;e.call(this,t,n),t.on("open",function(){r._showDropdown(),r._attachPositioningHandler(t),r._bindContainerResultHandlers(t)}),t.on("close",function(){r._hideDropdown(),r._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},e.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},e.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},e.prototype.render=function(e){var t=f(""),n=e.call(this);return t.append(n),this.$dropdownContainer=t},e.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},e.prototype._bindContainerResultHandlers=function(e,t){if(!this._containerResultsHandlersBound){var n=this;t.on("results:all",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:append",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("results:message",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("select",function(){n._positionDropdown(),n._resizeDropdown()}),t.on("unselect",function(){n._positionDropdown(),n._resizeDropdown()}),this._containerResultsHandlersBound=!0}},e.prototype._attachPositioningHandler=function(e,t){var n=this,r="scroll.select2."+t.id,i="resize.select2."+t.id,o="orientationchange.select2."+t.id,s=this.$container.parents().filter(a.hasScroll);s.each(function(){a.StoreData(this,"select2-scroll-position",{x:f(this).scrollLeft(),y:f(this).scrollTop()})}),s.on(r,function(e){var t=a.GetData(this,"select2-scroll-position");f(this).scrollTop(t.y)}),f(window).on(r+" "+i+" "+o,function(e){n._positionDropdown(),n._resizeDropdown()})},e.prototype._detachPositioningHandler=function(e,t){var n="scroll.select2."+t.id,r="resize.select2."+t.id,i="orientationchange.select2."+t.id;this.$container.parents().filter(a.hasScroll).off(n),f(window).off(n+" "+r+" "+i)},e.prototype._positionDropdown=function(){var e=f(window),t=this.$dropdown.hasClass("select2-dropdown--above"),n=this.$dropdown.hasClass("select2-dropdown--below"),r=null,i=this.$container.offset();i.bottom=i.top+this.$container.outerHeight(!1);var o={height:this.$container.outerHeight(!1)};o.top=i.top,o.bottom=i.top+o.height;var s=this.$dropdown.outerHeight(!1),a=e.scrollTop(),l=e.scrollTop()+e.height(),c=ai.bottom+s,d={left:i.left,top:o.bottom},p=this.$dropdownParent;"static"===p.css("position")&&(p=p.offsetParent());var h={top:0,left:0};(f.contains(document.body,p[0])||p[0].isConnected)&&(h=p.offset()),d.top-=h.top,d.left-=h.left,t||n||(r="below"),u||!c||t?!c&&u&&t&&(r="below"):r="above",("above"==r||t&&"below"!==r)&&(d.top=o.top-h.top-s),null!=r&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+r),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+r)),this.$dropdownContainer.css(d)},e.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},e.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},e}),e.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(e,t,n,r){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,r)}return e.prototype.showSearch=function(e,t){return!(function e(t){for(var n=0,r=0;r');return e.attr("dir",this.options.get("dir")),this.$container=e,this.$container.addClass("select2-container--"+this.options.get("theme")),u.StoreData(e[0],"element",this.$element),e},d}),e.define("jquery-mousewheel",["jquery"],function(e){return e}),e.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults","./select2/utils"],function(i,e,o,t,s){if(null==i.fn.select2){var a=["open","close","destroy"];i.fn.select2=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var e=i.extend(!0,{},t);new o(i(this),e)}),this;if("string"!=typeof t)throw new Error("Invalid arguments for Select2: "+t);var n,r=Array.prototype.slice.call(arguments,1);return this.each(function(){var e=s.GetData(this,"select2");null==e&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),n=e[t].apply(e,r)}),-1e;++e){var r=a[e].trim().match(/[^\.]+/i)[0];n(t(this),r,i)}})}function i(e){t.fn[e+"First"]=function(){var n=t.makeArray(arguments),i=n.shift();return i&&(t.fn[e].apply(this,arguments),r(this,i)),this}}var a=t.fn.jquery.split("."),s=parseInt(a[0]),f=parseInt(a[1]),u=1>s||1==s&&7>f;i("bind"),i("one"),t.fn.delegateFirst=function(){var e=t.makeArray(arguments),n=e[1];return n&&(e.splice(0,2),t.fn.delegate.apply(this,arguments),r(this,n,!0)),this},t.fn.liveFirst=function(){var e=t.makeArray(arguments);return e.unshift(this.selector),t.fn.delegateFirst.apply(t(document),e),this},u||(t.fn.onFirst=function(e,n){var i=t(this),a="string"==typeof n;if(t.fn.on.apply(i,arguments),"object"==typeof e)for(type in e)e.hasOwnProperty(type)&&r(i,type,a);else"string"==typeof e&&r(i,e,a);return i})})(jQuery);; !function(e){var n=!1;if("function"==typeof define&&define.amd&&(define(e),n=!0),"object"==typeof exports&&(module.exports=e(),n=!0),!n){var o=window.Cookies,t=window.Cookies=e();t.noConflict=function(){return window.Cookies=o,t}}}(function(){function e(){for(var e=0,n={};e1){if(i=e({path:"/"},t.defaults,i),"number"==typeof i.expires){var a=new Date;a.setMilliseconds(a.getMilliseconds()+864e5*i.expires),i.expires=a}try{c=JSON.stringify(r),/^[\{\[]/.test(c)&&(r=c)}catch(e){}return r=o.write?o.write(r,n):encodeURIComponent(String(r)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),n=encodeURIComponent(String(n)),n=n.replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent),n=n.replace(/[\(\)]/g,escape),document.cookie=[n,"=",r,i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}n||(c={});for(var p=document.cookie?document.cookie.split("; "):[],s=/(%[0-9A-Z]{2})+/g,d=0;d>> 0; // 3. If len is 0, return false. if (len === 0) { return false; } // 4. Let n be ? ToInteger(fromIndex). // (If fromIndex is undefined, this step produces the value 0.) var n = fromIndex | 0; // 5. If n ≥ 0, then // a. Let k be n. // 6. Else n < 0, // a. Let k be len + n. // b. If k < 0, let k be 0. var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); function sameValueZero(x, y) { return x === y || (typeof x === 'number' && typeof y === 'number' && isNaN(x) && isNaN(y)); } // 7. Repeat, while k < len while (k < len) { // a. Let elementK be the result of ? Get(O, ! ToString(k)). // b. If SameValueZero(searchElement, elementK) is true, return true. if (sameValueZero(o[k], searchElement)) { return true; } // c. Increase k by 1. k++; } // 8. Return false return false; } }); } !function ($, options) { if (options.debug) { console.log('PYS:', options); } var uniqueId = {}; var dummyPinterest = function () { /** * Public API */ return { isEnabled: function () {}, disable: function () {}, loadPixel: function () {}, fireEvent: function (name, data) { return false; }, onCommentEvent: function () {}, onDownloadEvent: function (params) {}, onFormEvent: function (params) {}, onWooAddToCartOnButtonEvent: function (product_id) {}, onWooAddToCartOnSingleEvent: function (product_id, qty, is_variable, is_external, $form) {}, onWooRemoveFromCartEvent: function (cart_item_hash) {}, onEddAddToCartOnButtonEvent: function (download_id, price_index, qty) {}, onEddRemoveFromCartEvent: function (item) {}, onPageScroll: function (event) {}, onTime: function (event) {}, } }(); var dummyBing = function () { /** * Public API */ return { isEnabled: function () {}, disable: function () {}, loadPixel: function () {}, fireEvent: function (name, data) { return false; }, onAdSenseEvent: function () {}, onClickEvent: function (params) {}, onWatchVideo: function (params) {}, onCommentEvent: function () {}, onFormEvent: function (params) {}, onDownloadEvent: function (params) {}, onWooAddToCartOnButtonEvent: function (product_id) {}, onWooAddToCartOnSingleEvent: function (product_id, qty, is_variable, is_external, $form) {}, onWooRemoveFromCartEvent: function (cart_item_hash) {}, onWooAffiliateEvent: function (product_id) {}, onWooPayPalEvent: function () {}, onEddAddToCartOnButtonEvent: function (download_id, price_index, qty) {}, onEddRemoveFromCartEvent: function (item) {}, onPageScroll: function (event) {}, onTime: function (event) {}, } }(); var Utils = function (options) { var Pinterest = dummyPinterest; var Bing = dummyBing; var gtag_loaded = false; let isNewSession = checkSession(); var utmTerms = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content']; var utmId = ['fbadid', 'gadid', 'padid', 'bingid']; function validateEmail(email) { var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } function getDomain(url) { url = url.replace(/(https?:\/\/)?(www.)?/i, ''); if (url.indexOf('/') !== -1) { return url.split('/')[0]; } return url; } function loadPixels() { if (!options.gdpr.all_disabled_by_api) { if (!options.gdpr.facebook_disabled_by_api) { Facebook.loadPixel(); } if (!options.gdpr.analytics_disabled_by_api) { Analytics.loadPixel(); } if (!options.gdpr.pinterest_disabled_by_api) { Pinterest.loadPixel(); } if (!options.gdpr.bing_disabled_by_api) { Bing.loadPixel(); } } if (options.gdpr.consent_magic_integration_enabled && typeof CS_Data !== "undefined") { if (typeof CS_Data.cs_google_analytics_consent_mode !== "undefined" && CS_Data.cs_google_analytics_consent_mode == 1) { Analytics.loadPixel(); } } } function checkSession() { if( Cookies.get('pys_start_session') === undefined || Cookies.get('pys_session_limit') === undefined) { firstVisit = true; return true } return false } function getTrafficSource() { try { let referrer = document.referrer.toString(), source; let direct = referrer.length === 0; let internal = direct ? false : referrer.indexOf(options.siteUrl) === 0; let external = !direct && !internal; if (external === false) { source = 'direct'; } else { source = referrer; } if (source !== 'direct') { // leave only domain (Issue #70) return getDomain(source); } else { return source; } } catch (e) { console.error(e); return 'direct'; } } /** * Return query variables object with where property name is query variable * and property value is query variable value. */ function getQueryVars() { try { var result = {}, tmp = []; window.location.search .substr(1) .split("&") .forEach(function (item) { tmp = item.split('='); if (tmp.length > 1) { result[tmp[0]] = tmp[1]; } }); return result; } catch (e) { console.error(e); return {}; } } function getLandingPageValue() { let name = "pys_landing_page" if(options.visit_data_model === "last_visit") { name = "last_pys_landing_page" } if(Cookies.get(name) && Cookies.get(name) !== "undefined") { return Cookies.get(name); } else if(options.hasOwnProperty("tracking_analytics") && options.tracking_analytics.TrafficLanding){ return options.tracking_analytics.TrafficLanding; } else{ return ""; } } function getTrafficSourceValue() { let name = "pysTrafficSource" if(options.visit_data_model === "last_visit") { name = "last_pysTrafficSource" } if(Cookies.get(name) && Cookies.get(name) !== "undefined") { return Cookies.get(name); } else if(options.hasOwnProperty("tracking_analytics") && options.tracking_analytics.TrafficSource){ return options.tracking_analytics.TrafficSource; } else{ return ""; } } function getUTMId(useLast = false) { try { let cookiePrefix = 'pys_' let terms = []; if (useLast) { cookiePrefix = 'last_pys_' } $.each(utmId, function (index, name) { if (Cookies.get(cookiePrefix + name)) { terms[name] = Cookies.get(cookiePrefix + name) } else if(options.hasOwnProperty("tracking_analytics") && options.tracking_analytics.TrafficUtmsId[name]) { terms[name] = filterEmails(options.tracking_analytics.TrafficUtmsId[name]) } }); return terms; } catch (e) { console.error(e); return []; } } /** * Return UTM terms from request query variables or from cookies. */ function getUTMs(useLast = false) { try { let cookiePrefix = 'pys_' if(useLast) { cookiePrefix = 'last_pys_' } let terms = []; $.each(utmTerms, function (index, name) { if (Cookies.get(cookiePrefix + name)) { let value = Cookies.get(cookiePrefix + name); terms[name] = filterEmails(value); // do not allow email in request params (Issue #70) } else if(options.hasOwnProperty("tracking_analytics") && options.tracking_analytics.TrafficUtms[name]) { terms[name] = filterEmails(options.tracking_analytics.TrafficUtms[name]) } }); return terms; } catch (e) { console.error(e); return []; } } function getDateTime() { var dateTime = new Array(); var date = new Date(), days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], hours = ['00-01', '01-02', '02-03', '03-04', '04-05', '05-06', '06-07', '07-08', '08-09', '09-10', '10-11', '11-12', '12-13', '13-14', '14-15', '15-16', '16-17', '17-18', '18-19', '19-20', '20-21', '21-22', '22-23', '23-24' ]; dateTime.push(hours[date.getHours()]); dateTime.push(days[date.getDay()]); dateTime.push(months[date.getMonth()]); return dateTime; } function filterEmails(value) { return validateEmail(value) ? undefined : value; } /** * PUBLIC API */ return { PRODUCT_SIMPLE : 0, PRODUCT_VARIABLE : 1, PRODUCT_BUNDLE : 2, PRODUCT_GROUPED : 3, utmTerms : utmTerms, utmId : utmId, fireEventForAllPixel:function(functionName,events){ if (events.hasOwnProperty(Facebook.tag())) Facebook[functionName](events[Facebook.tag()]); if (events.hasOwnProperty(Analytics.tag())) Analytics[functionName](events[Analytics.tag()]); if (events.hasOwnProperty(Pinterest.tag())) Pinterest[functionName](events[Pinterest.tag()]); if (events.hasOwnProperty(Bing.tag())) Bing[functionName](events[Bing.tag()]); }, setupPinterestObject: function () { Pinterest = window.pys.Pinterest || Pinterest; return Pinterest; }, setupBingObject: function () { Bing = window.pys.Bing || Bing; return Bing; }, // Clone all object members to another and return it copyProperties: function (from, to) { for (var key in from) { if("function" == typeof from[key]) { continue; } to[key] = from[key]; } return to; }, manageCookies: function () { if (options.gdpr.cookiebot_integration_enabled && typeof Cookiebot !== 'undefined') { if (Cookiebot.consented === false && !Cookiebot.consent['marketing'] && !Cookiebot.consent['statistics']) { return; } } let cm_consent_not_expressed = false; if ( options.gdpr.consent_magic_integration_enabled && window.CS_Data !== undefined && window.CS_Data.cs_refresh_after_consent == 1 ) { if ( Cookies.get( 'cs_viewed_cookie_policy' ) === undefined ) { cm_consent_not_expressed = true; } } if( !cm_consent_not_expressed && isNewSession && !options.cookie.disabled_all_cookie && !options.cookie.disabled_start_session_cookie) { let duration = options.last_visit_duration * 60000 var now = new Date(); now.setTime(now.getTime() + duration); Cookies.set('pys_session_limit', true,{ expires: now }) Cookies.set('pys_start_session', true); } if (options.gdpr.ajax_enabled && !options.gdpr.consent_magic_integration_enabled) { // retrieves actual PYS GDPR filters values which allow to avoid cache issues $.get({ url: options.ajaxUrl, dataType: 'json', data: { action: 'pys_get_gdpr_filters_values' }, success: function (res) { if (res.success) { options.gdpr.all_disabled_by_api = res.data.all_disabled_by_api; options.gdpr.facebook_disabled_by_api = res.data.facebook_disabled_by_api; options.gdpr.tiktok_disabled_by_api = res.data.tiktok_disabled_by_api; options.gdpr.analytics_disabled_by_api = res.data.analytics_disabled_by_api; options.gdpr.google_ads_disabled_by_api = res.data.google_ads_disabled_by_api; options.gdpr.pinterest_disabled_by_api = res.data.pinterest_disabled_by_api; options.gdpr.bing_disabled_by_api = res.data.bing_disabled_by_api; options.cookie.externalID_disabled_by_api = res.data.externalID_disabled_by_api; options.cookie.disabled_all_cookie = res.data.disabled_all_cookie; options.cookie.disabled_advanced_form_data_cookie = res.data.disabled_advanced_form_data_cookie; options.cookie.disabled_landing_page_cookie = res.data.disabled_landing_page_cookie; options.cookie.disabled_first_visit_cookie = res.data.disabled_first_visit_cookie; options.cookie.disabled_trafficsource_cookie = res.data.disabled_trafficsource_cookie; options.cookie.disabled_utmTerms_cookie = res.data.disabled_utmTerms_cookie; options.cookie.disabled_utmId_cookie = res.data.disabled_utmId_cookie; } } }); } if (options.ajaxForServerEvent && !Cookies.get('pbid') && Facebook.isEnabled()) { jQuery.ajax({ url: options.ajaxUrl, dataType: 'json', data: { action: 'pys_get_pbid' }, success: function (res) { if (res.data && res.data.pbid != false && options.send_external_id) { if(!(options.cookie.disabled_all_cookie || options.cookie.externalID_disabled_by_api)){ var expires = parseInt(options.external_id_expire || 180); Cookies.set('pbid', res.data.pbid, { expires: expires, path: '/' }); } if(options.hasOwnProperty('facebook')) { options.facebook.advancedMatching = { ...options.facebook.advancedMatching, // распыляем текущие значения advancedMatching external_id: res.data.pbid }; } } } }); } else if (Cookies.get('pbid') && Facebook.isEnabled()){ if(Facebook.advancedMatching() && Facebook.advancedMatching().external_id && !(options.cookie.disabled_all_cookie || options.cookie.externalID_disabled_by_api)){ let expires = parseInt(options.external_id_expire || 180); Cookies.set('pbid', Facebook.advancedMatching().external_id, { expires: expires, path: '/' }); } } let expires = parseInt(options.cookie_duration); // days let queryVars = getQueryVars(); let landing = window.location.href.split('?')[0]; try { // save data for first visit if(Cookies.get('pys_first_visit') === undefined && (!options.cookie.disabled_all_cookie)) { if(!options.cookie.disabled_first_visit_cookie) { Cookies.set('pys_first_visit', true, { expires: expires }); } else { Cookies.remove('pys_first_visit') } if(!options.cookie.disabled_trafficsource_cookie) { Cookies.set('pysTrafficSource', getTrafficSource(), { expires: expires }); } else { Cookies.remove('pysTrafficSource') } if(!options.cookie.disabled_landing_page_cookie) { Cookies.set('pys_landing_page',landing,{ expires: expires }); } else { Cookies.remove('pys_landing_page') } if(!options.cookie.disabled_utmTerms_cookie) { $.each(utmTerms, function (index, name) { if (queryVars.hasOwnProperty(name)) { Cookies.set('pys_' + name, queryVars[name], { expires: expires }); } else { Cookies.remove('pys_' + name) } }); } else { $.each(utmTerms, function (index, name) { Cookies.remove('pys_' + name) }); } if(!options.cookie.disabled_utmId_cookie) { $.each(utmId,function(index,name) { if (queryVars.hasOwnProperty(name)) { Cookies.set('pys_' + name, queryVars[name], { expires: expires }); } else { Cookies.remove('pys_' + name) } }) } else { $.each(utmId, function (index, name) { Cookies.remove('pys_' + name) }); } } // save data for last visit if it new session if(isNewSession && (!options.cookie.disabled_all_cookie)) { if(!options.cookie.disabled_trafficsource_cookie) { Cookies.set('last_pysTrafficSource', getTrafficSource(), { expires: expires }); } else { Cookies.remove('last_pysTrafficSource') } if(!options.cookie.disabled_landing_page_cookie) { Cookies.set('last_pys_landing_page',landing,{ expires: expires }); } else { Cookies.remove('last_pys_landing_page') } if(!options.cookie.disabled_utmTerms_cookie) { $.each(utmTerms, function (index, name) { if (queryVars.hasOwnProperty(name)) { Cookies.set('last_pys_' + name, queryVars[name], { expires: expires }); } else { Cookies.remove('last_pys_' + name) } }); } else { $.each(utmTerms, function (index, name) { Cookies.remove('last_pys_' + name) }); } if(!options.cookie.disabled_utmId_cookie) { $.each(utmId,function(index,name) { if (queryVars.hasOwnProperty(name)) { Cookies.set('last_pys_' + name, queryVars[name], { expires: expires }); } else { Cookies.remove('last_pys_' + name) } }) } else { $.each(utmId, function (index, name) { Cookies.remove('last_pys_' + name) }); } } if(options.cookie.disabled_start_session_cookie) { Cookies.remove('pys_start_session') Cookies.remove('pys_session_limit') } if(options.cookie.disabled_all_cookie) { Cookies.remove('pys_first_visit') Cookies.remove('pysTrafficSource') Cookies.remove('pys_landing_page') Cookies.remove('last_pys_landing_page') Cookies.remove('last_pysTrafficSource') Cookies.remove('pys_start_session') Cookies.remove('pys_session_limit') $.each(Utils.utmTerms, function (index, name) { Cookies.remove('pys_' + name) }); $.each(Utils.utmId,function(index,name) { Cookies.remove('pys_' + name) }) $.each(Utils.utmTerms, function (index, name) { Cookies.remove('last_pys_' + name) }); $.each(Utils.utmId,function(index,name) { Cookies.remove('last_pys_' + name) }); } } catch (e) { console.error(e); } }, /** * Generate unique ID */ generateUniqueId : function (event) { if(event.eventID.length == 0 || (event.type == "static" && options.ajaxForServerStaticEvent) || (event.type !== "static" && options.ajaxForServerEvent)) { let idKey = event.hasOwnProperty('custom_event_post_id') ? event.custom_event_post_id : event.e_id; if (!uniqueId.hasOwnProperty(idKey)) { uniqueId[idKey] = pys_generate_token(); } return uniqueId[idKey]; } else if(event.eventID.length !== 0) { return event.eventID; } }, sendServerAjaxRequest : function(url, data) { jQuery.ajax({ type: 'POST', url: url, data: data, headers: { 'Cache-Control': 'no-cache' }, success: function () {}, }); }, // clone object clone: function(obj) { var copy; // Handle the 3 simple types, and null or undefined if (null == obj || "object" != typeof obj) return obj; // Handle Date if (obj instanceof Date) { copy = new Date(); copy.setTime(obj.getTime()); return copy; } // Handle Array if (obj instanceof Array) { copy = []; for (var i = 0, len = obj.length; i < len; i++) { if("function" == typeof obj[i]) { continue; } copy[i] = Utils.clone(obj[i]); } return copy; } // Handle Object if (obj instanceof Object) { copy = {}; for (var attr in obj) { if (obj.hasOwnProperty(attr)) { if("function" == typeof obj[attr]) { continue; } copy[attr] = Utils.clone(obj[attr]); } } return copy; } return obj; }, // Returns array of elements with given tag name getTagsAsArray: function (tag) { return [].slice.call(document.getElementsByTagName(tag)); }, getRequestParams: function () { return []; }, /** * CUSTOM EVENTS */ setupMouseOverClickEvents: function (eventId, triggers) { // Non-default binding used to avoid situations when some code in external js // stopping events propagation, eg. returns false, and our handler will never called document.addEventListener('mouseover', function(event) { var matchedElements = Array.from(document.querySelectorAll(triggers)); if (matchedElements.includes(event.target)) { if (event.target.classList.contains('pys-mouse-over-' + eventId)) { return true; } else { event.target.classList.add('pys-mouse-over-' + eventId); } Utils.fireTriggerEvent(eventId); } }); }, setupCSSClickEvents: function (eventId, triggers) { // Non-default binding used to avoid situations when some code in external js // stopping events propagation, eg. returns false, and our handler will never called document.addEventListener('click', function(event) { var matchedElements = Array.from(document.querySelectorAll(triggers)); if (matchedElements.includes(event.target)) { console.log(event.target) Utils.fireTriggerEvent(eventId); } }, true); }, setupURLClickEvents: function () { // Non-default binding used to avoid situations when some code in external js // stopping events propagation, eg. returns false, and our handler will never called $('a[data-pys-event-id]').onFirst('click', function (evt) { $(this).attr('data-pys-event-id').split(',').forEach(function (eventId) { eventId = parseInt(eventId); if (isNaN(eventId) === false) { Utils.fireTriggerEvent(eventId); } }); }); }, setupScrollPosEvents: function (eventId, triggers) { var scrollPosThresholds = {}, docHeight = $(document).height() - $(window).height(); // convert % to absolute positions $.each(triggers, function (index, scrollPos) { // convert % to pixels scrollPos = docHeight * scrollPos / 100; scrollPos = Math.round(scrollPos); scrollPosThresholds[scrollPos] = eventId; }); $(document).on("scroll",function () { var scrollPos = $(window).scrollTop(); $.each(scrollPosThresholds, function (threshold, eventId) { // position has not reached yes if (scrollPos <= threshold) { return true; } // fire event only once if (eventId === null) { return true; } else { scrollPosThresholds[threshold] = null; } Utils.fireTriggerEvent(eventId); }); }); }, setupCommentEvents : function (eventId,triggers) { $('form.comment-form').on("submit",function () { Utils.fireTriggerEvent(eventId); }); }, /** * Events */ fireTriggerEvent: function (eventId) { if (!options.triggerEvents.hasOwnProperty(eventId)) { return; } var event = {}; var events = options.triggerEvents[eventId]; if (events.hasOwnProperty('facebook')) { event = events.facebook; Facebook.fireEvent(event.name, event); } if (events.hasOwnProperty('ga')) { event = events.ga; Analytics.fireEvent(event.name, event); } if (events.hasOwnProperty('pinterest')) { event = events.pinterest; Pinterest.fireEvent(event.name, event); } if (events.hasOwnProperty('bing')) { event = events.bing; Bing.fireEvent(event.name, event); } }, fireStaticEvents: function (pixel) { if (options.staticEvents.hasOwnProperty(pixel)) { $.each(options.staticEvents[pixel], function (eventName, events) { $.each(events, function (index, eventData) { eventData.fired = eventData.fired || false; if (!eventData.fired) { var fired = false; // fire event if ('facebook' === pixel) { fired = Facebook.fireEvent(eventData.name, eventData); } else if ('ga' === pixel) { fired = Analytics.fireEvent(eventData.name, eventData); } else if ('pinterest' === pixel) { fired = Pinterest.fireEvent(eventData.name, eventData); } else if ('bing' === pixel) { fired = Bing.fireEvent(eventData.name, eventData); } // prevent event double event firing eventData.fired = fired; } }); }); } }, /** * Load tag's JS * * @link: https://developers.google.com/analytics/devguides/collection/gtagjs/ * @link: https://developers.google.com/analytics/devguides/collection/gtagjs/custom-dims-mets */ loadGoogleTag: function (id) { if (!gtag_loaded) { (function (window, document, src) { var a = document.createElement('script'), m = document.getElementsByTagName('script')[0]; a.async = 1; a.src = src; m.parentNode.insertBefore(a, m); })(window, document, '//www.googletagmanager.com/gtag/js?id=' + id); window.dataLayer = window.dataLayer || []; window.gtag = window.gtag || function gtag() { dataLayer.push(arguments); }; if ( options.google_consent_mode ) { let data = {}; data[ 'analytics_storage' ] = options.gdpr.analytics_storage.enabled ? options.gdpr.analytics_storage.value : 'granted'; data[ 'ad_storage' ] = options.gdpr.ad_storage.enabled ? options.gdpr.ad_storage.value : 'granted'; data[ 'ad_user_data' ] = options.gdpr.ad_user_data.enabled ? options.gdpr.ad_user_data.value : 'granted'; data[ 'ad_personalization' ] = options.gdpr.ad_personalization.enabled ? options.gdpr.ad_personalization.value : 'granted'; gtag( 'consent', 'default', data ); } gtag('js', new Date()); gtag_loaded = true; } }, /** * GDPR */ loadPixels: function () { if (options.gdpr.ajax_enabled && !options.gdpr.consent_magic_integration_enabled) { // retrieves actual PYS GDPR filters values which allow to avoid cache issues $.get({ url: options.ajaxUrl, dataType: 'json', data: { action: 'pys_get_gdpr_filters_values' }, success: function (res) { if (res.success) { options.gdpr.all_disabled_by_api = res.data.all_disabled_by_api; options.gdpr.facebook_disabled_by_api = res.data.facebook_disabled_by_api; options.gdpr.analytics_disabled_by_api = res.data.analytics_disabled_by_api; options.gdpr.google_ads_disabled_by_api = res.data.google_ads_disabled_by_api; options.gdpr.pinterest_disabled_by_api = res.data.pinterest_disabled_by_api; options.gdpr.bing_disabled_by_api = res.data.bing_disabled_by_api; options.cookie.externalID_disabled_by_api = res.data.externalID_disabled_by_api; options.cookie.disabled_all_cookie = res.data.disabled_all_cookie; options.cookie.disabled_advanced_form_data_cookie = res.data.disabled_advanced_form_data_cookie; options.cookie.disabled_landing_page_cookie = res.data.disabled_landing_page_cookie; options.cookie.disabled_first_visit_cookie = res.data.disabled_first_visit_cookie; options.cookie.disabled_trafficsource_cookie = res.data.disabled_trafficsource_cookie; options.cookie.disabled_utmTerms_cookie = res.data.disabled_utmTerms_cookie; options.cookie.disabled_utmId_cookie = res.data.disabled_utmId_cookie; } loadPixels(); } }); } else { loadPixels(); } }, consentGiven: function (pixel) { /** * ConsentMagic */ if ( options.gdpr.consent_magic_integration_enabled && typeof CS_Data !== "undefined" ) { var test_prefix = CS_Data.test_prefix; if ( ( typeof CS_Data.cs_google_consent_mode_enabled !== "undefined" && CS_Data.cs_google_consent_mode_enabled == 1 ) && ( pixel == 'analytics' || pixel == 'google_ads' ) ) { if ( CS_Data.cs_cache_enabled == 0 || ( CS_Data.cs_cache_enabled == 1 && window.CS_Cache && window.CS_Cache.check_status ) ) { return true; } else { return false; } } if( pixel == 'facebook' && ( CS_Data.cs_script_cat.facebook == 0 || CS_Data.cs_script_cat.facebook == CS_Data.cs_necessary_cat_id ) ) { return true; } else if( pixel == 'bing' && ( CS_Data.cs_script_cat.bing == 0 || CS_Data.cs_script_cat.bing == CS_Data.cs_necessary_cat_id ) ) { return true; } else if( pixel == 'analytics' && ( CS_Data.cs_script_cat.analytics == 0 || CS_Data.cs_script_cat.analytics == CS_Data.cs_necessary_cat_id ) ) { return true; } else if( pixel == 'google_ads' && ( CS_Data.cs_script_cat.gads == 0 || CS_Data.cs_script_cat.gads == CS_Data.cs_necessary_cat_id ) ) { return true; } else if( pixel == 'pinterest' && ( CS_Data.cs_script_cat.pinterest == 0 || CS_Data.cs_script_cat.pinterest == CS_Data.cs_necessary_cat_id ) ) { return true; } else if( pixel == 'tiktok' && ( CS_Data.cs_script_cat.tiktok == 0 || CS_Data.cs_script_cat.tiktok == CS_Data.cs_necessary_cat_id ) ) { return true; } var substring = "cs_enabled_cookie_term"; var theCookies = document.cookie.split( ';' ); for ( var i = 1; i <= theCookies.length; i++ ) { if ( theCookies[ i - 1 ].indexOf( substring ) !== -1 ) { var categoryCookie = theCookies[ i - 1 ].replace( 'cs_enabled_cookie_term' + test_prefix + '_', '' ); categoryCookie = Number( categoryCookie.replace( /\D+/g, "" ) ); var cs_cookie_val = Cookies.get( 'cs_enabled_cookie_term' + test_prefix + '_' + categoryCookie ); if ( categoryCookie === CS_Data.cs_script_cat.facebook && pixel == 'facebook' ) { return cs_cookie_val == 'yes'; } else if ( categoryCookie === CS_Data.cs_script_cat.bing && pixel == 'bing' ) { return cs_cookie_val == 'yes'; } else if ( categoryCookie === CS_Data.cs_script_cat.analytics && pixel == 'analytics' ) { return cs_cookie_val == 'yes'; } else if ( categoryCookie === CS_Data.cs_script_cat.gads && pixel == 'google_ads' ) { return cs_cookie_val == 'yes'; } else if ( categoryCookie === CS_Data.cs_script_cat.pinterest && pixel == 'pinterest' ) { return cs_cookie_val == 'yes'; } else if ( categoryCookie === CS_Data.cs_script_cat.tiktok && pixel == 'tiktok' ) { return cs_cookie_val == 'yes'; } } } return false; } /** * Real Cookie Banner */ if(options.gdpr.real_cookie_banner_integration_enabled) { var consentApi = window.consentApi; if (consentApi) { switch (pixel) { case "analytics": return consentApi.consentSync("http", "_ga", "*").cookieOptIn; case "facebook": return consentApi.consentSync("http", "_fbp", "*").cookieOptIn; case "pinterest": return consentApi.consentSync("http", "_pinterest_sess", ".pinterest.com").cookieOptIn; default: return true; } } } /** * Cookiebot */ if (options.gdpr.cookiebot_integration_enabled && typeof Cookiebot !== 'undefined') { var cookiebot_consent_category = options.gdpr['cookiebot_' + pixel + '_consent_category']; if (options.gdpr[pixel + '_prior_consent_enabled']) { if (Cookiebot.consented === true || Cookiebot.consent[cookiebot_consent_category]) { return true; } } else { if (Cookiebot.consent[cookiebot_consent_category]) { return true; } } return false; } /** * Cookie Notice */ if (options.gdpr.cookie_notice_integration_enabled && typeof cnArgs !== 'undefined') { var cn_cookie = Cookies.get(cnArgs.cookieName); if (options.gdpr[pixel + '_prior_consent_enabled']) { if (typeof cn_cookie === 'undefined' || cn_cookie === 'true') { return true; } } else { if (cn_cookie === 'true') { return true; } } return false; } /** * Cookie Law Info */ if (options.gdpr.cookie_law_info_integration_enabled) { var cli_cookie = Cookies.get('cookieyes-consent') ?? Cookies.get('viewed_cookie_policy'); if (options.gdpr[pixel + '_prior_consent_enabled']) { if (typeof cli_cookie === 'undefined') return true; if (cli_cookie && cli_cookie === Cookies.get('cookieyes-consent')) { if (getCookieYes('analytics') === 'yes') { return true; } } else if (cli_cookie && cli_cookie === Cookies.get('viewed_cookie_policy')) { if (Cookies.get('viewed_cookie_policy') === 'yes') { return true; } } } else { if (cli_cookie && cli_cookie === Cookies.get('cookieyes-consent')) { if (getCookieYes('analytics') === 'yes') { return true; } } else if (cli_cookie && cli_cookie === Cookies.get('viewed_cookie_policy')) { if (Cookies.get('viewed_cookie_policy') === 'yes') { return true; } } } return false; } return true; }, setupGdprCallbacks: function () { /** * ConsentMagic */ if (options.gdpr.consent_magic_integration_enabled && typeof CS_Data !== "undefined") { var test_prefix = CS_Data.test_prefix, cs_refresh_after_consent = false, substring = "cs_enabled_cookie_term"; if (CS_Data.cs_refresh_after_consent == 1) { cs_refresh_after_consent = CS_Data.cs_refresh_after_consent; } if (!cs_refresh_after_consent) { var theCookies = document.cookie.split(';'); for (var i = 1 ; i <= theCookies.length; i++) { if (theCookies[i-1].indexOf(substring) !== -1) { var categoryCookie = theCookies[i-1].replace('cs_enabled_cookie_term'+test_prefix+'_',''); categoryCookie = Number(categoryCookie.replace(/\D+/g,"")); var cs_cookie_val = Cookies.get('cs_enabled_cookie_term'+test_prefix+'_'+categoryCookie); if(cs_cookie_val == 'yes') { if (categoryCookie === CS_Data.cs_script_cat.facebook) { Facebook.loadPixel(); } if (categoryCookie === CS_Data.cs_script_cat.bing) { Bing.loadPixel(); } if (categoryCookie === CS_Data.cs_script_cat.analytics || (typeof CS_Data.cs_google_analytics_consent_mode !== "undefined" && CS_Data.cs_google_analytics_consent_mode == 1)) { Analytics.loadPixel(); } if (categoryCookie === CS_Data.cs_script_cat.pinterest) { Pinterest.loadPixel(); } } else { if (categoryCookie === CS_Data.cs_script_cat.facebook) { Facebook.disable(); } if (categoryCookie === CS_Data.cs_script_cat.bing) { Bing.disable(); } if (categoryCookie === CS_Data.cs_script_cat.analytics && (typeof CS_Data.cs_google_analytics_consent_mode == "undefined" || CS_Data.cs_google_analytics_consent_mode == 0)) { Analytics.disable(); } if (categoryCookie === CS_Data.cs_script_cat.pinterest) { Pinterest.disable(); } } if (Cookies.get('cs_enabled_advanced_matching') == 'yes') { Facebook.loadPixel(); } } } $(document).on('click','.cs_action_btn',function(e) { e.preventDefault(); var elm = $(this), button_action = elm.attr('data-cs_action'); if(button_action === 'allow_all') { Facebook.loadPixel(); Bing.loadPixel(); Analytics.loadPixel(); Pinterest.loadPixel(); } else if(button_action === 'disable_all') { Facebook.disable(); Bing.disable(); if(CS_Data.cs_google_analytics_consent_mode == 0 || typeof CS_Data.cs_google_analytics_consent_mode == "undefined") { Analytics.disable(); } Pinterest.disable(); } }); } } /** * Real Cookie Banner */ if(options.gdpr.real_cookie_banner_integration_enabled) { var consentApi = window.consentApi; if (consentApi) { consentApi.consent("http", "_ga", "*") .then(Analytics.loadPixel.bind(Analytics), Analytics.disable.bind(Analytics)); consentApi.consent("http", "_fbp", "*") .then(Facebook.loadPixel.bind(Facebook), Facebook.disable.bind(Facebook)); consentApi.consent("http", "_pinterest_sess", ".pinterest.com") .then(Pinterest.loadPixel.bind(Pinterest), Pinterest.disable.bind(Pinterest)); consentApi.consent("http", "_uetsid", "*") .then(Bing.loadPixel.bind(Bing), Bing.disable.bind(Bing)); } } /** * Cookiebot */ if (options.gdpr.cookiebot_integration_enabled && typeof Cookiebot !== 'undefined') { window.addEventListener("CookiebotOnConsentReady", function() { Utils.manageCookies(); if (Cookiebot.consent.marketing) { Facebook.loadPixel(); Bing.loadPixel(); Pinterest.loadPixel(); } if (Cookiebot.consent.statistics) { Analytics.loadPixel(); } if (!Cookiebot.consent.marketing) { Facebook.disable(); Pinterest.disable(); Bing.disable() } if (!Cookiebot.consent.statistics) { Analytics.disable(); } }); } /** * Cookie Notice */ if (options.gdpr.cookie_notice_integration_enabled) { $(document).onFirst('click', '.cn-set-cookie', function () { if ($(this).data('cookie-set') === 'accept') { Facebook.loadPixel(); Analytics.loadPixel(); Pinterest.loadPixel(); Bing.loadPixel(); } else { Facebook.disable(); Analytics.disable(); Pinterest.disable(); Bing.disable(); } }); $(document).onFirst('click', '.cn-revoke-cookie', function () { Facebook.disable(); Analytics.disable(); Pinterest.disable(); Bing.disable(); }); } /** * Cookie Law Info */ if (options.gdpr.cookie_law_info_integration_enabled) { $(document).onFirst('click', '#wt-cli-accept-all-btn,#cookie_action_close_header, .cky-btn-accept', function () { setTimeout(function (){ var cli_cookie = Cookies.get('cookieyes-consent') ?? Cookies.get('viewed_cookie_policy'); if (typeof cli_cookie !== 'undefined') { if (cli_cookie === Cookies.get('cookieyes-consent') && getCookieYes('analytics') == 'yes') { Utils.manageCookies(); } else if (cli_cookie === Cookies.get('viewed_cookie_policy') && cli_cookie == 'yes') { Utils.manageCookies(); } } },1000) Facebook.loadPixel(); Analytics.loadPixel(); Pinterest.loadPixel(); Bing.loadPixel(); }); $(document).onFirst('click', '#cookie_action_close_header_reject, .cky-btn-reject', function () { Facebook.disable(); Analytics.disable(); Pinterest.disable(); Bing.disable(); }); } }, /** * DOWNLOAD DOCS */ getLinkExtension: function (link) { // Remove anchor, query string and everything before last slash link = link.substring(0, (link.indexOf("#") === -1) ? link.length : link.indexOf("#")); link = link.substring(0, (link.indexOf("?") === -1) ? link.length : link.indexOf("?")); link = link.substring(link.lastIndexOf("/") + 1, link.length); // If there's a period left in the URL, then there's a extension if (link.length > 0 && link.indexOf('.') !== -1) { link = link.substring(link.indexOf(".") + 1); // Remove everything but what's after the first period return link; } else { return ""; } }, getLinkFilename: function (link) { // Remove anchor, query string and everything before last slash link = link.substring(0, (link.indexOf("#") === -1) ? link.length : link.indexOf("#")); link = link.substring(0, (link.indexOf("?") === -1) ? link.length : link.indexOf("?")); link = link.substring(link.lastIndexOf("/") + 1, link.length); // If there's a period left in the URL, then there's a extension if (link.length > 0 && link.indexOf('.') !== -1) { return link; } else { return ""; } }, /** * Enrich */ isCheckoutPage: function () { return $('body').hasClass('woocommerce-checkout') || document.querySelector('.woocommerce-checkout') || $('body').hasClass('edd-checkout'); }, addCheckoutFields : function() { var utm = ""; var utms = getUTMs() $.each(utmTerms, function (index, name) { if(index > 0) { utm+="|"; } utm+=name+":"+utms[name]; }); var utmIdList = ""; var utmsIds = getUTMId() $.each(utmId, function (index, name) { if(index > 0) { utmIdList+="|"; } utmIdList+=name+":"+utmsIds[name]; }); var utmIdListLast = ""; var utmsIdsLast = getUTMId(true) $.each(utmId, function (index, name) { if(index > 0) { utmIdListLast+="|"; } utmIdListLast+=name+":"+utmsIdsLast[name]; }); var utmLast = ""; var utmsLast = getUTMs(true) $.each(utmTerms, function (index, name) { if(index > 0) { utmLast+="|"; } utmLast+=name+":"+utmsLast[name]; }); var dateTime = getDateTime(); var landing = getLandingPageValue(); var lastLanding = getLandingPageValue(); var trafic = getTrafficSourceValue(); var lastTrafic = getTrafficSourceValue(); var $form = null; if($('body').hasClass('woocommerce-checkout')) { $form = $("form.woocommerce-checkout"); } else { $form = $("#edd_purchase_form"); } var inputs = {'pys_utm':utm, 'pys_utm_id':utmIdList, 'pys_browser_time':dateTime.join("|"), 'pys_landing':landing, 'pys_source':trafic, 'pys_order_type': $(".wcf-optin-form").length > 0 ? "wcf-optin" : "normal", 'last_pys_landing':lastLanding, 'last_pys_source':lastTrafic, 'last_pys_utm':utmLast, 'last_pys_utm_id':utmIdListLast, } Object.keys(inputs).forEach(function(key,index) { $form.append(" "); }); }, getAdvancedFormData: function () { let dataStr = Cookies.get("pys_advanced_form_data"); if(dataStr === undefined) { return {'first_name':"",'last_name':"",'email':"",'phone':""}; } else { return JSON.parse(dataStr); } } }; }(options); var Facebook = function (options) { var defaultEventTypes = [ 'PageView', 'ViewContent', 'Search', 'AddToCart', 'AddToWishlist', 'InitiateCheckout', 'AddPaymentInfo', 'Purchase', 'Lead', 'Subscribe', 'CustomizeProduct', 'FindLocation', 'StartTrial', 'SubmitApplication', 'Schedule', 'Contact', 'Donate' ]; var initialized = false; var genereateFbp = function (){ return !Cookies.get('_fbp') ? 'fb.1.'+Date.now()+'.'+Math.floor(1000000000 + Math.random() * 9000000000) : Cookies.get('_fbp'); }; var genereateFbc = function (){ return getUrlParameter('fbclid') ? 'fb.1.'+Date.now()+'.'+getUrlParameter('fbclid') : '' }; // fire server side event gdpr plugin installed var isApiDisabled = options.gdpr.all_disabled_by_api || options.gdpr.facebook_disabled_by_api || options.gdpr.cookiebot_integration_enabled || options.gdpr.consent_magic_integration_enabled || options.gdpr.cookie_notice_integration_enabled || options.gdpr.cookie_law_info_integration_enabled; /** * * @param allData * @param params * @returns {string | null} */ function sendFbServerEvent(allData,name,params) { let eventId = null; if(options.facebook.serverApiEnabled) { if(allData.e_id === "woo_remove_from_cart") {// server event will sended from hook Facebook.updateEventId(allData.name); allData.eventID = Facebook.getEventId(allData.name); } else { // send event from server if they was bloc by gdpr or need send with delay allData.eventID = Utils.generateUniqueId(allData); if(Cookies.get('_fbp')){ params._fbp = Cookies.get('_fbp'); } if(Cookies.get('_fbc')){ params._fbc = Cookies.get('_fbc'); } if( options.ajaxForServerEvent || isApiDisabled ){ var json = { action: 'pys_api_event', pixel: 'facebook', event: name, data:params, ids:options.facebook.pixelIds, eventID:allData.eventID, url:window.location.href, ajax_event:options.ajax_event }; if(allData.hasOwnProperty('woo_order')) { json['woo_order'] = allData.woo_order; } if(allData.hasOwnProperty('edd_order')) { json['edd_order'] = allData.edd_order; } if (allData.e_id === "automatic_event_internal_link" || allData.e_id === "automatic_event_outbound_link") { setTimeout(() => Utils.sendServerAjaxRequest(options.ajaxUrl, json), 500); } else if (allData.type != 'static') { Utils.sendServerAjaxRequest(options.ajaxUrl, json); } if(allData.type == 'static' && options.ajaxForServerStaticEvent) { Utils.sendServerAjaxRequest(options.ajaxUrl, json); } } } delete params._fbp; delete params._fbc; eventId = allData.eventID } return eventId; } function fireEvent(name, allData) { if(typeof window.pys_event_data_filter === "function" && window.pys_disable_event_filter(name,'facebook')) { return; } var actionType = defaultEventTypes.includes(name) ? 'track' : 'trackCustom'; var data = allData.params; var params = {}; var arg = {}; Utils.copyProperties(data, params); let eventId = sendFbServerEvent(allData,name,params) if("hCR" === name) { return; } if (options.debug) { console.log('[Facebook] ' + name, params,"eventID",eventId); } if(eventId != null) { arg.eventID = eventId; } fbq(actionType, name, params, arg); } /** * Public API */ return { tag: function() { return "facebook"; }, isEnabled: function () { return options.hasOwnProperty('facebook'); }, disable: function () { initialized = false; }, advancedMatching: function () { if(options.facebook.advancedMatchingEnabled) { let advancedMatchingForm = Utils.getAdvancedFormData(); let advancedMatching = {}; if(Object.keys(options.facebook.advancedMatching).length > 0) { advancedMatching = options.facebook.advancedMatching; } if(!advancedMatching.hasOwnProperty("em") && advancedMatchingForm.hasOwnProperty("email") && advancedMatchingForm["email"].length > 0) { advancedMatching["em"] = advancedMatchingForm["email"]; } if(!advancedMatching.hasOwnProperty("ph") && advancedMatchingForm.hasOwnProperty("phone") && advancedMatchingForm["phone"].length > 0) { advancedMatching["ph"] = advancedMatchingForm["phone"]; } if(!advancedMatching.hasOwnProperty("fn") && advancedMatchingForm.hasOwnProperty("first_name") && advancedMatchingForm["first_name"].length > 0) { advancedMatching["fn"] = advancedMatchingForm["first_name"]; } if(!advancedMatching.hasOwnProperty("ln") && advancedMatchingForm.hasOwnProperty("last_name") && advancedMatchingForm["last_name"].length > 0) { advancedMatching["ln"] = advancedMatchingForm["last_name"]; } if(!advancedMatching.hasOwnProperty("external_id")){ if (Cookies.get('pbid') || (options.hasOwnProperty('pbid') && options.pbid)) { advancedMatching["external_id"] = Cookies.get('pbid') ? Cookies.get('pbid') : options.pbid; } } else if(advancedMatching.external_id != Cookies.get('pbid')) { advancedMatching["external_id"] = Cookies.get('pbid') ? Cookies.get('pbid') : advancedMatching.external_id; } if(Object.keys(advancedMatching).length > 0) { return advancedMatching; } } return false }, /** * Load pixel's JS */ loadPixel: function () { if (initialized || !this.isEnabled() || !Utils.consentGiven('facebook')) { return; } !function (f, b, e, v, n, t, s) { if (f.fbq) return; n = f.fbq = function () { n.callMethod ? n.callMethod.apply(n, arguments) : n.queue.push(arguments) }; if (!f._fbq) f._fbq = n; n.push = n; n.loaded = !0; n.version = '2.0'; n.agent = 'dvpixelyoursite'; n.queue = []; t = b.createElement(e); t.async = !0; t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s) }(window, document, 'script', 'https://connect.facebook.net/en_US/fbevents.js'); let expires = parseInt(options.cookie_duration); if(!Cookies.get('_fbp')) { Cookies.set('_fbp',genereateFbp(), { expires: expires }); } if(getUrlParameter('fbclid')) { Cookies.set('_fbc',genereateFbc(), { expires: expires }); } // initialize pixel options.facebook.pixelIds.forEach(function (pixelId) { if (options.facebook.removeMetadata) { fbq('set', 'autoConfig', false, pixelId); } let advancedMatching = Facebook.advancedMatching(); if (options.gdpr.consent_magic_integration_enabled && typeof CS_Data !== "undefined") { if(!advancedMatching) { fbq('init', pixelId); } else { var test_prefix = CS_Data.test_prefix; var cs_advanced_matching = Cookies.get('cs_enabled_advanced_matching'+test_prefix); if (jQuery('#cs_enabled_advanced_matching'+test_prefix).length > 0) { if (cs_advanced_matching == 'yes') { fbq('init', pixelId, advancedMatching); } else { fbq('init', pixelId); } } else { fbq('init', pixelId, advancedMatching); } } } else { if(!advancedMatching) { fbq('init', pixelId); } else { fbq('init', pixelId, advancedMatching); } } }); initialized = true; Utils.fireStaticEvents('facebook'); }, fireEvent: function (name, data) { if (!initialized || !this.isEnabled()) { return false; } data.delay = data.delay || 0; data.params = data.params || {}; if (data.delay === 0) { fireEvent(name, data); } else { setTimeout(function (name, params) { fireEvent(name, params); }, data.delay * 1000, name, data); } return true; }, onCommentEvent: function (event) { this.fireEvent(event.name, event); }, onDownloadEvent: function (event) { this.fireEvent(event.name, event); }, onFormEvent: function (event) { this.fireEvent(event.name, event); }, onWooAddToCartOnButtonEvent: function (product_id) { if(!options.dynamicEvents.woo_add_to_cart_on_button_click.hasOwnProperty(this.tag())) return; var event = options.dynamicEvents.woo_add_to_cart_on_button_click[this.tag()]; if (window.pysWooProductData.hasOwnProperty(product_id)) { if (window.pysWooProductData[product_id].hasOwnProperty('facebook')) { event = Utils.copyProperties(event, {}) Utils.copyProperties(window.pysWooProductData[product_id]['facebook'].params, event.params) this.fireEvent(event.name, event); } } }, onWooAddToCartOnSingleEvent: function (product_id, qty, product_type, $form) { window.pysWooProductData = window.pysWooProductData || []; if(!options.dynamicEvents.woo_add_to_cart_on_button_click.hasOwnProperty(this.tag())) return; var event = Utils.clone(options.dynamicEvents.woo_add_to_cart_on_button_click[this.tag()]); if (product_type === Utils.PRODUCT_VARIABLE && !options.facebook.wooVariableAsSimple) { product_id = parseInt($form.find('input[name="variation_id"]').val()); } if (window.pysWooProductData.hasOwnProperty(product_id)) { if (window.pysWooProductData[product_id].hasOwnProperty('facebook')) { Utils.copyProperties(window.pysWooProductData[product_id]['facebook'].params, event.params); var groupValue = 0; if(product_type === Utils.PRODUCT_GROUPED ) { $form.find(".woocommerce-grouped-product-list .qty").each(function(index){ var childId = $(this).attr('name').replaceAll("quantity[","").replaceAll("]",""); var quantity = parseInt($(this).val()); if(isNaN(quantity)) { quantity = 0; } var childItem = window.pysWooProductData[product_id]['facebook'].grouped[childId]; if(quantity == 0) { event.params.content_ids.forEach(function(el,index,array) { if(el == childItem.content_id) { array.splice(index, 1); } }); } if(event.params.hasOwnProperty('contents')) { event.params.contents.forEach(function(el,index,array) { if(el.id == childItem.content_id) { if(quantity > 0){ el.quantity = quantity; } else { array.splice(index, 1); } } }); } groupValue += childItem.price * quantity; }); if(groupValue == 0) return; // skip if no items selected } // maybe customize value option if (options.woo.addToCartOnButtonValueEnabled && options.woo.addToCartOnButtonValueOption !== 'global') { if(product_type === Utils.PRODUCT_GROUPED) { event.params.value = groupValue; } else if(product_type === Utils.PRODUCT_BUNDLE) { var data = $(".bundle_form .bundle_data").data("bundle_form_data"); var items_sum = getBundlePriceOnSingleProduct(data); event.params.value = (parseInt(data.base_price) + items_sum )* qty; } else { event.params.value = event.params.value * qty; } } // only when non Facebook for WooCommerce logic used if (event.params.hasOwnProperty('contents') && product_type !== Utils.PRODUCT_GROUPED) { event.params.contents[0].quantity = qty; } this.fireEvent(event.name, event); } } }, onWooRemoveFromCartEvent: function (event) { this.fireEvent(event.name, event); }, onEddAddToCartOnButtonEvent: function (download_id, price_index, qty) { if(!options.dynamicEvents.edd_add_to_cart_on_button_click.hasOwnProperty(this.tag())) return; var event = Utils.clone(options.dynamicEvents.edd_add_to_cart_on_button_click[this.tag()]); if (window.pysEddProductData.hasOwnProperty(download_id)) { var index; if (price_index) { index = download_id + '_' + price_index; } else { index = download_id; } if (window.pysEddProductData[download_id].hasOwnProperty(index)) { if (window.pysEddProductData[download_id][index].hasOwnProperty('facebook')) { Utils.copyProperties(window.pysEddProductData[download_id][index]['facebook']["params"], event.params) // maybe customize value option if (options.edd.addToCartOnButtonValueEnabled && options.edd.addToCartOnButtonValueOption !== 'global') { event.params.value = event.params.value * qty; } // update contents qty param var contents = event.params.contents; contents[0].quantity = qty; event.params.contents = contents; this.fireEvent(event.name,event); } } } }, onEddRemoveFromCartEvent: function (event) { this.fireEvent(event.name, event); }, onPageScroll: function (event) { this.fireEvent(event.name, event); }, onTime: function (event) { this.fireEvent(event.name, event); }, initEventIdCookies: function (key) { var ids = {}; ids[key] = pys_generate_token(36) Cookies.set('pys_fb_event_id', JSON.stringify(ids)); }, updateEventId:function(key) { var cooData = Cookies.get("pys_fb_event_id") if(cooData === undefined) { this.initEventIdCookies(key); } else { var data = JSON.parse(cooData); data[key] = pys_generate_token(36); Cookies.set('pys_fb_event_id', JSON.stringify(data) ); } }, getEventId:function (key) { var data = Cookies.get("pys_fb_event_id"); if(data === undefined) { this.initEventIdCookies(key); data = Cookies.get("pys_fb_event_id"); } return JSON.parse(data)[key]; }, }; }(options); var Analytics = function (options) { var initialized = false; /** * Fires event * * @link: https://developers.google.com/analytics/devguides/collection/gtagjs/sending-data * @link: https://developers.google.com/analytics/devguides/collection/gtagjs/events * @link: https://developers.google.com/gtagjs/reference/event * @link: https://developers.google.com/gtagjs/reference/parameter * * @link: https://developers.google.com/analytics/devguides/collection/gtagjs/custom-dims-mets * * @param name * @param data */ function fireEvent(name, data) { if(typeof window.pys_event_data_filter === "function" && window.pys_disable_event_filter(name,'ga')) { return; } var eventParams = Utils.copyProperties(data, {}); var _fireEvent = function (tracking_id,name,params) { params['send_to'] = tracking_id; if (options.debug) { console.log('[Google Analytics #' + tracking_id + '] ' + name, params); } gtag('event', name, params); }; options.ga.trackingIds.forEach(function (tracking_id) { var copyParams = Utils.copyProperties(eventParams, {}); // copy params because mapParamsTov4 can modify it var params = mapParamsTov4(tracking_id,name,copyParams) _fireEvent(tracking_id,name,params); }); } function mapParamsTov4(tag,name,param) { //GA4 automatically collects a number of parameters for all events delete param.landing_page; // end if(isv4(tag)) { delete param.traffic_source; delete param.event_category; delete param.event_label; delete param.ecomm_prodid; delete param.ecomm_pagetype; delete param.ecomm_totalvalue; if(name === 'search') { param['search'] = param.search_term; delete param.search_term; delete param.dynx_itemid; delete param.dynx_pagetype; delete param.dynx_totalvalue; } } return param; } function isv4(tag) { return tag.indexOf('G') === 0; } /** * Public API */ return { tag: function() { return "ga"; }, isEnabled: function () { return options.hasOwnProperty('ga'); }, disable: function () { initialized = false; }, loadPixel: function () { if (initialized || !this.isEnabled() || !Utils.consentGiven('analytics')) { return; } Utils.loadGoogleTag(options.ga.trackingIds[0]); var config = {}; // Cross-Domain tracking if (options.ga.crossDomainEnabled) { config.linker = { accept_incoming: options.ga.crossDomainAcceptIncoming, domains: options.ga.crossDomainDomains }; } // configure tracking ids options.ga.trackingIds.forEach(function (trackingId,index) { var obj = options.ga.isDebugEnabled; var searchValue = "index_"+index; var config_for_tag = Object.assign({}, options.config); config_for_tag.debug_mode = false; config_for_tag.send_page_view = !options.ga.custom_page_view_event; for (var key in obj) { if (obj.hasOwnProperty(key) && obj[key] === searchValue) { config_for_tag.debug_mode = true; break; } } if(!config_for_tag.debug_mode) { delete config_for_tag.debug_mode; } if(isv4(trackingId)) { if(options.ga.disableAdvertisingFeatures) { config_for_tag.allow_google_signals = false } if(options.ga.disableAdvertisingPersonalization) { config_for_tag.allow_ad_personalization_signals = false } } if(options.ga.hasOwnProperty('additionalConfig')){ if(options.ga.additionalConfig.hasOwnProperty(trackingId) && options.ga.additionalConfig[trackingId]){ config_for_tag.first_party_collection = options.ga.additionalConfig[trackingId].first_party_collection; } } if(options.ga.hasOwnProperty('serverContainerUrls')){ if(options.ga.serverContainerUrls.hasOwnProperty(trackingId) && options.ga.serverContainerUrls[trackingId].enable_server_container != false){ if(options.ga.serverContainerUrls[trackingId].server_container_url != ''){ config_for_tag.server_container_url = options.ga.serverContainerUrls[trackingId].server_container_url; } if(options.ga.serverContainerUrls[trackingId].transport_url != ''){ config_for_tag.transport_url = options.ga.serverContainerUrls[trackingId].transport_url; } } } if (options.gdpr.cookiebot_integration_enabled && typeof Cookiebot !== 'undefined') { var cookiebot_consent_category = options.gdpr['cookiebot_analytics_consent_category']; if (options.gdpr['analytics_prior_consent_enabled']) { if (Cookiebot.consented === true && Cookiebot.consent[cookiebot_consent_category]) { gtag('config', trackingId, config_for_tag); } } else { if (Cookiebot.consent[cookiebot_consent_category]) { gtag('config', trackingId, config_for_tag); } } } else { gtag('config', trackingId, config_for_tag); } }); initialized = true; Utils.fireStaticEvents('ga'); }, fireEvent: function (name, data) { if (!initialized || !this.isEnabled()) { return false; } data.delay = data.delay || 0; data.params = data.params || {}; data.params.eventID = Utils.generateUniqueId(data); if (data.delay === 0) { fireEvent(name, data.params); } else { setTimeout(function (name, params) { fireEvent(name, params); }, data.delay * 1000, name, data.params); } return true; }, onCommentEvent: function (event) { this.fireEvent(event.name, event); }, onDownloadEvent: function (event) { this.fireEvent(event.name, event); }, onFormEvent: function (event) { this.fireEvent(event.name, event); }, onWooAddToCartOnButtonEvent: function (product_id) { if(!options.dynamicEvents.woo_add_to_cart_on_button_click.hasOwnProperty(this.tag())) return; var event = Utils.clone(options.dynamicEvents.woo_add_to_cart_on_button_click[this.tag()]); if (window.pysWooProductData.hasOwnProperty(product_id)) { if (window.pysWooProductData[product_id].hasOwnProperty('ga')) { Utils.copyProperties(window.pysWooProductData[product_id]['ga'].params, event.params) this.fireEvent(event.name, event); } } }, onWooAddToCartOnSingleEvent: function (product_id, qty, product_type, $form) { window.pysWooProductData = window.pysWooProductData || []; if(!options.dynamicEvents.woo_add_to_cart_on_button_click.hasOwnProperty(this.tag())) return; var event = Utils.clone(options.dynamicEvents.woo_add_to_cart_on_button_click[this.tag()]); if (product_type === Utils.PRODUCT_VARIABLE && !options.ga.wooVariableAsSimple) { product_id = parseInt($form.find('input[name="variation_id"]').val()); } if (window.pysWooProductData.hasOwnProperty(product_id)) { if (window.pysWooProductData[product_id].hasOwnProperty('ga')) { Utils.copyProperties(window.pysWooProductData[product_id]['ga'].params, event.params); if(product_type === Utils.PRODUCT_GROUPED ) { var groupValue = 0; $form.find(".woocommerce-grouped-product-list .qty").each(function(index){ var childId = $(this).attr('name').replaceAll("quantity[","").replaceAll("]",""); var quantity = parseInt($(this).val()); if(isNaN(quantity)) { quantity = 0; } var childItem = window.pysWooProductData[product_id]['ga'].grouped[childId]; // update quantity event.params.items.forEach(function(el,index,array) { if(el.id == childItem.content_id) { if(quantity > 0){ el.quantity = quantity; } else { array.splice(index, 1); } } }); groupValue += childItem.price * quantity; }); if(options.woo.addToCartOnButtonValueEnabled && options.woo.addToCartOnButtonValueOption !== 'global' && event.params.hasOwnProperty('ecomm_totalvalue')) { event.params.ecomm_totalvalue = groupValue; } if(groupValue == 0) return; // skip if no items selected } else { // update items qty param event.params.items[0].quantity = qty; } // maybe customize value option if (options.woo.addToCartOnButtonValueEnabled && options.woo.addToCartOnButtonValueOption !== 'global' && product_type !== Utils.PRODUCT_GROUPED) { if(event.params.hasOwnProperty('ecomm_totalvalue')) { event.params.ecomm_totalvalue = event.params.items[0].price * qty; } } this.fireEvent(event.name, event); } } }, onWooRemoveFromCartEvent: function (event) { this.fireEvent(event.name, event); }, onEddAddToCartOnButtonEvent: function (download_id, price_index, qty) { if(!options.dynamicEvents.edd_add_to_cart_on_button_click.hasOwnProperty(this.tag())) return; var event = Utils.clone(options.dynamicEvents.edd_add_to_cart_on_button_click[this.tag()]); if (window.pysEddProductData.hasOwnProperty(download_id)) { var index; if (price_index) { index = download_id + '_' + price_index; } else { index = download_id; } if (window.pysEddProductData[download_id].hasOwnProperty(index)) { if (window.pysEddProductData[download_id][index].hasOwnProperty('ga')) { Utils.copyProperties(window.pysEddProductData[download_id][index]['ga'].params, event.params); // update items qty param event.params.items[0].quantity = qty; this.fireEvent(event.name,event); } } } }, onEddRemoveFromCartEvent: function (event) { this.fireEvent(event.name, event); }, onPageScroll: function (event) { this.fireEvent(event.name, event); }, onTime: function (event) { this.fireEvent(event.name, event); }, }; }(options); window.pys = window.pys || {}; window.pys.Facebook = Facebook; window.pys.Analytics = Analytics; window.pys.Utils = Utils; $(document).ready(function () { if($("#pys_late_event").length > 0) { var events = JSON.parse($("#pys_late_event").attr("dir")); for(var key in events) { var event = {}; event[events[key].e_id] = [events[key]]; if(options.staticEvents.hasOwnProperty(key)) { Object.assign(options.staticEvents[key], event); } else { options.staticEvents[key] = event; } } } var Pinterest = Utils.setupPinterestObject(); var Bing = Utils.setupBingObject(); if(options.hasOwnProperty('cookie')) { if(options.cookie.externalID_disabled_by_api || options.cookie.disabled_all_cookie) { Cookies.remove('pbid') } if(options.cookie.disabled_advanced_form_data_cookie || options.cookie.disabled_all_cookie) { Cookies.remove('pys_advanced_form_data') } if(options.cookie.disabled_landing_page_cookie || options.cookie.disabled_all_cookie) { Cookies.remove('pys_landing_page') Cookies.remove('last_pys_landing_page') } if(options.cookie.disabled_trafficsource_cookie || options.cookie.disabled_all_cookie) { Cookies.remove('pysTrafficSource') Cookies.remove('last_pysTrafficSource') } if(options.cookie.disabled_first_visit_cookie || options.cookie.disabled_all_cookie) { Cookies.remove('pys_first_visit') } if(options.cookie.disabled_utmTerms_cookie || options.cookie.disabled_all_cookie) { $.each(Utils.utmTerms, function (index, name) { Cookies.remove('pys_' + name) }); $.each(Utils.utmTerms, function (index, name) { Cookies.remove('last_pys_' + name) }); } if(options.cookie.disabled_utmId_cookie || options.cookie.disabled_all_cookie) { $.each(Utils.utmId,function(index,name) { Cookies.remove('pys_' + name) }) $.each(Utils.utmId,function(index,name) { Cookies.remove('last_pys_' + name) }); } } if (options.gdpr.cookie_law_info_integration_enabled) { var cli_cookie = Cookies.get('cookieyes-consent') ?? Cookies.get('viewed_cookie_policy'); if (typeof cli_cookie !== 'undefined') { if (cli_cookie === Cookies.get('cookieyes-consent') && getCookieYes('analytics') == 'yes') { Utils.manageCookies(); } else if (cli_cookie === Cookies.get('viewed_cookie_policy') && cli_cookie == 'yes') { Utils.manageCookies(); } } } if ( options.gdpr.consent_magic_integration_enabled && typeof CS_Data !== "undefined" ) { if ( CS_Data.cs_script_cat.pys == CS_Data.cs_necessary_cat_id || CS_Data.cs_script_cat.pys == 0 ) { Utils.manageCookies(); } else if ( Cookies.get( 'cs_enabled_cookie_term' + CS_Data.test_prefix + '_' + CS_Data.cs_script_cat.pys ) == 'yes' ) { Utils.manageCookies(); } } else { Utils.manageCookies(); } Utils.setupGdprCallbacks(); // page scroll event if ( options.dynamicEvents.hasOwnProperty("automatic_event_scroll") ) { var singlePageScroll = function () { var docHeight = $(document).height() - $(window).height(); var isFired = false; if (options.dynamicEvents.hasOwnProperty("automatic_event_scroll")) { var pixels = Object.keys(options.dynamicEvents.automatic_event_scroll); for(var i = 0;i 0) { if(options.dynamicEvents.hasOwnProperty("automatic_event_download") ) { var pixels = Object.keys(options.dynamicEvents.automatic_event_download); for (var i = 0; i < pixels.length; i++) { var event = Utils.clone(options.dynamicEvents.automatic_event_download[pixels[i]]); var extensions = event.extensions; if (extensions.includes(extension)) { if(pixels[i] == "tiktok") { getPixelBySlag(pixels[i]).fireEvent(tikEvent.name, event); } else { if (options.enable_remove_download_url_param) { href = href.split('?')[0]; } event.params.download_url = href; event.params.download_type = extension; event.params.download_name = Utils.getLinkFilename(href); getPixelBySlag(pixels[i]).onDownloadEvent(event); } isFired = true; } } } } } if(isFired) { // prevent duplicate events on the same element return; } } }); } // setup Dynamic events $.each(options.triggerEventTypes, function (triggerType, events) { $.each(events, function (eventId, triggers) { switch (triggerType) { case 'url_click': //@see: Utils.setupURLClickEvents() break; case 'css_click': Utils.setupCSSClickEvents(eventId, triggers); break; case 'css_mouseover': Utils.setupMouseOverClickEvents(eventId, triggers); break; case 'scroll_pos': Utils.setupScrollPosEvents(eventId, triggers); break; case 'comment': Utils.setupCommentEvents(eventId, triggers); break; } }); }); // setup WooCommerce events if (options.woo.enabled) { // WooCommerce AddToCart if (options.dynamicEvents.hasOwnProperty("woo_add_to_cart_on_button_click") && options.woo.hasOwnProperty("addToCartCatchMethod") && options.woo.addToCartCatchMethod === "add_cart_js" ) { // Loop, any kind of "simple" product, except external $('.add_to_cart_button:not(.product_type_variable,.product_type_bundle,.single_add_to_cart_button)').on("click",function (e) { var product_id = $(this).data('product_id'); if (typeof product_id !== 'undefined') { Facebook.onWooAddToCartOnButtonEvent(product_id); Analytics.onWooAddToCartOnButtonEvent(product_id); Pinterest.onWooAddToCartOnButtonEvent(product_id); Bing.onWooAddToCartOnButtonEvent(product_id); } }); // Single Product // tap try to https://stackoverflow.com/questions/30990967/on-tap-click-event-firing-twice-how-to-avoid-it // $(document) not work $('body').onFirst('click','button.single_add_to_cart_button,.single_add_to_cart_button',function (e) { var $button = $(this); if ($button.hasClass('disabled')) { return; } var $form = $button.closest('form'); var product_type = Utils.PRODUCT_SIMPLE; if ($form.length === 0) { return ; } else if ($form.hasClass('variations_form')) { product_type = Utils.PRODUCT_VARIABLE; } else if($form.hasClass('bundle_form')) { product_type = Utils.PRODUCT_BUNDLE; } else if($form.hasClass('grouped_form')) { product_type = Utils.PRODUCT_GROUPED; } var product_id; var qty; if (product_type === Utils.PRODUCT_GROUPED) { qty = 1; product_id = parseInt($form.find('*[name="add-to-cart"]').val()); } else if (product_type === Utils.PRODUCT_VARIABLE) { product_id = parseInt($form.find('*[name="add-to-cart"]').val()); var qtyTag = $form.find('input[name="quantity"]'); if(qtyTag.length <= 0) { qtyTag = $form.find('select[name="quantity"]'); } qty = parseInt(qtyTag.val()); } else { product_id = parseInt($form.find('*[name="add-to-cart"]').val()); var qtyTag = $form.find('input[name="quantity"]'); if(qtyTag.length <= 0) { qtyTag = $form.find('select[name="quantity"]'); } qty = parseInt(qtyTag.val()); } Facebook.onWooAddToCartOnSingleEvent(product_id, qty, product_type, $form); Analytics.onWooAddToCartOnSingleEvent(product_id, qty, product_type, $form); Pinterest.onWooAddToCartOnSingleEvent(product_id, qty, product_type, false, $form); Bing.onWooAddToCartOnSingleEvent(product_id, qty, product_type, false, $form); }); } // WooCommerce RemoveFromCart if (options.dynamicEvents.hasOwnProperty("woo_remove_from_cart")) { $('body').on('click', options.woo.removeFromCartSelector, function (e) { var $a = $(e.currentTarget), href = $a.attr('href'); // extract cart item hash from remove button URL var regex = new RegExp("[\\?&]remove_item=([^&#]*)"), results = regex.exec(href); if (results !== null) { var item_hash = results[1]; if (options.dynamicEvents["woo_remove_from_cart"].hasOwnProperty(item_hash)) { var events = options.dynamicEvents["woo_remove_from_cart"][item_hash]; Utils.fireEventForAllPixel("onWooRemoveFromCartEvent",events) } } }); } } // setup EDD events if (options.edd.enabled) { // EDD AddToCart if (options.dynamicEvents.hasOwnProperty("edd_add_to_cart_on_button_click")) { $('form.edd_download_purchase_form .edd-add-to-cart').on("click",function (e) { var $button = $(this); var $form = $button.closest('form'); var variable_price = $button.data('variablePrice'); // yes/no var price_mode = $button.data('priceMode'); // single/multi var ids = []; var quantities = []; var qty; var id; if (variable_price === 'yes' && price_mode === 'multi') { id = $form.find('input[name="download_id"]').val(); // get selected variants $.each($form.find('input[name="edd_options[price_id][]"]:checked'), function (i, el) { ids.push(id + '_' + $(el).val()); }); // get qty for selected variants $.each(ids, function (i, variant_id) { var variant_index = variant_id.split('_', 2); qty = $form.find('input[name="edd_download_quantity_' + variant_index[1] + '"]').val(); if (typeof qty !== 'undefined') { quantities.push(qty); } else { quantities.push(1); } }); } else if (variable_price === 'yes' && price_mode === 'single') { id = $form.find('input[name="download_id"]').val(); ids.push(id + '_' + $form.find('input[name="edd_options[price_id][]"]:checked').val()); qty = $form.find('input[name="edd_download_quantity"]').val(); if (typeof qty !== 'undefined') { quantities.push(qty); } else { quantities.push(1); } } else { ids.push($button.data('downloadId')); qty = $form.find('input[name="edd_download_quantity"]').val(); if (typeof qty !== 'undefined') { quantities.push(qty); } else { quantities.push(1); } } // fire event for each download/variant $.each(ids, function (i, download_id) { var q = parseInt(quantities[i]); var variant_index = download_id.toString().split('_', 2); var price_index; if (variant_index.length === 2) { download_id = variant_index[0]; price_index = variant_index[1]; } Facebook.onEddAddToCartOnButtonEvent(download_id, price_index, q); Analytics.onEddAddToCartOnButtonEvent(download_id, price_index, q); Pinterest.onEddAddToCartOnButtonEvent(download_id, price_index, q); Bing.onEddAddToCartOnButtonEvent(download_id, price_index, q); }); }); } // EDD RemoveFromCart if (options.dynamicEvents.hasOwnProperty("edd_remove_from_cart") ) { $('form#edd_checkout_cart_form .edd_cart_remove_item_btn').on("click",function (e) { var href = $(this).attr('href'); if(href) { var key = href.substring(href.indexOf('=') + 1).charAt(0); if (options.dynamicEvents.edd_remove_from_cart.hasOwnProperty(key)) { var events = options.dynamicEvents.edd_remove_from_cart[key]; Utils.fireEventForAllPixel("onEddRemoveFromCartEvent",events) } } }); } } // setup Comment Event if (options.dynamicEvents.hasOwnProperty("automatic_event_comment") ) { $('form.comment-form').on("submit",function () { if (options.dynamicEvents.hasOwnProperty("automatic_event_comment")) { var pixels = Object.keys(options.dynamicEvents.automatic_event_comment); for (var i = 0; i < pixels.length; i++) { var event = Utils.clone(options.dynamicEvents.automatic_event_comment[pixels[i]]); Utils.copyProperties(Utils.getRequestParams(), event.params); getPixelBySlag(pixels[i]).onCommentEvent(event); } } }); } // setup Form Event if ( options.dynamicEvents.hasOwnProperty("automatic_event_form")) { $(document).onFirst('submit', 'form', function (e) { var $form = $(this); // exclude WP forms if ($form.hasClass('comment-form') || $form.hasClass('search-form') || $form.attr('id') === 'adminbarsearch') { return; } // exclude Woo forms if ($form.hasClass('woocommerce-product-search') || $form.hasClass('cart') || $form.hasClass('woocommerce-cart-form') || $form.hasClass('woocommerce-shipping-calculator') || $form.hasClass('checkout') || $form.hasClass('checkout_coupon')) { return; } // exclude EDD forms if ($form.hasClass('edd_form') || $form.hasClass('edd_download_purchase_form')) { return; } // exclude CF7 forms if ($form.hasClass('wpcf7-form')) { return; } // exclude Forminator forms if ($form.hasClass('forminator-custom-form') || $form.hasClass('forminator_ajax')) { return; } // exclude WPforms forms if ($form.hasClass('wpforms-form') || $form.hasClass('wpforms-ajax-form')) { return; } // exclude Formidable forms /*if ($form.hasClass('frm-show-form')) { return; }*/ // exclude Ninja Forms forms if ($form.parent().hasClass('nf-form-layout')) { return; } // exclude Fluent forms if ($form.hasClass('frm-fluent-form')) { return; } if(!options.enable_success_send_form) { var params = { form_id: $form.attr('id'), form_class: $form.attr('class'), text: $form.find('[type="submit"]').is('input') ? $form.find('[type="submit"]').val() : $form.find('[type="submit"]').text() }; if (options.dynamicEvents.hasOwnProperty("automatic_event_form")) { var pixels = Object.keys(options.dynamicEvents.automatic_event_form); for (var i = 0; i < pixels.length; i++) { var event = Utils.clone(options.dynamicEvents.automatic_event_form[pixels[i]]); if (pixels[i] === "tiktok") { getPixelBySlag(pixels[i]).fireEvent(event.name, event); } else { Utils.copyProperties(params, event.params,) Utils.copyProperties(Utils.getRequestParams(), event.params); getPixelBySlag(pixels[i]).onFormEvent(event); } } } } }); document.addEventListener( 'wpcf7mailsent', function( event ) { var form_id = event.detail.contactFormId; sendFormAction($(event.target), form_id); }, false ); //Forminator $(document).on( 'forminator:form:submit:success', function( event ){ var form_id = $(event.target).find('input[name="form_id"]').val(); sendFormAction($(event.target), form_id); }); //WPForm $('form.wpforms-form').on('wpformsAjaxSubmitSuccess', (event) => { var form_id = $(event.target).attr('data-formid'); sendFormAction($(event.target), form_id); }) $(document).on( 'frmFormComplete', function( event, form, response ) { const form_id = $(form).find('input[name="form_id"]').val(); sendFormAction($(event.target), form_id); }); // Ninja Forms $(document).onFirst('nfFormSubmitResponse', function (event, data) { const form_id = data.response.data.form_id; sendFormAction($(event.target), form_id); }); var fluentForms = $('form.frm-fluent-form'); fluentForms.each(function() { var $form = $(this); $form.on('fluentform_submission_success', function(event) { var $formItem = $(this); var form_id = $formItem.attr('data-form_id'); sendFormAction($(event.target), form_id); }); }); } // load pixel APIs Utils.loadPixels(); // setup Enrich content if(Utils.isCheckoutPage()) { Utils.addCheckoutFields(); } }); var sendFormAction = function (form_target, formId){ var params = { form_id: formId, text: form_target.find('[type="submit"]').is('input') ? form_target.find('[type="submit"]').val() : form_target.find('.forminator-button-submit').text() != '' ? form_target.find('.forminator-button-submit').text() : form_target.find('[type="submit"]').text() }; if (options.dynamicEvents.hasOwnProperty("automatic_event_form")) { var pixels = Object.keys(options.dynamicEvents.automatic_event_form); for (var i = 0; i < pixels.length; i++) { var event = options.dynamicEvents.automatic_event_form[pixels[i]]; if (pixels[i] === "tiktok") { getPixelBySlag(pixels[i]).fireEvent(event.name, event); } else { Utils.copyProperties(params, event.params) Utils.copyProperties(Utils.getRequestParams(), event.params); getPixelBySlag(pixels[i]).onFormEvent(event); } } } } }(jQuery, pysOptions); function pys_generate_token() { return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); } function getBundlePriceOnSingleProduct(data) { var items_sum = 0; jQuery(".bundle_form .bundled_product").each(function(index){ var id = jQuery(this).find(".cart").data("bundled_item_id"); var item_price = data.prices[id]; var item_quantity = jQuery(this).find(".bundled_qty").val(); if(!jQuery(this).hasClass("bundled_item_optional") || jQuery(this).find(".bundled_product_optional_checkbox input").prop('checked')) { items_sum += item_price*item_quantity; } }); return items_sum; } function getPixelBySlag(slug) { switch (slug) { case "facebook": return window.pys.Facebook; case "ga": return window.pys.Analytics; case "bing": return window.pys.Bing; case "pinterest": return window.pys.Pinterest; } } var getUrlParameter = function getUrlParameter(sParam) { var sPageURL = window.location.search.substring(1), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); } } return false; }; function getCookieYes(key) { const cookies = document.cookie .split(";") .reduce( (ac, cv, i) => Object.assign(ac, { [cv.split("=")[0].trim()]: cv.split("=")[1] }), {} )["cookieyes-consent"]; const { [key]: value } = cookies .split(",") .reduce( (obj, pair) => ( (pair = pair.split(":")), (obj[pair[0]] = pair[1]), obj ), {} ); return value; };