{"version":3,"sources":["post.min.js"],"names":["matchMediaQuery","query","window","matchMedia","matches","err","Vue","component","props","type","Object","required","String","Array","emits","data","currentItem","isDropdownOpen","selectDropdownItem","item","this","_closeList","$emit","getDropdownParentClasses","open","onOpenRequest","_openList","showDropdownContent","list","length","$","$refs","stop","slideUp","currentItemText","slideDown","computed","modelValue","text","currentItemId","$el","contains","id","title","document","addEventListener","event","target","template","currentValueIsValid","inputChangeTimeoutId","inputChangeTimeoutWaitMs","getRootClasses","Number","showDropdownList","show","formattedVal","minPrefix","maxPrefix","dropdownList","clearTimeout","Boolean","currentValue","minValue","measureValue","slider","setHandle","_initializeSlider","sliderElement","numericOptions","sliderOptions","connect","mode","density","noUiSlider","TextFormattingService","formatCalculatorInteger","val","_updateSliderOptions","measureVal","_generateNumericOptions","start","maxValue","min","max","_updatePipClasses","classList","parseInt","handleValue","setTimeout","oldValue","startValue","values","create","on","updateOptions","Infinity","currency","range","isOpen","get","querySelectorAll","forEach","pip","isActive","parseFloat","nextElementSibling","getAttribute","toggle","watch","newValue","submitted","fileMaxSize","filesErrorMessage","methods","validateValue","field","hideSliderControls","_this","isFileWithErrorInArray","created","currencies","getFlagUrl","value","selectCurrency","allowNumbersOnly","evt","charCode","preventDefault","mounted","message","filesError","valid","filterList","mandatory","$phrase","fileList","filter","file","hasError","dragOver","dropEffect","from","dataTransfer","files","i","fileInput","click","removeFile","fileIndex","indexOf","splice","processSelectedFiles","regex","RegExp","processFile","getFileSizeInMB","size","test","push","baseUrl","getIconUrl","updateValue","getPageTitle","currentPageTitle","which","keyCode","selectLocation","location","newUrl","initMap","firstPin","lat","lng","Latitude","Longitude","Title","history","replaceState","containsType","filterBy24","filterPins","pins","showItem","relatedField","visible","keyword","selectedRelatedFieldValue","selectedType","Id","relationId","selectedTypes","undefined","updateSingleValueQueryParam","marker","google","pin","infoWindowContent","addListener","showDirection","getDirectionUrl","getLocation","navigator","error","PERMISSION_DENIED","console","R","locations","types","urlParams","locationId","typeIds","typeIdsArray","includes","toString","selectedLocation","find","offers","cities","filteredOffers","currentPage","updateVisibleItems","visibleItems","visibleOffers","behavior","orderOffers","orderedByDesc","Date","createDt","city","checked","map","checkedCities","removeSelectedItem","checkedDistricts","district","filterOffers","getSpecialOffersCount","getAllOffersCount","allCitiesOffersCount","getCityOffersCount","selectSpecialOffer","specialOfferChecked","_data","icon","getSelectedItems","pagination","showPager","diselectDistricts","sendingData","succeeded","selectedItems","showMap","scrollTo","top","post","then","response","cityDistrictMap","removeClass","hide","orderIndex","acc","districts","nearMe","currentLocation","mapOptions","citiesWithDistricts","maps","Map","getElementById","finally","addPin","filterPinsByKeyword","Math","startPage","endPage","loadOffers","handler","LocationId","TypeId","suggestionDebouceIntervalMs","Open24Hours","toLowerCase","Address","filterPinsByType","canSubmit","_canSubmit","shared","addSearchQuery","dispatchHeaderSearchCloseRequestedEvent","suggestionTimeout","_loadSuggestions","sanitizedQuery","suggestions","showRecommendations","recommendedServices","Marker","position","WorkingHours","ContactInfo","infoWindow","InfoWindow","content","queryHistory","StorageService","geolocation","getCurrentPosition","coords","latitude","longitude","_loadQueryHistory","code","log","POSITION_UNAVAILABLE","TIMEOUT","UNKNOWN_ERROR","alert","orderedPins","body","distance","calculateDistance","focus","toFixed","sort","a","b","Distance","lat2","lon2","deg2rad","deg","PI","onCloseRequest","lon1","dLat","lat1","dLon","sin","cos","atan2","sqrt","principal","pinLocations","minPrincipal","pinTypes","maxPrincipal","URLSearchParams","search","elem","_initializeCurrencyConfiguration","split","formattedValue","formattedValueWithCurrency","concat","LoanService","effectivePercent","formattedPercent","_initializeConfiguration","_flows","startDay","setHours","endDate","setMonth","monthCount","depositService","flows","enrollmentPeriod","_initializeEnrolmentPeriodConfiguration","UiService","filters","querySelector","remove","style","transform","changePage","page","totalPages","itemsPerPage","end","slice","maxEstatePrice","downPaymentPercent","minDownPaymentPercent","onMeasureUpdated","onShowSchedule","flat","formatNumberWithCurrency","formatCalculatorFloat","calculateEffectivePercent","schedule","estatePrice","minEstatePrice","config","minAmount","offer","isSpecialOffer","reduce","maxDownPaymentPercent","distict","rate","getDistrictOffersCount","formattedAmount","payments","entry","showDistrictsFilter","some","dispatchComponentMountedEvent","selectedCards","showAddNewItem","address","settings","cardsWithoutSelected","filterCards","closeModal","toggleClass","openCompareModal","selectedCardId","productId","selectCard","selectedCard","endpointUrl","apiBaseUrl","langAbbr","languageAbbr","getCardAttributeValue","cardId","attributes","attributeId","catch","e","ceil","depositsWithoutSelected","filterDeposits","filteredDeposits","deposit","pages","removeItemFromCompare","immediate","deposits","stopPropagation","formSubmitAction","onKeyPressTo","_inputKeyIsAllowed","clipboardData","pastedData","cursorPosition","selectionEnd","selectionLength","integerPart","fractionPart","onSubmit","altKey","parts","substring","_calculateUsingFrom","calculateUsingFrom","showSuggestions","_calculateUsingTo","result","showQueryHistory","CurrencyRatesService","newVal","oldVal","homeUrl","onHistoryEntryClicked","_calculateResult","currencyFrom","getSearchQueries","reverse","currencyTo","loaded","_calculateInitialValues","loading","axios","default","trimmedQuery","toUpperCase","trim","rateValue","rateTypeName","add","getCurrencyUnitAndName","currencyTexts","showCurrencyPrevValue","className","formSettings","formData","hideAmountSlider","term","group","$nextTick","startTerm","validateAllFields","hasOwnProperty","src","populateForm","Set","ranges","initialAmount","maxAmount","branches","minTerm","resultMessage","maxTerm","initialTerm","apiUrl","calculateLoanPayments","percent","monthlyPaymentAmount","append","monthlyPayment","amount","reload","submitForm","endPoint","isCertificate","reCaptchaToken","enrollmentPeriodsTitle","enrollmentPeriodsList","monthlyTrancheAmount","Fancybox","showMonthlyTrancheInput","isAccumulative","createFormData","formatNumber","date","xirr","ExcelXirr","newtonsMethod","totalDfXirr","sortedCashFlow","round","percentEnrollmentPeriod","depositAmount","minDepostAmount","maxDepostAmount","initialMonthlyTranceAmount","minMonthlyTrancheAmount","maxMonthlyTrancheAmount","maxMonthlyTranceAmount","totalWithdraw","x","ProductCalculatorCashFlowTypes","PercentEnrolment","CashOut","sum","form_title","$security","getGoogleReCaptchaToken","headers","getMonth","DepositService","calculateFlows","getFormTitle","groups","filesArray","genericFormGroup","key","cards","filteredCards","card","fields","showModal","attr","getCards","form_subtitle","pageId","attachOpenCompareModalEvent","currentUrl","selectedDeposits","dataLayer","selectedDepositId","selectDeposit","depositId","FormData","selectedDeposit","getDepositAttributeValue","getDeposits","filteredLoans","loan","selectLoanType","selected","filterLoans","loansWithoutSelected","selectedLoans","loans","selectedLoanId","selectLoan","getLoanAttributeValue","getLoans","isArray","index","detail","rates","USD","prefix","suffix","GBP","EUR","GEL","getCurrencyUnitValue","texts","onInputFrom","onInputTo","onKeyPressFrom","selectedUserType","getData","selectionStart","contactPersonFullname","identityCode","form","calculateRateUsingFrom","to","calculateRateUsingTo","getTeraCrossRatesForConverterFull","allRates","showHeader","nbgRates","crossRates","unit","Name","getCurrencyIsoName","iso","nbgOfficialRateChange","getTeraCrossRate","getTeraCrossRates","getFormSubTitle","category","each","moreContainer","$clone","$containerWidthPx","$dropdownContainer","$moreContainerParent","$minWidthSubtractPx","$singleMenuItems","currentVacancyId","parent","trigger","slidesPerView","navigation","disabledClass","sliderClass","breakpoints","slidesPerViewSmallDesktop","spacebetween","slidesperView","initializeSectionSwiper","dispatchOpenCompareModalEvent","width","not","slideToggle","handleCopy","button","textElement","navbarPlaceholder","navbar","header","navbarPlaceholderMarginBottom","navbarPlaceholderOffsetTop","offsetTop","scrollingUp","scrollY","fixedPoint","updateActiveNavItem","section","sectionTop","getBoundingClientRect","minusScrollHeight","whereToFixHeight","targetDiv","offsetHeight","bottomNav","dropdownContent","initializePackagesGrid","packagesNavPrevButton","packagesNavNextButton","opacity","firstRowCell","cellHeight","updatePackageNavButtonVisibility","getGridDimensions","headerRow","headerCells","numberOfColumns","frozenColumnWidth","COLUMN_GAP","visibleWidth","gridContent","clientWidth","totalWidth","getTotalGridWidth","maxScroll","remainingScroll","left","clearFields","email","contactPersonIdentityCode","selectUserType","resetForm","getRelatedField","f","refId","element","_createVueApp","arrangeMenu","menuElems","mainContainerWidthPx","moreContainerParent","widthSubtractPx","additionalWidthPx","currentWidthPx","invisibleItems","menuWrapper","getElementsByClassName","eq","outerWidth","empty","clone","setupMenu","wrap","svg4everybody","showTimeout","_trigger","_results","siblings","hover","Swiper","spaceBetween","watchOverflow","nextEl","prevEl","parents","dataset","textToCopy","textContent","clipboard","writeText","copiedText","createElement","appendChild","lastScrollTop","sections","navLinks","currentSectionId","getComputedStyle","marginBottom","sectionHeight","link","anchor","el","sectionId","onscroll","footer","footerPosition","windowHeight","innerHeight","paddingBottom","headerHeight","bottomNavHeight","dropdownHeight","height","childElementCount","justifyContent","COLUMN_WIDTH","frozenColumn","offsetWidth","scrollLeft","display","scrollPackagesGrid","direction","scrollBy","handleGridResize","updateButtonHeight","handleResize","innerWidth"],"mappings":"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","file":"post.min.js","sourcesContent":["Vue.component('calculator-dropdown', {\r\n props: {\r\n modelValue: {\r\n type: Object,\r\n required: true\r\n },\r\n title: {\r\n type: String,\r\n required: true\r\n },\r\n list: {\r\n type: Array,\r\n required: true\r\n },\r\n },\r\n\r\n emits: ['update:modelValue'],\r\n\r\n data: function () {\r\n return {\r\n currentItem: null,\r\n isDropdownOpen: false\r\n }\r\n },\r\n\r\n methods: {\r\n selectDropdownItem(item) {\r\n this.currentItem = item\r\n this.$emit('update:modelValue', item)\r\n this._closeList()\r\n },\r\n\r\n getDropdownParentClasses() {\r\n return {\r\n 'open': this.isDropdownOpen\r\n }\r\n },\r\n\r\n onOpenRequest() {\r\n if (!this.showDropdownContent()) {\r\n return\r\n }\r\n\r\n if (this.isDropdownOpen) {\r\n this._closeList()\r\n }\r\n else {\r\n this._openList()\r\n }\r\n },\r\n\r\n showDropdownContent() {\r\n return this.list && this.list.length > 1\r\n },\r\n\r\n _closeList() {\r\n this.isDropdownOpen = false\r\n $(this.$refs.list).stop().slideUp('fast')\r\n },\r\n\r\n _openList() {\r\n this.isDropdownOpen = true\r\n $(this.$refs.list).stop().slideDown('fast')\r\n }\r\n },\r\n\r\n computed: {\r\n currentItemText() {\r\n if (!this.currentItem) {\r\n return ''\r\n }\r\n\r\n return this.currentItem.text\r\n },\r\n\r\n currentItemId() {\r\n if (!this.currentItem) {\r\n return ''\r\n }\r\n\r\n return this.currentItem.id\r\n }\r\n },\r\n\r\n mounted() {\r\n this.currentItem = this.modelValue\r\n },\r\n\r\n created() {\r\n document.addEventListener('click', event => {\r\n if (this.$el.contains(event.target)) {\r\n return\r\n }\r\n this._closeList()\r\n })\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n`\n});\nVue.component('calculator-slider', {\r\n props: {\r\n title: {\r\n type: String,\r\n required: true\r\n },\r\n\r\n minValue: {\r\n type: Number,\r\n required: true\r\n },\r\n\r\n maxValue: {\r\n type: Number,\r\n required: true\r\n },\r\n\r\n startValue: {\r\n type: Number,\r\n required: true\r\n },\r\n\r\n measure: {\r\n type: String,\r\n required: false\r\n },\r\n\r\n minPrefix: {\r\n type: String,\r\n required: false\r\n },\r\n\r\n maxPrefix: {\r\n type: String,\r\n required: false\r\n },\r\n\r\n dropdownList: {\r\n type: Array,\r\n required: false\r\n },\r\n\r\n hideSliderControls: {\r\n type: Boolean,\r\n default: false,\r\n required: false\r\n }\r\n },\r\n\r\n emits: ['update:modelValue', 'update:measure'],\r\n\r\n data: function () {\r\n return {\r\n measureValue: null,\r\n currentValue: null,\r\n currentValueIsValid: true,\r\n isDropdownOpen: false,\r\n inputChangeTimeoutId: null,\r\n inputChangeTimeoutWaitMs: 700\r\n }\r\n },\r\n\r\n methods: {\r\n getRootClasses() {\r\n return {\r\n 'has-error': !this.currentValueIsValid\r\n }\r\n },\r\n\r\n showDropdownList() {\r\n const show = this.dropdownList && this.dropdownList.length\r\n return show\r\n },\r\n\r\n formatNumber(val) {\r\n const formattedVal = TextFormattingService.formatCalculatorInteger(val)\r\n return formattedVal\r\n },\r\n\r\n selectDropdownItem(measureVal) {\r\n this.measureValue = measureVal\r\n this.$emit('update:measure', measureVal)\r\n this._closeList()\r\n },\r\n\r\n getDropdownParentClasses() {\r\n return {\r\n 'open': this.isDropdownOpen\r\n }\r\n },\r\n\r\n onOpenRequest() {\r\n if (!this.showDropdownContent()) {\r\n return\r\n }\r\n\r\n if (this.isDropdownOpen) {\r\n this._closeList()\r\n }\r\n else {\r\n this._openList()\r\n }\r\n },\r\n\r\n onInputChanged() {\r\n if (this.inputChangeTimeoutId) {\r\n clearTimeout(this.inputChangeTimeoutId)\r\n }\r\n\r\n this.inputChangeTimeoutId = setTimeout(() => {\r\n if (this.currentValue > this.maxValue) {\r\n this.currentValue = this.maxValue\r\n }\r\n\r\n this.currentValueIsValid = true\r\n if (this.currentValue < this.minValue) {\r\n this.currentValueIsValid = false\r\n return\r\n //this.currentValue = this.minValue\r\n }\r\n\r\n const slider = this.$refs.slider.noUiSlider\r\n\r\n slider.setHandle(0, this.currentValue, false, false);\r\n this._closeList()\r\n }, this.inputChangeTimeoutWaitMs)\r\n },\r\n\r\n showDropdownContent() {\r\n return this.dropdownList && this.dropdownList.length > 1\r\n },\r\n\r\n _initializeSlider() {\r\n const sliderElement = this.$refs.slider\r\n\r\n const numericOptions = this._generateNumericOptions()\r\n const sliderOptions = {\r\n ...numericOptions,\r\n connect: [true, false],\r\n pips: {\r\n mode: 'count',\r\n values: 9,\r\n density: 9\r\n }\r\n }\r\n noUiSlider.create(sliderElement, sliderOptions)\r\n\r\n sliderElement.noUiSlider.on('update', () => {\r\n this._updatePipClasses()\r\n })\r\n },\r\n\r\n _updateSliderOptions() {\r\n const sliderElement = this.$refs.slider\r\n\r\n const numericOptions = this._generateNumericOptions()\r\n sliderElement.noUiSlider.updateOptions(numericOptions);\r\n },\r\n\r\n _generateNumericOptions() {\r\n const start = this.startValue || 0;\r\n const min = (this.minValue === Infinity || this.minValue === -Infinity)\r\n ? 0\r\n : (this.minValue || 0);\r\n const max = (this.maxValue === Infinity || this.maxValue === -Infinity)\r\n ? 1\r\n : (this.maxValue || min + 1);\r\n\r\n var numericOptions = {\r\n start: [start],\r\n range: {\r\n min: min,\r\n max: max\r\n }\r\n }\r\n return numericOptions;\r\n },\r\n\r\n _updatePipClasses() {\r\n const sliderElement = this.$refs.slider\r\n\r\n const handleValue = sliderElement.noUiSlider.get()\r\n const allPips = sliderElement.querySelectorAll('.noUi-marker')\r\n\r\n allPips.forEach(function (pip) {\r\n const pipValue = parseFloat(pip.nextElementSibling.getAttribute('data-value'))\r\n const isActive = pipValue < handleValue\r\n pip.classList.toggle('active-pip', isActive)\r\n })\r\n\r\n this.currentValue = parseInt(handleValue)\r\n\r\n this.$emit('update:modelValue', this.currentValue)\r\n\r\n this._closeList()\r\n },\r\n\r\n _closeList() {\r\n this.isDropdownOpen = false\r\n $(this.$refs.list).stop().slideUp('fast')\r\n },\r\n\r\n _openList() {\r\n this.isDropdownOpen = true\r\n $(this.$refs.list).stop().slideDown('fast')\r\n }\r\n },\r\n\r\n watch: {\r\n\r\n minValue(newValue, oldValue) {\r\n this._updateSliderOptions()\r\n },\r\n\r\n maxValue(newValue, oldValue) {\r\n this._updateSliderOptions()\r\n },\r\n\r\n startValue(newValue, oldValue) {\r\n this._updateSliderOptions()\r\n }\r\n },\r\n\r\n computed: {\r\n showInputMinHint() {\r\n const show = this.hideSliderControls && this.minValue > 0\r\n return show\r\n }\r\n },\r\n\r\n mounted() {\r\n this.measureValue = this.measure\r\n this.currentValue = this.startValue\r\n\r\n this._initializeSlider()\r\n },\r\n\r\n created() {\r\n document.addEventListener('click', event => {\r\n if (this.$el.contains(event.target)) {\r\n return\r\n }\r\n this._closeList()\r\n })\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{ title }}

\r\n \r\n
\r\n \r\n\r\n
\r\n\r\n \r\n {{ measureValue }}\r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n

{{ minPrefix }} {{ formatNumber(minValue) }}{{ measureValue }}

\r\n
\r\n\r\n
\r\n\r\n
\r\n

{{ minPrefix }} {{ formatNumber(minValue) }}{{ measureValue }}

\r\n

{{ maxPrefix }} {{ formatNumber(maxValue) }}{{ measureValue }}

\r\n
\r\n\r\n
\r\n`\n});\nVue.component('currency-selector', {\r\n props: {\r\n currencies: {\r\n type: Array,\r\n required: true\r\n },\r\n modelValue: {\r\n type: String,\r\n required: true\r\n }\r\n },\r\n\r\n emits: ['update:modelValue'],\r\n\r\n data: function () {\r\n return {\r\n isOpen: false\r\n }\r\n },\r\n\r\n methods: {\r\n getFlagUrl(currency) {\r\n const url = '~/m/u/currencies/' + currency + '.png'\r\n return url\r\n },\r\n\r\n getRootClasses() {\r\n return {\r\n 'open': this.isOpen\r\n }\r\n },\r\n\r\n onOpenRequest() {\r\n if (this.isOpen) {\r\n this._closeList()\r\n }\r\n else {\r\n this._openList()\r\n }\r\n },\r\n\r\n selectCurrency(currency) {\r\n this.$emit('update:modelValue', currency)\r\n this._closeList()\r\n },\r\n\r\n _closeList() {\r\n this.isOpen = false\r\n $(this.$refs.list).stop().slideUp('fast')\r\n },\r\n\r\n _openList() {\r\n this.isOpen = true\r\n $(this.$refs.list).stop().slideDown('fast')\r\n }\r\n },\r\n\r\n mounted() {\r\n },\r\n\r\n created() {\r\n document.addEventListener('click', event => {\r\n if (this.$el.contains(event.target)) {\r\n return\r\n }\r\n this._closeList()\r\n })\r\n }\r\n ,\ntemplate: `\r\n
\r\n \r\n\r\n
\r\n
\r\n \"\"\r\n
\r\n {{ modelValue }}\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n`\n});\nVue.component('formcontrol-file-upload', {\r\n props: {\r\n field: Object,\r\n submitted: Boolean,\r\n },\r\n data: function () {\r\n return {\r\n fileMaxSize: 10 * 1024 * 1024,\r\n fileList: [],\r\n //fileListForValue: [],\r\n filesError: false,\r\n filesErrorMessage: '',\r\n };\r\n },\r\n\r\n methods: {\r\n validateValue() {\r\n var _this = this;\r\n _this.field.valid = true;\r\n _this.field.message = '';\r\n\r\n if ((_this.field.value == null || _this.field.value.length == 0) && _this.field.mandatory) {\r\n _this.field.valid = false;\r\n _this.field.message = $phrase('general-fillthefield');\r\n } else if (_this.isFileWithErrorInArray()) {\r\n _this.field.valid = false;\r\n _this.field.message = $phrase('vacancyform_fileuploader-filesizelimit');\r\n } else {\r\n _this.field.valid = true;\r\n _this.field.message = '';\r\n }\r\n },\r\n isFileWithErrorInArray() {\r\n return this.fileList.filter(file => file.hasError).length > 0;\r\n },\r\n dragOver(event) {\r\n var _this = this;\r\n event.dataTransfer.dropEffect = 'copy'\r\n const files = Array.from(event.dataTransfer.files)\r\n\r\n },\r\n\r\n dropFiles(event) {\r\n var _this = this;\r\n const files = Array\r\n .from(event.dataTransfer.files)\r\n\r\n for (var i = 0; i < files.length; i++) {\r\n var file = files[i];\r\n _this.processFile(_this, file);\r\n }\r\n },\r\n\r\n selectFiles() {\r\n this.$refs.fileInput.click()\r\n },\r\n removeFile(file) {\r\n var _this = this;\r\n let fileIndex = _this.fileList.indexOf(file);\r\n _this.fileList.splice(fileIndex, 1);\r\n\r\n _this.field.value = _this.fileList;\r\n _this.validateValue();\r\n },\r\n processSelectedFiles(event) {\r\n var _this = this;\r\n\r\n const files = Array\r\n .from(event.target.files)\r\n\r\n for (var i = 0; i < files.length; i++) {\r\n var file = files[i];\r\n _this.processFile(_this, file);\r\n }\r\n },\r\n\r\n getFileSizeInMB(size) {\r\n return (size / 1024 / 1024).toFixed(2) + 'MB';\r\n },\r\n\r\n processFile(_this, file) {\r\n file.hasError = false;\r\n file.errorMessage = '';\r\n\r\n if (file.size > _this.fileMaxSize) {\r\n file.hasError = true;\r\n //file.errorMessage = 'file is too big';\r\n }\r\n\r\n _this.fileList.push(file);\r\n\r\n _this.field.value = _this.fileList.filter(file => !file.hasError);\r\n _this.validateValue();\r\n },\r\n },\r\n\r\n mounted() {\r\n },\r\n watch: {\r\n submitted(val) {\r\n if (val) {\r\n this.validateValue();\r\n }\r\n }\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{$phrase('vacancyform_fileuploader-selectfileanddrophere')}}\r\n {{$phrase('vacancyform_fileuploader-fileextensions')}}\r\n
\r\n \r\n
\r\n
\r\n
0\">\r\n
\r\n \r\n \r\n \r\n {{file.name}}\r\n {{getFileSizeInMB(file.size)}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n

{{ field.message }}

\r\n
\r\n
\r\n`\n});\nVue.component('formcontrol-number-input', {\r\n props: {\r\n field: Object,\r\n submitted: Boolean,\r\n },\r\n\r\n data: function () {\r\n return {\r\n }\r\n },\r\n\r\n methods: {\r\n validateValue() {\r\n var _this = this;\r\n\r\n var regex = null;\r\n if (_this.field.regex != null && _this.field.regex != '' && _this.field.mandatory) {\r\n regex = new RegExp(_this.field.regex);\r\n }\r\n\r\n if (_this.field.mandatory && (_this.field.value == null || _this.field.value == '' || !_this.field.value.length)) {\r\n _this.field.valid = false;\r\n _this.field.message = 'შეავსეთ ველი';\r\n return;\r\n } else if (regex != null && !regex.test(_this.field.value)) {\r\n _this.field.valid = false;\r\n _this.field.message = 'არასწორი ფორმატი';\r\n return;\r\n } else {\r\n _this.field.valid = true;\r\n _this.field.message = '';\r\n return;\r\n }\r\n\r\n\r\n //if ((!_this.field.value || !_this.field.value.length) && _this.field.mandatory) {\r\n // _this.field.valid = false;\r\n // _this.field.message = 'შეავსეთ ველი';\r\n //} else {\r\n // _this.field.valid = true;\r\n // _this.field.message = '';\r\n //}\r\n },\r\n\r\n updateValue(value) {\r\n var _this = this;\r\n _this.field.value = value;\r\n if (_this.submitted) {\r\n _this.validateValue();\r\n }\r\n },\r\n\r\n allowNumbersOnly(evt) {\r\n evt = (evt) ? evt : window.event;\r\n var charCode = (evt.which) ? evt.which : evt.keyCode;\r\n\r\n if ((charCode > 31 && (charCode < 48 || charCode > 57)) && charCode !== 46 && charCode !== 43) {\r\n evt.preventDefault();\r\n } else {\r\n return true;\r\n }\r\n },\r\n\r\n },\r\n\r\n mounted() {\r\n },\r\n watch: {\r\n submitted(val) {\r\n if (val) {\r\n this.validateValue();\r\n }\r\n }\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n \r\n \r\n
\r\n

{{ field.message }}

\r\n
\r\n`\n});\nVue.component('formcontrol-recaptcha', {\r\n props: {\r\n field: Object,\r\n },\r\n\r\n data: function () {\r\n return {\r\n\r\n }\r\n },\r\n\r\n methods: {\r\n \r\n },\r\n mounted() {\r\n },\r\n watch: {\r\n \r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n
\r\n

\r\n
\r\n
\r\n
\r\n`\n});\nVue.component('formcontrol-select', {\r\n props: {\r\n field: Object,\r\n submitted: Boolean,\r\n relatedField: Object\r\n },\r\n\r\n data: function () {\r\n return {\r\n isOpen: false,\r\n }\r\n },\r\n\r\n methods: {\r\n showItem(item) {\r\n if (this.relatedField == null) {\r\n return true;\r\n } else {\r\n return item != null && item.visible != null ? item.visible : false;\r\n }\r\n },\r\n filterList() {\r\n var _this = this;\r\n\r\n if (_this.relatedField != null) {\r\n _this.field.list.forEach(item => {\r\n item.visible = false;\r\n });\r\n\r\n if (_this.relatedField.value != null && _this.relatedField.value.id != null) {\r\n\r\n var selectedRelatedFieldValue = _this.relatedField.value.id;\r\n\r\n _this.field.list.forEach(item => {\r\n if (item.relationId == selectedRelatedFieldValue) {\r\n item.visible = true;\r\n }\r\n });\r\n }\r\n }\r\n },\r\n validateValue() {\r\n var _this = this;\r\n\r\n if ((!_this.field.value || _this.field.value?.title == null || _this.field.value?.title == undefined) && _this.field.mandatory) {\r\n _this.field.valid = false;\r\n _this.field.message = 'შეავსეთ ველი';\r\n } else {\r\n _this.field.valid = true;\r\n _this.field.message = '';\r\n }\r\n },\r\n\r\n updateValue(value) {\r\n var _this = this;\r\n\r\n _this.field.value = value;\r\n _this.validateValue();\r\n _this._closeList()\r\n },\r\n\r\n onOpenRequest() {\r\n if (this.isOpen) {\r\n this._closeList()\r\n }\r\n else {\r\n this.filterList()\r\n this._openList()\r\n }\r\n },\r\n\r\n _closeList() {\r\n this.isOpen = false\r\n $(this.$refs.list).stop().slideUp('fast')\r\n },\r\n\r\n _openList() {\r\n this.isOpen = true\r\n $(this.$refs.list).stop().slideDown('fast')\r\n }\r\n },\r\n\r\n mounted() {\r\n },\r\n watch: {\r\n 'relatedField.value': function (newValue, oldValue) {\r\n if (oldValue != newValue) {\r\n this.field.value = {};\r\n this.validateValue();\r\n }\r\n },\r\n submitted(val) {\r\n if (val) {\r\n this.validateValue();\r\n }\r\n }\r\n\r\n },\r\n created() {\r\n document.addEventListener('click', event => {\r\n if (this.$el.contains(event.target)) {\r\n return\r\n }\r\n this._closeList()\r\n })\r\n }\r\n ,\ntemplate: `\r\n
\r\n\r\n
\r\n \r\n
\r\n

{{ field.message }}

\r\n
\r\n\r\n`\n});\nVue.component('formcontrol-text-input', {\r\n props: {\r\n field: Object,\r\n submitted: Boolean,\r\n },\r\n\r\n data: function () {\r\n return {\r\n\r\n }\r\n },\r\n\r\n methods: {\r\n validateValue() {\r\n var _this = this;\r\n\r\n var regex = null;\r\n if (_this.field.regex != null && _this.field.regex != '' && _this.field.mandatory) {\r\n regex = new RegExp(_this.field.regex);\r\n }\r\n\r\n if (_this.field.mandatory && (_this.field.value == null || _this.field.value == '' || !_this.field.value.length)) {\r\n _this.field.valid = false;\r\n _this.field.message = 'შეავსეთ ველი';\r\n return;\r\n } else if (regex != null && !regex.test(_this.field.value)) {\r\n _this.field.valid = false;\r\n _this.field.message = 'არასწორი ფორმატი';\r\n return;\r\n } else {\r\n _this.field.valid = true;\r\n _this.field.message = '';\r\n return;\r\n }\r\n },\r\n updateValue(value) {\r\n var _this = this;\r\n _this.field.value = value;\r\n if (_this.submitted) {\r\n _this.validateValue();\r\n }\r\n }\r\n },\r\n mounted() {\r\n },\r\n watch: {\r\n submitted(val) {\r\n if (val) {\r\n this.validateValue();\r\n }\r\n }\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n

{{ field.message }}

\r\n
\r\n`\n});\nVue.component('formcontrol-textarea-input', {\r\n props: {\r\n field: Object,\r\n submitted: Boolean,\r\n },\r\n\r\n data: function () {\r\n return {\r\n\r\n }\r\n },\r\n\r\n methods: {\r\n validateValue() {\r\n var _this = this;\r\n\r\n var regex = null;\r\n if (_this.field.regex != null && _this.field.regex != '' && _this.field.mandatory) {\r\n regex = new RegExp(_this.field.regex);\r\n }\r\n\r\n if (_this.field.mandatory && (_this.field.value == null || _this.field.value == '' || !_this.field.value.length)) {\r\n _this.field.valid = false;\r\n _this.field.message = 'შეავსეთ ველი';\r\n return;\r\n } else if (regex != null && !regex.test(_this.field.value)) {\r\n _this.field.valid = false;\r\n _this.field.message = 'არასწორი ფორმატი';\r\n return;\r\n } else {\r\n _this.field.valid = true;\r\n _this.field.message = '';\r\n return;\r\n }\r\n },\r\n\r\n updateValue(value) {\r\n var _this = this;\r\n _this.field.value = value;\r\n if (_this.submitted) {\r\n _this.validateValue();\r\n }\r\n }\r\n },\r\n\r\n mounted() {\r\n },\r\n watch: {\r\n submitted(val) {\r\n if (val) {\r\n this.validateValue();\r\n }\r\n }\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n \r\n \r\n
\r\n

{{ field.message }}

\r\n
\r\n`\n});\nVue.component('svg-icon', {\r\n props: ['icon'],\r\n data: function () {\r\n return {\r\n baseUrl: window._data.baseUrl\r\n };\r\n },\r\n methods: {\r\n getIconUrl: function () {\r\n return this.baseUrl + 'm/i/icons.svg#' + this.icon;\r\n }\r\n },\r\n mounted() {\r\n }\r\n ,\ntemplate: `\r\n \r\n`\n});\nVue.component('branches', {\r\n props: {},\r\n data: function () {\r\n return {\r\n locations: [],\r\n types: [],\r\n pins: [],\r\n filter: {\r\n showMap: false,\r\n selectedLocation: '',\r\n selectedTypes: [],\r\n filterBy24: false,\r\n nearMe: false,\r\n keyword: ''\r\n },\r\n currentLocation: {\r\n lat: null,\r\n lng: null\r\n },\r\n settings: {\r\n sendingData: false,\r\n submitted: false,\r\n resultMessage: '',\r\n succeeded: null\r\n },\r\n };\r\n },\r\n methods: {\r\n getPageTitle() {\r\n return window.currentPageTitle;\r\n },\r\n toggleMap(show) {\r\n this.filter.showMap = show;\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth',\r\n });\r\n },\r\n\r\n selectLocation(location) {\r\n var _this = this;\r\n _this.filter.selectedLocation = location;\r\n $('.hero-search__filter-dropdown').removeClass('open');\r\n $('.js-results').hide();\r\n var newUrl = updateSingleValueQueryParam('location', location.Id);\r\n history.replaceState({}, null, newUrl);\r\n _this.filterPins();\r\n },\r\n\r\n initMap() {\r\n var _this = this;\r\n var firstPin = _this.pins[0];\r\n var lat = 41.7151377;\r\n var lng = 44.827096;\r\n if (firstPin != null) {\r\n var lat = firstPin.Latitude;\r\n var lng = firstPin.Longitude;\r\n }\r\n\r\n if (_this.filter.nearMe) {\r\n lat = _this.currentLocation.lat;\r\n lng = _this.currentLocation.lng;\r\n\r\n }\r\n\r\n const mapOptions = {\r\n center: { lat: lat, lng: lng },\r\n zoom: 10,\r\n };\r\n\r\n this.map = new google.maps.Map(document.getElementById('map'), mapOptions);\r\n this.pins.forEach(pin => {\r\n this.addPin(pin);\r\n });\r\n if (_this.filter.nearMe) {\r\n this.addPin({\r\n Latitude: lat,\r\n Longitude: lng,\r\n Title: 'თქვენი მდებარე პოზიცია',\r\n Icon: '',\r\n });\r\n }\r\n },\r\n\r\n filterPinsByKeyword() {\r\n var _this = this;\r\n _this.pins = window.pins;\r\n\r\n\r\n var newUrl = updateSingleValueQueryParam('keyword', _this.filter.keyword);\r\n history.replaceState({}, null, newUrl);\r\n\r\n\r\n _this.filterPins();\r\n },\r\n\r\n containsType(type) {\r\n var _this = this;\r\n return _this.filter.selectedTypes.find(function (selectedType) {\r\n return selectedType.Id == type.Id;\r\n });\r\n },\r\n\r\n filterBy24() {\r\n var _this = this;\r\n _this.filter.filterBy24 = !_this.filter.filterBy24;\r\n if (_this.filter.filterBy24) {\r\n var newUrl = updateSingleValueQueryParam('open', 1);\r\n history.replaceState({}, null, newUrl);\r\n } else {\r\n var newUrl = updateSingleValueQueryParam('open', 0);\r\n history.replaceState({}, null, newUrl);\r\n }\r\n _this.filterPins();\r\n },\r\n\r\n filterPins() {\r\n var _this = this;\r\n _this.pins = window.pins;\r\n\r\n if (_this.filter.selectedLocation.Id != undefined && _this.filter.selectedLocation.Id != null && _this.filter.selectedLocation.Id != 0) {\r\n _this.pins = _this.pins.filter(function (pin) {\r\n return pin.LocationId == _this.filter.selectedLocation.Id;\r\n });\r\n }\r\n\r\n if (_this.filter.selectedTypes != null && _this.filter.selectedTypes.length > 0) {\r\n _this.pins = _this.pins.filter(function (pin) {\r\n return _this.filter.selectedTypes.find(function (selectedType) {\r\n return selectedType.Id == pin.TypeId;\r\n });\r\n });\r\n }\r\n\r\n if (_this.filter.filterBy24) {\r\n _this.pins = _this.pins.filter(function (pin) {\r\n return pin.Open24Hours == true;\r\n });\r\n }\r\n\r\n if (_this.filter.keyword != '') {\r\n _this.pins = _this.pins.filter(function (pin) {\r\n return pin.Title?.toLowerCase()?.includes(_this.filter.keyword.toLowerCase()) || pin.Address?.toLowerCase()?.includes(_this.filter.keyword.toLowerCase());\r\n });\r\n }\r\n\r\n _this.initMap();\r\n },\r\n\r\n filterPinsByType(type) {\r\n var _this = this;\r\n if (_this.containsType(type)) {\r\n _this.filter.selectedTypes = _this.filter.selectedTypes.filter(function (selectedType) {\r\n return selectedType.Id != type.Id;\r\n });\r\n var typeIds = _this.filter.selectedTypes.map(function (type) {\r\n return type.Id;\r\n });\r\n var newUrl = updateSingleValueQueryParam('type', typeIds);\r\n history.replaceState({}, null, newUrl);\r\n _this.filterPins();\r\n } else {\r\n _this.filter.selectedTypes.push(type);\r\n var typeIds = _this.filter.selectedTypes.map(function (type) {\r\n return type.Id;\r\n });\r\n var newUrl = updateSingleValueQueryParam('type', typeIds);\r\n history.replaceState({}, null, newUrl);\r\n _this.filterPins();\r\n }\r\n\r\n _this.filterPins();\r\n },\r\n\r\n addPin(pin) {\r\n var _this = this;\r\n const marker = new google.maps.Marker({\r\n position: { lat: pin.Latitude, lng: pin.Longitude },\r\n map: this.map,\r\n icon: pin.Icon,\r\n title: pin.Title,\r\n });\r\n\r\n var infoWindowContent = `\r\n
\r\n

`+ pin.Title + `

\r\n

`+ pin.Address + `

\r\n \r\n \r\n \r\n \r\n მიმართულების ჩვენება\r\n \r\n
\r\n
\r\n სამუშაო საათები\r\n `+ pin.WorkingHours + `\r\n
\r\n
\r\n საკონტაქტო ინფორმაცია\r\n `+ pin.ContactInfo + `\r\n
\r\n
\r\n
`;\r\n\r\n\r\n var infoWindow = new google.maps.InfoWindow({\r\n content: infoWindowContent\r\n });\r\n marker.addListener('click', function () {\r\n infoWindow.open(map, marker);\r\n });\r\n\r\n return marker;\r\n },\r\n\r\n showDirection(item) {\r\n var _this = this;\r\n window.open(_this.getDirectionUrl(item));\r\n },\r\n\r\n getDirectionUrl(item) {\r\n return 'https://www.google.com/maps/dir/?api=1&destination=' + item.Latitude + ',' + item.Longitude;\r\n },\r\n\r\n getLocation() {\r\n var _this = this;\r\n if (navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n function (position) {\r\n _this.currentLocation.lat = position.coords.latitude;\r\n _this.currentLocation.lng = position.coords.longitude;\r\n _this.filter.nearMe = true;\r\n //var newUrl = updateSingleValueQueryParam('near', _this.filter.nearMe == true ? 1 : 0);\r\n //history.replaceState({}, null, newUrl);\r\n\r\n _this.filterPins();\r\n\r\n _this.orderedPins();\r\n },\r\n function (error) {\r\n switch (error.code) {\r\n case error.PERMISSION_DENIED:\r\n console.log(\"User denied the request for Geolocation.\");\r\n break;\r\n case error.POSITION_UNAVAILABLE:\r\n console.log(\"Location information is unavailable.\");\r\n break;\r\n case error.TIMEOUT:\r\n console.log(\"The request to get user location timed out.\");\r\n break;\r\n case error.UNKNOWN_ERROR:\r\n console.log(\"An unknown error occurred.\");\r\n break;\r\n }\r\n });\r\n } else {\r\n alert(\"Geolocation is not supported by this browser.\");\r\n }\r\n },\r\n\r\n orderedPins() {\r\n var _this = this;\r\n if (_this.filter.nearMe == true) {\r\n var orderedPins = _this.pins.map(function (pin) {\r\n var distance = _this.calculateDistance(pin.Latitude, pin.Longitude);\r\n pin.Distance = distance.toFixed(2);\r\n return pin;\r\n }).sort(function (a, b) {\r\n return a.Distance - b.Distance;\r\n });\r\n\r\n _this.pins = orderedPins;\r\n }\r\n },\r\n\r\n calculateDistance(lat2, lon2) {\r\n var _this = this;\r\n function deg2rad(deg) {\r\n return deg * (Math.PI / 180);\r\n }\r\n\r\n var lat1 = this.currentLocation.lat;\r\n var lon1 = this.currentLocation.lng;\r\n\r\n var R = 6371; // Radius of the earth in km\r\n var dLat = deg2rad(lat2 - lat1); // deg2rad below\r\n var dLon = deg2rad(lon2 - lon1);\r\n var a =\r\n Math.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *\r\n Math.sin(dLon / 2) * Math.sin(dLon / 2)\r\n ;\r\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n var d = R * c; // Distance in km\r\n return d;\r\n }\r\n },\r\n mounted() {\r\n var _this = this;\r\n _this.locations = window.pinLocations;\r\n _this.types = window.pinTypes;\r\n _this.pins = window.pins;\r\n\r\n var urlParams = new URLSearchParams(window.location.search)\r\n\r\n var locationId = urlParams.get('location');\r\n var near = urlParams.get('near');\r\n\r\n var typeIds = urlParams.get('type');\r\n var open = urlParams.get('open');\r\n var keyword = urlParams.get('keyword');\r\n\r\n if (open != null && open == 1) {\r\n _this.filter.filterBy24 = open == 1;\r\n }\r\n\r\n if (typeIds != null) {\r\n var typeIdsArray = typeIds.split(',');\r\n _this.filter.selectedTypes = _this.types.filter(function (type) {\r\n return typeIdsArray.includes(type.Id.toString());\r\n });\r\n }\r\n\r\n if (locationId != null) {\r\n _this.filter.selectedLocation = _this.locations.find(function (location) {\r\n return location.Id == locationId;\r\n });\r\n }\r\n\r\n if (keyword != null && keyword.length > 0) {\r\n _this.filter.keyword = keyword;\r\n }\r\n\r\n if (_this.filter.nearMe == true) {\r\n _this.getLocation();\r\n }\r\n _this.filterPins();\r\n _this.initMap();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{getPageTitle()}}

\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n {{$phrase('branches_map')}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n

{{pin.Title}} - {{ pin.Distance }} კმ

\r\n

{{pin.Title}}

\r\n

{{pin.Address}}

\r\n \r\n \r\n \r\n \r\n {{$phrase('branches_showdirection')}}\r\n \r\n
\r\n
\r\n {{$phrase('branches_workinghours')}}\r\n {{pin.WorkingHours}}\r\n
\r\n
\r\n {{$phrase('branches_contactinfo')}}\r\n {{pin.ContactInfo}}\r\n
\r\n
\r\n
\r\n \r\n \"\"\r\n \"\"\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n {{$phrase('branches_map')}}\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n`\n});\nVue.component('developers-list', {\r\n props: {},\r\n data: function () {\r\n return {\r\n offers: [],\r\n cities: [],\r\n filteredOffers: [],\r\n selectedItems: [],\r\n visibleOffers: [],\r\n specialOfferChecked: false,\r\n keyword: '',\r\n orderedByDesc: true,\r\n pagination: {\r\n currentPage: 1,\r\n itemsPerPage: 12,\r\n showPager: false\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n closeFilter() {\r\n var filters = document.querySelector('.developers-filters');\r\n document.body.classList.remove('noscroll');\r\n filters.style.transform = \"translateY(100%)\";\r\n },\r\n changePage(page) {\r\n var _this = this;\r\n if (page !== _this.pagination.currentPage && page > 0 && page <= _this.totalPages) {\r\n _this.pagination.currentPage = page;\r\n _this.updateVisibleItems();\r\n }\r\n },\r\n updateVisibleItems() {\r\n const start = (this.pagination.currentPage - 1) * this.pagination.itemsPerPage;\r\n const end = start + this.pagination.itemsPerPage;\r\n const visibleItems = this.filteredOffers.slice(start, end);\r\n this.visibleOffers = visibleItems;\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth',\r\n });\r\n },\r\n orderOffers() {\r\n var _this = this;\r\n\r\n _this.orderedByDesc = !_this.orderedByDesc;\r\n \r\n if (_this.orderedByDesc) {\r\n _this.visibleOffers = _this.visibleOffers.sort((a, b) => new Date(a.createDt) - new Date(b.createDt));\r\n } else {\r\n _this.visibleOffers = _this.visibleOffers.sort((a, b) => new Date(b.createDt) - new Date(a.createDt));\r\n }\r\n\r\n },\r\n removeSelectedItem(item) {\r\n var _this = this;\r\n\r\n var checkedDistricts = _this.cities.map(city => city.districts.filter(district => district.checked).map(district => district)).flat() || [];\r\n var checkedCities = _this.cities.filter(city => city.checked).map(city => city) || [];\r\n\r\n if (checkedCities.length > 0) {\r\n checkedCities.forEach(city => {\r\n if (city.id === item.id && city.title === item.title) {\r\n city.checked = false;\r\n }\r\n });\r\n }\r\n\r\n if (checkedDistricts.length > 0) {\r\n checkedDistricts.forEach(district => {\r\n if (district.id === item.id && district.title === item.title) {\r\n district.checked = false;\r\n }\r\n });\r\n }\r\n\r\n this.filterOffers();\r\n },\r\n getSpecialOffersCount() {\r\n return this.filteredOffers.filter(offer => offer.isSpecialOffer).length;\r\n },\r\n getAllOffersCount() {\r\n var allCitiesOffersCount = this.cities.map(city => this.getCityOffersCount(city)).reduce((a, b) => a + b, 0);\r\n return allCitiesOffersCount;\r\n },\r\n getCityOffersCount(city) {\r\n var filteredOffers = this.offers.filter(offer => offer.distict.city.id === city.id);\r\n\r\n if (this.specialOfferChecked) {\r\n filteredOffers = filteredOffers.filter(offer => offer.isSpecialOffer);\r\n }\r\n\r\n if (this.keyword.length) {\r\n filteredOffers = filteredOffers.filter(offer => offer.title.toLowerCase().includes(this.keyword.toLowerCase()));\r\n }\r\n\r\n return filteredOffers.length;\r\n },\r\n getDistrictOffersCount(district) {\r\n var filteredOffers = this.offers.filter(offer => offer.distict.id === district.id);\r\n\r\n if (this.specialOfferChecked) {\r\n filteredOffers = filteredOffers.filter(offer => offer.isSpecialOffer);\r\n }\r\n\r\n if (this.keyword.length) {\r\n filteredOffers = filteredOffers.filter(offer => offer.title.toLowerCase().includes(this.keyword.toLowerCase()));\r\n }\r\n\r\n return filteredOffers.length;\r\n },\r\n selectSpecialOffer(checked) {\r\n this.specialOfferChecked = checked;\r\n //this.updateCityOffersQuanaities();\r\n this.filterOffers();\r\n },\r\n showDistrictsFilter() {\r\n return this.cities.some(city => city.checked);\r\n },\r\n filterOffers() {\r\n var _this = this;\r\n var offers = _this.offers;\r\n _this.filteredOffers = offers;\r\n\r\n var checkedCities = _this.cities.filter(city => city.checked).map(city => city) || [];\r\n\r\n var unChechedCities = _this.cities.filter(city => !city.checked).map(city => city) || [];\r\n\r\n unChechedCities.forEach(city => {\r\n _this.diselectDistricts(city);\r\n });\r\n\r\n var checkedDistricts = _this.cities.map(city => city.districts.filter(district => district.checked).map(district => district)).flat() || [];\r\n\r\n if (checkedDistricts.length > 0) {\r\n _this.filteredOffers = offers.filter(function (offer) {\r\n return checkedDistricts.some(district => district.id === offer.distict.id);\r\n });\r\n } else if (checkedCities.length > 0) {\r\n _this.filteredOffers = offers.filter(function (offer) {\r\n return checkedCities.some(city => city.id === offer.distict.city.id);\r\n });\r\n }\r\n\r\n if (_this.specialOfferChecked) {\r\n _this.filteredOffers = _this.filteredOffers.filter(offer => offer.isSpecialOffer);\r\n }\r\n\r\n if (_this.keyword.length) {\r\n _this.filteredOffers = _this.filteredOffers.filter(offer => offer.title.toLowerCase().includes(_this.keyword.toLowerCase()) || offer.address.toLowerCase().includes(_this.keyword.toLowerCase()));\r\n }\r\n _this.orderOffers();\r\n _this.getSelectedItems();\r\n _this.pagination.currentPage = 1;\r\n _this.pagination.showPager = _this.filteredOffers.length > _this.pagination.itemsPerPage;\r\n },\r\n diselectDistricts(city) {\r\n city.districts.forEach(district => district.checked = false);\r\n },\r\n getSelectedItems() {\r\n var _this = this;\r\n\r\n _this.selectedItems = [];\r\n\r\n var checkedDistricts = _this.cities.map(city => city.districts.filter(district => district.checked).map(district => district)).flat() || [];\r\n var checkedCities = _this.cities.filter(city => city.checked).map(city => city) || [];\r\n\r\n if (checkedCities.length > 0) {\r\n _this.selectedItems = _this.selectedItems.concat(checkedCities);\r\n }\r\n\r\n if (checkedDistricts.length > 0) {\r\n _this.selectedItems = _this.selectedItems.concat(checkedDistricts);\r\n }\r\n\r\n },\r\n loadOffers() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'DevelopersApi/GetDevelopersList';\r\n\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n _this.offers = response.data.data;\r\n _this.filteredOffers = _this.offers;\r\n\r\n const cityDistrictMap = _this.offers.reduce((acc, offer) => {\r\n const { city, title, orderIndex } = offer.distict;\r\n if (!acc[city.id]) {\r\n acc[city.id] = {\r\n id: city.id,\r\n title: city.title,\r\n orderIndex: city.orderIndex,\r\n districts: []\r\n };\r\n }\r\n if (!acc[city.id].districts.find(district => district.id === offer.distict.id)) {\r\n acc[city.id].districts.push({ id: offer.distict.id, title, orderIndex });\r\n acc[city.id].districts.sort((a, b) => b.orderIndex - a.orderIndex); // Reverse the order\r\n }\r\n return acc;\r\n }, {});\r\n\r\n const citiesWithDistricts = Object.values(cityDistrictMap);\r\n\r\n citiesWithDistricts.sort((a, b) => b.orderIndex - a.orderIndex); // Reverse the order\r\n\r\n _this.cities = citiesWithDistricts;\r\n _this.filterOffers();\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n },\r\n },\r\n computed: {\r\n totalPages() {\r\n return Math.ceil(this.filteredOffers.length / this.pagination.itemsPerPage);\r\n },\r\n startPage() {\r\n if (this.pagination.currentPage <= 3) {\r\n return 2;\r\n } else if (this.pagination.currentPage >= this.totalPages - 2) {\r\n return this.totalPages - 3;\r\n } else {\r\n return this.pagination.currentPage - 1;\r\n }\r\n },\r\n endPage() {\r\n if (this.pagination.currentPage <= 3) {\r\n return Math.min(4, this.totalPages - 1);\r\n } else if (this.pagination.currentPage >= this.totalPages - 2) {\r\n return this.totalPages - 1;\r\n } else {\r\n return this.pagination.currentPage + 1;\r\n }\r\n },\r\n pages() {\r\n let pages = [];\r\n for (let i = this.startPage; i <= this.endPage; i++) {\r\n pages.push(i);\r\n }\r\n return pages;\r\n },\r\n },\r\n mounted() {\r\n this.loadOffers();\r\n },\r\n watch: {\r\n currentPage: {\r\n immediate: true,\r\n handler() {\r\n this.updateVisibleItems();\r\n },\r\n },\r\n filteredOffers: {\r\n immediate: true,\r\n handler() {\r\n this.updateVisibleItems();\r\n },\r\n },\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{$phrase('developerslist_location')}}

\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n

{{$phrase('developerslist_district')}}

\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n

{{$phrase('developerslist_type')}}

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n {{$phrase('developerslist_sort')}}\r\n \r\n {{$phrase('developerslist_sortbydate')}}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n {{item.title}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n {{$phrase('developerslist_offer')}}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n {{$phrase('developerslist_specialprice')}}\r\n
\r\n
\r\n
\r\n

{{offer.title}}

\r\n
\r\n

{{offer.address}}

\r\n

{{$phrase('developerslist_sqm')}}{{offer.sqMeterPrice}}

\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n`\n});\nVue.component('header-search', {\r\n props: {\r\n formSubmitAction: {\r\n type: String,\r\n required: true\r\n },\r\n recommendedServices: {\r\n type: Array,\r\n required: true\r\n }\r\n },\r\n data: function () {\r\n return {\r\n suggestionDebouceIntervalMs: 1000,\r\n query: null,\r\n isOpen: false,\r\n suggestionTimeout: null,\r\n loading: false,\r\n suggestions: [],\r\n queryHistory: []\r\n }\r\n },\r\n\r\n methods: {\r\n getRootClasses() {\r\n return {\r\n 'open': this.isOpen\r\n }\r\n },\r\n\r\n onSubmit(event) {\r\n const canSubmit = this._canSubmit()\r\n if (!canSubmit) {\r\n event.preventDefault();\r\n }\r\n\r\n StorageService.shared.addSearchQuery(this.sanitizedQuery)\r\n },\r\n\r\n onCloseRequest() {\r\n this.isOpen = false\r\n document.body.classList.remove('search-open')\r\n UiService.shared.dispatchHeaderSearchCloseRequestedEvent()\r\n },\r\n\r\n onInput() {\r\n clearTimeout(this.suggestionTimeout)\r\n\r\n setTimeout(() => {\r\n this._loadSuggestions()\r\n }, this.suggestionDebouceIntervalMs)\r\n\r\n if (!this.sanitizedQuery) {\r\n this.suggestions = []\r\n }\r\n },\r\n\r\n showRecommendations() {\r\n if (this.queryHistory.length) {\r\n return false\r\n }\r\n\r\n if (!this.recommendedServices) {\r\n return false\r\n }\r\n\r\n if (!this.recommendedServices.length) {\r\n return false\r\n }\r\n\r\n const show = !this.showSuggestions()\r\n return show\r\n },\r\n\r\n showSuggestions() {\r\n const show = this.suggestions && this.suggestions.length\r\n return show\r\n },\r\n\r\n showQueryHistory() {\r\n if (!this.queryHistory.length) {\r\n return false\r\n }\r\n\r\n const show = !this.showSuggestions()\r\n return show\r\n },\r\n\r\n showViewAllButton() {\r\n const canSubmit = this._canSubmit()\r\n return canSubmit\r\n },\r\n\r\n getQueryHistoryTargetUrl(entry) {\r\n var url = window._data.homeUrl + 'search?query=' + entry\r\n return url\r\n },\r\n\r\n onHistoryEntryClicked(entry) {\r\n //this.query = entry\r\n //this._loadSuggestions()\r\n },\r\n\r\n _canSubmit() {\r\n if (!this.sanitizedQuery) {\r\n return false\r\n }\r\n\r\n if (!this.sanitizedQuery.length) {\r\n return false\r\n }\r\n\r\n if (this.sanitizedQuery.length < 4) {\r\n return false\r\n }\r\n\r\n return true\r\n },\r\n\r\n _loadQueryHistory() {\r\n this.queryHistory = StorageService.shared.getSearchQueries().reverse()\r\n },\r\n\r\n async _loadSuggestions() {\r\n if (this.loading) {\r\n return\r\n }\r\n\r\n if (!this._canSubmit()) {\r\n return\r\n }\r\n\r\n this.loading = true\r\n const query = this.sanitizedQuery\r\n try {\r\n var endpointUrl = window._data.apiBaseUrl + 'SearchApi/GetSuggestions'\r\n var response = await axios.post(endpointUrl, {\r\n langAbbr: window._data.languageAbbr,\r\n query: query\r\n })\r\n\r\n if (response\r\n && response.data\r\n && response.data.data\r\n && response.data.data.suggestions) {\r\n this.suggestions = response.data.data.suggestions\r\n }\r\n\r\n this._loadQueryHistory()\r\n }\r\n catch (err) {\r\n this.suggestions = []\r\n }\r\n finally {\r\n this.loading = false\r\n }\r\n }\r\n },\r\n\r\n computed: {\r\n sanitizedQuery() {\r\n if (!this.query) {\r\n return \"\"\r\n }\r\n\r\n const trimmedQuery = this.query.trim()\r\n if (!trimmedQuery) {\r\n return \"\"\r\n }\r\n\r\n return trimmedQuery\r\n }\r\n },\r\n\r\n mounted() {\r\n document.addEventListener('headersearchopenrequested', (event) => {\r\n document.body.classList.add('search-open')\r\n\r\n setTimeout(() => {\r\n this.isOpen = true\r\n this.$refs.query.focus()\r\n }, 150)\r\n })\r\n\r\n document.addEventListener('click', event => {\r\n if (this.$el.contains(event.target)) {\r\n return\r\n }\r\n\r\n if (event.target.classList) {\r\n for (let className of event.target.classList) {\r\n if (className.includes('search')) {\r\n return\r\n }\r\n }\r\n }\r\n\r\n this.onCloseRequest()\r\n })\r\n\r\n this._loadQueryHistory()\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n

{{ $phrase('search_header-recommended-services') }}

\r\n\r\n \r\n
\r\n\r\n
\r\n

{{ $phrase('search_header-results-title') }}

\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n`\n});\nVue.component('consumer-loan-calculator', {\r\n props: {\r\n config: {\r\n type: Object,\r\n required: true\r\n },\r\n hideAmountSlider: {\r\n type: Boolean,\r\n required: false\r\n }\r\n },\r\n\r\n emits: [],\r\n\r\n data: function () {\r\n return {\r\n principal: null,\r\n minPrincipal: null,\r\n maxPrincipal: null,\r\n term: null,\r\n currency: '₾',\r\n currencies: [],\r\n minTerm: null,\r\n maxTerm: null,\r\n startTerm: null\r\n }\r\n },\r\n\r\n methods: {\r\n onMeasureUpdated(measureVal) {\r\n this.currency = measureVal\r\n this._initializeCurrencyConfiguration()\r\n },\r\n\r\n onShowSchedule() {\r\n const elem = this.$refs['secure-consumer-load-calculator-schedule']\r\n Fancybox.show([{ src: elem, type: 'inline' }])\r\n },\r\n\r\n formatNumberWithCurrency(value) {\r\n const formattedValue = TextFormattingService.formatCalculatorFloat(value)\r\n const formattedValueWithCurrency = `${formattedValue}${this.currency}`\r\n return formattedValueWithCurrency\r\n },\r\n\r\n formatNumber(value) {\r\n const formattedValue = TextFormattingService.formatCalculatorFloat(value)\r\n return formattedValue\r\n },\r\n\r\n calculateEffectivePercent() {\r\n const payments = [...this.schedule]\r\n const effectivePercent = LoanService.shared.calculateEffectivePercent(payments, this.principal)\r\n const formattedPercent = TextFormattingService.formatCalculatorFloat(effectivePercent)\r\n return formattedPercent\r\n },\r\n\r\n _initializeConfiguration() {\r\n this.currencies = [...new Set(this.config.ranges.map(rate => rate.currency))]\r\n\r\n this.principal = parseInt(this.config.initialAmount)\r\n this.minPrincipal = parseInt(this.config.minAmount)\r\n this.maxPrincipal = parseInt(this.config.maxAmount)\r\n\r\n this._initializeCurrencyConfiguration()\r\n },\r\n\r\n _initializeCurrencyConfiguration() {\r\n this.minTerm = this.config.ranges\r\n .filter(rate => rate.currency === this.currency)\r\n .reduce((min, rate) => rate.minTerm < min ? rate.minTerm : min, Infinity)\r\n\r\n this.maxTerm = Math.max(...this.config.ranges\r\n .filter(rate => rate.currency === this.currency)\r\n .map(rate => rate.maxTerm))\r\n \r\n const initialTerm = this.config.ranges.filter(rate => rate.currency === this.currency)[0].initialTerm\r\n this.startTerm = initialTerm >= this.minTerm && initialTerm <= this.maxTerm\r\n ? initialTerm\r\n : parseInt((this.minTerm + this.maxTerm) / 2)\r\n }\r\n },\r\n\r\n computed: {\r\n schedule() {\r\n const payments = LoanService.shared.calculateLoanPayments(this.principal, this.percent, this.term)\r\n return payments\r\n },\r\n\r\n monthlyPaymentAmount() {\r\n if (!this.schedule || !this.schedule.length) {\r\n return ''\r\n }\r\n\r\n const amount = parseFloat(this.schedule[0].monthlyPayment)\r\n const formattedAmount = TextFormattingService.formatCalculatorFloat(amount)\r\n return formattedAmount\r\n },\r\n\r\n percent() {\r\n const entry = this.config.ranges\r\n .find(rate =>\r\n this.term >= rate.minTerm\r\n && this.term <= rate.maxTerm\r\n && rate.currency === this.currency\r\n )\r\n\r\n if (!entry) {\r\n return 0\r\n }\r\n\r\n return entry.percent || 0;\r\n }\r\n },\r\n\r\n mounted() {\r\n UiService.shared.dispatchComponentMountedEvent(this.$el, 'consumer-loan-calculator')\r\n },\r\n\r\n created() {\r\n this._initializeConfiguration()\r\n }\r\n ,\ntemplate: `\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {{ $phrase('calculators_consumer-result-monthlypayment') }}\r\n

{{ monthlyPaymentAmount }}{{ currency }}

\r\n
\r\n
\r\n
\r\n {{ $phrase('calculators_consumer-result-annualpercent') }}\r\n

{{ formatNumber(percent) }}%{{ $phrase('calculators_consumer-result-annualpercentsuffix') }}

\r\n
\r\n
\r\n {{ $phrase('calculators_consumer-result-effectivepercent') }}\r\n

{{ calculateEffectivePercent() }}%{{ $phrase('calculators_consumer-result-effectivepercentsuffix') }}

\r\n
\r\n
\r\n {{ $phrase('calculators_consumer-result-term') }}\r\n

{{ term }} {{ $phrase('calculators_month') }}

\r\n
\r\n
\r\n \r\n

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

{{$phrase('calculators_schedule-title') }}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

#

\r\n
\r\n

{{$phrase('calculators_schedule-principal') }}

\r\n
\r\n

{{$phrase('calculators_schedule-interest') }}

\r\n
\r\n

{{$phrase('calculators_schedule-monthlypayment') }}

\r\n
\r\n

{{ payment.paymentNumber }}

\r\n
\r\n

{{ formatNumberWithCurrency(payment.principalAmount) }}

\r\n
\r\n

{{ formatNumberWithCurrency(payment.interestAmount) }}

\r\n
\r\n

{{ formatNumberWithCurrency(payment.monthlyPayment) }}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n`\n});\nVue.component('deposit-calculator', {\r\n props: {\r\n config: {\r\n type: Object,\r\n required: true\r\n },\r\n isAccumulative: {\r\n type: Boolean,\r\n default: false,\r\n required: true\r\n },\r\n isCertificate: {\r\n type: Boolean,\r\n default: false,\r\n required: true\r\n }\r\n },\r\n\r\n emits: [],\r\n\r\n data: function () {\r\n return {\r\n depositAmount: null,\r\n term: null,\r\n currency: '₾',\r\n currencies: [],\r\n minTerm: null,\r\n maxTerm: null,\r\n startTerm: null,\r\n enrollmentPeriod: null,\r\n enrollmentPeriodsTitle: null,\r\n enrollmentPeriodsList: [],\r\n monthlyTrancheAmount: null\r\n }\r\n },\r\n\r\n methods: {\r\n showMonthlyTrancheInput() {\r\n return this.isAccumulative\r\n },\r\n\r\n onMeasureUpdated(measureVal) {\r\n this.currency = measureVal\r\n\r\n const initialTerm = this.config.ranges.filter(rate => rate.currency === this.currency)[0].initialTerm\r\n if (initialTerm >= this.minTerm && initialTerm <= this.maxTerm) {\r\n this.startTerm = initialTerm\r\n }\r\n },\r\n\r\n formatNumberWithCurrency(value) {\r\n const formattedValue = TextFormattingService.formatCalculatorFloat(value)\r\n const formattedValueWithCurrency = `${formattedValue}${this.currency}`\r\n return formattedValueWithCurrency\r\n },\r\n\r\n formatNumber(value) {\r\n const formattedValue = TextFormattingService.formatCalculatorFloat(value)\r\n return formattedValue\r\n },\r\n\r\n calculateEffectivePercent() {\r\n const sortedCashFlow = this._flows.sort((a, b) => a.date - b.date)\r\n const xirr = ExcelXirr.newtonsMethod(\r\n 0.1,\r\n ExcelXirr.totalFXirr(sortedCashFlow),\r\n ExcelXirr.totalDfXirr(sortedCashFlow)\r\n )\r\n const effectivePercent = Math.round(xirr * 100) / 100\r\n\r\n return effectivePercent\r\n },\r\n\r\n getDepositAmountTitle() {\r\n if (this.isAccumulative) {\r\n return this.$phrase('calculators_deposit-initialdeposit')\r\n }\r\n\r\n return this.$phrase('calculators_deposit-amount')\r\n },\r\n\r\n _initializeConfiguration() {\r\n this.enrollmentPeriodsList.push({\r\n id: 1,\r\n text: this.isCertificate\r\n ? this.$phrase('calculators_deposit-certificate-discont')\r\n : this.$phrase('calculators_deposit-enrollmentperiod-endofterm')\r\n })\r\n this.enrollmentPeriodsList.push({\r\n id: 2,\r\n text: this.isCertificate\r\n ? this.$phrase('calculators_deposit-certificate-percent')\r\n : this.$phrase('calculators_deposit-enrollmentperiod-monthly')\r\n })\r\n this.enrollmentPeriodsTitle = this.isCertificate\r\n ? this.$phrase('calculators_deposit-certificatetitle')\r\n : this.$phrase('calculators_deposit-enrollmentperiodtitle');\r\n\r\n\r\n this.currencies = [...new Set(this.config.ranges.map(range => range.currency))]\r\n\r\n this.enrollmentPeriod = this.enrollmentPeriodsList[0]\r\n this._initializeEnrolmentPeriodConfiguration()\r\n },\r\n\r\n _initializeEnrolmentPeriodConfiguration() {\r\n this.minTerm = this.config.ranges\r\n .filter(range => range.currency === this.currency)\r\n .filter(range => range.percentEnrollmentPeriod === this.enrollmentPeriod.id)\r\n .reduce((min, range) => range.minTerm < min ? range.minTerm : min, Infinity)\r\n\r\n this.maxTerm = Math.max(...this.config.ranges\r\n .filter(range => range.currency === this.currency)\r\n .filter(range => range.percentEnrollmentPeriod === this.enrollmentPeriod.id)\r\n .map(range => range.maxTerm))\r\n\r\n this.startTerm = parseInt((this.minTerm + this.maxTerm) / 2)\r\n\r\n this.depositAmount = parseInt(this.config.initialAmount)\r\n this.minDepostAmount = parseInt(this.config.minAmount)\r\n this.maxDepostAmount = parseInt(this.config.maxAmount)\r\n\r\n this.monthlyTrancheAmount = parseInt(this.config.initialMonthlyTranceAmount)\r\n this.minMonthlyTrancheAmount = parseInt(this.config.minMonthlyTrancheAmount)\r\n this.maxMonthlyTrancheAmount = parseInt(this.config.maxMonthlyTranceAmount)\r\n\r\n this.onMeasureUpdated(this.currency)\r\n }\r\n },\r\n\r\n computed: {\r\n totalWithdraw() {\r\n const totalAmount = this._flows\r\n .filter(x =>\r\n x.type == ProductCalculatorCashFlowTypes.PercentEnrolment\r\n || x.type == ProductCalculatorCashFlowTypes.CashOut)\r\n .reduce((sum, x) => sum + x.amount, 0)\r\n\r\n return totalAmount\r\n },\r\n\r\n percent() {\r\n const entry = this.config.ranges\r\n .find(range =>\r\n this.term >= range.minTerm\r\n && this.term <= range.maxTerm\r\n && this.currency === range.currency\r\n && this.enrollmentPeriod.id === range.percentEnrollmentPeriod\r\n )\r\n\r\n if (!entry) {\r\n return 0\r\n }\r\n\r\n return entry.percent || 0\r\n },\r\n\r\n percentAmount() {\r\n const sumAmount = this._flows\r\n .filter(x => x.type == ProductCalculatorCashFlowTypes.PercentEnrolment)\r\n .reduce((sum, x) => sum + x.amount, 0)\r\n\r\n return sumAmount\r\n },\r\n\r\n _flows() {\r\n const startDay = new Date()\r\n startDay.setHours(0, 0, 0, 0)\r\n\r\n const endDate = new Date(startDay)\r\n endDate.setMonth(endDate.getMonth() + this.term)\r\n\r\n const monthCount = 1\r\n\r\n const depositService = new DepositService(\r\n this.depositAmount,\r\n this.monthlyTrancheAmount,\r\n this.percent,\r\n startDay,\r\n endDate,\r\n monthCount,\r\n this.enrollmentPeriod.id\r\n )\r\n const flows = depositService.calculateFlows()\r\n\r\n return flows\r\n }\r\n },\r\n\r\n watch: {\r\n enrollmentPeriod(newValue, oldValue) {\r\n this._initializeEnrolmentPeriodConfiguration()\r\n }\r\n },\r\n\r\n mounted() {\r\n UiService.shared.dispatchComponentMountedEvent(this.$el, 'deposit-calculator')\r\n },\r\n\r\n created() {\r\n this._initializeConfiguration()\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {{ $phrase('calculators_deposit-totalwithdraw') }}\r\n

{{ formatNumberWithCurrency(totalWithdraw) }}

\r\n
\r\n
\r\n
\r\n {{ $phrase('calculators_deposit-percentamount') }}\r\n

{{ formatNumberWithCurrency(percentAmount) }}

\r\n
\r\n
\r\n {{ $phrase('calculators_deposit-percent') }}\r\n

{{ formatNumber(percent) }}%

\r\n
\r\n
\r\n {{ $phrase('calculators_deposit-effectivepercent') }}\r\n

{{ calculateEffectivePercent() }}%

\r\n
\r\n
\r\n \r\n

\r\n
\r\n
\r\n\r\n
\r\n`\n});\nVue.component('ipo-loan-calculator', {\r\n props: {\r\n config: {\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n\r\n emits: [],\r\n\r\n data: function () {\r\n return {\r\n estatePrice: null,\r\n minEstatePrice: null,\r\n maxEstatePrice: null,\r\n downPaymentPercent: 0, //null\r\n minDownPaymentPercent: null,\r\n maxDownPaymentPercent: null,\r\n term: null,\r\n currency: '₾',\r\n currencies: [],\r\n minTerm: null,\r\n maxTerm: null,\r\n startTerm: null\r\n }\r\n },\r\n\r\n methods: {\r\n onMeasureUpdated(measureVal) {\r\n this.currency = measureVal\r\n this._initializeCurrencyConfiguration()\r\n },\r\n\r\n onShowSchedule() {\r\n const elem = this.$refs['secure-consumer-load-calculator-schedule']\r\n Fancybox.show([{ src: elem, type: 'inline' }])\r\n },\r\n\r\n formatNumberWithCurrency(value) {\r\n const formattedValue = TextFormattingService.formatCalculatorFloat(value)\r\n const formattedValueWithCurrency = `${formattedValue}${this.currency}`\r\n return formattedValueWithCurrency\r\n },\r\n\r\n formatNumber(value) {\r\n const formattedValue = TextFormattingService.formatCalculatorFloat(value)\r\n return formattedValue\r\n },\r\n\r\n calculateEffectivePercent() {\r\n const payments = [...this.schedule]\r\n const effectivePercent = LoanService.shared.calculateEffectivePercent(payments, this.principal)\r\n const formattedPercent = TextFormattingService.formatCalculatorFloat(effectivePercent)\r\n return formattedPercent\r\n },\r\n\r\n _initializeConfiguration() {\r\n this.currencies = [...new Set(this.config.ranges.map(rate => rate.currency))]\r\n\r\n this.estatePrice = parseInt(this.config.initialAmount)\r\n this.minEstatePrice = parseInt(this.config.minAmount)\r\n this.maxEstatePrice = parseInt(this.config.maxAmount)\r\n\r\n //this.downPaymentPercent = parseInt(this.config.initialDownPaymentPercent)\r\n this.minDownPaymentPercent = parseInt(this.config.minDownPaymentPercent)\r\n this.maxDownPaymentPercent = parseInt(this.config.maxDownPaymentPercent)\r\n\r\n this._initializeCurrencyConfiguration()\r\n },\r\n\r\n _initializeCurrencyConfiguration() {\r\n this.minTerm = this.config.ranges\r\n .filter(rate => rate.currency === this.currency)\r\n .reduce((min, rate) => rate.minTerm < min ? rate.minTerm : min, Infinity)\r\n\r\n this.maxTerm = Math.max(...this.config.ranges\r\n .filter(rate => rate.currency === this.currency)\r\n .map(rate => rate.maxTerm))\r\n\r\n const initialTerm = this.config.ranges.filter(rate => rate.currency === this.currency)[0].initialTerm;\r\n this.startTerm = initialTerm >= this.minTerm && initialTerm <= this.maxTerm\r\n ? initialTerm\r\n : parseInt((this.minTerm + this.maxTerm) / 2)\r\n }\r\n },\r\n\r\n computed: {\r\n principal() {\r\n const principal = this.estatePrice * (1 - this.downPaymentPercent / 100)\r\n return Math.max(0, principal)\r\n },\r\n\r\n schedule() {\r\n const payments = LoanService.shared.calculateLoanPayments(this.principal, this.percent, this.term)\r\n return payments\r\n },\r\n\r\n monthlyPaymentAmount() {\r\n if (!this.schedule || !this.schedule.length) {\r\n return ''\r\n }\r\n\r\n const amount = parseFloat(this.schedule[0].monthlyPayment)\r\n const formattedAmount = TextFormattingService.formatCalculatorFloat(amount)\r\n return formattedAmount\r\n },\r\n\r\n percent() {\r\n const entry = this.config.ranges\r\n .find(rate =>\r\n this.term >= rate.minTerm\r\n && this.term <= rate.maxTerm\r\n && rate.currency === this.currency\r\n )\r\n\r\n if (!entry) {\r\n return 0\r\n }\r\n\r\n return entry.percent || 0;\r\n }\r\n },\r\n\r\n mounted() {\r\n UiService.shared.dispatchComponentMountedEvent(this.$el, 'ipo-loan-calculator')\r\n },\r\n\r\n created() {\r\n this._initializeConfiguration()\r\n }\r\n ,\ntemplate: `\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {{ $phrase('calculators_ipo-result-monthlypayment') }}\r\n

{{ monthlyPaymentAmount }}{{ currency }}

\r\n
\r\n
\r\n
\r\n {{ $phrase('calculators_ipo-result-annualpercent') }}\r\n

{{ formatNumber(percent) }}%{{ $phrase('calculators_ipo-result-annualpercentsuffix') }}

\r\n
\r\n
\r\n {{ $phrase('calculators_ipo-result-effectivepercent') }}\r\n

{{ calculateEffectivePercent() }}%{{ $phrase('calculators_ipo-result-effectivepercentsuffix') }}

\r\n
\r\n
\r\n {{ $phrase('calculators_ipo-result-term') }}\r\n

{{ term }} {{ $phrase('calculators_month') }}

\r\n
\r\n
\r\n \r\n

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n

{{$phrase('calculators_schedule-title') }}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

#

\r\n
\r\n

{{$phrase('calculators_schedule-principal') }}

\r\n
\r\n

{{$phrase('calculators_schedule-interest') }}

\r\n
\r\n

{{$phrase('calculators_schedule-monthlypayment') }}

\r\n
\r\n

{{ payment.paymentNumber }}

\r\n
\r\n

{{ formatNumberWithCurrency(payment.principalAmount) }}

\r\n
\r\n

{{ formatNumberWithCurrency(payment.interestAmount) }}

\r\n
\r\n

{{ formatNumberWithCurrency(payment.monthlyPayment) }}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n`\n});\nVue.component('card-compare', {\r\n props: {},\r\n data: function () {\r\n return {\r\n cards: [],\r\n selectedCards: [],\r\n cardsWithoutSelected: [],\r\n filteredCards: [],\r\n keyword: '',\r\n attributes: [],\r\n settings: {\r\n showModal: false,\r\n showAddNewItem: true\r\n }\r\n };\r\n },\r\n methods: {\r\n filterCards() {\r\n var _this = this;\r\n\r\n _this.filteredCards = _this.cardsWithoutSelected.filter(function (card) {\r\n return card.title.toLowerCase().includes(_this.keyword.toLowerCase());\r\n });\r\n\r\n },\r\n removeItemFromCompare(card) {\r\n var _this = this;\r\n _this.selectedCards = _this.selectedCards.filter(function (item) {\r\n return item.id != card.id;\r\n });\r\n\r\n _this.settings.showAddNewItem = _this.selectedCards.length < 3;\r\n\r\n _this.cardsWithoutSelected = _this.cards.filter(item => !_this.selectedCards.includes(item));\r\n _this.filterCards();\r\n },\r\n closeModal() {\r\n var _this = this;\r\n _this.settings.showModal = false;\r\n $('body').toggleClass('noscroll', false);\r\n },\r\n openCompareModal(productId) {\r\n var _this = this;\r\n if (_this.cards.length == 0) {\r\n return;\r\n }\r\n _this.settings.showModal = true;\r\n $('body').toggleClass('noscroll', true);\r\n _this.selectedCards = [];\r\n var selectedCardId = parseInt(productId);\r\n _this.selectCard(selectedCardId);\r\n },\r\n selectCard(cardId) {\r\n var _this = this;\r\n var selectedCard = _this.cards.filter(function (card) {\r\n return card.id == cardId;\r\n });\r\n\r\n _this.selectedCards.push(selectedCard[0]);\r\n\r\n _this.settings.showAddNewItem = _this.selectedCards.length < 3;\r\n\r\n\r\n _this.cardsWithoutSelected = _this.cards.filter(item => !_this.selectedCards.includes(item));\r\n _this.filterCards();\r\n\r\n $('.compare__product-dropdown').removeClass('open');\r\n $('.js-results').hide();\r\n _this.keyword = '';\r\n },\r\n getCardAttributeValue(cardId, attributeId) {\r\n var _this = this;\r\n var card = _this.selectedCards.filter(function (card) {\r\n return card.id == cardId;\r\n });\r\n var attribute = card[0].attributes.filter(function (attr) {\r\n return attr.id == attributeId;\r\n });\r\n\r\n return attribute[0].value ?? \"-\";\r\n },\r\n getCards() {\r\n var _this = this;\r\n var endpointUrl = window._data.apiBaseUrl + 'CompareApi/GetCards';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr,\r\n pageId: window._data.pageId\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.cards = response.data.data.cards;\r\n _this.attributes = _this.cards[0].attributes;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n mounted() {\r\n this.getCards()\r\n\r\n UiService.shared.attachOpenCompareModalEvent('card', (e) => {\r\n this.openCompareModal(e.detail.productId)\r\n })\r\n\r\n }\r\n ,\ntemplate: `\r\n\r\n
\r\n
\r\n
\r\n
\r\n

{{$phrase('cardcompare_title')}}

\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{$phrase('cardcompare_conditions')}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n

{{item.title}}

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{$phrase('cardcompare_selectcard')}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{attr.title}}

\r\n
\r\n
\r\n
\r\n
\r\n

{{getCardAttributeValue(card.id, attr.id)}}

\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n

---

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n`\n});\nVue.component('deposit-compare', {\r\n props: {},\r\n data: function () {\r\n return {\r\n deposits: [],\r\n selectedDeposits: [],\r\n depositsWithoutSelected: [],\r\n filteredDeposits: [],\r\n keyword: '',\r\n attributes: [],\r\n settings: {\r\n showModal: false,\r\n showAddNewItem: true\r\n }\r\n };\r\n },\r\n methods: {\r\n filterDeposits() {\r\n var _this = this;\r\n\r\n _this.filteredDeposits = _this.depositsWithoutSelected.filter(function (deposit) {\r\n return deposit.title.toLowerCase().includes(_this.keyword.toLowerCase());\r\n });\r\n\r\n },\r\n removeItemFromCompare(deposit) {\r\n var _this = this;\r\n _this.selectedDeposits = _this.selectedDeposits.filter(function (item) {\r\n return item.id != deposit.id;\r\n });\r\n\r\n _this.settings.showAddNewItem = _this.selectedDeposits.length < 3;\r\n\r\n _this.depositsWithoutSelected = _this.deposits.filter(item => !_this.selectedDeposits.includes(item));\r\n _this.filterDeposits();\r\n },\r\n closeModal() {\r\n var _this = this;\r\n _this.settings.showModal = false;\r\n $('body').toggleClass('noscroll', false);\r\n },\r\n openCompareModal(productId) {\r\n var _this = this;\r\n if (_this.deposits.length == 0) {\r\n return;\r\n }\r\n _this.settings.showModal = true;\r\n $('body').toggleClass('noscroll', true);\r\n _this.selectedDeposits = [];\r\n var selectedDepositId = parseInt(productId);\r\n _this.selectDeposit(selectedDepositId);\r\n },\r\n selectDeposit(depositId) {\r\n var _this = this;\r\n var selectedDeposit = _this.deposits.filter(function (deposit) {\r\n return deposit.id == depositId;\r\n });\r\n\r\n _this.selectedDeposits.push(selectedDeposit[0]);\r\n\r\n _this.settings.showAddNewItem = _this.selectedDeposits.length < 3;\r\n\r\n\r\n _this.depositsWithoutSelected = _this.deposits.filter(item => !_this.selectedDeposits.includes(item));\r\n _this.filterDeposits();\r\n\r\n $('.compare__product-dropdown').removeClass('open');\r\n $('.js-results').hide();\r\n _this.keyword = '';\r\n },\r\n getDepositAttributeValue(depositId, attributeId) {\r\n var _this = this;\r\n var deposit = _this.selectedDeposits.filter(function (deposit) {\r\n return deposit.id == depositId;\r\n });\r\n var attribute = deposit[0].attributes.filter(function (attr) {\r\n return attr.id == attributeId;\r\n });\r\n\r\n return attribute[0].value ?? \"-\";\r\n },\r\n getDeposits() {\r\n var _this = this;\r\n var endpointUrl = window._data.apiBaseUrl + 'CompareApi/GetDeposits';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr,\r\n pageId: window._data.pageId\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.deposits = response.data.data.deposits;\r\n _this.attributes = _this.deposits[0].attributes;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n mounted() {\r\n this.getDeposits()\r\n\r\n UiService.shared.attachOpenCompareModalEvent('deposit', (e) => {\r\n this.openCompareModal(e.detail.productId)\r\n })\r\n }\r\n ,\ntemplate: `\r\n\r\n
\r\n
\r\n
\r\n
\r\n

{{$phrase('depositcompare_title')}}

\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{$phrase('depositcompare_conditions')}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n

{{item.title}}

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{$phrase('depositcompare_selectdeposit')}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{attr.title}}

\r\n
\r\n
\r\n
\r\n
\r\n

{{getDepositAttributeValue(deposit.id, attr.id)}}

\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n

---

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n`\n});\nVue.component('loan-compare', {\r\n props: {},\r\n data: function () {\r\n return {\r\n loans: [],\r\n selectedLoans: [],\r\n loansWithoutSelected: [],\r\n filteredLoans: [],\r\n keyword: '',\r\n attributes: [],\r\n settings: {\r\n showModal: false,\r\n showAddNewItem: true\r\n },\r\n isOpen: false,\r\n };\r\n },\r\n methods: {\r\n getSelectedType(loan) {\r\n var selectedType = loan.types.filter(function (type) {\r\n return type.selected;\r\n });\r\n\r\n return selectedType[0].title;\r\n },\r\n selectLoanType(loan, type) {\r\n loan.types.forEach(function (item) {\r\n item.selected = false;\r\n });\r\n\r\n type.selected = true;\r\n this._closeList(loan.id)\r\n },\r\n filterLoans() {\r\n var _this = this;\r\n\r\n _this.filteredLoans = _this.loansWithoutSelected.filter(function (loan) {\r\n return loan.title.toLowerCase().includes(_this.keyword.toLowerCase());\r\n });\r\n\r\n },\r\n removeItemFromCompare(loan) {\r\n var _this = this;\r\n _this.selectedLoans = _this.selectedLoans.filter(function (item) {\r\n return item.id != loan.id;\r\n });\r\n\r\n _this.settings.showAddNewItem = _this.selectedLoans.length < 3;\r\n\r\n _this.loansWithoutSelected = _this.loans.filter(item => !_this.selectedLoans.includes(item));\r\n _this.filterLoans();\r\n },\r\n closeModal() {\r\n var _this = this;\r\n _this.settings.showModal = false;\r\n $('body').toggleClass('noscroll', false);\r\n },\r\n openCompareModal(productId) {\r\n var _this = this;\r\n if (_this.loans.length == 0) {\r\n return;\r\n }\r\n _this.settings.showModal = true;\r\n $('body').toggleClass('noscroll', true);\r\n _this.selectedLoans = [];\r\n var selectedLoanId = parseInt(productId);\r\n _this.selectLoan(selectedLoanId);\r\n },\r\n selectLoan(loanId) {\r\n var _this = this;\r\n var selectedLoan = _this.loans.filter(function (loan) {\r\n return loan.id == loanId;\r\n });\r\n\r\n _this.selectedLoans.push(selectedLoan[0]);\r\n\r\n _this.settings.showAddNewItem = _this.selectedLoans.length < 3;\r\n\r\n\r\n _this.loansWithoutSelected = _this.loans.filter(item => !_this.selectedLoans.includes(item));\r\n _this.filterLoans();\r\n\r\n $('.compare__product-dropdown').removeClass('open');\r\n $('.js-results').hide();\r\n _this.keyword = '';\r\n },\r\n getLoanAttributeValue(loan, type, attributeId) {\r\n var _this = this;\r\n //var loan = _this.selectedLoans.filter(function (loan) {\r\n // return loan.id == loanId;\r\n //});\r\n //var attribute = loan[0].attributes.filter(function (attr) {\r\n // return attr.id == attributeId;\r\n //});\r\n\r\n var attribute = type.attributes.filter(function (attr) {\r\n return attr.id == attributeId;\r\n });\r\n\r\n return attribute[0].value ?? \"-\";\r\n },\r\n getLoans() {\r\n var _this = this;\r\n _this.attributes = [];\r\n var endpointUrl = window._data.apiBaseUrl + 'CompareApi/GetLoans';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr,\r\n pageId: window._data.pageId\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.loans = response.data.data.loans;\r\n\r\n _this.loans[0].types[0].attributes.forEach(function (type) {\r\n _this.attributes.push(type);\r\n });\r\n\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n },\r\n\r\n onOpenRequest(item) {\r\n if (this.isOpen) {\r\n this._closeList(item.id)\r\n }\r\n else {\r\n this._openList(item.id)\r\n }\r\n },\r\n\r\n _closeList(index) {\r\n this.isOpen = false;\r\n $(this.$refs[`list${index}`]).stop().slideUp('fast')\r\n },\r\n\r\n _openList(index) {\r\n this.isOpen = true\r\n $(this.$refs[`list${index}`]).stop().slideDown('fast')\r\n }\r\n },\r\n mounted() {\r\n this.getLoans()\r\n\r\n UiService.shared.attachOpenCompareModalEvent('loan', (e) => {\r\n this.openCompareModal(e.detail.productId)\r\n })\r\n }\r\n ,\ntemplate: `\r\n\r\n
\r\n
\r\n
\r\n
\r\n

{{$phrase('loancompare_title')}}

\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{$phrase('loancompare_conditions')}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n

{{item.title}}

\r\n \r\n\r\n \r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{$phrase('loancompare_selectloan')}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

{{attr.title}}

\r\n
\r\n
\r\n
\r\n
\r\n

{{getLoanAttributeValue(loan, type, attr.id)}}

\r\n
\r\n
\r\n\r\n
0\">\r\n
\r\n

---

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n`\n});\nVue.component('currency-rates-calculator', {\r\n props: {},\r\n\r\n data: function () {\r\n return {\r\n rates: {},\r\n currencies: [],\r\n currencyFrom: '',\r\n currencyTo: '',\r\n calculateUsingFrom: true,\r\n mounted: false,\r\n loaded: false,\r\n currencyTexts: {\r\n USD: {\r\n prefix: \"$\",\r\n suffix: \"\",\r\n },\r\n GBP: {\r\n prefix: \"£\",\r\n suffix: \"\",\r\n },\r\n EUR: {\r\n prefix: \"€\",\r\n suffix: \"\",\r\n },\r\n GEL: {\r\n prefix: \"\",\r\n suffix: \"₾\",\r\n },\r\n default: {\r\n prefix: \"\",\r\n suffix: \"\",\r\n }\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n getToAmountOfOneAmountOfFrom() {\r\n if (!this.rates) {\r\n return \"\"\r\n }\r\n\r\n if (!this.rates[this.currencyFrom]) {\r\n return \"\"\r\n }\r\n\r\n if (!this.rates[this.currencyFrom][this.currencyTo]) {\r\n return \"\"\r\n }\r\n\r\n return (this.rates[this.currencyFrom][this.currencyTo]).toFixed(4)\r\n },\r\n\r\n getCurrencyUnitValue(currency, amount) {\r\n var texts = this.currencyTexts[currency]\r\n if (!texts) {\r\n texts = this.currencyTexts.default\r\n }\r\n\r\n return texts.prefix + '' + amount + '' + texts.suffix\r\n },\r\n\r\n onInputFrom() {\r\n this.calculateUsingFrom = true\r\n this._calculateResult()\r\n },\r\n\r\n onInputTo() {\r\n this.calculateUsingFrom = false\r\n this._calculateResult()\r\n },\r\n\r\n onKeyPressFrom(e) {\r\n if (this._inputKeyIsAllowed(e)) {\r\n return\r\n }\r\n\r\n e.preventDefault()\r\n e.stopPropagation()\r\n },\r\n\r\n onKeyPressTo(e) {\r\n if (this._inputKeyIsAllowed(e)) {\r\n return\r\n }\r\n\r\n e.preventDefault()\r\n e.stopPropagation()\r\n },\r\n\r\n onPaste(e) {\r\n const clipboardData = e.clipboardData || window.clipboardData\r\n const pastedData = clipboardData.getData('text')\r\n const target = e.target\r\n const cursorPosition = target.selectionStart\r\n const currentValue = target.value\r\n const selectionEnd = target.selectionEnd\r\n const selectionLength = selectionEnd - cursorPosition\r\n\r\n if (!/^\\d*\\.?\\d*$/.test(pastedData) || (pastedData.split('.').length > 2)) {\r\n e.preventDefault()\r\n return\r\n }\r\n\r\n const newValue = currentValue.slice(0, cursorPosition) + pastedData + currentValue.slice(selectionEnd)\r\n const parts = newValue.split('.')\r\n const integerPart = parts[0]\r\n const fractionPart = parts.length > 1 ? parts[1] : ''\r\n\r\n if (integerPart.length > 9 || (fractionPart.length > 2)) {\r\n e.preventDefault()\r\n return\r\n }\r\n },\r\n\r\n swapCurrencies() {\r\n this.currencyFrom = this.currencyTo\r\n // !imprtant: 'currencyFrom' watcher will handle the the invese assignment, no need to assign backwards here\r\n },\r\n\r\n _inputKeyIsAllowed(e) {\r\n if (e.altKey || e.ctrlKey || !e.charCode) {\r\n return false\r\n }\r\n\r\n const keyCode = e.keyCode\r\n const target = e.target\r\n const currentValue = target.value\r\n const cursorPosition = target.selectionStart\r\n const selectionEnd = target.selectionEnd\r\n const selectionLength = selectionEnd - cursorPosition\r\n\r\n if (keyCode != 46 && (keyCode < 48 || keyCode > 57)) {\r\n return false\r\n }\r\n\r\n if (keyCode == 46 && currentValue.includes('.') && selectionLength === 0) {\r\n return false\r\n }\r\n\r\n const parts = currentValue.split('.')\r\n let integerPart = parts[0]\r\n let fractionPart = parts.length > 1 ? parts[1] : ''\r\n\r\n if (selectionLength > 0 && cursorPosition <= integerPart.length) {\r\n if (selectionEnd <= integerPart.length) {\r\n integerPart = integerPart.substring(0, cursorPosition) + integerPart.substring(selectionEnd)\r\n } else if (cursorPosition < integerPart.length) {\r\n integerPart = integerPart.substring(0, cursorPosition)\r\n fractionPart = fractionPart.substring(selectionEnd - integerPart.length)\r\n } else {\r\n fractionPart = fractionPart.substring(0, cursorPosition - integerPart.length - 1) + fractionPart.substring(selectionEnd - integerPart.length - 1)\r\n }\r\n }\r\n\r\n if ((integerPart.length >= 10 && cursorPosition <= integerPart.length && selectionLength === 0) ||\r\n (fractionPart.length >= 2 && cursorPosition > integerPart.length && selectionLength === 0)) {\r\n return false\r\n }\r\n\r\n return true\r\n },\r\n\r\n _calculateResult() {\r\n if (this.calculateUsingFrom) {\r\n this._calculateUsingFrom()\r\n return\r\n }\r\n\r\n this._calculateUsingTo()\r\n },\r\n\r\n _calculateUsingFrom() {\r\n const result = CurrencyRatesService.shared.calculateRateUsingFrom(\r\n this.$refs.from.value,\r\n this.currencyFrom,\r\n this.currencyTo\r\n )\r\n\r\n this.$refs.to.value = result.toFixed(2)\r\n },\r\n\r\n _calculateUsingTo() {\r\n const result = CurrencyRatesService.shared.calculateRateUsingTo(\r\n this.$refs.to.value,\r\n this.currencyFrom,\r\n this.currencyTo\r\n )\r\n\r\n this.$refs.from.value = result.toFixed(2)\r\n },\r\n\r\n _calculateInitialValues() {\r\n if (!this.mounted || !this.loaded) {\r\n return\r\n }\r\n this._calculateUsingFrom()\r\n }\r\n },\r\n\r\n watch: {\r\n currencyFrom(newVal, oldVal) {\r\n if (newVal == this.currencyTo) {\r\n this.currencyTo = oldVal\r\n return\r\n }\r\n\r\n this._calculateResult()\r\n },\r\n\r\n currencyTo(newVal, oldVal) {\r\n if (newVal == this.currencyFrom) {\r\n this.currencyFrom = oldVal\r\n return\r\n }\r\n\r\n this._calculateResult()\r\n }\r\n },\r\n\r\n mounted() {\r\n this.mounted = true\r\n this.$refs.from.value = \"100\"\r\n this._calculateInitialValues()\r\n },\r\n\r\n async created() {\r\n const {\r\n currencies: allCurrencies,\r\n rates: allRates\r\n } = await CurrencyRatesService.shared.getTeraCrossRatesForConverterFull()\r\n\r\n this.currencies = allCurrencies\r\n this.rates = allRates\r\n\r\n if (this.currencies.length > 2) {\r\n this.currencyFrom = this.currencies[0]\r\n this.currencyTo = this.currencies[1]\r\n }\r\n\r\n this.loaded = true\r\n\r\n this._calculateInitialValues()\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{ $phrase('currencies_converter-title') }}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{ $phrase('currencies_converter-standardrate') }} {{ getCurrencyUnitValue(currencyFrom, 1) }} = {{ getCurrencyUnitValue(currencyTo, getToAmountOfOneAmountOfFrom()) }}\r\n \r\n
\r\n
\r\n
\r\n
\r\n`\n});\nVue.component('currency-rates-list', {\r\n props: {\r\n showHeader: {\r\n type: Boolean,\r\n default: false\r\n }\r\n },\r\n\r\n data: function () {\r\n return {\r\n nbgRates: [],\r\n crossRates: {},\r\n currencyTexts: {\r\n USD: {\r\n unit: \"1\",\r\n Name: \"US DOLLAR\"\r\n },\r\n GBP: {\r\n unit: \"1\",\r\n Name: \"BRITISH STERLING\"\r\n },\r\n EUR: {\r\n unit: \"1\",\r\n Name: \"EURO\"\r\n },\r\n GEL: {\r\n unit: \"1\",\r\n Name: \"GEORGIAN LARI\"\r\n },\r\n default: {\r\n unit: \"\",\r\n Name: \"\"\r\n }\r\n }\r\n }\r\n },\r\n\r\n methods: {\r\n getCurrencyIsoName(rate) {\r\n return (rate.iso || \"\").toUpperCase()\r\n },\r\n\r\n getNbgChangeClasses(rate) {\r\n return {\r\n 'currencies-list__currency-rate-state--up': rate.nbgOfficialRateChange > 0,\r\n 'currencies-list__currency-rate-state--down': rate.nbgOfficialRateChange < 0\r\n }\r\n },\r\n\r\n getTeraCrossRate(iso, rateTypeName) {\r\n const rateEntry = this.crossRates[iso] || {};\r\n const rateValue = rateEntry[rateTypeName] || 0;\r\n return rateValue.toFixed(4)\r\n \r\n },\r\n\r\n getCurrencyUnitAndName(currency) {\r\n var texts = this.currencyTexts[currency];\r\n if (!texts) {\r\n texts = this.currencyTexts.default;\r\n }\r\n\r\n return texts.unit + ' ' + texts.Name;\r\n },\r\n\r\n showCurrencyPrevValue(currency) {\r\n const rateEntry = this.crossRates[currency] || {};\r\n const show = rateEntry[\"showPreviosDayRates\"] || false;\r\n return show;\r\n }\r\n },\r\n\r\n mounted() {\r\n\r\n },\r\n\r\n created() {\r\n CurrencyRatesService.shared.getNbgRates()\r\n .then((data) => {\r\n this.nbgRates = data\r\n })\r\n\r\n CurrencyRatesService.shared.getTeraCrossRates()\r\n .then((data) => {\r\n data.forEach(item => {\r\n this.crossRates[item.iso.toUpperCase()] = item\r\n });\r\n })\r\n }\r\n ,\ntemplate: `\r\n
\r\n\r\n
\r\n

{{ $phrase('currencies_list-title') }}

\r\n \r\n {{ $phrase('currencies_list-all') }}\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{ $phrase('currencies_officialrate') }}\r\n
\r\n
\r\n {{ $phrase('currencies_terabankrate') }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n

\r\n {{ getCurrencyIsoName(rate) }}  {{ getCurrencyUnitAndName(rate.iso) }}\r\n

\r\n
\r\n {{ (rate.nbgOfficialRate || 0).toFixed(4) }}\r\n

\r\n \r\n \r\n \r\n {{ (rate.nbgOfficialRateChange || 0).toFixed(4) }}\r\n

\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n {{ $phrase('currencies_buy') }}\r\n {{ getTeraCrossRate(rate.iso, \"teraCrossRateBuy\") }}\r\n {{ getTeraCrossRate(rate.iso, \"previousDayTeraCrossRateBuy\") }}\r\n
\r\n
\r\n {{ $phrase('currencies_sell') }}\r\n {{ getTeraCrossRate(rate.iso, \"teraCrossRateSell\") }}\r\n {{ getTeraCrossRate(rate.iso, \"previousDayTeraCrossRateSell\") }}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n`\n});\nVue.component('form-auto-loan', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendAutoLoanForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'AUTO_LOAN_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"auto-loan-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateAutoLoanForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-business-loan', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendBusinessForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('vacancyId', window._data.currentVacancyId);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'BUSINESS_CARD_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"vacancy-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n\r\n\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.id + '||' + item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateBusinessLoanForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{data.formSettings.title}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-contact', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n //submitForm(token)\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendContactForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'CONTACTFORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"contact-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n\r\n }\r\n });\r\n }\r\n });\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateContactForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n },\r\n //verifyCaptcha() {\r\n // var _this = this;\r\n // grecaptcha.ready(() => {\r\n // grecaptcha\r\n // .execute(window._data.reCaptchaSiteKey, {\r\n // action: \"submit\"\r\n // })\r\n // .then(token => {\r\n // _this.submitForm(token);\r\n // });\r\n // });\r\n //}\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-deposit', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendDepositForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'DEPOSIT_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"deposit-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.id + '||' + item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateDepositForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-general', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendGeneralForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'GENERAL_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"general-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.id + '||' + item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateGeneralForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-ipo-loan-for-immigrants', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendIpoLoanFormForImmigrants';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'IPO_LOAN_FOR_IMMIGRANTS_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"ipo-loan-form-for-immigrants-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.id + '||' + item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateIpoLoanFormForImmigrants';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-ipo-loan', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendIpoLoanForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'IPO_LOAN_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"ipo-loan-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.id + '||' + item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateIpoLoanForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-offer-for-legal-entities', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendOfferForLegalEntitiesForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'OFFER_FOR_LEGAL_ENTITIES_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"offer-for-legal-entities-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateOfferForLegalEntitiesForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-salary-port-out', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendSalaryPortOutForm'\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'SALARY_PORT_OUT_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"salary-port-out-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.id + '||' + item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateSalaryPortOutForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-salary', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendSalaryForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'SALARY_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"auto-loan-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateSalaryForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{data.formSettings.title}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-select', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendSelectForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'SELECT_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"select-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateSelectForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-subscribe', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n email: ''\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n //submitForm(token)\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n\r\n _this.$nextTick(() => {\r\n\r\n _this.settings.sendingData = true;\r\n //formData.append('captcha', token);\r\n\r\n\r\n var endPoint = 'SendSubscribeForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = new FormData();\r\n formData.append('email', _this.data.email);\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'SUBSCRIBEFORM' });\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"subscribe-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n\r\n }\r\n });\r\n\r\n\r\n\r\n\r\n\r\n });\r\n },\r\n },\r\n\r\n mounted() {\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-tera-leasing-verification', {\r\n props: {},\r\n data: function () {\r\n return {\r\n form: {\r\n selectedUserType: 0,\r\n identityCode: '',\r\n contactPersonFullname: '',\r\n contactPersonIdentityCode: '',\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n selectUserType(type) {\r\n this.form.selectedUserType = type;\r\n },\r\n resetForm() {\r\n this.form.selectedUserType = 0;\r\n this.form.identityCode = '';\r\n this.form.contactPersonFullname = '';\r\n this.form.contactPersonIdentityCode = '';\r\n this.settings.sendingData = false;\r\n },\r\n\r\n\r\n\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n\r\n _this.$nextTick(() => {\r\n\r\n if (_this.form.selectedUserType == 0) {\r\n return;\r\n }\r\n if (_this.form.selectedUserType == 1 && _this.form.identityCode.length != 11) {\r\n return;\r\n }\r\n if (_this.form.selectedUserType == 2 && (_this.form.identityCode.length != 9 || _this.form.contactPersonFullname.length == 0 || _this.form.contactPersonIdentityCode.length != 11)) {\r\n return;\r\n }\r\n\r\n\r\n _this.settings.sendingData = true;\r\n var endPoint = 'SendTeraLeasingVerificationForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = new FormData();\r\n\r\n formData.append('userType', _this.form.selectedUserType);\r\n formData.append('identityCode', _this.form.identityCode);\r\n formData.append('contactPersonFullname', _this.form.contactPersonFullname);\r\n formData.append('contactPersonIdentityCode', _this.form.contactPersonIdentityCode);\r\n\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'TERA_LEASING_VERIFICATION_FORM' });\r\n //setTimeout(function () {\r\n // location.reload()\r\n //}, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"tera-leasing-verification-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n });\r\n\r\n },\r\n\r\n\r\n allowNumbersOnly(evt) {\r\n evt = (evt) ? evt : window.event;\r\n var charCode = (evt.which) ? evt.which : evt.keyCode;\r\n if ((charCode > 31 && (charCode < 48 || charCode > 57)) && charCode !== 46 && charCode !== 43) {\r\n evt.preventDefault();\r\n } else {\r\n return true;\r\n }\r\n },\r\n },\r\n\r\n mounted() {\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n\r\n
\r\n

{{ $phrase('teraleasingverificationform_choosetype') }}

\r\n \r\n
\r\n\r\n\r\n
0\">\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

\r\n
\r\n {{ $phrase('teraleasingverificationform_resultmessageiban') }}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-tera-leasing', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendTeraLeasingForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'TERA_LEASING_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"auto-loan-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateTeraLeasingForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-travel-card', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n getFormTitle() {\r\n return window.form_title;\r\n },\r\n getFormSubTitle() {\r\n return window.form_subtitle;\r\n },\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendTravelCardForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'TRAVEL_CARD_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"travel-card-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.id + '||' + item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateTravelCardForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{getFormTitle()}}

\r\n

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('form-vacancy-application', {\r\n props: {},\r\n data: function () {\r\n return {\r\n data: {\r\n formSettings: {},\r\n branches: []\r\n },\r\n settings: {\r\n submitted: false,\r\n succeeded: false,\r\n resultMessage: '',\r\n sendingData: false\r\n },\r\n }\r\n },\r\n\r\n methods: {\r\n submitForm() {\r\n var _this = this;\r\n _this.settings.submitted = true;\r\n _this.validateAllFields();\r\n\r\n _this.$nextTick(() => {\r\n if (_this.validateAllFields()) {\r\n _this.settings.sendingData = true;\r\n\r\n var endPoint = 'SendVacancyForm';\r\n var apiUrl = window._data.apiBaseUrl + 'OnlineFormsApi/' + endPoint;\r\n\r\n _this.$security.getGoogleReCaptchaToken(endPoint).then(function (reCaptchaToken) {\r\n if (reCaptchaToken) {\r\n\r\n let formData = _this.createFormData()\r\n formData.append('langAbbr', window._data.languageAbbr);\r\n formData.append('url', window._data.currentUrl);\r\n formData.append('vacancyId', window._data.currentVacancyId);\r\n formData.append('reCaptchaToken', reCaptchaToken);\r\n\r\n\r\n axios.post(apiUrl, formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n ).then(function (response) {\r\n _this.settings.succeeded = response.data.succeeded;\r\n _this.settings.resultMessage = response.data.message;\r\n _this.settings.sendingData = false;\r\n if (response.data.succeeded) {\r\n _this.settings.submitted = false;\r\n /* _this.clearFields();*/\r\n (window.dataLayer = window.dataLayer || []).push({ 'event': 'lead', 'category': 'application-form', 'type': 'VACANCY_FORM' });\r\n setTimeout(function () {\r\n location.reload()\r\n }, 2000);\r\n }\r\n Fancybox.show([{ src: _this.$refs[\"vacancy-form-dialog-alert\"], type: \"inline\" }]);\r\n }).catch(function (e) {\r\n _this.settings.sendingData = false;\r\n }).finally(function (e) {\r\n _this.settings.sendingData = false;\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n },\r\n createFormData() {\r\n var _this = this;\r\n\r\n let formData = new FormData();\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n\r\n if (item.hasOwnProperty('value') && item.value != null && item.value != undefined) {\r\n if (item.type == 4) {\r\n formData.append(item.id, item.value.title);\r\n }\r\n else if (item.type == 3) {\r\n let filesArray = Array.isArray(item.value) ? item.value : [item.value];\r\n\r\n filesArray.forEach((file, index) => {\r\n formData.append(`${item.id}`, file);\r\n });\r\n }\r\n else {\r\n formData.append(item.id, item.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return formData;\r\n },\r\n\r\n clearFields() {\r\n var _this = this;\r\n for (const key in _this.data.formSettings.groups) {\r\n var group = _this.data.formSettings.groups[key];\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n _this.$nextTick(() => {\r\n item.value = \"\";\r\n _this.$refs.genericFormGroup.group = group;\r\n });\r\n }\r\n\r\n }\r\n },\r\n\r\n validateAllFields() {\r\n var _this = this;\r\n\r\n for (const key in _this.data.formSettings.groups) {\r\n for (const field in _this.data.formSettings.groups[key].fields) {\r\n let item = _this.data.formSettings.groups[key].fields[field];\r\n if (item.hasOwnProperty('mandatory')) {\r\n if (item.mandatory && !item.valid) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n populateForm() {\r\n var _this = this;\r\n\r\n var endpointUrl = window._data.apiBaseUrl + 'OnlineFormsApi/PopulateVacancyForm';\r\n axios.post(endpointUrl,\r\n {\r\n langAbbr: window._data.languageAbbr\r\n }).then(function (response) {\r\n if (response.data.succeeded) {\r\n _this.data.formSettings = response.data.data.form;\r\n }\r\n }).catch(function (e) {\r\n }).finally(function (e) {\r\n });\r\n }\r\n },\r\n\r\n mounted() {\r\n this.populateForm();\r\n }\r\n ,\ntemplate: `\r\n
\r\n
\r\n

{{data.formSettings.title}}

\r\n

{{data.formSettings.content}}

\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

{{settings.resultMessage}}

\r\n
\r\n
\r\n\r\n`\n});\nVue.component('generic-form-field', {\r\n props: {\r\n field: Object,\r\n submitted: Boolean,\r\n relatedField: Object\r\n },\r\n data: function () {\r\n return {\r\n data: {\r\n },\r\n settings: {\r\n submitted: false\r\n },\r\n };\r\n },\r\n methods: {\r\n\r\n },\r\n mounted() {\r\n\r\n }\r\n\r\n ,\ntemplate: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n`\n});\nVue.component('generic-form-group', {\r\n props: {\r\n group: Object,\r\n submitted: Boolean,\r\n },\r\n data: function () {\r\n return {\r\n };\r\n },\r\n methods: {\r\n getRelatedField(field) {\r\n var relatedField = this.group.fields.find(f => f.id == field.refId);\r\n\r\n return relatedField;\r\n }\r\n },\r\n mounted() {\r\n\r\n }\r\n ,\ntemplate: `\r\n
\r\n

{{group.title}}

\r\n
\r\n \r\n \r\n
\r\n
\r\n`\n});\ndocument\r\n .querySelectorAll('[data-vueapp]')\r\n .forEach(element => {\r\n window._createVueApp(element);\r\n });\r\n\nfunction matchMediaQuery(query) {\r\n try {\r\n return window.matchMedia(query).matches;\r\n }\r\n catch (err) {\r\n return false;\r\n }\r\n}\r\n\r\n(function initializeMenu() {\r\n var setupMenu = function (menuElems, mainContainerWidthPx, moreContainerParent, moreContainer, widthSubtractPx, additionalWidthPx) {\r\n var currentWidthPx = widthSubtractPx + additionalWidthPx;\r\n var visibleItems = [];\r\n var invisibleItems = [];\r\n moreContainerParent.hide();\r\n\r\n const menuWrapper = document.getElementsByClassName('arrange-not-initialized');\r\n\r\n if (menuWrapper != null) {\r\n $(menuWrapper).removeClass('arrange-not-initialized');\r\n }\r\n\r\n for (let i = 0; i < menuElems.length; i++) {\r\n var currentItem = menuElems.eq(i);\r\n var currElemWidth = currentItem.outerWidth(true) + additionalWidthPx;\r\n currentWidthPx += currElemWidth;\r\n\r\n if (currentWidthPx >= mainContainerWidthPx) {\r\n invisibleItems.push(currentItem);\r\n moreContainerParent.show();\r\n } else {\r\n visibleItems.push(currentItem);\r\n }\r\n }\r\n menuElems.hide();\r\n $(visibleItems).each(function () {\r\n $(this).show();\r\n });\r\n\r\n $(moreContainer).empty();\r\n\r\n $(invisibleItems).each(function () {\r\n var $clone = $(this).find('a').clone();\r\n $(moreContainer).append($clone);\r\n });\r\n\r\n }\r\n\r\n var arrangeMenu = function () {\r\n if (matchMediaQuery(\"(min-width: 768px)\")) {\r\n var $singleMenuItems = $('.menu .menu-item.singleitem');\r\n var $containerWidthPx = $('.header-main .container .header-main__content').width() - 200;\r\n var $dropdownContainer = $('.menu .menu-item.dropdown-holder .dropdown');\r\n var $moreContainerParent = $('.menu .menu-item.dropdown-holder');\r\n var $minWidthSubtractPx = $('.menu-item.dropdown-holder').outerWidth(true);\r\n setupMenu($singleMenuItems, $containerWidthPx, $moreContainerParent, $dropdownContainer, $minWidthSubtractPx, 60);\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n $(window).on('resize', function () {\r\n arrangeMenu();\r\n });\r\n $(function () {\r\n arrangeMenu();\r\n });\r\n setTimeout(function () {\r\n arrangeMenu();\r\n }, 100);\r\n arrangeMenu();\r\n\r\n $(\".table\").wrap(\"
\");\r\n\r\n})();\r\n\r\nsetTimeout(function () {\r\n svg4everybody();\r\n\r\n (function () {\r\n $('.js-trigger').on('click', function () {\r\n var _trigger = $(this);\r\n var _results = $(this).siblings('.js-results');\r\n _trigger.parent().toggleClass('open');\r\n _results.stop().slideToggle('fast');\r\n $('.js-trigger').not(_trigger).parent().removeClass('open');\r\n $('.js-results').not(_results).slideUp('fast');\r\n return false;\r\n });\r\n\r\n $('.compare__product--empty').on('click', function () {\r\n $(this.querySelector('.js-trigger')).trigger('click')\r\n });\r\n\r\n let showTimeout;\r\n $('.menu-item.has-dropdown').hover(\r\n function () {\r\n showTimeout = setTimeout(() => {\r\n $(this).find('.submenu-wrap').toggleClass('open', true)\r\n $('body').toggleClass('menu-open', true);\r\n }, 150);\r\n },\r\n function () {\r\n clearTimeout(showTimeout);\r\n $(this).find('.submenu-wrap').toggleClass('open', false);\r\n $('body').toggleClass('menu-open', false);\r\n }\r\n );\r\n\r\n let initializeSectionSwiper = function (sliderClass, slidesperView, slidesPerViewSmallDesktop, spacebetween) {\r\n const slider = new Swiper(sliderClass + ' .swiper', {\r\n slidesPerView: 'auto',\r\n spaceBetween: 16,\r\n watchOverflow: true,\r\n navigation: {\r\n disabledClass: 'swiper__button--disabled',\r\n nextEl: sliderClass + ' .swiper__button--next',\r\n prevEl: sliderClass + ' .swiper__button--prev',\r\n },\r\n pagination: false,\r\n breakpoints: {\r\n 768: {\r\n slidesPerView: 2,\r\n },\r\n 1200: {\r\n slidesPerView: slidesPerViewSmallDesktop,\r\n spaceBetween: spacebetween,\r\n },\r\n 1432: {\r\n slidesPerView: slidesperView,\r\n }\r\n }\r\n })\r\n }\r\n\r\n initializeSectionSwiper('.news-slider', 3, 3, 24);\r\n initializeSectionSwiper('.blog-slider', 2, 3, 24);\r\n initializeSectionSwiper('.products-slider', 3, 3, 24);\r\n initializeSectionSwiper('.money-transfers-slider', 4, 3, 24);\r\n initializeSectionSwiper('.services-slider', 3, 3, 24);\r\n initializeSectionSwiper('.offers-slider', 3, 3, 24);\r\n initializeSectionSwiper('.developer-offers-slider', 4, 3, 24);\r\n initializeSectionSwiper('.accredited-universities-slider', 4, 3, 24);\r\n initializeSectionSwiper('.detail-services-slider', 2, 2, 24);\r\n initializeSectionSwiper('.detail-products-slider', 2, 2, 24);\r\n initializeSectionSwiper('.select-offers-slider', 3, 3, 24);\r\n initializeSectionSwiper('.page-gallery-slider', 3, 3, 24);\r\n\r\n initializeSectionSwiper('.page-main--short .products-slider', 2, 2, 24);\r\n initializeSectionSwiper('.page-main--short .services-slider', 2, 2, 24);\r\n initializeSectionSwiper('.page-main--short .offers-slider', 2, 2, 24);\r\n initializeSectionSwiper('.page-main--short .select-offers-slider', 2, 2, 24);\r\n initializeSectionSwiper('.page-main--short .news-slider', 2, 2, 24);\r\n initializeSectionSwiper('.page-main--short .money-transfers-slider', 3, 2, 24);\r\n\r\n $('.expand-table').on('click', function () {\r\n $(this).toggleClass('open');\r\n $(this).parents('.key-value-table').toggleClass('expanded');\r\n return false;\r\n })\r\n\r\n $('.js-loan-compare-trigger').on('click', function (e) {\r\n UiService.shared.dispatchOpenCompareModalEvent('loan', e.target.dataset.id)\r\n e.preventDefault();\r\n return false;\r\n })\r\n\r\n $('.js-deposit-compare-trigger').on('click', function (e) {\r\n UiService.shared.dispatchOpenCompareModalEvent('deposit', e.target.dataset.id)\r\n e.preventDefault();\r\n return false;\r\n })\r\n\r\n $('.js-card-compare-trigger').on('click', function (e) {\r\n UiService.shared.dispatchOpenCompareModalEvent('card', e.target.dataset.id)\r\n e.preventDefault();\r\n return false;\r\n })\r\n\r\n //$('.js-compare-close').on('click', function () {\r\n // $('.js-compare-results').hide();\r\n // $('body').toggleClass('noscroll', false);\r\n // return false;\r\n //});\r\n\r\n $('.footer-main__column-head').on('click', function () {\r\n if ($(window).width() <= 767) {\r\n $('.footer-main__column-list').not($(this).siblings('.footer-main__column-list')).slideUp();\r\n $('.footer-main__column-head').not($(this)).toggleClass('open', false);\r\n $(this).toggleClass('open');\r\n $(this).siblings('.footer-main__column-list').slideToggle();\r\n }\r\n });\r\n\r\n // Add copy functionality for form message\r\n const handleCopy = () => {\r\n const copyButtons = document.querySelectorAll('.form__message-copy');\r\n \r\n copyButtons.forEach(button => {\r\n button.addEventListener('click', function() {\r\n const textElement = this.querySelector('.form__message-copy-text');\r\n const textToCopy = textElement.textContent;\r\n \r\n // Copy text to clipboard\r\n navigator.clipboard.writeText(textToCopy).then(() => {\r\n // Create and show \"Copied\" message\r\n const copiedText = document.createElement('span');\r\n copiedText.className = 'form__message-copy-status';\r\n copiedText.textContent = 'Copied';\r\n \r\n // Add the element after the copy icon\r\n this.appendChild(copiedText);\r\n \r\n // Remove the message after 3 seconds\r\n setTimeout(() => {\r\n copiedText.remove();\r\n }, 3000);\r\n });\r\n });\r\n });\r\n };\r\n\r\n handleCopy();\r\n\r\n })();\r\n\r\n if (document.getElementById(\"inpage-nav\")) {\r\n function whereToFixHeight() {\r\n var navbar = document.getElementById('inpage-nav');\r\n var header = document.getElementById('header');\r\n return navbar.offsetHeight + header.offsetHeight;\r\n }\r\n\r\n function updateActiveNavItem() {\r\n var sections = document.querySelectorAll('.scrollable-section');\r\n var navLinks = document.querySelectorAll('.inpage-nav__item');\r\n\r\n var currentSectionId = '';\r\n sections.forEach(section => {\r\n const sectionTop = section.offsetTop;\r\n const sectionHeight = section.offsetHeight;\r\n\r\n if (window.scrollY >= (sectionTop - sectionHeight / 3) &&\r\n window.scrollY < (sectionTop + sectionHeight)) {\r\n currentSectionId = section.getAttribute('id');\r\n }\r\n });\r\n\r\n navLinks.forEach(link => {\r\n link.classList.remove('active');\r\n if (link.getAttribute('href') === '#' + currentSectionId) {\r\n link.classList.add('active');\r\n }\r\n });\r\n }\r\n\r\n // Event listener for making navbar fixed and updating active links on scroll\r\n let lastScrollTop = 0;\r\n window.addEventListener('scroll', function () {\r\n var navbarPlaceholder = document.querySelector('.inpage-nav-wrap');\r\n var navbar = document.getElementById('inpage-nav');\r\n var header = document.getElementById('header');\r\n var navbarPlaceholderMarginBottom = parseInt(window.getComputedStyle(navbarPlaceholder).marginBottom);\r\n var navbarPlaceholderOffsetTop = navbarPlaceholder.offsetTop - navbarPlaceholderMarginBottom;\r\n var fixedPoint = navbar.offsetTop - header.offsetHeight;\r\n var scrollingUp = window.scrollY < lastScrollTop;\r\n\r\n\r\n if (!scrollingUp) {\r\n if (window.scrollY > fixedPoint) {\r\n navbar.classList.add('fixed');\r\n navbarPlaceholder.classList.add('fixed');\r\n }\r\n }\r\n else {\r\n if (window.scrollY <= navbarPlaceholderOffsetTop) {\r\n navbar.classList.remove('fixed');\r\n navbarPlaceholder.classList.remove('fixed');\r\n }\r\n }\r\n\r\n updateActiveNavItem();\r\n lastScrollTop = window.scrollY;\r\n });\r\n\r\n // Event listener for smooth scrolling and updating active links on click\r\n document.querySelectorAll('.inpage-nav__item').forEach(anchor => {\r\n anchor.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n\r\n document.querySelectorAll('.inpage-nav__item').forEach(el => el.classList.remove('active'));\r\n\r\n this.classList.add('active');\r\n\r\n const sectionId = this.getAttribute('href');\r\n const section = document.querySelector(sectionId);\r\n const sectionTop = section.getBoundingClientRect().top + window.scrollY;\r\n const minusScrollHeight = whereToFixHeight();\r\n window.scrollTo({\r\n top: sectionTop - minusScrollHeight - 20,\r\n behavior: 'smooth'\r\n });\r\n });\r\n });\r\n }\r\n\r\n\r\n window.addEventListener('scroll', function () {\r\n var targetDiv = document.getElementById('header-app');\r\n var scrollPosition = window.scrollY;\r\n var targetDivHeight = targetDiv.offsetHeight;\r\n\r\n if (scrollPosition > targetDivHeight) {\r\n targetDiv.classList.add('scrolled-past');\r\n } else {\r\n targetDiv.classList.remove('scrolled-past');\r\n }\r\n });\r\n\r\n window.onscroll = function () { stickyBottomNav() };\r\n\r\n function stickyBottomNav() {\r\n var footer = document.querySelector('.footer');\r\n var bottomNav = document.getElementById('bottom-navigation');\r\n\r\n var footerPosition = footer.getBoundingClientRect().top;\r\n var windowHeight = window.innerHeight;\r\n\r\n if (footerPosition < windowHeight) {\r\n document.body.style.paddingBottom = bottomNav.offsetHeight + 'px';\r\n } else {\r\n document.body.style.paddingBottom = '0';\r\n }\r\n }\r\n\r\n document.querySelector('.js-expand-bottom-nav').addEventListener('click', function (e) {\r\n\r\n e.preventDefault();\r\n\r\n const dropdownContent = document.querySelector('.js-bottom-nav-leftover');\r\n\r\n const headerHeight = document.querySelector('.header').offsetHeight;\r\n const bottomNavHeight = document.querySelector('.bottom-navigation').offsetHeight;\r\n const screenHeight = window.innerHeight;\r\n const dropdownHeight = screenHeight - headerHeight - bottomNavHeight;\r\n\r\n if (dropdownContent.classList.contains('active')) {\r\n dropdownContent.style.height = 0;\r\n dropdownContent.classList.remove('active');\r\n setTimeout(function () {\r\n dropdownContent.style.transform = 'translateY(100%)';\r\n document.body.classList.remove('noscroll');\r\n }, 300);\r\n } else {\r\n dropdownContent.style.transform = 'translateY(0)';\r\n setTimeout(function () {\r\n dropdownContent.classList.add('active');\r\n dropdownContent.style.height = dropdownHeight + 'px';\r\n document.body.classList.add('noscroll');\r\n }, 10);\r\n }\r\n });\r\n\r\n if (document.querySelectorAll(\".page-actions\")) {\r\n document.querySelectorAll('.page-actions').forEach(parent => {\r\n if (parent.childElementCount === 1) {\r\n parent.style.justifyContent = 'center';\r\n } else {\r\n parent.style.justifyContent = 'space-between';\r\n }\r\n });\r\n };\r\n\r\n // Function to check if screen width is >= 1200px\r\n const isDesktop = () => window.innerWidth >= 1200;\r\n\r\n // Wrap all the functionality in a function\r\n const initializePackagesGrid = () => {\r\n const gridContent = document.querySelector('.packages-grid');\r\n const packagesNavPrevButton = document.querySelector('.packages-grid__nav--prev');\r\n const packagesNavNextButton = document.querySelector('.packages-grid__nav--next');\r\n\r\n // Only proceed if the elements exist\r\n if (!gridContent || !packagesNavPrevButton || !packagesNavNextButton) return;\r\n\r\n const COLUMN_WIDTH = 320;\r\n const COLUMN_GAP = 16;\r\n\r\n packagesNavPrevButton.style.opacity = '0';\r\n packagesNavNextButton.style.opacity = '0';\r\n\r\n const updateButtonHeight = () => {\r\n const firstRowCell = document.querySelector('.packages-grid__head .packages-grid__cell');\r\n if (firstRowCell) {\r\n const cellHeight = firstRowCell.offsetHeight;\r\n packagesNavPrevButton.style.height = `${cellHeight}px`;\r\n packagesNavNextButton.style.height = `${cellHeight}px`;\r\n updatePackageNavButtonVisibility();\r\n }\r\n };\r\n\r\n const getGridDimensions = () => {\r\n const headerRow = document.querySelector('.packages-grid__head .packages-grid__row');\r\n if (!headerRow) return { numberOfColumns: 0, frozenColumnWidth: 0 };\r\n\r\n const frozenColumn = headerRow.querySelector('.packages-grid__cell--frozen');\r\n const frozenColumnWidth = frozenColumn ? frozenColumn.offsetWidth : 0;\r\n const headerCells = headerRow.querySelectorAll('.packages-grid__cell:not(.packages-grid__cell--frozen)');\r\n\r\n return {\r\n numberOfColumns: headerCells.length,\r\n frozenColumnWidth: frozenColumnWidth\r\n };\r\n };\r\n\r\n const getTotalGridWidth = () => {\r\n const { numberOfColumns, frozenColumnWidth } = getGridDimensions();\r\n return frozenColumnWidth + COLUMN_GAP + (numberOfColumns * COLUMN_WIDTH) + ((numberOfColumns - 1) * COLUMN_GAP);\r\n };\r\n\r\n const updatePackageNavButtonVisibility = () => {\r\n const scrollLeft = gridContent.scrollLeft;\r\n const visibleWidth = gridContent.clientWidth;\r\n const totalWidth = getTotalGridWidth();\r\n const maxScroll = totalWidth - visibleWidth;\r\n const remainingScroll = maxScroll - scrollLeft;\r\n\r\n packagesNavPrevButton.style.display = scrollLeft <= 0 ? 'none' : 'flex';\r\n packagesNavPrevButton.style.opacity = scrollLeft <= 0 ? '0' : '1';\r\n\r\n packagesNavNextButton.style.display = remainingScroll <= (COLUMN_WIDTH / 2) ? 'none' : 'flex';\r\n packagesNavNextButton.style.opacity = remainingScroll <= (COLUMN_WIDTH / 2) ? '0' : '1';\r\n };\r\n\r\n const scrollPackagesGrid = (direction) => {\r\n const scrollLeft = gridContent.scrollLeft;\r\n const visibleWidth = gridContent.clientWidth;\r\n const totalWidth = getTotalGridWidth();\r\n const maxScroll = totalWidth - visibleWidth;\r\n const remainingScroll = maxScroll - scrollLeft;\r\n\r\n if (direction === 'next') {\r\n // Only scroll if there's meaningful content left to show\r\n if (remainingScroll > COLUMN_WIDTH / 2) {\r\n gridContent.scrollBy({\r\n left: COLUMN_WIDTH + COLUMN_GAP,\r\n behavior: 'smooth'\r\n });\r\n }\r\n } else {\r\n gridContent.scrollBy({\r\n left: -(COLUMN_WIDTH + COLUMN_GAP),\r\n behavior: 'smooth'\r\n });\r\n }\r\n };\r\n\r\n // Reset on resize\r\n const handleGridResize = () => {\r\n updatePackageNavButtonVisibility();\r\n };\r\n\r\n packagesNavPrevButton.addEventListener('click', () => scrollPackagesGrid('prev'));\r\n packagesNavNextButton.addEventListener('click', () => scrollPackagesGrid('next'));\r\n gridContent.addEventListener('scroll', updatePackageNavButtonVisibility);\r\n window.addEventListener('resize', handleGridResize);\r\n\r\n // Initial button visibility\r\n updateButtonHeight();\r\n };\r\n\r\n // Function to handle initialization and cleanup\r\n const handleResize = () => {\r\n if (isDesktop()) {\r\n initializePackagesGrid();\r\n } else {\r\n // Clean up for smaller screens if needed\r\n const packagesNavPrevButton = document.querySelector('.packages-grid__nav--prev');\r\n const packagesNavNextButton = document.querySelector('.packages-grid__nav--next');\r\n\r\n if (packagesNavPrevButton) packagesNavPrevButton.style.display = 'none';\r\n if (packagesNavNextButton) packagesNavNextButton.style.display = 'none';\r\n }\r\n };\r\n\r\n // Initial check and setup\r\n handleResize();\r\n\r\n // Update on window resize\r\n window.addEventListener('resize', handleResize);\r\n\r\n}, 200);"]}