{"version":3,"sources":["webpack:///./Scripts/Web/ViewModels/Checkout/Checkout.js","webpack:///./Scripts/Web/ViewModels/Checkout/PaymentView.js","webpack:///./Scripts/Web/ViewModels/Checkout/CheckoutFooterView.js","webpack:///./Scripts/Web/ViewModels/Checkout/SalesConditions.js","webpack:///./Scripts/Web/ViewModels/Checkout/ShipmentView.js","webpack:///./Scripts/Web/ViewModels/Checkout/CheckoutConfirmationView.js"],"names":["mcWeb","checkout","this","events","onShowSendOrder","$","jQuery","self","service","WebApiService","langService","LanguageService","cartName","cartGuid","isCheckoutPage","length","returnCode","getParameterByName","showErrorMessageFromReturnCode","btnOrderEl","priceEl","salesConditionsEl","PubSub","subscribe","message","status","registration","customerRegistration","instances","registrationVM","blockedCustomer","showBtn","disabledBtn","hide","removeClass","addClass","show","showPrice","showSalesConditions","findElement","payment","element","selectedPayment","find","findClass","cssClass","validatePayment","paymentId","validate","isValid","resName","CustomerType","isFodselsnummerValid","isOrgnrValid","validSantander","payments","validateSantander","IsValid","ResName","Element","validSveaWebPay","validateSveaWebPay","ShowOrgnrSsn","ShowOrgnrSsnField","isBirthdateValid","validation","setValidCss","getErrorMessage","done","result","qTipActionShow","addErrorClass","disableOrderButton","attr","enableOrderButton","removeAttr","insertOrder","conditionsVM","showErrorMessage","html","zipCode","undefined","val","focus","epost","toLowerCase","paymentValidationResult","showWaitTemplate","validateCustomerSelectionType","then","validationResult","success","salesConditionsAccepted","GetAction","SkiAssembly","load","SkiAttributeAssembly","publish","MessageToPublish","MessageToPublishData","console","log","alert","lightbox","onShowLightbox","backdrop","keyboard","paymentDetails","customer","getJsonData","paymentData","resourceName","validateSantanderAddress","postnr","poststed","adress","getValue","value","santanderApplicationDetails","RegisteredPostCode","Birthdate","birthDate","customerType","deliveryWindow","start","end","token","expiresAt","porterbuddyProduct","product","PostAction","CustomerData","PaymentDetails","CartGuid","CartName","ReturnCode","window","location","RedirectUrl","ErrorMessageSpecified","ErrorMessage","selectCurrencyParam","SupportedCurrencies","changedCurrencyResult","Msg","on","e","cart","onChangedCart","SecondaryErrorMessageSpecified","UseSecondaryErrorMessageAsReturnCode","SecondaryErrorMessage","onShowShipment","shipment","reloadShipment","reload","requireLogin","invalidElements","scrollToFirstInvalidElement","elem","fail","error","modal","salesCondCheckbox","salesconditions","is","prop","showAlertErrorMessage","indexOf","country","replace","email","asHtml","msg","append","showTemplate","animate","scrollTop","offset","top","name","results","RegExp","exec","search","decodeURIComponent","wait","template","data","extend","vm","id","netsEasyCheckout","netsEasyCheckoutHtml","betBetIdList","settings","isPublishMode","publishModeBody","kcoValidateCountry","netsEasyProduction","netsEasyEnabled","waitCheckoutSnippet","cancelEnter","event","keyCode","preventDefault","isPaymentChange","onShowUpdateIcon","Porterbuddy","CustomerCountryId","KlarnaLandId","KlarnaVersion","klarnaShowCustomerTypeSelection","klarnaShippingAssistantEnabled","klarnaShowChangedCustomerTypeMessage","Klarna","ShowCustomerTypeSelection","ShippingAssistantEnabled","ShowChangedCustomerTypeMessage","sveaCheckoutShowCustomerTypeSelection","SveaCheckout","vippsExpressCheckoutInCart","vippsShowCustomerTypeSelection","vippsAllowBusinessCustomer","Vipps","isLoggedIn","readOnly","ExpressCheckoutInCart","AllowBusinessCustomer","NetsEasy","Enabled","Production","netsEasyShowCustomerTypeSelection","setNetsEasyCheckoutScriptSource","experianRemoved","hideExperianBetBet","expIndex","PaymentTypes","i","PaymentId","experianBetBetId","splice","hideOrgnrSsn","GetKlarnaJson","KlarnaCustomerType","addBindings","IsLoggedIn","BirthDate","paymentMethodSelected","hasKlarnaCheckout","selectPaymentType","SelectedId","loadCustomerForm","PaymentList","reloadPayments","onHideUpdateIcon","highlightRequiredConditions","highlightRequired","getTemplateNameKonto","selectedKlarnaKontoCampaign","getTemplateNameFaktura","selectedKlarnaFakturaCampaign","pclass_id","document","hasCartItems","ko","observable","functionalConditionsAccepted","showPayments","computed","observableArray","selectedPaymentOld","newValue","onSelectedPayment","KlarnaCampaigns","Fodselsnummer","RegisteredZip","isValidDateddmmyy","date","input","symbol","Orgnr","updateOrgNr","selectedSveaPaymentPlanOptionRadio","showSveaPaymentPlanOptionInfo","campaignCode","formatMoney","money","formatInterest","interest","GothiaTOS","GothiaRequireCustomerConfirmation","AcceptedTermsAndConditions","showRefreshSpin","showRefreshSpinMargin","SveaWebPayPaymentPlanOptions","GetSveaWebPayPaymentPlanOptions","KlarnaInvoiceFee","showCustomerSelection","hight","parseFloat","height","NaN","selectedKlarnaPclass","hasCartItem","shippingOptionsHandled","shippingOptions","logPb","porterbuddy","homeDeliveryOptions","refreshShippingOptions","logTxt","logData","Text","Data","JSON","stringify","onChangedCustomerData","RegisterKlarnaListener","conditions","onAcceptChange","evt","conditionStatus","usageArea","previousFunctionalAcceptanceStatus","functionalConditionIsAccepted","acceptDocuments","KCOisLoaded","processPaymentMethods","UpdateCheckoutCartItems","loginCheckout","onShowLoginPassword","el","tabContent","tabHeight","css","form","detach","tab","appendTo","queue","duration","nav","onShowHideLogin","getFakturaGebyr","getGothiaAccountTos","getSveaWebPayPaymentPlanOptions","inlineEditor","init","paymentType","paymentText","PaymentText","handlePaymentChange","qtip","clickPrivate","setRecipientInfoLocked","orgnrTemp","birthdate","SocialSecurityNumber","CampaignCode","AcceptCreditCheck","OrgNumber","indexOfKlarnaFaktura","group","code","indexOfFirstKlarnaKonto","paymentTypes","getKlarnaJson","json","parse","payment_methods","updatePaymentWithPBAddress","recipientInfo","provider","req","Provider","AddressLine","streetAddress","ZipCode","postCode","Email","radioButtonListArray","checked","type","paymentDiv","toFind","TermsAndConditions","RequireCustomerConfirmation","gothiaShowTermsAndConditions","generator","open","write","close","klarna","regEx","test","isZipCodeValid","isZipCodeValidFormat","landId","match","isPhoneValidFormat","dateString","showKlarnaTerms","href","terms","uri","selectFirstInList","filter","GetCheckoutSnippet","GetCheckout","customerData","trim","Customer","IsPaymentChange","SetKlarnaCheckout","SetNetsEasyCheckout","CheckoutOptions","SetSveaCheckout","snippet","RegisterSveaCheckoutListener","netsEasyCheckoutPaymentId","checkoutOptions","checkoutSnippetHtml","cleanup","Dibs","Checkout","RegisterNetsEasyCallback","response","redirectMsg","onHideLightbox","address","countryCode","postalCode","landKode3","onChangedZipCode","UpdateCheckoutZipCode","paymentAddress","Name","StreetAddress","StreetAddress2","PostalCode","City","CountryCode","SetPorterbuddyRecipientInfo","defaultCustomerType","showPaymentProviderCartReloadLightbox","send","SuspendKlarnaCheckout","_klarnaCheckout","api","suspend","ResumeKlarnaCheckout","resume","IsKcoEnabled","kcoEnabled","netsEasyFrozen","freezeCheckout","netsEasyFreezeStack","push","pop","thawCheckout","Success","showKcoCartReloadLightbox","getElementById","addEventListener","changeCustomerType","onChangedCustomerType","clickBusiness","showCustomerType","showRegButtons","VippsExpressCheckout","checkoutFooterView","ajax","url","contentType","scoApi","customEventHandlers","observeEvent","toString","previousPbEmail","previousPbPostCode","previousPbStreetAddress","recipient","setRecipientInfo","localStorage","setItem","getShippingOptions","refresh","pb","sri","SetRecipientInfo","PostCode","PreviousEmail","PreviousPostCode","PreviousStreetAddress","kcoData","onChangedEmail","postal_code","give_name","family_name","city","jsonData","shippingId","price","taxRate","tax_rate","taxAmount","tax_amount","selectedCountry","m_Item1","countryText","m_Item2","zipCodePrev","showOrgnrSsn","Show","FieldToShow","updateKco","onChangedCampaignCode","onChangedQuantityCart","onSelectedShipment","onChangedShipment","ResetLoginCheckoutPosision","focusFirstName","responsive","getScreenSize","setTimeout","login","onIsloggedIn","validateModel","res","lastValidationResult","every","elementIsValid","SoftAdressValidation","addressWarningFlag","forEach","valid","index","remove","validationRules","removeValidCss","rule","validateElement","eledata","target","elemValidationResult","conditionsStatus","isFunctionalConditionAccepted","refCondVm","isOrderRefRequired","onOrderRefReqChange","tooltip","blur","source","condsForProcessing","qTipActionShowClickHide","innerText","salesConditions","showConditons","onClickConditions","showShipments","showShipmentsDetails","showShipmentPrice","showOnlyCarrierList","showCheckoutZipCode","selectedCarrierName","carrierList","selectedCarrierId","selectedCarrierPrice","pickupPointEnabled","pickupPointRegionList","pickupPointCustomerList","pickupPointSelectedRegion","pickupPointSelectedCustomer","pickupPointRegion","pickupPointRegionId","pickupPointCustomername","popoverOpen","focusZipCode","postOffice","adressDelivery","adresstillegDelivery","poststedDelivery","isCheckout","showCollectedDelivery","useCollectedDeliveryPrev","useCollectedDelivery","onChangeCollectedDelivery","showInsuranceProduct","useInsuranceProduct","showPrintPackingList","usePrintPackingListPrev","usePrintPackingList","onChangedUsePrintPackingList","active","ShowShipments","ShowShipmentPrice","ShowOnlyCarrierList","ShowCheckoutZipCode","ShowCollectedDelivery","ShowPrintPackingList","ShowInsuranceProduct","InlineEditor","PickupPointEnabled","CarrierList","SelectedCarrierId","setSelectedCarrier","UseCollectedDelivery","UseInsuranceProduct","KlarnaShippingAssistantEnabled","UsePrintPackingList","addProduct","Message","err","getPickupPointRegions","Region","RegionId","regionId","Customername","saveSelectedPickupPointCustomer","customerId","customerName","customerEmail","selectedPickupPoint","customername","EmailAddress","CustomerId","each","obj","Id","PrintPrice","cartsmall","onChangedQuantityCartSmall","saveSelectedCarrier","carrier","removeAll","authenticationGuid","currentUser","getAuthenticationGUID","getEmail","PickupPoint","carrierItem","CustomerRegistration","SelectedCarrierRemoved","Carriers","showCarrierList","useDifferentDeliveryAddress","postnrDelivery","LoadZipCode","adresstilleg","onChangedCity","betBetId","stopUpdateIcon","shipmentInfo","text","onToggleCarrierTypes","slideToggle","isNumberKey","sender","key","which","activeElement","popover","trigger","title","content","placement","container","bindingHandlers","popoverShipping","valueAccessor","allBindingsAccessor","viewModel","bindingContext","node","popoverNode","option","utils","unwrapObservable","conId","contentid","titId","titleid","contentkn","titlekn","togglePopover","parentElement","innerData","cleanNode","context","con","contentClass","click","checkoutConfirmation","instance","checkoutConfirmationObj","jsonSetting","referenceNo","setting","ReferenceNo","applyBindings"],"mappings":"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","file":"checkout.67a820a868ce0b95c68f.bundle.js","sourcesContent":["mcWeb.checkout = new function () {\r\n\r\n this.events = {\r\n onShowSendOrder: \"mcWeb.checkout.onShowSendOrder\" \r\n };\r\n\r\n\tvar $ = jQuery;\r\n\tvar self = this;\r\n\tself.service = new WebApiService(\"Checkout\");\r\n\tself.langService = new LanguageService();\r\n \r\n\tself.cartName = null;\r\n self.cartGuid = null;\r\n\t\t\r\n $(function () {\r\n\r\n self.isCheckoutPage = ($(\"#checkout\").length > 0) ? true : false;\r\n\r\n if (!self.isCheckoutPage)\r\n return;\r\n\r\n\t\tvar returnCode = self.getParameterByName(\"returnCode\");\r\n\t\tself.showErrorMessageFromReturnCode(returnCode);\r\n\r\n\t\tvar btnOrderEl = $(\"#McPaymentAddOrderbottom\");\r\n\t\tvar priceEl = $(\"#checkout-amount\");\r\n\t\tvar salesConditionsEl = $(\"#mcweb-salesconditions-sales-conditions\");\r\n\r\n\t\tPubSub.subscribe(mcWeb.checkout.events.onShowSendOrder, function (message, status) {\r\n\r\n if (status === null)\r\n return;\r\n\r\n var registration = mcWeb.customerRegistration.instances[\"checkout-registration\"];\r\n if (registration !== null) {\r\n //Blocked or not active customer\r\n if (registration.registrationVM.blockedCustomer()) {\r\n status.showBtn = false;\r\n status.disabledBtn = true;\r\n $(\".sales-conditions\").hide();\r\n }\r\n }\r\n\r\n\r\n if (status.showBtn !== null || status.disabledBtn !== null) {\r\n\r\n if (status.disabledBtn !== null)\r\n {\r\n if (status.disabledBtn === true) {\r\n btnOrderEl.removeClass(\"btn-primary\");\r\n btnOrderEl.addClass(\"btn-default disabled\");\r\n } else {\r\n btnOrderEl.removeClass(\"btn-default disabled\");\r\n btnOrderEl.addClass(\"btn-primary\");\r\n }\r\n }\r\n\r\n if (status.showBtn !== null) {\r\n\r\n if (status.showBtn === true) {\r\n btnOrderEl.show();\r\n } else {\r\n btnOrderEl.hide();\r\n }\r\n }\r\n }//showBtn or disabledBtn\r\n\r\n if (status.showPrice !== null) {\r\n if (status.showPrice === true) {\r\n priceEl.show();\r\n } else {\r\n priceEl.hide();\r\n }\r\n }\r\n\r\n if (status.showSalesConditions !== null) {\r\n\r\n if (status.showSalesConditions === true) {\r\n salesConditionsEl.show();\r\n } else {\t\t \r\n salesConditionsEl.hide();\r\n }\r\n }\r\n\r\n });\r\n\r\n\t});\r\n\r\n\r\n self.findElement = function (payment, element) {\r\n return $(\"div[id=\" + payment.selectedPayment() + \"]\").find(\"input[id*='\" + element + \"']\");\r\n };\r\n\r\n self.findClass = function (payment, cssClass) {\r\n return $(\"div[id=\" + payment.selectedPayment() + \"]\").find(\"input[class*='\" + cssClass + \"']\");\r\n };\r\n\t\r\n\tself.validatePayment = function (payment) {\r\n\t\tvar paymentId = payment.selectedPayment();\r\n\t\tvar element;\r\n\t\tvar validate = false;\r\n\t\tvar isValid = false;\r\n\t\tvar resName = \"\";\r\n\r\n\t\tif (paymentId === 96 || paymentId === 97) {\t//Klarna \r\n\t\t\tvalidate = true;\r\n if (payment.CustomerType() === \"private\" || payment.CustomerType() === \"privatkunde\") {\r\n element = self.findElement(payment, \"fodselsnummer\");\r\n\t\t\t\tisValid = payment.isFodselsnummerValid($(\"#fodselsnummer\"), true);\r\n\t\t\t\tresName = \"FodselsnummerError\";\r\n\t\t\t} else {\r\n element = self.findElement(payment, \"orgnr\");\r\n\t\t\t\tisValid = payment.isOrgnrValid($(\"#orgnr\"), true);\r\n\t\t\t\tresName = \"OrgnummerError\";\r\n\t\t\t}\r\n } else if (paymentId === 94 || paymentId === 107) { //Gothia private\r\n\t\t\telement = self.findElement(payment, \"birth_ssn\");\r\n\t\t\tvalidate = true;\r\n\t\t\tisValid = payment.isFodselsnummerValid($(\"#birth_ssn\"), false);\r\n\t\t\tresName = \"FodselsnummerError\";\r\n } else if (paymentId === 95) { //Gothia business\r\n\t\t\telement = self.findElement(payment, \"orgnr_ssn\");\r\n\t\t\tvalidate = true;\r\n\t\t\tisValid = payment.isOrgnrValid($(\"#orgnr_ssn\"), false);\r\n\t\t\tresName = \"OrgnummerError\";\r\n } else if (paymentId === 112 || paymentId === 115 || paymentId === 168) { //Santander\r\n\t\t\tvalidate = true;\r\n\t\t\tvar paymentViewSantander = mcWeb.payments.instances[\"payment-view\"];\r\n var validSantander = paymentViewSantander.validateSantander(payment);\r\n\r\n\t\t\tisValid = validSantander.IsValid;\r\n\t\t\tresName = validSantander.ResName;\r\n\t\t\telement = validSantander.Element;\r\n\t\t} else if (paymentId === 87 || paymentId === 128) {\r\n\t\t\tvalidate = true;\r\n\t\t\tvar paymentViewSvea = mcWeb.payments.instances[\"payment-view\"];\r\n var validSveaWebPay = paymentViewSvea.validateSveaWebPay(payment);\r\n\r\n\t\t\tisValid = validSveaWebPay.IsValid;\r\n\t\t\tresName = validSveaWebPay.ResName;\r\n\t\t\telement = validSveaWebPay.Element;\r\n\t\t} else if (payment.ShowOrgnrSsn()) {\r\n\t\t\tvalidate = true;\r\n\t\t\tvar fieldType = payment.ShowOrgnrSsnField();\r\n\t\t\tswitch (fieldType) {\r\n\t\t\tcase 1:\r\n element = self.findClass(payment, \"genericOrgnr\");\r\n isValid = payment.isOrgnrValid($(\".genericOrgnr\"), false);\r\n resName = \"OrgnummerError\";\r\n break;\r\n\t\t\tcase 2:\r\n element = self.findClass(payment, \"genericSsn\");\r\n isValid = payment.isFodselsnummerValid($(\".genericSsn\"), false);\r\n resName = \"FodselsnummerError\";\r\n break;\r\n\t\t\tcase 3:\r\n element = self.findClass(payment, \"genericBirthdate\");\r\n isValid = payment.isBirthdateValid($(\".genericBirthdate\"), false);\r\n resName = \"FodselsdatoError\";\r\n break;\r\n\t\t\tdefault:\r\n isValid = false;\r\n resName = \"MissingFields\";\r\n break;\r\n\t\t\t}\r\n\t\t} else {\r\n isValid = true;\r\n\t\t}\r\n\r\n\t\tif (validate) {\r\n\t\t\tif (!isValid) {\r\n\t\t\t\tvar errorText = mcWeb.validation.getErrorMessage(\"VALIDATION,\" + resName);\r\n\t\t\t\terrorText.done(function (result) {\r\n\t\t\t\t\tmcWeb.validation.qTipActionShow(element, result, false);\r\n\t\t\t\t\tmcWeb.validation.addErrorClass(element);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (element) {\r\n\t\t\t\t\tmcWeb.validation.setValidCss(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn isValid;\r\n\t};\r\n \r\n self.disableOrderButton = function() {\r\n $(\"#McPaymentAddOrderbottom\").attr(\"disabled\", \"disabled\");\r\n };\r\n\r\n self.enableOrderButton = function() {\r\n $(\"#McPaymentAddOrderbottom\").removeAttr(\"disabled\");\r\n };\r\n \r\n self.insertOrder = function (conditionsVM) {\r\n self.disableOrderButton();\r\n self.conditionsVM = conditionsVM;\r\n\t\tvar btnSendOrder = $(\"#McPaymentAddOrderbottom.btn-default.disable\");\r\n\t\tif (btnSendOrder.length > 0) {\r\n\t\t\tself.showErrorMessage($(\"#missing-info\").html());\r\n self.enableOrderButton();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n if ($(\".hide-zipcode\").length === 0) {\r\n var zipCode = $(\"#carrier-zipcode\");\r\n if (zipCode[0] !== undefined) {\r\n if (zipCode.val().length < 1) {\r\n zipCode.focus();\r\n self.enableOrderButton();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\t\t$(\"#insert-order-alert\").hide();\r\n\t\tvar registration = mcWeb.customerRegistration.instances[\"checkout-registration\"];\r\n var payment = mcWeb.payments.instances[\"payment-view\"];\r\n\r\n if (typeof registration.registrationVM.epost() === 'string')\r\n registration.registrationVM.epost(registration.registrationVM.epost().toLowerCase());\r\n\t\t\r\n\t\tvar paymentValidationResult = self.validatePayment(payment);\r\n\t\tself.showWaitTemplate();\r\n if (!registration.validateCustomerSelectionType()) {\r\n self.enableOrderButton();\r\n return;\r\n }\r\n\r\n registration.validate().then(function (validationResult ) {\r\n\r\n if (!validationResult.success || !paymentValidationResult) {\r\n if (!paymentValidationResult) {\r\n // paymentError\r\n }\r\n else if (registration.requireLogin()) {\r\n //window.location.hash = \"#login\"; // Todo: Endre til en event via PubSub\r\n self.showErrorMessage($(\".text-email-blocked\").html());\r\n } else if (validationResult.invalidElements.length > 0) {\r\n self.scrollToFirstInvalidElement(validationResult.invalidElements[0].elem);\r\n } else {\r\n if(validationResult.message !== null && validationResult.message.length > 0)\r\n self.showErrorMessage(validationResult.message);\r\n }\r\n self.enableOrderButton();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.salesConditionsAccepted()) {\r\n\t\t\t\tself.showErrorMessage($(\".sales-cond-warning\").html());\r\n self.enableOrderButton();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n // Sjekker om SkiAssembly er aktivert og om det er produkter i handlevognen som mangler info\r\n self.service.GetAction(\"ShowSkiAssembly\", null).done(function (result) {\r\n if (result.length > 0) {\r\n self.enableOrderButton();\r\n\r\n if (result === \"mcWeb.SkiAssembly\")\r\n mcWeb.SkiAssembly.load(true);\r\n else if (result === \"mcWeb.SkiAttributeAssembly\")\r\n mcWeb.SkiAttributeAssembly.load();\r\n else if (result === \"mcWeb.cart.events.onPopupForProductAssembly\") {\r\n PubSub.publish(result.MessageToPublish, result.MessageToPublishData);\r\n }\r\n else {\r\n console.log(result)\r\n alert(\"Error - Cant show ski assembly\");\r\n }\r\n return;\r\n }\r\n\r\n // Viser \"vennligst vent\"-melding\r\n PubSub.publish(mcWeb.lightbox.events.onShowLightbox, { backdrop: \"static\", keyboard: false, show: true });\r\n\r\n var customer = registration.getJsonData(self.conditionsVM);\r\n var paymentData = payment.getJsonData();\r\n var paymentDetails;\r\n\r\n if (paymentData.selectedPayment === 112 || paymentData.selectedPayment === 115 || paymentData.selectedPayment === 168) {\r\n var resourceName = payment.validateSantanderAddress(customer.postnr, customer.poststed, customer.adress);\r\n\r\n if (resourceName !== \"\") {\r\n self.langService.getValue(\"VALIDATION\", resourceName).done(function (value) {\r\n if (value.length > 0)\r\n self.showErrorMessage(value);\r\n });\r\n self.enableOrderButton();\r\n return;\r\n }\r\n\r\n paymentDetails = paymentData.santanderApplicationDetails;\r\n paymentDetails.RegisteredPostCode = paymentData.paymentDetails.RegisteredPostCode;\r\n } else {\r\n paymentDetails = paymentData.paymentDetails;\r\n }\r\n\r\n if (paymentData.paymentDetails.Birthdate !== \"undefined\")\r\n customer.birthDate = paymentData.paymentDetails.Birthdate;\r\n\r\n if (customer.customerType === \"undefined\" && payment.CustomerType() === \"privatkunde\")\r\n customer.customerType = \"private\";\r\n\r\n var registrationVM = mcWeb.customerRegistration.instances['checkout-registration'].registrationVM;\r\n if (registrationVM.deliveryWindow() !== null) {\r\n var deliveryWindow = registrationVM.deliveryWindow()\r\n customer.deliveryWindow = { start: deliveryWindow.start, end: deliveryWindow.end, token: deliveryWindow.token, expiresAt: deliveryWindow.expiresAt };\r\n customer.porterbuddyProduct = deliveryWindow.product;\r\n }\r\n\r\n self.service.PostAction(\"ProcessOrder\", { CustomerData: customer, PaymentDetails: paymentDetails, CartGuid: self.cartGuid, CartName: self.cartName }).done(function (result) {\r\n\r\n if (result.ReturnCode === \"Success\") {\r\n\r\n window.location = result.RedirectUrl;\r\n \r\n } else {\r\n self.enableOrderButton();\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder, { showBtn: true, disabledBtn: false });\r\n \r\n if (result.ReturnCode === \"ValidatePostalAddressFailed\" & result.ErrorMessageSpecified) {\r\n self.showErrorMessageFromReturnCode(result.ErrorMessage);\r\n }\r\n else if (result.ReturnCode == \"UnsupportedCurrency\") {\r\n var selectCurrencyParam = {\r\n SupportedCurrencies : result.SupportedCurrencies\r\n }\r\n var loginServcie = new WebApiService(\"Login\");\r\n loginServcie.PostAction(\"SelectAnyValidCurrency\", selectCurrencyParam).done(function (changedCurrencyResult) {\r\n \r\n self.showErrorMessage(changedCurrencyResult.Msg);\r\n $(\"#center-popup\").on(\"hidden.bs.modal\", function (e) {\r\n PubSub.publish(mcWeb.cart.events.onChangedCart);\r\n });\r\n });\r\n }\r\n else if (result.ErrorMessageSpecified) {\r\n self.showErrorMessage(result.ErrorMessage);\r\n if (result.ReturnCode === \"ProductValidationFailed\") {\r\n $(\"#center-popup\").on(\"hidden.bs.modal\", function (e) {\r\n PubSub.publish(mcWeb.cart.events.onChangedCart);\r\n });\r\n }\r\n }\r\n else if (result.SecondaryErrorMessageSpecified) {\r\n if (result.UseSecondaryErrorMessageAsReturnCode)\r\n self.showErrorMessageFromReturnCode(result.SecondaryErrorMessage);\r\n else\r\n self.showErrorMessage(result.SecondaryErrorMessage);\r\n }\r\n else {\r\n if (result.ReturnCode === \"SelectedCarrierNoLongerAvailable\")\r\n PubSub.publish(mcWeb.cart.events.onShowShipment, { show: true });\r\n //PubSub.publish(mcWeb.cartsmall.events.onChangedQuantityCartSmall, \"\");\r\n PubSub.publish(mcWeb.shipment.events.reloadShipment, null);\r\n\r\n if (result.ReturnCode === \"SessionNotValid\") result.ReturnCode = \"CurrentSessionHasExpired\";\r\n self.showErrorMessageFromReturnCode(result.ReturnCode);\r\n\r\n if (result.ReturnCode === \"CurrentSessionHasExpired\" || result.ReturnCode === \"ExperianError\" || result.ReturnCode === \"ExperianNoCreditApproval\" ||\r\n result.ReturnCode === \"CampaignInvalid\" || result.ReturnCode === \"CartArchivedOrInserted\") {\r\n $(\"#center-popup\").on(\"hidden.bs.modal\", function(e) {\r\n window.location.reload(true);\r\n });\r\n }\r\n else if (result.ReturnCode === \"CartValueAltered\" || result.ReturnCode ===\"GiftcardAmountNeededRefresh\" ) {\r\n $(\"#center-popup\").on(\"hidden.bs.modal\", function(e) {\r\n PubSub.publish(mcWeb.cart.events.onChangedCart);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n });\r\n\t\t})\r\n\t\t.fail(function (error) {\r\n\t\t\t$(\"#checkout-popup\").modal(\"hide\");\r\n self.enableOrderButton();\r\n\t\t\tconsole.log(error);\r\n\t\t});\r\n\t};\r\n\r\n self.salesConditionsAccepted = function() {\r\n var salesCondCheckbox = $(\".checkbox-sales-cond\");\r\n var salesconditions = $(\".sales-conditions\");\r\n salesconditions.removeClass(\"has-error\");\r\n if (salesCondCheckbox.length > 0 && salesconditions.is(\":visible\")) {\r\n if (salesCondCheckbox.prop(\"checked\")) {\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n\r\n salesconditions.addClass(\"has-error\");\r\n return false;\r\n };\r\n\r\n\tself.showErrorMessage = function (message) {\r\n\t\tif (message.length > 0)\r\n\t\t\tself.showAlertErrorMessage(message);\r\n\t};\r\n\r\n\tself.showErrorMessageFromReturnCode = function (returnCode) {\r\n\t\tif (returnCode.length === 0)\r\n\t\t\treturn;\r\n\r\n\t\tvar unknownErrorCodes = [\r\n\t\t\t\"CartIsNull\", \"SetCustomerDataFailed\", \"SetCartValuesFailed\",\r\n\t\t\t\"SaveCartFailed\", \"CommitPhoneFailed\", \"BrokenCartReplaced\"\r\n\t\t];\r\n\r\n\t\tif (unknownErrorCodes.indexOf(returnCode) !== -1)\r\n\t\t\treturnCode = \"UnknownError\";\r\n\r\n\t\tself.langService.getValue(\"CheckoutReturnCodes\", returnCode).done(function (value) {\r\n if (value.length > 0) {\r\n var country = self.getParameterByName(\"country\");\r\n if (country) value = value.replace(/{COUNTRY}/gi, country);\r\n\r\n var email = self.getParameterByName(\"email\");\r\n if (email) value = value.replace(/{EMAIL}/gi, email);\r\n\r\n self.showAlertErrorMessage(value);\r\n }\r\n\t\t\telse {\r\n\t\t\t\tself.langService.getValue(\"CheckoutReturnCodes\", \"UnknownError\").done(function (value) {\r\n\t\t\t\t\tif (value.length > 0)\r\n\t\t\t\t\t\tself.showAlertErrorMessage(value);\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tself.showAlertErrorMessage(\"\");\t//TODO: Hide progressdialog\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n self.showAlertErrorMessage = function(message, asHtml) {\r\n var msg = $(\"#error-message-label\");\r\n if (asHtml === true) {\r\n msg.append(message);\r\n } else {\r\n msg.html(message);\r\n }\r\n\r\n self.showTemplate($(\"#popup-error-message\").html());\r\n PubSub.publish(mcWeb.lightbox.events.onShowLightbox, { show: true });\r\n };\r\n\r\n\tself.scrollToFirstInvalidElement = function (element) {\r\n\t\tvar animationTime = 750;\r\n\t\tvar topOffset = 120;\r\n\t\t$(\"html, body\").animate({\r\n\t\t\tscrollTop: $(element).offset().top - topOffset\r\n\t\t}, animationTime);\r\n\t\telement.focus();\r\n };\r\n\r\n\tself.getParameterByName = function (name) {\r\n\t\tname = name.replace(/[\\[]/, \"\\\\[\").replace(/[\\]]/, \"\\\\]\");\r\n\t\tvar regex = new RegExp(\"[\\\\?&]\" + name + \"=([^]*)\"),\r\n\t\t\t\tresults = regex.exec(location.search);\r\n\t\treturn results === null ? \"\" : decodeURIComponent(results[1].replace(/\\+/g, \" \"));\r\n\t}\r\n\r\n\tself.showWaitTemplate = function () {\r\n\r\n\t\tvar wait = $(\"#popup-wait\");\r\n\t\tif (wait.length < 1)\r\n\t\t\treturn;\r\n\r\n\t\tself.showTemplate(wait.html());\r\n\t};\r\n\r\n\tself.showTemplate = function (html) {\r\n\r\n\t\tvar template = $(\"#lightbox-placeholder\");\r\n\t\tif (template.length < 1) {\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder, { showBtn: false, disabledBtn: false });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttemplate.html(html);\r\n\t};\r\n\r\n\tPubSub.subscribe(mcWeb.cart.events.cartGuid, function (message, data) {\r\n\t\tif (data !== null) {\r\n\t\t\tself.cartName = data.cartName;\r\n\t\t\tself.cartGuid = data.cartGuid;\r\n\t\t}\t\t\r\n });\r\n};\r\n","mcWeb.payments = jQuery.extend(mcWeb.payments, new function () {\r\n\r\n this.vm = function (id) {\r\n\r\n // Se også LoginCheckoutView.js, subscribe(onShowHideLogin)\r\n var KLARNA_INVOICE = 96;\r\n var KLARNA_ACCOUNT = 97;\r\n var KCO_BETBETID = 167;\r\n var SVEA_PARTPAYMENT = 128;\r\n var ARVATO_PARTPAYMENT = 107;\r\n var ARVATO_BUSINESS = 95;\r\n var NETS_EASY_BETBETID = 183;\r\n var VIPPS_BETBETID = 186;\r\n var SCO_BETBETID = 187;\r\n\r\n this.netsEasyCheckout = null;\r\n this.netsEasyCheckoutHtml = null;\r\n this.betBetIdList = \"\";\r\n\r\n var $ = jQuery;\r\n var self = this;\r\n this.id = \"#\" + id;\r\n this.settings = null;\r\n self.isPublishMode = false;\r\n var publishModeBody = $(\"body.publish-mode\");\r\n if (publishModeBody !== undefined && publishModeBody !== null && publishModeBody.length > 0)\r\n self.isPublishMode = true;\r\n\r\n self.kcoValidateCountry = true;\r\n\r\n self.netsEasyProduction = false;\r\n self.netsEasyEnabled = false;\r\n self.cartName = null;\r\n self.cartGuid = null;\r\n self.service = new WebApiService(\"Payment\");\r\n self.waitCheckoutSnippet = false;\r\n self.langService = new LanguageService();\r\n self.conditionsVM = null;\r\n self.cancelEnter = function () {\r\n if (event.keyCode === 13) {\r\n event.preventDefault();\r\n } else return true;\r\n };\r\n\r\n this.load = function (data, settings, isPaymentChange) {\r\n\r\n PubSub.publish(mcWeb.payments.events.onShowUpdateIcon, null);\r\n\r\n if (settings !== null && settings) {\r\n self.settings = settings;\r\n }\r\n\r\n if (data === null || !data) {\r\n self.service.GetAction(\"GetPaymentList\", null).done(function (result) {\r\n self.load(result, null, isPaymentChange);\r\n });\r\n\r\n return;\r\n }\r\n\r\n self.Porterbuddy = self.settings.Porterbuddy;\r\n self.CustomerCountryId = self.settings.CustomerCountryId;\r\n self.KlarnaLandId = self.settings.KlarnaLandId;\r\n self.KlarnaVersion = self.settings.KlarnaVersion;\r\n\r\n self.klarnaShowCustomerTypeSelection(false);\r\n self.klarnaShippingAssistantEnabled(false);\r\n self.klarnaShowChangedCustomerTypeMessage(false);\r\n\r\n if (self.settings.Klarna) {\r\n self.klarnaShowCustomerTypeSelection(self.settings.Klarna.ShowCustomerTypeSelection);\r\n self.klarnaShippingAssistantEnabled(self.settings.Klarna.ShippingAssistantEnabled);\r\n self.klarnaShowChangedCustomerTypeMessage(self.settings.Klarna.ShowChangedCustomerTypeMessage);\r\n }\r\n\r\n self.sveaCheckoutShowCustomerTypeSelection(false);\r\n\r\n if (self.settings.SveaCheckout) {\r\n self.sveaCheckoutShowCustomerTypeSelection(self.settings.SveaCheckout.ShowCustomerTypeSelection);\r\n }\r\n\r\n self.vippsExpressCheckoutInCart(false);\r\n self.vippsShowCustomerTypeSelection(false);\r\n self.vippsAllowBusinessCustomer(false);\r\n\r\n if (self.settings.Vipps) {\r\n if (!self.isLoggedIn() && !self.registration.registrationVM.readOnly())\r\n self.vippsExpressCheckoutInCart(self.settings.Vipps.ExpressCheckoutInCart);\r\n self.vippsShowCustomerTypeSelection(self.settings.Vipps.ShowCustomerTypeSelection);\r\n self.vippsAllowBusinessCustomer(self.settings.Vipps.AllowBusinessCustomer);\r\n }\r\n\r\n if (self.settings.NetsEasy) {\r\n self.netsEasyEnabled = self.settings.NetsEasy.Enabled;\r\n self.netsEasyProduction = self.settings.NetsEasy.Production;\r\n self.netsEasyShowCustomerTypeSelection(self.settings.NetsEasy.ShowCustomerTypeSelection);\r\n }\r\n self.setNetsEasyCheckoutScriptSource();\r\n\r\n if (self.registration.registrationVM.readOnly() === true) {\r\n var experianRemoved = false;\r\n if (self.registration.registrationVM.hideExperianBetBet()) {\r\n\r\n var expIndex = -1;\r\n if (data.PaymentTypes !== null) {\r\n for (var i = 0; i < data.PaymentTypes.length; i++) {\r\n if (data.PaymentTypes[i].PaymentId === self.registration.registrationVM.experianBetBetId())\r\n expIndex = i;\r\n }\r\n }\r\n\r\n if (expIndex !== -1) {\r\n data.PaymentTypes.splice(expIndex, 1);\r\n experianRemoved = true;\r\n }\r\n\r\n } else if (self.registration.registrationVM.hideOrgnrSsn()) {\r\n self.ShowOrgnrSsn(false);\r\n self.ShowOrgnrSsnField(0);\r\n }\r\n }\r\n\r\n // Vi sjekker om det er gjort endringer på betalingsmåter som skal vises \r\n // og setter kun PaymentTypes dersom det er en endring. Dette for å hindre \r\n // at hele paymentviewet unødvendig lastes på nytt. \r\n if (self.PaymentTypes() && data.PaymentTypes && self.PaymentTypes().length == data.PaymentTypes.length) {\r\n for (var i = 0; i < data.PaymentTypes.length; i++) {\r\n if (self.PaymentTypes()[i].PaymentId !== data.PaymentTypes[i].PaymentId) {\r\n self.PaymentTypes(data.PaymentTypes);\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n self.PaymentTypes(data.PaymentTypes);\r\n }\r\n\r\n self.GetKlarnaJson(data.PaymentTypes);\r\n self.KlarnaCustomerType(data.CustomerType);\r\n self.CustomerType(data.CustomerType);\r\n\r\n self.addBindings();\r\n self.isLoggedIn(data.IsLoggedIn);\r\n self.BirthDate(data.BirthDate);\r\n\r\n var paymentMethodSelected = false;\r\n var hasKlarnaCheckout = false;\r\n\r\n if (data.PaymentTypes !== null) {\r\n for (var i = 0; i < data.PaymentTypes.length; i++) {\r\n\r\n if (data.PaymentTypes[i].PaymentId === KCO_BETBETID) {\r\n hasKlarnaCheckout = true;\r\n }\r\n\r\n if (data.PaymentTypes[i].PaymentId === NETS_EASY_BETBETID) {\r\n hasKlarnaCheckout = true;\r\n }\r\n\r\n if (data.PaymentTypes[i].PaymentId === SCO_BETBETID) {\r\n hasKlarnaCheckout = true;\r\n }\r\n\r\n if (experianRemoved === true) {\r\n self.selectPaymentType(data.PaymentTypes[i]);\r\n paymentMethodSelected = true;\r\n experianRemoved = false;\r\n }\r\n\r\n if (data.PaymentTypes[i].PaymentId === data.SelectedId) {\r\n self.selectPaymentType(data.PaymentTypes[i]);\r\n self.loadCustomerForm(data.PaymentTypes[i].PaymentId, hasKlarnaCheckout, isPaymentChange);\r\n paymentMethodSelected = true;\r\n }\r\n }\r\n }\r\n\r\n // Vi oppdaterer visningen av betalingsmåtene dersom listen over betalingsmåter er endret siden forrige visning\r\n if (data.PaymentList !== self.betBetIdList) {\r\n //console.log(\"Liste med BetBet er endret\");\r\n self.betBetIdList = data.PaymentList;\r\n PubSub.publish(mcWeb.payments.events.reloadPayments, \"reloadPayments\");\r\n }\r\n\r\n if (paymentMethodSelected === false) {\r\n console.log('Advarsel: Ingen betalingsmåter er aktivert for denne kunden!');\r\n }\r\n PubSub.publish(mcWeb.payments.events.onHideUpdateIcon, null);\r\n };\r\n\r\n this.setNetsEasyCheckoutScriptSource = function () {\r\n if (!self.netsEasyEnabled) {\r\n $('#netseasy-checkout-script').hide();\r\n return;\r\n }\r\n\r\n $('#netseasy-checkout-script').show();\r\n if (self.netsEasyProduction)\r\n $('#netseasy-checkout-script').attr(\"src\", \"https://checkout.dibspayment.eu/v1/checkout.js?v=1\");\r\n else\r\n $('#netseasy-checkout-script').attr(\"src\", \"https://test.checkout.dibspayment.eu/v1/checkout.js?v=1\");\r\n };\r\n\r\n this.highlightRequiredConditions = function () {\r\n if (self.conditionsVM)\r\n self.conditionsVM.highlightRequired(\"checkoutconditions\");\r\n };\r\n\r\n this.getTemplateNameKonto = function () {\r\n if (self.selectedKlarnaKontoCampaign()) {\r\n if (self.selectedKlarnaKontoCampaign().name === \"Account\")\r\n if (self.KlarnaLandId === 2) return \"klarna-konto-account-details-se\";\r\n else return \"klarna-konto-account-details-no\";\r\n\r\n if (self.selectedKlarnaKontoCampaign().name === \"Part Payment\")\r\n if (self.KlarnaLandId === 2) return \"klarna-konto-partPayment-details-se\";\r\n else return \"klarna-konto-partPayment-details-no\";\r\n\r\n return \"\";\r\n }\r\n };\r\n\r\n this.getTemplateNameFaktura = function () {\r\n if (self.selectedKlarnaFakturaCampaign()) {\r\n if (self.selectedKlarnaFakturaCampaign().pclass_id !== -1) {\r\n if (self.KlarnaLandId === 1) {\r\n return \"klarna-faktura-campaign-details-no\";\r\n } else if (self.KlarnaLandId === 2) {\r\n return \"klarna-faktura-campaign-details-se\";\r\n }\r\n }\r\n }\r\n return \"klarna-faktura-details-no\";\r\n };\r\n\r\n this.addBindings = function () {\r\n $(document).on('shown.bs.tab', 'a[href=\"#97\"]', function (e) {\r\n });\r\n };\r\n\r\n this.registration = mcWeb.customerRegistration.instances['checkout-registration'];\r\n this.hasCartItems = ko.observable(false);\r\n this.functionalConditionsAccepted = ko.observable(true); //backwards compatibility\r\n this.showPayments = ko.computed(function () {\r\n return self.hasCartItems();\r\n }, this);\r\n this.PaymentTypes = ko.observableArray();\r\n\r\n this.selectedPaymentOld = ko.observable();\r\n this.selectedPayment = ko.observable();\r\n\r\n this.selectedPayment.subscribe(function (newValue) {\r\n if (self.selectedPaymentOld() !== newValue) {\r\n self.selectedPaymentOld(newValue);\r\n self.selectedPayment(newValue);\r\n PubSub.publish(mcWeb.payments.events.onSelectedPayment, newValue);\r\n }\r\n });\r\n\r\n this.KlarnaCampaigns = ko.observableArray();\r\n this.Fodselsnummer = ko.observable();\r\n this.RegisteredZip = ko.observable();\r\n this.BirthDate = ko.observable();\r\n this.BirthDate.subscribe(function (newValue) {\r\n if (newValue !== null && newValue.length > 0) {\r\n newValue = newValue.replace(/[^\\d]/, '');\r\n self.BirthDate(newValue);\r\n\r\n //Test date: 011299 \r\n if (self.isValidDateddmmyy(newValue)) {\r\n self.service.GetAction(\"UpdateBirthDate\", { date: newValue }).done(function (result) {\r\n var input = $('.col-birthdate .genericBirthdate');\r\n var symbol = $('.col-birthdate i');\r\n\r\n if (result === true) {\r\n symbol.addClass('icon-check green');\r\n input.removeClass('validation_error');\r\n } else {\r\n symbol.removeClass('icon-check green');\r\n input.addClass('validation_error');\r\n }\r\n });\r\n }\r\n }\r\n });\r\n\r\n this.Orgnr = ko.observable();\r\n this.Orgnr.subscribe(function (data) {\r\n PubSub.publish(mcWeb.payments.events.updateOrgNr, data);\r\n });\r\n\r\n self.selectedSveaPaymentPlanOptionRadio = ko.observable();\r\n\r\n this.showSveaPaymentPlanOptionInfo = function (campaignCode) {\r\n if (self.selectedSveaPaymentPlanOptionRadio() == campaignCode)\r\n return true;\r\n return false;\r\n }\r\n\r\n this.formatMoney = function (money) {\r\n return money;\r\n };\r\n\r\n this.formatInterest = function (interest) {\r\n return interest + \" %\";\r\n };\r\n\r\n this.selectedKlarnaKontoCampaign = ko.observable();\r\n this.selectedKlarnaFakturaCampaign = ko.observable();\r\n this.CustomerCountryId = 1;\r\n this.KlarnaLandId = 1;\r\n this.GothiaTOS = ko.observable();\r\n this.GothiaRequireCustomerConfirmation = ko.observable();\r\n this.AcceptedTermsAndConditions = ko.observable();\r\n this.ShowOrgnrSsn = ko.observable();\r\n this.ShowOrgnrSsnField = ko.observable();\r\n this.KlarnaCustomerType = ko.observable();\r\n this.CustomerType = ko.observable();\r\n this.showRefreshSpin = ko.observable(false);\r\n this.showRefreshSpinMargin = ko.observable(0);\r\n this.isLoggedIn = ko.observable(false);\r\n this.SveaWebPayPaymentPlanOptions = ko.observableArray();\r\n this.GetSveaWebPayPaymentPlanOptions = ko.observable();\r\n this.KlarnaInvoiceFee = ko.observable();\r\n this.klarnaShowCustomerTypeSelection = ko.observable(false);\r\n this.klarnaShippingAssistantEnabled = ko.observable(false);\r\n this.klarnaShowChangedCustomerTypeMessage = ko.observable(false);\r\n this.vippsExpressCheckoutInCart = ko.observable(false);\r\n this.vippsShowCustomerTypeSelection = ko.observable(false);\r\n this.vippsAllowBusinessCustomer = ko.observable(false);\r\n this.sveaCheckoutShowCustomerTypeSelection = ko.observable(false);\r\n this.netsEasyShowCustomerTypeSelection = ko.observable(false);\r\n this.Porterbuddy = false;\r\n\r\n this.showCustomerSelection = function () {\r\n switch (self.selectedPayment()) {\r\n case 186: //Vipps\r\n return self.vippsExpressCheckoutInCart() && self.vippsShowCustomerTypeSelection();\r\n break;\r\n case 167: //KCO\r\n return self.klarnaShowCustomerTypeSelection();\r\n break;\r\n case 183: //Easy\r\n return self.netsEasyShowCustomerTypeSelection();\r\n break;\r\n }\r\n return true;\r\n };\r\n\r\n //Set the hight of \"update icon\"\r\n this.showRefreshSpin.subscribe(function () {\r\n var hight = parseFloat($(\"#payments.payments\").height());\r\n if (hight !== NaN && hight > 1) {\r\n hight = ((hight / 2) - 30);\r\n if (hight < 5)\r\n hight = 5;\r\n self.showRefreshSpinMargin(hight + 'px');\r\n }\r\n });\r\n\r\n this.selectedKlarnaPclass = ko.computed(function () {\r\n if (self.selectedPayment() === KLARNA_INVOICE && self.selectedKlarnaFakturaCampaign()) {\r\n return self.selectedKlarnaFakturaCampaign().pclass_id;\r\n } else {\r\n if (self.selectedKlarnaKontoCampaign() && self.selectedKlarnaKontoCampaign())\r\n return self.selectedKlarnaKontoCampaign().pclass_id;\r\n }\r\n });\r\n\r\n var hasCartItem = true;\r\n PubSub.subscribe(mcWeb.cart.events.hasCartItems, function (message, data) {\r\n if (data === false) {\r\n self.hasCartItems(false);\r\n hasCartItem = false;\r\n } else {\r\n hasCartItem = true;\r\n }\r\n\r\n });\r\n\r\n PubSub.subscribe(mcWeb.customerRegistration.events.onChangedCustomerData, function (message, data) {\r\n if (data !== null && data.isLoggedIn !== null) {\r\n self.isLoggedIn(data.isLoggedIn);\r\n }\r\n if (hasCartItem === false)\r\n self.hasCartItems(false);\r\n else\r\n self.hasCartItems(true);\r\n\r\n self.RegisterKlarnaListener();\r\n });\r\n\r\n PubSub.subscribe(mcWeb.conditions.events.onAcceptChange, function (evt, conditionStatus) {\r\n if (conditionStatus.usageArea === 3) {\r\n var previousFunctionalAcceptanceStatus = self.functionalConditionsAccepted();\r\n self.conditionsVM = conditionStatus.vm;\r\n if (conditionStatus.functionalConditionIsAccepted === null) {\r\n self.functionalConditionsAccepted(true);\r\n } else if (conditionStatus.acceptDocuments === null || conditionStatus.acceptDocuments.length <= 0) {\r\n self.functionalConditionsAccepted(true);\r\n }\r\n else {\r\n self.functionalConditionsAccepted(conditionStatus.functionalConditionIsAccepted);\r\n }\r\n if (self.functionalConditionsAccepted()) {\r\n if (self.selectedPayment() === KCO_BETBETID || self.selectedPayment() === NETS_EASY_BETBETID || self.selectedPayment() === SCO_BETBETID ||\r\n (self.selectedPayment() === VIPPS_BETBETID && (!self.vippsAllowBusinessCustomer() || self.CustomerType() !== 'bedriftskunde'))) {\r\n PubSub.publish(mcWeb.payments.events.onShowUpdateIcon, null);\r\n if (previousFunctionalAcceptanceStatus !== self.functionalConditionsAccepted()) {\r\n if (!self.KCOisLoaded()) {\r\n self.KCOisLoaded(true);\r\n self.loadCustomerForm(self.selectedPayment(), true);\r\n } else {\r\n self.processPaymentMethods(self.selectedPayment());\r\n }\r\n self.UpdateCheckoutCartItems();\r\n }\r\n\r\n if (self.selectedPayment() === VIPPS_BETBETID)\r\n $('.payment-title').show();\r\n\r\n PubSub.publish(mcWeb.payments.events.onHideUpdateIcon, null);\r\n\r\n }\r\n } else {\r\n if (self.selectedPayment() === KCO_BETBETID || self.selectedPayment() === NETS_EASY_BETBETID || self.selectedPayment() === SCO_BETBETID ||\r\n (self.selectedPayment() === VIPPS_BETBETID && self.vippsExpressCheckoutInCart() && (!self.vippsAllowBusinessCustomer() || self.CustomerType() !== 'bedriftskunde'))) {\r\n //if (previousFunctionalAcceptanceStatus != self.functionalConditionsAccepted())\r\n self.highlightRequiredConditions();\r\n\r\n if (self.selectedPayment() === VIPPS_BETBETID)\r\n $('.payment-title').hide();\r\n }\r\n self.KCOisLoaded(false);\r\n }\r\n }\r\n });\r\n\r\n PubSub.subscribe(mcWeb.loginCheckout.events.onShowLoginPassword, function (message, paymentId) {\r\n self.ShowOrgnrSsn(false);\r\n });\r\n\r\n this.loadCustomerForm = function (paymentId, hasKlarnaCheckout, isPaymentChange) {\r\n\r\n var el = $(\"#mcweb-customerregistration-checkout-registration\");\r\n\r\n var tabContent = $(\".tab-content\");\r\n var tabHeight = tabContent.height();\r\n tabContent.css('min-height', tabHeight + 'px');\r\n var form = null;\r\n\r\n if (!self.isPublishMode) {//gaia windows fail when we attach/detach the \r\n form = el.detach();\r\n }\r\n\r\n $('#payments-tab-nav a[href=\"#' + paymentId + '\"]').tab('show');\r\n self.selectedPayment(paymentId);\r\n if (!self.isPublishMode) {\r\n form.appendTo(\"#\" + paymentId);\r\n }\r\n\r\n $(\"#mcweb-customerregistration-checkout-registration\").show();\r\n\r\n tabContent.animate({ \"min-height\": \"250px\" }, { queue: false, duration: 800 });\r\n\r\n var checkout = $('.checkout');\r\n var nav = $('#payments-tab-nav');\r\n\r\n if (hasKlarnaCheckout) {\r\n nav.show();\r\n checkout.removeClass('l-out').addClass('l-in');\r\n }\r\n\r\n if (self.isLoggedIn() || paymentId === KCO_BETBETID || paymentId === NETS_EASY_BETBETID || paymentId === SCO_BETBETID ||\r\n (paymentId === VIPPS_BETBETID && self.vippsExpressCheckoutInCart() && (!self.vippsAllowBusinessCustomer() || self.CustomerType() !== 'bedriftskunde'))) {\r\n\r\n if (paymentId === KCO_BETBETID || paymentId === NETS_EASY_BETBETID || paymentId === SCO_BETBETID ||\r\n (paymentId === VIPPS_BETBETID && !self.isLoggedIn())) {\r\n checkout.removeClass('l-in').addClass('l-out');\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder, { showBtn: false, disabledBtn: false, showPrice: false, showSalesConditions: false });\r\n } else {\r\n checkout.removeClass('l-out').addClass('l-in');\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder, { showBtn: true, disabledBtn: false, showPrice: true, showSalesConditions: true });\r\n }\r\n\r\n nav.show();\r\n\r\n if (!self.functionalConditionsAccepted() && paymentId === VIPPS_BETBETID) {\r\n $('.payment-title').hide();\r\n } else {\r\n $('.payment-title').show();\r\n }\r\n\r\n $('.klarna-konto-content').show();\r\n $('.tab-content').removeClass('tab-radius');\r\n\r\n //if (paymentId === NETS_EASY_BETBETID && self.netsEasyCheckout !== undefined && self.netsEasyCheckout === null)\r\n self.processPaymentMethods(paymentId, isPaymentChange);\r\n\r\n } else {\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder, { showBtn: true, disabledBtn: true, showPrice: true, showSalesConditions: true });\r\n\r\n checkout.removeClass('l-out').addClass('l-in');\r\n PubSub.publish(mcWeb.loginCheckout.events.onShowHideLogin, paymentId);\r\n }\r\n\r\n if (paymentId === KLARNA_INVOICE) {\r\n self.getFakturaGebyr().done(function (result) {\r\n self.KlarnaInvoiceFee(result);\r\n });\r\n }\r\n\r\n self.getGothiaAccountTos(paymentId);\r\n self.getSveaWebPayPaymentPlanOptions(paymentId);\r\n\r\n PubSub.publish(mcWeb.payments.events.onHideUpdateIcon, null);\r\n\r\n if (!!mcWeb.inlineEditor)\r\n mcWeb.inlineEditor.init(true);\r\n\r\n //}); //el.slideUp\r\n };\r\n\r\n this.KCOisLoaded = ko.observable(false);\r\n\r\n this.selectPaymentType = function (paymentType) {\r\n var data = { paymentId: paymentType.PaymentId, paymentText: paymentType.PaymentText };\r\n self.service.GetAction(\"SelectPayment\", data).done(function (result) {\r\n PubSub.publish(mcWeb.cart.events.onChangedCart, null);\r\n });\r\n };\r\n\r\n this.handlePaymentChange = function (paymentType) {\r\n PubSub.publish(mcWeb.payments.events.onShowUpdateIcon, null);\r\n $('.qtip').qtip('destroy', true);\r\n\r\n // Vipps er ikke tilgjengelig for bedriftskunder\r\n if (paymentType.PaymentId === VIPPS_BETBETID && self.vippsExpressCheckoutInCart() && (!self.vippsAllowBusinessCustomer() || self.CustomerType() !== 'bedriftskunde'))\r\n self.clickPrivate();\r\n\r\n self.selectedPayment(paymentType.PaymentId);\r\n self.selectPaymentType(paymentType);\r\n self.loadCustomerForm(paymentType.PaymentId, null, true);\r\n\r\n if (typeof porterbuddy !== 'undefined') {\r\n if (paymentType.PaymentId === SCO_BETBETID)\r\n porterbuddy.setRecipientInfoLocked(true);\r\n else if (paymentType.PaymentId === KCO_BETBETID || paymentType.PaymentId === NETS_EASY_BETBETID)\r\n porterbuddy.setRecipientInfoLocked(false);\r\n else\r\n porterbuddy.setRecipientInfoLocked(false);\r\n }\r\n\r\n if (paymentType.PaymentId === KCO_BETBETID || paymentType.PaymentId === NETS_EASY_BETBETID || paymentType.PaymentId === SCO_BETBETID ||\r\n (paymentType.PaymentId === VIPPS_BETBETID && self.vippsExpressCheckoutInCart() && (!self.vippsAllowBusinessCustomer() || self.CustomerType() !== 'bedriftskunde'))) {\r\n self.KCOisLoaded(true);\r\n if (!self.functionalConditionsAccepted())\r\n self.highlightRequiredConditions();\r\n }\r\n PubSub.publish(mcWeb.cart.events.onChangedCart, null);\r\n };\r\n\r\n this.getJsonData = function () {\r\n var campaignCode = self.selectedKlarnaPclass();\r\n if (self.selectedPayment() === SVEA_PARTPAYMENT) campaignCode = self.selectedSveaPaymentPlanOptionRadio();\r\n\r\n var orgnrTemp = self.Orgnr();\r\n if (self.selectedPayment() === ARVATO_BUSINESS) {\r\n orgnrTemp = self.Fodselsnummer();\r\n }\r\n var birthdate = 'undefined';\r\n if (self.ShowOrgnrSsn()) {\r\n birthdate = self.BirthDate();\r\n }\r\n var paymentDetails = {\r\n SocialSecurityNumber: self.Fodselsnummer(),\r\n CampaignCode: campaignCode,\r\n AcceptCreditCheck: self.AcceptedTermsAndConditions(),\r\n OrgNumber: orgnrTemp,\r\n Birthdate: birthdate,\r\n RegisteredPostCode: self.RegisteredZip()\r\n };\r\n\r\n return {\r\n selectedPayment: self.selectedPayment(),\r\n paymentDetails: paymentDetails\r\n };\r\n };\r\n\r\n this.indexOfKlarnaFaktura = function () {\r\n if (self.KlarnaCampaigns() !== null && typeof (self.KlarnaCampaigns()) !== \"undefined\") {\r\n for (var i = 0; i < self.KlarnaCampaigns().length; i++) {\r\n if (self.KlarnaCampaigns()[i].group.code === 'invoice')\r\n return i;\r\n }\r\n }\r\n return 0;\r\n };\r\n\r\n this.indexOfFirstKlarnaKonto = function () {\r\n if (self.KlarnaCampaigns() !== null && typeof (self.KlarnaCampaigns()) !== \"undefined\") {\r\n for (var i = 0; i < self.KlarnaCampaigns().length; i++) {\r\n if (self.KlarnaCampaigns()[i].group.code === 'part_payment')\r\n return i;\r\n }\r\n }\r\n return 0;\r\n };\r\n\r\n this.GetKlarnaJson = function (paymentTypes) {\r\n var getKlarnaJson = false;\r\n\r\n if (paymentTypes === null)\r\n return;\r\n\r\n for (var i = 0; i < paymentTypes.length; i++) {\r\n if (paymentTypes[i].PaymentId === KLARNA_INVOICE || paymentTypes[i].PaymentId === KLARNA_ACCOUNT) {\r\n getKlarnaJson = true;\r\n }\r\n }\r\n if (getKlarnaJson) {\r\n PubSub.publish(mcWeb.payments.events.onShowUpdateIcon, null);\r\n self.service.GetAction(\"GetKlarnaCampaigns\", null).done(function (result) {\r\n PubSub.publish(mcWeb.payments.events.onHideUpdateIcon, null);\r\n if (result === null || result.length < 1)\r\n return;\r\n\r\n var json = JSON.parse(result);\r\n self.KlarnaCampaigns(json.payment_methods);\r\n var indexOfKlarnaFaktura = (self.KlarnaCampaigns()) === null || typeof (self.KlarnaCampaigns()) === \"undefined\" ? 0 : self.KlarnaCampaigns()[self.indexOfKlarnaFaktura()];\r\n self.selectedKlarnaFakturaCampaign(indexOfKlarnaFaktura);\r\n\r\n var indexOfFirstKlarnaKonto = (self.KlarnaCampaigns() === null) || typeof (self.KlarnaCampaigns()) === \"undefined\" ? 0 : self.KlarnaCampaigns()[self.indexOfFirstKlarnaKonto()];\r\n self.selectedKlarnaKontoCampaign(indexOfFirstKlarnaKonto);\r\n });\r\n }\r\n };\r\n\r\n this.updatePaymentWithPBAddress = function (recipientInfo) {\r\n var paymentType = self.selectedPayment();\r\n\r\n if (!paymentType)\r\n return;\r\n\r\n var provider = \"\";\r\n switch (paymentType) {\r\n case KCO_BETBETID:\r\n provider = \"KlarnaCheckout\";\r\n break;\r\n case NETS_EASY_BETBETID:\r\n provider = \"NetsEasy\";\r\n break;\r\n case VIPPS_BETBETID:\r\n provider = \"Vipps\";\r\n break;\r\n case SCO_BETBETID:\r\n provider = \"Svea\";\r\n break;\r\n }\r\n\r\n var addressLine = recipientInfo.streetAddress;\r\n var zipCode = recipientInfo.postCode;\r\n var email = recipientInfo.email;\r\n var req = { Provider: provider, AddressLine: addressLine, ZipCode: zipCode, Email: email };\r\n\r\n self.service.PostAction(\"UpdatePorterbuddyDeliveryAddress\", req).done(function (result) {\r\n if (result === null || result.length < 1) {\r\n console.log(\"Oppdatering av adresse feilet\");\r\n }\r\n });\r\n }\r\n\r\n this.validateSveaWebPay = function (payment) {\r\n var paymentId = payment.selectedPayment();\r\n var resName = \"\";\r\n var element;\r\n\r\n if (self.CustomerType() === 'bedriftskunde') {\r\n element = self.findClass(paymentId, \"SveaWebPay_OrgNo\", \"input\");\r\n if (!payment.isOrgnrValid($(\".SveaWebPay_OrgNo\"), false)) return { IsValid: false, ResName: \"OrgnummerError\", Element: element }\r\n else mcWeb.validation.setValidCss(element);\r\n } else {\r\n element = self.findClass(paymentId, \"SveaWebPay_PersonalId\", \"input\");\r\n if (!payment.isFodselsnummerValid($(\".SveaWebPay_PersonalId\"), false)) return { IsValid: false, ResName: \"FodselsnummerError\", Element: element }\r\n else mcWeb.validation.setValidCss(element);\r\n }\r\n\r\n if (paymentId === 128) {\r\n var radioButtonListArray = $(\"input[name='sveaPaymentPlanOptionRadio']\");\r\n var checked = false;\r\n\r\n for (var i = 0; i < radioButtonListArray.length; i++) {\r\n if (radioButtonListArray[i].checked)\r\n checked = true;\r\n }\r\n\r\n if (!checked)\r\n return { IsValid: false, ResName: \"SveaPaymentPlanOptionNotSet\", Element: radioButtonListArray[0] };\r\n }\r\n\r\n return { IsValid: true, ResName: resName, Element: element };\r\n };\r\n\r\n this.findClass = function (paymentId, cssClass, type) {\r\n try {\r\n var paymentDiv = $(\"div[id=\" + paymentId + \"]\");\r\n var toFind = type + \"[class*='\" + cssClass + \"']\";\r\n var found = paymentDiv.find(toFind);\r\n return found;\r\n } catch (e) {\r\n return null;\r\n }\r\n };\r\n\r\n\r\n this.getSveaWebPayPaymentPlanOptions = function (paymentId) {\r\n if (paymentId === SVEA_PARTPAYMENT) {\r\n PubSub.publish(mcWeb.payments.events.onShowUpdateIcon, null);\r\n self.service.GetAction(\"GetSveaWebPayPaymentPlanOptions\", null).done(function (result) {\r\n PubSub.publish(mcWeb.payments.events.onHideUpdateIcon, null);\r\n self.SveaWebPayPaymentPlanOptions(JSON.parse(result));\r\n });\r\n }\r\n };\r\n\r\n this.getGothiaAccountTos = function (paymentId) {\r\n if (paymentId === ARVATO_PARTPAYMENT) {\r\n PubSub.publish(mcWeb.payments.events.onShowUpdateIcon, null);\r\n self.service.GetAction(\"GetAccountTermsAndConditions\", null).done(function (result) {\r\n PubSub.publish(mcWeb.payments.events.onHideUpdateIcon, null);\r\n self.GothiaTOS(result.TermsAndConditions);\r\n self.GothiaRequireCustomerConfirmation(result.RequireCustomerConfirmation);\r\n });\r\n }\r\n };\r\n\r\n this.gothiaShowTermsAndConditions = function () {\r\n var generator = window.open('', 'gothiaTos', 'height=600,width=730,location=0,menubar=0');\r\n generator.document.write(self.GothiaTOS());\r\n generator.document.close();\r\n };\r\n\r\n this.getFakturaGebyr = function () {\r\n return self.service.GetAction(\"GetFakturaGebyr\", null);\r\n };\r\n\r\n this.isFodselsnummerValid = function (element, klarna) {\r\n var regEx = null;\r\n\r\n if (klarna) {\r\n if (self.KlarnaLandId === 1)//Norge\r\n regEx = /^[0-9]{2}[0,1][0-9][0-9]{2}[ ]?[0-9]{5}$/;\r\n else if (self.KlarnaLandId === 2)//Sverige\r\n regEx = /^([0-9]{2})?[0-9]{2}[0-1][0-9][0-9]{2}[-+]?[0-9]{4}$/;\r\n else if (self.KlarnaLandId === 3)//Danmark\r\n regEx = /^[0-9]{2}[0,1][0-9][0-9]{2}[0-9]{4}$/;\r\n } else {\r\n if (self.CustomerCountryId === 1) //Norge\r\n regEx = /^[0-9]{2}[0,1][0-9][0-9]{2}[ ]?[0-9]{5}$/;\r\n else if (self.CustomerCountryId === 2) //Sverige\r\n regEx = /^([0-9]{2})?[0-9]{2}[0-1][0-9][0-9]{2}[-+]?[0-9]{4}$/;\r\n else if (self.CustomerCountryId === 3) //Danmark\r\n regEx = /^[0-9]{2}[0,1][0-9][0-9]{2}[0-9]{4}$/;\r\n else if (self.CustomerCountryId === 4) //Finland\r\n regEx = /^[0-9]{2}\\.?[0,1][0-9]\\.?[0-9]{2}[-+A][0-9]{3}[0-9A-Z]{1}$/;\r\n }\r\n\r\n if (regEx === null) return true;\r\n return regEx.test(element.val());\r\n };\r\n\r\n this.isZipCodeValid = function (element) {\r\n if (element.val().length <= 0) return false;\r\n return true;\r\n };\r\n\r\n this.isZipCodeValidFormat = function (element, landId) {\r\n var zipCode = element.val();\r\n var regEx = /^\\d{4}$/;\r\n if (zipCode.match(regEx) !== null)\r\n return true;\r\n return false;\r\n };\r\n\r\n this.isPhoneValidFormat = function (element, landId) {\r\n var phone = element.val();\r\n var regEx = /^\\d{8}$/;\r\n if (phone.match(regEx) !== null)\r\n return true;\r\n return false;\r\n };\r\n\r\n this.isValidDateddmmyy = function (dateString) {\r\n var regEx = /\\d{2}\\d{2}\\d{2}/;\r\n if (dateString.match(regEx) !== null) {\r\n return true; //var format = self.ddmmyy_to_utcdate(dateString);\r\n //return self.isValidYear(format);\r\n }\r\n return false;\r\n };\r\n\r\n this.isOrgnrValid = function (element, klarna) {\r\n var regEx = null;\r\n\r\n if (klarna) {\r\n if (self.KlarnaLandId === 1)//Norge\r\n regEx = /^(\\d{9})$|((\\d{3})\\s(\\d{3})\\s(\\d{3}))$/;\r\n else if (self.KlarnaLandId === 2)//Sverige\r\n regEx = /^(\\d{10})$|(\\d{6}[-]\\d{4})$/;\r\n } else {\r\n if (self.CustomerCountryId === 1) //Norge\r\n regEx = /^(\\d{9})$|((\\d{3})\\s(\\d{3})\\s(\\d{3}))$/;\r\n else if (self.CustomerCountryId === 2) //Sverige\r\n regEx = /^(\\d{10})$|(\\d{6}[-]\\d{4})$/;\r\n }\r\n\r\n if (regEx === null) return true;\r\n return regEx.test(element.val());\r\n };\r\n\r\n this.isBirthdateValid = function (element) {\r\n var isValid = false;\r\n var value = element.val();\r\n if (value.length > 0) {\r\n if (self.isValidDateddmmyy(value)) { //011299) \r\n isValid = true;\r\n }\r\n }\r\n\r\n return isValid;\r\n };\r\n\r\n this.showKlarnaTerms = function () {\r\n var href = \"\";\r\n if (self.selectedPayment() === KLARNA_INVOICE && self.selectedKlarnaFakturaCampaign().group.code === 'invoice')\r\n href += self.selectedKlarnaFakturaCampaign().terms.uri + self.KlarnaInvoiceFee();\r\n else\r\n href += self.selectedKlarnaKontoCampaign().terms.uri;\r\n window.open(href, 'Klarna terms', 'width=500,height=500,location=0,toolbar=0,titlebar=0,status=0,menubar=0');\r\n };\r\n\r\n this.selectFirstInList = function () {\r\n $(\"input:radio\").filter(':visible:first').attr(\"checked\", true);\r\n };\r\n\r\n this.GetCheckoutSnippet = function (paymentId, isPaymentChange) {\r\n if (paymentId === KCO_BETBETID || paymentId === NETS_EASY_BETBETID || paymentId === SCO_BETBETID) {\r\n self.GetCheckout(paymentId, isPaymentChange);\r\n } else if (paymentId === VIPPS_BETBETID && !self.isLoggedIn() && self.vippsExpressCheckoutInCart() && (!self.vippsAllowBusinessCustomer() || self.CustomerType() !== 'bedriftskunde')) {\r\n $(\"#customer-registration\").hide();\r\n } else {\r\n $(\"#customer-registration\").show();\r\n\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder,\r\n { showBtn: true, disabledBtn: false, showPrice: false });\r\n }\r\n };\r\n\r\n this.GetCheckout = function (paymentId, isPaymentChange) {\r\n $(\"#customer-registration\").hide();\r\n $(\"#nets-easy-checkout-error\").hide();\r\n $(\"#svea-checkout-error\").hide();\r\n\r\n if (paymentId === KCO_BETBETID)\r\n console.log(\"GetCheckout Klarna v\" + self.KlarnaVersion);\r\n\r\n if (self.cartGuid === null || self.cartName === null) {\r\n self.waitCheckoutSnippet = true;\r\n return;\r\n }\r\n self.waitCheckoutSnippet = false;\r\n\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder,\r\n { showBtn: false, disabledBtn: false, showPrice: false });\r\n\r\n var customerData = this.registration.getJsonData();\r\n if (typeof (customerData.epost) !== \"undefined\") {\r\n if (customerData.epost.length > 0) customerData.epost = customerData.epost.trim();\r\n }\r\n\r\n if (!isPaymentChange)\r\n isPaymentChange = false;\r\n\r\n var data = { Customer: customerData, CartGuid: self.cartGuid, CartName: self.cartName, IsPaymentChange: isPaymentChange };\r\n\r\n if (paymentId === KCO_BETBETID) {\r\n self.service.PostAction(\"GetKlarnaCheckoutSnippet\", data).done(function (result) {\r\n if (result === null || result.length < 1) {\r\n console.log(\"Kunne ikke laste Klarna Checkout\");\r\n return;\r\n }\r\n self.SetKlarnaCheckout(result);\r\n });\r\n }\r\n\r\n if (paymentId === NETS_EASY_BETBETID) {\r\n self.service.PostAction(\"GetNetsEasyCheckoutSnippet\", data).done(function (result) {\r\n if (result === null || result.length < 1) {\r\n $(\"#nets-easy-checkout-error\").show();\r\n console.log(\"Kunne ikke laste Nets Easy Checkout\");\r\n return;\r\n }\r\n if (result.RedirectUrl) window.location = result.RedirectUrl;\r\n self.SetNetsEasyCheckout(result.CheckoutOptions);\r\n });\r\n }\r\n\r\n if (paymentId === SCO_BETBETID) {\r\n self.service.PostAction(\"GetSveaCheckoutSnippet\", data).done(function (result) {\r\n if (result === null || result.length < 1) {\r\n $(\"#svea-checkout-error\").show();\r\n console.log(\"Kunne ikke laste Svea Checkout\");\r\n return;\r\n }\r\n self.SetSveaCheckout(result);\r\n });\r\n }\r\n };\r\n\r\n this.SetSveaCheckout = function (snippet) {\r\n $(\"#svea-checkout-snippet\").html(snippet);\r\n self.RegisterSveaCheckoutListener();\r\n };\r\n\r\n this.netsEasyCheckoutHtml = ko.observable();\r\n this.netsEasyCheckoutPaymentId = ko.observable();\r\n\r\n this.SetNetsEasyCheckout = function (checkoutOptions) {\r\n try {\r\n var checkoutSnippetHtml = $(\"#nets-easy-checkout-snippet\").html();\r\n\r\n if (checkoutSnippetHtml !== undefined) {\r\n if (!checkoutSnippetHtml || checkoutSnippetHtml.length == 0 || self.netsEasyCheckoutPaymentId() != checkoutOptions.paymentId) {\r\n if (self.netsEasyCheckoutHtml() && self.netsEasyCheckoutHtml().length > 0 && self.netsEasyCheckoutPaymentId() == checkoutOptions.paymentId) {\r\n $(\"#nets-easy-checkout-snippet\").html(self.netsEasyCheckoutHtml());\r\n $(\"#nets-easy-checkout-snippet\").addClass(\"dibs-checkout-wrapper\");\r\n }\r\n else {\r\n console.log(\"Nets Easy, initializing!\");\r\n\r\n // Før vi kjører new og setter callbacks må vi rydde opp...\r\n if (self.netsEasyCheckout) {\r\n self.netsEasyCheckout.cleanup();\r\n $(\"#nets-easy-checkout-snippet\").html(\"\");\r\n }\r\n\r\n self.netsEasyCheckout = new Dibs.Checkout(checkoutOptions);\r\n self.RegisterNetsEasyCallback(self.netsEasyCheckout);\r\n self.netsEasyCheckoutHtml($(\"#nets-easy-checkout-snippet\").html());\r\n self.netsEasyCheckoutPaymentId(checkoutOptions.paymentId);\r\n }\r\n }\r\n }\r\n } catch (e) {\r\n console.log('Warning - PaymentView.js:SetNetsEasyCheckout. Exception: ' + e);\r\n }\r\n };\r\n\r\n this.RegisterNetsEasyCallback = function (checkout) {\r\n checkout.on('payment-completed', function (response) {\r\n var redirectMsg = $('#nets-easy-process-checkout').html();\r\n self.showTemplate(redirectMsg);\r\n PubSub.publish(mcWeb.lightbox.events.onShowLightbox, { backdrop: 'static', keyboard: false, show: true });\r\n\r\n var data = { paymentId: response.paymentId };\r\n self.service.GetAction(\"NetsEasyCheckoutComplete\", data).done(function (result) {\r\n if (result === null || result.length < 1) {\r\n console.log(\"Nets Easy, verifisering og opprettelse av ordre feilet eller ordre eksisterer\");\r\n PubSub.publish(mcWeb.lightbox.events.onHideLightbox);\r\n return;\r\n }\r\n window.location = result;\r\n });\r\n });\r\n\r\n // Ved endring av postnummer i Nets Easy snippet oppdateres kassen...\r\n checkout.on('address-changed', function (address) { // Subscribe to address-changed event\r\n console.log(\"Nets Easy, address-changed\");\r\n //console.log(address);\r\n\r\n if (address) {\r\n var zipCode = \"\";\r\n var countryCode = \"\";\r\n\r\n if (address.postalCode !== null && address.postalCode.length > 1)\r\n zipCode = address.postalCode;\r\n\r\n if (address.countryCode !== null && address.countryCode.length > 1)\r\n countryCode = address.countryCode;\r\n\r\n if (zipCode !== \"\" && countryCode !== \"\") {\r\n var data = { zipCode: zipCode, landKode3: countryCode };\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedZipCode, data);\r\n self.UpdateCheckoutZipCode(zipCode);\r\n }\r\n }\r\n\r\n var paymentAddress = { Provider: \"NetsEasy\", Name: \"\", Email: \"\", StreetAddress: \"\", StreetAddress2: \"\", PostalCode: address.postalCode, City: \"\", CountryCode: address.countryCode };\r\n self.service.PostAction(\"GetPaymentAddress\", paymentAddress).done(function (result) {\r\n self.SetPorterbuddyRecipientInfo(result.Email, result.PostalCode, result.StreetAddress);\r\n });\r\n\r\n self.service.GetAction(\"NetsEasyIsCustomerPerson\", null).done(function (result) {\r\n if (result === null || result.length < 1) {\r\n return;\r\n }\r\n\r\n var customerType = \"\";\r\n if (result === true)\r\n customerType = \"person\";\r\n else\r\n customerType = \"organization\";\r\n console.log(\"Nets Easy, customerType = \" + customerType);\r\n\r\n var defaultCustomerType = 'person';\r\n if (self.KlarnaCustomerType() === 'bedriftskunde')\r\n defaultCustomerType = 'organization';\r\n if (customerType !== defaultCustomerType)\r\n self.showPaymentProviderCartReloadLightbox(customerType);\r\n });\r\n });\r\n\r\n // whenever the consumer clicks on the \"pay\" button\r\n checkout.on('pay-initialized', function (response) {\r\n var success = true;\r\n checkout.send('payment-order-finalized', success);\r\n });\r\n };\r\n\r\n this.SetKlarnaCheckout = function (snippet) {\r\n $(\"#klarna-checkout-snippet\").html(snippet);\r\n self.RegisterKlarnaListener();\r\n };\r\n\r\n this.SuspendKlarnaCheckout = function () {\r\n try {\r\n if (typeof (window._klarnaCheckout) !== \"undefined\") {\r\n window._klarnaCheckout(function (api) {\r\n api.suspend();\r\n });\r\n }\r\n } catch (e) {\r\n console.log('Warning - PaymentView.js:SuspendKlarnaCheckout. Exception: ' + e);\r\n }\r\n };\r\n\r\n this.ResumeKlarnaCheckout = function () {\r\n try {\r\n if (typeof (window._klarnaCheckout) !== \"undefined\") {\r\n window._klarnaCheckout(function (api) {\r\n api.resume();\r\n });\r\n }\r\n } catch (e) {\r\n console.log('Warning - PaymentView.js:ResumeKlarnaCheckout. Exception: ' + e);\r\n }\r\n };\r\n\r\n PubSub.subscribe(mcWeb.payments.events.onShowUpdateIcon, function (message, data) {\r\n self.showRefreshSpin(true);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.payments.events.onHideUpdateIcon, function (message, data) {\r\n self.showRefreshSpin(false);\r\n });\r\n\r\n this.IsKcoEnabled = function () {\r\n try {\r\n if (self.PaymentTypes() === null)\r\n return false;\r\n var kcoEnabled = false;\r\n\r\n for (var i = 0; i < self.PaymentTypes().length; i++) {\r\n if (self.PaymentTypes()[i].PaymentId === KCO_BETBETID) {\r\n kcoEnabled = true;\r\n }\r\n }\r\n\r\n return kcoEnabled;\r\n } catch (e) {\r\n console.log('Warning - PaymentView.js:kcoEnabled. Exception: ' + e);\r\n return false;\r\n }\r\n };\r\n\r\n // Oppdaterer KCO/EASY desom postnummer endres i kassen\r\n this.UpdateCheckoutZipCode = function (zipCode) {\r\n try {\r\n var paymentId = self.selectedPayment();\r\n if (paymentId === undefined) return;\r\n\r\n if (paymentId === KCO_BETBETID) {\r\n if (self.KlarnaVersion === 3 && !self.klarnaShippingAssistantEnabled()) return;\r\n if (self.KlarnaLandId === 1 && zipCode.length !== 4) return;\r\n var isKcoEnabled = self.IsKcoEnabled();\r\n if (!isKcoEnabled) return;\r\n self.SuspendKlarnaCheckout();\r\n }\r\n\r\n if (paymentId === NETS_EASY_BETBETID) {\r\n if (self.netsEasyCheckout && !self.netsEasyFrozen()) {\r\n self.netsEasyCheckout.freezeCheckout();\r\n self.netsEasyFrozen(true);\r\n }\r\n self.netsEasyFreezeStack.push(\"UpdateCheckoutZipCode\");\r\n }\r\n\r\n var data = { paymentId: paymentId, zipCode: zipCode };\r\n self.service.GetAction(\"UpdateCheckoutZipCode\", data).done(function (result) {\r\n if (paymentId === KCO_BETBETID)\r\n self.ResumeKlarnaCheckout();\r\n\r\n if (paymentId === NETS_EASY_BETBETID) {\r\n self.netsEasyFreezeStack.pop();\r\n\r\n if (self.netsEasyCheckout && self.netsEasyFreezeStack.length === 0 && self.netsEasyFrozen()) {\r\n self.netsEasyCheckout.thawCheckout();\r\n self.netsEasyFrozen(false);\r\n }\r\n }\r\n });\r\n } catch (e) {\r\n console.log('Warning - PaymentView.js:UpdateCheckoutZipCode. Exception: ' + e);\r\n }\r\n };\r\n\r\n this.netsEasyFreezeStack = [];\r\n this.netsEasyFrozen = ko.observable(false);\r\n\r\n this.UpdateCheckoutCartItems = function () {\r\n if (self.selectedPayment() !== KCO_BETBETID && self.selectedPayment() !== NETS_EASY_BETBETID && self.selectedPayment() !== SCO_BETBETID) {\r\n return;\r\n }\r\n\r\n if (self.selectedPayment() === KCO_BETBETID) {\r\n $(\"#klarna-checkout-snippet-error\").hide();\r\n self.SuspendKlarnaCheckout(); // Vi trenger denne for at KCO-snippet skal oppdateres med korrekte priser (BUG: Mobil scroll to buttom)\r\n\r\n self.service.GetAction(\"UpdateKlarnaCheckoutCartItems\", null).done(function (result) {\r\n self.ResumeKlarnaCheckout(); // Vi trenger denne for at KCO-snippet skal oppdateres med korrekte priser (BUG: Mobil scroll to buttom)\r\n\r\n if (result === null || result.length < 1) {\r\n console.log(\"UpdateKlarnaCheckoutCartItems failed...\");\r\n return;\r\n }\r\n\r\n if (!result.Success) {\r\n $(\"#klarna-checkout-snippet\").hide();\r\n $(\"#klarna-checkout-snippet-error\").show();\r\n }\r\n\r\n $(\"#klarna-checkout-snippet\").show();\r\n $(\"#klarna-checkout-snippet-error\").hide();\r\n });\r\n }\r\n\r\n if (self.selectedPayment() === NETS_EASY_BETBETID) {\r\n if (self.netsEasyCheckout && !self.netsEasyFrozen()) {\r\n self.netsEasyCheckout.freezeCheckout();\r\n self.netsEasyFrozen(true);\r\n }\r\n self.netsEasyFreezeStack.push(\"UpdateNetsEasyCheckoutCartItems\");\r\n\r\n self.service.GetAction(\"UpdateNetsEasyCheckoutCartItems\", null).done(function (result) {\r\n self.netsEasyFreezeStack.pop();\r\n\r\n if (self.netsEasyCheckout && self.netsEasyFreezeStack.length === 0 && self.netsEasyFrozen()) {\r\n self.netsEasyCheckout.thawCheckout();\r\n self.netsEasyFrozen(false);\r\n }\r\n\r\n if (result === null || result.length < 1) {\r\n console.log(\"UpdateNetsEasyCheckoutCartItems failed...\");\r\n return;\r\n }\r\n });\r\n }\r\n\r\n if (self.selectedPayment() === SCO_BETBETID) {\r\n self.service.GetAction(\"UpdateSveaCheckoutCartItems\", null).done(function (result) {\r\n if (result === null || result.length < 1)\r\n console.log(\"UpdateSveaCheckoutCartItems failed\");\r\n else if (result == 'true')\r\n console.log(\"Update OK\");\r\n else if (result == 'false')\r\n console.log(\"Empty snippet\");\r\n else\r\n console.log(result);\r\n });\r\n return;\r\n }\r\n };\r\n\r\n this.showKcoCartReloadLightbox = function (customerType) {\r\n if (self.klarnaShowChangedCustomerTypeMessage()) {\r\n // Ved endring av kundetype i KCO-snippet må vi laste kassen på nytt.\r\n self.showTemplate($('#kco-reload-cart').html());\r\n PubSub.publish(mcWeb.lightbox.events.onShowLightbox, { backdrop: 'static', keyboard: false, show: true });\r\n\r\n document.getElementById(\"kco-reload-cart-btn\").addEventListener(\"click\", function () {\r\n self.changeCustomerType(customerType);\r\n });\r\n } else {\r\n self.changeCustomerType(customerType);\r\n }\r\n };\r\n\r\n this.changeCustomerType = function (customerType) {\r\n if (customerType === 'organization') {\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedCustomerType, 1);\r\n } else {\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedCustomerType, 0);\r\n }\r\n }\r\n\r\n this.showPaymentProviderCartReloadLightbox = function (customerType) {\r\n // Ved endring av kundetype må vi laste kassen på nytt.\r\n\r\n self.showTemplate($('#payment-provider-reload-cart').html());\r\n PubSub.publish(mcWeb.lightbox.events.onShowLightbox, { backdrop: 'static', keyboard: false, show: true });\r\n\r\n document.getElementById(\"payment-provider-reload-cart-btn\").addEventListener(\"click\", function () {\r\n if (customerType === 'organization')\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedCustomerType, 1);\r\n else\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedCustomerType, 0);\r\n });\r\n };\r\n\r\n this.clickBusiness = function () {\r\n self.registration.registrationVM.showCustomerType(false);\r\n self.registration.registrationVM.showRegButtons(true);\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedCustomerType, 1)\r\n }\r\n\r\n this.clickPrivate = function () {\r\n self.registration.registrationVM.showCustomerType(false);\r\n self.registration.registrationVM.showRegButtons(true);\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedCustomerType, 0)\r\n }\r\n\r\n this.VippsExpressCheckout = function () {\r\n var checkoutFooter = mcWeb.checkoutFooterView.instances['footer'];\r\n var okToContinue = checkoutFooter.insertOrder('vipps');\r\n\r\n if (okToContinue) {\r\n var url = \"/api/vipps/express-checkout?checkout=true\";\r\n\r\n //var useExpressCheckout = true;\r\n //if (useExpressCheckout) {\r\n // url = \"/api/vipps/express-checkout?checkout=true\";\r\n //} else {\r\n // url = \"/api/vipps/register\";\r\n //}\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n url: url,\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (data) {\r\n if (data) {\r\n console.log(\"Vipps Success: \" + data);\r\n window.location.replace(data);\r\n }\r\n else {\r\n console.log(\"Vipps: Blank URL\");\r\n self.langService.getValue(\"CheckoutReturnCodes\", \"VippsInitFailed\").done(function (value) {\r\n self.showErrorMessage(value);\r\n });\r\n }\r\n },\r\n error: function () {\r\n console.log(\"Vipps Error\");\r\n self.langService.getValue(\"CheckoutReturnCodes\", \"VippsInitFailed\").done(function (value) {\r\n self.showErrorMessage(value);\r\n });\r\n }\r\n });\r\n }\r\n\r\n return;\r\n };\r\n\r\n this.RegisterSveaCheckoutListener = function () {\r\n try {\r\n logPb(\"RegisterSveaCheckoutListener()\");\r\n\r\n document.addEventListener(\"checkoutReady\", function () {\r\n logPb(\"document.addEventListener(\\\"checkoutReady\\\")\");\r\n\r\n if (!window.scoApi.customEventHandlers[\"identity.phoneNumber\"] || window.scoApi.customEventHandlers[\"identity.phoneNumber\"].length === 0) {\r\n logPb(\"Register window.scoApi.observeEvent(\\\"identity.phoneNumber\\\")\");\r\n\r\n window.scoApi.observeEvent(\"identity.phoneNumber\", function (data) {\r\n logPb(\"window.scoApi.observeEvent(\\\"identity.phoneNumber\\\")\", data);\r\n });\r\n }\r\n if (!window.scoApi.customEventHandlers[\"identity.firstName\"] || window.scoApi.customEventHandlers[\"identity.firstName\"].length === 0) {\r\n logPb(\"Register window.scoApi.observeEvent(\\\"identity.firstName\\\")\");\r\n\r\n window.scoApi.observeEvent(\"identity.firstName\", function (data) {\r\n logPb(\"window.scoApi.observeEvent(\\\"identity.firstName\\\")\", data);\r\n });\r\n }\r\n if (!window.scoApi.customEventHandlers[\"identity.lastName\"] || window.scoApi.customEventHandlers[\"identity.lastName\"].length === 0) {\r\n logPb(\"Register window.scoApi.observeEvent(\\\"identity.lastName\\\")\");\r\n\r\n window.scoApi.observeEvent(\"identity.lastName\", function (data) {\r\n logPb(\"window.scoApi.observeEvent(\\\"identity.lastName\\\")\", data);\r\n });\r\n }\r\n\r\n if (!window.scoApi.customEventHandlers[\"identity.postalCode\"] || window.scoApi.customEventHandlers[\"identity.postalCode\"].length === 0) {\r\n logPb(\"Register window.scoApi.observeEvent(\\\"identity.postalCode\\\")\");\r\n\r\n window.scoApi.observeEvent(\"identity.postalCode\", function (data) {\r\n logPb(\"window.scoApi.observeEvent(\\\"identity.postalCode\\\")\", data);\r\n \r\n var postalCode = data.value;\r\n if (!postalCode)\r\n postalCode = \"\";\r\n\r\n if (postalCode.length > 1) {\r\n var data = { zipCode: postalCode };\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedZipCode, data);\r\n }\r\n\r\n var paymentAddress = { Provider: \"Svea\", Name: \"\", Email: \"\", StreetAddress: \"\", StreetAddress2: \"\", PostalCode: postalCode, City: \"\", CountryCode: \"\" };\r\n self.service.PostAction(\"GetPaymentAddress\", paymentAddress).done(function (result) {\r\n logPb(\"GetPaymentAddress [identity.postalCode]\", result);\r\n self.SetPorterbuddyRecipientInfo(result.Email, result.PostalCode, result.StreetAddress);\r\n });\r\n });\r\n }\r\n if (!window.scoApi.customEventHandlers[\"identity.streetAddress\"] || window.scoApi.customEventHandlers[\"identity.streetAddress\"].length === 0) {\r\n logPb(\"Register window.scoApi.observeEvent(\\\"identity.streetAddress\\\")\");\r\n\r\n window.scoApi.observeEvent(\"identity.streetAddress\", function (data) {\r\n logPb(\"window.scoApi.observeEvent(\\\"identity.streetAddress\\\")\", data);\r\n\r\n var streetAddress = data.value;\r\n if (!streetAddress)\r\n streetAddress = \"\";\r\n\r\n var paymentAddress = { Provider: \"Svea\", Name: \"\", Email: \"\", StreetAddress: streetAddress, StreetAddress2: \"\", PostalCode: \"\", City: \"\", CountryCode: \"\" };\r\n self.service.PostAction(\"GetPaymentAddress\", paymentAddress).done(function (result) {\r\n logPb(\"GetPaymentAddress [identity.streetAddress]\", result);\r\n self.SetPorterbuddyRecipientInfo(result.Email, result.PostalCode, result.StreetAddress);\r\n });\r\n });\r\n }\r\n if (!window.scoApi.customEventHandlers[\"identity.email\"] || window.scoApi.customEventHandlers[\"identity.email\"].length === 0) {\r\n logPb(\"Register window.scoApi.observeEvent(\\\"identity.email\\\")\");\r\n\r\n window.scoApi.observeEvent(\"identity.email\", function (data) {\r\n logPb(\"window.scoApi.observeEvent(\\\"identity.email\\\")\", data);\r\n\r\n var email = data.value;\r\n if (!email)\r\n email = \"\";\r\n\r\n var paymentAddress = { Provider: \"Svea\", Name: \"\", Email: email, StreetAddress: \"\", StreetAddress2: \"\", PostalCode: \"\", City: \"\", CountryCode: \"\" };\r\n self.service.PostAction(\"GetPaymentAddress\", paymentAddress).done(function (result) {\r\n logPb(\"GetPaymentAddress [identity.email]\", result);\r\n self.SetPorterbuddyRecipientInfo(result.Email, result.PostalCode, result.StreetAddress);\r\n });\r\n });\r\n }\r\n });\r\n } catch (e) {\r\n logPb(\"Warning - PaymentView.js:RegisterSveaCheckoutListener. Exception\", e.toString());\r\n console.log('Warning - PaymentView.js:RegisterSveaCheckoutListener. Exception: ' + e);\r\n }\r\n };\r\n\r\n self.previousPbEmail = \"\";\r\n self.previousPbPostCode = \"\";\r\n self.previousPbStreetAddress = \"\";\r\n\r\n function shippingOptionsHandled(shippingOptions) {\r\n logPb(\"shippingOptionsHandled()\", { shippingOptions });\r\n\r\n porterbuddy.homeDeliveryOptions = shippingOptions.homeDeliveryOptions;\r\n porterbuddy.refreshShippingOptions();\r\n }\r\n\r\n this.SetPorterbuddyRecipientInfo = function (email, postCode, streetAddress) {\r\n if (!self.Porterbuddy)\r\n return;\r\n\r\n try {\r\n if (typeof porterbuddy !== 'undefined' && porterbuddy.setRecipientInfo !== undefined &&\r\n ((email && email !== \"\" && postCode && postCode !== \"\" && streetAddress && streetAddress !== \"\") &&\r\n (email !== self.previousPbEmail || postCode !== self.previousPbPostCode || streetAddress !== self.previousPbStreetAddress))) {\r\n\r\n self.previousPbEmail = email;\r\n self.previousPbPostCode = postCode;\r\n self.previousPbStreetAddress = streetAddress;\r\n\r\n var recipientInfo = { email, postCode, streetAddress };\r\n\r\n logPb(\"SetPorterbuddyRecipientInfo(): porterbuddy.setRecipientInfo()\", { email, postCode, streetAddress });\r\n porterbuddy.setRecipientInfo(recipientInfo);\r\n\r\n savePbRecipientToLocalStorage(recipientInfo);\r\n\r\n var shippingOptions = getShippingOptions(recipientInfo);\r\n shippingOptions.then(shippingOptionsHandled);\r\n\r\n logPb(\"SetPorterbuddyRecipientInfo(): porterbuddy.refresh()\");\r\n porterbuddy.refresh();\r\n } else {\r\n var pb = typeof porterbuddy !== 'undefined';\r\n var sri = false;\r\n\r\n if (pb) {\r\n sri = porterbuddy.setRecipientInfo !== undefined;\r\n if (!sri) porterbuddy.refresh();\r\n }\r\n\r\n var data = { Porterbuddy: pb, SetRecipientInfo: sri, Email: email, PostCode: postCode, StreetAddress: streetAddress, PreviousEmail: self.previousPbEmail, PreviousPostCode: self.previousPbPostCode, PreviousStreetAddress: self.previousPbStreetAddress };\r\n logPb(\"SetPorterbuddyRecipientInfo(): Recipient already set or unavailable\", data);\r\n }\r\n } catch (e) {\r\n logPb(\"SetPorterbuddyRecipientInfo(): exception\", e.toString());\r\n console.log('Warning - PaymentView.js:SetPorterbuddyRecipientInfo. Exception: ' + e);\r\n }\r\n }\r\n\r\n function savePbRecipientToLocalStorage(recipient) {\r\n logPb(\"savePbRecipientToLocalStorage()\", recipient);\r\n\r\n localStorage.setItem(\"pb-recipient-email\", recipient.email);\r\n localStorage.setItem(\"postalCode\", recipient.postCode);\r\n localStorage.setItem(\"pb-recipient-street-address\", recipient.streetAddress);\r\n }\r\n\r\n function logPb(logTxt, logData) {\r\n try {\r\n var data = { Text: logTxt, Data: JSON.stringify(logData) };\r\n var cartService = new WebApiService(\"Cart\");\r\n cartService.PostAction(\"LogPb\", data);\r\n } catch (e) {\r\n console.log('Warning - PaymentView.js:logPb Exception: ' + e);\r\n }\r\n }\r\n\r\n this.RegisterKlarnaListener = function () {\r\n try {\r\n if (self.selectedPayment() !== KCO_BETBETID) return;\r\n\r\n if (typeof (window._klarnaCheckout) !== \"undefined\") {\r\n window._klarnaCheckout(function (api) {\r\n //console.log(\"RegisterKlarnaListener 'change'\");\r\n\r\n if (self.KlarnaVersion === 3) {\r\n api.on({\r\n 'load': function (data) {\r\n var customerType = data.customer.type;\r\n var defaultCustomerType = 'person';\r\n if (self.KlarnaCustomerType() === 'bedriftskunde')\r\n defaultCustomerType = 'organization';\r\n\r\n if (customerType !== undefined) {\r\n if (customerType !== defaultCustomerType)\r\n self.showKcoCartReloadLightbox(customerType);\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (self.KlarnaVersion === 3) {\r\n api.on({\r\n 'customer': function (data) {\r\n var customerType = data.type;\r\n var defaultCustomerType = 'person';\r\n if (self.KlarnaCustomerType() === 'bedriftskunde')\r\n defaultCustomerType = 'organization';\r\n\r\n if (customerType !== undefined) {\r\n if (customerType !== defaultCustomerType)\r\n self.showKcoCartReloadLightbox(customerType);\r\n }\r\n }\r\n });\r\n }\r\n\r\n api.on({\r\n 'change': function (data) {\r\n var kcoData = data;\r\n\r\n if (data !== null && data.email !== null && typeof (data.email) !== \"undefined\" && data.email.length > 3) {\r\n PubSub.publish(mcWeb.loginCheckout.events.onChangedEmail, data.email);\r\n }\r\n\r\n if (data !== null && data.postal_code !== null && data.postal_code.length > 1) {\r\n if (data.postal_code.indexOf('*') === -1) {\r\n var zipCode = data.postal_code;\r\n var data = { zipCode: zipCode };\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedZipCode, data);\r\n } else {\r\n data.postal_code = \"\";\r\n }\r\n }\r\n\r\n var email = \"\";\r\n if (data.email)\r\n email = data.email;\r\n\r\n var name = undefined;\r\n if (kcoData.give_name)\r\n name = kcoData.give_name;\r\n if (kcoData.family_name) {\r\n if (name)\r\n name = \" \" + kcoData.family_name;\r\n else\r\n name = kcoData.family_name;\r\n }\r\n\r\n var paymentAddress = { Provider: \"KlarnaCheckout\", Name: name, Email: kcoData.email, StreetAddress: \"\", StreetAddress2: \"\", PostalCode: kcoData.postal_code, City: kcoData.city, CountryCode: kcoData.country };\r\n self.service.PostAction(\"GetPaymentAddress\", paymentAddress).done(function (result) {\r\n self.SetPorterbuddyRecipientInfo(result.Email, result.PostalCode, result.StreetAddress);\r\n });\r\n }\r\n });\r\n });\r\n\r\n if (self.klarnaShippingAssistantEnabled() && self.KlarnaVersion === 3) {\r\n window._klarnaCheckout(function (api) {\r\n api.on({\r\n 'shipping_option_change': function (data) {\r\n var jsonData = JSON.stringify(data)\r\n console.log(\"shipping_option_change: \" + jsonData);\r\n\r\n var data = {\r\n shippingId: data.id,\r\n name: data.name,\r\n price: data.price,\r\n taxRate: data.tax_rate,\r\n taxAmount: data.tax_amount\r\n };\r\n\r\n var shipmentService = new WebApiService(\"Shipment\");\r\n shipmentService.GetAction(\"SaveSelectedKlarnaCarrier\", data).done(function (result) {\r\n PubSub.publish(mcWeb.cart.events.onChangedCart, \"\");\r\n //PubSub.publish(mcWeb.shipment.events.onSelectedShipment, carrier);\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n if (self.kcoValidateCountry && self.KlarnaVersion === 3) {\r\n window._klarnaCheckout(function (api) {\r\n //console.log(\"RegisterKlarnaListener 'billing_address_change'\");\r\n\r\n api.on({\r\n 'billing_address_change': function (data) {\r\n var selectedCountry = data.country;\r\n var email = data.email;\r\n if (!email) email = \"\";\r\n\r\n var name = undefined;\r\n if (data.give_name)\r\n name = data.give_name;\r\n if (data.family_name) {\r\n if (name)\r\n name = \" \" + data.family_name;\r\n else\r\n name = data.family_name;\r\n }\r\n\r\n var paymentAddress = { Provider: \"KlarnaCheckout\", Name: name, Email: data.email, StreetAddress: \"\", StreetAddress2: \"\", PostalCode: data.postal_code, City: data.city, CountryCode: data.country };\r\n self.service.PostAction(\"GetPaymentAddress\", paymentAddress).done(function (result) {\r\n self.SetPorterbuddyRecipientInfo(result.Email, result.PostalCode, result.StreetAddress);\r\n });\r\n\r\n if (!email) return;\r\n\r\n if (email) {\r\n self.service.GetAction(\"GetCustomerCountryCode3\", { email: email }).done(function (result) {\r\n if (result) {\r\n var countryCode = result.m_Item1;\r\n var countryText = result.m_Item2;\r\n\r\n if (countryCode && countryCode !== selectedCountry) {\r\n //console.log(\"Kunden har avvikende land: (\" + countryCode + \"/\" + countryText + \") -> \" + selectedCountry);\r\n\r\n self.langService.getValue(\"CheckoutReturnCodes\", \"CountryCodeMismatch\").done(function (value) {\r\n if (value.length <= 0)\r\n value =\r\n 'Det eksisterer allerede en kunde med denne epostadressen som er registrert i {COUNTRY}. For å fortsette med denne E-postadressen må land endres til {COUNTRY}. Alternativt kan en annen E-postadresse benyttes.';\r\n value = value.replace(/{COUNTRY}/gi, countryText);\r\n self.showErrorMessage(value);\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n } catch (e) {\r\n console.log('Warning - PaymentView.js:RegisterKlarnaListener. window._klarnaCheckout Exception: ' + e);\r\n }\r\n };\r\n\r\n self.showErrorMessage = function (message) {\r\n if (message.length > 0)\r\n self.showAlertErrorMessage(message);\r\n };\r\n\r\n self.showAlertErrorMessage = function (message, asHtml) {\r\n var msg = $(\"#error-message-label\");\r\n if (asHtml === true) {\r\n msg.append(message);\r\n } else {\r\n msg.html(message);\r\n }\r\n\r\n self.showTemplate($(\"#popup-error-message\").html());\r\n PubSub.publish(mcWeb.lightbox.events.onShowLightbox, { show: true });\r\n };\r\n\r\n self.showTemplate = function (html) {\r\n var template = $(\"#lightbox-placeholder\");\r\n if (template.length < 1) {\r\n PubSub.publish(mcWeb.checkout.events.onShowSendOrder, { showBtn: false, disabledBtn: false });\r\n return;\r\n }\r\n\r\n template.html(html);\r\n };\r\n\r\n this.zipCodePrev = ko.observable();\r\n this.zipCode = ko.observable();\r\n\r\n this.showOrgnrSsn = function (paymentId) {\r\n var data = { paymentId: paymentId };\r\n\r\n if (!(self.registration.registrationVM.readOnly() === true && self.registration.registrationVM.hideOrgnrSsn())) {\r\n self.service.GetAction(\"ShowOrgnrSsn\", data).done(function (result) {\r\n if (result.Show === true && result.FieldToShow !== 0) {\r\n self.ShowOrgnrSsn(result.Show);\r\n self.ShowOrgnrSsnField(result.FieldToShow);\r\n self.CustomerType(result.CustomerType);\r\n } else {\r\n self.ShowOrgnrSsn(false);\r\n }\r\n });\r\n } else {\r\n self.ShowOrgnrSsn(false);\r\n }\r\n };\r\n\r\n PubSub.subscribe(mcWeb.customerRegistration.events.onChangedZipCode, function (message, data) {\r\n if (!data)\r\n return;\r\n\r\n var zipCode = data.zipCode;\r\n if (!zipCode)\r\n return;\r\n\r\n if (self.zipCode() !== zipCode) {\r\n self.zipCodePrev(zipCode);\r\n self.zipCode(zipCode);\r\n self.UpdateCheckoutZipCode(zipCode);\r\n }\r\n });\r\n\r\n PubSub.subscribe(mcWeb.payments.events.updateKco, function (message, data) {\r\n self.UpdateCheckoutCartItems();\r\n //PubSub.publish(mcWeb.payments.events.reloadPayments, null);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.campaignCode.onChangedCampaignCode, function (message, data) {\r\n self.UpdateCheckoutCartItems();\r\n PubSub.publish(mcWeb.payments.events.reloadPayments, null);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.cart.events.onChangedCart, function (message, data) {\r\n self.UpdateCheckoutCartItems();\r\n });\r\n\r\n PubSub.subscribe(mcWeb.cart.events.onChangedQuantityCart, function (message, data) {\r\n self.UpdateCheckoutCartItems();\r\n PubSub.publish(mcWeb.payments.events.reloadPayments, null);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.shipment.events.onSelectedShipment, function (message, data) {\r\n PubSub.publish(mcWeb.payments.events.reloadPayments, null);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.shipment.events.onChangedShipment, function (message, data) {\r\n self.UpdateCheckoutCartItems();\r\n });\r\n\r\n PubSub.subscribe(mcWeb.payments.events.reloadPayments, function (message, data) {\r\n if (data) return;\r\n\r\n mcWeb.loginCheckout.ResetLoginCheckoutPosision();\r\n if (!self.isPublishMode) {\r\n $(\"#mcweb-customerregistration-checkout-registration\").hide().detach().appendTo(\"body\");\r\n }\r\n self.load(null, null, true);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.payments.events.focusFirstName, function (message, data) {\r\n\r\n if (mcWeb.responsive.getScreenSize() !== 'xs') {\r\n setTimeout(function () {\r\n\r\n if (self.ShowOrgnrSsn()) {\r\n switch (self.ShowOrgnrSsnField()) {\r\n case 1:\r\n $(\"div[id=\" + self.selectedPayment() + \"]\").find(\"input[class*='genericOrgnr']\").focus();\r\n break;\r\n case 2:\r\n $(\"div[id=\" + self.selectedPayment() + \"]\").find(\"input[class*='genericSsn']\").focus();\r\n break;\r\n case 3:\r\n $(\"div[id=\" + self.selectedPayment() + \"]\").find(\"input[class*='genericBirthdate']\").focus();\r\n break;\r\n }\r\n\r\n } else {\r\n $(\"#firstName\").focus();\r\n }\r\n\r\n }, 400);\r\n }\r\n\r\n });\r\n\r\n PubSub.subscribe(mcWeb.login.events.onIsloggedIn, function (message, isLoggedIn) {\r\n self.isLoggedIn(isLoggedIn);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.payments.events.processPaymentMethods, function (message, paymentId) {\r\n self.processPaymentMethods(paymentId);\r\n });\r\n\r\n this.processPaymentMethods = function (paymentId, isPaymentChange) {\r\n if (paymentId === null) {\r\n paymentId = self.selectedPayment();\r\n return;\r\n }\r\n\r\n self.showOrgnrSsn(paymentId);\r\n self.GetCheckoutSnippet(paymentId, isPaymentChange);\r\n\r\n // Vipps er ikke tilgjengelig for bedriftskunder\r\n if (paymentId === VIPPS_BETBETID && self.vippsExpressCheckoutInCart() && (!self.vippsAllowBusinessCustomer() || self.CustomerType() !== 'bedriftskunde'))\r\n self.clickPrivate();\r\n };\r\n\r\n PubSub.subscribe(mcWeb.payments.events.updateOrgNr, function (message, data) {\r\n self.Orgnr(data);\r\n PubSub.publish(mcWeb.customerRegistration.events.updateOrgNr, data);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.cart.events.cartGuid, function (message, data) {\r\n if (data !== null) {\r\n self.cartName = data.cartName;\r\n self.cartGuid = data.cartGuid;\r\n\r\n if (self.cartGuid !== null && self.cartName !== null) {\r\n if (self.waitCheckoutSnippet === true) {\r\n self.GetCheckoutSnippet(self.selectedPayment());\r\n }\r\n }\r\n }\r\n });\r\n\r\n this.validate = function () {\r\n var promise = vm.validateModel().then(function (res) {\r\n var result = {\r\n success: false,\r\n message: '',\r\n invalidElements: []\r\n };\r\n\r\n vm.lastValidationResult = res;\r\n\r\n if (res.every(mcWeb.validation.elementIsValid)) {\r\n if (vm.settings.SoftAdressValidation && !vm.adress() && vm.addressWarningFlag === 0) {\r\n result.message = \"Adresse feltet er tomt.
Fortsett med registrering om du ikke har gateadresse!\";\r\n vm.addressWarningFlag = 1;\r\n //} else if (vm.settings.AllowNewPostNr && vm.cityDoesNotMatch && vm.zipcodeWarningFlag == 0) {\r\n //\tresult.message = \"Du har oppgitt et nytt postnr og poststed.
Fortsett med registrering om du mener dette er riktig!\";\r\n //\tvm.zipcodeWarningFlag = 1;\r\n } else {\r\n result.success = true;\r\n }\r\n } else {\r\n res.forEach(function (validationResult) {\r\n if (!validationResult.valid)\r\n result.invalidElements.push(validationResult);\r\n });\r\n\r\n result.message = $('#validation-error-text').html();\r\n }\r\n\r\n return result;\r\n });\r\n\r\n return promise;\r\n };\r\n\r\n this.validateModel = function () {\r\n $('.qtip').remove();\r\n var index;\r\n var res = mcWeb.validation.validateModel(vm.validationRules);\r\n return res.then(function (res) {\r\n for (index = 0; index < res.length; index++) {\r\n if (res[index].valid) {\r\n mcWeb.validation.setValidCss(res[index].elem);\r\n continue;\r\n } else {\r\n mcWeb.validation.removeValidCss(res[index].elem);\r\n mcWeb.validation.addErrorClass(res[index].elem);\r\n mcWeb.validation.qTipActionShow(res[index].elem, vm.getErrorMessage(res[index].elem, res[index].rule));\r\n break;\r\n }\r\n }\r\n\r\n return res;\r\n });\r\n };\r\n\r\n this.validateElement = function (eledata, event) {\r\n mcWeb.validation.validateElement(vm.validationRules, event.target)\r\n .done(function (elemValidationResult) {\r\n if (elemValidationResult.valid) {\r\n mcWeb.validation.setValidCss(event.target);\r\n } else {\r\n mcWeb.validation.removeValidCss(event.target);\r\n };\r\n });\r\n };\r\n };\r\n});","mcWeb.checkoutFooterView = new function () {\r\n\r\n\tthis.events = {\r\n\t}\r\n\r\n\tthis.vm = function (id) {\r\n var self = this;\r\n\t\tthis.id = \"#\" + id;\r\n this.conditionsStatus = {\r\n isFunctionalConditionAccepted: ko.observable(false),\r\n acceptDocuments: ko.observableArray([]),\r\n usageArea: 3,\r\n refCondVm: null\r\n };\r\n\r\n this.isOrderRefRequired = false;\r\n \r\n this.load = function (data, settings) {\r\n PubSub.subscribe(mcWeb.conditions.events.onAcceptChange, function (evt, conditionStatus) {\r\n if (self.conditionsStatus.usageArea == conditionStatus.usageArea) {\r\n\r\n if (conditionStatus.functionalConditionIsAccepted === null) {\r\n self.conditionsStatus.isFunctionalConditionAccepted(true);\r\n }\r\n else {\r\n self.conditionsStatus.isFunctionalConditionAccepted(conditionStatus.functionalConditionIsAccepted);\r\n }\r\n self.conditionsStatus.acceptDocuments(conditionStatus.acceptDocuments);\r\n self.conditionsStatus.refCondVm = conditionStatus.vm;\r\n }\r\n });\r\n PubSub.subscribe(mcWeb.cart.events.onOrderRefReqChange, function (evt, isOrderRefRequired) {\r\n self.isOrderRefRequired = isOrderRefRequired;\r\n\r\n var el = jQuery('#McPaymentAddOrderbottom');\r\n\r\n if (self.isOrderRefRequired) {\r\n el.tooltip('enable');\r\n el.tooltip('show');\r\n el.blur();\r\n } else {\r\n el.tooltip('hide');\r\n el.tooltip('disable');\r\n } \r\n\r\n });\r\n };\r\n \r\n this.insertOrder = function (source) {\r\n if (self.isOrderRefRequired) {\r\n return;\r\n }\r\n\r\n var condsForProcessing = {\r\n isFunctionalConditionAccepted: self.conditionsStatus.isFunctionalConditionAccepted,\r\n acceptDocuments: self.conditionsStatus.acceptDocuments(),\r\n usageArea: self.conditionsStatus.usageArea\r\n };\r\n\r\n if (self.conditionsStatus == null || self.conditionsStatus.acceptDocuments == null || self.conditionsStatus.acceptDocuments().length <= 0) {\r\n condsForProcessing.isFunctionalConditionAccepted(true);\r\n if (source === 'vipps')\r\n return true;\r\n mcWeb.checkout.insertOrder(condsForProcessing);\r\n return;\r\n }\r\n\r\n if (self.conditionsStatus.isFunctionalConditionAccepted()) {\r\n if (source === 'vipps')\r\n return true;\r\n mcWeb.checkout.insertOrder(condsForProcessing);\r\n }\r\n else {\r\n if (self.conditionsStatus.refCondVm !== null) {\r\n if (self.conditionsStatus.refCondVm.highlightRequired(\"checkoutconditions\")) {\r\n mcWeb.validation.qTipActionShowClickHide(self.id + \" #McPaymentAddOrderbottom\",\r\n jQuery(\".langtext-conditions-required\").length > 0 ? jQuery(\".langtext-conditions-required\")[0].innerText : \"\");\r\n }\r\n } \r\n }\r\n };\r\n\t};\r\n};\r\n","mcWeb.salesConditions = new function () {\r\n\r\n this.events = {\r\n }\r\n\r\n this.vm = function (id) {\r\n var self = this;\r\n this.id = \"#\" + id;\r\n\r\n self.hasCartItems = ko.observable(false);\r\n self.showConditons = ko.observable(false);\r\n\r\n this.load = function (data, settings) {};\r\n\r\n this.onClickConditions = function () {\r\n self.showConditons(!self.showConditons());\r\n }\r\n\r\n PubSub.subscribe(mcWeb.cart.events.hasCartItems, function (message, hasCartItems) {\r\n if (hasCartItems != null) {\r\n self.hasCartItems(hasCartItems); \r\n }\r\n });\r\n };\r\n};\r\n","mcWeb.shipment = jQuery.extend(mcWeb.shipment, new function () {\r\n\r\n this.vm = function (id) {\r\n var $ = jQuery;\r\n var self = this;\r\n\r\n self.id = \"#\" + id;\r\n self.service = new WebApiService(\"Shipment\");\r\n\r\n self.showShipments = ko.observable(false);\r\n self.hasCartItems = ko.observable(false);\r\n self.showShipmentsDetails = ko.observable(true);\r\n\r\n self.showShipmentPrice = ko.observable(false);\r\n self.showOnlyCarrierList = ko.observable();\r\n self.showCheckoutZipCode = ko.observable(true);\r\n self.selectedCarrierName = ko.observable();\r\n self.carrierList = ko.observableArray();\r\n self.selectedCarrierId = ko.observable();\r\n self.selectedCarrierPrice = ko.observable();\r\n\r\n self.pickupPointEnabled = ko.observable(false);\r\n self.pickupPointRegionList = ko.observableArray();\r\n self.pickupPointCustomerList = ko.observableArray();\r\n self.pickupPointSelectedRegion = ko.observable();\r\n self.pickupPointSelectedCustomer = ko.observable();\r\n self.pickupPointRegion = ko.observable();\r\n self.pickupPointRegionId = ko.observable();\r\n self.pickupPointCustomername = ko.observable();\r\n self.popoverOpen = ko.observable(false);\r\n\r\n self.zipCodePrev = ko.observable();\r\n self.zipCode = ko.observable();\r\n self.focusZipCode = ko.observable(false);\r\n\r\n self.postOffice = ko.observable();\r\n self.adressDelivery = ko.observable();\r\n self.adresstillegDelivery = ko.observable();\r\n self.poststedDelivery = ko.observable();\r\n\r\n self.showRefreshSpin = ko.observable(false);\r\n self.showRefreshSpinMargin = ko.observable(0);\r\n self.isCheckout = ko.observable(false);\r\n self.inlineEditor = ko.observable(false);\r\n self.showCollectedDelivery = ko.observable(false);\r\n self.useCollectedDeliveryPrev = ko.observable(false);\r\n self.useCollectedDelivery = ko.observable(false);\r\n self.useCollectedDelivery.subscribe(function (newValue) {\r\n if (self.useCollectedDeliveryPrev() != newValue) {\r\n self.useCollectedDeliveryPrev(newValue);\r\n PubSub.publish(mcWeb.cart.events.onChangeCollectedDelivery, newValue);\r\n }\r\n });\r\n\r\n self.showInsuranceProduct = ko.observable(false);\r\n self.useInsuranceProduct = ko.observable(false);\r\n self.klarnaShippingAssistantEnabled = ko.observable(false);\r\n\r\n self.showPrintPackingList = ko.observable(false);\r\n self.usePrintPackingListPrev = ko.observable(false);\r\n self.usePrintPackingList = ko.observable(false);\r\n\r\n self.usePrintPackingList.subscribe(function (newValue) {\r\n if (self.usePrintPackingListPrev() !== newValue) {\r\n //self.usePrintPackingListPrev(newValue); //Denne skal IKKE være med\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedUsePrintPackingList, newValue);\r\n }\r\n });\r\n\r\n PubSub.subscribe(mcWeb.customerRegistration.events.onChangedUsePrintPackingList, function (message, active) {\r\n if (active === true || active === false) {\r\n if (self.usePrintPackingList() !== active) {\r\n self.usePrintPackingList(active);\r\n } else {\r\n self.usePrintPackingListPrev(active);\r\n }\r\n }\r\n });\r\n\r\n //Set the hight of \"update icon\"\r\n this.showRefreshSpin.subscribe(function () {\r\n var hight = parseFloat($(\"#carrier-selected.panel\").height());\r\n if (hight != NaN && hight > 1) {\r\n self.showRefreshSpinMargin(((hight / 2) - 30) + 'px');\r\n }\r\n });\r\n\r\n this.load = function (data, settings) {\r\n\r\n self.showRefreshSpin(true);\r\n\r\n //Settings\r\n if (settings) {\r\n self.showShipments(settings.ShowShipments);\r\n self.showShipmentPrice(settings.ShowShipmentPrice);\r\n self.showOnlyCarrierList(settings.ShowOnlyCarrierList);\r\n self.showCheckoutZipCode(settings.ShowCheckoutZipCode);\r\n self.isCheckout(($('.body-checkout').length > 0) ? true : false);\r\n\r\n self.showCollectedDelivery(settings.ShowCollectedDelivery);\r\n self.showPrintPackingList(settings.ShowPrintPackingList);\r\n self.showInsuranceProduct(settings.ShowInsuranceProduct);\r\n self.inlineEditor(settings.InlineEditor);\r\n }\r\n\r\n //Loading data width ajax\r\n if (!data) {\r\n self.service.GetAction(\"CarrierList\", { isCheckout: self.isCheckout() }).done(function (result) {\r\n if (result == null) {\r\n self.showRefreshSpin(false);\r\n return;\r\n }\r\n\r\n self.load(result);\r\n });\r\n return;\r\n }\r\n\r\n self.pickupPointEnabled(data.PickupPointEnabled);\r\n if (data.CarrierList)\r\n self.carrierList(data.CarrierList);\r\n self.selectedCarrierId(data.SelectedCarrierId);\r\n setSelectedCarrier(data);\r\n\r\n if (self.zipCode() == null && self.zipCodePrev() == null) {\r\n self.zipCodePrev(data.ZipCode);\r\n self.zipCode(data.ZipCode);\r\n }\r\n\r\n self.useCollectedDeliveryPrev(data.UseCollectedDelivery);\r\n self.useCollectedDelivery(data.UseCollectedDelivery);\r\n\r\n self.useInsuranceProduct(data.UseInsuranceProduct);\r\n\r\n self.klarnaShippingAssistantEnabled(data.KlarnaShippingAssistantEnabled);\r\n self.showShipmentsDetails(!data.KlarnaShippingAssistantEnabled);\r\n\r\n self.usePrintPackingList(data.UsePrintPackingList);\r\n self.usePrintPackingListPrev(data.UsePrintPackingList); //Denne skal ligge neders pga event oppdatering\r\n\r\n self.showRefreshSpin(false);\r\n\r\n PubSub.publish(mcWeb.shipment.events.onChangedShipment, data);\r\n };\r\n \r\n this.useInsuranceProduct.subscribe(function (checked) {\r\n if (!self.showInsuranceProduct()) return true;\r\n\r\n self.showRefreshSpin(true);\r\n\r\n var data = { addProduct: checked }\r\n try {\r\n self.service.GetAction(\"SetInsuranceProduct\", data).done(function (result) {\r\n self.showRefreshSpin(false);\r\n if (result == null || result.length < 1) return;\r\n if (result.Success === false)\r\n alert(result.Message);\r\n PubSub.publish(mcWeb.cart.events.onChangedCart, \"\");\r\n });\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n\r\n\r\n return true;\r\n });\r\n\r\n this.getPickupPointRegions = function () {\r\n if (!self.pickupPointEnabled()) return true;\r\n self.showRefreshSpin(true);\r\n\r\n self.service.GetAction(\"GetPickupPointRegions\", null).done(function (result) {\r\n self.showRefreshSpin(false);\r\n\r\n if (result == null || result.length < 1) return;\r\n\r\n self.pickupPointRegionList(result);\r\n self.pickupPointRegion(self.pickupPointRegionList()[0].Region);\r\n self.pickupPointRegionId(self.pickupPointRegionList()[0].RegionId);\r\n if (result.length === 1) self.pickupPointSelectedRegion(self.pickupPointRegionId());\r\n });\r\n return true;\r\n }\r\n\r\n this.pickupPointSelectedRegion.subscribe(function (regionId) {\r\n if (regionId == null) return false;\r\n if (regionId === \"\") return false;\r\n if (self.selectedCarrierId == null) return false;\r\n\r\n self.showRefreshSpin(true);\r\n\r\n var data = { regionId: regionId }\r\n self.service.GetAction(\"GetPickupPointCustomers\", data).done(function (result) {\r\n self.showRefreshSpin(false);\r\n\r\n if (result == null || result.length < 1) return;\r\n\r\n self.pickupPointCustomerList(result);\r\n self.pickupPointCustomername(self.pickupPointCustomerList()[0].Customername);\r\n });\r\n return true;\r\n });\r\n\r\n this.saveSelectedPickupPointCustomer = function (customerId, customerName, customerEmail) {\r\n if (customerId == null || customerName == null || customerEmail == null) return false;\r\n var data = { customerId: customerId, customerName: customerName, customerEmail: customerEmail }\r\n\r\n self.showRefreshSpin(true);\r\n self.service.GetAction(\"SaveSelectedPickupPointCustomer\", data).done(function (result) {\r\n self.showRefreshSpin(false);\r\n });\r\n\r\n return true;\r\n }\r\n\r\n this.pickupPointSelectedCustomer.subscribe(function (selectedPickupPoint) {\r\n if (selectedPickupPoint == null) return false;\r\n if (self.selectedCarrierId == null) return false;\r\n\r\n var customername = \"\";\r\n var customerEmail = \"\";\r\n\r\n if (selectedPickupPoint.Customername != null) customername = selectedPickupPoint.Customername.trim();\r\n if (selectedPickupPoint.EmailAddress != null) customerEmail = selectedPickupPoint.EmailAddress.trim();\r\n\r\n self.saveSelectedPickupPointCustomer(selectedPickupPoint.CustomerId, customername, customerEmail);\r\n\r\n return true;\r\n });\r\n\r\n var setSelectedCarrier = function (data) {\r\n jQuery.each(data.CarrierList, function (index, obj) {\r\n if (obj.Id == data.SelectedCarrierId) {\r\n self.selectedCarrierName(obj.Name);\r\n self.selectedCarrierPrice(obj.PrintPrice);\r\n PubSub.publish(mcWeb.cartsmall.events.onChangedQuantityCartSmall, \"\");\r\n }\r\n });\r\n self.getPickupPointRegions();\r\n }\r\n\r\n //Subscribe to event\r\n this.saveSelectedCarrier = function (carrier) {\r\n self.showRefreshSpin(true);\r\n\r\n self.pickupPointSelectedCustomer(undefined);\r\n self.pickupPointSelectedRegion(undefined);\r\n self.pickupPointCustomerList.removeAll();\r\n\r\n self.selectedCarrierName(carrier.Name);\r\n self.selectedCarrierPrice(carrier.PrintPrice);\r\n\r\n var authenticationGuid = mcWeb.currentUser.getAuthenticationGUID();\r\n var email = mcWeb.loginCheckout.getEmail();\r\n carrier.PickupPoint = null;\r\n\r\n var data = {\r\n carrierItem: carrier,\r\n email: email,\r\n zipCode: null,\r\n isCheckout: self.isCheckout,\r\n authenticationGuid: authenticationGuid\r\n }\r\n\r\n self.service.GetAction(\"SaveSelectedCarrier\", data).done(function (result) {\r\n self.showRefreshSpin(false); \r\n\r\n PubSub.publish(mcWeb.cart.events.onChangedCart, \"\");\r\n PubSub.publish(mcWeb.shipment.events.onSelectedShipment, carrier);\r\n\r\n if (result !== null && result != undefined) {\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedCustomerData, result.CustomerRegistration);\r\n if (result.SelectedCarrierRemoved) {\r\n PubSub.publish(mcWeb.shipment.events.reloadShipment, result.Carriers);\r\n }\r\n //result.HasLockedDeliveryAddress = true / false;\r\n }\r\n });\r\n return true;\r\n };\r\n\r\n PubSub.subscribe(mcWeb.shipment.events.onSelectedShipment, function (message, carrier) {\r\n if (!carrier)\r\n return;\r\n\r\n self.selectedCarrierName(carrier.Name);\r\n self.selectedCarrierPrice(carrier.PrintPrice);\r\n });\r\n\r\n this.showCarrierList = function () {\r\n self.showOnlyCarrierList(true);\r\n }\r\n\r\n PubSub.subscribe(mcWeb.cart.events.hasCartItems, function (message, data) {\r\n\r\n if (data != null) {\r\n self.hasCartItems(data); //was False\r\n }\r\n });\r\n\r\n PubSub.subscribe(mcWeb.shipment.events.reloadShipment, function (message, data) {\r\n self.load(data);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.customerRegistration.events.onChangedCustomerData, function (message, data) {\r\n if (data == null)\r\n return\r\n\r\n if (data.useDifferentDeliveryAddress != null && data.useDifferentDeliveryAddress == true) {\r\n if (data.postnrDelivery != null && data.postnrDelivery != self.zipCode()) {\r\n self.LoadZipCode(data.postnrDelivery);\r\n }\r\n\r\n self.adressDelivery((data.adressDelivery == null) ? \"\" : data.adressDelivery);\r\n self.adresstillegDelivery((data.adresstillegDelivery == null) ? \"\" : data.adresstillegDelivery);\r\n self.poststedDelivery((data.poststedDelivery == null) ? \"\" : data.poststedDelivery);\r\n }\r\n else {\r\n if (data.postnr != null && data.postnr != self.zipCode()) {\r\n self.LoadZipCode(data.postnr);\r\n }\r\n\r\n self.adressDelivery((data.adress == null) ? \"\" : data.adress);\r\n self.adresstillegDelivery((data.adresstilleg == null) ? \"\" : data.adresstilleg);\r\n self.poststedDelivery((data.poststed == null) ? \"\" : data.poststed);\r\n }\r\n });\r\n\r\n PubSub.subscribe(mcWeb.customerRegistration.events.onChangedCity, function (message, city) {\r\n self.poststedDelivery((city == null || city.length < 1) ? '' : city);\r\n });\r\n\r\n PubSub.subscribe(mcWeb.customerRegistration.events.onChangedZipCode, function (message, data) {\r\n if (!data)\r\n return;\r\n\r\n var zipCode = data.zipCode;\r\n if (!zipCode)\r\n return;\r\n\r\n if (self.zipCode() != zipCode) {\r\n self.zipCodePrev(zipCode);\r\n self.zipCode(zipCode);\r\n self.load();\r\n }\r\n });\r\n\r\n PubSub.subscribe(mcWeb.payments.events.onSelectedPayment, function (message, paymentId) {\r\n if (paymentId != null) {\r\n self.service.GetAction(\"ShowCollectedDeliveryBasedOnPayment\", { betBetId: paymentId }).done(function (result) {\r\n if (result == 2) {\r\n self.showCollectedDelivery(false);\r\n self.useCollectedDelivery(true);\r\n }\r\n self.showCollectedDelivery((result === 1));\r\n });\r\n }\r\n });\r\n\r\n this.LoadZipCode = function (zipCode) {\r\n if (zipCode == null || zipCode.length < 3)\r\n return\r\n\r\n try {\r\n if ((zipCode.indexOf(\"*\") > -1)) {\r\n self.showCheckoutZipCode(false);\r\n return;\r\n }\r\n\r\n self.showRefreshSpin(true);\r\n\r\n var data = { zipCode: zipCode };\r\n PubSub.publish(mcWeb.customerRegistration.events.onChangedZipCode, data);\r\n PubSub.publish(mcWeb.cart.events.onChangedCart, null);\r\n\r\n } catch (e) {\r\n stopUpdateIcon();\r\n console.error(e);\r\n }\r\n };\r\n\r\n this.shipmentInfo = function () {\r\n if (self.zipCode() != null && self.zipCode().indexOf('*') > -1) {\r\n return \"\";\r\n }\r\n\r\n var text = (self.postOffice() == null || self.postOffice().length < 1) ? \"\" : self.postOffice() + ' ';\r\n text += (self.zipCode() == null || self.zipCode().length < 1) ? \"\" : self.zipCode() + ' ';\r\n text += (self.poststedDelivery() == null || self.poststedDelivery().length < 1) ? \"\" : self.poststedDelivery() + ' ';\r\n\r\n return text;\r\n };\r\n\r\n /* NEW */\r\n this.onToggleCarrierTypes = function () {\r\n $('#carriers').slideToggle();\r\n };\r\n\r\n this.isNumberKey = function (sender, e) {\r\n var key = (e.which) ? e.which : e.keyCode;\r\n if (key == 13) {\r\n document.activeElement.blur();\r\n return false;\r\n }\r\n return !(key > 31 && (key < 48 || key > 57));\r\n };\r\n\r\n self.zipCode.subscribe(function (zipCode) {\r\n\r\n if (self.zipCodePrev() == zipCode)\r\n return;\r\n\r\n self.poststedDelivery('');\r\n\r\n if (zipCode != null && zipCode.length > 3) {\r\n self.zipCodePrev(zipCode);\r\n self.LoadZipCode(zipCode);\r\n }\r\n });\r\n\r\n $('#qt-carrier-zipcode-i').popover({\r\n trigger: 'hover',\r\n title: $('#qt-carrier-zipcode-t').html(),\r\n content: $('#qt-carrier-zipcode-c').html(),\r\n placement: 'top',\r\n container: 'body'\r\n });\r\n\r\n $('#qt-coll-delivery-i').popover({\r\n trigger: 'hover',\r\n title: $('#qt-coll-delivery-t').html(),\r\n content: $('#qt-coll-delivery-c').html(),\r\n placement: 'top',\r\n container: 'body'\r\n });\r\n\r\n $('#qt-print-packing-i').popover({\r\n trigger: 'hover',\r\n title: $('#qt-print-packing-t').html(),\r\n content: $('#qt-print-packing-c').html(),\r\n placement: 'top',\r\n container: 'body'\r\n });\r\n\r\n $('#qt-insurance-i').popover({\r\n trigger: 'hover',\r\n title: $('#qt-insurance-t').html(),\r\n content: $('#qt-insurance-c').html(),\r\n placement: 'top',\r\n container: 'body'\r\n });\r\n\r\n ko.bindingHandlers.popoverShipping = {\r\n init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var node = $(element);\r\n self.popoverNode = node;\r\n var option = ko.utils.unwrapObservable(valueAccessor());\r\n var conId = option.contentid, titId = option.titleid, kn = \"-kn\";\r\n var contentkn = \"