{"version":3,"sources":["root.js","constants.js","helpers.js","lazyload/lazyload.min.js","activateinsurance/activateinsurance.js","articleslist/articleslist.js","changepayment/changepaymentautogiro.js","confirmautogiro/confirmautogiro.js","contactform/contactform.js","contactlist/contactlist.js","customerforms/advanceguaranteeinsuranceform.js","customerforms/commoncustomerdeclarationform.js","customerforms/hiddendefectsform.js","dashboardinspectionlist/dashboardinspectionlist.js","emailsignupmodal/emailsignupmodal.js","eusanctionslist/eusanctionslist.js","finalinspection/finalinspection.js","finalinspection/finalinspectionform_step1.js","finalinspection/finalinspectionform_step2.js","finalinspection/finalinspectionform_step3.js","finalinspection/finalinspectionform_step4.js","flexibleform/flexibleform.js","imageandtextlist/imageAndTextList.js","imagegallery/imagegallery.js","mostrecentarticles/mostRecentArticles.js","navigation/navigation.js","partnerfiles/partnerfiles.js","registerinspection/offlineFormHelper.js","registerinspection/registerinspection.js","registerinspection/registerinspectionService.js","search/search.js"],"names":["let","site","constants","globals","homeItemId","document","querySelector","dataset","homeitemid","ctxItemId","ctxitemid","ctxCulture","ctxculture","antiforgeryToken","antiforgerytoken","api","submitSearch","articlesList","imageandtextlist","mostrecentarticles","finalinspection","findcontractorinfo","calculateprice","submit","submitfiles","mypages","confirmautogirosubmit","changepaymentautogirosubmit","continuetoconfirmation","getselectedaccount","helpers","setCookie","cname","cvalue","exdays","d","Date","setTime","getTime","expires","toUTCString","cookie","getCookie","name","decodedCookie","decodeURIComponent","ca","split","i","length","c","charAt","substring","indexOf","initLazyLoad","lazyLoadInstance","LazyLoad","unobserve_entered","callback_enter","img","setAttribute","getAttribute","callback_error","fallbackimage","lazyLoad","initLazyBackground","IntersectionObserver","lazyBackgroundObserver","entries","obs","forEach","lazyClass","entry","isIntersecting","unobserve","target","class","classList","add","elementsToLazyLoad","querySelectorAll","observe","elementToLazyLoad","initLazyAudio","microdata","elements","head","appendChild","element","validateFormElementsOnBlur","forms","inputs","form","input","addEventListener","e","reportValidity","tink","modal","callback","init","tinkModal","getElementById","window","onTinkResponse","bootstrap","Modal","event","iframe","src","data","loading","origin","type","error","JSON","parse","console","log","status","message","hide","n","t","exports","module","define","amd","globalThis","self","this","Object","assign","arguments","prototype","hasOwnProperty","call","apply","r","l","o","CustomEvent","detail","instance","createEvent","initCustomEvent","dispatchEvent","y","E","O","k","h","z","llTempImage","G","toLoadCount","j","children","tagName","push","H","U","_","$","P","q","S","removeAttribute","K","N","class_applied","w","m","unobserve_completed","T","C","callback_applied","Q","class_loading","v","R","callback_loading","W","X","data_sizes","s","data_srcset","u","data_src","nn","loadingCount","callback_finish","tn","llEvLisnrs","rn","M","cn","on","class_loaded","b","callback_loaded","an","class_error","p","restore_on_error","B","gn","use_native","HTMLImageElement","vn","intersectionRatio","x","class_entered","class_exited","ln","L","cancel_on_exit","D","un","sn","A","callback_cancel","callback_exit","bn","Array","slice","mn","container","elements_selector","pn","hn","filter","En","_settings","_observer","root","rootMargin","thresholds","threshold","_onlineHandler","update","navigator","test","userAgent","createElement","a","devicePixelRatio","data_bg","data_bg_hidpi","data_bg_multi","data_bg_multi_hidpi","data_bg_set","data_poster","className","remove","replace","RegExp","parentNode","V","F","J","Y","IMG","IFRAME","VIDEO","load","OBJECT","Z","en","removeEventListener","backgroundImage","style","concat","map","join","dn","_n","disconnect","loadAll","destroy","restoreAll","resetStatus","lazyLoadOptions","activateInsurance","updateOfferInitialized","formElement","activateInsuranceElement","onSubmitForm","showSpinner","spinnerElement","show","scrollIntoView","showOpportunitiesHtml","html","opportunitiesElement","innerHTML","onNumberOfPersonsChanged","numberOfPersonsElement","getOffer","onStartDateChange","startDateElement","submitButton","response","await","fetch","action","method","headers","Content-Type","body","stringify","culture","ctxtItemId","numberOfPersonsInHousehold","value","activateInsuranceStartDate","calculateTotalPrice","json","ok","onOptionalCoverageChecked","onContinue","disabled","preventDefault","checkboxes","summaryElement","coverage","checked","totalPriceElement","coverages","coveragename","price","invariantprice","coverageid","totalpriceapi","totalPrice","additionalCoverages","autogiroUrl","insuranceNumber","firstname","lastname","personalNumber","mail","phonenumber","street","zipcode","city","location","url","showAllValue","activeBtnClass","hiddenCssClass","paginationListItemLinkSelector","articleListFilterButtons","articleListFilterSelect","articlesListContainer","spinnerContainer","bindPager","bindButtonFilter","bindSelectFilter","doSearch","toggleSpinner","toggleResult","page","options","featuredItem","featatureditem","blockKey","blockkey","currentPageUrl","pageurl","articleTypes","articletypes","articleTag","getFilterValue","result","history","pushState","scrollTo","top","behavior","fromForm","pagelink","href","filterButton","updateButtonsState","selectedButton","contains","articletagfilter","btnClicked","searchResult","changePaymentAutogiro","getElementsByClassName","changePaymentAutogiroElement","onBankRadioSelectionChange","onGetSelectedAccount","accountnumber","bank","clearingNumberElement","bankInputElement","successLandingPage","failureLandingPage","insurancenumber","bankIdSignUrl","code","accountNumberElement","bankElement","confirmElement","accountNumber","label","accountNumberDisplay","id","divs","selects","select","theDiv","confirmAutogiro","confirmAutogiroElement","thankYouPage","contactForm","confirmautogiroElement","formSelector","confirmationSelector","backToFormSelector","submitButtonTextSelector","submitButtonSpinnerSelector","submitButtonSelector","formTopicSelector","formQuestionSelector","formNameSelector","formEmailSelector","formConsentSelector","contactFormElement","confirmationElement","initHeight","onBackToForm","clientHeight","minHeight","link","onCleanupForm","topicSelect","questionInput","nameInput","emailInput","consentCheck","selectedIndex","spinner","buttonText","email","topic","question","requestVerificationToken","contactList","contactForms","contactFilterButtons","contactFilterSelect","contactGroups","doFilterFromButtons","doFilterFromSelect","selectedValue","doFilterFromSelectedTagValue","contactgroupfilter","tagValue","showAllContacts","contactGroup","contactgroup","advanceguaranteeInsuranceForm","isValidClass","isInValidClass","deleteIconHtml","onSubmitProducers","onSubmitRepayment","onCopyButtonsClick","onNegitiatorCheckClick","onShowPreviewModal","onFileInputChange","fileInputs","previewElement","files","filenames","f","copyButtons","btn","fromElement","copyFrom","copyTo","checkbox","containers","modalElement","closest","labels","forDataValue","for","forElement","visible","undefined","text","radioElements","inputType","radioElement","labelForRadio","previewfor","after","cleanupAttachedFiles","cleanUpButtons","fieldset","hiddenDefectsForm","producersForm","producersContainer","nameElement","orgnumberElement","addedProducersContainer","orgnumberValue","nameValue","addedElement","addedButton","addedDiv","trim","cv","toRemove","repaymentForm","repaymentContainer","addedRepaymentContainer","toggle","contactemail","formData","FormData","fileElements","arr","fileElement","file","append","fieldsets","consentInput","handledRadios","legend","fields","inputElements","notincluded","consent","consentContentElement","filesArr","formtype","containerAttrValue","cvaluesArr","wrapperElement","valueItems","vitem","consentText","consentData","signUrl","commonCustomerForm","advanceguaranteeInsuranceForms","validateElements","textareas","dirty","checkValidity","validateFieldset","textarea","fieldsetIsInvalid","allAreValid","theForms","copyAddress","onProductTypeChange","onInsuredValueChange","setSummaryTableData","radioButtons","inputAttachementInspection","fs","required","productkey","showprotocolattachement","product","productCost","productInsuredValue","productKey","productKeyElement","table","option","selected","cost","elementId","copyfrom","sourceElement","salesperson","salespersonssn","dashboardinspectionlist","hiddenDefectsForms","deleteModalElement","localStorage","removeItem","STORAGE_KEY","OFFLINE_ID","initDeleteModal","componentElement","onConfirmDelete","onRemoveButtonClick","unsavedInspection","allformElements","getOrCreateInstance","reload","async","offlineId","storageData","getStorageAllOfflineForms","hasProcessed","inspectionId","pendingInspection","syncInspectionForm","emailSignupModal","dashboardinspectionlistComponents","theModal","onFormSubmit","showThankYouMessage","signupArea","thankYouArea","euSanctionsList","emailSignupModals","emailSignupModalElement","doSubmit","submitElement","hitsContainer","noHitsContainer","hitItemsContainer","searchOptionsRadio","hasHits","hits","labelPatternHits","labelPatternHit","hit","divElement","rawXml","h3Element","preElement","codeElement","errorData","stringifyHit","stringfiedObj","obj","key","isArray","includes","val","keys","resObj","some","finalInspection","optionKindSelector","optionKindFormSelector","errorElementSelector","optionKinds","realestate","realestateaddress","emailInputSelector","insuranceNumberInputSelector","realestateInputSelector","countyInputSelector","addressInputSelector","zipcodeInputSelector","onRadioChange","radios","radio","optionKind","optionkind","theForm","onSubmitFormInsurance","onSubmitFormRealEstate","onSubmitFormRealEstateAddress","insuranceNumberInput","onFormSuccess","onFormError","realestateInput","countyInput","county","addressInput","zipCodeInput","address","onFormSubmited","responseData","alert","errorMessage","setTimeout","redirectUrl","finalInspectionForm_step1","allStepsSelector","step1formSelector","modifyConstructorContainer","constructorElementSelector","amountElementSelector","fileElementSelector","constructorNameElementSelector","addedConstructorsContainerElementSelector","addConstructorsTemplateElementSelector","allAddeddAmountsElementsSelector","totalAmountElementSelector","continueFormSelector","fileDrawingSelector","commentSelector","goToStep","theStep","allSteps","step","addConstructorFormSelector","bindOnConstructorInputChange","onAddConstructor","onConstructorInputChange","bindOnAmountInputChange","setTotalAmount","totalAmountInput","sum","allAddedAmounts","parseInt","constructorNameElement","constructoridentifier","onRemoveConstructorInputChange","closestContainer","onAddConstructorSetData","sourceContractor","sourceAmount","sourceFile","targetContractor","targetAmount","targetFile","dataTransfer","DataTransfer","items","getComment","getFiles","addedConstructors","addedFiles","addedFileInput","houseFile","template","clone","content","cloneNode","finalInspectionForm_step2","errorElement","step2formSelector","goBackButtonSelector","dateValueSelector","onGoBack","getSelectedDate","goBackButton","finalInspectionForm_step3","isOffer","step3formSelector","priceSpanSelector","dateSpanSelector","totalAmountSummarySelector","placeOfferButtonSelector","placeOrderButtonSelector","calculatePrice","prices","amountInput","setPriceAndDate","priceElement","totalAmountSummaryElement","dateElement","selectedDate","onSubmit","placeOrderButton","placeOfferButton","click","requestBody","submitData","person","contractors","buildContractorsArray","requestedDate","comment","buildPerson","doSubmitFilesAndData","doSubmitData","finalInspectionForm_step4","fromEntries","addedContracorsRoot","allAddedContractors","contractorsArray","addedContractor","amount","identifier","step4formSelector","flexibleForm","flexibleFormElement","allInputs","allTextareas","hasAttribute","imageAndTextList","flexibleForms","imagetextCardSelector","listContainer","bindCardClicks","contentKey","contentkey","curentPageUrl","homeId","imageGallery","galleries","modalId","gallery","modalid","images","imgItem","clickedIndex","index","carouselItems","carouselItem","ride","interval","keyboard","touch","mostRecentArticles","bindPagers","setupColumns","allContainers","allContainer","blockElement","has2Col","getBoundingClientRect","scrollY","paginationElement","previousScrollPosition","pageYOffset","headerHeight","offsetHeight","topNavigation","onscroll","currentScrollPosition","onFakeSeidSubmit","mainNavigation","toggleBtn","toggleClass","subMenuBtns","subMenuToggleFunc","stopPropagation","toggleButton","subMenu","parentElement","nextElementSibling","on3rdLevelMenuDisplay","cssRight","cssLeft","hoverItems","dropDownMenu","menuRect","cssClass","windowWidth","innerWidth","right","partnerFiles","promises","fileElementsCount","Promise","all","then","resp","sucessElement","errorHtml","successHtml","OFFLINE_FORMS","INSPECTION_ID","INSPECTION","BUILDINGS_TO_ADD","BUILDINGS_TO_REMOVE","ROWS_TO_ADD","ROWS_TO_REMOVE","ROWS_TO_EDIT","SORT","EXPIRATION_DAYS","setWithExpiry","now","expiry","setItem","getWithExpiry","itemStr","getItem","item","getStorageOfflineForm","providedOfflineId","getOfflineFormData","offlineFormId","setOfflineFormData","offlineForms","clearOfflineFormDataByKey","removeOfflineFormDataArrayById","itemId","storageKey","offlineItems","updateInspectionIdInOfflineForm","newId","sd","findItemIndexInOfflineForm","findIndex","tmpId","removeOfflineFormDataByIndex","splice","appendToInOfflineFormArray","itemObject","removedItems","updateIdInOfflineForm","rowToUpdate","find","row","processStorageData","responsibleCache","lastKnownConnectivityStatus","registerinspection","dragovershadow","editmodal","removeBuildingModalElement","rowFields","addrowButtonSelector","editIconHtml","initInspectionId","setErrorsDataList","selectResponsibleEvent","initInspectionSaveListener","initTdActionListener","setDragRows","onFileInputsChange","oncleanupfilesbuttons","onEditRowSubmit","initBuildingSaveListener","initRemoveBuildingModal","initShowRemoveBuildingModal","initBuildingRemoveListener","initConnectivityListeners","initAddRowListener","initRoomSelectListener","inspectionForm","inspectiondid","setInspectionId","handleConnectivityChange","isConnected","intervalId","setInterval","clearInterval","handleNetworkStatus","isOnline","updateBanner","banners","innerText","offlineMode","bannerOnline","bannerOffline","display","warn","updateFileInputs","updateTooltipForOffline","inputFileOfflineMsg","submitInspection","submitTooltip","submitOfflineMsg","manageOfflineId","offlineIdElement","storedOfflineId","crypto","randomUUID","syncPendingInspectionForm","handleDisabledElements","inspectionData","saveInspection","building","saveBuilding","deleteBuilding","saveRow","deleteRow","patchRow","sortData","postSort","roomSelect","areaSelect","editRoomSelect","editAreaSelect","updateAreaSelect","selectedRoom","selectedArea","room","rooms","allRoomParts","Set","flatMap","roomParts","roomPartsToShow","part","textContent","updateBuildingUI","buildingName","buildingId","updateBuildingSelectOptions","buildingSelect","editBuildingSelect","selectElements","from","existingOption","newOption","Option","updateBuildingList","listElement","li","buildingButton","buildingid","existingLi","onShowRemoveBuildingModal","buildingForm","postBuilding","saveBtn","buildRegisterInspectionRequest","toggleFields","postInspection","inspectionid","previewButton","previewpath","cleanupButtons","oncleanupfilesbutton","parenturl","cleanupButton","affectedTd","filePreview","fileInput","buildSortRequestItems","tbody","newSortOrder","rowId","numberCell","setDragEvents","tableRow","onDragRow","onDragOverRow","onDragEnd","targetRow","before","saveSort","requestBodyItems","updateUIRowNumbers","tableBody","sortedItems","uploadContainer","uploadFileList","btncleanupWrapper","hasfiles","performedBy","inspectionType","houseSupplier","propertyLabel","typeOfBuilding","inspectorCertifiedBy","inspectionDate","municipality","buildRegisterInspectionRowRequest","updateResponsibleCache","field","list","errorCells","clickedElement","onEditRow","onRemoveRow","getRowData","sourceField","selectedOption","updateRowData","targetElement","targetField","opt","rowid","affectedTr","saveEditRow","existingRowIndex","offlineRows","rowData","clickedTr","rownr","area","removeFromUI","tr","String","offlineIndex","allElements","removeBuilding","addRowButton","elementsToDisable","rowsExist","criterias","Boolean","disableFlags","criteria","offlineInspectionData","shouldDisable","updateUIForNewRow","existingRow","actionCell","cells","attribute","nr","responsible","companyname","cell","cellElement","actionDiv","uploadDiv","uploadControlsDiv","inputFileCtrl","clearFilesDiv","clearFilesButton","uploadFileListDiv","clearbuttontext","deleteDiv","editDiv","postRow","loadResponsibleCacheForDropdown","msg","companyName","registerinspectionComponents","Popover","popoverTriggerEl","REGISTER_INSPECTION_PATH","sendRequest","endpoint","Error","statusText","responseClone","inspectiondId","saveInspectionData","formInspectionId","inspectionResponse","controller","AbortController","timeout","abort","cache","signal","clearTimeout","searchResultContainer","searchForm","searchFormQueryInput","reloadSearchResultOnNavigation","query","state","updateBrowserHistoryState","newUrl","URL","searchParams","set","replaceBrowserHistoryState","replaceState"],"mappings":"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","file":"main.js","sourcesContent":["let site = {}; // eslint-disable-line\r\n","site = typeof (site) === 'undefined' ? {} : site;\r\nsite.constants = {\r\n globals : {\r\n homeItemId: document.querySelector(\"body\").dataset.homeitemid,\r\n ctxItemId: document.querySelector(\"body\").dataset.ctxitemid,\r\n ctxCulture: document.querySelector(\"body\").dataset.ctxculture,\r\n antiforgeryToken: document.querySelector(\"body\").dataset.antiforgerytoken \r\n }, \r\n\r\n api: { \r\n submitSearch: '/umbraco/api/search/search',\r\n articlesList: '/umbraco/api/articleslist/list',\r\n imageandtextlist: '/umbraco/api/imageandtextlist/list',\r\n mostrecentarticles: '/umbraco/api/articleslist/mostrecent',\r\n finalinspection: {\r\n findcontractorinfo: '/umbraco/api/finalinspectionform/findentrepreneur',\r\n calculateprice: '/umbraco/api/finalinspectionform/calculateprice',\r\n submit: '/umbraco/api/finalinspectionform/submit',\r\n submitfiles: '/umbraco/api/finalinspectionform/submitfiles',\r\n },\r\n mypages: {\r\n confirmautogirosubmit: '/umbraco/api/mypages/confirmautogirosubmit',\r\n changepaymentautogirosubmit: '/umbraco/api/mypages/changepaymentautogirosubmit',\r\n continuetoconfirmation: '/umbraco/api/mypages/continuetoconfirmation',\r\n getselectedaccount: '/umbraco/api/mypages/getselectedaccount-tink'\r\n }\r\n \r\n }\r\n};\r\n","// https://github.com/verlok/vanilla-lazyload\r\n\r\nsite = typeof (site) === 'undefined' ? {} : site;\r\nsite.helpers = {\r\n\r\n setCookie: (cname, cvalue, exdays) => {\r\n const d = new Date();\r\n d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n const expires = `expires=\"${d.toUTCString()}`;\r\n document.cookie = `${cname}=${cvalue};${expires};path=/`;\r\n },\r\n\r\n getCookie: (cname) => {\r\n const name = `${cname}=`;\r\n const decodedCookie = decodeURIComponent(document.cookie);\r\n const ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i += 1) {\r\n let c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) === 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return \"\";\r\n },\r\n initLazyLoad: () => {\r\n // eslint-disable-next-line\r\n const lazyLoadInstance = new LazyLoad({\r\n unobserve_entered: true,\r\n callback_enter: (img) => {\r\n img.setAttribute(\"data-fallbackimage\", img.getAttribute(\"src\"));\r\n },\r\n callback_error: (img) => {\r\n img.setAttribute(\"src\", img.dataset.fallbackimage);\r\n }\r\n });\r\n\r\n site.lazyLoad = lazyLoadInstance;\r\n },\r\n initLazyBackground: () => {\r\n if (IntersectionObserver) {\r\n const lazyBackgroundObserver = new IntersectionObserver((entries, obs) => {\r\n entries.forEach((entry) => {\r\n // If the entry is not in the viewport, do nothing\r\n if (!entry.isIntersecting) return;\r\n\r\n // Stop observing\r\n obs.unobserve(entry.target);\r\n\r\n const lazyClass = entry.target.dataset.class;\r\n if (lazyClass && lazyClass.length > 0) {\r\n entry.target.classList.add(lazyClass);\r\n }\r\n });\r\n });\r\n\r\n const elementsToLazyLoad = document.querySelectorAll(\"[data-class]\");\r\n if (elementsToLazyLoad) {\r\n elementsToLazyLoad.forEach((elementToLazyLoad) => {\r\n // Attach it to the observer\r\n lazyBackgroundObserver.observe(elementToLazyLoad);\r\n });\r\n }\r\n }\r\n },\r\n initLazyAudio: () => {\r\n if (IntersectionObserver) {\r\n const lazyBackgroundObserver = new IntersectionObserver((entries, obs) => {\r\n entries.forEach((entry) => {\r\n // If the entry is not in the viewport, do nothing\r\n if (!entry.isIntersecting) return;\r\n\r\n // Stop observing\r\n obs.unobserve(entry.target);\r\n\r\n entry.target.setAttribute(\"preload\", \"metadata\");\r\n });\r\n });\r\n\r\n const elementsToLazyLoad = document.querySelectorAll(\"audio[preload='none']\");\r\n if (elementsToLazyLoad) {\r\n elementsToLazyLoad.forEach((elementToLazyLoad) => {\r\n // Attach it to the observer\r\n lazyBackgroundObserver.observe(elementToLazyLoad);\r\n });\r\n }\r\n }\r\n },\r\n microdata: () => {\r\n const elements = document.querySelectorAll(`body script[type=\"application/ld+json\"]`);\r\n if (elements && elements.length > 0) {\r\n elements.forEach((element) => \r\n {\r\n document.head.appendChild(element);\r\n })\r\n }\r\n },\r\n validateFormElementsOnBlur: () => {\r\n const forms = document.querySelectorAll(`form[data-validateonblur]`);\r\n if (forms && forms.length > 0) {\r\n forms.forEach((form) => {\r\n const inputs = form.querySelectorAll(`input`);\r\n if (inputs && inputs.length > 0) {\r\n inputs.forEach((input) => {\r\n input.addEventListener(\"blur\", (e) => {\r\n e.target.reportValidity();\r\n });\r\n })\r\n }\r\n })\r\n }\r\n },\r\n tink: {\r\n modal: null,\r\n callback: null,\r\n init: () => {\r\n\r\n const tinkModal = document.getElementById('tink-modal')\r\n if (tinkModal) {\r\n\r\n window.addEventListener('message', site.helpers.tink.onTinkResponse, false);\r\n\r\n site.helpers.tink.modal = new bootstrap.Modal(tinkModal);\r\n\r\n tinkModal.addEventListener('show.bs.modal', function (event) {\r\n let iframe = tinkModal.querySelector(\"iframe\");\r\n if (iframe) {\r\n iframe.src = iframe.dataset.src;\r\n }\r\n })\r\n }\r\n\r\n },\r\n onTinkResponse: (event) => {\r\n\r\n if (event.origin !== 'https://link.tink.com') {\r\n return;\r\n }\r\n //console.log(event);\r\n\r\n // Read more about the message format here: https://docs.tink.com/api/#tink-link-response-iframe-mode\r\n const { type, data, error } = JSON.parse(event.data);\r\n\r\n if (type === 'code') { // type differ between products\r\n // This is the authorization code that should be exchanged for an access token\r\n const code = data;\r\n console.log(`Tink Link returned with authorization code: ${code}`);\r\n } else if (type === 'error') {\r\n // Handle error response from Tink Link\r\n console.log(`Tink Link returned with error status: ${error.status} and error message: ${error.message}.`);\r\n site.helpers.tink.modal.hide();\r\n } else if (type === 'credentials') {\r\n // Handle credentials error response from Tink Link\r\n const credentialsId = data;\r\n console.log(`Authentication failed with credentials identifier: ${credentialsId} with error status: ${error.status} and error message: ${error.message}.`);\r\n } else if (type === 'status') {\r\n // Observe Tink Link loading state (optional)\r\n const { loading } = data;\r\n console.log(`Tink Link has ${loading ? 'shown' : 'hidden'} the loading overlay.`);\r\n } else if (type == 'account_verification_report_id') {\r\n if (site.helpers.tink.callback != null) {\r\n site.helpers.tink.callback(data);\r\n }\r\n \r\n }\r\n else {\r\n\r\n // More message types may be added in the future\r\n }\r\n\r\n }\r\n }\r\n\r\n};\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n site.helpers.initLazyLoad(); \r\n site.helpers.initLazyBackground();\r\n site.helpers.initLazyAudio();\r\n site.helpers.microdata();\r\n site.helpers.validateFormElementsOnBlur();\r\n site.helpers.tink.init();\r\n});\r\n","!function(n,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).LazyLoad=t()}(this,(function(){\"use strict\";function n(){return n=Object.assign||function(n){for(var t=1;t1,r={elements_selector:\".lazy\",container:e||t?document:null,threshold:300,thresholds:null,data_src:\"src\",data_srcset:\"srcset\",data_sizes:\"sizes\",data_bg:\"bg\",data_bg_hidpi:\"bg-hidpi\",data_bg_multi:\"bg-multi\",data_bg_multi_hidpi:\"bg-multi-hidpi\",data_bg_set:\"bg-set\",data_poster:\"poster\",class_applied:\"applied\",class_loading:\"loading\",class_loaded:\"loaded\",class_error:\"error\",class_entered:\"entered\",class_exited:\"exited\",unobserve_completed:!0,unobserve_entered:!1,cancel_on_exit:!0,callback_enter:null,callback_exit:null,callback_applied:null,callback_loading:null,callback_loaded:null,callback_error:null,callback_finish:null,callback_cancel:null,use_native:!1,restore_on_error:!1},c=function(t){return n({},r,t)},l=function(n,t){var e,i=\"LazyLoad::Initialized\",o=new n(t);try{e=new CustomEvent(i,{detail:{instance:o}})}catch(n){(e=document.createEvent(\"CustomEvent\")).initCustomEvent(i,!1,!1,{instance:o})}window.dispatchEvent(e)},u=\"src\",s=\"srcset\",d=\"sizes\",f=\"poster\",_=\"llOriginalAttrs\",g=\"data\",v=\"loading\",b=\"loaded\",m=\"applied\",p=\"error\",h=\"native\",E=\"data-\",I=\"ll-status\",y=function(n,t){return n.getAttribute(E+t)},k=function(n){return y(n,I)},w=function(n,t){return function(n,t,e){var i=\"data-ll-status\";null!==e?n.setAttribute(i,e):n.removeAttribute(i)}(n,0,t)},A=function(n){return w(n,null)},L=function(n){return null===k(n)},O=function(n){return k(n)===h},x=[v,b,m,p],C=function(n,t,e,i){n&&(void 0===i?void 0===e?n(t):n(t,e):n(t,e,i))},N=function(n,t){o?n.classList.add(t):n.className+=(n.className?\" \":\"\")+t},M=function(n,t){o?n.classList.remove(t):n.className=n.className.replace(new RegExp(\"(^|\\\\s+)\"+t+\"(\\\\s+|$)\"),\" \").replace(/^\\s+/,\"\").replace(/\\s+$/,\"\")},z=function(n){return n.llTempImage},T=function(n,t){if(t){var e=t._observer;e&&e.unobserve(n)}},R=function(n,t){n&&(n.loadingCount+=t)},G=function(n,t){n&&(n.toLoadCount=t)},j=function(n){for(var t,e=[],i=0;t=n.children[i];i+=1)\"SOURCE\"===t.tagName&&e.push(t);return e},D=function(n,t){var e=n.parentNode;e&&\"PICTURE\"===e.tagName&&j(e).forEach(t)},H=function(n,t){j(n).forEach(t)},V=[u],F=[u,f],B=[u,s,d],J=[g],P=function(n){return!!n[_]},S=function(n){return n[_]},U=function(n){return delete n[_]},$=function(n,t){if(!P(n)){var e={};t.forEach((function(t){e[t]=n.getAttribute(t)})),n[_]=e}},q=function(n,t){if(P(n)){var e=S(n);t.forEach((function(t){!function(n,t,e){e?n.setAttribute(t,e):n.removeAttribute(t)}(n,t,e[t])}))}},K=function(n,t,e){N(n,t.class_applied),w(n,m),e&&(t.unobserve_completed&&T(n,t),C(t.callback_applied,n,e))},Q=function(n,t,e){N(n,t.class_loading),w(n,v),e&&(R(e,1),C(t.callback_loading,n,e))},W=function(n,t,e){e&&n.setAttribute(t,e)},X=function(n,t){W(n,d,y(n,t.data_sizes)),W(n,s,y(n,t.data_srcset)),W(n,u,y(n,t.data_src))},Y={IMG:function(n,t){D(n,(function(n){$(n,B),X(n,t)})),$(n,B),X(n,t)},IFRAME:function(n,t){$(n,V),W(n,u,y(n,t.data_src))},VIDEO:function(n,t){H(n,(function(n){$(n,V),W(n,u,y(n,t.data_src))})),$(n,F),W(n,f,y(n,t.data_poster)),W(n,u,y(n,t.data_src)),n.load()},OBJECT:function(n,t){$(n,J),W(n,g,y(n,t.data_src))}},Z=[\"IMG\",\"IFRAME\",\"VIDEO\",\"OBJECT\"],nn=function(n,t){!t||function(n){return n.loadingCount>0}(t)||function(n){return n.toLoadCount>0}(t)||C(n.callback_finish,t)},tn=function(n,t,e){n.addEventListener(t,e),n.llEvLisnrs[t]=e},en=function(n,t,e){n.removeEventListener(t,e)},on=function(n){return!!n.llEvLisnrs},an=function(n){if(on(n)){var t=n.llEvLisnrs;for(var e in t){var i=t[e];en(n,e,i)}delete n.llEvLisnrs}},rn=function(n,t,e){!function(n){delete n.llTempImage}(n),R(e,-1),function(n){n&&(n.toLoadCount-=1)}(e),M(n,t.class_loading),t.unobserve_completed&&T(n,e)},cn=function(n,t,e){var i=z(n)||n;on(i)||function(n,t,e){on(n)||(n.llEvLisnrs={});var i=\"VIDEO\"===n.tagName?\"loadeddata\":\"load\";tn(n,i,t),tn(n,\"error\",e)}(i,(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_loaded),w(t,b),C(e.callback_loaded,t,i),o||nn(e,i)}(0,n,t,e),an(i)}),(function(o){!function(n,t,e,i){var o=O(t);rn(t,e,i),N(t,e.class_error),w(t,p),C(e.callback_error,t,i),e.restore_on_error&&q(t,B),o||nn(e,i)}(0,n,t,e),an(i)}))},ln=function(n,t,e){!function(n){return Z.indexOf(n.tagName)>-1}(n)?function(n,t,e){!function(n){n.llTempImage=document.createElement(\"IMG\")}(n),cn(n,t,e),function(n){P(n)||(n[_]={backgroundImage:n.style.backgroundImage})}(n),function(n,t,e){var i=y(n,t.data_bg),o=y(n,t.data_bg_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage='url(\"'.concat(r,'\")'),z(n).setAttribute(u,r),Q(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_multi),o=y(n,t.data_bg_multi_hidpi),r=a&&o?o:i;r&&(n.style.backgroundImage=r,K(n,t,e))}(n,t,e),function(n,t,e){var i=y(n,t.data_bg_set);if(i){var o=i.split(\"|\"),a=o.map((function(n){return\"image-set(\".concat(n,\")\")}));n.style.backgroundImage=a.join(),\"\"===n.style.backgroundImage&&(a=o.map((function(n){return\"-webkit-image-set(\".concat(n,\")\")})),n.style.backgroundImage=a.join()),K(n,t,e)}}(n,t,e)}(n,t,e):function(n,t,e){cn(n,t,e),function(n,t,e){var i=Y[n.tagName];i&&(i(n,t),Q(n,t,e))}(n,t,e)}(n,t,e)},un=function(n){n.removeAttribute(u),n.removeAttribute(s),n.removeAttribute(d)},sn=function(n){D(n,(function(n){q(n,B)})),q(n,B)},dn={IMG:sn,IFRAME:function(n){q(n,V)},VIDEO:function(n){H(n,(function(n){q(n,V)})),q(n,F),n.load()},OBJECT:function(n){q(n,J)}},fn=function(n,t){(function(n){var t=dn[n.tagName];t?t(n):function(n){if(P(n)){var t=S(n);n.style.backgroundImage=t.backgroundImage}}(n)})(n),function(n,t){L(n)||O(n)||(M(n,t.class_entered),M(n,t.class_exited),M(n,t.class_applied),M(n,t.class_loading),M(n,t.class_loaded),M(n,t.class_error))}(n,t),A(n),U(n)},_n=[\"IMG\",\"IFRAME\",\"VIDEO\"],gn=function(n){return n.use_native&&\"loading\"in HTMLImageElement.prototype},vn=function(n,t,e){n.forEach((function(n){return function(n){return n.isIntersecting||n.intersectionRatio>0}(n)?function(n,t,e,i){var o=function(n){return x.indexOf(k(n))>=0}(n);w(n,\"entered\"),N(n,e.class_entered),M(n,e.class_exited),function(n,t,e){t.unobserve_entered&&T(n,e)}(n,e,i),C(e.callback_enter,n,t,i),o||ln(n,e,i)}(n.target,n,t,e):function(n,t,e,i){L(n)||(N(n,e.class_exited),function(n,t,e,i){e.cancel_on_exit&&function(n){return k(n)===v}(n)&&\"IMG\"===n.tagName&&(an(n),function(n){D(n,(function(n){un(n)})),un(n)}(n),sn(n),M(n,e.class_loading),R(i,-1),A(n),C(e.callback_cancel,n,t,i))}(n,t,e,i),C(e.callback_exit,n,t,i))}(n.target,n,t,e)}))},bn=function(n){return Array.prototype.slice.call(n)},mn=function(n){return n.container.querySelectorAll(n.elements_selector)},pn=function(n){return function(n){return k(n)===p}(n)},hn=function(n,t){return function(n){return bn(n).filter(L)}(n||mn(t))},En=function(n,e){var o=c(n);this._settings=o,this.loadingCount=0,function(n,t){i&&!gn(n)&&(t._observer=new IntersectionObserver((function(e){vn(e,n,t)}),function(n){return{root:n.container===document?null:n.container,rootMargin:n.thresholds||n.threshold+\"px\"}}(n)))}(o,this),function(n,e){t&&(e._onlineHandler=function(){!function(n,t){var e;(e=mn(n),bn(e).filter(pn)).forEach((function(t){M(t,n.class_error),A(t)})),t.update()}(n,e)},window.addEventListener(\"online\",e._onlineHandler))}(o,this),this.update(e)};return En.prototype={update:function(n){var t,o,a=this._settings,r=hn(n,a);G(this,r.length),!e&&i?gn(a)?function(n,t,e){n.forEach((function(n){-1!==_n.indexOf(n.tagName)&&function(n,t,e){n.setAttribute(\"loading\",\"lazy\"),cn(n,t,e),function(n,t){var e=Y[n.tagName];e&&e(n,t)}(n,t),w(n,h)}(n,t,e)})),G(e,0)}(r,a,this):(o=r,function(n){n.disconnect()}(t=this._observer),function(n,t){t.forEach((function(t){n.observe(t)}))}(t,o)):this.loadAll(r)},destroy:function(){this._observer&&this._observer.disconnect(),t&&window.removeEventListener(\"online\",this._onlineHandler),mn(this._settings).forEach((function(n){U(n)})),delete this._observer,delete this._settings,delete this._onlineHandler,delete this.loadingCount,delete this.toLoadCount},loadAll:function(n){var t=this,e=this._settings;hn(n,e).forEach((function(n){T(n,t),ln(n,e,t)}))},restoreAll:function(){var n=this._settings;mn(n).forEach((function(t){fn(t,n)}))}},En.load=function(n,t){var e=c(t);ln(n,e)},En.resetStatus=function(n){A(n)},t&&function(n,t){if(t)if(t.length)for(var e,i=0;e=t[i];i+=1)l(n,e);else l(n,t)}(En,window.lazyLoadOptions),En}));\r\n","const activateInsurance = {\r\n updateOfferInitialized:false,\r\n constants: {\r\n \r\n },\r\n \r\n init: (activateInsuranceElement) => { \r\n\r\n const formElement = activateInsuranceElement.querySelector(\"form[data-createofferform]\");\r\n activateInsurance.onSubmitForm(formElement);\r\n \r\n },\r\n showSpinner: (show) => {\r\n\r\n const spinnerElement = document.querySelector(\"div[data-opportunitiesspinner]\");\r\n if (spinnerElement) {\r\n if (show) {\r\n spinnerElement.classList.remove(\"d-none\");\r\n spinnerElement.scrollIntoView();\r\n }\r\n else {\r\n spinnerElement.classList.add(\"d-none\");\r\n }\r\n }\r\n },\r\n showOpportunitiesHtml: (show, html) => {\r\n\r\n const opportunitiesElement = document.querySelector(\"div[data-opportunitiescontainer]\");\r\n if (opportunitiesElement) {\r\n if (show) {\r\n opportunitiesElement.innerHTML = html;\r\n opportunitiesElement.classList.remove(\"d-none\");\r\n }\r\n else {\r\n opportunitiesElement.classList.add(\"d-none\");\r\n opportunitiesElement.innerHTML = \"\";\r\n }\r\n }\r\n },\r\n onNumberOfPersonsChanged: (formElement) => {\r\n\r\n let numberOfPersonsElement = document.querySelector(\"select[id='activateinsurance--numberOfPersonsInHousehold']\");\r\n \r\n if (numberOfPersonsElement) {\r\n numberOfPersonsElement.addEventListener('change', (event) => {\r\n activateInsurance.getOffer(null, formElement); \r\n });\r\n }\r\n \r\n },\r\n onStartDateChange: (formElement) => {\r\n\r\n let startDateElement = document.querySelector(\"input[id='activateinsurance--startDate']\")\r\n\r\n if (startDateElement) {\r\n startDateElement.addEventListener('change', (event) => {\r\n activateInsurance.getOffer(null, formElement); \r\n });\r\n }\r\n },\r\n getOffer: (submitButton, formElement) => {\r\n\r\n activateInsurance.showOpportunitiesHtml(false, \"\");\r\n activateInsurance.showSpinner(true);\r\n \r\n (async () => {\r\n const response = await fetch(formElement.action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n ctxtItemId: site.constants.globals.ctxItemId,\r\n numberOfPersonsInHousehold: formElement.querySelector(\"select[id='activateinsurance--numberOfPersonsInHousehold']\").value,\r\n activateInsuranceStartDate: formElement.querySelector(\"input[id='activateinsurance--startDate']\").value\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n activateInsurance.showSpinner(false);\r\n activateInsurance.calculateTotalPrice();\r\n }\r\n else {\r\n const data = await response.json();\r\n activateInsurance.showSpinner(false);\r\n if (data.ok) {\r\n activateInsurance.showOpportunitiesHtml(true, data.html);\r\n activateInsurance.onOptionalCoverageChecked();\r\n activateInsurance.calculateTotalPrice();\r\n activateInsurance.onContinue();\r\n }\r\n\r\n }\r\n\r\n if (submitButton) {\r\n submitButton.disabled = false;\r\n }\r\n })();\r\n },\r\n\r\n onSubmitForm: (formElement) => {\r\n\r\n if (formElement) {\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n\r\n if (!activateInsurance.updateOfferInitialized) {\r\n activateInsurance.onNumberOfPersonsChanged(formElement);\r\n activateInsurance.onStartDateChange(formElement);\r\n activateInsurance.updateOfferInitialized = true;\r\n }\r\n\r\n let submitButton = formElement.querySelector(\"button[type='submit']\");\r\n if (submitButton) {\r\n\r\n submitButton.disabled = true;\r\n activateInsurance.getOffer(submitButton, formElement);\r\n }\r\n\r\n \r\n });\r\n }\r\n },\r\n onOptionalCoverageChecked: () => {\r\n const checkboxes = document.querySelectorAll(\"[data-optionalcoverage] input[type='checkbox'][data-coverage]\");\r\n if (checkboxes && checkboxes.length > 0) {\r\n\r\n checkboxes.forEach((element) => {\r\n element.addEventListener('change', (event) => {\r\n\r\n let summaryElement = document.querySelector(`[data-summary] div[data-coverage=\"${event.target.dataset.coverage}\"]`);\r\n if (summaryElement) {\r\n if (event.target.checked) {\r\n summaryElement.classList.remove(\"d-none\");\r\n }\r\n else {\r\n summaryElement.classList.add(\"d-none\");\r\n }\r\n }\r\n activateInsurance.calculateTotalPrice();\r\n });\r\n })\r\n }\r\n \r\n },\r\n calculateTotalPrice: () => {\r\n\r\n\r\n let totalPriceElement = document.querySelector(\"[data-totalpriceapi]\");\r\n if (totalPriceElement != null) {\r\n\r\n totalPriceElement.innerHTML = \"\";\r\n const coverages = new Array();\r\n const checkboxes = document.querySelectorAll(\"[data-optionalcoverage] input[type='checkbox'][data-coverage]\");\r\n if (checkboxes && checkboxes.length > 0) {\r\n\r\n checkboxes.forEach((element) => {\r\n\r\n if (element.checked) {\r\n coverages.push({ coverage: element.dataset.coveragename, price: element.dataset.invariantprice, coverageid: element.dataset.coverage });\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n (async () => {\r\n const response = await fetch(totalPriceElement.dataset.totalpriceapi, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n coverages: coverages, \r\n })\r\n });\r\n\r\n \r\n if (response.status !== 200) {\r\n \r\n }\r\n else {\r\n const data = await response.json();\r\n \r\n if (data.ok) {\r\n totalPriceElement.innerHTML = data.totalPrice;\r\n }\r\n\r\n }\r\n\r\n })();\r\n }\r\n },\r\n onContinue: () => {\r\n const formElement = document.getElementById(\"activateinsurance-form\");\r\n\r\n if (formElement) {\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n\r\n const coverages = new Array();\r\n const checkboxes = document.querySelectorAll(\"[data-optionalcoverage] input[type='checkbox'][data-coverage]\");\r\n if (checkboxes && checkboxes.length > 0) {\r\n\r\n checkboxes.forEach((element) => {\r\n\r\n if (element.checked) {\r\n coverages.push({ coverage: element.dataset.coveragename, price: element.dataset.invariantprice, coverageid: element.dataset.coverage });\r\n }\r\n });\r\n }\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.mypages.continuetoconfirmation, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n additionalCoverages: coverages,\r\n autogiroUrl: formElement.querySelector(\"[data-url]\").value,\r\n insuranceNumber: formElement.querySelector(\"[data-insurancenumber]\").value,\r\n firstname: document.querySelector(\"#firstname\").value,\r\n lastname: document.querySelector(\"#lastname\").value,\r\n personalNumber: document.querySelector(\"#personalNumber\").value,\r\n mail: document.querySelector(\"#mail\").value,\r\n phonenumber: document.querySelector(\"#phonenumber\").value,\r\n street: document.querySelector(\"#street\").value,\r\n zipcode: document.querySelector(\"#zipcode\").value,\r\n city: document.querySelector(\"#city\").value,\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n\r\n if (data.ok) {\r\n window.location = data.url;\r\n }\r\n }\r\n })();\r\n\r\n\r\n });\r\n }\r\n }\r\n \r\n \r\n \r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var activateInsuranceElement = document.querySelector(\"[data-activateinsurance]\");\r\n if (activateInsuranceElement != null) {\r\n activateInsurance.init(activateInsuranceElement);\r\n }\r\n});\r\n","const articlesList = {\r\n constants: {\r\n showAllValue: \"-1\", \r\n activeBtnClass: 'active',\r\n hiddenCssClass: 'd-none', \r\n paginationListItemLinkSelector: '.articleslist .pagination [data-pagelink]',\r\n articleListFilterButtons: document.querySelectorAll('.articleslist-filters button[data-articletagfilter]'),\r\n articleListFilterSelect: document.querySelector('.articleslist-filters select[data-articletagfilter]'),\r\n },\r\n articlesListContainer: document.querySelector('[data-articleslistcontainer]'),\r\n spinnerContainer: document.querySelector('[data-articlelistspinner]'),\r\n\r\n init: () => { \r\n \r\n articlesList.bindPager();\r\n articlesList.bindButtonFilter();\r\n articlesList.bindSelectFilter();\r\n },\r\n\r\n\r\n doSearch: (options) => {\r\n articlesList.toggleSpinner({ hide: false });\r\n articlesList.toggleResult({ hide: true });\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.articlesList, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({ \r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n page: options.page,\r\n featuredItem: articlesList.articlesListContainer.dataset.featatureditem,\r\n blockKey: articlesList.articlesListContainer.dataset.blockkey,\r\n currentPageUrl: articlesList.articlesListContainer.dataset.pageurl,\r\n articleTypes: articlesList.articlesListContainer.dataset.articletypes.split(','),\r\n articleTag: articlesList.getFilterValue()\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n articlesList.articlesListContainer.innerHTML = \"\";\r\n if (data.result.result.result) {\r\n articlesList.articlesListContainer.innerHTML = data.result.result.html;\r\n } \r\n }\r\n \r\n \r\n articlesList.bindPager();\r\n site.helpers.initLazyLoad();\r\n\r\n articlesList.toggleResult({ hide: false });\r\n articlesList.toggleSpinner({ hide: true });\r\n window.history.pushState(null, null, options.url);\r\n })();\r\n },\r\n bindPager: () => {\r\n articlesList.articlesListContainer.querySelectorAll(articlesList.constants.paginationListItemLinkSelector).forEach((element) => {\r\n element.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n articlesList.doSearch({ fromForm: true, page: event.target.dataset.pagelink, url: event.target.href });\r\n \r\n });\r\n });\r\n },\r\n bindSelectFilter: () => {\r\n if (articlesList.constants.articleListFilterSelect) {\r\n articlesList.constants.articleListFilterSelect.addEventListener('change', (event) => {\r\n event.preventDefault();\r\n articlesList.doSearch({ fromForm: true, page: 0 });\r\n });\r\n }\r\n }, \r\n bindButtonFilter: () => {\r\n if (articlesList.constants.articleListFilterButtons && articlesList.constants.articleListFilterButtons.length > 0) {\r\n articlesList.constants.articleListFilterButtons.forEach(filterButton => {\r\n filterButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n articlesList.updateButtonsState(event.target);\r\n articlesList.doSearch({ fromForm: true, page: 0 });\r\n })\r\n });\r\n }\r\n },\r\n getFilterValue: () => {\r\n if (articlesList.constants.articleListFilterSelect) {\r\n return articlesList.constants.articleListFilterSelect.value;\r\n }\r\n else if (articlesList.constants.articleListFilterButtons) {\r\n var selectedButton = [...articlesList.constants.articleListFilterButtons].filter(element => element.classList.contains(\"active\"));\r\n if (selectedButton && selectedButton.length > 0) {\r\n return selectedButton[0].dataset.articletagfilter;\r\n }\r\n }\r\n return articlesList.constants.showAllValue;\r\n },\r\n updateButtonsState: (btnClicked) => {\r\n\r\n articlesList.constants.articleListFilterButtons.forEach(filterButton => {\r\n filterButton.classList.remove(articlesList.constants.activeBtnClass);\r\n });\r\n\r\n btnClicked.classList.add(articlesList.constants.activeBtnClass);\r\n },\r\n toggleSpinner: (options) => {\r\n if (options.hide) {\r\n articlesList.spinnerContainer.classList.add(articlesList.constants.hiddenCssClass);\r\n }\r\n else {\r\n articlesList.spinnerContainer.classList.remove(articlesList.constants.hiddenCssClass);\r\n }\r\n },\r\n toggleResult: (options) => {\r\n if (options.hide) {\r\n articlesList.articlesListContainer.classList.add(articlesList.constants.hiddenCssClass);\r\n }\r\n else {\r\n articlesList.articlesListContainer.classList.remove(searchResult.constants.hiddenCssClass);\r\n }\r\n },\r\n\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('articleslist').length == 1) {\r\n articlesList.init();\r\n }\r\n});\r\n","const changePaymentAutogiro = {\r\n tinkModal: null,\r\n constants: {\r\n \r\n },\r\n \r\n init: (changePaymentAutogiroElement) => { \r\n \r\n const formElement = changePaymentAutogiroElement.querySelector(\"form[data-changepaymentautogiroform]\");\r\n changePaymentAutogiro.onSubmitForm(formElement);\r\n\r\n changePaymentAutogiro.onBankRadioSelectionChange();\r\n site.helpers.tink.callback = changePaymentAutogiro.onGetSelectedAccount;\r\n }, \r\n \r\n onSubmitForm: (formElement) => {\r\n\r\n if (formElement) {\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n\r\n let submitButton = formElement.querySelector(\"button[type='submit']\");\r\n if (submitButton) {\r\n\r\n submitButton.disabled = true;\r\n\r\n let accountnumber = \"\";\r\n let bank = \"\";\r\n\r\n const clearingNumberElement = formElement.querySelector(\"input[data-clearingnumber][required]\");\r\n if (clearingNumberElement) {\r\n accountnumber = clearingNumberElement.value;\r\n }\r\n accountnumber+=formElement.querySelector(\"input[data-accountnumber][required]\").value;\r\n\r\n const bankInputElement = formElement.querySelector(\"input[data-tink-bank][required]\");\r\n if (bankInputElement) {\r\n bank = bankInputElement.value;\r\n }\r\n else {\r\n bank = formElement.querySelector(\"#selectbank\").value;\r\n }\r\n\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.mypages.changepaymentautogirosubmit, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n successLandingPage: formElement.querySelector(\"input[id='successLandingPage']\").value,\r\n failureLandingPage: formElement.querySelector(\"input[id='failureLandingPage']\").value,\r\n insurancenumber: formElement.querySelector(\"input[id='insurancenumber']\").value,\r\n firstname: formElement.querySelector(\"input[id='firstname']\").value,\r\n lastname: formElement.querySelector(\"input[id='lastname']\").value,\r\n personalNumber: formElement.querySelector(\"input[id='personalNumber']\").value,\r\n mail: formElement.querySelector(\"input[id='mail']\").value,\r\n phonenumber: formElement.querySelector(\"input[id='phonenumber']\").value,\r\n street: formElement.querySelector(\"input[id='street']\").value,\r\n zipcode: formElement.querySelector(\"input[id='zipcode']\").value,\r\n city: formElement.querySelector(\"input[id='city']\").value,\r\n accountnumber: accountnumber,\r\n bank: bank\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n //console.log(data);\r\n window.location.href = data.bankIdSignUrl;\r\n }\r\n\r\n\r\n submitButton.disabled = false;\r\n \r\n\r\n })();\r\n\r\n }\r\n\r\n \r\n });\r\n }\r\n },\r\n onGetSelectedAccount: (data) => {\r\n\r\n if (data) { \r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.mypages.getselectedaccount, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n code: data \r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n // console.log(data);\r\n\r\n const accountNumberElement = document.querySelector(\"input[data-accountnumber][required]\"); \r\n const bankElement = document.querySelector(\"input[data-tink-bank]\");\r\n const confirmElement = document.querySelector(\"div[data-tink-confirm]\");\r\n accountNumberElement.value = data.accountNumber; \r\n bankElement.value = data.bank;\r\n confirmElement.innerHTML = `${confirmElement.dataset.label}${data.bank} ${data.accountNumberDisplay}`;\r\n confirmElement.classList.remove(\"d-none\");\r\n site.helpers.tink.modal.hide();\r\n \r\n }\r\n })();\r\n }\r\n },\r\n onBankRadioSelectionChange: () => {\r\n document.querySelectorAll(\"input[name='bank-accountradio']\").forEach((input) => {\r\n input.addEventListener('change', (event) => {\r\n\r\n const id = event.target.id;\r\n\r\n const divs = document.querySelectorAll(\"div[data-bank-accountradio]\");\r\n if (divs && divs.length > 0) {\r\n divs.forEach((element) => {\r\n element.classList.add(\"d-none\");\r\n\r\n let inputs = element.querySelectorAll(\"input\");\r\n inputs.forEach((input) => {\r\n input.removeAttribute(\"required\");\r\n });\r\n\r\n let selects = element.querySelectorAll(\"select\");\r\n selects.forEach((select) => {\r\n select.removeAttribute(\"required\");\r\n });\r\n });\r\n\r\n const theDiv = document.querySelector(`div[data-bank-accountradio=\"${id}\"]`);\r\n if (theDiv) {\r\n theDiv.classList.remove(\"d-none\");\r\n let inputs = theDiv.querySelectorAll(\"input\");\r\n inputs.forEach((input) => {\r\n input.setAttribute(\"required\", \"\");\r\n });\r\n\r\n let selects = theDiv.querySelectorAll(\"select\");\r\n selects.forEach((select) => {\r\n select.setAttribute(\"required\", \"\");\r\n });\r\n }\r\n }\r\n\r\n });\r\n });\r\n } \r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var changePaymentAutogiroElement = document.querySelector(\"[data-changepaymentautogiro]\");\r\n if (changePaymentAutogiroElement != null) {\r\n changePaymentAutogiro.init(changePaymentAutogiroElement);\r\n }\r\n});\r\n","const confirmAutogiro = {\r\n tinkModal: null,\r\n constants: {\r\n \r\n },\r\n \r\n init: (confirmAutogiroElement) => { \r\n \r\n const formElement = confirmAutogiroElement.querySelector(\"form[data-confirmautogiroform]\");\r\n confirmAutogiro.onSubmitForm(formElement);\r\n confirmAutogiro.onBankRadioSelectionChange();\r\n site.helpers.tink.callback = confirmAutogiro.onGetSelectedAccount;\r\n },\r\n \r\n \r\n onSubmitForm: (formElement) => {\r\n\r\n if (formElement) {\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n\r\n let submitButton = formElement.querySelector(\"button[type='submit']\");\r\n if (submitButton) {\r\n\r\n submitButton.disabled = true;\r\n\r\n let accountnumber = \"\";\r\n let bank = \"\";\r\n\r\n const clearingNumberElement = formElement.querySelector(\"input[data-clearingnumber][required]\");\r\n if (clearingNumberElement) {\r\n accountnumber = clearingNumberElement.value;\r\n }\r\n accountnumber+=formElement.querySelector(\"input[data-accountnumber][required]\").value;\r\n\r\n const bankInputElement = formElement.querySelector(\"input[data-tink-bank][required]\");\r\n if (bankInputElement) {\r\n bank = bankInputElement.value;\r\n }\r\n else {\r\n bank = formElement.querySelector(\"#selectbank\").value;\r\n }\r\n\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.mypages.confirmautogirosubmit, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n thankYouPage: formElement.querySelector(\"input[id='thankYouPage']\").value,\r\n firstname: formElement.querySelector(\"input[id='firstname']\").value,\r\n lastname: formElement.querySelector(\"input[id='lastname']\").value,\r\n personalNumber: formElement.querySelector(\"input[id='personalNumber']\").value,\r\n mail: formElement.querySelector(\"input[id='mail']\").value,\r\n phonenumber: formElement.querySelector(\"input[id='phonenumber']\").value,\r\n street: formElement.querySelector(\"input[id='street']\").value,\r\n zipcode: formElement.querySelector(\"input[id='zipcode']\").value,\r\n city: formElement.querySelector(\"input[id='city']\").value,\r\n accountnumber: accountnumber,\r\n bank: bank\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n //console.log(data);\r\n window.location.href = data.bankIdSignUrl;\r\n }\r\n\r\n\r\n submitButton.disabled = false;\r\n \r\n\r\n })();\r\n\r\n }\r\n\r\n \r\n });\r\n }\r\n },\r\n onGetSelectedAccount: (data) => {\r\n\r\n if (data) { \r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.mypages.getselectedaccount, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: JSON.stringify({\r\n code: data, \r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n \r\n const accountNumberElement = document.querySelector(\"input[data-accountnumber][required]\"); \r\n const bankElement = document.querySelector(\"input[data-tink-bank]\");\r\n const confirmElement = document.querySelector(\"div[data-tink-confirm]\");\r\n accountNumberElement.value = data.accountNumber; \r\n bankElement.value = data.bank;\r\n confirmElement.innerHTML = `${confirmElement.dataset.label}${data.bank} ${data.accountNumberDisplay}`;\r\n confirmElement.classList.remove(\"d-none\");\r\n site.helpers.tink.modal.hide();\r\n \r\n }\r\n })();\r\n }\r\n },\r\n onBankRadioSelectionChange: () => {\r\n document.querySelectorAll(\"input[name='bank-accountradio']\").forEach((input) => {\r\n input.addEventListener('change', (event) => {\r\n\r\n const id = event.target.id;\r\n\r\n const divs = document.querySelectorAll(\"div[data-bank-accountradio]\");\r\n if (divs && divs.length > 0) {\r\n divs.forEach((element) => {\r\n element.classList.add(\"d-none\");\r\n\r\n let inputs = element.querySelectorAll(\"input\");\r\n inputs.forEach((input) => {\r\n input.removeAttribute(\"required\");\r\n });\r\n\r\n let selects = element.querySelectorAll(\"select\");\r\n selects.forEach((select) => {\r\n select.removeAttribute(\"required\");\r\n });\r\n });\r\n\r\n const theDiv = document.querySelector(`div[data-bank-accountradio=\"${id}\"]`);\r\n if (theDiv) {\r\n theDiv.classList.remove(\"d-none\");\r\n let inputs = theDiv.querySelectorAll(\"input\");\r\n inputs.forEach((input) => {\r\n input.setAttribute(\"required\", \"\");\r\n });\r\n\r\n let selects = theDiv.querySelectorAll(\"select\");\r\n selects.forEach((select) => {\r\n select.setAttribute(\"required\", \"\");\r\n });\r\n }\r\n }\r\n\r\n });\r\n });\r\n } \r\n \r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var confirmautogiroElement = document.querySelector(\"[data-confirmautogiro]\");\r\n if (confirmautogiroElement != null) {\r\n confirmAutogiro.init(confirmautogiroElement);\r\n }\r\n});\r\n","const contactForm = {\r\n constants: {\r\n showAllValue: \"-1\",\r\n hiddenCssClass: 'd-none',\r\n formSelector: \"form\",\r\n confirmationSelector: \"[data-contactformconfirmation]\",\r\n backToFormSelector: \"[data-backtocontactform]\",\r\n submitButtonTextSelector: \"[data-submittext]\",\r\n submitButtonSpinnerSelector: \"[data-submitspinner]\",\r\n submitButtonSelector: \"button[type='submit']\",\r\n\r\n formTopicSelector: \"select[data-topic]\",\r\n formQuestionSelector: \"textarea[data-question]\",\r\n formNameSelector: \"input[data-name]\",\r\n formEmailSelector: \"input[data-email]\",\r\n formConsentSelector: \"input[data-consent]\",\r\n\r\n\r\n },\r\n \r\n init: (contactFormElement) => { \r\n const formElement = contactFormElement.querySelector(contactForm.constants.formSelector);\r\n const confirmationElement = contactFormElement.querySelector(contactForm.constants.confirmationSelector);\r\n\r\n\r\n contactForm.initHeight(formElement, confirmationElement);\r\n contactForm.onSubmitForm(formElement, confirmationElement);\r\n contactForm.onBackToForm(formElement, confirmationElement);\r\n \r\n },\r\n initHeight: (formElement, confirmationElement) => {\r\n if (formElement && confirmationElement) {\r\n\r\n var clientHeight = formElement.clientHeight;\r\n confirmationElement.style.minHeight = `${clientHeight}px`;\r\n }\r\n },\r\n onBackToForm: (formElement, confirmationElement) => {\r\n\r\n if (formElement && confirmationElement) {\r\n\r\n const link = confirmationElement.querySelector(contactForm.constants.backToFormSelector);\r\n if (link) {\r\n link.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n formElement.classList.remove(contactForm.constants.hiddenCssClass);\r\n confirmationElement.classList.add(contactForm.constants.hiddenCssClass);\r\n });\r\n }\r\n }\r\n },\r\n onCleanupForm: (formElement) => {\r\n let topicSelect = formElement.querySelector(contactForm.constants.formTopicSelector);\r\n let questionInput = formElement.querySelector(contactForm.constants.formQuestionSelector);\r\n let nameInput = formElement.querySelector(contactForm.constants.formNameSelector);\r\n let emailInput = formElement.querySelector(contactForm.constants.formEmailSelector);\r\n let consentCheck = formElement.querySelector(contactForm.constants.formConsentSelector);\r\n\r\n if (topicSelect) {\r\n topicSelect.selectedIndex = 0;\r\n }\r\n if (questionInput) {\r\n questionInput.value=\"\";\r\n }\r\n if (nameInput) {\r\n nameInput.value = \"\";\r\n }\r\n if (emailInput) {\r\n emailInput.value = \"\";\r\n }\r\n if (consentCheck) {\r\n consentCheck.checked = false;\r\n }\r\n\r\n },\r\n onSubmitForm: (formElement, confirmationElement) => {\r\n\r\n if (formElement && confirmationElement) {\r\n\r\n let spinner = formElement.querySelector(contactForm.constants.submitButtonSpinnerSelector);\r\n let buttonText = formElement.querySelector(contactForm.constants.submitButtonTextSelector);\r\n let submitButton = formElement.querySelector(contactForm.constants.submitButtonSelector);\r\n\r\n\r\n\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n submitButton.disabled = true;\r\n buttonText.classList.add(contactForm.constants.hiddenCssClass);\r\n spinner.classList.remove(contactForm.constants.hiddenCssClass);\r\n\r\n let topicSelect = formElement.querySelector(contactForm.constants.formTopicSelector);\r\n let questionInput = formElement.querySelector(contactForm.constants.formQuestionSelector);\r\n let nameInput = formElement.querySelector(contactForm.constants.formNameSelector);\r\n let emailInput = formElement.querySelector(contactForm.constants.formEmailSelector);\r\n\r\n (async () => {\r\n const response = await fetch(formElement.action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n email: emailInput?.value,\r\n topic: topicSelect?.value,\r\n question: questionInput?.value,\r\n name: nameInput?.value,\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n contactForm.onCleanupForm(formElement);\r\n formElement.classList.add(contactForm.constants.hiddenCssClass);\r\n confirmationElement.classList.remove(contactForm.constants.hiddenCssClass);\r\n\r\n const data = await response.json();\r\n //articlesList.articlesListContainer.innerHTML = \"\";\r\n //if (data.result.result.result) {\r\n // articlesList.articlesListContainer.innerHTML = data.result.result.html;\r\n //}\r\n }\r\n\r\n \r\n submitButton.disabled = false;\r\n buttonText.classList.remove(contactForm.constants.hiddenCssClass);\r\n spinner.classList.add(contactForm.constants.hiddenCssClass);\r\n })();\r\n });\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var contactForms = document.querySelectorAll(\"[data-contactform]\");\r\n if (contactForms != null && contactForms.length > 0) {\r\n contactForms.forEach((contactFormElement) => {\r\n contactForm.init(contactFormElement);\r\n });\r\n }\r\n});\r\n","const contactList = {\r\n constants: {\r\n showAllValue : \"-1\",\r\n hiddenCssClass: 'contactList-contactGroup-hidden',\r\n activeBtnClass: 'active',\r\n contactFilterButtons: document.querySelectorAll('.contactList-filters button[data-contactgroupfilter]'),\r\n contactFilterSelect: document.querySelector('.contactList-filters select[data-contactgroupfilter]'),\r\n contactGroups: document.querySelectorAll('[data-contactgroup]'),\r\n },\r\n init: () => {\r\n\r\n if (contactList.constants.contactFilterButtons && contactList.constants.contactFilterButtons.length>0) {\r\n contactList.constants.contactFilterButtons.forEach(filterButton => {\r\n filterButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n contactList.doFilterFromButtons({ btnClicked: event.target });\r\n })\r\n });\r\n }\r\n if (contactList.constants.contactFilterSelect) {\r\n contactList.constants.contactFilterSelect.addEventListener('change', (event) => {\r\n event.preventDefault();\r\n contactList.doFilterFromSelect({ selectedValue: event.target.value });\r\n });\r\n }\r\n \r\n },\r\n doFilterFromButtons: (options) => {\r\n contactList.doFilterFromSelectedTagValue(options.btnClicked.dataset.contactgroupfilter);\r\n contactList.updateButtonsState(options.btnClicked);\r\n },\r\n doFilterFromSelect: (options) => {\r\n contactList.doFilterFromSelectedTagValue(options.selectedValue);\r\n },\r\n doFilterFromSelectedTagValue: (tagValue) => {\r\n\r\n if (tagValue == contactList.constants.showAllValue) {\r\n contactList.showAllContacts();\r\n }\r\n else {\r\n\r\n contactList.constants.contactGroups.forEach(contactGroup => {\r\n\r\n if (contactGroup.dataset.contactgroup == tagValue) {\r\n contactGroup.classList.remove(contactList.constants.hiddenCssClass);\r\n }\r\n else {\r\n contactGroup.classList.add(contactList.constants.hiddenCssClass);\r\n }\r\n });\r\n }\r\n\r\n },\r\n showAllContacts: () => {\r\n contactList.constants.contactGroups.forEach(contactGroup => {\r\n contactGroup.classList.remove(contactList.constants.hiddenCssClass); \r\n });\r\n\r\n },\r\n updateButtonsState: (btnClicked) => {\r\n\r\n contactList.constants.contactFilterButtons.forEach(filterButton => {\r\n filterButton.classList.remove(contactList.constants.activeBtnClass);\r\n });\r\n\r\n btnClicked.classList.add(contactList.constants.activeBtnClass);\r\n }\r\n\r\n \r\n\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => { \r\n contactList.init(); \r\n});\r\n","const advanceguaranteeInsuranceForm = {\r\n constants: {\r\n isValidClass: \"is-valid\",\r\n isInValidClass: \"is-invalid\",\r\n hiddenCssClass: 'd-none',\r\n confirmationSelector: \"[data-formconfirmation]\",\r\n deleteIconHtml: \"\"\r\n\r\n },\r\n init: (id) => {\r\n let formElement = document.getElementById(id);\r\n\r\n //const confirmationElement = document.querySelector(`[data-flexibleformconfirmation='${id}']`);\r\n\r\n //hiddenDefectsForm.initHeight(formElement, confirmationElement);\r\n advanceguaranteeInsuranceForm.onSubmitForm(formElement);\r\n advanceguaranteeInsuranceForm.onSubmitProducers(formElement);\r\n advanceguaranteeInsuranceForm.onSubmitRepayment(formElement);\r\n advanceguaranteeInsuranceForm.onCopyButtonsClick(formElement);\r\n advanceguaranteeInsuranceForm.onNegitiatorCheckClick(formElement);\r\n advanceguaranteeInsuranceForm.onShowPreviewModal(formElement);\r\n advanceguaranteeInsuranceForm.onFileInputChange(formElement);\r\n\r\n\r\n },\r\n onFileInputChange: (form) => {\r\n const fileInputs = form.querySelectorAll(`input[type='file']`);\r\n if (fileInputs && fileInputs.length > 0) {\r\n fileInputs.forEach((input) => {\r\n\r\n let previewElement = form.querySelector(`[file-preview='${input.id}']`);\r\n if (previewElement) {\r\n input.addEventListener(\"change\", (event) => {\r\n\r\n let html = \"\";\r\n if (event.target.files && event.target.files.length > 0) {\r\n\r\n let filenames = new Array();\r\n for (f = 0; f < event.target.files.length; f++) {\r\n filenames.push(event.target.files[f].name);\r\n }\r\n \r\n html = filenames.join(\"
\");\r\n }\r\n previewElement.innerHTML = html;\r\n });\r\n }\r\n \r\n });\r\n }\r\n },\r\n onCopyButtonsClick: (form) => {\r\n const copyButtons = form.querySelectorAll(`[data-copy-from][data-copy-to]`);\r\n if (copyButtons && copyButtons.length > 0) {\r\n copyButtons.forEach((btn) => {\r\n\r\n btn.addEventListener(\"click\", () => {\r\n var fromElement = document.querySelector(`#${btn.dataset.copyFrom}`);\r\n var toElement = document.querySelector(`#${btn.dataset.copyTo}`);\r\n\r\n toElement.value = fromElement.value;\r\n });\r\n });\r\n }\r\n },\r\n onNegitiatorCheckClick: (form) => {\r\n const checkbox = form.querySelector(\"#negotiator-check\");\r\n const containers = document.querySelectorAll(\"[data-negotiatiorcontainer]\");\r\n if (checkbox && containers) {\r\n \r\n\r\n checkbox.addEventListener(\"click\", (event) => {\r\n if (event.target.checked) {\r\n containers.forEach((container) => {\r\n container.classList.remove(\"d-none\");\r\n });\r\n \r\n }\r\n else {\r\n containers.forEach((container) => {\r\n container.classList.add(\"d-none\");\r\n\r\n let inputs = container.querySelectorAll(\"input\");\r\n inputs.forEach((input) => {\r\n input.value = \"\";\r\n });\r\n }); \r\n }\r\n });\r\n \r\n }\r\n },\r\n onShowPreviewModal: (formElement) => {\r\n\r\n var modalElement = document.querySelector(`.modal .advanceguaranteeinsurancePreview[data-advanceguaranteeinsuranceformid='${formElement.id}']`).closest(\".modal\");\r\n if (modalElement) {\r\n modalElement.addEventListener('show.bs.modal', function (event) {\r\n\r\n var labels = modalElement.querySelectorAll(\"[data-for]\");\r\n if (labels && labels.length > 0) {\r\n labels.forEach((label) => {\r\n\r\n var forDataValue = label.dataset.for;\r\n\r\n if (forDataValue) {\r\n var forElement = document.querySelector(`#${forDataValue}`);\r\n\r\n if (forElement == null) {\r\n forElement = document.querySelector(`[name='${forDataValue}']`);\r\n }\r\n if (forElement == null) {\r\n forElement = document.querySelector(`[${forDataValue}]`);\r\n }\r\n\r\n if (forElement) {\r\n\r\n var createElement = false;\r\n var previewElement = document.querySelector(`[data-previewfor='${forDataValue}']`);\r\n\r\n if (previewElement == null) {\r\n\r\n if (forElement.tagName == \"UL\") {\r\n previewElement = label;\r\n }\r\n else {\r\n previewElement = document.createElement(\"div\");\r\n createElement = true;\r\n }\r\n \r\n }\r\n\r\n previewElement.innerHTML = forElement.value;\r\n\r\n if (forElement.tagName == \"UL\") {\r\n\r\n previewElement.innerHTML = forElement.innerHTML; \r\n }\r\n\r\n if (forElement.tagName == \"SELECT\") {\r\n\r\n if (forElement.dataset.visible == \"true\" || forElement.dataset.visible == undefined) {\r\n if (forElement.selectedIndex > 0) {\r\n previewElement.innerHTML = forElement.options[forElement.selectedIndex].text;\r\n }\r\n }\r\n else\r\n previewElement.innerHTML = \"\";\r\n }\r\n else if (forElement.tagName == \"INPUT\") {\r\n var inputType = forElement.getAttribute(\"type\");\r\n if (inputType == \"radio\") {\r\n var radioElements = document.querySelectorAll(`[name='${forDataValue}']`);\r\n\r\n if (radioElements && radioElements.length > 0) {\r\n\r\n radioElements.forEach((radioElement) => {\r\n if (radioElement.checked) {\r\n var labelForRadio = document.querySelector(`label[for='${radioElement.id}']`);\r\n if (labelForRadio) {\r\n previewElement.innerHTML = labelForRadio.innerHTML;\r\n }\r\n\r\n }\r\n });\r\n }\r\n }\r\n if (inputType == \"checkbox\") {\r\n\r\n if (forElement.checked) {\r\n previewElement.innerHTML = \"Ja\";\r\n }\r\n else {\r\n previewElement.innerHTML = \"Nej\";\r\n }\r\n }\r\n else if (inputType == \"file\") {\r\n var filenames = new Array();\r\n if (forElement.files && forElement.files.length > 0) {\r\n for (f = 0; f < forElement.files.length; f++) {\r\n filenames.push(forElement.files[f].name);\r\n }\r\n }\r\n previewElement.innerHTML = filenames.join(\"
\");\r\n }\r\n }\r\n\r\n previewElement.classList.add(\"fw-light\");\r\n previewElement.dataset.previewfor = forDataValue;\r\n\r\n if (createElement) {\r\n label.after(previewElement);\r\n }\r\n }\r\n }\r\n\r\n });\r\n }\r\n });\r\n }\r\n\r\n },\r\n cleanupAttachedFiles: (form) => {\r\n const cleanUpButtons = form.querySelectorAll(`[data-cleanupattachements]`);\r\n if (cleanUpButtons && cleanUpButtons.length > 0) {\r\n cleanUpButtons.forEach((btn) => {\r\n\r\n var fieldset = btn.closest(\"fieldset\");\r\n if (fieldset) {\r\n btn.addEventListener(\"click\", (e) => {\r\n var elements = fieldset.querySelectorAll(\"input[type='file']\");\r\n if (elements && elements.length > 0) {\r\n elements.forEach((element) => {\r\n element.value = \"\";\r\n element.classList.remove(hiddenDefectsForm.constants.isInValidClass);\r\n element.classList.remove(hiddenDefectsForm.constants.isValidClass);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n onSubmitProducers: (formElement) => {\r\n\r\n let producersForm = document.getElementById(\"producersform\");\r\n let producersContainer = formElement.querySelector(\"[data-producerscontainer]\");\r\n\r\n\r\n if (producersForm && producersContainer) {\r\n let nameElement = producersContainer.querySelector(\"#partiesarea-producername\");\r\n let orgnumberElement = producersContainer.querySelector(\"#partiesarea-producerorgnumber\");\r\n\r\n if (nameElement && orgnumberElement) {\r\n\r\n let addedProducersContainer = producersContainer.querySelector(\"[data-addedproducers]\");\r\n\r\n \r\n producersForm.addEventListener(\"submit\", (e) => {\r\n e.preventDefault();\r\n let orgnumberValue = orgnumberElement.value;\r\n let nameValue = nameElement.value;\r\n\r\n if (addedProducersContainer.querySelectorAll(\"li\").length < 11) {\r\n if (orgnumberValue.length > 0 || nameValue.length > 0) {\r\n\r\n\r\n let addedElement = document.createElement(\"li\");\r\n addedElement.setAttribute(\"class\", \"d-flex align-items-center justify-content-between mb-2 \");\r\n\r\n let addedButton = document.createElement(\"button\");\r\n addedButton.setAttribute(\"type\", \"button\");\r\n addedButton.setAttribute(\"class\", \"btn btn-sm btn-secondary ms-3\");\r\n addedButton.innerHTML = advanceguaranteeInsuranceForm.constants.deleteIconHtml;\r\n\r\n let addedDiv = document.createElement(\"div\");\r\n \r\n addedDiv.setAttribute(\"class\", \"mr-auto\");\r\n addedDiv.innerHTML = `${nameValue} ${orgnumberValue}`.trim();\r\n addedDiv.dataset.cv = addedDiv.innerHTML;\r\n\r\n addedElement.appendChild(addedDiv);\r\n addedElement.appendChild(addedButton);\r\n\r\n addedButton.addEventListener(\"click\", (event) => {\r\n var toRemove = event.target.closest(\"li\");\r\n if (toRemove) {\r\n toRemove.remove();\r\n }\r\n });\r\n\r\n addedProducersContainer.appendChild(addedElement);\r\n\r\n orgnumberElement.value = \"\";\r\n nameElement.value = \"\";\r\n }\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n },\r\n onSubmitRepayment: (formElement) => {\r\n\r\n let repaymentForm = document.getElementById(\"repaymentform\");\r\n let repaymentContainer = formElement.querySelector(\"[data-repaymentcontainer]\");\r\n\r\n\r\n if (repaymentForm && repaymentContainer) {\r\n let nameElement = repaymentContainer.querySelector(\"#repayment-repaymentname\");\r\n let orgnumberElement = repaymentContainer.querySelector(\"#repayment-repaymentorgnumber\");\r\n\r\n if (nameElement && orgnumberElement) {\r\n\r\n let addedRepaymentContainer = repaymentContainer.querySelector(\"[data-addedrepayment]\");\r\n\r\n repaymentForm.addEventListener(\"submit\", (e) => {\r\n e.preventDefault();\r\n let orgnumberValue = orgnumberElement.value;\r\n let nameValue = nameElement.value;\r\n\r\n if (addedRepaymentContainer.querySelectorAll(\"li\").length < 11) {\r\n if (orgnumberValue.length > 0 || nameValue.length > 0) {\r\n\r\n let addedElement = document.createElement(\"li\");\r\n addedElement.setAttribute(\"class\", \"d-flex align-items-center justify-content-between mb-2 \");\r\n\r\n let addedButton = document.createElement(\"button\");\r\n addedButton.setAttribute(\"type\", \"button\");\r\n addedButton.setAttribute(\"class\", \"btn btn-sm btn-secondary ms-3\");\r\n addedButton.innerHTML = advanceguaranteeInsuranceForm.constants.deleteIconHtml;\r\n\r\n let addedDiv = document.createElement(\"div\");\r\n addedDiv.setAttribute(\"class\", \"mr-auto\");\r\n addedDiv.innerHTML = `${nameValue} ${orgnumberValue}`.trim();\r\n addedDiv.dataset.cv = addedDiv.innerHTML;\r\n\r\n addedElement.appendChild(addedDiv);\r\n addedElement.appendChild(addedButton);\r\n\r\n addedButton.addEventListener(\"click\", (event) => {\r\n var toRemove = event.target.closest(\"li\");\r\n if (toRemove) {\r\n toRemove.remove();\r\n }\r\n });\r\n addedRepaymentContainer.appendChild(addedElement);\r\n\r\n orgnumberElement.value = \"\";\r\n nameElement.value = \"\";\r\n }\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n },\r\n onSubmitForm: (formElement) => {\r\n\r\n if (formElement) {\r\n\r\n let spinner = formElement.querySelector(\"[data-submitspinner]\");\r\n let submitButton = formElement.querySelector(\"[type='submit']\");\r\n \r\n \r\n\r\n\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n submitButton.disabled = true;\r\n\r\n spinner.classList.toggle(\"d-none\");\r\n \r\n\r\n let contactemail = formElement.querySelector(\"input[data-contactemail]\").value\r\n\r\n const formData = new FormData();\r\n\r\n var fileElements = formElement.querySelectorAll(\"[type='file']\")\r\n\r\n if (fileElements && fileElements.length > 0) {\r\n fileElements.forEach((fileElement) => {\r\n if (fileElement.files.length > 0) {\r\n\r\n\r\n for (let i = 0; i < fileElement.files.length; i += 1) {\r\n const file = fileElement.files[i];\r\n formData.append(\"file\", file);\r\n }\r\n\r\n\r\n }\r\n })\r\n }\r\n var arr = new Array();\r\n var fieldsets = formElement.querySelectorAll(\"fieldset\");\r\n if (fieldsets && fieldsets.length > 0) {\r\n\r\n fieldsets.forEach((fieldset) => {\r\n\r\n var legend = fieldset.querySelector(\"legend\");\r\n var data = { legend: legend.innerHTML, fields: [] };\r\n var inputElements = fieldset.querySelectorAll(\"input, textarea, select\");\r\n if (inputElements && inputElements.length > 0) {\r\n\r\n var handledRadios = new Array();\r\n inputElements.forEach((element) => {\r\n\r\n var notincluded = element.dataset.notincluded;\r\n\r\n if (notincluded == null) {\r\n var value = element.value;\r\n\r\n var type = element.getAttribute(\"type\");\r\n\r\n if (\"checkbox\" === type) {\r\n value = \"Nej\";\r\n if (element.checked) {\r\n value = \"Ja\";\r\n }\r\n if (element.dataset.consent == \"true\") {\r\n let consentContentElement = fieldset.querySelector(\"div[data-consentcontent]\");\r\n if (consentContentElement) {\r\n value = `${value}
${consentContentElement.innerHTML}`\r\n }\r\n }\r\n }\r\n else if (\"radio\" == type) {\r\n value = \"\";\r\n if (handledRadios.indexOf(element.name) < 0) {\r\n handledRadios.push(element.name);\r\n var radioElements = document.querySelectorAll(`[name='${element.name}']`);\r\n\r\n if (radioElements && radioElements.length > 0) {\r\n\r\n radioElements.forEach((radioElement) => {\r\n if (radioElement.checked) {\r\n element = radioElement;\r\n var labelForRadio = document.querySelector(`label[for='${radioElement.id}']`);\r\n if (labelForRadio) {\r\n value = labelForRadio.innerHTML;\r\n }\r\n\r\n }\r\n });\r\n }\r\n }\r\n }\r\n else if (\"file\" == type) {\r\n if (element.files.length > 0) {\r\n var filesArr = new Array();\r\n for (let i = 0; i < element.files.length; i += 1) {\r\n const file = element.files[i];\r\n filesArr.push(file.name);\r\n }\r\n if (filesArr.length > 0) {\r\n value = filesArr.join();\r\n }\r\n }\r\n }\r\n\r\n\r\n if (value && value.length > 0) {\r\n var label = formElement.querySelector(`[for=\"${element.id}\"]`);\r\n if (label) {\r\n data.fields.push({ v: value, l: label.innerHTML, t: element.dataset.formtype });\r\n }\r\n else if (\"SELECT\" == element.tagName) {\r\n value = element.options[element.selectedIndex].text;\r\n\r\n if (element.dataset.visible == \"true\" || element.dataset.visible == undefined) {\r\n data.fields.push({ v: value, l: \"\", t: element.dataset.formtype });\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n var containerAttrValue = element.dataset.container;\r\n if (containerAttrValue) {\r\n var wrapperElement = formElement.querySelector(`[${containerAttrValue}]`);\r\n if (wrapperElement) {\r\n let valueItems = wrapperElement.querySelectorAll(\"[data-cv]\");\r\n if (valueItems && valueItems.length > 0) {\r\n var cvaluesArr = new Array();\r\n valueItems.forEach((vitem) => {\r\n cvaluesArr.push(vitem.innerHTML);\r\n });\r\n data.fields.push({ v: cvaluesArr.join(\"
\"), l: \"\", t: \"\" });\r\n }\r\n }\r\n }\r\n \r\n }\r\n \r\n });\r\n arr.push(data);\r\n\r\n }\r\n });\r\n }\r\n\r\n //consent\r\n let consentInput = formElement.querySelector(\"[data-consent]\");\r\n let consentText = formElement.querySelector(`[for='${consentInput.id}']`).innerHTML;\r\n let consentContentElement = formElement.querySelector(\"div[data-consentcontent]\");\r\n\r\n var consentData = { legend: \"Consent\", fields: [] };\r\n\r\n consentData.fields.push({ v: `Ja
${consentContentElement.innerHTML}`, l: consentText, t: \"\" });\r\n arr.push(consentData);\r\n\r\n if (arr.length > 0) {\r\n formData.append(\"data\", JSON.stringify(arr));\r\n }\r\n\r\n \r\n formData.append(\"culture\", site.constants.globals.ctxCulture);\r\n formData.append(\"csrf\", site.constants.globals.antiforgeryToken);\r\n formData.append(\"contactemail\", contactemail);\r\n \r\n\r\n (async () => {\r\n const response = await fetch(formElement.action, {\r\n method: 'POST',\r\n body: formData\r\n });\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n if (data.ok) {\r\n window.location = data.signUrl;\r\n }\r\n }\r\n })();\r\n });\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var advanceguaranteeInsuranceForms = document.querySelectorAll(\".advanceguaranteeinsurance--form\");\r\n if (advanceguaranteeInsuranceForms != null && advanceguaranteeInsuranceForms.length > 0) {\r\n advanceguaranteeInsuranceForms.forEach((element) => {\r\n advanceguaranteeInsuranceForm.init(element.id);\r\n });\r\n }\r\n});\r\n","const commonCustomerForm = {\r\n constants: {\r\n isValidClass: \"is-valid\",\r\n isInValidClass: \"is-invalid\",\r\n hiddenCssClass: 'd-none'\r\n\r\n\r\n },\r\n init: (id) => {\r\n let formElement = document.getElementById(id);\r\n commonCustomerForm.validateElements(formElement);\r\n commonCustomerForm.cleanupAttachedFiles(formElement);\r\n },\r\n \r\n cleanupAttachedFiles: (form) => {\r\n const cleanUpButtons = form.querySelectorAll(`[data-cleanupattachements]`);\r\n if (cleanUpButtons && cleanUpButtons.length > 0) {\r\n cleanUpButtons.forEach((btn) => {\r\n\r\n var fieldset = btn.closest(\"fieldset\");\r\n if (fieldset) {\r\n btn.addEventListener(\"click\", (e) => {\r\n var elements = fieldset.querySelectorAll(\"input[type='file']\");\r\n if (elements && elements.length > 0) {\r\n elements.forEach((element) => {\r\n element.value = \"\";\r\n element.classList.remove(hiddenDefectsForm.constants.isInValidClass);\r\n element.classList.remove(hiddenDefectsForm.constants.isValidClass);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n validateElements: (form) => {\r\n\r\n const inputs = form.querySelectorAll(`fieldset input[type='text'],fieldset input[type='file'],fieldset input[type='email'],fieldset input[type='date']`);\r\n const textareas = form.querySelectorAll(`fieldset textarea`);\r\n const selects = form.querySelectorAll(`fieldset select`);\r\n\r\n if (inputs && inputs.length > 0) {\r\n inputs.forEach((input) => {\r\n\r\n input.addEventListener(\"change\", (e) => {\r\n e.target.dataset.dirty = \"1\";\r\n });\r\n\r\n input.addEventListener(\"blur\", (e) => {\r\n input.classList.remove(hiddenDefectsForm.constants.isInValidClass);\r\n input.classList.remove(hiddenDefectsForm.constants.isValidClass);\r\n\r\n if (e.target.dataset.dirty == \"1\") {\r\n var isValid = e.target.checkValidity();\r\n\r\n if (isValid) {\r\n input.classList.add(hiddenDefectsForm.constants.isValidClass);\r\n }\r\n else {\r\n input.classList.add(hiddenDefectsForm.constants.isInValidClass);\r\n }\r\n\r\n }\r\n\r\n var fieldset = e.target.closest(\"fieldset\");\r\n commonCustomerForm.validateFieldset(fieldset);\r\n });\r\n })\r\n }\r\n if (textareas && textareas.length > 0) {\r\n textareas.forEach((textarea) => {\r\n\r\n textarea.addEventListener(\"change\", (e) => {\r\n e.target.dataset.dirty = \"1\";\r\n });\r\n\r\n textarea.addEventListener(\"blur\", (e) => {\r\n textarea.classList.remove(hiddenDefectsForm.constants.isInValidClass);\r\n textarea.classList.remove(hiddenDefectsForm.constants.isValidClass);\r\n\r\n if (e.target.dataset.dirty == \"1\") {\r\n var isValid = e.target.checkValidity();\r\n\r\n if (isValid) {\r\n textarea.classList.add(hiddenDefectsForm.constants.isValidClass);\r\n }\r\n else {\r\n textarea.classList.add(hiddenDefectsForm.constants.isInValidClass);\r\n }\r\n\r\n\r\n }\r\n var fieldset = e.target.closest(\"fieldset\");\r\n commonCustomerForm.validateFieldset(fieldset);\r\n });\r\n })\r\n }\r\n if (selects && selects.length > 0) {\r\n selects.forEach((select) => {\r\n\r\n select.addEventListener(\"change\", (e) => {\r\n\r\n select.classList.remove(hiddenDefectsForm.constants.isInValidClass);\r\n select.classList.remove(hiddenDefectsForm.constants.isValidClass);\r\n\r\n var isValid = e.target.checkValidity();\r\n\r\n if (isValid) {\r\n select.classList.add(hiddenDefectsForm.constants.isValidClass);\r\n }\r\n else {\r\n select.classList.add(hiddenDefectsForm.constants.isInValidClass);\r\n }\r\n\r\n var fieldset = e.target.closest(\"fieldset\");\r\n commonCustomerForm.validateFieldset(fieldset);\r\n });\r\n })\r\n }\r\n\r\n },\r\n validateFieldset: (fieldset) => {\r\n var fieldsetIsValid = false;\r\n var fieldsetIsInvalid = false;\r\n fieldset.classList.remove(hiddenDefectsForm.constants.isInValidClass);\r\n fieldset.classList.remove(hiddenDefectsForm.constants.isValidClass);\r\n\r\n const inputs = fieldset.querySelectorAll(`input[type='text'], input[type='file'], input[type='email'], input[type='date']`);\r\n const textareas = fieldset.querySelectorAll(`textarea`);\r\n const selects = fieldset.querySelectorAll(`select`);\r\n\r\n var allAreValid = true;\r\n if (inputs && inputs.length > 0) {\r\n inputs.forEach((input) => {\r\n var isValid = input.checkValidity();\r\n if (!isValid) {\r\n allAreValid = false;\r\n fieldsetIsInvalid = true;\r\n }\r\n });\r\n }\r\n if (textareas && textareas.length > 0) {\r\n textareas.forEach((textarea) => {\r\n var isValid = textarea.checkValidity();\r\n if (!isValid) {\r\n allAreValid = false;\r\n fieldsetIsInvalid = true;\r\n }\r\n });\r\n }\r\n if (selects && selects.length > 0) {\r\n selects.forEach((select) => {\r\n var isValid = select.checkValidity();\r\n if (!isValid) {\r\n allAreValid = false;\r\n fieldsetIsInvalid = true;\r\n }\r\n });\r\n }\r\n fieldsetIsValid = allAreValid;\r\n\r\n\r\n\r\n if (fieldsetIsValid) {\r\n fieldset.classList.add(hiddenDefectsForm.constants.isValidClass);\r\n }\r\n if (fieldsetIsInvalid) {\r\n fieldset.classList.add(hiddenDefectsForm.constants.isInValidClass);\r\n }\r\n },\r\n initHeight: (formElement, confirmationElement) => {\r\n if (formElement && confirmationElement) {\r\n\r\n var clientHeight = formElement.clientHeight;\r\n confirmationElement.style.minHeight = `${clientHeight}px`;\r\n }\r\n },\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var theForms = document.querySelectorAll(\".commoncustomerdeclarationform\");\r\n if (theForms != null && theForms.length > 0) {\r\n theForms.forEach((element) => {\r\n commonCustomerForm.init(element.id);\r\n });\r\n }\r\n});\r\n","const hiddenDefectsForm = {\r\n constants: {\r\n isValidClass: \"is-valid\",\r\n isInValidClass: \"is-invalid\",\r\n hiddenCssClass: 'd-none',\r\n confirmationSelector: \"[data-formconfirmation]\"\r\n\r\n },\r\n init: (id) => {\r\n let formElement = document.getElementById(id);\r\n\r\n //const confirmationElement = document.querySelector(`[data-flexibleformconfirmation='${id}']`);\r\n\r\n //hiddenDefectsForm.initHeight(formElement, confirmationElement);\r\n hiddenDefectsForm.onSubmitForm(formElement);\r\n hiddenDefectsForm.copyAddress(formElement);\r\n hiddenDefectsForm.onProductTypeChange(formElement);\r\n hiddenDefectsForm.onInsuredValueChange(formElement);\r\n hiddenDefectsForm.setSummaryTableData(formElement);\r\n\r\n },\r\n onInsuredValueChange: (form) => {\r\n\r\n let selects = form.querySelectorAll(\"select[data-productselectionscope]\");\r\n if (selects) {\r\n selects.forEach((select) => {\r\n select.addEventListener(\"change\", () => {\r\n hiddenDefectsForm.setSummaryTableData(form);\r\n });\r\n });\r\n } \r\n },\r\n onProductTypeChange: (form) => {\r\n const radioButtons = form.querySelectorAll(`input[data-scopefieldset]`);\r\n\r\n \r\n const inputAttachementInspection = form.querySelector(`div[data-inputattachmentinspection]`); \r\n\r\n if (radioButtons && radioButtons.length > 0) {\r\n const inputs = inputAttachementInspection.querySelectorAll(\"input\");\r\n\r\n radioButtons.forEach((btn) => {\r\n btn.addEventListener(\"click\", (e) => {\r\n\r\n const fieldsets = form.querySelectorAll(`fieldset[data-productkey]`);\r\n if (fieldsets) {\r\n fieldsets.forEach((fs) => {\r\n fs.classList.add(hiddenDefectsForm.constants.hiddenCssClass);\r\n var select = fs.querySelector(\"select\");\r\n select.required = false;\r\n select.dataset.visible = false;\r\n });\r\n \r\n }\r\n\r\n const fieldset = form.querySelector(`fieldset[data-productkey=\"${e.target.dataset.productkey}\"]`);\r\n\r\n if (fieldset) {\r\n fieldset.classList.remove(hiddenDefectsForm.constants.hiddenCssClass);\r\n \r\n var select = fieldset.querySelector(\"select\");\r\n if (select.dataset.required == \"true\") {\r\n select.required = true;\r\n }\r\n select.dataset.visible = true;\r\n\r\n commonCustomerForm.validateFieldset(fieldset);\r\n }\r\n\r\n if (e.target.dataset.showprotocolattachement == \"True\") {\r\n\r\n inputAttachementInspection.classList.remove(hiddenDefectsForm.constants.hiddenCssClass);\r\n\r\n inputs.forEach((input) => {\r\n if (input.dataset.required == \"true\") {\r\n input.required = true;\r\n }\r\n }); \r\n }\r\n else {\r\n inputAttachementInspection.classList.add(hiddenDefectsForm.constants.hiddenCssClass);\r\n inputs.forEach((input) => {\r\n input.required = false;\r\n });\r\n } \r\n\r\n hiddenDefectsForm.setSummaryTableData(form);\r\n\r\n });\r\n });\r\n \r\n }\r\n },\r\n\r\n setSummaryTableData: (form) => {\r\n\r\n var table = form.querySelector(\"[data-summarytable]\");\r\n\r\n if (table != null) {\r\n\r\n var product = \"\";\r\n var productCost = \"\";\r\n var productInsuredValue = \"\";\r\n var productKey = \"\";\r\n var radioElements = form.querySelectorAll(\"input[data-scopefieldset][type='radio']\");\r\n if (radioElements != null) {\r\n radioElements.forEach((radioElement) => {\r\n if (radioElement.checked) {\r\n product = radioElement.value;\r\n productKey = radioElement.dataset.productkey;\r\n }\r\n });\r\n }\r\n if (productKey.length > 0) {\r\n var productKeyElement = form.querySelector(`#productSelectionScope-${productKey}`);\r\n if (productKeyElement != null) {\r\n if (productKeyElement.tagName == \"SELECT\") {\r\n\r\n var options = productKeyElement.querySelectorAll(\"option\");\r\n options.forEach((option) => {\r\n\r\n if (option.selected && option.dataset.cost!=null) {\r\n productCost = `${option.dataset.cost}` ;\r\n productInsuredValue = `${option.value}`;\r\n }\r\n });\r\n }\r\n else {\r\n productCost = `${productKeyElement.dataset.cost}`; \r\n }\r\n }\r\n }\r\n\r\n table.querySelector(\"[data-product]\").innerHTML = product;\r\n table.querySelector(\"[data-value]\").innerHTML = productInsuredValue;\r\n table.querySelector(\"[data-cost]\").innerHTML = productCost;\r\n table.querySelector(\"[data-costsummary]\").innerHTML = productCost;\r\n }\r\n },\r\n copyAddress: (form) => {\r\n const copyButtons = form.querySelectorAll(`[data-copybtn]`);\r\n if (copyButtons && copyButtons.length > 0) {\r\n copyButtons.forEach((btn) => {\r\n\r\n var fieldset = btn.closest(\"fieldset\");\r\n if (fieldset) {\r\n btn.addEventListener(\"click\", (e) => {\r\n var elements = fieldset.querySelectorAll(\"[data-copyfrom]\");\r\n if (elements && elements.length > 0) {\r\n elements.forEach((element) => {\r\n\r\n var elementId = `#${element.dataset.copyfrom}`;\r\n var sourceElement = form.querySelector(elementId);\r\n if (sourceElement) {\r\n element.value = sourceElement.value;\r\n }\r\n\r\n })\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n onShowPreviewModal: (formElement) => {\r\n\r\n var modalElement = document.querySelector(`\".modal .hiddendefectsPreview[data-hiddendefectsformid='${formElement.id}']\"`).closest(\".modal\");\r\n if (modalElement) {\r\n modalElement.addEventListener('show.bs.modal', function (event) {\r\n\r\n var labels = modalElement.querySelectorAll(\"[data-for]\");\r\n if (labels && labels.length > 0) {\r\n labels.forEach((label) => {\r\n\r\n var forDataValue = label.dataset.for;\r\n\r\n if (forDataValue) {\r\n var forElement = document.querySelector(`#${forDataValue}`);\r\n\r\n if (forElement == null) {\r\n forElement = document.querySelector(`[name='${forDataValue}']`);\r\n }\r\n\r\n if (forElement) {\r\n\r\n var createElement = false;\r\n var previewElement = document.querySelector(`[data-previewfor='${forDataValue}']`);\r\n\r\n if (previewElement == null) {\r\n previewElement = document.createElement(\"div\");\r\n createElement = true;\r\n }\r\n\r\n previewElement.innerHTML = forElement.value;\r\n\r\n if (forElement.tagName == \"SELECT\") {\r\n\r\n if (forElement.dataset.visible == \"true\" || forElement.dataset.visible == undefined) {\r\n if (forElement.selectedIndex > 0) {\r\n previewElement.innerHTML = forElement.options[forElement.selectedIndex].text;\r\n }\r\n }\r\n else\r\n previewElement.innerHTML = \"\";\r\n }\r\n else if (forElement.tagName == \"INPUT\") {\r\n var inputType = forElement.getAttribute(\"type\");\r\n if (inputType == \"radio\") {\r\n var radioElements = document.querySelectorAll(`[name='${forDataValue}']`);\r\n\r\n if (radioElements && radioElements.length > 0) {\r\n\r\n radioElements.forEach((radioElement) => {\r\n if (radioElement.checked) {\r\n var labelForRadio = document.querySelector(`label[for='${radioElement.id}']`);\r\n if (labelForRadio) {\r\n previewElement.innerHTML = labelForRadio.innerHTML;\r\n }\r\n\r\n }\r\n });\r\n }\r\n }\r\n else if (inputType == \"file\") {\r\n var filenames = new Array();\r\n if (forElement.files && forElement.files.length > 0) {\r\n for (f = 0; f < forElement.files.length; f++) {\r\n filenames.push(forElement.files[f].name);\r\n }\r\n }\r\n previewElement.innerHTML = filenames.join(\"
\");\r\n }\r\n }\r\n\r\n previewElement.classList.add(\"fw-light\");\r\n previewElement.dataset.previewfor = forDataValue;\r\n\r\n if (createElement) {\r\n label.after(previewElement);\r\n }\r\n }\r\n }\r\n\r\n });\r\n }\r\n });\r\n }\r\n\r\n },\r\n cleanupAttachedFiles: (form) => {\r\n const cleanUpButtons = form.querySelectorAll(`[data-cleanupattachements]`);\r\n if (cleanUpButtons && cleanUpButtons.length > 0) {\r\n cleanUpButtons.forEach((btn) => {\r\n\r\n var fieldset = btn.closest(\"fieldset\");\r\n if (fieldset) {\r\n btn.addEventListener(\"click\", (e) => {\r\n var elements = fieldset.querySelectorAll(\"input[type='file']\");\r\n if (elements && elements.length > 0) {\r\n elements.forEach((element) => {\r\n element.value = \"\";\r\n element.classList.remove(hiddenDefectsForm.constants.isInValidClass);\r\n element.classList.remove(hiddenDefectsForm.constants.isValidClass);\r\n });\r\n }\r\n });\r\n }\r\n });\r\n }\r\n },\r\n onSubmitForm: (formElement) => {\r\n\r\n if (formElement) {\r\n\r\n let spinner = formElement.querySelector(\"[data-submitspinner]\");\r\n let submitButton = formElement.querySelector(\"[type='submit']\");\r\n var table = formElement.querySelector(\"[data-summarytable]\");\r\n var radioElements = formElement.querySelectorAll(\"input[data-scopefieldset][type='radio']\");\r\n \r\n\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n submitButton.disabled = true;\r\n\r\n spinner.classList.toggle(\"d-none\");\r\n\r\n let productKey = \"\";\r\n if (radioElements != null) {\r\n radioElements.forEach((radioElement) => {\r\n if (radioElement.checked) { \r\n productKey = radioElement.dataset.productkey;\r\n }\r\n });\r\n }\r\n\r\n let salesperson = formElement.querySelector(\"input[data-salesemail]\").value\r\n let salespersonssn = formElement.querySelector(\"input[data-salesssn]\").value\r\n const formData = new FormData();\r\n\r\n var fileElements = formElement.querySelectorAll(\"[type='file']\")\r\n\r\n if (fileElements && fileElements.length > 0) {\r\n fileElements.forEach((fileElement) => {\r\n if (fileElement.files.length > 0) {\r\n\r\n\r\n for (let i = 0; i < fileElement.files.length; i += 1) {\r\n const file = fileElement.files[i];\r\n formData.append(\"file\", file);\r\n }\r\n\r\n\r\n }\r\n })\r\n }\r\n var arr = new Array();\r\n var fieldsets = formElement.querySelectorAll(\"fieldset\");\r\n if (fieldsets && fieldsets.length > 0) {\r\n\r\n fieldsets.forEach((fieldset) => {\r\n\r\n var legend = fieldset.querySelector(\"legend\");\r\n var data = { legend: legend.innerHTML, fields: [] };\r\n var inputElements = fieldset.querySelectorAll(\"input, textarea, select\");\r\n if (inputElements && inputElements.length > 0) {\r\n\r\n var handledRadios = new Array();\r\n inputElements.forEach((element) => {\r\n\r\n\r\n var value = element.value;\r\n\r\n var type = element.getAttribute(\"type\");\r\n\r\n if (\"checkbox\" === type) {\r\n value = \"Nej\";\r\n if (element.checked) {\r\n value = \"Ja\";\r\n }\r\n if (element.dataset.consent==\"true\") {\r\n let consentContentElement = fieldset.querySelector(\"div[data-consentcontent]\");\r\n if (consentContentElement) {\r\n value = `${value}
${consentContentElement.innerHTML}`\r\n }\r\n }\r\n }\r\n else if (\"radio\" == type) {\r\n value = \"\";\r\n if (handledRadios.indexOf(element.name) < 0) {\r\n handledRadios.push(element.name);\r\n var radioElements = document.querySelectorAll(`[name='${element.name}']`);\r\n\r\n if (radioElements && radioElements.length > 0) {\r\n\r\n radioElements.forEach((radioElement) => {\r\n if (radioElement.checked) {\r\n element = radioElement;\r\n var labelForRadio = document.querySelector(`label[for='${radioElement.id}']`);\r\n if (labelForRadio) {\r\n value = labelForRadio.innerHTML;\r\n }\r\n\r\n }\r\n });\r\n }\r\n }\r\n }\r\n else if (\"file\" == type) {\r\n if (element.files.length > 0) {\r\n var filesArr = new Array();\r\n for (let i = 0; i < element.files.length; i += 1) {\r\n const file = element.files[i];\r\n filesArr.push(file.name);\r\n }\r\n if (filesArr.length > 0) {\r\n value = filesArr.join();\r\n }\r\n }\r\n }\r\n\r\n\r\n if (value && value.length > 0) {\r\n var label = formElement.querySelector(`[for=\"${element.id}\"]`);\r\n if (label) {\r\n data.fields.push({ v: value, l: label.innerHTML, t: element.dataset.formtype });\r\n }\r\n else if (\"SELECT\" == element.tagName) {\r\n value = element.options[element.selectedIndex].text;\r\n\r\n if (element.dataset.visible == \"true\" || element.dataset.visible == undefined) {\r\n data.fields.push({ v: value, l: \"\", t: element.dataset.formtype });\r\n } \r\n }\r\n }\r\n });\r\n arr.push(data);\r\n\r\n }\r\n });\r\n }\r\n if (arr.length > 0) {\r\n formData.append(\"data\", JSON.stringify(arr));\r\n }\r\n\r\n\r\n formData.append(\"culture\", site.constants.globals.ctxCulture);\r\n formData.append(\"csrf\", site.constants.globals.antiforgeryToken);\r\n formData.append(\"salesperson\", salesperson);\r\n formData.append(\"salespersonssn\", salespersonssn);\r\n formData.append(\"table\", table.innerHTML);\r\n formData.append(\"productKey\", productKey);\r\n\r\n (async () => {\r\n const response = await fetch(formElement.action, {\r\n method: 'POST',\r\n body: formData\r\n });\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else { \r\n const data = await response.json();\r\n if (data.ok) {\r\n window.location = data.signUrl;\r\n }\r\n }\r\n })();\r\n });\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var hiddenDefectsForms = document.querySelectorAll(\".hiddendefects--form\");\r\n if (hiddenDefectsForms != null && hiddenDefectsForms.length > 0) {\r\n hiddenDefectsForms.forEach((element) => {\r\n hiddenDefectsForm.init(element.id);\r\n });\r\n }\r\n});\r\n","const dashboardinspectionlist = {\r\n deleteModalElement: null,\r\n init: (componentElement) => {\r\n localStorage.removeItem(STORAGE_KEY.OFFLINE_ID);\r\n dashboardinspectionlist.initDeleteModal(componentElement);\r\n dashboardinspectionlist.onConfirmDelete();\r\n dashboardinspectionlist.onRemoveButtonClick(componentElement);\r\n dashboardinspectionlist.unsavedInspection();\r\n },\r\n initDeleteModal: (componentElement) => {\r\n dashboardinspectionlist.deleteModalElement = componentElement.querySelector(\"[data-deleteinspectionmodal]\");\r\n },\r\n onRemoveButtonClick: (componentElement) => {\r\n let allformElements = componentElement.querySelectorAll(\"[data-deleteform]\");\r\n\r\n if (allformElements.length) {\r\n allformElements.forEach((formElement) => {\r\n\r\n formElement.addEventListener(\"submit\", (e) => {\r\n e.preventDefault();\r\n\r\n var modal = bootstrap.Modal.getOrCreateInstance(dashboardinspectionlist.deleteModalElement, {});\r\n\r\n modal.show();\r\n dashboardinspectionlist.deleteModalElement.action = formElement.dataset.action;\r\n })\r\n });\r\n }\r\n },\r\n onConfirmDelete: () => {\r\n dashboardinspectionlist.deleteModalElement.addEventListener(\"submit\", (e) => {\r\n e.preventDefault();\r\n var action = e.target.action;\r\n\r\n (async () => {\r\n const response = await fetch(action, {\r\n method: 'DELETE'\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n window.location.reload();\r\n }\r\n })();\r\n });\r\n },\r\n unsavedInspection: async () => {\r\n const storageData = getStorageAllOfflineForms();\r\n let hasProcessed = false;\r\n\r\n\r\n for (const [offlineId, formData] of Object.entries(storageData)) {\r\n let inspectionId = formData.pendingInspection?.id;\r\n\r\n await syncInspectionForm(offlineId, inspectionId);\r\n console.log(`Successfully processed: ${offlineId}`);\r\n hasProcessed = true;\r\n }\r\n\r\n if (hasProcessed) {\r\n console.log(\"All offline forms has been saved. Reloading page...\");\r\n location.reload();\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var dashboardinspectionlistComponents = document.querySelectorAll(\".dashboardinspectionlist\");\r\n if (dashboardinspectionlistComponents != null && dashboardinspectionlistComponents.length > 0) {\r\n dashboardinspectionlistComponents.forEach((element) => {\r\n dashboardinspectionlist.init(element);\r\n });\r\n }\r\n});\r\n","const emailSignupModal = {\r\n\r\n init: (element) => {\r\n let theModal = new bootstrap.Modal(element, {});\r\n if (theModal) {\r\n theModal.show(); \r\n let form = element.querySelector(\"form\");\r\n if (form) {\r\n emailSignupModal.onFormSubmit(form, theModal);\r\n }\r\n \r\n }\r\n },\r\n \r\n onFormSubmit: (form, theModal) => {\r\n\r\n form.addEventListener('submit', (event) => {\r\n event.preventDefault(); \r\n const email = document.querySelector(`input[type='email'][form=${form.id}]`)?.value;\r\n\r\n (async () => {\r\n const response = await fetch(event.target.action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json' \r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n email: email,\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n })\r\n });\r\n\r\n \r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n \r\n emailSignupModal.showThankYouMessage(form);\r\n }\r\n })();\r\n });\r\n },\r\n showThankYouMessage: (form) => {\r\n let modalElement = form.closest(\".modal\");\r\n\r\n let signupArea = modalElement.querySelector(\"div[data-signup]\");\r\n let thankYouArea = modalElement.querySelector(\"div[data-thankyou]\");\r\n\r\n thankYouArea.classList.remove(\"d-none\");\r\n signupArea.classList.add(\"d-none\");\r\n }\r\n\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var emailSignupModals = document.querySelectorAll(\"[data-emailsignupmodal]\");\r\n if (emailSignupModals != null && emailSignupModals.length > 0) {\r\n emailSignupModals.forEach((emailSignupModalElement) => {\r\n emailSignupModal.init(emailSignupModalElement);\r\n });\r\n }\r\n});","const euSanctionsList = {\r\n\r\n init: () => {\r\n\r\n\r\n var forms = document.querySelectorAll(\"[data-eusanctionlistform]\");\r\n if (forms && forms.length > 0) {\r\n forms.forEach((form) => {\r\n\r\n form.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n euSanctionsList.doSubmit(form);\r\n });\r\n });\r\n }\r\n },\r\n doSubmit: (form) => {\r\n\r\n var nameElement = form.querySelector(\"[name='name']\"); \r\n\r\n var submitElement = form.querySelector(\"[type='submit']\");\r\n\r\n submitElement.disabled = true;\r\n\r\n\r\n var hitsContainer = form.querySelector(\"[data-hits]\");\r\n var noHitsContainer = form.querySelector(\"[data-nohits]\");\r\n var hitItemsContainer = form.querySelector(\"[data-hitcontent]\");\r\n var spinnerElement = submitElement.querySelector(\".spinner-border\");\r\n var searchOptionsRadio = form.querySelector('input[name=\"searchOptionsRadio\"]:checked').value;\r\n\r\n hitsContainer.classList.add(\"d-none\");\r\n noHitsContainer.classList.add(\"d-none\");\r\n hitItemsContainer.innerHTML = \"\";\r\n spinnerElement.classList.toggle(\"d-none\");\r\n (async () => {\r\n const response = await fetch(form.action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n name: nameElement.value,\r\n searchOptionsRadio: searchOptionsRadio \r\n })\r\n });\r\n\r\n if (response.status === 200) {\r\n submitElement.disabled = false;\r\n const data = await response.json();\r\n \r\n if (data.hasHits) {\r\n\r\n var l = data.hits.length;\r\n var labelPatternHits = hitsContainer.dataset.text;\r\n hitsContainer.querySelector(\".alert\").innerHTML = labelPatternHits.replace(\"{0}\",`${l}`);\r\n hitsContainer.classList.toggle('d-none');\r\n\r\n var labelPatternHit = hitItemsContainer.dataset.text;\r\n \r\n for (var c = 0; c < l; c++) {\r\n\r\n var hit = data.hits[c];\r\n delete hit.rawXml;\r\n\r\n var divElement = document.createElement(\"div\");\r\n var h3Element = document.createElement(\"h3\");\r\n\r\n divElement.classList.add(\"mb-5\");\r\n h3Element.innerHTML = labelPatternHit.replace(\"{0}\", c + 1);\r\n\r\n var preElement = document.createElement(\"pre\");\r\n preElement.style = \"background-color:white;padding:.5rem;border:none;width:100%;max-height:400px;box-shadow: 0 0 5px grey;font-size:14px;\";\r\n\r\n\r\n var codeElement = document.createElement(\"code\");\r\n codeElement.innerHTML = JSON.stringify(hit, null, 2)\r\n\r\n preElement.appendChild(codeElement);\r\n\r\n divElement.appendChild(h3Element);\r\n divElement.appendChild(preElement);\r\n\r\n hitItemsContainer.appendChild(divElement);\r\n\r\n }\r\n hitsContainer.scrollIntoView();\r\n\r\n }\r\n else {\r\n noHitsContainer.classList.toggle('d-none');\r\n noHitsContainer.scrollIntoView();\r\n }\r\n spinnerElement.classList.toggle(\"d-none\");\r\n } else {\r\n submitElement.disabled = false;\r\n spinnerElement.classList.toggle(\"d-none\");\r\n const errorData = await response.json();\r\n console.log(errorData);\r\n }\r\n })()\r\n },\r\n stringifyHit: (obj) => {\r\n let stringfiedObj = JSON.stringify(obj, (key, value) => {\r\n if (Array.isArray(value)) {\r\n value = value.filter((val) => !['', null].includes(val));\r\n }\r\n return ['', null].includes(value) || (typeof value === 'object' && (value.length === 0 || Object.keys(value).length === 0)) ? undefined : value;\r\n });\r\n let resObj = JSON.parse(stringfiedObj);\r\n let isEmptyPropsPresent = ['{}', '[]', '\"\"', 'null'].some((key) => stringfiedObj.includes(key))\r\n if (isEmptyPropsPresent) {\r\n return euSanctionsList.stringifyHit(resObj);\r\n }\r\n return JSON.stringify(resObj, null, 2);\r\n }\r\n\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('eusanctionlist').length > 0) {\r\n euSanctionsList.init();\r\n }\r\n});","const finalInspection = {\r\n constants: {\r\n showAllValue: \"-1\", \r\n hiddenCssClass: 'd-none',\r\n optionKindSelector: '.finalinspection input[type=radio][data-optionkind]',\r\n optionKindFormSelector: '.finalinspection form[data-optionkind]',\r\n errorElementSelector: '.finalinspection div[data-alert]',\r\n optionKinds: {\r\n insurancenumber: \"insurancenumber\",\r\n realestate: \"realestate\",\r\n realestateaddress: \"realestateaddress\",\r\n },\r\n emailInputSelector: \"input[type='email']\",\r\n insuranceNumberInputSelector: \"input[type='text'][data-insurancenumber]\",\r\n realestateInputSelector: \"input[type='text'][data-realestate]\",\r\n countyInputSelector: \"input[type='text'][data-county]\",\r\n addressInputSelector: \"input[type='text'][data-address]\",\r\n zipcodeInputSelector: \"input[type='text'][data-zipcode]\",\r\n \r\n \r\n },\r\n init: () =>\r\n {\r\n finalInspection.onRadioChange();\r\n finalInspection.onSubmitForm();\r\n },\r\n onRadioChange: () => {\r\n\r\n var radios = document.querySelectorAll(finalInspection.constants.optionKindSelector);\r\n var forms = document.querySelectorAll(finalInspection.constants.optionKindFormSelector);\r\n if (radios && radios.length > 0 && forms && forms.length > 0) {\r\n\r\n radios.forEach(radio => radio.addEventListener('change', () => {\r\n\r\n forms.forEach((form) => {\r\n form.classList.add(finalInspection.constants.hiddenCssClass);\r\n });\r\n\r\n\r\n const optionKind = radio.dataset.optionkind;\r\n const theForm = document.querySelector(`.finalinspection form[data-optionkind=\"${optionKind}\"]`);\r\n if (theForm) {\r\n theForm.classList.remove(finalInspection.constants.hiddenCssClass);\r\n }\r\n \r\n }));\r\n }\r\n },\r\n onSubmitForm: () => {\r\n var forms = document.querySelectorAll(finalInspection.constants.optionKindFormSelector);\r\n if (forms && forms.length > 0) {\r\n forms.forEach(form => form.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n const optionKind = form.dataset.optionkind;\r\n if (optionKind && optionKind.length > 0) {\r\n if (optionKind == finalInspection.constants.optionKinds.insurancenumber) {\r\n finalInspection.onSubmitFormInsurance(form);\r\n }\r\n if (optionKind == finalInspection.constants.optionKinds.realestate) {\r\n finalInspection.onSubmitFormRealEstate(form);\r\n }\r\n if (optionKind == finalInspection.constants.optionKinds.realestateaddress) {\r\n finalInspection.onSubmitFormRealEstateAddress(form);\r\n }\r\n }\r\n }));\r\n }\r\n },\r\n onSubmitFormInsurance: (form) => {\r\n\r\n finalInspection.onFormSubmit(form);\r\n\r\n let emailInput = form.querySelector(finalInspection.constants.emailInputSelector);\r\n let insuranceNumberInput = form.querySelector(finalInspection.constants.insuranceNumberInputSelector);\r\n\r\n (async () => {\r\n const response = await fetch(form.action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json' \r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n email: emailInput?.value,\r\n insuranceNumber: insuranceNumberInput?.value,\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else { \r\n\r\n const data = await response.json();\r\n \r\n if (data.ok) {\r\n finalInspection.onFormSuccess(form, data);\r\n }\r\n else {\r\n finalInspection.onFormError(form, data); \r\n } \r\n }\r\n })();\r\n \r\n }, \r\n onSubmitFormRealEstate: (form) => {\r\n \r\n finalInspection.onFormSubmit(form);\r\n\r\n let emailInput = form.querySelector(finalInspection.constants.emailInputSelector);\r\n let realestateInput = form.querySelector(finalInspection.constants.realestateInputSelector);\r\n let countyInput = form.querySelector(finalInspection.constants.countyInputSelector);\r\n\r\n (async () => {\r\n const response = await fetch(form.action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json' \r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n email: emailInput?.value,\r\n realestate: realestateInput?.value,\r\n county: countyInput?.value,\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n\r\n const data = await response.json();\r\n\r\n if (data.ok) {\r\n finalInspection.onFormSuccess(form, data);\r\n }\r\n else {\r\n finalInspection.onFormError(form, data);\r\n }\r\n }\r\n })();\r\n },\r\n onSubmitFormRealEstateAddress: (form) => {\r\n finalInspection.onFormSubmit(form);\r\n\r\n let emailInput = form.querySelector(finalInspection.constants.emailInputSelector);\r\n let addressInput = form.querySelector(finalInspection.constants.addressInputSelector);\r\n let zipCodeInput = form.querySelector(finalInspection.constants.zipcodeInputSelector);\r\n\r\n (async () => {\r\n const response = await fetch(form.action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json' \r\n },\r\n body: JSON.stringify({\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n email: emailInput?.value,\r\n zipcode: zipCodeInput?.value,\r\n address: addressInput?.value,\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n\r\n const data = await response.json();\r\n\r\n if (data.ok) {\r\n finalInspection.onFormSuccess(form, data);\r\n }\r\n else {\r\n finalInspection.onFormError(form, data);\r\n }\r\n }\r\n })();\r\n },\r\n onFormSubmit: (form) => {\r\n let submitButton = form.querySelector(\"button[type='submit']\");\r\n submitButton.disabled = true;\r\n },\r\n onFormSubmited: (form) => {\r\n let submitButton = form.querySelector(\"button[type='submit']\");\r\n submitButton.disabled = false;\r\n },\r\n onFormError: (form, responseData) => {\r\n let alert = document.querySelector(finalInspection.constants.errorElementSelector);\r\n alert.innerHTML = responseData.errorMessage;\r\n alert.classList.remove(finalInspection.constants.hiddenCssClass);\r\n setTimeout(function () {\r\n alert.classList.add(finalInspection.constants.hiddenCssClass);\r\n }, 10000);\r\n\r\n finalInspection.onFormSubmited(form);\r\n },\r\n onFormSuccess: (form, responseData) => {\r\n window.location = responseData.redirectUrl;\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('finalinspection').length == 1) {\r\n finalInspection.init();\r\n }\r\n});\r\n","const finalInspectionForm_step1 = {\r\n constants: {\r\n hiddenCssClass: 'd-none',\r\n allStepsSelector: \"[data-finalinspectionformstep]\",\r\n step1formSelector: \"[data-finalinspectionformstep='1']\", \r\n modifyConstructorContainer: \"[data-addconstructor]\",\r\n constructorElementSelector: \"[data-constructor]\",\r\n amountElementSelector: \"[data-amount]\",\r\n fileElementSelector: \"[data-file]\",\r\n constructorNameElementSelector: \"[data-constructorname]\", \r\n addedConstructorsContainerElementSelector: \"[data-addedconstructors]\",\r\n addConstructorsTemplateElementSelector: \"[data-addconstructortemplate]\",\r\n allAddeddAmountsElementsSelector: \"[data-addedconstructors] [data-amount]\", \r\n totalAmountElementSelector: \"[data-finalinspectionformstep='1'] [data-totalamount]\",\r\n continueFormSelector: \"#finalinspectionformstep1-continue\",\r\n fileDrawingSelector: \"input[type='file'][data-filedrawaing]\",\r\n commentSelector: \"#finalinspectionformstep1-more\",\r\n },\r\n goToStep: () => {\r\n\r\n const theStep = document.querySelector(finalInspectionForm_step1.constants.step1formSelector);\r\n const allSteps = document.querySelectorAll(finalInspectionForm_step1.constants.allStepsSelector);\r\n allSteps.forEach((step) => {\r\n step.classList.add(finalInspectionForm_step1.constants.hiddenCssClass);\r\n });\r\n theStep.classList.remove(finalInspectionForm_step1.constants.hiddenCssClass);\r\n },\r\n init: () =>\r\n {\r\n const addConstructorFormSelector = document.querySelector(finalInspectionForm_step1.constants.modifyConstructorContainer);\r\n finalInspectionForm_step1.bindOnConstructorInputChange(addConstructorFormSelector);\r\n\r\n finalInspectionForm_step1.onAddConstructor();\r\n finalInspectionForm_step1.onContinue();\r\n },\r\n bindOnConstructorInputChange: (container) => {\r\n if (container) {\r\n const input = container.querySelector(finalInspectionForm_step1.constants.constructorElementSelector);\r\n \r\n if (input) {\r\n input.addEventListener('keyup', (event) => {\r\n finalInspectionForm_step1.onConstructorInputChange(event.target); \r\n }); \r\n input.addEventListener('change', (event) => {\r\n finalInspectionForm_step1.onConstructorInputChange(event.target);\r\n });\r\n }\r\n }\r\n },\r\n bindOnAmountInputChange: (container) => {\r\n if (container) {\r\n const input = container.querySelector(finalInspectionForm_step1.constants.amountElementSelector); \r\n \r\n if (input) { \r\n input.addEventListener('keyup', (event) => {\r\n finalInspectionForm_step1.setTotalAmount();\r\n });\r\n }\r\n }\r\n },\r\n setTotalAmount: () => {\r\n const totalAmountInput = document.querySelector(finalInspectionForm_step1.constants.totalAmountElementSelector);\r\n var sum = 0;\r\n\r\n\r\n const allAddedAmounts = document.querySelectorAll(finalInspectionForm_step1.constants.allAddeddAmountsElementsSelector);\r\n if (allAddedAmounts && allAddedAmounts.length > 0) {\r\n\r\n allAddedAmounts.forEach((element) => {\r\n sum += parseInt(element.value);\r\n });\r\n }\r\n totalAmountInput.value = \"\";\r\n if (sum > 0) {\r\n totalAmountInput.value = `${sum} kr`;\r\n }\r\n \r\n },\r\n onConstructorInputChange: (input) => {\r\n var closestContainer = input.closest(finalInspectionForm_step1.constants.modifyConstructorContainer);\r\n const constructorNameElement = closestContainer.querySelector(finalInspectionForm_step1.constants.constructorNameElementSelector);\r\n constructorNameElement.innerHTML = \"\";\r\n constructorNameElement.dataset.constructoridentifier = \"\";\r\n var value = input.value;\r\n if (value && value.length > 5) {\r\n (async () => {\r\n const response = await fetch(`${site.constants.api.finalinspection.findcontractorinfo}/${value}`, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({ \r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n\r\n const data = await response.json();\r\n\r\n if (data.ok) {\r\n constructorNameElement.innerHTML = data.name;\r\n constructorNameElement.dataset.constructoridentifier = value;\r\n }\r\n else {\r\n constructorNameElement.innerHTML = data.errorMessage;\r\n }\r\n }\r\n })();\r\n }\r\n \r\n },\r\n onRemoveConstructorInputChange: (container) => {\r\n\r\n const btn = container.querySelector(\"button[data-btnremove]\");\r\n\r\n if (btn) {\r\n btn.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n let closestContainer = event.target.closest(finalInspectionForm_step1.constants.modifyConstructorContainer);\r\n if (closestContainer) {\r\n closestContainer.remove();\r\n }\r\n });\r\n }\r\n },\r\n onAddConstructorSetData: (form, container) => {\r\n\r\n const sourceContractor = form.querySelector(finalInspectionForm_step1.constants.constructorElementSelector);\r\n const sourceAmount = form.querySelector(finalInspectionForm_step1.constants.amountElementSelector);\r\n const sourceFile = form.querySelector(finalInspectionForm_step1.constants.fileElementSelector);\r\n\r\n const targetContractor = container.querySelector(finalInspectionForm_step1.constants.constructorElementSelector);\r\n const targetAmount = container.querySelector(finalInspectionForm_step1.constants.amountElementSelector);\r\n const targetFile = container.querySelector(finalInspectionForm_step1.constants.fileElementSelector);\r\n\r\n targetContractor.value = sourceContractor.value;\r\n targetAmount.value = sourceAmount.value;\r\n\r\n if (sourceFile.files && sourceFile.files.length > 0) {\r\n // Använd DataTransfer API för att uppdatera file upload control:en med rätt lista av filer\r\n const dataTransfer = new DataTransfer();\r\n for (f = 0; f < sourceFile.files.length; f++) {\r\n dataTransfer.items.add(sourceFile.files[f]);\r\n }\r\n targetFile.files = dataTransfer.files;\r\n sourceFile.files = new DataTransfer().files;\r\n }\r\n\r\n\r\n finalInspectionForm_step1.onConstructorInputChange(targetContractor);\r\n\r\n sourceContractor.value = \"\";\r\n sourceAmount.value = \"\";\r\n\r\n finalInspectionForm_step1.onConstructorInputChange(sourceContractor);\r\n },\r\n getComment: () => {\r\n const commentElement = document.querySelector(finalInspectionForm_step1.constants.commentSelector);\r\n return commentElement?.value;\r\n },\r\n getFiles: () => {\r\n const dataTransfer = new DataTransfer();\r\n\r\n const addedConstructors = document.querySelector(finalInspectionForm_step1.constants.addedConstructorsContainerElementSelector);\r\n if (addedConstructors) {\r\n const addedFiles = addedConstructors.querySelectorAll(finalInspectionForm_step1.constants.fileElementSelector);\r\n if (addedFiles && addedFiles.length > 0) {\r\n addedFiles.forEach((addedFileInput) => {\r\n\r\n if (addedFileInput.files && addedFileInput.files.length > 0) {\r\n for (f = 0; f < addedFileInput.files.length; f++) {\r\n dataTransfer.items.add(addedFileInput.files[f]);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n const houseFile = document.querySelector(finalInspectionForm_step1.constants.fileDrawingSelector);\r\n if (houseFile) {\r\n if (houseFile.files && houseFile.files.length > 0) { \r\n for (f = 0; f < houseFile.files.length; f++) {\r\n dataTransfer.items.add(houseFile.files[f]);\r\n }\r\n \r\n }\r\n }\r\n return dataTransfer;\r\n },\r\n\r\n onAddConstructor: () => {\r\n var form = document.querySelector(finalInspectionForm_step1.constants.modifyConstructorContainer);\r\n if (form) {\r\n form.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n const target = document.querySelector(finalInspectionForm_step1.constants.addedConstructorsContainerElementSelector);\r\n const template = document.querySelector(finalInspectionForm_step1.constants.addConstructorsTemplateElementSelector);\r\n if (target && template) {\r\n const clone = template.content.cloneNode(true);\r\n finalInspectionForm_step1.bindOnConstructorInputChange(clone);\r\n finalInspectionForm_step1.onRemoveConstructorInputChange(clone); \r\n finalInspectionForm_step1.bindOnAmountInputChange(clone);\r\n finalInspectionForm_step1.onAddConstructorSetData(event.target, clone);\r\n \r\n target.appendChild(clone);\r\n finalInspectionForm_step1.setTotalAmount();\r\n }\r\n \r\n });\r\n }\r\n },\r\n onContinue: () => {\r\n var form = document.querySelector(finalInspectionForm_step1.constants.continueFormSelector);\r\n if (form) {\r\n form.addEventListener('submit', (event) => {\r\n event.preventDefault(); \r\n\r\n var allAddedAmounts = document.querySelectorAll(finalInspectionForm_step1.constants.allAddeddAmountsElementsSelector);\r\n var container = document.querySelector(finalInspectionForm_step1.constants.step1formSelector);\r\n\r\n if ((allAddedAmounts && allAddedAmounts.length > 0) || (container.dataset.insurancenumber && container.dataset.insurancenumber.length > 0)) {\r\n finalInspectionForm_step2.goToStep();\r\n }\r\n else {\r\n const errorElement = form.querySelector(\"[data-error]\");\r\n if (errorElement) {\r\n errorElement.classList.remove(\"d-none\");\r\n setTimeout(() => { errorElement.classList.add(\"d-none\"); }, 3000);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('finalinspectionform').length == 1) {\r\n finalInspectionForm_step1.init();\r\n }\r\n});\r\n","const finalInspectionForm_step2 = {\r\n constants: {\r\n hiddenCssClass: 'd-none',\r\n allStepsSelector: \"[data-finalinspectionformstep]\",\r\n step2formSelector: \"[data-finalinspectionformstep='2']\", \r\n goBackButtonSelector: \"[data-finalinspectionformstep='2'] form button[data-goback]\",\r\n continueFormSelector: \"[data-finalinspectionformstep='2'] form\",\r\n dateValueSelector: \"[data-finalinspectionformstep='2'] input[data-date]\"\r\n \r\n \r\n },\r\n goToStep: () => {\r\n\r\n const theStep = document.querySelector(finalInspectionForm_step2.constants.step2formSelector);\r\n const allSteps = document.querySelectorAll(finalInspectionForm_step2.constants.allStepsSelector);\r\n allSteps.forEach((step) => {\r\n step.classList.add(finalInspectionForm_step2.constants.hiddenCssClass);\r\n });\r\n theStep.classList.remove(finalInspectionForm_step2.constants.hiddenCssClass);\r\n },\r\n init: () =>\r\n {\r\n finalInspectionForm_step2.onGoBack();\r\n finalInspectionForm_step2.onContinue();\r\n },\r\n getSelectedDate: () => {\r\n const dateInput = document.querySelector(finalInspectionForm_step2.constants.dateValueSelector);\r\n return dateInput?.value;\r\n },\r\n onGoBack: () => {\r\n\r\n const goBackButton = document.querySelector(finalInspectionForm_step2.constants.goBackButtonSelector);\r\n if (goBackButton) {\r\n goBackButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n finalInspectionForm_step1.goToStep();\r\n });\r\n }\r\n \r\n },\r\n onContinue: () => {\r\n\r\n const form = document.querySelector(finalInspectionForm_step2.constants.continueFormSelector);\r\n if (form) {\r\n form.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n finalInspectionForm_step3.goToStep();\r\n });\r\n }\r\n\r\n }\r\n\r\n \r\n \r\n\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('finalinspectionform').length == 1) {\r\n finalInspectionForm_step2.init();\r\n }\r\n});\r\n","const finalInspectionForm_step3 = {\r\n isOffer: false,\r\n constants: {\r\n hiddenCssClass: 'd-none',\r\n allStepsSelector: \"[data-finalinspectionformstep]\",\r\n step3formSelector: \"[data-finalinspectionformstep='3']\", \r\n goBackButtonSelector: \"[data-finalinspectionformstep='3'] form button[data-goback]\",\r\n form: \"[data-finalinspectionformstep='3'] form\",\r\n priceSpanSelector: \"span[data-yourprice]\",\r\n dateSpanSelector: \"span[data-yourdate]\",\r\n totalAmountSummarySelector: \"span[data-totalamountsummary]\",\r\n placeOfferButtonSelector: \"[data-finalinspectionformstep='3'] form button[data-requestaquote]\",\r\n placeOrderButtonSelector: \"[data-finalinspectionformstep='3'] form button[data-placeorder]\",\r\n \r\n \r\n },\r\n goToStep: () => {\r\n\r\n finalInspectionForm_step3.calculatePrice();\r\n },\r\n calculatePrice: () => {\r\n\r\n var body = {\r\n prices: new Array(),\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n };\r\n var allAddedAmounts = document.querySelectorAll(finalInspectionForm_step1.constants.allAddeddAmountsElementsSelector);\r\n if (allAddedAmounts && allAddedAmounts.length > 0) {\r\n\r\n\r\n allAddedAmounts.forEach((amountInput) => {\r\n body.prices.push(amountInput.value);\r\n });\r\n }\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.finalinspection.calculateprice, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json', \r\n },\r\n body: JSON.stringify(body)\r\n });\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n\r\n const data = await response.json();\r\n\r\n if (data.ok) {\r\n finalInspectionForm_step3.setPriceAndDate(data.totalPrice);\r\n finalInspectionForm_step3.show();\r\n }\r\n \r\n }\r\n })(); \r\n \r\n },\r\n setPriceAndDate: (price) => {\r\n var priceElement = document.querySelector(finalInspectionForm_step3.constants.priceSpanSelector);\r\n var totalAmountSummaryElement = document.querySelector(finalInspectionForm_step3.constants.totalAmountSummarySelector);\r\n if (priceElement) {\r\n priceElement.innerHTML = `${price}*`;\r\n }\r\n if (totalAmountSummaryElement) {\r\n totalAmountSummaryElement.innerHTML = price;\r\n }\r\n\r\n var dateElement = document.querySelector(finalInspectionForm_step3.constants.dateSpanSelector);\r\n \r\n var selectedDate = finalInspectionForm_step2.getSelectedDate();\r\n if (dateElement) {\r\n dateElement.innerHTML = selectedDate;\r\n }\r\n },\r\n show: () => {\r\n const theStep = document.querySelector(finalInspectionForm_step3.constants.step3formSelector);\r\n const allSteps = document.querySelectorAll(finalInspectionForm_step3.constants.allStepsSelector);\r\n allSteps.forEach((step) => {\r\n step.classList.add(finalInspectionForm_step3.constants.hiddenCssClass);\r\n });\r\n theStep.classList.remove(finalInspectionForm_step3.constants.hiddenCssClass);\r\n },\r\n init: () =>\r\n {\r\n finalInspectionForm_step3.onGoBack();\r\n finalInspectionForm_step3.onSubmit();\r\n },\r\n onGoBack: () => {\r\n\r\n const goBackButton = document.querySelector(finalInspectionForm_step3.constants.goBackButtonSelector);\r\n if (goBackButton) {\r\n goBackButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n finalInspectionForm_step2.goToStep();\r\n });\r\n } \r\n },\r\n onSubmit: () => {\r\n\r\n const form = document.querySelector(finalInspectionForm_step3.constants.form);\r\n\r\n const placeOrderButton = document.querySelector(finalInspectionForm_step3.constants.placeOrderButtonSelector);\r\n const placeOfferButton = document.querySelector(finalInspectionForm_step3.constants.placeOfferButtonSelector); \r\n if (form && placeOrderButton && placeOfferButton) {\r\n const submitButton = form.querySelector(\"button[type='submit']\");\r\n\r\n placeOfferButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n finalInspectionForm_step3.isOffer = true;\r\n submitButton.click();\r\n });\r\n placeOrderButton.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n finalInspectionForm_step3.isOffer = false;\r\n submitButton.click();\r\n });\r\n form.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n finalInspectionForm_step3.doSubmit(finalInspectionForm_step3.isOffer);\r\n });\r\n\r\n }\r\n }, \r\n doSubmit: (isOffer) =>\r\n {\r\n let requestBody = {\r\n submitData: {\r\n product: {},\r\n person: null,\r\n contractors: null\r\n },\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n };\r\n\r\n //contractors\r\n requestBody.submitData.contractors = finalInspectionForm_step3.buildContractorsArray();\r\n\r\n //product\r\n requestBody.submitData.product.isOffer = isOffer;\r\n\r\n //date\r\n requestBody.submitData.requestedDate = finalInspectionForm_step2.getSelectedDate();\r\n\r\n //comment\r\n requestBody.submitData.comment = finalInspectionForm_step1.getComment();\r\n\r\n //person\r\n requestBody.submitData.person = finalInspectionForm_step3.buildPerson();\r\n \r\n\r\n //files\r\n let files = finalInspectionForm_step1.getFiles();\r\n \r\n if (files && files.items.length > 0) {\r\n finalInspectionForm_step3.doSubmitFilesAndData(files, requestBody);\r\n }\r\n else {\r\n finalInspectionForm_step3.doSubmitData(requestBody);\r\n }\r\n\r\n \r\n \r\n },\r\n doSubmitData: (requestBody) => {\r\n (async () => {\r\n const response = await fetch(site.constants.api.finalinspection.submit, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json' \r\n },\r\n body: JSON.stringify(requestBody)\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n\r\n const data = await response.json();\r\n\r\n if (data.ok) {\r\n finalInspectionForm_step4.goToStep();\r\n }\r\n else {\r\n\r\n }\r\n }\r\n })();\r\n },\r\n doSubmitFilesAndData: (files, requestBody) => {\r\n\r\n const formData = new FormData();\r\n \r\n for (let i = 0; i < files.files.length; i += 1) {\r\n const file = files.files[i];\r\n formData.append(\"file\", file);\r\n }\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.finalinspection.submitfiles, {\r\n method: 'POST', \r\n body: formData \r\n });\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n finalInspectionForm_step3.doSubmitData(requestBody); \r\n }\r\n })();\r\n },\r\n buildPerson: () => {\r\n\r\n const form = document.querySelector(finalInspectionForm_step3.constants.form);\r\n if (form) {\r\n const formData = new FormData(form);\r\n return Object.fromEntries(formData.entries());\r\n }\r\n return null; \r\n },\r\n buildContractorsArray: () => {\r\n const addedContracorsRoot = document.querySelector(finalInspectionForm_step1.constants.addedConstructorsContainerElementSelector);\r\n if (addedContracorsRoot) {\r\n const allAddedContractors = addedContracorsRoot.querySelectorAll(finalInspectionForm_step1.constants.modifyConstructorContainer);\r\n if (allAddedContractors && allAddedContractors.length > 0) {\r\n\r\n let contractorsArray = new Array();\r\n\r\n allAddedContractors.forEach((addedContractor) => {\r\n\r\n let constructorNameElement = addedContractor.querySelector(finalInspectionForm_step1.constants.constructorNameElementSelector);\r\n contractorsArray.push(\r\n {\r\n amount: addedContractor.querySelector(finalInspectionForm_step1.constants.amountElementSelector).value,\r\n identifier: constructorNameElement.dataset.constructoridentifier\r\n \r\n });\r\n });\r\n\r\n return contractorsArray;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n \r\n \r\n\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('finalinspectionform').length == 1) {\r\n finalInspectionForm_step3.init();\r\n }\r\n});\r\n","const finalInspectionForm_step4 = {\r\n constants: {\r\n hiddenCssClass: 'd-none',\r\n allStepsSelector: \"[data-finalinspectionformstep]\",\r\n step4formSelector: \"[data-finalinspectionformstep='4']\" \r\n },\r\n goToStep: () => {\r\n\r\n const theStep = document.querySelector(finalInspectionForm_step4.constants.step4formSelector);\r\n const allSteps = document.querySelectorAll(finalInspectionForm_step4.constants.allStepsSelector);\r\n allSteps.forEach((step) => {\r\n step.classList.add(finalInspectionForm_step4.constants.hiddenCssClass);\r\n });\r\n theStep.classList.remove(finalInspectionForm_step4.constants.hiddenCssClass);\r\n }\r\n};\r\n","const flexibleForm = {\r\n constants: {\r\n showAllValue: \"-1\",\r\n hiddenCssClass: 'd-none',\r\n formSelector: \"form\",\r\n confirmationSelector: \"[data-flexibleformconfirmation]\"\r\n },\r\n init: (id) => {\r\n let flexibleFormElement = document.getElementById(id);\r\n\r\n const formElement = flexibleFormElement.querySelector(\"form\");\r\n const confirmationElement = document.querySelector(`[data-flexibleformconfirmation='${id}']`); \r\n\r\n flexibleForm.initHeight(formElement, confirmationElement);\r\n flexibleForm.onSubmitForm(formElement, confirmationElement); \r\n\r\n },\r\n initHeight: (formElement, confirmationElement) => {\r\n if (formElement && confirmationElement) {\r\n\r\n var clientHeight = formElement.clientHeight;\r\n confirmationElement.style.minHeight = `${clientHeight}px`;\r\n }\r\n },\r\n \r\n onCleanupForm: (formElement) => {\r\n let allInputs = formElement.querySelector(\"input\");\r\n let allTextareas = formElement.querySelector(\"textarea\");\r\n \r\n if (allInputs && allInputs.length > 0) {\r\n allInputs.forEach((element) => {\r\n element.value = \"\";\r\n });\r\n }\r\n if (allTextareas && allTextareas.length > 0) {\r\n allTextareas.forEach((element) => {\r\n element.value = \"\";\r\n });\r\n }\r\n\r\n },\r\n onSubmitForm: (formElement, confirmationElement) => {\r\n\r\n if (formElement && confirmationElement) {\r\n\r\n let spinner = formElement.querySelector(\"[data-submitspinner]\"); \r\n let submitButton = formElement.querySelector(\"[type='submit']\");\r\n\r\n formElement.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n submitButton.disabled = true;\r\n \r\n spinner.classList.toggle(\"d-none\");\r\n\r\n const formData = new FormData();\r\n\r\n var fileElements = formElement.querySelectorAll(\"[type='file']\")\r\n\r\n if (fileElements && fileElements.length > 0) {\r\n fileElements.forEach((fileElement) => {\r\n if (fileElement.files.length > 0) {\r\n\r\n\r\n for (let i = 0; i < fileElement.files.length; i += 1) {\r\n const file = fileElement.files[i];\r\n formData.append(\"file\", file);\r\n }\r\n\r\n\r\n }\r\n })\r\n }\r\n\r\n var inputElements = formElement.querySelectorAll(\"input, textarea\");\r\n if (inputElements && inputElements.length > 0) {\r\n var arr = new Array();\r\n inputElements.forEach((element) => {\r\n\r\n var value = element.value;\r\n \r\n var type = element.getAttribute(\"type\");\r\n \r\n if (\"checkbox\" === type) {\r\n if (!element.hasAttribute(\"data-consent\")) {\r\n value = \"Nej\";\r\n if (element.checked) {\r\n value = \"Ja\";\r\n }\r\n }\r\n }\r\n else if (\"file\" == type) {\r\n if (element.files.length > 0) {\r\n var filesArr = new Array();\r\n for (let i = 0; i < element.files.length; i += 1) {\r\n const file = element.files[i];\r\n filesArr.push(file.name);\r\n }\r\n if (filesArr.length > 0) {\r\n value = filesArr.join();\r\n }\r\n }\r\n }\r\n \r\n\r\n if (value && value.length > 0) {\r\n var label = formElement.querySelector(`[for=\"${element.id}\"]`);\r\n if (label) {\r\n arr.push({ v: value, l: label.innerHTML, t: element.dataset.formtype });\r\n }\r\n }\r\n })\r\n if (arr.length > 0) {\r\n formData.append(\"data\", JSON.stringify(arr));\r\n }\r\n }\r\n formData.append(\"culture\", site.constants.globals.ctxCulture);\r\n formData.append(\"csrf\", site.constants.globals.antiforgeryToken);\r\n\r\n (async () => {\r\n const response = await fetch(formElement.action, {\r\n method: 'POST', \r\n body:formData\r\n });\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n flexibleForm.onCleanupForm(formElement);\r\n formElement.closest(\"[data-flexibleform]\").classList.add(\"d-none\");\r\n confirmationElement.classList.remove(\"d-none\");\r\n confirmationElement.scrollTo();\r\n const data = await response.json();\r\n //articlesList.articlesListContainer.innerHTML = \"\";\r\n //if (data.result.result.result) {\r\n // articlesList.articlesListContainer.innerHTML = data.result.result.html;\r\n //}\r\n }\r\n })();\r\n });\r\n }\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var flexibleForms = document.querySelectorAll(\"[data-flexibleform]\");\r\n if (flexibleForms != null && flexibleForms.length > 0) {\r\n flexibleForms.forEach((element) => {\r\n flexibleForm.init(element.id);\r\n });\r\n }\r\n});\r\n","const imageAndTextList = {\r\n constants: {\r\n activeBtnClass: 'active',\r\n imagetextCardSelector: '.imagetext-card',\r\n paginationListItemLinkSelector: '.imageandtextlist-wrapper .pagination [data-pagelink]',\r\n },\r\n\r\n listContainer: document.querySelector('[data-imageandtextlistcontainer]'),\r\n spinnerContainer: document.querySelector('[data-imageandtextlistspinner ]'),\r\n\r\n init: () => {\r\n imageAndTextList.bindPager();\r\n imageAndTextList.bindCardClicks(); \r\n },\r\n\r\n doSearch: options => {\r\n imageAndTextList.toggleSpinner();\r\n imageAndTextList.toggleResult();\r\n\r\n (async () => {\r\n const element = document.querySelector('.imageandtextlist')\r\n const contentKey = element.dataset.contentkey;\r\n const blockKey = element.dataset.blockkey;\r\n const curentPageUrl = element.dataset.pageurl;\r\n\r\n const response = await fetch(site.constants.api.imageandtextlist, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n contentKey: contentKey,\r\n blockKey: blockKey,\r\n homeId: site.constants.globals.homeItemId,\r\n culture: site.constants.globals.ctxCulture,\r\n currentPageUrl: curentPageUrl,\r\n page: options.page\r\n })\r\n })\r\n\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n console.log('response', data);\r\n imageAndTextList.listContainer.innerHTML = data.html;\r\n \r\n } else {\r\n console.log(`something went wrong, HTTP ${response.status}`)\r\n const errorData = await response.json();\r\n console.log('error response', errorData);\r\n }\r\n \r\n imageAndTextList.bindPager();\r\n imageAndTextList.bindCardClicks();\r\n imageAndTextList.toggleSpinner();\r\n imageAndTextList.toggleResult();\r\n window.history.pushState(null, null, options.url);\r\n })()\r\n },\r\n\r\n toggleSpinner: () => {\r\n console.log('toggling loading spinner');\r\n imageAndTextList.spinnerContainer.classList.toggle('d-none');\r\n },\r\n\r\n toggleResult: () => {\r\n imageAndTextList.listContainer.classList.toggle('d-none');\r\n },\r\n\r\n bindPager: () => {\r\n imageAndTextList.listContainer.querySelectorAll(imageAndTextList.constants.paginationListItemLinkSelector).forEach(element => {\r\n element.addEventListener('click', event => {\r\n event.preventDefault();\r\n imageAndTextList.listContainer.scrollIntoView();\r\n imageAndTextList.doSearch({ page: event.target.dataset.pagelink, url: event.target.href});\r\n })\r\n })\r\n },\r\n\r\n bindCardClicks: () => {\r\n imageAndTextList.listContainer.querySelectorAll(imageAndTextList.constants.imagetextCardSelector).forEach(element => {\r\n element.addEventListener('click', event => {\r\n window.location = `${window.location.origin}${element.dataset.href}` \r\n })\r\n })\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('imageandtextlist-wrapper').length === 1) {\r\n imageAndTextList.init();\r\n }\r\n});\r\n","const imageGallery = {\r\n\r\n init: () => {\r\n\r\n var galleries = document.querySelectorAll(\".imagegallery\");\r\n if (galleries && galleries.length > 0) {\r\n galleries.forEach((gallery) => {\r\n\r\n var modalId = gallery.dataset.modalid;\r\n var images = gallery.querySelectorAll(\".imagegallery-images-item\");\r\n if (images && images.length > 0) {\r\n images.forEach((imgItem) => {\r\n imgItem.addEventListener(\"click\", () => {\r\n var img = imgItem.querySelector(\"img\");\r\n\r\n var clickedIndex = img.dataset.index;\r\n\r\n var carouselItems = gallery.querySelectorAll(\".carousel-item\");\r\n if (carouselItems && carouselItems.length > 0) {\r\n carouselItems.forEach((carouselItem) => {\r\n carouselItem.classList.remove(\"active\");\r\n\r\n var carouselIndex = carouselItem.dataset.index;\r\n if (carouselIndex === clickedIndex) {\r\n carouselItem.classList.add(\"active\");\r\n }\r\n });\r\n }\r\n\r\n var modal = new bootstrap.Modal(document.getElementById(modalId), { ride: false, interval: false, keyboard: true, touch:true})\r\n modal.show();\r\n })\r\n });\r\n }\r\n })\r\n }\r\n }\r\n}\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n imageGallery.init(); \r\n});","const mostRecentArticles = {\r\n init: () => {\r\n mostRecentArticles.bindPagers();\r\n mostRecentArticles.setupColumns();\r\n },\r\n setupColumns: () => {\r\n\r\n const allContainers = document.querySelectorAll('[data-mostrecentarticlescontainerinner]');\r\n\r\n if (allContainers && allContainers.length > 0) {\r\n allContainers.forEach((allContainer) => {\r\n const has2Col = allContainer.closest('.cardlist-wrapper')?.classList.contains(\"cols-2\");\r\n if (has2Col) {\r\n allContainer.classList.add(\"cols-2\");\r\n }\r\n });\r\n }\r\n \r\n },\r\n doSearch: options => {\r\n const element = options.target.closest('.mostrecentarticles');\r\n const contentKey = element.dataset.contentkey;\r\n const blockKey = element.dataset.blockkey;\r\n const blockElement = document.querySelector(`[data-blockkey=\"${blockKey}\"]`);\r\n const container = blockElement.querySelector('[data-mostrecentarticlescontainer]');\r\n const spinner = blockElement.querySelector('[data-mostrecentarticlesspinner]');\r\n const has2Col = blockElement.closest('.cardlist-wrapper')?.classList.contains(\"cols-2\");\r\n\r\n const yOffset = -280;\r\n const y = element.getBoundingClientRect().top + window.scrollY + yOffset; \r\n window.scrollTo({ top: y, behavior: 'smooth' });\r\n\r\n spinner.classList.toggle('d-none');\r\n container.classList.toggle('d-none');\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.mostrecentarticles, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n contentKey: contentKey,\r\n blockKey: blockKey,\r\n homeId: site.constants.globals.homeItemId,\r\n culture: site.constants.globals.ctxCulture,\r\n page: options.page,\r\n has2Col: has2Col\r\n })\r\n });\r\n\r\n if (response.status === 200) {\r\n const data = await response.json();\r\n container.innerHTML = data.html;\r\n } else {\r\n const errorData = await response.json();\r\n console.log('error response');\r\n console.log(errorData);\r\n }\r\n\r\n mostRecentArticles.bindPager(container.querySelector(\".pagination\"));\r\n site.lazyLoad.update();\r\n\r\n spinner.classList.toggle('d-none');\r\n container.classList.toggle('d-none');\r\n window.history.pushState(null, null, options.target.href);\r\n })()\r\n\r\n },\r\n\r\n bindPager: (paginationElement) => {\r\n paginationElement.querySelectorAll('[data-pagelink]').forEach(element => {\r\n element.addEventListener('click', event => {\r\n event.preventDefault();\r\n mostRecentArticles.doSearch({ page: event.target.dataset.pagelink, target: event.target });\r\n });\r\n });\r\n },\r\n bindPagers: () => {\r\n document.querySelectorAll('[data-mostrecentarticlescontainer]').forEach(container => {\r\n container.querySelectorAll('.mostrecentarticles-wrapper .pagination').forEach(element => {\r\n mostRecentArticles.bindPager(element); \r\n });\r\n });\r\n }\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('mostrecentarticles-wrapper').length > 0) {\r\n mostRecentArticles.init();\r\n }\r\n});","var previousScrollPosition = window.pageYOffset;\r\nlet headerHeight = document.querySelector(\".header\")?.offsetHeight;\r\n\r\nconst topNavigation = {\r\n\r\n init: () => {\r\n window.onscroll = function () {\r\n var currentScrollPosition = window.pageYOffset;\r\n\r\n if (previousScrollPosition > currentScrollPosition) {\r\n document.querySelector(\".header\").style.top = \"0\";\r\n } else if (currentScrollPosition > headerHeight) {\r\n document.querySelector(\".header\").style.top = -headerHeight + -1 + \"px\";\r\n }\r\n previousScrollPosition = currentScrollPosition;\r\n };\r\n topNavigation.onFakeSeidSubmit();\r\n },\r\n onFakeSeidSubmit: () => {\r\n const form = document.getElementById(\"fake-seid-form\");\r\n if (form) {\r\n form.addEventListener(\"submit\", (event) => {\r\n\r\n event.preventDefault();\r\n const input = form.querySelector(\"input\");\r\n\r\n if (input) {\r\n\r\n const value = input.value;\r\n if (value && value.length > 0) {\r\n site.helpers.setCookie(\"fake-seid\", value, 7);\r\n }\r\n else {\r\n site.helpers.setCookie(\"fake-seid\", \"\", 0);\r\n }\r\n\r\n window.location.reload();\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n};\r\n\r\nconst mainNavigation =\r\n{\r\n init: () => {\r\n const toggleBtn = document.querySelectorAll('.navbar-toggler');\r\n const toggleClass = function () {\r\n document.body.classList.toggle('menu-open');\r\n };\r\n\r\n for (var i = 0; i < toggleBtn.length; i++) {\r\n toggleBtn[i].addEventListener('click', toggleClass, false);\r\n }\r\n\r\n const subMenuBtns = document.querySelectorAll('.submenu-toggle');\r\n const subMenuToggleFunc = (event) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n // toggle the 'toggled' class on the toggle button itself\r\n const toggleButton = event.target;\r\n toggleButton.classList.toggle('toggled');\r\n\r\n // and also toggle hiding/displaying the submenu\r\n const subMenu = toggleButton.parentElement.nextElementSibling;\r\n subMenu.classList.toggle('show');\r\n if (!subMenu.classList.contains('show'))\r\n subMenu.style = \"display: none !important;\"\r\n else\r\n subMenu.style = \"\";\r\n };\r\n for (var i = 0; i < subMenuBtns.length; i++)\r\n subMenuBtns[i].addEventListener('click', subMenuToggleFunc, false);\r\n\r\n mainNavigation.on3rdLevelMenuDisplay();\r\n },\r\n on3rdLevelMenuDisplay: () => {\r\n const cssRight = \"menu-to-the-right\";\r\n const cssLeft = \"menu-to-the-left\";\r\n const hoverItems = document.querySelectorAll('.dropdown-item.has-sub-pages');\r\n if (hoverItems && hoverItems.length > 0) {\r\n\r\n hoverItems.forEach((element) => {\r\n element.addEventListener(\"mouseover\", (event) => {\r\n\r\n const dropDownMenu = event.target.closest(\".dropdown-submenu\").querySelector(\".dropdown-menu\");\r\n if (dropDownMenu && !dropDownMenu.classList.contains(cssRight) && !dropDownMenu.classList.contains(cssLeft)) {\r\n var windowWidth = window.innerWidth;\r\n var cssClass = cssRight;\r\n var menuRect = dropDownMenu.getBoundingClientRect();\r\n\r\n if (menuRect) {\r\n if (menuRect.right + 250 > windowWidth) {\r\n var cssClass = cssLeft;\r\n }\r\n }\r\n dropDownMenu.classList.add(cssClass);\r\n }\r\n });\r\n });\r\n\r\n }\r\n }\r\n\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n mainNavigation.init();\r\n topNavigation.init();\r\n});\r\n","const partnerFiles = {\r\n\r\n init: () => {\r\n\r\n\r\n var forms = document.querySelectorAll(\"[data-partnerfilesform]\");\r\n if (forms && forms.length > 0) {\r\n forms.forEach((form) => {\r\n\r\n form.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n partnerFiles.doSubmit(form);\r\n });\r\n });\r\n }\r\n },\r\n doSubmit: (form) => {\r\n\r\n var fileElements = form.querySelectorAll(\"[type='file']\");\r\n var submitButton = form.querySelector(\"[type='submit']\");\r\n if (fileElements && submitButton) {\r\n\r\n var promises = [];\r\n var spinnerElement = submitButton.querySelector(\".spinner-border\");\r\n var fileElementsCount = fileElements.length;\r\n for (var c = 0; c < fileElementsCount; c++) {\r\n submitButton.disabled = true\r\n spinnerElement.classList.remove(\"d-none\");\r\n\r\n var fileElement = fileElements[c];\r\n if (fileElement.files.length > 0) {\r\n var action = fileElements[c].dataset.action;\r\n const formData = new FormData();\r\n for (let i = 0; i < fileElement.files.length; i += 1) {\r\n const file = fileElement.files[i];\r\n formData.append(\"file\", file);\r\n }\r\n\r\n (async () => {\r\n promises.push(fetch(action, {\r\n method: 'POST',\r\n body: formData\r\n }));\r\n })();\r\n }\r\n }\r\n if (promises.length > 0) {\r\n Promise.all(promises).then(resp => Promise.all(resp.map(r => r.json())))\r\n .then(data => \r\n {\r\n submitButton.disabled = false;\r\n spinnerElement.classList.add(\"d-none\");\r\n for (var c = 0; c < fileElementsCount; c++) {\r\n fileElements[c].value = \"\";\r\n }\r\n if (data.length > 0) {\r\n for (var c = 0; c < data.length; c++) {\r\n if (data[c].errorHtml.length >0) {\r\n var errorElement = document.createElement(\"div\");\r\n errorElement.classList.add(\"alert\");\r\n errorElement.classList.add(\"alert-danger\");\r\n errorElement.classList.add(\"mt-3\");\r\n errorElement.innerHTML = data[c].errorHtml;\r\n submitButton.after(errorElement);\r\n\r\n setTimeout(() => {\r\n errorElement.remove();\r\n }, 10000)\r\n }\r\n if (data[c].successHtml.length > 0) {\r\n var sucessElement = document.createElement(\"div\");\r\n sucessElement.classList.add(\"alert\");\r\n sucessElement.classList.add(\"alert-success\");\r\n sucessElement.classList.add(\"mt-3\");\r\n sucessElement.innerHTML = data[c].successHtml;\r\n submitButton.after(sucessElement);\r\n\r\n setTimeout(() => {\r\n sucessElement.remove();\r\n }, 10000)\r\n }\r\n\r\n }\r\n }\r\n \r\n //var j = await result.json();\r\n console.log(data);\r\n //let data = result.response.json();\r\n //alert(data);\r\n\r\n });\r\n }\r\n else {\r\n submitButton.disabled = false;\r\n spinnerElement.classList.add(\"d-none\");\r\n }\r\n\r\n }\r\n\r\n\r\n },\r\n\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('partnerfiles').length > 0) {\r\n partnerFiles.init();\r\n }\r\n});","const STORAGE_KEY = {\r\n OFFLINE_FORMS: \"offlineForms\",\r\n OFFLINE_ID: \"offlineId\",\r\n INSPECTION_ID: \"pendingInspectionId\",\r\n INSPECTION: \"pendingInspection\",\r\n BUILDINGS_TO_ADD: \"pendingBuildingsToAdd\",\r\n BUILDINGS_TO_REMOVE: \"pendingBuildingsToRemove\",\r\n ROWS_TO_ADD: \"pendingRowsToAdd\",\r\n ROWS_TO_REMOVE: \"pendingRowsToRemove\",\r\n ROWS_TO_EDIT: \"pendingRowsToEdit\",\r\n SORT: \"pendingSort\"\r\n};\r\n\r\nconst EXPIRATION_DAYS = 7;\r\n\r\nfunction setWithExpiry(key, value) {\r\n const now = new Date();\r\n const expiry = now.getTime() + EXPIRATION_DAYS * 24 * 60 * 60 * 1000;\r\n const item = {\r\n value: value,\r\n expiry: expiry\r\n };\r\n localStorage.setItem(key, JSON.stringify(item));\r\n}\r\n\r\nfunction getWithExpiry(key) {\r\n const itemStr = localStorage.getItem(key);\r\n if (!itemStr) return null;\r\n\r\n const item = JSON.parse(itemStr);\r\n const now = new Date();\r\n\r\n if (now.getTime() > item.expiry) {\r\n localStorage.removeItem(key);\r\n return null;\r\n }\r\n return item.value;\r\n}\r\n\r\nfunction getStorageAllOfflineForms() {\r\n\r\n try {\r\n return getWithExpiry(STORAGE_KEY.OFFLINE_FORMS) || {};\r\n } catch (error) {\r\n console.error(\"Error retrieving offline forms:\", error);\r\n return {};\r\n }\r\n}\r\n\r\nfunction getStorageOfflineForm(providedOfflineId) {\r\n const offlineId = providedOfflineId ?? localStorage.getItem(STORAGE_KEY.OFFLINE_ID);\r\n const allForms = getStorageAllOfflineForms();\r\n return allForms[offlineId] || {};\r\n}\r\n\r\nfunction getOfflineFormData(key, offlineFormId) {\r\n const form = getStorageOfflineForm(offlineFormId);\r\n return form[key] || [];\r\n}\r\n\r\nfunction setOfflineFormData(key, data, offlineFormId) {\r\n try {\r\n const offlineId = offlineFormId ?? localStorage.getItem(STORAGE_KEY.OFFLINE_ID);\r\n const offlineForms = getStorageAllOfflineForms();\r\n if (!offlineForms[offlineId]) {\r\n offlineForms[offlineId] = {};\r\n }\r\n offlineForms[offlineId][key] = data;\r\n setWithExpiry(STORAGE_KEY.OFFLINE_FORMS, offlineForms);\r\n } catch (error) {\r\n console.error(`Error setting local storage data for key: ${key}`, error);\r\n }\r\n}\r\n\r\nfunction clearOfflineFormDataByKey(offlineFormId) {\r\n try {\r\n const offlineForms = getStorageAllOfflineForms();\r\n\r\n if (offlineForms[offlineFormId]) {\r\n delete offlineForms[offlineFormId];\r\n setWithExpiry(STORAGE_KEY.OFFLINE_FORMS, offlineForms);\r\n }\r\n } catch (error) {\r\n console.error(`Error clearing offline form data for offline id: ${offlineFormId}`, error);\r\n }\r\n}\r\n\r\nconst removeOfflineFormDataArrayById = (itemId, storageKey, offlineFormId) => {\r\n const offlineItems = getOfflineFormData(storageKey, offlineFormId);\r\n const updatedItems = offlineItems.filter(item => item.id !== itemId);\r\n setOfflineFormData(storageKey, updatedItems, offlineFormId);\r\n};\r\n\r\nconst updateInspectionIdInOfflineForm = (newId, storageKey, offlineFormId) => {\r\n let storageData = getOfflineFormData(storageKey, offlineFormId) || [];\r\n storageData.forEach(sd => sd.inspectionId = newId);\r\n setOfflineFormData(storageKey, storageData, offlineFormId);\r\n};\r\n\r\nconst findItemIndexInOfflineForm = (itemId, storageKey) => {\r\n const offlineItems = getOfflineFormData(storageKey);\r\n return offlineItems.findIndex(item => item?.id === itemId || item?.tmpId === itemId);\r\n};\r\n\r\nconst removeOfflineFormDataByIndex = (index, storageKey) => {\r\n const offlineItems = getOfflineFormData(storageKey);\r\n offlineItems.splice(index, 1);\r\n setOfflineFormData(storageKey, offlineItems);\r\n};\r\n\r\nconst appendToInOfflineFormArray = (itemId, itemObject, storageKey) => {\r\n const removedItems = getOfflineFormData(storageKey) ?? [];\r\n removedItems.push({ id: itemId, ...itemObject });\r\n setOfflineFormData(storageKey, removedItems);\r\n};\r\n\r\nconst updateIdInOfflineForm = (tmpId, newId, storageKey) => {\r\n let storageData = getOfflineFormData(storageKey) || [];\r\n\r\n let rowToUpdate = storageData.find(row => row.id === tmpId);\r\n if (rowToUpdate) {\r\n rowToUpdate.id = newId;\r\n setOfflineFormData(storageKey, storageData);\r\n }\r\n};\r\n\r\nasync function processStorageData(storageKey, action, offlineId) {\r\n const data = getOfflineFormData(storageKey, offlineId);\r\n if (data.length === 0) return;\r\n\r\n try {\r\n for (const item of data) {\r\n await action(item);\r\n }\r\n } catch (error) {\r\n console.error(`Error processing ${storageKey}:`, error);\r\n }\r\n};\r\n","const responsibleCache = {};\r\nlet lastKnownConnectivityStatus = null;\r\n\r\nconst registerinspection = {\r\n dragovershadow: null,\r\n editmodal: null,\r\n removeBuildingModalElement: null,\r\n constants: {\r\n rowFields: ['area', 'room', 'companyname', 'error', 'responsible', 'building'],\r\n hiddenCssClass: 'd-none',\r\n addrowButtonSelector: \"button[data-addrow]\",\r\n deleteIconHtml: \"\",\r\n editIconHtml: \"\"\r\n },\r\n init: (id) => {\r\n let componentElement = document.getElementById(id);\r\n localStorage.removeItem(STORAGE_KEY.OFFLINE_ID);\r\n registerinspection.initInspectionId(componentElement);\r\n registerinspection.setErrorsDataList(componentElement);\r\n registerinspection.selectResponsibleEvent(componentElement);\r\n registerinspection.initInspectionSaveListener(componentElement);\r\n registerinspection.initTdActionListener(componentElement);\r\n registerinspection.setDragRows(componentElement);\r\n registerinspection.onFileInputsChange(componentElement);\r\n registerinspection.onSubmit(componentElement);\r\n registerinspection.oncleanupfilesbuttons(componentElement);\r\n registerinspection.onEditRowSubmit(componentElement);\r\n registerinspection.initBuildingSaveListener(componentElement);\r\n registerinspection.initRemoveBuildingModal(componentElement);\r\n registerinspection.initShowRemoveBuildingModal(componentElement);\r\n registerinspection.initBuildingRemoveListener();\r\n registerinspection.initConnectivityListeners();\r\n registerinspection.initAddRowListener(componentElement);\r\n registerinspection.initRoomSelectListener(componentElement);\r\n },\r\n initInspectionId: (componentElement) => {\r\n if (!registerinspection.inspectionId) {\r\n const inspectionForm = componentElement.querySelector(\".registerinspection--form\");\r\n if (inspectionForm && inspectionForm.dataset.inspectiondid) {\r\n registerinspection.setInspectionId(inspectionForm.dataset.inspectiondid);\r\n }\r\n }\r\n },\r\n setInspectionId: (newId) => {\r\n if (!registerinspection.inspectionId) {\r\n registerinspection.inspectionId = newId;\r\n }\r\n },\r\n initConnectivityListeners: async () => {\r\n async function handleConnectivityChange() {\r\n await registerinspection.isConnected();\r\n }\r\n\r\n window.addEventListener(\"online\", handleConnectivityChange);\r\n window.addEventListener(\"offline\", handleConnectivityChange);\r\n\r\n await handleConnectivityChange();\r\n\r\n const intervalId = setInterval(async () => {\r\n await handleConnectivityChange();\r\n }, 5000);\r\n\r\n window.addEventListener('beforeunload', () => clearInterval(intervalId));\r\n },\r\n isConnected: async () => {\r\n const response = await isConnected();\r\n registerinspection.handleNetworkStatus(response);\r\n return response;\r\n },\r\n handleNetworkStatus: (isOnline) => {\r\n let componentElement = document;\r\n\r\n function updateBanner(isOnline) {\r\n let banners = componentElement.querySelectorAll(\".network-banner\");\r\n\r\n if (!banners) {\r\n console.warn(\"Network banner not found in the DOM.\");\r\n return;\r\n }\r\n banners.forEach(b => {\r\n b.classList.toggle(\"alert-success\", isOnline);\r\n b.classList.toggle(\"alert-danger\", !isOnline);\r\n b.innerText = isOnline ? offlineMode.bannerOnline : offlineMode.bannerOffline;\r\n b.style.display = \"block\";\r\n });\r\n\r\n setTimeout(async () => {\r\n const isOnline = await isConnected();\r\n\r\n if (isOnline) {\r\n banners.forEach(b => b.style.display = \"none\");\r\n }\r\n }, 5000);\r\n }\r\n\r\n async function updateFileInputs(isOnline) {\r\n const fileInputs = componentElement.querySelectorAll('input[type=\"file\"]');\r\n fileInputs.forEach(async input => {\r\n await registerinspection.updateTooltipForOffline(input, offlineMode.inputFileOfflineMsg, isOnline);\r\n });\r\n\r\n const submitInspection = componentElement.querySelector(\"#submit-inspection\");\r\n\r\n if (registerinspection.inspectionId && submitInspection) {\r\n const submitTooltip = componentElement.querySelector(\"#submit-inspection-tooltip\");\r\n await registerinspection.updateTooltipForOffline(submitTooltip, offlineMode.submitOfflineMsg, isOnline);\r\n }\r\n }\r\n\r\n function manageOfflineId() {\r\n let offlineIdElement = componentElement.querySelector(\"#offlineId\");\r\n let storedOfflineId = localStorage.getItem(STORAGE_KEY.OFFLINE_ID);\r\n\r\n const offlineId = (offlineIdElement?.value && offlineIdElement.value.trim() !== \"\")\r\n ? offlineIdElement.value\r\n : storedOfflineId || crypto.randomUUID();\r\n localStorage.setItem(STORAGE_KEY.OFFLINE_ID, offlineId);\r\n }\r\n\r\n async function handleConnectivityChange(isOnline) {\r\n\r\n if (isOnline !== lastKnownConnectivityStatus) {\r\n lastKnownConnectivityStatus = isOnline;\r\n\r\n updateBanner(isOnline);\r\n\r\n await updateFileInputs(isOnline);\r\n manageOfflineId();\r\n\r\n if (isOnline) {\r\n registerinspection.syncPendingInspectionForm(componentElement);\r\n }\r\n registerinspection.handleDisabledElements(componentElement, isOnline);\r\n }\r\n }\r\n\r\n handleConnectivityChange(isOnline);\r\n },\r\n syncPendingInspectionForm: async (componentElement) => {\r\n const offlineId = localStorage.getItem(STORAGE_KEY.OFFLINE_ID);\r\n\r\n if (!componentElement) {\r\n console.warn(\"Component element not found.\");\r\n return;\r\n }\r\n\r\n if (!offlineId) {\r\n console.warn(\"Offline id element not found.\");\r\n return;\r\n }\r\n\r\n try {\r\n const inspectionData = getOfflineFormData(STORAGE_KEY.INSPECTION);\r\n if (inspectionData && Object.keys(inspectionData).length > 0) {\r\n await registerinspection.saveInspection(componentElement, inspectionData);\r\n }\r\n\r\n const inspectionId = registerinspection.inspectionId;\r\n await processStorageData(STORAGE_KEY.BUILDINGS_TO_ADD, async (building) => {\r\n await registerinspection.saveBuilding(componentElement, building, building.id);\r\n });\r\n\r\n await processStorageData(STORAGE_KEY.BUILDINGS_TO_REMOVE, async (building) => {\r\n await deleteBuilding(inspectionId, building.id);\r\n });\r\n\r\n await processStorageData(STORAGE_KEY.ROWS_TO_ADD, async (row) => {\r\n await registerinspection.saveRow(componentElement, row, row.id);\r\n });\r\n\r\n await processStorageData(STORAGE_KEY.ROWS_TO_REMOVE, async (row) => {\r\n await deleteRow(inspectionId, row.id);\r\n });\r\n\r\n await processStorageData(STORAGE_KEY.ROWS_TO_EDIT, async (row) => {\r\n await patchRow(inspectionId, row.id, row);\r\n });\r\n\r\n const sortData = getOfflineFormData(STORAGE_KEY.SORT);\r\n if (sortData?.length > 0) {\r\n await postSort({\r\n id: inspectionId,\r\n items: sortData,\r\n });\r\n }\r\n\r\n } catch (error) {\r\n console.error(\"Error saving pending forms:\", error);\r\n }\r\n },\r\n initRoomSelectListener: (componentElement) => {\r\n const roomSelect = componentElement.querySelector(\"#room\");\r\n const areaSelect = componentElement.querySelector(\"#area\");\r\n const editRoomSelect = componentElement.querySelector(\"#edit-room\");\r\n const editAreaSelect = componentElement.querySelector(\"#edit-area\");\r\n\r\n if (roomSelect) {\r\n roomSelect.addEventListener(\"change\", (e) => {\r\n registerinspection.updateAreaSelect(e.target.value, areaSelect);\r\n });\r\n }\r\n\r\n if (editRoomSelect) {\r\n editRoomSelect.addEventListener(\"change\", (e) => {\r\n registerinspection.updateAreaSelect(e.target.value, editAreaSelect);\r\n });\r\n }\r\n },\r\n updateAreaSelect: (selectedRoom, areaSelect, selectedArea = null) => {\r\n if (!selectedRoom) {\r\n areaSelect.innerHTML = '';\r\n return;\r\n }\r\n\r\n const room = rooms.find(r => r.name === selectedRoom);\r\n const allRoomParts = [...new Set(rooms.flatMap(r => r.roomParts))];\r\n const roomPartsToShow = room ? room.roomParts : allRoomParts;\r\n\r\n\r\n areaSelect.innerHTML = '';\r\n\r\n roomPartsToShow.forEach(part => {\r\n const option = document.createElement(\"option\");\r\n option.textContent = part;\r\n\r\n option.value = part;\r\n if (part === selectedArea) {\r\n option.selected = true;\r\n }\r\n areaSelect.appendChild(option);\r\n });\r\n },\r\n updateBuildingUI: (action, buildingName, buildingId, tmpId, componentElement) => {\r\n const updateBuildingSelectOptions = (action, buildingName, buildingId, tmpId) => {\r\n const buildingSelect = componentElement.querySelector(\"#building\");\r\n const editBuildingSelect = componentElement.querySelector(\"#edit-building\");\r\n\r\n const selectElements = [buildingSelect, editBuildingSelect];\r\n\r\n selectElements.forEach(select => {\r\n if (action === \"remove\") {\r\n Array.from(select.options).forEach(option => {\r\n if ((select === editBuildingSelect && option.innerText === buildingName) ||\r\n (select !== editBuildingSelect && option.value === buildingId)) {\r\n option.remove();\r\n }\r\n });\r\n return;\r\n }\r\n const existingOption = Array.from(select.options).find(option => option.value === tmpId);\r\n if (existingOption) {\r\n existingOption.value = buildingId;\r\n existingOption.text = buildingName;\r\n return;\r\n }\r\n const newOption = select === editBuildingSelect\r\n ? new Option(buildingName, buildingName)\r\n : new Option(buildingName, buildingId);\r\n\r\n select.add(newOption);\r\n\r\n });\r\n };\r\n const updateBuildingList = (action, buildingName, buildingId, tmpId) => {\r\n const listElement = componentElement.querySelector(\"#building-list\");\r\n if (action === \"remove\") {\r\n Array.from(listElement.querySelectorAll(\"li\")).forEach(li => {\r\n const buildingButton = li.querySelector(\"[data-buildingid]\");\r\n if (buildingButton && buildingButton.dataset.buildingid === buildingId) {\r\n li.remove();\r\n }\r\n });\r\n return;\r\n }\r\n\r\n const existingLi = Array.from(listElement.querySelectorAll(\"li\")).find(li => {\r\n const buildingButton = li.querySelector(\"[data-buildingid]\");\r\n return buildingButton && buildingButton.dataset.buildingid === tmpId;\r\n });\r\n\r\n if (existingLi) {\r\n existingLi.querySelector(\".d-flex > div:first-child\").innerText = buildingName;\r\n existingLi.querySelector(\".d-flex > div:last-child\").dataset.buildingid = buildingId;\r\n return;\r\n }\r\n const li = document.createElement(\"li\");\r\n li.innerHTML = `\r\n
\r\n
${buildingName}
\r\n
\r\n ${registerinspection.constants.deleteIconHtml}\r\n
\r\n
\r\n `;\r\n registerinspection.onShowRemoveBuildingModal(li.querySelector(\"[data-buildingid]\"));\r\n listElement.appendChild(li);\r\n };\r\n\r\n updateBuildingSelectOptions(action, buildingName, buildingId, tmpId);\r\n updateBuildingList(action, buildingName, buildingId, tmpId);\r\n\r\n },\r\n initBuildingSaveListener: (componentElement) => {\r\n var buildingForm = componentElement.querySelector(\"#add-building--form\");\r\n\r\n buildingForm.addEventListener(\"submit\", async (e) => {\r\n var requestBody = {\r\n building: buildingForm.querySelector(\"input\").value\r\n };\r\n e.preventDefault();\r\n await registerinspection.saveBuilding(componentElement, requestBody);\r\n });\r\n\r\n },\r\n saveBuilding: async (componentElement, requestBody, tmpId) => {\r\n const isOnline = await registerinspection.isConnected();\r\n\r\n if (isOnline && registerinspection.inspectionId) {\r\n\r\n const response = await postBuilding(registerinspection.inspectionId, requestBody, tmpId)\r\n\r\n if (response.ok) {\r\n const data = await response.json();\r\n registerinspection.updateBuildingUI(\"update\", data.building, data.id, tmpId, componentElement);\r\n }\r\n return;\r\n }\r\n console.warn(`Connection unavailable. Building '${requestBody.building}' is stored for adding until the internet connection is re-established.`);\r\n tmpId = tmpId || crypto.randomUUID();\r\n appendToInOfflineFormArray(tmpId, { building: requestBody.building }, STORAGE_KEY.BUILDINGS_TO_ADD);\r\n registerinspection.updateBuildingUI(\"update\", requestBody.building, tmpId, tmpId, componentElement);\r\n\r\n },\r\n initInspectionSaveListener: (componentElement) => {\r\n var form = componentElement.querySelector(\".registerinspection--form\");\r\n var saveBtn = componentElement.querySelector(\"button[data-savebtn]\");\r\n\r\n if (!form || !saveBtn) return;\r\n\r\n saveBtn.addEventListener(\"click\", async (e) => {\r\n if (!form.checkValidity()) {\r\n return;\r\n }\r\n e.preventDefault();\r\n var requestBody = registerinspection.buildRegisterInspectionRequest(form);\r\n await registerinspection.saveInspection(componentElement, requestBody);\r\n });\r\n },\r\n saveInspection: async (componentElement, requestBody) => {\r\n const toggleFields = (componentElement, isOnline) => {\r\n\r\n registerinspection.handleDisabledElements(componentElement, isOnline);\r\n\r\n const submitTooltip = componentElement.querySelector(\"#submit-inspection-tooltip\");\r\n registerinspection.updateTooltipForOffline(submitTooltip, offlineMode.submitOfflineMsg, isOnline);\r\n }\r\n\r\n var form = componentElement.querySelector(\".registerinspection--form\");\r\n const isOnline = await registerinspection.isConnected();\r\n\r\n if (isOnline) {\r\n const response = await postInspection(requestBody);\r\n if (response.ok) {\r\n const data = await response.json();\r\n form.dataset.inspectiondid = data.id;\r\n\r\n registerinspection.removeBuildingModalElement.dataset.inspectionid = data.id;\r\n registerinspection.setInspectionId(data.id);\r\n let previewButton = componentElement.querySelector(\"[data-previewlink]\");\r\n previewButton.parentElement.classList.remove(\"d-none\");\r\n previewButton.setAttribute(\"href\", data.previewpath);\r\n\r\n toggleFields(componentElement, isOnline);\r\n }\r\n return;\r\n }\r\n setOfflineFormData(STORAGE_KEY.INSPECTION, requestBody);\r\n toggleFields(componentElement, isOnline);\r\n console.warn(`Connection unavailable. Form is stored until the internet connection is re-established.`);\r\n },\r\n oncleanupfilesbuttons: (componentElement) => {\r\n const cleanupButtons = componentElement.querySelectorAll(`div[data-filecleanup] button`);\r\n if (cleanupButtons.length > 0) {\r\n cleanupButtons.forEach((element) => {\r\n registerinspection.oncleanupfilesbutton(element, componentElement);\r\n });\r\n }\r\n },\r\n onSubmit: (componentElement) => {\r\n var form = componentElement.querySelector(\".registerinspection--form\");\r\n if (!form) return;\r\n form.addEventListener(\"submit\", (e) => {\r\n e.preventDefault();\r\n var action = `${form.action}/${form.dataset.inspectiondid}/submit`;\r\n (async () => {\r\n const response = await fetch(action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n }\r\n });\r\n if (response.status !== 200) {\r\n }\r\n else {\r\n const data = await response.json();\r\n window.location = form.dataset.parenturl;\r\n }\r\n })();\r\n });\r\n },\r\n oncleanupfilesbutton: (cleanupButton, componentElement) => {\r\n cleanupButton.addEventListener(\"click\", (e) => {\r\n var form = componentElement.querySelector(\".registerinspection--form\");\r\n\r\n var affectedTd = e.target.closest(\"td\");\r\n const filePreview = affectedTd.querySelector(`.upload-filelist`);\r\n const fileInput = affectedTd.querySelector(`input[type='file']`);\r\n\r\n cleanupButton.classList.add(\"d-none\");\r\n var action = `${form.action}${affectedTd.getAttribute(\"action\")}/files`;\r\n\r\n (async () => {\r\n const response = await fetch(action, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n }\r\n });\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n filePreview.innerHTML = \"\";\r\n fileInput.value = \"\";\r\n }\r\n })();\r\n\r\n });\r\n\r\n },\r\n buildSortRequestItems: (tbody) => {\r\n if (!tbody) return [];\r\n\r\n let newSortOrder = [];\r\n let index = 1;\r\n\r\n tbody.querySelectorAll(\"tr\").forEach(row => {\r\n const rowId = row.dataset.id;\r\n const numberCell = row.querySelector(\"[data-nr]\");\r\n\r\n if (numberCell) {\r\n numberCell.innerHTML = index;\r\n }\r\n\r\n newSortOrder.push({ id: rowId, index: index });\r\n index++;\r\n });\r\n\r\n return newSortOrder;\r\n },\r\n setDragEvents: (tableRow) => {\r\n tableRow.addEventListener(\"dragstart\", registerinspection.onDragRow);\r\n tableRow.addEventListener(\"dragover\", registerinspection.onDragOverRow);\r\n tableRow.addEventListener(\"dragend\", registerinspection.onDragEnd);\r\n },\r\n setDragRows: (componentElement) => {\r\n componentElement.querySelector(\".registerinspection-table\").querySelectorAll(\"tbody tr\").forEach((e) => {\r\n registerinspection.setDragEvents(e);\r\n });\r\n },\r\n onDragRow: (event) => {\r\n registerinspection.dragovershadow = event.target;\r\n },\r\n onDragOverRow: (event) => {\r\n event.preventDefault();\r\n\r\n let targetRow = event.target.closest(\"tr\");\r\n if (!targetRow || targetRow === registerinspection.dragovershadow) return;\r\n\r\n let tbody = targetRow.parentNode;\r\n let children = Array.from(tbody.children);\r\n\r\n if (children.indexOf(targetRow) > children.indexOf(registerinspection.dragovershadow)) {\r\n targetRow.after(registerinspection.dragovershadow);\r\n } else {\r\n targetRow.before(registerinspection.dragovershadow);\r\n }\r\n },\r\n onDragEnd: (event) => {\r\n var tbody = event.target.closest(\"tbody\");\r\n\r\n if (!tbody) return;\r\n\r\n const items = registerinspection.buildSortRequestItems(tbody);\r\n\r\n registerinspection.saveSort(items)\r\n },\r\n saveSort: async (requestBodyItems) => {\r\n const updateUIRowNumbers = (sortedItems) => {\r\n const tableBody = document.querySelector(\"[data-rowstable] tbody\");\r\n sortedItems.forEach(({ id, index }) => {\r\n const row = tableBody.querySelector(`[data-id=\"${id}\"]`);\r\n if (!row) return;\r\n const numberCell = row.querySelector(\"[data-nr]\");\r\n if (numberCell) {\r\n numberCell.innerHTML = index;\r\n }\r\n });\r\n };\r\n const isOnline = await registerinspection.isConnected();\r\n\r\n if (isOnline) {\r\n const requestBody = {\r\n id: registerinspection.inspectionId,\r\n items: requestBodyItems\r\n };\r\n await postSort(requestBody);\r\n updateUIRowNumbers(requestBodyItems);\r\n return;\r\n }\r\n setOfflineFormData(STORAGE_KEY.SORT, requestBodyItems)\r\n updateUIRowNumbers(requestBodyItems);\r\n\r\n },\r\n onFileInputsChange: (componentElement) => {\r\n const fileInputs = componentElement.querySelectorAll(`.registerinspection-table input[type='file']`);\r\n if (fileInputs.length > 0) {\r\n fileInputs.forEach((element) => {\r\n registerinspection.onFileInputChange(element, componentElement);\r\n });\r\n }\r\n },\r\n onFileInputChange: (fileInput, componentElement) => {\r\n fileInput.addEventListener(\"change\", (event) => {\r\n var form = componentElement.querySelector(\".registerinspection--form\");\r\n var uploadContainer = event.target.closest(\".upload\");\r\n var affectedTd = event.target.closest(\"td\");\r\n const uploadFileList = uploadContainer.querySelector(`.upload-filelist`);\r\n const btncleanupWrapper = uploadContainer.querySelector(`div[data-filecleanup]`);\r\n\r\n let html = \"\";\r\n var hasfiles = false;\r\n const formData = new FormData();\r\n btncleanupWrapper.classList.add(\"d-none\");\r\n if (event.target.files && event.target.files.length > 0) {\r\n let filenames = new Array();\r\n for (f = 0; f < event.target.files.length; f++) {\r\n filenames.push(event.target.files[f].name);\r\n formData.append(\"file\", event.target.files[f]);\r\n hasfiles = true;\r\n }\r\n\r\n html = filenames.join(\"
\");\r\n }\r\n uploadFileList.innerHTML = html;\r\n\r\n var action = `${form.action}${affectedTd.getAttribute(\"action\")}/files`;\r\n (async () => {\r\n const response = await fetch(action, {\r\n method: 'POST',\r\n body: formData\r\n });\r\n\r\n if (response.status !== 200) {\r\n\r\n }\r\n else {\r\n const data = await response.json();\r\n if (hasfiles) {\r\n btncleanupWrapper.classList.remove(\"d-none\");\r\n }\r\n }\r\n })();\r\n });\r\n },\r\n buildRegisterInspectionRequest: (form) => {\r\n return {\r\n id: form.dataset.inspectiondid.length > 0 ? parseInt(form.dataset.inspectiondid) : null,\r\n performedBy: form.querySelector(\"#contact\")?.value,\r\n inspectionType: form.querySelector(\"#type\")?.value,\r\n houseSupplier: form.querySelector(\"#supplier\")?.value,\r\n propertyLabel: form.querySelector(\"#propertyLabel\")?.value,\r\n typeOfBuilding: form.querySelector(\"#typeofbuilding\")?.value,\r\n inspectorCertifiedBy: form.querySelector(\"#certifiedby\")?.value,\r\n inspectionDate: form.querySelector(\"#inspectionDate\")?.value,\r\n municipality: form.querySelector(\"#municipality\")?.value,\r\n offlineId: form.querySelector(\"#offlineId\")?.value.trim() === \"\" ? null : form.querySelector(\"#offlineId\")?.value\r\n }\r\n },\r\n buildRegisterInspectionRowRequest: (container) => {\r\n updateResponsibleCache();\r\n\r\n const resetFields = (container) => {\r\n registerinspection.constants.rowFields.forEach(field => {\r\n container.querySelector(`#${field}`).value = \"\";\r\n });\r\n };\r\n\r\n const getFormData = (container) => {\r\n let result = {};\r\n\r\n registerinspection.constants.rowFields.forEach(key => {\r\n result[key] = container.querySelector(`#${key}`)?.value || \"\";\r\n });\r\n result.building = container.querySelector(\"#building\")?.options[container.querySelector(\"#building\").selectedIndex]?.text || \"\";\r\n result.inspectionId = registerinspection.inspectionId;\r\n return result;\r\n }\r\n\r\n const result = getFormData(container);\r\n\r\n resetFields(container);\r\n registerinspection.updateAreaSelect(\"\", container.querySelector(\"#area\"));\r\n\r\n return result;\r\n },\r\n setErrorsDataList: (componentElement) => {\r\n var list = componentElement.querySelector(\"#registerinspection-errorslist\");\r\n if (!list) return;\r\n list.innerHTML = \"\";\r\n\r\n var errorCells = componentElement.querySelectorAll(\"[data-rowstable] tbody td[data-error]\");\r\n if (errorCells) {\r\n errorCells.forEach((e) => {\r\n var option = document.createElement(\"option\");\r\n option.innerHTML = e.innerHTML;\r\n if (option.innerHTML.length > 0) {\r\n list.appendChild(option);\r\n }\r\n });\r\n }\r\n },\r\n initTdActionListener: async (componentElement) => {\r\n componentElement.querySelector(\".registerinspection-table\").addEventListener(\"click\", (event) => {\r\n const clickedElement = event.target.closest(\".edit, .remove\");\r\n if (!clickedElement) return;\r\n\r\n const row = clickedElement.closest(\"tr\");\r\n\r\n if (clickedElement.classList.contains(\"edit\")) {\r\n registerinspection.onEditRow(row);\r\n } else if (clickedElement.classList.contains(\"remove\")) {\r\n registerinspection.onRemoveRow(row.getAttribute(\"data-id\"), componentElement);\r\n }\r\n });\r\n },\r\n getRowData: (sourceElement) => {\r\n let data = {};\r\n\r\n registerinspection.constants.rowFields.forEach(key => {\r\n const sourceField = sourceElement.querySelector(`[data-${key}]`);\r\n if (!sourceField) {\r\n data[key] = '';\r\n return;\r\n }\r\n\r\n if (sourceField.tagName === 'SELECT') {\r\n const selectedOption = sourceField.querySelector('option:checked');\r\n data[key] = selectedOption ? selectedOption.value : '';\r\n return;\r\n }\r\n\r\n if ('value' in sourceField) {\r\n data[key] = sourceField.value || '';\r\n return;\r\n }\r\n\r\n data[key] = sourceField.innerHTML || '';\r\n });\r\n\r\n return data;\r\n },\r\n updateRowData: (targetElement, data) => {\r\n registerinspection.constants.rowFields.forEach(key => {\r\n const targetField = targetElement.querySelector(`[data-${key}]`);\r\n\r\n if (!targetField) return;\r\n\r\n if (targetField.tagName === 'SELECT') {\r\n const option = [...targetField.options].find(opt => opt.text.trim() === data[key].trim());\r\n if (option) {\r\n option.selected = true;\r\n } else {\r\n targetField.selectedIndex = -1;\r\n }\r\n return;\r\n }\r\n\r\n if ('value' in targetField) {\r\n targetField.value = data[key] || '';\r\n return;\r\n }\r\n\r\n targetField.innerHTML = data[key] || '';\r\n });\r\n },\r\n onEditRowSubmit: (componentElement) => {\r\n var modalElement = componentElement.querySelector(\".modal.registerinspection-edit\").closest(\".modal\");\r\n modalElement.querySelector(\"form\").addEventListener('submit', async (event) => {\r\n event.preventDefault();\r\n\r\n const rowId = event.target.dataset.rowid;\r\n let affectedTr = componentElement.querySelector(`table tr[data-id=\"${rowId}\"]`);\r\n if (!affectedTr) return;\r\n\r\n const data = registerinspection.getRowData(modalElement);\r\n registerinspection.updateRowData(affectedTr, data);\r\n\r\n registerinspection.editmodal.hide();\r\n registerinspection.setErrorsDataList(componentElement);\r\n\r\n await registerinspection.saveEditRow(data, rowId);\r\n });\r\n },\r\n saveEditRow: async (requestBody, rowId) => {\r\n const isOnline = await registerinspection.isConnected();\r\n\r\n if (isOnline) {\r\n await patchRow(registerinspection.inspectionId, rowId, requestBody);\r\n return;\r\n }\r\n const existingRowIndex = findItemIndexInOfflineForm(rowId, STORAGE_KEY.ROWS_TO_ADD);\r\n\r\n if (existingRowIndex !== -1) {\r\n const offlineRows = getOfflineFormData(STORAGE_KEY.ROWS_TO_ADD);\r\n offlineRows[existingRowIndex] = { id: rowId, ...requestBody };\r\n setOfflineFormData(STORAGE_KEY.ROWS_TO_ADD, {\r\n ...offlineRows,\r\n inspectionId: registerinspection.inspectionId\r\n });\r\n return;\r\n }\r\n appendToInOfflineFormArray(rowId, { ...requestBody }, STORAGE_KEY.ROWS_TO_EDIT);\r\n },\r\n onEditRow: (clickedTr) => {\r\n var modalElement = document.querySelector(\".modal.registerinspection-edit\").closest(\".modal\");\r\n\r\n const rowData = registerinspection.getRowData(clickedTr);\r\n registerinspection.updateRowData(modalElement, rowData);\r\n modalElement.querySelector(\"form\").dataset.rowid = clickedTr.dataset.id;\r\n modalElement.querySelector(\"form\").dataset.rownr = clickedTr.querySelector(\"[data-nr]\")?.innerHTML;\r\n\r\n registerinspection.updateAreaSelect(rowData.room, modalElement.querySelector(\"#edit-area\"), rowData.area);\r\n\r\n if (registerinspection.editmodal == null) {\r\n registerinspection.editmodal = new bootstrap.Modal(modalElement, {});\r\n }\r\n\r\n registerinspection.editmodal.show();\r\n },\r\n onRemoveRow: async (rowId, componentElement) => {\r\n const removeFromUI = (rowId, componentElement) => {\r\n const tableBody = componentElement.querySelector(\"[data-rowstable] tbody\");\r\n const tr = tableBody.querySelector(`tr[data-id=\"${String(rowId)}\"]`);\r\n if (!tr) return;\r\n\r\n tr.remove();\r\n\r\n const newSortOrder = registerinspection.buildSortRequestItems(tableBody);\r\n registerinspection.saveSort(newSortOrder);\r\n registerinspection.handleDisabledElements(componentElement, isOnline);\r\n };\r\n\r\n const offlineIndex = findItemIndexInOfflineForm(rowId, STORAGE_KEY.ROWS_TO_ADD);\r\n\r\n if (offlineIndex !== -1) {\r\n removeOfflineFormDataByIndex(offlineIndex, STORAGE_KEY.ROWS_TO_ADD);\r\n removeFromUI(rowId, componentElement);\r\n return;\r\n }\r\n\r\n const isOnline = await registerinspection.isConnected();\r\n if (isOnline) {\r\n const response = await deleteRow(registerinspection.inspectionId, rowId);\r\n if (response.ok) {\r\n removeFromUI(rowId, componentElement, isOnline);\r\n };\r\n return;\r\n }\r\n console.warn(`Connection unavailable. Row '${rowId}'is stored for removal until the internet connection is re-established.`);\r\n appendToInOfflineFormArray(rowId, {}, STORAGE_KEY.ROWS_TO_REMOVE);\r\n removeFromUI(rowId, componentElement, isOnline);\r\n\r\n },\r\n initRemoveBuildingModal: (componentElement) => {\r\n registerinspection.removeBuildingModalElement = componentElement.querySelector(\"[data-removebuildingmodal]\");\r\n },\r\n initShowRemoveBuildingModal: (componentElement) => {\r\n var allElements = componentElement.querySelectorAll(\".buildings [data-buildingid]\");\r\n\r\n if (allElements.length > 0) {\r\n allElements.forEach((element) => {\r\n registerinspection.onShowRemoveBuildingModal(element);\r\n });\r\n }\r\n },\r\n onShowRemoveBuildingModal: (element) => {\r\n element.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n var modal = bootstrap.Modal.getOrCreateInstance(registerinspection.removeBuildingModalElement, {});\r\n registerinspection.removeBuildingModalElement.buildingid = element.dataset.buildingid;\r\n registerinspection.removeBuildingModalElement.building = element.dataset.building;\r\n registerinspection.removeBuildingModalElement.action = `/umbraco/api/registrationinspections/buildings/${registerinspection.removeBuildingModalElement.dataset.inspectionid}`;\r\n modal.show();\r\n });\r\n },\r\n initBuildingRemoveListener: () => {\r\n registerinspection.removeBuildingModalElement.addEventListener(\"submit\", async (e) => {\r\n e.preventDefault();\r\n\r\n const buildingId = e.target.buildingid;\r\n const buildingName = e.target.building;\r\n\r\n await registerinspection.removeBuilding(buildingId, buildingName);\r\n })\r\n },\r\n removeBuilding: async (buildingId, buildingName) => {\r\n var modal = bootstrap.Modal.getOrCreateInstance(registerinspection.removeBuildingModalElement, {});\r\n\r\n const componentElement = document;\r\n\r\n const offlineIndex = findItemIndexInOfflineForm(buildingId, STORAGE_KEY.BUILDINGS_TO_ADD);\r\n\r\n if (offlineIndex !== -1) {\r\n removeOfflineFormDataByIndex(offlineIndex, STORAGE_KEY.BUILDINGS_TO_ADD);\r\n registerinspection.updateBuildingUI(\"remove\", buildingName, buildingId, null, componentElement);\r\n modal.hide();\r\n return;\r\n }\r\n const isOnline = await registerinspection.isConnected();\r\n if (isOnline) {\r\n\r\n const response = await deleteBuilding(registerinspection.inspectionId, buildingId);\r\n if (response.ok) {\r\n registerinspection.updateBuildingUI(\"remove\", buildingName, buildingId, null, componentElement);\r\n }\r\n modal.hide();\r\n return;\r\n }\r\n console.warn(`Connection unavailable. Building '${buildingId}'is stored for removal until the internet connection is re-established.`);\r\n appendToInOfflineFormArray(buildingId, { building: buildingName }, STORAGE_KEY.BUILDINGS_TO_REMOVE);\r\n registerinspection.updateBuildingUI(\"remove\", buildingName, buildingId, null, componentElement);\r\n\r\n modal.hide();\r\n },\r\n initAddRowListener: (componentElement) => {\r\n const addRowButton = componentElement.querySelector(registerinspection.constants.addrowButtonSelector);\r\n if (!addRowButton) return;\r\n\r\n addRowButton.addEventListener(\"click\", async () => {\r\n const requestBody = registerinspection.buildRegisterInspectionRowRequest(componentElement);\r\n await registerinspection.saveRow(componentElement, requestBody, null);\r\n });\r\n },\r\n handleDisabledElements: (componentElement, isOnline) => {\r\n const elementsToDisable = componentElement.querySelectorAll(\"[data-disable-criterias]\");\r\n if (!elementsToDisable || elementsToDisable.length === 0) return;\r\n\r\n const tableBody = componentElement.querySelector(\"[data-rowstable] tbody\");\r\n if (!tableBody) {\r\n console.warn(\"Table body not found!\");\r\n }\r\n\r\n const rows = tableBody.querySelectorAll(`tr[data-id]`);\r\n let rowsExist = rows?.length > 0;\r\n\r\n elementsToDisable.forEach((element) => {\r\n const criterias = element.getAttribute('data-disable-criterias')\r\n .split(' ')\r\n .map(c => c.trim())\r\n .filter(Boolean);\r\n\r\n let disableFlags = [];\r\n\r\n criterias.forEach((criteria) => {\r\n switch (criteria) {\r\n case 'if-no-row':\r\n disableFlags.push(!rowsExist);\r\n break;\r\n\r\n case 'if-offline':\r\n disableFlags.push(!isOnline);\r\n break;\r\n\r\n case 'if-no-inspection-exist':\r\n const offlineInspectionData = getOfflineFormData(STORAGE_KEY.INSPECTION);\r\n const hasOfflineInspectionData = offlineInspectionData && Object.keys(offlineInspectionData).length > 0;\r\n\r\n const shouldDisable = !hasOfflineInspectionData && (!registerinspection.inspectionId || registerinspection.inspectionId.length === 0);\r\n\r\n disableFlags.push(shouldDisable);\r\n break;\r\n }\r\n });\r\n\r\n const shouldDisable = disableFlags.includes(true);\r\n\r\n if (element.tagName === 'A') {\r\n if (shouldDisable) {\r\n element.classList.add('disabled');\r\n element.setAttribute('aria-disabled', 'true');\r\n } else {\r\n element.classList.remove('disabled');\r\n element.removeAttribute('aria-disabled');\r\n }\r\n } else {\r\n element.disabled = shouldDisable;\r\n }\r\n });\r\n },\r\n saveRow: async (componentElement, requestBody, tmpId) => {\r\n const updateUIForNewRow = (data, tmpId, isOnline) => {\r\n\r\n const getNextRowNumber = (tableBody) => {\r\n if (!tableBody) return 1;\r\n const rowCount = tableBody.querySelectorAll(\"tr\").length;\r\n return rowCount + 1;\r\n }\r\n\r\n var rowId = data.id ?? tmpId;\r\n const tableBody = document.querySelector(\"[data-rowstable] tbody\");\r\n if (!tableBody) {\r\n console.warn(\"Table body not found!\");\r\n return;\r\n }\r\n\r\n const existingRow = tableBody.querySelector(`tr[data-id=\"${String(tmpId)}\"]`);\r\n if (existingRow) {\r\n existingRow.dataset.id = data.id;\r\n const actionCell = existingRow.querySelector(\"td[data-rowid]\");\r\n actionCell.setAttribute(\"data-rowId\", rowId);\r\n actionCell.setAttribute(\"action\", `/${registerinspection.inspectionId}/${rowId}`);\r\n updateIdInOfflineForm(tmpId, data.id, STORAGE_KEY.ROWS_TO_EDIT);\r\n updateIdInOfflineForm(tmpId, data.id, STORAGE_KEY.SORT);\r\n return;\r\n }\r\n\r\n var tableRow = document.createElement(\"tr\");\r\n var tableRow = document.createElement(\"tr\");\r\n tableRow.setAttribute(\"draggable\", \"true\");\r\n registerinspection.setDragEvents(tableRow);\r\n\r\n const cells = [\r\n { content: requestBody.building, attribute: \"data-building\" },\r\n { content: data.nr ?? getNextRowNumber(tableBody), attribute: \"data-nr\" },\r\n { content: requestBody.room, attribute: \"data-room\" },\r\n { content: requestBody.area, attribute: \"data-area\" },\r\n { content: requestBody.error, attribute: \"data-error\" },\r\n { content: requestBody.responsible, attribute: \"data-responsible\" },\r\n { content: requestBody.companyname, attribute: \"data-companyname\" }\r\n ];\r\n\r\n cells.forEach(cell => {\r\n const cellElement = document.createElement(\"td\");\r\n cellElement.innerHTML = cell.content;\r\n cellElement.setAttribute(cell.attribute, \"1\");\r\n tableRow.appendChild(cellElement);\r\n });\r\n\r\n var actionCell = document.createElement(\"td\");\r\n var actionDiv = document.createElement(\"div\");\r\n actionDiv.classList.add(\"d-flex\", \"gap-2\", \"justify-content-evenly\");\r\n\r\n var uploadDiv = document.createElement(\"div\");\r\n uploadDiv.classList.add(\"upload\");\r\n\r\n var uploadControlsDiv = document.createElement(\"div\");\r\n uploadControlsDiv.classList.add(\"upload-controls\");\r\n\r\n var inputFileCtrl = document.createElement(\"input\");\r\n inputFileCtrl.type = \"file\";\r\n inputFileCtrl.classList.add(\"form-control\", \"form-control-sm\");\r\n inputFileCtrl.setAttribute(\"accept\", \"image/*\");\r\n inputFileCtrl.setAttribute(\"multiple\", \"1\");\r\n inputFileCtrl.setAttribute(\"data-disable-criterias\", \"if-offline\");\r\n\r\n registerinspection.handleDisabledElements(componentElement, isOnline);\r\n registerinspection.updateTooltipForOffline(inputFileCtrl, offlineMode.inputFileOfflineMsg, isOnline);\r\n\r\n var clearFilesDiv = document.createElement(\"div\");\r\n clearFilesDiv.classList.add(\"d-none\");\r\n clearFilesDiv.setAttribute(\"data-filecleanup\", \"1\");\r\n var clearFilesButton = document.createElement(\"button\");\r\n clearFilesButton.classList.add(\"btn\", \"btn-blue\");\r\n clearFilesButton.type = \"button\";\r\n clearFilesButton.innerText = tableBody.dataset.clearbuttontext;\r\n clearFilesDiv.appendChild(clearFilesButton);\r\n\r\n uploadControlsDiv.appendChild(inputFileCtrl);\r\n uploadControlsDiv.appendChild(clearFilesDiv);\r\n\r\n var uploadFileListDiv = document.createElement(\"div\");\r\n uploadFileListDiv.classList.add(\"upload-filelist\");\r\n\r\n uploadDiv.appendChild(uploadControlsDiv);\r\n uploadDiv.appendChild(uploadFileListDiv);\r\n\r\n var deleteDiv = document.createElement(\"div\");\r\n deleteDiv.classList.add(\"remove\");\r\n var editDiv = document.createElement(\"div\");\r\n editDiv.classList.add(\"edit\");\r\n\r\n deleteDiv.innerHTML = registerinspection.constants.deleteIconHtml;\r\n editDiv.innerHTML = registerinspection.constants.editIconHtml;\r\n\r\n actionDiv.appendChild(uploadDiv);\r\n actionDiv.appendChild(editDiv);\r\n actionDiv.appendChild(deleteDiv);\r\n actionCell.appendChild(actionDiv);\r\n\r\n registerinspection.onFileInputChange(inputFileCtrl, componentElement);\r\n registerinspection.oncleanupfilesbutton(clearFilesButton, componentElement);\r\n\r\n tableRow.dataset.id = rowId;\r\n actionCell.setAttribute(\"data-rowid\", rowId);\r\n actionCell.setAttribute(\"action\", `/${registerinspection.inspectionId}/${rowId}`);\r\n tableRow.appendChild(actionCell);\r\n\r\n tableBody.appendChild(tableRow);\r\n };\r\n const isOnline = await registerinspection.isConnected();\r\n if (isOnline) {\r\n const response = await postRow(requestBody, tmpId);\r\n if (response.ok) {\r\n const data = await response.json();\r\n updateUIForNewRow(data, tmpId, isOnline);\r\n }\r\n } else {\r\n console.warn(`Connection unavailable. New row is stored for adding until the internet connection is re-established.`);\r\n tmpId = tmpId || crypto.randomUUID();\r\n appendToInOfflineFormArray(tmpId, requestBody, STORAGE_KEY.ROWS_TO_ADD);\r\n updateUIForNewRow(requestBody, tmpId, isOnline);\r\n }\r\n\r\n registerinspection.setErrorsDataList(componentElement);\r\n registerinspection.handleDisabledElements(componentElement, isOnline)\r\n },\r\n selectResponsibleEvent: (componentElement) => {\r\n var select = componentElement.querySelector(\"#responsible\");\r\n if (!select) return;\r\n select.addEventListener(\"change\", (e) => {\r\n if (e.target.value == \"HL\") {\r\n componentElement.querySelector(\"#companyname\").value = componentElement.querySelector(\"#supplier\").value;\r\n }\r\n else {\r\n loadResponsibleCacheForDropdown();\r\n }\r\n });\r\n },\r\n updateTooltipForOffline: async (element, msg, isOnline) => {\r\n if (!isOnline) {\r\n element.setAttribute(\"title\", msg);\r\n return;\r\n }\r\n element.removeAttribute(\"title\");\r\n },\r\n};\r\n\r\n\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n const form = document.querySelector(\".needs-validation\");\r\n\r\n form.addEventListener(\"submit\", function (event) {\r\n if (!form.checkValidity()) {\r\n event.preventDefault(); // Prevent form submission if invalid\r\n event.stopPropagation(); // Stop bubbling up the event\r\n }\r\n\r\n form.classList.add(\"was-validated\");\r\n });\r\n});\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n var registerinspectionComponents = document.querySelectorAll(\".registerinspection\");\r\n if (registerinspectionComponents != null && registerinspectionComponents.length > 0) {\r\n registerinspectionComponents.forEach((element) => {\r\n registerinspection.init(element.id);\r\n });\r\n }\r\n\r\n document.querySelectorAll('[data-bs-toggle=\"popover\"]').forEach((popoverTriggerEl) => {\r\n new bootstrap.Popover(popoverTriggerEl);\r\n });\r\n});\r\n\r\n\r\nfunction updateResponsibleCache() {\r\n var selectedValue = document.getElementById(\"responsible\").value;\r\n var companyName = document.getElementById(\"companyname\").value;\r\n\r\n responsibleCache[selectedValue] = companyName;\r\n}\r\n\r\nfunction loadResponsibleCacheForDropdown() {\r\n var selectedValue = document.getElementById(\"responsible\").value;\r\n document.getElementById(\"companyname\").value = responsibleCache[selectedValue] ?? \"\";\r\n}\r\n","const REGISTER_INSPECTION_PATH = \"/umbraco/api/registrationinspections\";\r\n\r\n/**\r\n * Generic function to send an API request (POST, PATCH, DELETE, etc.)\r\n * @param {string} endpoint - API endpoint (e.g., \"/save\", \"/removebuilding\")\r\n * @param {object} [requestBody] - Data to send in the request (optional for DELETE)\r\n * @param {string} method - HTTP method (e.g., \"POST\", \"PATCH\", \"DELETE\")\r\n * @returns {Promise} - Response JSON or error object\r\n */\r\nasync function sendRequest(endpoint, method = 'POST', requestBody = null) {\r\n try {\r\n const options = {\r\n method,\r\n headers: { 'Content-Type': 'application/json' },\r\n };\r\n\r\n if (requestBody && method !== 'DELETE') {\r\n options.body = JSON.stringify(requestBody);\r\n }\r\n\r\n const response = await fetch(`${REGISTER_INSPECTION_PATH}${endpoint}`, options);\r\n\r\n if (!response.ok) {\r\n const errorMessage = await response.text();\r\n throw new Error(`Request failed (${method} ${endpoint}): ${errorMessage || response.statusText}`);\r\n }\r\n\r\n return response;\r\n } catch (error) {\r\n console.error(`Error in ${method} request:`, error);\r\n return { ok: false, error: error.message };\r\n }\r\n}\r\n\r\n\r\nasync function postInspection(requestBody, offlineId) {\r\n const response = await sendRequest(\"/save\", \"POST\", { ...requestBody });\r\n\r\n if (response.ok) {\r\n const responseClone = response.clone();\r\n const data = await responseClone.json();\r\n\r\n setOfflineFormData(STORAGE_KEY.INSPECTION, null, offlineId);\r\n updateInspectionIdInOfflineForm(data.id, STORAGE_KEY.ROWS_TO_ADD, offlineId);\r\n return response;\r\n }\r\n\r\n return response;\r\n}\r\n\r\nasync function postSort(requestBody, offlineId) {\r\n const response = await sendRequest(\"/sort\", \"POST\", requestBody);\r\n\r\n if (response.ok) {\r\n setOfflineFormData(STORAGE_KEY.SORT, null, offlineId);\r\n }\r\n\r\n return response;\r\n}\r\n\r\nasync function postBuilding(inspectiondId, requestBody, tmpId, offlineId) {\r\n const response = await sendRequest(`/${inspectiondId}/addbuilding`, \"POST\", requestBody);\r\n\r\n if (response.ok) {\r\n if (tmpId) removeOfflineFormDataArrayById(tmpId, STORAGE_KEY.BUILDINGS_TO_ADD, offlineId);\r\n }\r\n\r\n return response;\r\n}\r\n\r\nasync function deleteBuilding(inspectiondid, buildingId, offlineId) {\r\n const response = await sendRequest(`/buildings/${inspectiondid}/${buildingId}`, \"DELETE\");\r\n\r\n if (response.ok) {\r\n removeOfflineFormDataArrayById(buildingId, STORAGE_KEY.BUILDINGS_TO_REMOVE, offlineId);\r\n }\r\n\r\n return response;\r\n}\r\n\r\nasync function postRow(requestBody, tmpId, offlineId) {\r\n const response = await sendRequest(`/saverow`, \"POST\", requestBody);\r\n\r\n if (response.ok) {\r\n if (tmpId) removeOfflineFormDataArrayById(tmpId, STORAGE_KEY.ROWS_TO_ADD, offlineId);\r\n }\r\n\r\n return response;\r\n}\r\n\r\nasync function patchRow(inspectiondid, rowId, requestBody, offlineId) {\r\n const response = await sendRequest(`/saverow/${inspectiondid}/${rowId}`, \"PATCH\", requestBody);\r\n\r\n if (response.ok) {\r\n removeOfflineFormDataArrayById(rowId, STORAGE_KEY.ROWS_TO_EDIT, offlineId);\r\n }\r\n\r\n return response;\r\n}\r\n\r\nasync function deleteRow(inspectiondid, rowId, offlineId) {\r\n const response = await sendRequest(`/removerow/${inspectiondid}/${rowId}`, 'DELETE');\r\n\r\n if (response.ok) {\r\n removeOfflineFormDataArrayById(rowId, STORAGE_KEY.ROWS_TO_REMOVE, offlineId);\r\n }\r\n\r\n return response;\r\n}\r\n\r\nasync function saveInspectionData(inspectionId, offlineId) {\r\n try {\r\n await processStorageData(STORAGE_KEY.BUILDINGS_TO_ADD, async (building) => {\r\n await postBuilding(inspectionId, building, building.id, offlineId);\r\n }, offlineId);\r\n\r\n await processStorageData(STORAGE_KEY.BUILDINGS_TO_REMOVE, async (building) => {\r\n await deleteBuilding(inspectionId, building.id, offlineId);\r\n }, offlineId);\r\n\r\n await processStorageData(STORAGE_KEY.ROWS_TO_ADD, async (row) => {\r\n await postRow(row, row.id, offlineId);\r\n }, offlineId);\r\n\r\n await processStorageData(STORAGE_KEY.ROWS_TO_REMOVE, async (row) => {\r\n await deleteRow(inspectionId, row.id, offlineId);\r\n }, offlineId);\r\n\r\n await processStorageData(STORAGE_KEY.ROWS_TO_EDIT, async (row) => {\r\n await patchRow(inspectionId, row.id, row, offlineId);\r\n }, offlineId);\r\n\r\n const sortData = getOfflineFormData(STORAGE_KEY.SORT, offlineId);\r\n if (sortData?.length > 0) {\r\n await postSort({\r\n id: inspectionId,\r\n items: sortData,\r\n }, offlineId);\r\n }\r\n\r\n clearOfflineFormDataByKey(offlineId);\r\n } catch (error) {\r\n console.error(\"Error processing offline form data:\", error);\r\n }\r\n}\r\n\r\n\r\nasync function syncInspectionForm(offlineId, formInspectionId) {\r\n if (!offlineId) {\r\n console.warn(\"Offline ID is required.\");\r\n return;\r\n }\r\n\r\n const pendingInspection = getOfflineFormData(STORAGE_KEY.INSPECTION, offlineId);\r\n let inspectionId = formInspectionId;\r\n\r\n try {\r\n if (pendingInspection && Object.keys(pendingInspection).length > 0) {\r\n const inspectionResponse = await postInspection(pendingInspection, offlineId);\r\n if (!inspectionId && inspectionResponse.ok) {\r\n const inspectionData = await inspectionResponse.json();\r\n inspectionId = inspectionData.id;\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"Error posting inspection:\", error);\r\n return;\r\n }\r\n\r\n await saveInspectionData(inspectionId, offlineId)\r\n}\r\n\r\nasync function isConnected() {\r\n const controller = new AbortController();\r\n const timeout = setTimeout(() => controller.abort(), 2500);\r\n\r\n try {\r\n await fetch(`${REGISTER_INSPECTION_PATH}/check-connection`, {\r\n method: \"GET\",\r\n cache: \"no-cache\",\r\n signal: controller.signal\r\n });\r\n return true;\r\n } catch (error) {\r\n return false;\r\n } finally {\r\n clearTimeout(timeout);\r\n }\r\n}\r\n","const searchResult = {\r\n constants: {\r\n\r\n hiddenCssClass: 'd-none', \r\n paginationListItemLinkSelector: '.SearchResult .pagination [data-pagelink]',\r\n },\r\n searchResultContainer: document.querySelector('[data-searchresultscontainer]'),\r\n spinnerContainer: document.querySelector('[data-searchspinner]'),\r\n searchForm: document.querySelector('form[data-searchform]'),\r\n searchFormQueryInput: document.querySelector('form[data-searchform] input[name=\"q\"]'),\r\n\r\n init: () => { \r\n window.addEventListener('popstate', (event) => searchResult.reloadSearchResultOnNavigation(event));\r\n\r\n searchResult.searchForm.addEventListener('submit', (event) => {\r\n event.preventDefault();\r\n searchResult.doSearch({ fromForm: true });\r\n });\r\n },\r\n\r\n reloadSearchResultOnNavigation: (event) => { // When user uses back and forward buttons\r\n if (event.state && event.state.doSearch) {\r\n const query = event.state.query;\r\n searchResult.searchFormQueryInput.value = query;\r\n searchResult.doSearch({ fromForm: false, page: event.state.page });\r\n }\r\n },\r\n\r\n updateBrowserHistoryState: (query, page) => {\r\n const newUrl = new URL(window.location);\r\n newUrl.searchParams.set('q', query);\r\n newUrl.searchParams.set('p', page);\r\n window.history.pushState({ doSearch: true, query, page }, '', newUrl); // Push new state to history to update queryparam in browser\r\n },\r\n\r\n replaceBrowserHistoryState: (query, page) => {\r\n const newUrl = new URL(window.location);\r\n newUrl.searchParams.set('q', query);\r\n newUrl.searchParams.set('p', page);\r\n window.history.replaceState({ doSearch: true, query, page }, '', newUrl); // Replace history state with extra state data\r\n },\r\n\r\n doSearch: (options) => {\r\n searchResult.toggleSpinner({ hide: false });\r\n\r\n const query = searchResult.searchFormQueryInput.value; \r\n\r\n if (options.fromForm) {\r\n searchResult.updateBrowserHistoryState(query, options.page);\r\n }\r\n else {\r\n searchResult.replaceBrowserHistoryState(query, options.page);\r\n }\r\n\r\n (async () => {\r\n const response = await fetch(site.constants.api.submitSearch, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n query: query,\r\n culture: site.constants.globals.ctxCulture,\r\n homeItemId: site.constants.globals.homeItemId,\r\n page: options.page,\r\n requestVerificationToken: site.constants.globals.antiforgeryToken\r\n })\r\n });\r\n\r\n\r\n if (response.status !== 200) {\r\n }\r\n else {\r\n const data = await response.json();\r\n searchResult.searchResultContainer.innerHTML = \"\";\r\n if (data.result.result.result) {\r\n searchResult.searchResultContainer.innerHTML = data.result.result.html;\r\n } \r\n }\r\n \r\n \r\n searchResult.bindPager();\r\n site.helpers.initLazyLoad();\r\n\r\n searchResult.toggleResult({ hide: false });\r\n searchResult.toggleSpinner({ hide: true });\r\n })();\r\n },\r\n bindPager: () => {\r\n searchResult.searchResultContainer.querySelectorAll(searchResult.constants.paginationListItemLinkSelector).forEach((element) => {\r\n element.addEventListener('click', (event) => {\r\n event.preventDefault();\r\n window.scrollTo({ top: 0, behavior: \"smooth\" });\r\n searchResult.doSearch({ fromForm: true, page: event.target.dataset.pagelink });\r\n });\r\n });\r\n },\r\n toggleSpinner: (options) => {\r\n if (options.hide) {\r\n searchResult.spinnerContainer.classList.add(searchResult.constants.hiddenCssClass);\r\n }\r\n else {\r\n searchResult.spinnerContainer.classList.remove(searchResult.constants.hiddenCssClass);\r\n }\r\n },\r\n toggleResult: (options) => {\r\n if (options.hide) {\r\n searchResult.searchResultContainer.classList.add(searchResult.constants.hiddenCssClass);\r\n }\r\n else {\r\n searchResult.searchResultContainer.classList.remove(searchResult.constants.hiddenCssClass);\r\n }\r\n },\r\n\r\n};\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n if (document.getElementsByClassName('SearchResult').length == 1) {\r\n searchResult.init();\r\n }\r\n});\r\n"]}