{"version":3,"sources":["Scripts/shop.addresses.js","Scripts/shop.editOrderPositionSafariFix.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/AdditionalWorkModelV2.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/AttributeCustomFormatModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/AttributeCustomValueModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/AttributeModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ConfigurationSummaryModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/CountryModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/CouponInfoModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/DeliveryOptionModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ExtensionHelperModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ExtensionModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/FilePresetModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/LoadOrderOptionsModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ModeModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ObjectValueModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/OrderOptionsModelV2.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/OrderOptionTypeModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/PageModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/PriceTableModelV2.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ProductConfigurationFilterItem.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ProductConfigurationFilterModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ProductContentModeModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ProductionTypeModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/ProductModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/SammyModel.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/shop.ordercreate.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/SubmitModelV2.js","Areas/ProductConfiguration/Scripts/ConfigurationV2/TopProductModel.js","node_modules/slick-carousel/slick/slick.min.js","Scripts/shop.common/shop.slick.init.js"],"names":["isAdminOverview","AddressListModel","addresses","self","this","CloseEditWindow","shop","ts","modal","GetModalFromExisting","close","ApplyToolTip","userSettings","isProductOverviewBs4Enabled","$","tooltip","removeClass","SaveUrl","ajaxUrls","account","EditAddress","DeleteUrl","DeleteAddress","Salutations","ko","observableArray","Countries","CommissionReceivers","CommissionReceiversArray","DefaultCountryId","observable","DefaultCountryISO","TermsOfPayments","Addresses","AddressToEdit","AddressInEditProgress","AddressToDelete","IsPrivateCustomer","ShowDeleteButton","isSubmitting","AddressFilterKey","CreditDataToEdit","SaveChangeErrors","PopulateAddresses","addressListModel","PopulateSalutations","PopulateCountries","DefaultCountry","PopulateCommissionReceivers","PopulateTermsOfPayments","removeAll","each","index","item","address","AddressModel","PopulateAddressModel","attachAddressSubscribers","push","salutations","i","salutation","salutationModel","AddressSalutationModel","PopulateSalutationModel","countries","defaultCountry","country","countryModel","AddressCountryModel","PopulateCountryModel","undefined","CountryId","ISO","termsOfPayments","termsOfPayment","termsOfPaymentModel","TermsOfPaymentModel","PopulateTermsOfPaymentModel","commissionReceivers","commissionReceiver","CommissionReceiverId","commissionReceiverModel","AddressCommissionReceiverModel","PopulateCommissionReceiverModel","DeleteDeliveryAddresses","token","val","post","__RequestVerificationToken","lastingAddressId","remove","AddressId","RefreshFilteredAddresses","fail","alerts","error","EditCreditData","creditData","AddressCreditDataModel","GetBankAccountByAddressId","OpenEditWindow","SelectAddress","addressToEdit","FirstName","LastName","City","Company","Country","StateProvinceCode","PhoneNumber","Salutation","SalutationId","Street","ZipCode","DebitorNumber","CMwSt","VatId","Skonto","Email","IsPrivateCustomerAddress","ShowVat","IsStateProvinceCodeRequired","CommissionReceiver","AddNewAddress","newAddress","YesDelete","get","id","NoDelete","fadeOutAddress","elem","nodeType","fadeOut","SaveChanges","json","toJS","validate","result","Success","unshift","length","Errors","SaveCreditDataChanges","addClass","show","css","SaveBankAccount","width","title","popoverHeading","children","html","GetModal","open","forcedSearchKey","bak","location","reload","FilteredAddresses","computed","filter","searchTermLowerCase","toLowerCase","indexOf","String","e","extend","throttle","subscribe","text","countryHasStateProvinceCode","ajax","type","url","area","IsEuCountry","data","done","isEu","pageModelHndl","that","Name","CommissionReceiverTypes","commissionReceiverData","CountryName","salutationData","SalutationName","IsEU","DeliveryOptionIds","countryData","TermsOfPaymentId","document","ready","isSafari","navigator","userAgent","match","iOS","test","window","MSStream","click","orderPositionNr","localStorage","setItem","SetOrderPositionNrToEdit","getItem","fragment","GetOrderPositionToEditFragment","removeItem","hash","AddFragmentToCurrentUrl","AdditionalWorkModelV2","IsLoading","IsDependencyLoading","pPriceTableModelV2","pure","SelectedAdditionalWork","addSelectedAdditionalWork","additionalWorkId","array","getAdditionalWork","LoadAdditionalWorkData","input","contentType","datatype","always","updateOrderAdditionalWorkOptions","JSON","stringify","selectedOrderOptions","pOrderOptionsModelV2","SelectedOrderOptions","selectedDeliveryCountry","SelectedDeliveryCountryId","articlereference","ArticleReference","amount","Amount","isCatalogueProduct","IsCatalogueProduct","selectedAdditionalWorkIds","updateConfigurationSummary","pSummaryModel","load","on","parent","SyncCheckbox","el","prop","customFormatObjectValueId","AttributeCustomFormatModel","attributeModelHndl","MinLength","MaxLength","MinWidth","MaxWidth","Length","required","validation","validator","currentValue","isInteger","IsLengthModified","Width","IsWidthModified","IsCustomFormatOptionAvailable","ObjectValues","some","objectValue","ObjectValueId","LengthIsValid","IsCustomFormatSelected","hasError","WidthIsValid","UpdateMinAndMax","productModel","CustomFormatLengthMin","CustomFormatLengthMax","CustomFormatWidthMin","CustomFormatWidthMax","CustomLengthCmText","Intl","NumberFormat","language","minimumFractionDigits","format","CustomWidthCmText","CustomLengthMinText","maximumFractionDigits","CustomLengthMaxText","CustomWidthMinText","CustomWidthMaxText","pushCustomFormat","newValue","productConfigurationFilterItem","ProductConfigurationFilterItem","pProductModel","SelectedAttributeAndExtensionValues","value","UpdateProductModel","materialId","longSideId","shortSideId","widthId","heightId","customValueDefaultMin","customValueDefaultMax","AttributeCustomValueModel","lookUpAttributeId","CustomValueAttributeIds","IsCustomValueOptionAvailable","itemAttributeId","getAttributeId","IsCustomValueOptionEnabled","attribute","getAttributeById","getProductModel","SelectedObjectValueId","keyDownCallback","event","keyCode","charCodeAt","shiftKey","altKey","ctrlKey","IsProductModelValid","attributes","Attributes","currentAttributeIndex","IsValid","pProductContentModeModel","IsExpertModeSelected","target","dispatchEvent","Event","getDominantAttributeId","find","attributeId","isLessThanDominantAttributeValue","sourceValue","dominantCustomValueAttribute","isDominantCustomValueAttribute","dominantAttributeId","console","info","dominantAttributeValue","CustomValue","parseInt","clickSwitchValues","domninantAttribute","IsCustomValueOptionSelected","CustomValueMin","CustomValueMax","min","max","HasErrorIsLessThanDominantAttributeValue","HasInvalidNumber","CustomValueMinText","CustomValueMaxText","CustomValueCmText","log","applyCustomValue","customValueProperty","AttributeId","Min","Max","filtered","applyCustomValues","customValueProperties","noCoverObjectValueId","noCoverObjectValueV3Id","individualFormatObjectValueId","extentId","extentV3Id","AttributeModel","parentHndl","LocalizationKey","Description","_BeginnerObjectValues","DisplayColumns","IsExtension","ExtensionModel","CustomFormat","DefaultObjectValueId","InnerLastSelected","SelectedObjectValue","objectValueId","getObjectValue","IsCorrectionMode","ClickToggleCorrectionMode","isCorrectionMode","PreviousAttributeHasValidValue","previousIndex","IsValueStatic","isValid","HasError","IsVisible","SetSelectedAttribute","Attribute","SelectedAttribute","selectedValue","currentTarget","GetSelectableValueIds","selectableIds","IsEnabled","newValueId","IsProductModelPopulated","IsDisabled","SelectedModeId","LastSelectedObjectValue","toString","IsProductModelRePopulating","Extensions","ext","CustomValueProperties","UpdateForBeginnerMode","slice","objVal","SetBeginnerValueEnabled","option","applyBindingsToNode","nonExistantSelectedValue","disable","GetOptionText","replace","PopulateAttributeModel","attributeData","ObjectAttributeId","PopulateObjectValues","PopulateDefaultObjectValue","selectedValues","element","RePopulateAttributeModel","selectedValueIds","success","obj","inArray","UpdateAttributeModel","selectableValueIds","inSelectedValueList","isExtension","elementsToRemove","radioBox","checkedState","is","ParentAttribute","objectValuesData","objectValueModel","ObjectValueModel","PopulateObjectValueModel","ConfigurationSummaryModel","AddOfferModal","IsOrderCreationProgressLoading","isLoading","isDependencyLoading","articleReference","selectedDeliveryCountryId","itemCount","offerModel","OfferModelV2","$summaryEl","countryId","AdjustProductConfigMode","$spQueryEl","$priceCalculationDetailsEl","addItem","addItemUrl","shoppingCartUrl","dataType","href","ErrorMessage","dataLayer","updateItem","model","updateUrl","positionNumber","EditData","PositionNumber","openOfferWindow","kendoWindow","YourOfferHasBeenCreated","maximizeKendoWindowOnMobile","center","openOfferWindowBs4","$dialog","saveForLater","Working","Clear","postData","offer","AddOffer","UpdateData","OfferGrossPrice","OfferId","UserHasMailHead","attr","saveForLaterBs4","SetBeginnerMode","RemoveBeginnerMode","CountryModel","ResourceName","Text","CouponInfoModel","NetValueWithoutCurrentPosition","IsPercent","IsPersistant","CouponValue","CouponValueDisplay","GetCurrency","PriceAfterChangeWithoutCoupon","pCalculationModel","TotalNetPrice","OrderPriceAfterChange","price","RemainingCouponValue","RemainingCouponValueDisplay","Populate","DeliveryOptionModel","DeliveryOptionId","Price","DisplayPrice","displayPrice","DiffWithPickup","DisplayOptionsCaption","RePopulateDeliveryOptionModel","deliveryOptionData","Enabled","InjectValue","PopulateDeliveryOptionModel","ExtensionHelperModel","ExtensionId","Object_ObjectExtensionId","SelectedExtensionObjectValues","SelectedExtensionObjectValueIds","SetSelectetExtension","extension","SelectedExtensionId","FilePresetModel","FilePresetUrl","IsFilePresetAvailable","GetFilePreset","productConfigurationFilterModel","ProductConfigurationFilterModel","mapping","toJSON","parse","Model","isFilePresetAvailable","LoadOrderOptionsModel","ObjectId","SelectedAmount","SelectedObjectValues","PopulateLoadOrderOptionsModel","ignore","CurrentAmount","ModeModel","IsSelected","ModeId","DisplayText","boolStatus","order","ProductConfigurationModeChanged","selectedMode","parentAttribute","AttributeSpecificId","SortId","objectValueData","GetTranslateableResource","SetSelectedValue","SelectedValue","SetSelectedValueGallerie","OrderOptionsModelV2","DefaultDeliveryCountryId","WriteSelectedOption","WriteSelectedDeliveryCountry","addSelectedOrderOption","optionType","optionId","isInitial","getOrderOption","ProductionTimeTypeId","SetSelectedClass","LoadOrderOptionsData","pAdditionalWorkModelV2","trigger","updateOrderOptions","then","updateOrderOptionsBeginner","IsScrollingRequired","scrollTo","err","UpdateProductionType","productionTypeId","SyncBeginnerView","SyncDefaultView","clickedOptionLabel","clickedOptionPrice","selectedOptionLabel","selectedOptionPrice","contextElement","orderOptionList","collapsibleIcon","hasClass","toggleClass","OrderOptionTypeModel","TypeId","TypeName","OrderOptions","OnlyForExtension","SelectedOrderOptionId","ReInjectDeliveryTimeType","basePrice","ReInjectDeliveryTimes","InjectDeliveryTimeType","InjectDeliveryTimes","pPriceTableModel","ProductionTypes","prodType","ReInjectDeliveryTime","ProductionTypeId","orderOption","OrderOptionModel","InjectDeliveryTime","RePopulateOrderOptionTypeModel","orderOptionTypeData","RePopulateOrderOptions","PopulateOrderOptionTypeModel","Key","PopulateOrderOptions","orderOptions","orderOptionData","RePopulateOrderOptionModel","selectedOrderOptionIdSet","OrderOptionId","PopulateOrderOptionModel","VisibleOrderOptions","filteredArray","PageModel","objectId","CatalogueProductDisplayText","EditId","CurrencySymbol","currentCurrencySymbol","TeaserPanel","AdditionalTeaserPanel","CurrentHash","EditCoupon","ProductConfigurationV3Enabled","CurrentMachine","CurrentNetPrice","AdvantageousAmount","PriceDiff","ShowData","EditOrderData","EditOrderPositionId","DesignerUserItemId","DesignName","OrderPositionId","ItemCount","SelectedItemCount","SubmitText","SubmitTextShoppingCart","ImageSliderAttributeId","HiddenAttributeIds","pSammyModel","IsInitialScrollDownDone","IsTopProductModelPopulated","IsPriceTableModelPopulated","IsOrderOptionsModelPopulated","IsInitialLoadDone","IsEditDataAvailable","IsShowDataAvailable","IsEditOrderDataAvailable","IsEditMode","IsAdvantageousAmountAvailable","IsBeginnerModeReady","IsInitialAmount","IsAdGalleryInitialized","IsOrderOptionModeDisabled","IsPriceTableCollapsedDefault","StaticAttributes","StaticOrderOptions","DisplayCurrentAmount","ProductPieces","IsCurrentDigitalPrint","InitialisizePageModel","pTopProductModel","TopProductModel","ProductContentModeModel","SetAvailableModes","ProductModel","PriceTableModelV2","pOfferModelV2","SammyModel","pFilePresetModel","RePopulateProductModel","SelectedValues","ProductConfig","SelectedIds","c","productionAmountModel","ProductionAmounts","Machine","SetFavLink","IsPaused","setTimeout","getTopProductTitleText","topProductName","topProductId","ApplyStaticAttributes","key","attrKey","requestHandle","AmountDifference","IsTableCollapsed","TableCollapsedItemCount","abortPendingRequest","abort","getAmountPriceTable","isAmountEnteredByUser","getAmountPriceTableUrl","params","shippingCountryId","individualAmount","ShowLessPrices","ShowMorePrices","UpdateSammyUrl","xhr","statusText","dontShowErrorIfRequestIsCancelled","updatePriceTableData","getArticleReferenceForConfigUrl","t","Deferred","reject","promise","UpdatePriceTableData","UpdatePricetableDataByArticleReference","amountPrefix","substring","IsProductConfigurationV3","lastIndexOf","$rows","selectedId","hide","selected","SelectAmount","$context","which","IsGrammage","IsCustomValue","IsCustomFormat","CustomLength","CustomWidth","SelectedMode","AvailableModes","IsBeginnerModeSelected","IsStandardModeSelected","EnabledModes","modes","m","SetModeId","mode","selectedModeId","aMode","UpdateBeginnerMode","modeIds","modeId","modeModel","modeNames","modeEnabled","ProductionTypeModel","PriceFactor","ProductionTime","DisplayDate","PopulateProductionTypeModel","productionTypeData","DisplayName","VideoLink","ValidateModel","extensionId","IsAttributesAndExtensionsValid","valid","k","extDomSelect","j","objValue","options","PopulateProductModel","productData","PopulateAttributes","updateProductConfiguration","UpdateAttributes","EnabledValueIds","LastSelectedIds","CustomFormatMinMax","PopulateExtensions","extensionsData","extModel","attrModel","populateDefaultObjectValue","attributeModels","attributesData","attributeModel","galleryAttributes","objectValues","extensions","lastSelectedIds","customFormatMinMax","flag","extensionAttributes","extensionAttribute","RePopulateAttributesAndExtensions","updateAttributes","selectedAttributeValues","selectedContentValues","selectedExtensionValues","l","lastSelectedItem","resolveArticleReference","LoadProductModelData","LoadObjectConfiguration","LoadShowData","errorMessage","LoadPositionEditData","editId","editUrl","Result","Object","keys","OrderOptionMap","map","DeliveryCountryId","SelectedAdditionalWorkIds","LoadEditOrderData","orderPositionId","EditOrderSave","fadeIn","delay","GetCouponForOrderPosition","infoModel","LoadTemplateData","shoppingCart","GetItem","position","sammy","Sammy","templateId","notFound","verb","path","warn","join","raise_errors","run","SubmitModelV2","PopulateSubmitModel","SelectOrderOptionsModel","DataCheckId","ProofId","HotfoilId","FileFormatId","FileTransferId","ProductionTimeId","PrintMethodId","PaintworkId","BundlingId","slick","slidesToShow","slidesToScroll","autoPlay","infinite","dots","draggable","responsive","breakpoint","settings"],"mappings":"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","file":"script.min.js","sourcesContent":["var isAdminOverview;\r\n\r\nvar AddressListModel = function (addresses) {\r\n var self = this;\r\n\r\n self.SaveUrl = ajaxUrls.account.EditAddress;\r\n self.DeleteUrl = ajaxUrls.account.DeleteAddress;\r\n\r\n self.Salutations = ko.observableArray([]);\r\n self.Countries = ko.observableArray([]);\r\n self.CommissionReceivers = ko.observableArray([]);\r\n self.CommissionReceiversArray = ko.observableArray([]);\r\n self.DefaultCountryId = ko.observable();\r\n self.DefaultCountryISO = ko.observable();\r\n self.TermsOfPayments = ko.observableArray([]);\r\n \r\n self.Addresses = ko.observableArray([]);\r\n self.AddressToEdit = ko.observable();\r\n self.AddressInEditProgress = ko.observable();\r\n self.AddressToDelete = ko.observable();\r\n\r\n self.IsPrivateCustomer = ko.observable(false);\r\n self.ShowDeleteButton = ko.observable(false);\r\n\r\n self.isSubmitting = ko.observable(false);\r\n\r\n self.AddressFilterKey = ko.observable('');\r\n self.CreditDataToEdit = ko.observable();\r\n self.SaveChangeErrors = ko.observableArray([]);\r\n\r\n self.PopulateAddresses = function(addressListModel) {\r\n self.ShowDeleteButton(addressListModel.ShowDeleteButton);\r\n self.PopulateSalutations(addressListModel.Salutations);\r\n self.PopulateCountries(addressListModel.Countries, addressListModel.DefaultCountry);\r\n self.PopulateCommissionReceivers(addressListModel.CommissionReceivers);\r\n self.PopulateTermsOfPayments(addressListModel.TermsOfPayments);\r\n self.IsPrivateCustomer(addressListModel.IsPrivateCustomer);\r\n self.Addresses.removeAll();\r\n if (addressListModel.Addresses) {\r\n $.each(addressListModel.Addresses, function (index, item) {\r\n var address = new AddressModel(self);\r\n address.PopulateAddressModel(item);\r\n\r\n self.attachAddressSubscribers(address);\r\n\r\n self.Addresses.push(address);\r\n });\r\n }\r\n };\r\n self.PopulateSalutations = function (salutations) {\r\n self.Salutations([]);\r\n\r\n $.each(salutations, function (i, salutation) {\r\n var salutationModel = new AddressSalutationModel(self);\r\n salutationModel.PopulateSalutationModel(salutation);\r\n\r\n self.Salutations.push(salutationModel);\r\n });\r\n };\r\n self.PopulateCountries = function (countries, defaultCountry) {\r\n self.Countries([]);\r\n\r\n $.each(countries, function (i, country) {\r\n var countryModel = new AddressCountryModel(self);\r\n countryModel.PopulateCountryModel(country);\r\n self.Countries.push(countryModel);\r\n });\r\n\r\n if (defaultCountry !== undefined && defaultCountry.CountryId !== undefined && defaultCountry.ISO !== undefined) {\r\n self.DefaultCountryId(defaultCountry.CountryId);\r\n self.DefaultCountryISO(defaultCountry.ISO);\r\n }\r\n };\r\n \r\n self.PopulateTermsOfPayments = function (termsOfPayments) {\r\n self.TermsOfPayments([])\r\n $.each(termsOfPayments, function (i, termsOfPayment) {\r\n const termsOfPaymentModel = new TermsOfPaymentModel(self);\r\n termsOfPaymentModel.PopulateTermsOfPaymentModel(termsOfPayment);\r\n self.TermsOfPayments.push(termsOfPaymentModel);\r\n });\r\n }\r\n\r\n self.PopulateCommissionReceivers = function (commissionReceivers) {\r\n if (commissionReceivers != undefined) {\r\n self.CommissionReceiversArray = commissionReceivers;\r\n self.CommissionReceivers([]);\r\n\r\n $.each(commissionReceivers,\r\n function(i, commissionReceiver) {\r\n if (commissionReceiver.CommissionReceiverId > 0) {\r\n var commissionReceiverModel = new AddressCommissionReceiverModel(self);\r\n commissionReceiverModel.PopulateCommissionReceiverModel(commissionReceiver);\r\n\r\n self.CommissionReceivers.push(commissionReceiverModel);\r\n }\r\n });\r\n }\r\n };\r\n\r\n self.DeleteDeliveryAddresses = function () {\r\n var token = $('input[name=\"__RequestVerificationToken\"]').val();\r\n\r\n $.post(ajaxUrls.account.DeleteDeliveryAddresses, { __RequestVerificationToken: token }, function (lastingAddressId) {\r\n self.Addresses.remove(function (item) { return item.AddressId() != lastingAddressId; });\r\n\r\n self.RefreshFilteredAddresses();\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n self.EditCreditData = function (address) {\r\n var creditData = new AddressCreditDataModel();\r\n creditData.GetBankAccountByAddressId(address.AddressId());\r\n\r\n self.CreditDataToEdit(creditData);\r\n self.OpenEditWindow(\"#EditCreditData\");\r\n };\r\n\r\n self.SelectAddress = function (address) {\r\n self.AddressInEditProgress(address);\r\n\r\n var addressToEdit = new AddressModel();\r\n \r\n addressToEdit.AddressId(address.AddressId());\r\n addressToEdit.FirstName(address.FirstName());\r\n addressToEdit.LastName(address.LastName());\r\n addressToEdit.City(address.City());\r\n addressToEdit.Company(address.Company());\r\n addressToEdit.Country(address.Country());\r\n addressToEdit.StateProvinceCode(address.StateProvinceCode());\r\n addressToEdit.CountryId(address.CountryId());\r\n addressToEdit.PhoneNumber(address.PhoneNumber());\r\n addressToEdit.Salutation(address.Salutation());\r\n addressToEdit.SalutationId(address.SalutationId());\r\n addressToEdit.Street(address.Street());\r\n addressToEdit.ZipCode(address.ZipCode());\r\n addressToEdit.DebitorNumber(address.DebitorNumber());\r\n addressToEdit.CMwSt(address.CMwSt());\r\n addressToEdit.SalutationId(address.SalutationId());\r\n addressToEdit.VatId(address.VatId());\r\n addressToEdit.Skonto(address.Skonto());\r\n addressToEdit.Email(address.Email());\r\n addressToEdit.IsPrivateCustomerAddress(address.IsPrivateCustomerAddress());\r\n addressToEdit.ShowVat(address.ShowVat());\r\n addressToEdit.IsStateProvinceCodeRequired(address.IsStateProvinceCodeRequired());\r\n addressToEdit.CommissionReceiver(address.CommissionReceiver());\r\n addressToEdit.CommissionReceiverId(address.CommissionReceiverId());\r\n\r\n self.attachAddressSubscribers(addressToEdit);\r\n\r\n self.AddressToEdit(addressToEdit);\r\n self.SaveChangeErrors([]);\r\n\r\n $('#EditAddress').removeClass(\"was-validated\");\r\n self.OpenEditWindow(\"#EditNewAddress\");\r\n ApplyToolTip();\r\n };\r\n\r\n self.DeleteAddress = function (address) {\r\n self.AddressToDelete(address);\r\n\r\n self.OpenEditWindow(\"#DeleteConfirmationWindow\", \"550px\");\r\n };\r\n\r\n self.AddNewAddress = function (address) {\r\n var newAddress = new AddressModel();\r\n newAddress.CountryId(self.DefaultCountryId());\r\n newAddress.IsPrivateCustomerAddress(self.IsPrivateCustomer());\r\n self.attachAddressSubscribers(newAddress);\r\n self.AddressToEdit(newAddress);\r\n self.SaveChangeErrors([]);\r\n\r\n $('#EditAddress').removeClass(\"was-validated\");\r\n self.OpenEditWindow(\"#EditNewAddress\"); \r\n ApplyToolTip();\r\n };\r\n \r\n function CloseEditWindow() {\r\n var Modal = shop.ts.modal.GetModalFromExisting();\r\n var modal = new Modal(\"#DeleteConfirmationWindow\");\r\n modal.close();\r\n }\r\n \r\n function ApplyToolTip(){\r\n if(userSettings.isProductOverviewBs4Enabled) {\r\n // only required for bs4 layout\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n });\r\n $(\"#EditNewAddress\").removeClass('was-validated');\r\n }\r\n }\r\n \r\n\r\n self.YesDelete = function () {\r\n $.get(self.DeleteUrl, { id: self.AddressToDelete().AddressId }, function () {\r\n self.Addresses.remove(self.AddressToDelete());\r\n self.RefreshFilteredAddresses();\r\n });\r\n\r\n CloseEditWindow();\r\n };\r\n \r\n self.NoDelete = function () {\r\n CloseEditWindow();\r\n };\r\n \r\n\r\n self.fadeOutAddress = function (elem) {\r\n if (elem.nodeType === 1) {\r\n $(elem).fadeOut(function () { $(elem).remove(); });\r\n }\r\n };\r\n\r\n self.SaveChanges = function () {\r\n self.isSubmitting(true);\r\n self.SaveChangeErrors([]);\r\n self.AddressToEdit().CommissionReceiver($('#SelectedOption').val());\r\n var json = ko.toJS(self.AddressToEdit);\r\n \r\n // validate address or if admin overview is shown no validation is required use\r\n if (isAdminOverview || self.AddressToEdit().validate()) {\r\n $.post(self.SaveUrl, json, function (result) {\r\n if (result.Success) {\r\n if (result.AddressId) {\r\n // Insert model\r\n self.AddressToEdit().AddressId(result.AddressId);\r\n self.Addresses.unshift(self.AddressToEdit());\r\n self.RefreshFilteredAddresses();\r\n } else {\r\n // Update model\r\n for (var i = 0; i < self.Addresses().length; i++) {\r\n if (self.Addresses()[i].AddressId() == self.AddressToEdit().AddressId()) {\r\n\r\n self.Addresses()[i].FirstName(self.AddressToEdit().FirstName());\r\n self.Addresses()[i].LastName(self.AddressToEdit().LastName());\r\n self.Addresses()[i].City(self.AddressToEdit().City());\r\n self.Addresses()[i].Company(self.AddressToEdit().Company());\r\n self.Addresses()[i].Country(self.AddressToEdit().Country());\r\n self.Addresses()[i].StateProvinceCode(self.AddressToEdit().StateProvinceCode());\r\n self.Addresses()[i].CountryId(self.AddressToEdit().CountryId());\r\n self.Addresses()[i].PhoneNumber(self.AddressToEdit().PhoneNumber());\r\n self.Addresses()[i].Salutation(self.AddressToEdit().Salutation());\r\n self.Addresses()[i].SalutationId(self.AddressToEdit().SalutationId());\r\n self.Addresses()[i].Street(self.AddressToEdit().Street());\r\n self.Addresses()[i].ZipCode(self.AddressToEdit().ZipCode());\r\n self.Addresses()[i].DebitorNumber(self.AddressToEdit().DebitorNumber());\r\n self.Addresses()[i].CMwSt(self.AddressToEdit().CMwSt());\r\n self.Addresses()[i].Email(self.AddressToEdit().Email());\r\n self.Addresses()[i].VatId(self.AddressToEdit().VatId());\r\n self.Addresses()[i].CommissionReceiver(self.AddressToEdit().CommissionReceiver());\r\n self.Addresses()[i].CommissionReceiverId(self.AddressToEdit().CommissionReceiverId());\r\n self.RefreshFilteredAddresses();\r\n }\r\n }\r\n }\r\n CloseEditWindow();\r\n } else {\r\n self.SaveChangeErrors(result.Errors);\r\n self.isSubmitting(false);\r\n }\r\n });\r\n }\r\n };\r\n\r\n self.SaveCreditDataChanges = function () {\r\n $(\"#BankAccountIndicator\")\r\n .removeClass(\"ValidIcon\")\r\n .removeClass(\"ErrorIcon\")\r\n .addClass(\"Loading\");\r\n\r\n $(\"#BankAccountIndicator\").show();\r\n $(\"#BankAccountIndicator\").css('display', 'inline-block');\r\n\r\n self.CreditDataToEdit().SaveBankAccount(function () {\r\n $(\"#BankAccountIndicator\").removeClass(\"Loading\").addClass(\"ValidIcon\");\r\n $(\"#BankAccountIndicator\").css('display', 'inline-block');\r\n }, function() {\r\n $(\"#BankAccountIndicator\").removeClass(\"Loading\").addClass(\"ErrorIcon\");\r\n $(\"#BankAccountIndicator\").css('display', 'inline-block');\r\n });\r\n };\r\n\r\n self.OpenEditWindow = function (id, width) {\r\n width = typeof width === 'undefined' ? \"900px\" : width;\r\n var title;\r\n var popoverHeading = $(id).children(\".popover-heading\");\r\n if (popoverHeading.length === 1) {\r\n title = popoverHeading.html();\r\n }\r\n var Modal = shop.ts.modal.GetModal();\r\n var modal = new Modal(id, {\r\n width: width,\r\n title: title\r\n });\r\n modal.open();\r\n };\r\n\r\n self.RefreshFilteredAddresses = function (forcedSearchKey) {\r\n if (forcedSearchKey) {\r\n self.AddressFilterKey(forcedSearchKey);\r\n }\r\n else {\r\n var bak = self.AddressFilterKey();\r\n self.AddressFilterKey(-1); //force refiltering\r\n self.AddressFilterKey(bak);\r\n }\r\n location.reload();\r\n };\r\n\r\n self.FilteredAddresses = ko.computed(function () {\r\n if (self.AddressFilterKey().length > 0) {\r\n var results = self.Addresses().filter(function(address) {\r\n var searchTermLowerCase = self.AddressFilterKey().toLowerCase();\r\n return (address.Company().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (address.FirstName().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (address.LastName().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (address.Street().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (address.City().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (address.ZipCode().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (address.PhoneNumber().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (address.Country().toLowerCase().indexOf(searchTermLowerCase) > -1) ||\r\n (String(address.DebitorNumber()) === searchTermLowerCase);\r\n });\r\n return results.filter(function (e, i) { return i < 100; });\r\n }\r\n return self.Addresses().filter(function (e, i) { return i < 100; });\r\n }).extend({throttle: 500});\r\n\r\n self.attachAddressSubscribers = function(address) {\r\n address.SalutationId.subscribe(function(val) {\r\n address.Salutation($(\"#SalutationId option:selected\").text());\r\n }, address);\r\n\r\n address.CountryId.subscribe(function(val) {\r\n address.Country($(\"#CountryIds option:selected\").text());\r\n\r\n if (countryHasStateProvinceCode(val)) {\r\n address.IsStateProvinceCodeRequired(true);\r\n } else {\r\n address.IsStateProvinceCodeRequired(false);\r\n }\r\n\r\n $.ajax({\r\n type: \"GET\",\r\n url: ajaxUrls.area.ajax.country.IsEuCountry,\r\n data: { id: val }\r\n }).done(function (isEu) {\r\n address.ShowVat(isEu);\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n }, address);\r\n };\r\n};\r\n\r\nvar AddressCommissionReceiverModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n // base data\r\n that.CommissionReceiverId = ko.observable();\r\n that.Name = ko.observable();\r\n\r\n // sub data\r\n that.CommissionReceiverTypes = ko.observableArray([]);\r\n\r\n // functions\r\n that.PopulateCommissionReceiverModel = function(commissionReceiverData) {\r\n that.CommissionReceiverId(commissionReceiverData.CommissionReceiverId);\r\n that.Name(commissionReceiverData.Name);\r\n };\r\n};\r\n\r\nvar AddressSalutationModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.CountryId = ko.observable();\r\n that.CountryName = ko.observable();\r\n\r\n //functions\r\n that.PopulateSalutationModel = function (salutationData) {\r\n that.CountryId(salutationData.SalutationId);\r\n that.CountryName(salutationData.SalutationName);\r\n };\r\n};\r\n\r\nvar AddressCountryModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.CountryId = ko.observable();\r\n that.CountryName = ko.observable();\r\n that.ISO = ko.observable();\r\n that.IsEU = ko.observable(false);\r\n that.DeliveryOptionIds = ko.observableArray([]);\r\n\r\n //functions\r\n that.PopulateCountryModel = function (countryData) {\r\n that.CountryId(countryData.CountryId);\r\n that.CountryName(countryData.Name);\r\n that.ISO(countryData.ISO);\r\n that.IsEU(countryData.IsEU);\r\n that.DeliveryOptionIds(countryData.DeliveryOptionIds);\r\n };\r\n};\r\n\r\nconst TermsOfPaymentModel = function (pageModelHndl) {\r\n const that = this;\r\n\r\n that.TermsOfPaymentId = ko.observable();\r\n that.Name = ko.observable();\r\n\r\n that.PopulateTermsOfPaymentModel = function (data) {\r\n that.TermsOfPaymentId(data.TermsOfPaymentId);\r\n that.Name(data.Name);\r\n }\r\n}","$(document).ready(function () {\r\n var isSafari = !!navigator.userAgent.match(/Version\\/[\\d\\.]+.*Safari/);\r\n var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n\r\n if (isSafari || iOS) {\r\n $(\".positionEditBtn\").click(function () {\r\n var orderPositionNr = $(this).data(\"positionnr\");\r\n SetOrderPositionNrToEdit(orderPositionNr);\r\n });\r\n\r\n var orderPositionNr = GetOrderPositionNrToEdit();\r\n\r\n if (orderPositionNr) {\r\n var fragment = GetOrderPositionToEditFragment(orderPositionNr);\r\n RemoveOrderPositionNrToEdit();\r\n AddFragmentToCurrentUrl(fragment);\r\n }\r\n }\r\n\r\n function SetOrderPositionNrToEdit(orderPositionNr) {\r\n localStorage.setItem(\"orderPositionNrToEdit\", orderPositionNr);\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n function GetOrderPositionNrToEdit() {\r\n return localStorage.getItem(\"orderPositionNrToEdit\");\r\n }\r\n\r\n function RemoveOrderPositionNrToEdit() {\r\n localStorage.removeItem(\"orderPositionNrToEdit\");\r\n }\r\n\r\n function AddFragmentToCurrentUrl(fragment) {\r\n window.location.hash = fragment;\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n function GetOrderPositionToEditFragment(orderPositionNr) {\r\n return \"/edit/\" + orderPositionNr;\r\n }\r\n\r\n\r\n});","var AdditionalWorkModelV2 = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.IsLoading = ko.observable(false);\r\n that.IsDependencyLoading = ko.computed(function () {\r\n return pageModelHndl.pPriceTableModelV2.IsLoading()\r\n || pageModelHndl.pPriceTableModelV2.IsDependencyLoading();\r\n }, this, {pure: true});\r\n\r\n that.SelectedAdditionalWork = ko.observableArray([]);\r\n\r\n var getAdditionalWork = function (array, additionalWorkId) {\r\n for (var i = 0, length = array.length; i < length; i++) {\r\n if (array[i] === additionalWorkId) {\r\n return array[i];\r\n }\r\n }\r\n };\r\n\r\n that.addSelectedAdditionalWork = function (additionalWorkId) {\r\n if (that.SelectedAdditionalWork().length > 0) {\r\n var result = getAdditionalWork(that.SelectedAdditionalWork(), additionalWorkId);\r\n if (result) {\r\n that.SelectedAdditionalWork.remove(result);\r\n return;\r\n }\r\n }\r\n that.SelectedAdditionalWork.push(additionalWorkId);\r\n };\r\n\r\n var updateOrderAdditionalWorkOptions = function (input) {\r\n var url = $(\"#productConfigurationAdditionalWork\").data(\"url\");\r\n\r\n that.IsLoading(true);\r\n return $.ajax({\r\n type: \"POST\",\r\n contentType: \"application/json\",\r\n url: url,\r\n data: input,\r\n datatype: \"html\"\r\n }).done(function (result) {\r\n $(\"#additionalWorkContainer\").html(result);\r\n }).fail(function () {\r\n alerts.error();\r\n }).always(function () {\r\n that.IsLoading(false);\r\n });\r\n };\r\n\r\n that.LoadAdditionalWorkData = function () {\r\n var input = JSON.stringify({\r\n selectedOrderOptions: pageModelHndl.pOrderOptionsModelV2.SelectedOrderOptions(),\r\n selectedDeliveryCountry: pageModelHndl.pOrderOptionsModelV2.SelectedDeliveryCountryId(),\r\n articlereference: pageModelHndl.pPriceTableModelV2.ArticleReference(),\r\n amount: pageModelHndl.pPriceTableModelV2.Amount(),\r\n isCatalogueProduct: pageModelHndl.IsCatalogueProduct(),\r\n selectedAdditionalWorkIds: that.SelectedAdditionalWork()\r\n });\r\n\r\n return updateOrderAdditionalWorkOptions(input);\r\n };\r\n\r\n var updateConfigurationSummary = function () {\r\n return pageModelHndl.pSummaryModel.load(\r\n pageModelHndl.pPriceTableModelV2.ArticleReference(),\r\n pageModelHndl.pPriceTableModelV2.Amount(),\r\n pageModelHndl.pOrderOptionsModelV2.SelectedOrderOptions(),\r\n pageModelHndl.pOrderOptionsModelV2.SelectedDeliveryCountryId(),\r\n that.SelectedAdditionalWork());\r\n };\r\n\r\n $(function () {\r\n var contextElement = $(\"#productConfigurationMainDiv\");\r\n contextElement.on(\"click\", \".OrderOptionList .additional-work-click input\",\r\n function () {\r\n var additionalWorkId = $(this).parent().parent().data(\"additionalworkid\");\r\n that.addSelectedAdditionalWork(additionalWorkId, $(this).val());\r\n updateConfigurationSummary();\r\n });\r\n });\r\n\r\n $(function () {\r\n var contextElement = $(\"#productConfigurationMainDiv\");\r\n contextElement.on(\"click\", \".additional-work-click label\",\r\n function () {\r\n var additionalWorkId = $(this).parent().data(\"additionalworkid\");\r\n that.addSelectedAdditionalWork(additionalWorkId, $(this).val());\r\n that.SyncCheckbox(additionalWorkId);\r\n updateConfigurationSummary();\r\n });\r\n });\r\n\r\n that.SyncCheckbox = function (additionalWorkId) {\r\n var el = $(\".additional-work-click[data-additionalWorkId='\" + additionalWorkId + \"'] :input\");\r\n if (el.prop(\"checked\")) {\r\n el.prop(\"checked\", false);\r\n } else {\r\n el.prop(\"checked\", true);\r\n }\r\n }\r\n}","/// \r\n/// \r\n\r\nvar customFormatObjectValueId = 11859;\r\n\r\nvar AttributeCustomFormatModel = function (pageModelHndl, attributeModelHndl) {\r\n var that = this;\r\n \r\n that.MinLength = ko.observable(10);\r\n that.MaxLength = ko.observable(400);\r\n \r\n that.MinWidth = ko.observable(10);\r\n that.MaxWidth = ko.observable(300);\r\n\r\n that.Length = ko.observable(0).extend({\r\n required: true,\r\n\r\n validation: {\r\n validator: function(currentValue) {\r\n return isInteger(currentValue) && \r\n that.MinLength() <= currentValue && \r\n currentValue <= that.MaxLength();\r\n }\r\n }\r\n });\r\n that.IsLengthModified = ko.observable(false);\r\n \r\n that.Width = ko.observable(0).extend({\r\n required: true, \r\n\r\n validation: {\r\n validator: function(currentValue) {\r\n return isInteger(currentValue) &&\r\n that.MinWidth() <= currentValue &&\r\n currentValue <= that.MaxWidth();\r\n }\r\n }\r\n }, that);\r\n that.IsWidthModified = ko.observable(false);\r\n\r\n that.IsCustomFormatOptionAvailable = ko.computed(function() {\r\n return attributeModelHndl.ObjectValues().some(function(objectValue) {\r\n return objectValue.ObjectValueId() === customFormatObjectValueId;\r\n });\r\n });\r\n \r\n that.LengthIsValid = ko.computed(function() {\r\n if (that.IsCustomFormatOptionAvailable() && that.IsCustomFormatSelected()) {\r\n that.Length.validate(that.Length());\r\n if (!that.Length.hasError()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }, that);\r\n \r\n that.WidthIsValid = ko.computed(function() {\r\n if (that.IsCustomFormatOptionAvailable() && that.IsCustomFormatSelected()) {\r\n that.Width.validate(that.Width());\r\n if (!that.Width.hasError()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n \r\n that.UpdateMinAndMax = function (productModel) {\r\n that.MinLength(productModel.CustomFormatLengthMin());\r\n that.MaxLength(productModel.CustomFormatLengthMax());\r\n\r\n that.MinWidth(productModel.CustomFormatWidthMin());\r\n that.MaxWidth(productModel.CustomFormatWidthMax());\r\n }\r\n\r\n that.IsCustomFormatSelected = ko.observable(false);\r\n that.CustomLengthCmText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { minimumFractionDigits: 1 }).format(that.Length() / 10) + \"\";\r\n });\r\n that.CustomWidthCmText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { minimumFractionDigits: 1 }).format(that.Width() / 10) + \"\";\r\n });\r\n\r\n that.CustomLengthMinText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { maximumFractionDigits: 0 }).format(that.MinLength()) + \"\";\r\n });\r\n\r\n that.CustomLengthMaxText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { maximumFractionDigits: 0 }).format(that.MaxLength()) + \"\";\r\n });\r\n \r\n that.CustomWidthMinText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { maximumFractionDigits: 0 }).format(that.MinWidth()) + \"\";\r\n });\r\n\r\n that.CustomWidthMaxText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { maximumFractionDigits: 0 }).format(that.MaxWidth()) + \"\";\r\n });\r\n\r\n var pushCustomFormat = function (newValue) {\r\n var productConfigurationFilterItem = new ProductConfigurationFilterItem(attributeModelHndl);\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues.push(productConfigurationFilterItem);\r\n };\r\n \r\n\r\n that.Length.subscribe(function (newValue) {\r\n pushCustomFormat(newValue);\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n that.IsLengthModified(true);\r\n });\r\n \r\n that.Width.subscribe(function (newValue) {\r\n pushCustomFormat(newValue);\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n that.IsWidthModified(true);\r\n });\r\n \r\n function isInteger(value) {\r\n return value % 1 === 0;\r\n }\r\n};\r\n","/// \r\n/// \r\n\r\nvar materialId = 207;\r\nvar longSideId = 210;\r\nvar shortSideId = 211;\r\nvar widthId = 213;\r\nvar heightId = 214;\r\n\r\nvar customValueDefaultMin = 100;\r\nvar customValueDefaultMax = 10000;\r\n\r\nvar AttributeCustomValueModel = function (pageModelHndl, attributeModelHndl) {\r\n var that = this;\r\n\r\n that.lookUpAttributeId = materialId;\r\n\r\n that.CustomValueAttributeIds = [\r\n longSideId,\r\n shortSideId,\r\n widthId,\r\n heightId \r\n ];\r\n\r\n that.IsCustomValueOptionAvailable = ko.computed(function () {\r\n return that.CustomValueAttributeIds.some(function (itemAttributeId) {\r\n var attributeId = getAttributeId();\r\n return attributeId === itemAttributeId;\r\n });\r\n });\r\n\r\n that.IsCustomValueOptionEnabled = ko.computed(function () {\r\n var productModel = getProductModel();\r\n var attribute = getAttributeById(productModel, materialId);\r\n\r\n if (!attribute) {\r\n return false;\r\n }\r\n return attribute.SelectedObjectValueId() || false;\r\n });\r\n\r\n that.keyDownCallback = function(data, event) {\r\n //When another key as the tab key was pressed or tab was pressed together with a modifier, we don't handle this -> OK\r\n if (event.keyCode !== \"\\t\".charCodeAt(0) || event.shiftKey || event.altKey || event.ctrlKey) {\r\n return true;\r\n }\r\n var productModel = getProductModel();\r\n //When the ProductModel is already valid, some field below the product configuration should be visible and tab would set the focus to this field -> OK\r\n if (productModel.IsProductModelValid()) {\r\n return true;\r\n }\r\n var attributes = productModel.Attributes();\r\n var currentAttributeIndex = attributes.indexOf(attributeModelHndl);\r\n //There is at least one more attribute below the current one and the current one is already successfully validated, so that the field below is\r\n // displayed (default view mode) or the expert mode is selected (in which case the field below is always displayed), so tab would set the focus to this\r\n //field -> OK\r\n if (currentAttributeIndex < attributes.length - 1 && (attributes[currentAttributeIndex].IsValid() || pageModelHndl.pProductContentModeModel.IsExpertModeSelected())) {\r\n return true;\r\n }\r\n //We are either in the last attribute and the ProductModel is not yet valid or in an attribute before the last one but it is not yet valid\r\n //-> block the tab key (by returning false) and trigger a change event to validate the current attribute\r\n event.target.dispatchEvent(new Event('change'));\r\n return false;\r\n };\r\n\r\n var isDominantCustomValueAttribute = function (attributeId) {\r\n return attributeId === longSideId || attributeId === widthId;\r\n };\r\n\r\n var getDominantAttributeId = function () {\r\n var attributes = [\r\n longSideId,\r\n widthId\r\n ];\r\n\r\n var firstMatchingAttributeId = attributes.find(function (attributeId) {\r\n var productModel = getProductModel();\r\n return getAttributeById(productModel, attributeId) || false;\r\n });\r\n\r\n return firstMatchingAttributeId;\r\n };\r\n\r\n var isLessThanDominantAttributeValue = function (sourceValue) {\r\n var attributeId = getAttributeId();\r\n var dominantCustomValueAttribute = isDominantCustomValueAttribute(attributeId);\r\n if (dominantCustomValueAttribute) {\r\n // no validation required for dominant attribute.\r\n // we want to show the error on the non-dominant attribute\r\n return true;\r\n }\r\n\r\n var dominantAttributeId = getDominantAttributeId();\r\n if (!dominantAttributeId) {\r\n // no dominant attribute found, we good here\r\n return true;\r\n }\r\n\r\n console.info(\"found dominant attributeId \", dominantAttributeId);\r\n\r\n var productModel = getProductModel();\r\n var domninantAttribute = getAttributeById(productModel, dominantAttributeId);\r\n var dominantAttributeValue = domninantAttribute.CustomValue.CustomValue();\r\n return parseInt(sourceValue) <= parseInt(dominantAttributeValue);\r\n };\r\n \r\n var isInteger = function(value) {\r\n return value % 1 === 0;\r\n }\r\n\r\n that.clickSwitchValues = function() {\r\n var dominantAttributeId = getDominantAttributeId();\r\n if (!dominantAttributeId) {\r\n // no dominant attribute found, we good here\r\n return;\r\n }\r\n\r\n console.info(\"found dominant attributeId \", dominantAttributeId);\r\n\r\n var productModel = getProductModel();\r\n var domninantAttribute = getAttributeById(productModel, dominantAttributeId);\r\n var dominantAttributeValue = domninantAttribute.CustomValue.CustomValue();\r\n\r\n // switch values\r\n domninantAttribute.CustomValue.CustomValue(that.CustomValue());\r\n that.CustomValue(dominantAttributeValue);\r\n };\r\n\r\n that.IsCustomValueOptionSelected = ko.observable(false);\r\n that.CustomValueMin = ko.observable(customValueDefaultMin); // value in mm\r\n that.CustomValueMax = ko.observable(customValueDefaultMax); // value in mm\r\n that.CustomValue = ko.observable(0).extend({\r\n throttle: 500,\r\n required: true,\r\n min: that.CustomValueMin,\r\n max: that.CustomValueMax,\r\n\r\n validation: {\r\n validator: function (currentValue) {\r\n return isInteger(currentValue) && isLessThanDominantAttributeValue(currentValue);\r\n }\r\n }\r\n }); // value in mm\r\n\r\n that.HasErrorIsLessThanDominantAttributeValue = ko.computed(function() {\r\n return !isLessThanDominantAttributeValue(that.CustomValue());\r\n }, that);\r\n \r\n that.HasInvalidNumber = ko.computed(function() {\r\n return !isInteger(that.CustomValue());\r\n }, that);\r\n\r\n that.IsValid = ko.computed(function() {\r\n if (that.IsCustomValueOptionAvailable() && that.IsCustomValueOptionSelected()) {\r\n that.CustomValue.validate(that.CustomValue());\r\n if (!that.CustomValue.hasError()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n that);\r\n\r\n that.CustomValueMinText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { maximumFractionDigits: 0 }).format(that.CustomValueMin()) + \"\";\r\n });\r\n\r\n that.CustomValueMaxText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { maximumFractionDigits: 0 }).format(that.CustomValueMax()) + \"\";\r\n });\r\n\r\n that.CustomValueCmText = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { minimumFractionDigits: 1 }).format(that.CustomValue() / 10) + \"\";\r\n });\r\n\r\n that.IsCustomValueOptionSelected.subscribe(function (newValue) {\r\n if (newValue == \"true\") {\r\n console.log(\"set SelectedObjectValueId to null\");\r\n that.SelectedObjectValueId(undefined);\r\n }\r\n });\r\n\r\n var pushCustomValue = function (newValue) {\r\n var productConfigurationFilterItem = new ProductConfigurationFilterItem(attributeModelHndl);\r\n console.log(\"pushing customValue \", productConfigurationFilterItem, \" to stack\");\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues.push(productConfigurationFilterItem);\r\n };\r\n\r\n that.CustomValue.subscribe(function (newValue) {\r\n that.IsCustomValueOptionSelected(true);\r\n\r\n pushCustomValue(newValue);\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n });\r\n\r\n var applyCustomValue = function (customValueProperty) {\r\n var attributeId = customValueProperty.AttributeId;\r\n var min = customValueProperty.Min;\r\n var max = customValueProperty.Max;\r\n\r\n var productModel = getProductModel();\r\n var attribute = getAttributeById(productModel, attributeId);\r\n if (!attribute) {\r\n console.info(\"found customValue but didnt find matching attribute with id \",\r\n attributeId);\r\n return;\r\n }\r\n\r\n attribute.CustomValue.CustomValueMin(min);\r\n attribute.CustomValue.CustomValueMax(max);\r\n\r\n console.log(\"applied customValue to attributeId \", attributeId, \"min \", min, \"max \", max);\r\n };\r\n\r\n that.applyCustomValues = function (customValueProperties) {\r\n for (var i = 0; i < customValueProperties.length; i++) {\r\n var customValueProperty = customValueProperties[i];\r\n applyCustomValue(customValueProperty);\r\n }\r\n\r\n };\r\n\r\n function getAttributeId() {\r\n return attributeModelHndl.AttributeId();\r\n }\r\n\r\n function getProductModel() {\r\n return pageModelHndl.pProductModel;\r\n }\r\n\r\n function getAttributeById(productModel, attributeId) {\r\n var attributes = productModel.Attributes();\r\n\r\n var filtered = attributes.filter(function (item) {\r\n return item.AttributeId() === attributeId;\r\n });\r\n\r\n var isEmpty = filtered.length === 0;\r\n if (isEmpty) {\r\n return null;\r\n }\r\n\r\n var lookupAttribute = filtered[0];\r\n return lookupAttribute;\r\n }\r\n};\r\n","/// \r\n/// \r\n/// \r\n/// \r\nvar noCoverObjectValueId = 10656;\r\nvar noCoverObjectValueV3Id = 11698;\r\nvar individualFormatObjectValueId = 11859;\r\nvar extentId = 202;\r\nvar extentV3Id = 218;\r\n\r\nvar AttributeModel = function (pageModelHndl, parentHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.AttributeId = ko.observable();\r\n that.LocalizationKey = ko.observable();\r\n that.Description = ko.observable();\r\n that.ObjectValues = ko.observableArray([]);\r\n that._BeginnerObjectValues = ko.observableArray([]);\r\n that.DisplayColumns = ko.observable();\r\n that.IsExtension = ko.observable(parentHndl instanceof ExtensionModel);\r\n that.CustomValue = new AttributeCustomValueModel(pageModelHndl, that);\r\n that.CustomFormat = new AttributeCustomFormatModel(pageModelHndl, that);\r\n that.DefaultObjectValueId = ko.observable();\r\n\r\n //subData\r\n that.InnerLastSelected = ko.observable(-1);\r\n that.SelectedObjectValueId = ko.observable();\r\n that.SelectedObjectValue = ko.computed(function () {\r\n var attribute = that;\r\n var selectedObjectValueId = that.SelectedObjectValueId();\r\n return getObjectValue(attribute, selectedObjectValueId);\r\n }, this);\r\n\r\n that.IsCorrectionMode = ko.observable(false);\r\n that.ClickToggleCorrectionMode = function () {\r\n var isCorrectionMode = that.IsCorrectionMode();\r\n that.IsCorrectionMode(!isCorrectionMode);\r\n };\r\n\r\n that.PreviousAttributeHasValidValue = ko.computed(function () {\r\n var productModel = pageModelHndl.pProductModel;\r\n var attributes = productModel.Attributes();\r\n var index = attributes.indexOf(that);\r\n\r\n var previousIndex = index - 1;\r\n if (previousIndex < 0) {\r\n return true;\r\n }\r\n\r\n var previousAttribute = attributes[previousIndex];\r\n\r\n return previousAttribute.IsValid();\r\n }, that);\r\n\r\n that.IsValueStatic = ko.observable(false);\r\n that.IsValid = ko.computed(function () {\r\n var isValid = true;\r\n\r\n if (that.CustomValue.IsCustomValueOptionAvailable()) {\r\n\t return that.CustomValue.IsValid();\r\n }\r\n \r\n if(that.CustomFormat.IsCustomFormatOptionAvailable() && that.CustomFormat.IsCustomFormatSelected()) {\r\n console.log(\"custom format selected\");\r\n return that.CustomFormat.LengthIsValid() && that.CustomFormat.WidthIsValid();\r\n }\r\n\r\n for (var i = 0; i < that.ObjectValues().length; i++) {\r\n if (that.ObjectValues()[i].HasError()) {\r\n isValid = false;\r\n }\r\n }\r\n if (that.SelectedObjectValueId() === undefined) {\r\n isValid = false;\r\n }\r\n return isValid;\r\n }, that);\r\n\r\n that.IsVisible = ko.computed(function () {\r\n return !that.IsValueStatic();\r\n }, that);\r\n\r\n that.SetSelectedAttribute = function (Attribute, e) {\r\n // Remember Selected Attribute\r\n pageModelHndl.pProductModel.SelectedAttribute = Attribute;\r\n\r\n // check input visually\r\n var selectedValue = $(e.currentTarget).find('input:checked').val();\r\n\r\n // write value into model to keep everything in sync\r\n if (selectedValue) {\r\n that.SelectedObjectValueId(selectedValue);\r\n }\r\n return true;\r\n };\r\n\r\n that.GetSelectableValueIds = function () {\r\n var selectableIds = [];\r\n $.each(that.ObjectValues(), function (index, item) {\r\n if (item.IsEnabled()) {\r\n selectableIds.push(item.ObjectValueId());\r\n }\r\n });\r\n return selectableIds;\r\n };\r\n\r\n //subscriptions \r\n that.SelectedObjectValueId.subscribe(function (newValueId) { \r\n if (!pageModelHndl.IsProductModelPopulated()) {\r\n return;\r\n }\r\n\r\n if (newValueId) {\r\n // disable custom value selection\r\n that.CustomValue.IsCustomValueOptionSelected(false);\r\n }\r\n \r\n if (that.IsExtension()) {\r\n // Disables Extension configuration when no cover is selected\r\n parentHndl.IsDisabled(newValueId === noCoverObjectValueId || newValueId === noCoverObjectValueV3Id);\r\n }\r\n \r\n that.CustomFormat.IsCustomFormatSelected(newValueId === individualFormatObjectValueId);\r\n \r\n if (newValueId === undefined &&\r\n pageModelHndl.pProductContentModeModel.SelectedModeId() === 'MODE_0') {\r\n\r\n parentHndl.LastSelectedObjectValue(-1);\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n } else if (newValueId !== undefined && pageModelHndl.pProductModel.LastSelectedObjectValue() !== undefined\r\n && newValueId.toString() !== (pageModelHndl.pProductModel.LastSelectedObjectValue()).toString()) {\r\n if (!(pageModelHndl.pProductModel.IsProductModelRePopulating() && !(parentHndl.IsExtension()))) {\r\n pageModelHndl.pProductModel.LastSelectedObjectValue(-1);\r\n\r\n $.each(pageModelHndl.pProductModel.Extensions(), function (i, ext) {\r\n ext.LastSelectedObjectValue(-1);\r\n });\r\n\r\n var productConfigurationFilterItem = new ProductConfigurationFilterItem(that);\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues.push(productConfigurationFilterItem);\r\n\r\n parentHndl.LastSelectedObjectValue(newValueId);\r\n\r\n if (pageModelHndl.pProductContentModeModel.SelectedModeId() === \"MODE_0\") {\r\n if (newValueId.toString() !== (that.InnerLastSelected()).toString()) {\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n }\r\n that.InnerLastSelected(-1);\r\n }\r\n else {\r\n that.InnerLastSelected(newValueId.toString());\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n }\r\n\r\n that.IsCorrectionMode(false);\r\n }\r\n }\r\n });\r\n\r\n that.SelectedObjectValue.subscribe(function (objectValue) {\r\n var attributeId = that.AttributeId();\r\n\r\n // should be only material attribute for now\r\n var isLookupAttribute = attributeId === that.CustomValue.lookUpAttributeId;\r\n if (!isLookupAttribute) {\r\n return;\r\n }\r\n\r\n var customValueProperties = objectValue.CustomValueProperties;\r\n console.log(\"selected objectValue \", objectValue, \" has \", customValueProperties.length, \" custom values\", customValueProperties);\r\n var hasCustomValues = customValueProperties.length > 0;\r\n // we could toggle the feature here, depending on selected material\r\n //that.IsCustomValueOptionAvailable(hasCustomValues);\r\n\r\n if (!hasCustomValues) {\r\n return;\r\n }\r\n\r\n that.CustomValue.applyCustomValues(customValueProperties);\r\n });\r\n\r\n //functions\r\n that.UpdateForBeginnerMode = function () {\r\n that._BeginnerObjectValues(that.ObjectValues.slice(0));\r\n if (pageModelHndl.IsProductModelPopulated()) {\r\n $.each(that.ObjectValues(), function (i, objVal) {\r\n if (objVal.HasError() || !objVal.IsEnabled()) {\r\n that._BeginnerObjectValues.remove(objVal);\r\n }\r\n });\r\n }\r\n };\r\n\r\n that.SetBeginnerValueEnabled = function(option, item) {\r\n ko.applyBindingsToNode(option, { css: { nonExistantSelectedValue: item ? item.HasError() : false }, disable: item && that._BeginnerObjectValues.indexOf(item) === -1 }, item);\r\n };\r\n\r\n that.GetOptionText = function(item) {\r\n return item.LocalizationKey().replace(/<[^>]*>/g, '');\r\n };\r\n\r\n that.PopulateAttributeModel = function (attributeData) {\r\n console.log(\"populate attribute \", attributeData);\r\n\r\n that.AttributeId(attributeData.ObjectAttributeId);\r\n that.DisplayColumns(attributeData.DisplayColumns);\r\n that.LocalizationKey(attributeData.LocalizationKey);\r\n that.Description(attributeData.Description);\r\n that.DefaultObjectValueId(attributeData.DefaultObjectValueId);\r\n that.PopulateObjectValues(attributeData.ObjectValues);\r\n\r\n that.CustomValue.IsCustomValueOptionSelected(that.CustomValue.IsCustomValueOptionAvailable());\r\n };\r\n \r\n that.PopulateDefaultObjectValue = function() {\r\n var selectedValues = pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues().filter( function(element) {\r\n return element.AttributeId === that.AttributeId() && element.IsExtension === that.IsExtension();\r\n });\r\n \r\n if(that.DefaultObjectValueId() && selectedValues.length === 0) {\r\n \r\n that.SelectedObjectValueId(that.DefaultObjectValueId());\r\n\r\n var productConfigurationFilterItem = new ProductConfigurationFilterItem(that);\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues\r\n .push(productConfigurationFilterItem);\r\n\r\n if (that.IsExtension() && (that.AttributeId() === extentId || that.AttributeId() === extentV3Id)) {\r\n // Disables Extension configuration when no cover is selected\r\n parentHndl.IsDisabled(that.DefaultObjectValueId() === noCoverObjectValueId || that.DefaultObjectValueId() === noCoverObjectValueV3Id);\r\n }\r\n }\r\n }\r\n\r\n that.RePopulateAttributeModel = function (selectedValueIds) {\r\n var success = false;\r\n\r\n $.each(that.ObjectValues(), function (i, obj) {\r\n if ($.inArray(obj.ObjectValueId(), selectedValueIds) > -1) {\r\n that.SelectedObjectValueId(obj.ObjectValueId());\r\n that.InnerLastSelected(obj.ObjectValueId());\r\n that.IsCorrectionMode(false);\r\n success = true;\r\n }\r\n\r\n var isLastItem = i === (that.ObjectValues()).length - 1;\r\n if (isLastItem) {\r\n if (!success) {\r\n that.SelectedObjectValueId(undefined);\r\n }\r\n }\r\n });\r\n };\r\n\r\n that.UpdateAttributeModel = function (selectableValueIds, IsExtension) {\r\n if (!selectableValueIds || selectableValueIds.length === 0) {\r\n //nothing to do here\r\n return;\r\n }\r\n\r\n $.each(that.ObjectValues(), function (i, obj) {\r\n var inSelectedValueList = $.inArray(obj.ObjectValueId(), selectableValueIds) > -1;\r\n\r\n obj.HasError(false);\r\n obj.IsEnabled(inSelectedValueList);\r\n\r\n var radioBox = $(\"input[value=\" + obj.ObjectValueId() + ']');\r\n\r\n var checkedState = radioBox.is(':checked');\r\n\r\n if (that.SelectedObjectValueId() &&\r\n that.SelectedObjectValueId() === obj.ObjectValueId() &&\r\n $.inArray(obj.ObjectValueId(), selectableValueIds) === -1 && checkedState && !obj.IsEnabled()) {\r\n\r\n removeFromSelectedAttributeAndExtensionValues(obj.ParentAttribute().AttributeId(), obj.ParentAttribute().IsExtension());\r\n obj.HasError(true);\r\n radioBox.prop(\"checked\", false);\r\n that.SelectedObjectValueId(undefined);\r\n pageModelHndl.pProductModel.LastSelectedObjectValue(-1);\r\n }\r\n });\r\n };\r\n\r\n that.PopulateObjectValues = function (objectValuesData) {\r\n that.ObjectValues([]);\r\n\r\n $.each(objectValuesData, function (i, obj) {\r\n var objectValueModel = new ObjectValueModel(pageModelHndl, that);\r\n objectValueModel.PopulateObjectValueModel(obj);\r\n\r\n that.ObjectValues.push(objectValueModel);\r\n that._BeginnerObjectValues.push(objectValueModel);\r\n\r\n var isLastItem = i === (objectValuesData.length - 1);\r\n if (isLastItem) {\r\n\r\n // pre select object value if there is only 1\r\n if (objectValuesData.length === 1) {\r\n var id = objectValuesData[0].ObjectValueId;\r\n that.SelectedObjectValueId(id);\r\n\r\n var productConfigurationFilterItem = new ProductConfigurationFilterItem(that);\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues\r\n .push(productConfigurationFilterItem);\r\n }\r\n }\r\n });\r\n };\r\n\r\n function getObjectValue(attribute, objectValueId) {\r\n var objectValues = attribute.ObjectValues();\r\n\r\n var filtered = objectValues.filter(function (item) {\r\n return item.ObjectValueId() === objectValueId;\r\n });\r\n\r\n var isEmpty = filtered.length === 0;\r\n if (isEmpty) {\r\n return null;\r\n }\r\n\r\n var selectedObjectValue = filtered[0];\r\n return selectedObjectValue;\r\n }\r\n\r\n function removeFromSelectedAttributeAndExtensionValues(attributeId, isExtension) {\r\n var elementsToRemove = pageModelHndl.pProductModel\r\n .SelectedAttributeAndExtensionValues().filter(function(el) {\r\n return el.AttributeId === attributeId && el.IsExtension === isExtension;\r\n });\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues(pageModelHndl.pProductModel\r\n .SelectedAttributeAndExtensionValues().filter(function(el) {\r\n return elementsToRemove.indexOf(el) < 0;\r\n }));\r\n }\r\n};\r\n","var ConfigurationSummaryModel = function(pageModelHndl) {\r\n var that = this;\r\n that.AddOfferModal = ko.observable(null);\r\n that.IsOrderCreationProgressLoading = ko.observable(false);\r\n that.isLoading = ko.observable(false);\r\n that.isDependencyLoading = ko.computed(function() {\r\n return pageModelHndl.pOrderOptionsModelV2.IsLoading()\r\n || pageModelHndl.pOrderOptionsModelV2.IsDependencyLoading();\r\n }, this, { pure: true });\r\n\r\n that.articleReference = ko.observable(\"\");\r\n that.amount = ko.observable(0);\r\n that.selectedOrderOptions = ko.observableArray([]);\r\n that.selectedDeliveryCountryId = ko.observable(2);\r\n that.itemCount = ko.observable(1);\r\n that.offerModel = new OfferModelV2();\r\n that.selectedAdditionalWorkIds = ko.observableArray([]);\r\n\r\n that.load = function (articleReference, amount, selectedOrderOptions, selectedDeliveryCountryId, selectedAdditionalWorkIds) {\r\n that.articleReference(articleReference);\r\n that.amount(amount);\r\n that.selectedOrderOptions(selectedOrderOptions);\r\n that.selectedDeliveryCountryId(selectedDeliveryCountryId);\r\n that.selectedAdditionalWorkIds(selectedAdditionalWorkIds);\r\n that.isLoading(true);\r\n var $summaryEl = $(\"#productConfigurationSummaryV2\");\r\n $summaryEl.find(\".SummaryTable\").load($summaryEl.data(\"url\"),\r\n {\r\n articleReference: articleReference,\r\n amount: amount,\r\n selectedOrderOptions: selectedOrderOptions,\r\n countryId: selectedDeliveryCountryId,\r\n itemCount: 1,\r\n isCatalogueProduct: pageModelHndl.IsCatalogueProduct(),\r\n selectedAdditionalWorkIds: selectedAdditionalWorkIds\r\n },\r\n function () {\r\n that.isLoading(false);\r\n that.AdjustProductConfigMode();\r\n });\r\n\r\n var $spQueryEl = $(\"#SpQueriesDiv\");\r\n $spQueryEl.find(\".SpQueriesArea\").load($spQueryEl.data(\"url\"),\r\n {\r\n articleReference: articleReference,\r\n amount: amount,\r\n selectedOrderOptions: selectedOrderOptions,\r\n selectedAdditionalWorkIds: selectedAdditionalWorkIds,\r\n countryId: selectedDeliveryCountryId,\r\n itemCount: 1\r\n });\r\n var $priceCalculationDetailsEl = $(\"#PriceCalculationDetailsDiv\");\r\n $priceCalculationDetailsEl.find(\".PriceCalculationDetailsArea\").load($priceCalculationDetailsEl.data(\"url\"),\r\n {\r\n articleReference: articleReference,\r\n amount: amount,\r\n selectedOrderOptions: selectedOrderOptions,\r\n selectedAdditionalWorkIds: selectedAdditionalWorkIds,\r\n countryId: selectedDeliveryCountryId,\r\n itemCount: 1\r\n });\r\n };\r\n\r\n that.addItem = function () {\r\n pageModelHndl.IsOrderCreationProgressLoading(true);\r\n var addItemUrl = $(\"#addToShoppingCartV2\").data(\"url\");\r\n var shoppingCartUrl = $(\"#shoppingCartV2Index\").data(\"url\");\r\n var data = JSON.stringify({\r\n articleReference: that.articleReference(),\r\n amount: that.amount(),\r\n selectedOrderOptions: that.selectedOrderOptions(),\r\n countryId: that.selectedDeliveryCountryId(),\r\n itemCount: that.itemCount(),\r\n isCatalogueProduct: pageModelHndl.IsCatalogueProduct(),\r\n selectedAdditionalWorkIds: that.selectedAdditionalWorkIds()\r\n });\r\n\r\n $.ajax({\r\n url: addItemUrl,\r\n type: \"POST\",\r\n data: data,\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n }).done(function (data) {\r\n if (data.Success) {\r\n window.location.href = shoppingCartUrl;\r\n } else {\r\n if (data.ErrorMessage) {\r\n alerts.error(data.ErrorMessage);\r\n }\r\n else {\r\n alerts.error();\r\n }\r\n \r\n }\r\n }).fail(function() {\r\n alerts.error();\r\n }).always(function() {\r\n fireDataLayerEventAddItem();\r\n pageModelHndl.IsOrderCreationProgressLoading(false);\r\n });\r\n };\r\n\r\n function fireDataLayerEventAddItem() {\r\n window.dataLayer =\r\n window.dataLayer || [];\r\n window.dataLayer.push({\r\n 'event': 'click_add_to_cart',\r\n });\r\n }\r\n\r\n that.updateItem = function (model, event) {\r\n pageModelHndl.IsOrderCreationProgressLoading(true);\r\n var updateUrl = $(event.currentTarget).data(\"update-url\");\r\n var shoppingCartUrl = $(\"#shoppingCartV2Index\").data(\"url\");\r\n var data = JSON.stringify({\r\n positionNumber: pageModelHndl.EditData().PositionNumber,\r\n articleReference: that.articleReference(),\r\n amount: that.amount(),\r\n selectedOrderOptions: that.selectedOrderOptions(),\r\n countryId: that.selectedDeliveryCountryId(),\r\n itemCount: that.itemCount(),\r\n isCatalogueProduct: pageModelHndl.IsCatalogueProduct(),\r\n selectedAdditionalWorkIds: that.selectedAdditionalWorkIds()\r\n });\r\n\r\n $.ajax({\r\n url: updateUrl,\r\n type: \"POST\",\r\n data: data,\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\"\r\n }).done(function(data) {\r\n if (data.Success) {\r\n window.location.href = shoppingCartUrl;\r\n } else {\r\n alerts.error();\r\n }\r\n }).fail(function() {\r\n alerts.error();\r\n }).always(function() {\r\n pageModelHndl.IsOrderCreationProgressLoading(false);\r\n });\r\n };\r\n\r\n that.openOfferWindow = function() {\r\n var window = $(\"#OfferAddedWindow\");\r\n if (!window.data(\"kendoWindow\")) {\r\n window.kendoWindow({\r\n width: \"600px\",\r\n title: YourOfferHasBeenCreated,\r\n open: function() {\r\n maximizeKendoWindowOnMobile(this);\r\n }\r\n });\r\n }\r\n window.data(\"kendoWindow\").open();\r\n window.data(\"kendoWindow\").center();\r\n };\r\n \r\n that.openOfferWindowBs4 = function() {\r\n var modal = that.AddOfferModal();\r\n if(modal === null) {\r\n var selector = \"#OfferAddedWindow\";\r\n var $dialog = $(selector);\r\n var Modal = shop.ts.modal.GetModal();\r\n modal = new Modal(selector, {\r\n width: \"870px\",\r\n title: $dialog.data('title')\r\n });\r\n that.AddOfferModal(modal);\r\n }\r\n modal.open();\r\n };\r\n\r\n that.saveForLater = function() {\r\n that.openOfferWindow();\r\n\r\n that.offerModel.Working(true);\r\n that.offerModel.Clear(); \r\n\r\n var postData = JSON.stringify({\r\n articleReference: that.articleReference(),\r\n amount: that.amount(),\r\n selectedOrderOptions: that.selectedOrderOptions(),\r\n countryId: that.selectedDeliveryCountryId(),\r\n selectedAdditionalWorkIds: that.selectedAdditionalWorkIds()\r\n });\r\n\r\n $.ajax({\r\n url: ajaxUrls.offer.AddOffer,\r\n type: \"POST\",\r\n data: postData,\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\"\r\n }).fail(function() {\r\n alerts.error();\r\n }).done(function(data) {\r\n if (!data.Success) {\r\n alerts.error();\r\n return;\r\n }\r\n that.offerModel.UpdateData(that.articleReference(),\r\n that.amount(),\r\n that.selectedOrderOptions(),\r\n that.selectedAdditionalWorkIds(),\r\n that.selectedDeliveryCountryId(),\r\n data.OfferGrossPrice);\r\n that.offerModel.OfferId = data.OfferId;\r\n that.offerModel.UserHasMailHead(data.UserHasMailHead);\r\n that.offerModel.AddOffer(parseInt(that.amount()), data.OfferGrossPrice);\r\n $(\"#OfferIdHidden\").attr('value', data.OfferId);\r\n that.offerModel.Working(false);\r\n });\r\n };\r\n\r\n that.saveForLaterBs4 = function() {\r\n that.openOfferWindowBs4();\r\n\r\n that.offerModel.Working(true);\r\n that.offerModel.Clear();\r\n\r\n var postData = JSON.stringify({\r\n articleReference: that.articleReference(),\r\n amount: that.amount(),\r\n selectedOrderOptions: that.selectedOrderOptions(),\r\n countryId: that.selectedDeliveryCountryId(),\r\n selectedAdditionalWorkIds: that.selectedAdditionalWorkIds(),\r\n isCatalogueProduct: pageModelHndl.IsCatalogueProduct()\r\n });\r\n\r\n $.ajax({\r\n url: ajaxUrls.offer.AddOffer,\r\n type: \"POST\",\r\n data: postData,\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\"\r\n }).fail(function() {\r\n alerts.error();\r\n }).done(function(data) {\r\n if (!data.Success) {\r\n alerts.error();\r\n return;\r\n }\r\n that.offerModel.UpdateData(that.articleReference(),\r\n that.amount(),\r\n that.selectedOrderOptions(),\r\n that.selectedAdditionalWorkIds(),\r\n that.selectedDeliveryCountryId(),\r\n data.OfferGrossPrice);\r\n that.offerModel.OfferId = data.OfferId;\r\n that.offerModel.UserHasMailHead(data.UserHasMailHead);\r\n that.offerModel.AddOffer(parseInt(that.amount()), data.OfferGrossPrice);\r\n $(\"#OfferIdHidden\").attr('value', data.OfferId);\r\n that.offerModel.Working(false);\r\n });\r\n };\r\n\r\n that.SetBeginnerMode = function() {\r\n var summary = $(\"#productConfigurationSummaryV2\");\r\n summary.addClass(\"amountPricesBeginner\");\r\n };\r\n\r\n that.RemoveBeginnerMode = function() {\r\n var summary = $(\"#productConfigurationSummaryV2\");\r\n summary.removeClass(\"amountPricesBeginner\");\r\n };\r\n\r\n that.AdjustProductConfigMode = function() {\r\n if (pageModelHndl.pProductContentModeModel.SelectedModeId() === \"MODE_0\") {\r\n that.SetBeginnerMode();\r\n } else {\r\n that.RemoveBeginnerMode();\r\n }\r\n };\r\n};\r\n","var CountryModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.CountryId = ko.observable();\r\n that.ISO = ko.observable();\r\n that.Name = ko.observable();\r\n\r\n //functions\r\n that.PopulateCountryModel = function (countryData) {\r\n that.CountryId(countryData.CountryId);\r\n that.ISO(countryData.ISO);\r\n that.Name(countryData.ResourceName.Text);\r\n\r\n return that;\r\n };\r\n};","var CouponInfoModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.NetValueWithoutCurrentPosition = ko.observable(0);\r\n that.IsPercent = ko.observable(true);\r\n that.IsPersistant = ko.observable(false);\r\n that.CouponValue = ko.observable(10);\r\n\r\n that.CouponValueDisplay = ko.computed(function () {\r\n if (that.IsPercent())\r\n return that.CouponValue() + '%';\r\n else {\r\n return GetCurrency(that.CouponValue());\r\n }\r\n }, that);\r\n\r\n that.PriceAfterChangeWithoutCoupon = ko.computed(function () {\r\n return pageModelHndl.pCalculationModel.TotalNetPrice() + that.NetValueWithoutCurrentPosition();\r\n }, that);\r\n\r\n that.OrderPriceAfterChange = ko.computed(function () {\r\n if (that.IsPercent()) {\r\n return GetCurrency(that.PriceAfterChangeWithoutCoupon() - (that.PriceAfterChangeWithoutCoupon() * that.CouponValue() / 100));\r\n } else {\r\n var price = that.PriceAfterChangeWithoutCoupon() - that.CouponValue();\r\n if (price < 0)\r\n return GetCurrency(0);\r\n return GetCurrency(price);\r\n }\r\n return GetCurrency(that.PriceAfterChangeWithoutCoupon());\r\n }, that);\r\n\r\n that.RemainingCouponValue = ko.computed(function () {\r\n if (that.PriceAfterChangeWithoutCoupon() > that.CouponValue()) {\r\n return 0;\r\n } else {\r\n return that.CouponValue() - that.PriceAfterChangeWithoutCoupon();\r\n }\r\n }, that);\r\n\r\n that.RemainingCouponValueDisplay = ko.computed(function () {\r\n return GetCurrency(that.RemainingCouponValue());\r\n }, that);\r\n\r\n that.Populate = function (json) {\r\n that.NetValueWithoutCurrentPosition(json.NetValueWithoutCurrentPosition);\r\n that.IsPercent(json.IsPercent);\r\n that.IsPersistant(json.IsPersistant);\r\n that.CouponValue(json.CouponValue);\r\n };\r\n}","var DeliveryOptionModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.DeliveryOptionId = ko.observable();\r\n that.Price = ko.observable();\r\n that.Name = ko.observable();\r\n that.IsEnabled = ko.observable();\r\n\r\n //output\r\n that.DisplayPrice = ko.computed(function () {\r\n var signum;\r\n\r\n var displayPrice\r\n if (pageModelHndl.DiffWithPickup() > 0) {\r\n displayPrice = that.Price() + pageModelHndl.DiffWithPickup();\r\n } else {\r\n displayPrice = that.Price();\r\n }\r\n\r\n if (displayPrice >= 0) {\r\n signum = \"+ \";\r\n }\r\n else {\r\n signum = \"\"; //decimal adds signum if < 0\r\n }\r\n\r\n return signum + GetCurrency(displayPrice);\r\n }, that);\r\n\r\n that.DisplayOptionsCaption = ko.computed(function () {\r\n return (that.Name()) + \" : \" + (that.DisplayPrice());\r\n });\r\n\r\n //functions\r\n that.RePopulateDeliveryOptionModel = function (deliveryOptionData) {\r\n that.IsEnabled(deliveryOptionData.Enabled);\r\n that.Price(deliveryOptionData.Price - pageModelHndl.InjectValue());\r\n };\r\n\r\n that.PopulateDeliveryOptionModel = function (deliveryOptionData) {\r\n that.DeliveryOptionId(deliveryOptionData.DeliveryOptionId);\r\n that.IsEnabled(deliveryOptionData.Enabled);\r\n that.Price(deliveryOptionData.Price - pageModelHndl.InjectValue());\r\n that.Name(deliveryOptionData.Name.Text);\r\n };\r\n};\r\n","var ExtensionHelperModel = function () {\r\n var that = this;\r\n\r\n //baseData\r\n that.ExtensionId = ko.observable();\r\n that.Object_ObjectExtensionId = ko.observable();\r\n that.LocalizationKey = ko.observable();\r\n\r\n //subData\r\n that.SelectedExtensionObjectValues = ko.observableArray();\r\n\r\n //flags\r\n that.IsDisabled = ko.observable(false);\r\n};","var ExtensionModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.ExtensionId = ko.observable();\r\n that.Object_ObjectExtensionId = ko.observable();\r\n that.LocalizationKey = ko.observable();\r\n\r\n that.Attributes = ko.observableArray([]);\r\n\r\n //subData\r\n that.LastSelectedObjectValue = ko.observable(-1);\r\n that.SelectedExtensionObjectValueIds = ko.observableArray([]);\r\n\r\n //flags\r\n that.IsDisabled = ko.observable(false);\r\n that.IsExtension = ko.observable(true);\r\n\r\n that.SetSelectetExtension = function (extension) {\r\n if (extension)\r\n pageModelHndl.pProductModel.SelectedExtensionId = extension.ExtensionId();\r\n\r\n return true;\r\n };\r\n};","var FilePresetModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.FilePresetUrl = ko.observable(\"#\");\r\n that.IsFilePresetAvailable = ko.observable(false);\r\n\r\n that.GetFilePreset = function () {\r\n var productConfigurationFilterModel = new ProductConfigurationFilterModel(pageModelHndl);\r\n productConfigurationFilterModel.IsCatalogueProduct = pageModelHndl.IsCatalogueProduct();\r\n var data = ko.mapping.toJSON(productConfigurationFilterModel);\r\n console.log(\"getFilePreset sending \", JSON.parse(data));\r\n\r\n var url = $(\"#ResolveFilePresetUrl\").val();\r\n\r\n return $.ajax({\r\n url: url,\r\n type: \"POST\",\r\n data: data,\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n }).done(function(data) {\r\n if (!data.Success) {\r\n alerts.error();\r\n return;\r\n }\r\n that.FilePresetUrl(data.Model.url);\r\n that.IsFilePresetAvailable(data.Model.isFilePresetAvailable);\r\n }).fail(function() {\r\n alerts.error();\r\n }).always(function() {\r\n\r\n });\r\n };\r\n};","var LoadOrderOptionsModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.ObjectId = ko.observable();\r\n that.SelectedAmount = ko.observable();\r\n that.SelectedObjectValues = ko.observableArray([]);\r\n that.Extensions = ko.observableArray([]);\r\n\r\n //functions\r\n that.PopulateLoadOrderOptionsModel = function () {\r\n var mapping = {\r\n 'ignore': [\"Attributes\"]\r\n };\r\n\r\n that.ObjectId(pageModelHndl.ObjectId());\r\n that.SelectedAmount(pageModelHndl.CurrentAmount());\r\n\r\n $.each(pageModelHndl.pProductModel.Attributes(), function (i, attr) {\r\n if (attr.SelectedObjectValueId() != undefined) {\r\n that.SelectedObjectValues.push(attr.SelectedObjectValueId());\r\n }\r\n });\r\n\r\n $.each(pageModelHndl.pProductModel.Extensions(), function (i, ext) {\r\n ext.SelectedExtensionObjectValueIds([]);\r\n\r\n $.each(ext.Attributes(), function (i, attr) {\r\n if (attr.SelectedObjectValueId() != undefined) {\r\n ext.SelectedExtensionObjectValueIds.push(attr.SelectedObjectValueId());\r\n }\r\n });\r\n\r\n that.Extensions.push(ko.mapping.toJS(ext, mapping));\r\n });\r\n };\r\n};","var ModeModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.IsSelected = ko.observable(false);\r\n that.ModeId = ko.observable();\r\n that.DisplayText = ko.observable();\r\n that.IsEnabled = ko.observable(true);\r\n\r\n //subscriptions\r\n that.IsSelected.subscribe(function (boolStatus) {\r\n if (boolStatus) {\r\n $.post(ajaxUrls.order.ProductConfigurationModeChanged, { selectedMode: that.ModeId() }).fail(function () {\r\n alerts.error();\r\n });\r\n }\r\n });\r\n};","var ObjectValueModel = function (pageModelHndl, parentAttribute) {\r\n var that = this;\r\n\r\n //baseData\r\n that.LocalizationKey = ko.observable();\r\n that.DisplayText = ko.observable();\r\n that.ObjectValueId = ko.observable();\r\n that.AttributeSpecificId = ko.observable();\r\n\r\n that.SortId = ko.observable();\r\n that.CustomValueProperties = [];\r\n\r\n //flags\r\n that.IsEnabled = ko.observable(true);\r\n that.HasError = ko.observable(false);\r\n\r\n //handle\r\n that.ParentAttribute = ko.observable(parentAttribute);\r\n\r\n //functions\r\n that.PopulateObjectValueModel = function (objectValueData) {\r\n that.LocalizationKey(objectValueData.LocalizationKey);\r\n that.DisplayText(GetTranslateableResource(objectValueData.DisplayText));\r\n that.ObjectValueId(objectValueData.ObjectValueId);\r\n that.AttributeSpecificId(objectValueData.AttributeSpecificId);\r\n\r\n that.SortId(objectValueData.SortId);\r\n that.CustomValueProperties = objectValueData.CustomValueProperties;\r\n\r\n if (that.CustomValueProperties && that.CustomValueProperties.length > 0 ) {\r\n console.info(\"CustomValues found\", that, that.CustomValueProperties);\r\n }\r\n };\r\n\r\n that.SetSelectedValue = function (value, e) {\r\n pageModelHndl.pProductModel.SelectedValue = value;\r\n return true;\r\n };\r\n that.SetSelectedValueGallerie = function (value, e) {\r\n pageModelHndl.pProductModel.SelectedValue = value;\r\n pageModelHndl.pProductModel.SelectedAttribute = value.ParentAttribute();\r\n pageModelHndl.pProductModel.SelectedAttribute.SelectedObjectValueId(value.ObjectValueId());\r\n\r\n // Gallerie autocheck checkbox\r\n $(e.currentTarget).parent('.ad-thumb-item').find('input').attr('checked', 'checked');\r\n };\r\n};","var OrderOptionsModelV2 = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.IsLoading = ko.observable(false);\r\n that.IsDependencyLoading = ko.computed(function() {\r\n return pageModelHndl.pPriceTableModelV2.IsLoading()\r\n || pageModelHndl.pPriceTableModelV2.IsDependencyLoading();\r\n }, this, { pure: true });\r\n\r\n that.SelectedDeliveryCountryId = ko.observable(pageModelHndl.DefaultDeliveryCountryId());\r\n that.SelectedOrderOptions = ko.observableArray([]);\r\n\r\n that.WriteSelectedOption = function(data, event) {\r\n console.log(\"You clicked \" + event.target.id);\r\n };\r\n\r\n that.WriteSelectedDeliveryCountry = function(data, event) {\r\n console.log(\"You clicked \" + event.target.id);\r\n };\r\n\r\n var getOrderOption = function (array, optionType) {\r\n for (var i = 0, length = array.length; i < length; i++) {\r\n if (array[i].optionType === optionType) {\r\n return array[i];\r\n }\r\n }\r\n };\r\n\r\n that.addSelectedOrderOption = function(optionType, optionId, isInitial) {\r\n if (that.SelectedOrderOptions().length > 0) {\r\n var result = getOrderOption(that.SelectedOrderOptions(), optionType);\r\n result && that.SelectedOrderOptions.remove(result);\r\n }\r\n if (optionType === \"ProductionType\") {\r\n pageModelHndl.pPriceTableModelV2.ProductionTimeTypeId(optionId);\r\n pageModelHndl.pPriceTableModelV2.SetSelectedClass();\r\n } \r\n that.SelectedOrderOptions.push({\r\n 'optionType': optionType, \r\n 'optionId': optionId\r\n });\r\n if (!isInitial && optionType === \"PrintType\") {\r\n that.LoadOrderOptionsData();\r\n }\r\n }; \r\n\r\n var updateOrderOptionsBeginner = function(input) {\r\n var url = $(\"#productConfigurationBeginnerOrderOptionsV2\").data(\"url\");\r\n\r\n that.IsLoading(true);\r\n return $.ajax({\r\n type: \"POST\",\r\n contentType: \"application/json\",\r\n url: url,\r\n data: input,\r\n datatype: \"html\"\r\n }).done(function(result) {\r\n $(\"#beginnerOrderOptionsContainer\").html(result);\r\n }).fail(function() {\r\n alerts.error();\r\n }).always(function() {\r\n that.IsLoading(false);\r\n });\r\n };\r\n\r\n var updateOrderOptions = function(input) {\r\n var url = $(\"#productConfigurationOrderOptionsV2\").data(\"url\");\r\n\r\n that.IsLoading(true);\r\n return $.ajax({\r\n type: \"POST\",\r\n contentType: \"application/json\",\r\n url: url,\r\n data: input,\r\n datatype: \"html\"\r\n }).done(function(result) {\r\n $(\"#orderOptionsContainer\").html(result);\r\n }).fail(function() {\r\n alerts.error();\r\n }).always(function() {\r\n that.IsLoading(false);\r\n });\r\n };\r\n\r\n var updateConfigurationSummary = function () {\r\n return pageModelHndl.pSummaryModel.load(\r\n pageModelHndl.pPriceTableModelV2.ArticleReference(),\r\n pageModelHndl.pPriceTableModelV2.Amount(),\r\n that.SelectedOrderOptions(),\r\n that.SelectedDeliveryCountryId(),\r\n pageModelHndl.pAdditionalWorkModelV2.SelectedAdditionalWork());\r\n };\r\n\r\n that.LoadOrderOptionsData = function() {\r\n if (pageModelHndl.pPriceTableModelV2.ProductionTimeTypeId()) {\r\n that.addSelectedOrderOption(\"ProductionType\", pageModelHndl.pPriceTableModelV2.ProductionTimeTypeId());\r\n }\r\n \r\n var input = JSON.stringify({\r\n selectedOrderOptions: that.SelectedOrderOptions(),\r\n selectedDeliveryCountry: that.SelectedDeliveryCountryId(),\r\n articlereference: pageModelHndl.pPriceTableModelV2.ArticleReference(),\r\n amount: pageModelHndl.pPriceTableModelV2.Amount(),\r\n isCatalogueProduct: pageModelHndl.IsCatalogueProduct(),\r\n selectedAdditionalWorkIds: pageModelHndl.pAdditionalWorkModelV2.SelectedAdditionalWork()\r\n });\r\n\r\n $(document).trigger('gridLayoutIeApply');\r\n\r\n return updateOrderOptions(input)\r\n .then(updateOrderOptionsBeginner(input))\r\n .then(function (result) {\r\n \r\n if (pageModelHndl.IsScrollingRequired()) {\r\n pageModelHndl.IsScrollingRequired(false);\r\n try {\r\n scrollTo(\"#configStart\", function () { });\r\n } catch (err) {\r\n console.log(\"#productContentModeDiv not found\");\r\n }\r\n }\r\n\r\n updateConfigurationSummary();\r\n });\r\n };\r\n\r\n that.UpdateProductionType = function(productionTypeId) {\r\n var productionType = \"ProductionType\";\r\n that.addSelectedOrderOption(productionType, productionTypeId);\r\n that.SyncBeginnerView(productionType, productionTypeId);\r\n that.SyncDefaultView(productionType, productionTypeId);\r\n updateConfigurationSummary();\r\n };\r\n\r\n that.SyncBeginnerView = function(optionType, optionId) {\r\n var el = $(\"#OrderOptionBeginner[data-optiontype='\" + optionType + \"']\");\r\n el.val(optionId);\r\n };\r\n\r\n that.SyncDefaultView = function(optionType, optionId) {\r\n var el = $(\".OrderOptionList .option-click[data-optiontype='\" + optionType + \"'][data-optionid='\"+ optionId + \"'] :input\");\r\n el.prop(\"checked\", true);\r\n\r\n // update selected option label\r\n var clickedOptionLabel = $(\"span[name='\"+optionType+\"-\"+optionId+\"-label']\");\r\n var clickedOptionPrice = $(\"span[name='\"+optionType+\"-\"+optionId+\"-price']\");\r\n \r\n var selectedOptionLabel = $(\"#\"+optionType+\"-selected-value\");\r\n var selectedOptionPrice = $(\"#\"+optionType+\"-selected-price\");\r\n selectedOptionLabel.text(clickedOptionLabel.text());\r\n selectedOptionPrice.text(clickedOptionPrice.text());\r\n };\r\n \r\n $(function() {\r\n var contextElement = $(\"#productConfigurationMainDiv\");\r\n \r\n contextElement.on(\"change\", \"#SelectedCountryId\",\r\n function() {\r\n if (this.value === undefined) return\r\n that.SelectedDeliveryCountryId(this.value);\r\n that.LoadOrderOptionsData();\r\n });\r\n \r\n contextElement.on(\"click\", \".OrderOptionList .option-click input\",\r\n function() {\r\n var optionType = $(this).parent().parent().data(\"optiontype\");\r\n var optionId = $(this).parent().parent().data(\"optionid\");\r\n that.addSelectedOrderOption(optionType, optionId);\r\n that.SyncBeginnerView(optionType, optionId);\r\n updateConfigurationSummary();\r\n });\r\n\r\n contextElement.on(\"click\", \".OrderOptionList .option-click\",\r\n function() {\r\n var optionType = $(this).data(\"optiontype\");\r\n var optionId = $(this).data(\"optionid\");\r\n that.addSelectedOrderOption(optionType, optionId);\r\n that.SyncDefaultView(optionType, optionId);\r\n updateConfigurationSummary();\r\n });\r\n\r\n contextElement.on(\"change\", \"#OrderOptionBeginner\",\r\n function() {\r\n var optionType = $(this).data(\"optiontype\");\r\n var optionId = this.value;\r\n that.addSelectedOrderOption(optionType, optionId);\r\n that.SyncDefaultView(optionType, optionId);\r\n updateConfigurationSummary();\r\n });\r\n\r\n contextElement.on(\"click\", '[data-clickable=\"true\"]',\r\n function() { \r\n var optionType = $(this).data(\"optiontype\");\r\n var orderOptionList = $(\"#\"+optionType+\"-OrderOptionList\");\r\n var collapsibleIcon = $(\"#\"+optionType+\"-collapsible-icon\");\r\n\r\n var isCollapsed = orderOptionList.hasClass(\"h-0\");\r\n if (isCollapsed) {\r\n orderOptionList.css(\"opacity\", \"1\");\r\n orderOptionList.css(\"transition\", \"all .2s ease-in-out\")\r\n collapsibleIcon.css(\"rotate\", \"180deg\");\r\n } else {\r\n orderOptionList.css(\"opacity\", \"0\");\r\n orderOptionList.css(\"transition\", \"unset\") // Avoid transition when collapsing\r\n collapsibleIcon.css(\"rotate\", \"0deg\");\r\n }\r\n orderOptionList.toggleClass(\"h-0\");\r\n });\r\n });\r\n};","var OrderOptionTypeModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.TypeId = ko.observable();\r\n that.TypeName = ko.observable();\r\n that.OrderOptions = ko.observableArray([]);\r\n that.OnlyForExtension = ko.observable();\r\n that.IsEnabled = ko.observable();\r\n\r\n //flags\r\n that.IsValueStatic = ko.observable(false);\r\n\r\n //subData\r\n that.SelectedOrderOptionId = ko.observable();\r\n\r\n //computed\r\n that.IsVisible = ko.computed(function () {\r\n return !that.IsValueStatic() && that.IsEnabled();\r\n }, this);\r\n\r\n //functions\r\n that.ReInjectDeliveryTimeType = function (basePrice) {\r\n that.ReInjectDeliveryTimes(basePrice);\r\n };\r\n\r\n that.InjectDeliveryTimeType = function (basePrice) {\r\n that.TypeId(-1);\r\n that.TypeName(\"Lieferzeit\"); //TODO: remove magic string\r\n\r\n that.InjectDeliveryTimes(basePrice);\r\n };\r\n\r\n that.ReInjectDeliveryTimes = function (basePrice) {\r\n $.each(pageModelHndl.pPriceTableModel.ProductionTypes(), function (i, prodType) {\r\n //inject data into first element\r\n ((that.OrderOptions())[i]).ReInjectDeliveryTime(prodType, i, basePrice);\r\n });\r\n };\r\n\r\n that.InjectDeliveryTimes = function (basePrice) {\r\n that.OrderOptions([]);\r\n\r\n $.each(pageModelHndl.pPriceTableModel.ProductionTypes(), function (i, prodType) {\r\n if (i == 0) {\r\n that.SelectedOrderOptionId(prodType.ProductionTypeId());\r\n }\r\n\r\n var orderOption = new OrderOptionModel(pageModelHndl);\r\n orderOption.InjectDeliveryTime(prodType, i, basePrice);\r\n\r\n that.OrderOptions.push(orderOption);\r\n });\r\n };\r\n\r\n that.RePopulateOrderOptionTypeModel = function (orderOptionTypeData) {\r\n that.RePopulateOrderOptions(orderOptionTypeData.OrderOptions);\r\n };\r\n\r\n that.PopulateOrderOptionTypeModel = function (orderOptionTypeData, selectedOrderOptions) {\r\n that.TypeId(orderOptionTypeData.TypeName.Key);\r\n that.TypeName(orderOptionTypeData.TypeName.Text);\r\n\r\n that.PopulateOrderOptions(orderOptionTypeData.OrderOptions, selectedOrderOptions);\r\n };\r\n\r\n that.RePopulateOrderOptions = function (orderOptions) {\r\n $.each(orderOptions, function (i, orderOptionData) {\r\n ((that.OrderOptions())[i]).RePopulateOrderOptionModel(orderOptionData);\r\n });\r\n };\r\n\r\n that.PopulateOrderOptions = function (orderOptions, selectedOrderOptions) {\r\n that.OrderOptions([]);\r\n\r\n var selectedOrderOptionIdSet = false;\r\n $.each(orderOptions, function (i, orderOptionData) {\r\n if (selectedOrderOptionIdSet) {\r\n if (selectedOrderOptions != undefined) {\r\n if (selectedOrderOptions.indexOf(orderOptionData.OrderOptionId) > -1) {\r\n that.SelectedOrderOptionId(orderOptionData.OrderOptionId);\r\n }\r\n }\r\n } else if (orderOptionData.Enabled) {\r\n that.SelectedOrderOptionId(orderOptionData.OrderOptionId);\r\n selectedOrderOptionIdSet = true;\r\n }\r\n\r\n var orderOption = new OrderOptionModel(pageModelHndl);\r\n orderOption.PopulateOrderOptionModel(orderOptionData);\r\n\r\n that.OrderOptions.push(orderOption);\r\n });\r\n };\r\n\r\n that.VisibleOrderOptions = ko.computed(function () {\r\n var filteredArray = [];\r\n\r\n $.each(that.OrderOptions(), function (index, item) {\r\n if (item.Enabled())\r\n filteredArray.push(item);\r\n });\r\n return filteredArray;\r\n }, this);\r\n};","/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\nvar PageModel = function (objectId) {\r\n var that = this;\r\n\r\n that.IsCatalogueProduct = ko.observable(false);\r\n that.CatalogueProductDisplayText = ko.observable(\"\");\r\n\r\n //baseData\r\n that.ObjectId = ko.observable(objectId);\r\n that.EditId = ko.observable(\"-1\"); //\"-1\" == new Product()\r\n that.CurrencySymbol = ko.observable(userSettings.currentCurrencySymbol);\r\n that.TeaserPanel = ko.observable(\"\");\r\n that.AdditionalTeaserPanel = ko.observable(\"\");\r\n that.CurrentHash = ko.observable(\"\");\r\n that.EditCoupon = ko.observable();\r\n that.ProductConfigurationV3Enabled = ko.observable();\r\n\r\n //subData\r\n that.InjectValue = ko.observable(0);\r\n that.DiffWithPickup = ko.observable(0);\r\n that.CurrentAmount = ko.observable(0);\r\n that.CurrentMachine = ko.observable();\r\n that.CurrentNetPrice = ko.observable(0);\r\n that.AdvantageousAmount = ko.observable(-1);\r\n that.PriceDiff = ko.observable(0);\r\n that.ShowData = ko.observableArray([]);\r\n that.EditData = ko.observableArray([]);\r\n that.EditOrderData = ko.observableArray([]);\r\n that.EditOrderPositionId = ko.observable();\r\n that.DesignerUserItemId = ko.observable();\r\n that.DesignName = ko.observable();\r\n that.OrderPositionId = ko.observable();\r\n that.DefaultDeliveryCountryId = ko.observable();\r\n that.IsScrollingRequired = ko.observable(false);\r\n\r\n //storage\r\n that.ItemCount = ko.observableArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); //TODO: dynamic\r\n that.SelectedItemCount = ko.observable();\r\n that.SubmitText = ko.observable(SubmitTextShoppingCart);\r\n\r\n // Attribute with the given ID will be replaced by a ImageGallery. Basically a different display mode.\r\n that.ImageSliderAttributeId = ko.observable();\r\n // All Attribute with the IDs entered below will not be displayed. Usefull if there is only one option to select.\r\n that.HiddenAttributeIds = ko.observableArray([]);\r\n\r\n //childViewModels\r\n that.pProductContentModeModel = ko.observable();\r\n that.pProductModel = ko.observable();\r\n that.pCalculationModel = ko.observable();\r\n that.pSammyModel = ko.observable();\r\n that.pSummaryModel = ko.observable();\r\n\r\n //flags\r\n that.IsInitialScrollDownDone = ko.observable(false);\r\n that.IsTopProductModelPopulated = ko.observable(false);\r\n that.IsProductModelPopulated = ko.observable(false);\r\n that.IsPriceTableModelPopulated = ko.observable(false);\r\n that.IsOrderOptionsModelPopulated = ko.observable(false);\r\n that.IsOrderCreationProgressLoading = ko.observable(false);\r\n that.IsInitialLoadDone = ko.observable(false);\r\n that.IsEditDataAvailable = ko.observable(false);\r\n that.IsShowDataAvailable = ko.observable(false);\r\n that.IsEditOrderDataAvailable = ko.observable(false);\r\n that.IsEditMode = ko.observable(false);\r\n that.IsAdvantageousAmountAvailable = ko.observable(false);\r\n that.IsBeginnerModeReady = ko.observable(false);\r\n that.IsInitialAmount = ko.observable(true);\r\n that.IsAdGalleryInitialized = ko.observable(false);\r\n that.IsOrderOptionModeDisabled = ko.observable(false);\r\n that.IsPriceTableCollapsedDefault = ko.observable(false);\r\n\r\n //output\r\n that.StaticAttributes = ko.observableArray([]); // {201: 10501}\r\n that.StaticOrderOptions = ko.observableArray([]); // {CheckOption: 15}\r\n\r\n that.DisplayCurrentAmount = ko.computed(function () {\r\n return new Intl.NumberFormat(navigator.language, { maximumFractionDigits: 0 }).format(that.CurrentAmount()) + \" \" + ProductPieces;\r\n }, that);\r\n\r\n that.IsCurrentDigitalPrint = ko.computed(function () {\r\n return that.CurrentMachine() === \"NexpressSX3300\" ||\r\n that.CurrentMachine() === \"Keilrahmen\" ||\r\n that.CurrentMachine() === \"Posterjet\";\r\n }, this);\r\n\r\n that.InitialisizePageModel = function (model) {\r\n that.pTopProductModel = new TopProductModel(that);\r\n that.pProductContentModeModel = new ProductContentModeModel(that);\r\n that.pProductContentModeModel.SetAvailableModes();\r\n that.pProductModel = new ProductModel(that);\r\n that.pPriceTableModelV2 = new PriceTableModelV2(that);\r\n that.pOrderOptionsModelV2 = new OrderOptionsModelV2(that);\r\n that.pAdditionalWorkModelV2 = new AdditionalWorkModelV2(that);\r\n that.pOfferModelV2 = new OfferModelV2(that);\r\n that.pSummaryModel = new ConfigurationSummaryModel(that);\r\n that.pSammyModel = new SammyModel(that, model);\r\n that.pFilePresetModel = new FilePresetModel(that);\r\n };\r\n\r\n that.IsProductModelPopulated.subscribe(function (boolStatus) {\r\n if (!boolStatus) {\r\n return;\r\n }\r\n\r\n if (that.IsShowDataAvailable()) {\r\n that.CurrentAmount((that.ShowData()).Model.Amount);\r\n that.pProductModel.RePopulateProductModel((that.ShowData()).Model.SelectedValues);\r\n return;\r\n }\r\n\r\n if (that.IsEditDataAvailable()) {\r\n that.CurrentAmount((that.EditData()).Amount);\r\n that.pProductModel.RePopulateProductModel((that.EditData()).ProductConfig, true, (that.EditData()).Extensions);\r\n return;\r\n }\r\n\r\n if (that.IsEditOrderDataAvailable()) {\r\n that.CurrentAmount((that.EditOrderData()).Amount);\r\n that.pProductModel.RePopulateProductModel((that.EditOrderData()).SelectedIds, false, (that.EditOrderData()).Extensions);\r\n return;\r\n }\r\n });\r\n\r\n that.CurrentAmount.subscribe(function (c) {\r\n if (that.IsInitialLoadDone()) {\r\n var productionAmountModel = $(that.pPriceTableModel.ProductionAmounts()).filter(function (index) {\r\n return this.Amount() == c;\r\n }).get(0);\r\n\r\n if (productionAmountModel != undefined) {\r\n that.CurrentMachine(productionAmountModel.Machine());\r\n } else {\r\n that.CurrentMachine(\"\");\r\n }\r\n }\r\n });\r\n\r\n //functions\r\n that.SetFavLink = function () {\r\n //stop *.Sammy.js\r\n that.pSammyModel.IsPaused(true);\r\n\r\n //set url\r\n window.location.hash = \"/show/\" + that.pProductModel.ArticleReference();\r\n\r\n //restart *.Sammy.js\r\n setTimeout(function () {\r\n that.pSammyModel.IsPaused(false);\r\n }, 1000);\r\n };\r\n\r\n that.getTopProductTitleText = function (topProductName, topProductId) {\r\n var resourceText = $('#' + topProductId + ' > div.card-body').text();\r\n return topProductName + \": \" + resourceText;\r\n };\r\n\r\n that.ApplyStaticAttributes = function () {\r\n console.log(\"ApplyStaticAttributes\", that.StaticAttributes());\r\n\r\n if (!that.StaticAttributes()) {\r\n return;\r\n }\r\n\r\n $.each(that.StaticAttributes(), function (key, val) {\r\n $.each(that.pProductModel.Attributes(), function (attrKey, attribute) {\r\n if (attribute.AttributeId() == key) {\r\n attribute.SelectedObjectValueId(val);\r\n attribute.IsValueStatic(true);\r\n console.log('StaticAttributeSelected', attribute.LocalizationKey(), attribute.SelectedObjectValueId());\r\n }\r\n });\r\n });\r\n };\r\n};\r\n","var PriceTableModelV2 = function(pageModelHndl) {\r\n var that = this;\r\n var requestHandle;\r\n\r\n that.ArticleReference = ko.observable();\r\n that.Amount = ko.observable();\r\n that.AdvantageousAmount = ko.observable();\r\n that.AmountDifference = ko.computed(function() {\r\n return that.AdvantageousAmount() - that.Amount();\r\n });\r\n that.ProductionTimeTypeId = ko.observable(1);\r\n\r\n that.IsLoading = ko.observable(false);\r\n that.IsDependencyLoading = ko.computed(function() {\r\n return !pageModelHndl.pProductModel.IsProductModelValid();\r\n }, this, { pure: true });\r\n that.IsTableCollapsed = ko.observable(false);\r\n that.TableCollapsedItemCount = ko.observable(5);\r\n\r\n var isBeginnerMode = $(\"#hfInitialModeId\").val() === \"MODE_0\";\r\n if (isBeginnerMode || pageModelHndl.IsPriceTableCollapsedDefault()) {\r\n that.IsTableCollapsed = ko.observable(true);\r\n } else {\r\n that.IsTableCollapsed = ko.observable(false);\r\n }\r\n\r\n var getArticleReference = function() {\r\n var getArticleReferenceForConfigUrl = $(\"#getArticleReferenceUrl\").val();\r\n\r\n var productConfigurationFilterModel = new ProductConfigurationFilterModel(pageModelHndl);\r\n var data = ko.mapping.toJSON(productConfigurationFilterModel);\r\n console.log(\"getArticleReference sending \", JSON.parse(data));\r\n\r\n return $.ajax({\r\n url: getArticleReferenceForConfigUrl,\r\n type: \"POST\",\r\n data: data,\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\"\r\n }).fail(function() {\r\n alerts.error();\r\n that.IsLoading(false);\r\n }).done(function(result) {\r\n if (result.Success) {\r\n that.ArticleReference(result.Model.articleReference);\r\n } else {\r\n alerts.error();\r\n }\r\n });\r\n };\r\n\r\n var abortPendingRequest = function() {\r\n if (that.IsLoading()) {\r\n that.IsLoading(false);\r\n if (requestHandle) {\r\n requestHandle.abort();\r\n console.info(\"aborted call to getAmountPriceTable\");\r\n }\r\n }\r\n };\r\n\r\n var getAmountPriceTable = function(articleReference, amount, isAmountEnteredByUser) {\r\n var getAmountPriceTableUrl = $(\"#getAmountPriceTableUrl\").val();\r\n var params = {\r\n ArticleReference: articleReference,\r\n shippingCountryId: pageModelHndl.DefaultDeliveryCountryId(),\r\n individualAmount: amount ? amount : null,\r\n isAmountEnteredByUser: isAmountEnteredByUser ? isAmountEnteredByUser : false,\r\n isCatalogueProduct: pageModelHndl.IsCatalogueProduct()\r\n };\r\n console.log(amount);\r\n console.log(\"getAmountPriceTable sending \", params);\r\n\r\n requestHandle = $.ajax({\r\n url: getAmountPriceTableUrl,\r\n type: \"GET\",\r\n data: params\r\n }).done(function (result) {\r\n $(\"#priceAmountTabelV2Container\").html(result);\r\n that.Amount($(\"#individualAmount\").val());\r\n pageModelHndl.CurrentAmount($(\"#individualAmount\").val());\r\n that.AdvantageousAmount($(\"#advantageousAmountDiv\").html());\r\n pageModelHndl.pProductModel.ArticleReference(that.ArticleReference());\r\n pageModelHndl.pFilePresetModel.GetFilePreset();\r\n if (that.IsTableCollapsed()) {\r\n that.ShowLessPrices();\r\n } else {\r\n that.ShowMorePrices();\r\n }\r\n\r\n that.AdjustProductConfigMode();\r\n\r\n if (!pageModelHndl.IsEditMode()) {\r\n that.UpdateSammyUrl();\r\n }\r\n }).fail(function (xhr) {\r\n dontShowErrorIfRequestIsCancelled(xhr);\r\n }).always(function() {\r\n that.IsLoading(false);\r\n }).done(function() {\r\n pageModelHndl.pOrderOptionsModelV2.LoadOrderOptionsData();\r\n pageModelHndl.pAdditionalWorkModelV2.LoadAdditionalWorkData();\r\n });\r\n return requestHandle;\r\n };\r\n\r\n function dontShowErrorIfRequestIsCancelled(xhr) {\r\n var isRequestAborted = xhr && xhr.statusText !== \"abort\";\r\n if (isRequestAborted) {\r\n alerts.error();\r\n }\r\n }\r\n\r\n var updatePriceTableData = function(amount, isAmountEnteredByUser) {\r\n abortPendingRequest();\r\n that.IsLoading(true);\r\n getArticleReference().then(function(result) {\r\n if (!result.Success) {\r\n console.error(\"RequestArticleReference has failed with a server error\");\r\n\r\n var t = $.Deferred();\r\n t.reject();\r\n return t.promise();\r\n }\r\n\r\n return getAmountPriceTable(result.Model.articleReference, amount, isAmountEnteredByUser);\r\n },\r\n function() {\r\n that.IsLoading(false);\r\n }).always(function() {\r\n that.IsLoading(false);\r\n });\r\n };\r\n\r\n that.UpdatePriceTableData = function (amount, isAmountEnteredByUser) {\r\n if (pageModelHndl.IsCatalogueProduct()) {\r\n that.UpdatePricetableDataByArticleReference(that.ArticleReference(), amount, isAmountEnteredByUser);\r\n } else {\r\n updatePriceTableData(amount, isAmountEnteredByUser);\r\n }\r\n };\r\n\r\n that.UpdatePricetableDataByArticleReference = function(articleReference, amount, isAmountEnteredByUser) {\r\n abortPendingRequest();\r\n that.ArticleReference(articleReference);\r\n that.IsLoading(true);\r\n getAmountPriceTable(articleReference, amount, isAmountEnteredByUser).always(function() {\r\n that.IsLoading(false);\r\n });\r\n };\r\n\r\n that.UpdateSammyUrl = function() {\r\n var articleReference = that.ArticleReference();\r\n var amountPrefix = \"\";\r\n if(IsProductConfigurationV3(articleReference)) {\r\n amountPrefix = \"MEN\";\r\n }\r\n \r\n articleReference = articleReference.substring(0, articleReference.lastIndexOf(\"_\") + 1) + amountPrefix + that.Amount();\r\n\r\n // stop *.Sammy.js\r\n pageModelHndl.pSammyModel.IsPaused(true);\r\n\r\n // set hash\r\n window.location.hash = \"/show/\" + articleReference;\r\n\r\n // resume *.Sammy.js\r\n setTimeout(function() {\r\n pageModelHndl.pSammyModel.IsPaused(false);\r\n }, 1000);\r\n };\r\n \r\n function IsProductConfigurationV3(articleReference) {\r\n return articleReference.substring(0,3) === \"OID\";\r\n }\r\n\r\n that.ShowLessPrices = function() {\r\n that.IsTableCollapsed(true);\r\n\r\n var $rows = $(\"tr.PreiseRow\");\r\n var selectedId = \"#priceTableAmount_\" + that.Amount() + \"_productionType_\" + that.ProductionTimeTypeId();\r\n $rows.each(function(index, element) {\r\n if (index >= that.TableCollapsedItemCount() && $(element).children(\"td\" + selectedId).length === 0) {\r\n $(element).hide();\r\n }\r\n });\r\n };\r\n\r\n that.ShowMorePrices = function() {\r\n that.IsTableCollapsed(false);\r\n\r\n $(\"tr.PreiseRow\").each(function() {\r\n $(this).show();\r\n });\r\n };\r\n\r\n that.SetSelectedClass = function() {\r\n var selected = $(\"#priceTableAmount_\" + that.Amount() + \"_productionType_\" + that.ProductionTimeTypeId());\r\n if (selected) {\r\n $(\"#amountPricesTableHolder\").find('*').removeClass(\"selected\");\r\n selected.addClass(\"selected\");\r\n }\r\n };\r\n\r\n that.SetBeginnerMode = function() {\r\n var table = $(\"#amountPriceTableV2\");\r\n table.addClass(\"amountPricesBeginner\");\r\n };\r\n\r\n that.RemoveBeginnerMode = function() {\r\n var table = $(\"#amountPriceTableV2\");\r\n table.removeClass(\"amountPricesBeginner\");\r\n };\r\n\r\n that.AdjustProductConfigMode = function() {\r\n if (pageModelHndl.pProductContentModeModel.SelectedModeId() === \"MODE_0\") {\r\n that.SetBeginnerMode();\r\n } else {\r\n that.RemoveBeginnerMode();\r\n }\r\n };\r\n \r\n that.SelectAmount = function(element) {\r\n // don't reload when we already have selected the amount\r\n if (that.Amount() != element.data(\"amount\")) {\r\n that.UpdatePriceTableData(element.data(\"amount\"), true);\r\n that.Amount(element.data(\"amount\"));\r\n }\r\n that.SetSelectedClass();\r\n if (element.data(\"productiontimetype\")) {\r\n that.ProductionTimeTypeId(element.data(\"productiontimetype\"));\r\n pageModelHndl.pOrderOptionsModelV2.UpdateProductionType(that.ProductionTimeTypeId());\r\n }\r\n };\r\n\r\n $(function() {\r\n var $context = $(\"#productConfigurationMainDiv\");\r\n $context.on(\"change\", \"#mobileAmountSelect\", function () {\r\n if ($(this).val() === \"individual\") {\r\n $('#mobileIndividualAmountBox').removeClass(\"hidden d-none\");\r\n } else {\r\n $('#mobileIndividualAmountBox').addClass(\"hidden d-none\");\r\n that.UpdatePriceTableData($(this).val(), true);\r\n }\r\n });\r\n\r\n $context.on(\"change\", \"#individualAmount, #mobileindividualAmount\", function () {\r\n that.UpdatePriceTableData($(this).val(), true);\r\n });\r\n // fallback for IE\r\n $context.on(\"keypress\", \"#individualAmount, #mobileindividualAmount\", function(e) {\r\n if (e.which === 13 && that.Amount() !== $(this).val()) {\r\n that.UpdatePriceTableData($(this).val(), true);\r\n }\r\n });\r\n\r\n $context.on(\"click\", \".amount-select\", function(e) {\r\n that.SelectAmount($(this));\r\n });\r\n\r\n $context.on(\"click\", \"#applyAmount\", function(e) {\r\n that.SelectAmount($(this));\r\n });\r\n\r\n $context.on(\"click\", \".productPropOptions .option-click input\",\r\n function() {\r\n var amount = $(this).parent().data(\"amount\");\r\n that.Amount(amount);\r\n pageModelHndl.pOrderOptionsModelV2.LoadOrderOptionsData();\r\n pageModelHndl.pAdditionalWorkModelV2.LoadAdditionalWorkData();\r\n });\r\n });\r\n};\r\n","var ProductConfigurationFilterItem = function (attribute) {\r\n var that = this;\r\n\r\n that.IsExtension = attribute.IsExtension();\r\n that.IsGrammage = attribute.SelectedObjectValueId() < 0;\r\n\r\n that.AttributeId = attribute.AttributeId();\r\n that.ObjectValueId = attribute.SelectedObjectValueId();\r\n\r\n that.IsCustomValue = attribute.CustomValue.IsCustomValueOptionSelected();\r\n that.CustomValue = attribute.CustomValue.CustomValue();\r\n \r\n that.IsCustomFormat = attribute.CustomFormat.IsCustomFormatSelected();\r\n that.CustomLength = attribute.CustomFormat.Length();\r\n that.CustomWidth = attribute.CustomFormat.Width();\r\n\r\n // not required but for debugging purspose\r\n that.Description = attribute.LocalizationKey();\r\n};","/// \r\n\r\nvar ProductConfigurationFilterModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.ObjectId = pageModelHndl.ObjectId();\r\n that.SelectedValues = [];\r\n that.ArticleReference = pageModelHndl.pProductModel.ArticleReference;\r\n that.ProductConfigurationV3Enabled = pageModelHndl.ProductConfigurationV3Enabled();\r\n\r\n that.SelectedValues = pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues();\r\n};\r\n\r\n","/// \r\n\r\nvar ProductContentModeModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n that.SelectedMode = ko.observable(new ModeModel(pageModelHndl));\r\n\r\n //baseData\r\n that.SelectedModeId = ko.observable();\r\n that.AvailableModes = ko.observableArray([]);\r\n that.IsBeginnerModeSelected = ko.computed(function() {\r\n return that.SelectedModeId() === \"MODE_0\";\r\n }, that);\r\n that.IsStandardModeSelected = ko.computed(function () {\r\n return that.SelectedModeId() === \"MODE_1\";\r\n }, that);\r\n that.IsExpertModeSelected = ko.computed(function () {\r\n return that.SelectedModeId() === \"MODE_2\";\r\n }, that);\r\n\r\n that.EnabledModes = ko.computed(function () {\r\n var modes = [];\r\n $.each(that.AvailableModes(), function (i, m) {\r\n if (m.IsEnabled() === true) {\r\n modes.push(m);\r\n }\r\n });\r\n return modes;\r\n });\r\n\r\n that.SetModeId = function (mode) {\r\n that.SelectedModeId(mode.ModeId());\r\n };\r\n\r\n //supscriptions\r\n that.SelectedModeId.subscribe(function (selectedModeId) {\r\n $.each(that.AvailableModes(), function (i, aMode) {\r\n if (aMode.ModeId() === selectedModeId) {\r\n aMode.IsSelected(true);\r\n }\r\n else {\r\n aMode.IsSelected(false);\r\n }\r\n\r\n if ((i === that.AvailableModes().length - 1) && (pageModelHndl.IsProductModelPopulated())) {\r\n if (that.SelectedModeId() === \"MODE_0\") {\r\n pageModelHndl.pPriceTableModelV2.ShowLessPrices(true);\r\n pageModelHndl.pPriceTableModelV2.SetBeginnerMode();\r\n pageModelHndl.pSummaryModel.SetBeginnerMode();\r\n } else {\r\n pageModelHndl.pPriceTableModelV2.ShowMorePrices(false);\r\n pageModelHndl.pPriceTableModelV2.RemoveBeginnerMode();\r\n pageModelHndl.pSummaryModel.RemoveBeginnerMode();\r\n }\r\n pageModelHndl.pProductModel.UpdateBeginnerMode();\r\n }\r\n });\r\n\r\n if(userSettings.isProductOverviewBs4Enabled) {\r\n // only required for bs4 layout\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip();\r\n });\r\n }\r\n $(document).trigger('gridLayoutIeApply');\r\n });\r\n\r\n that.SetAvailableModes = function () {\r\n $.each(modeIds, function (i, modeId) {\r\n var modeModel = new ModeModel(pageModelHndl);\r\n\r\n modeModel.ModeId(modeIds[i]);\r\n modeModel.DisplayText(modeNames[i]);\r\n modeModel.IsEnabled(modeEnabled[i]);\r\n\r\n that.AvailableModes.push(modeModel);\r\n\r\n if (i == (modeIds.length - 1)) {\r\n that.SelectedModeId($(\"#hfInitialModeId\").val());\r\n }\r\n });\r\n };\r\n};\r\n","var ProductionTypeModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.ProductionTypeId = ko.observable();\r\n that.Name = ko.observable();\r\n that.PriceFactor = ko.observable();\r\n that.ProductionTime = ko.observable();\r\n that.DisplayDate = ko.observable();\r\n\r\n that.PopulateProductionTypeModel = function (productionTypeData) {\r\n that.ProductionTypeId(productionTypeData.ProductionTypeId);\r\n that.Name(productionTypeData.Name);\r\n that.PriceFactor(productionTypeData.PriceFactor);\r\n that.ProductionTime(productionTypeData.ProductionTime);\r\n that.DisplayDate(productionTypeData.DisplayDate);\r\n };\r\n};","/// \r\n/// \r\n/// \r\n\r\nvar ProductModel = function (pageModelHndl) {\r\n var that = this;\r\n\r\n //baseData\r\n that.Description = ko.observable();\r\n that.DisplayName = ko.observable();\r\n that.VideoLink = ko.observable();\r\n that.ArticleReference = ko.observable();\r\n that.Attributes = ko.observableArray([]);\r\n that.Extensions = ko.observableArray([]);\r\n \r\n that.CustomFormatLengthMin = ko.observable();\r\n that.CustomFormatLengthMax = ko.observable();\r\n that.CustomFormatWidthMin = ko.observable();\r\n that.CustomFormatWidthMax = ko.observable();\r\n\r\n that.SelectedAttributeAndExtensionValues = ko.observableArray([]);\r\n\r\n that.SelectedAttribute = \"\";\r\n that.SelectedValue = \"\";\r\n that.SelectedExtensionId = -1;\r\n\r\n //flags\r\n that.LastSelectedObjectValue = ko.observable(-1);\r\n that.IsProductModelValid = ko.observable(false);\r\n that.IsProductModelRePopulating = ko.observable(false);\r\n that.IsExtension = ko.observable(false);\r\n that.ValidateModel = ko.observable(true);\r\n that.IsLoading = ko.observable(false);\r\n that.IsDependencyLoading = ko.computed(function() {\r\n return pageModelHndl.pTopProductModel.IsLoading();\r\n }, this, { pure: true });\r\n\r\n //functions\r\n that.SetSelectetExtension = function (extensionId) {\r\n that.SelectedExtensionId = extensionId;\r\n return true;\r\n };\r\n\r\n that.IsAttributesAndExtensionsValid = function () {\r\n var valid = true;\r\n\r\n //check if all attributes are valid\r\n for (var i = 0; i < that.Attributes().length; i++) {\r\n var attr = that.Attributes()[i];\r\n if (!attr.IsValid()) {\r\n valid = false;\r\n }\r\n }\r\n\r\n // check if all ext are valid\r\n for (var e = 0; e < that.Extensions().length; e++) {\r\n var ext = that.Extensions()[e];\r\n\r\n for (var k = 0; k < ext.Attributes().length; k++) {\r\n if (!ext.Attributes()[k].IsValid()) {\r\n valid = false;\r\n }\r\n }\r\n }\r\n\r\n return valid;\r\n };\r\n\r\n that.UpdateBeginnerMode = function () {\r\n if (!pageModelHndl.pProductModel.IsProductModelRePopulating()) {\r\n pageModelHndl.IsBeginnerModeReady(false);\r\n $.each(that.Attributes(), function (i, attr) {\r\n pageModelHndl.pProductModel.IsProductModelRePopulating(true);\r\n attr.UpdateForBeginnerMode();\r\n\r\n if (i == (that.Attributes()).length - 1) {\r\n pageModelHndl.IsBeginnerModeReady(true);\r\n pageModelHndl.pProductModel.IsProductModelRePopulating(false);\r\n }\r\n });\r\n }\r\n\r\n $.each(that.Extensions(), function (i, ext) {\r\n var extDomSelect = $(\"#js_beginnerExtensionObjectValuesDiv_\" + ext.ExtensionId() + \" select\");\r\n\r\n $.each(ext.Attributes(), function (j, attr) {\r\n attr.UpdateForBeginnerMode();\r\n $.each(attr.ObjectValues(), function (k, objValue) {\r\n\r\n if (objValue.HasError() || !objValue.IsEnabled()) {\r\n $((extDomSelect[i]).options[k + 1]).removeClass().addClass(\"invisibleSelectedValue\");\r\n }\r\n else {\r\n $((extDomSelect[i]).options[k + 1]).removeClass().addClass(\"baseSelectedValue\");\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n that.PopulateProductModel = function (productData) {\r\n that.Description(\"

\" + productData.Description + \"

Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

Aenean commodo ligula eget dolor. Aenean massa.

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis,

\"); //(productData.Description);\r\n that.DisplayName(productData.DisplayName);\r\n that.VideoLink(productData.VideoLink);\r\n that.PopulateAttributes(productData.Attributes, productData.Extensions);\r\n pageModelHndl.TeaserPanel(productData.TeaserPanel);\r\n pageModelHndl.AdditionalTeaserPanel(productData.AdditionalTeaserPanel);\r\n\r\n if(userSettings.isProductOverviewBs4Enabled) {\r\n // only required for bs4 layout\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip()\r\n })\r\n }\r\n };\r\n\r\n var updateProductConfiguration = function() {\r\n var productConfigurationFilterModel = new ProductConfigurationFilterModel(pageModelHndl); \r\n var data = ko.mapping.toJSON(productConfigurationFilterModel);\r\n console.log(\"updateProductConfiguration sending \", JSON.parse(data));\r\n\r\n var url = $(\"#FilterSelectionUrl\").val();\r\n pageModelHndl.pProductModel.IsLoading(true);\r\n return $.ajax({\r\n url: url,\r\n type: \"POST\",\r\n data: data,\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\"\r\n }).fail(function () {\r\n alerts.error();\r\n }).always(function () {\r\n pageModelHndl.pProductModel.IsLoading(false);\r\n });\r\n };\r\n\r\n that.UpdateProductModel = function () {\r\n if (!that.ValidateModel()) {\r\n return;\r\n }\r\n if (that.IsProductModelRePopulating()) {\r\n return;\r\n }\r\n if (pageModelHndl.IsCatalogueProduct()) {\r\n that.IsProductModelValid(true);\r\n if (that.IsProductModelValid()) {\r\n pageModelHndl.pPriceTableModelV2.UpdatePricetableDataByArticleReference(that.ArticleReference(),\r\n pageModelHndl.CurrentAmount());\r\n }\r\n\r\n if (!pageModelHndl.IsAdGalleryInitialized()) {\r\n $(document).trigger(\"loadAdGallery\");\r\n pageModelHndl.IsAdGalleryInitialized(true);\r\n }\r\n } else {\r\n updateProductConfiguration().done(function(data) {\r\n that.UpdateAttributes(data.Model.EnabledValueIds,\r\n data.Model.Extensions,\r\n data.Model.LastSelectedIds,\r\n data.Model.CustomFormatMinMax);\r\n\r\n if (that.IsProductModelValid()) {\r\n pageModelHndl.pPriceTableModelV2.UpdatePriceTableData(pageModelHndl.CurrentAmount());\r\n }\r\n\r\n if (!pageModelHndl.IsAdGalleryInitialized()) {\r\n $(document).trigger(\"loadAdGallery\");\r\n pageModelHndl.IsAdGalleryInitialized(true);\r\n }\r\n\r\n try {\r\n // only required for bs4 layout\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip()\r\n })\r\n }\r\n catch(e) {\r\n // do nothing\r\n }\r\n });\r\n }\r\n };\r\n\r\n that.PopulateExtensions = function (extensionsData) {\r\n that.Extensions([]);\r\n\r\n if (extensionsData != null && extensionsData.length > 0) {\r\n $.each(extensionsData, function (i, ext) {\r\n var extModel = new ExtensionModel(pageModelHndl);\r\n extModel.ExtensionId(ext.ExtensionId);\r\n extModel.Object_ObjectExtensionId(ext.Object_ObjectExtensionId);\r\n extModel.LocalizationKey(ext.LocalizationKey);\r\n\r\n $.each(ext.Attributes, function (j, attr) {\r\n var attrModel = new AttributeModel(pageModelHndl, extModel);\r\n attrModel.PopulateAttributeModel(attr);\r\n\r\n extModel.Attributes.push(attrModel);\r\n });\r\n\r\n that.Extensions.push(extModel);\r\n\r\n if (i === (extensionsData.length - 1)) {\r\n populateDefaultObjectValue(that.Attributes());\r\n populateDefaultObjectValue(extModel.Attributes());\r\n pageModelHndl.IsBeginnerModeReady(true);\r\n pageModelHndl.IsProductModelPopulated(true);\r\n if(that.SelectedAttributeAndExtensionValues().length > 0) {\r\n that.UpdateProductModel();\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n populateDefaultObjectValue(that.Attributes());\r\n pageModelHndl.IsBeginnerModeReady(true);\r\n pageModelHndl.IsProductModelPopulated(true);\r\n if(that.SelectedAttributeAndExtensionValues().length > 0) {\r\n that.UpdateProductModel();\r\n }\r\n }\r\n };\r\n \r\n var populateDefaultObjectValue = function(attributeModels) {\r\n $.each(attributeModels, function(j, attrModel){\r\n attrModel.PopulateDefaultObjectValue();\r\n });\r\n }\r\n\r\n that.PopulateAttributes = function (attributesData, extensionsData) {\r\n that.Attributes([]);\r\n\r\n $.each(attributesData, function (i, attr) {\r\n var attributeModel = new AttributeModel(pageModelHndl, that);\r\n attributeModel.PopulateAttributeModel(attr);\r\n that.Attributes.push(attributeModel);\r\n\r\n if (i === (attributesData.length - 1)) {\r\n that.PopulateExtensions(extensionsData);\r\n }\r\n });\r\n\r\n var galleryAttributes = that.Attributes().filter(function (element) {\r\n return element.AttributeId() == pageModelHndl.ImageSliderAttributeId();\r\n });\r\n\r\n if (galleryAttributes.length > 0) {\r\n var attribute = galleryAttributes[0];\r\n if (!attribute.SelectedObjectValueId()) {\r\n var objectValues = attribute.ObjectValues();\r\n if (objectValues.length > 0) {\r\n attribute.SelectedObjectValueId(objectValues[0].ObjectValueId());\r\n }\r\n }\r\n\r\n }\r\n };\r\n\r\n that.UpdateAttributes = function (selectableValueIds, extensions, lastSelectedIds, customFormatMinMax) {\r\n var flag = true;\r\n\r\n var attributes = that.Attributes();\r\n for (var i = 0; i < attributes.length; i++) {\r\n var attr = attributes[i];\r\n\r\n attr.UpdateAttributeModel(selectableValueIds, false);\r\n\r\n if(attr.CustomFormat.IsCustomFormatOptionAvailable() && customFormatMinMax !== null) {\r\n that.CustomFormatLengthMax(customFormatMinMax.MaxLength);\r\n that.CustomFormatLengthMin(customFormatMinMax.MinLength);\r\n that.CustomFormatWidthMax(customFormatMinMax.MaxWidth);\r\n that.CustomFormatWidthMin(customFormatMinMax.MinWidth);\r\n attr.CustomFormat.UpdateMinAndMax(that);\r\n }\r\n \r\n if (!attr.IsValid()) {\r\n flag = false;\r\n }\r\n }\r\n\r\n var hasExtension = extensions.length > 0;\r\n if (hasExtension) {\r\n\r\n for (var j = 0; j < extensions.length; j++) {\r\n\r\n var ext = extensions[j];\r\n\r\n var isEnabled = !((that.Extensions())[j]).IsDisabled();\r\n if (isEnabled) {\r\n\r\n var extensionAttributes = ((that.Extensions())[j]).Attributes();\r\n for (var k = 0; k < extensionAttributes.length; k++) {\r\n\r\n var extensionAttribute = extensionAttributes[k];\r\n\r\n extensionAttribute.UpdateAttributeModel(ext.SelectedExtensionObjectValueIds, true);\r\n if (!extensionAttribute.IsValid()) {\r\n flag = false;\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n that.IsProductModelValid(flag);\r\n if (!pageModelHndl.IsCatalogueProduct()) {\r\n that.UpdateBeginnerMode();\r\n }\r\n $(document).trigger('gridLayoutIeApply');\r\n };\r\n\r\n that.RePopulateProductModel = function (selectedValues) {\r\n that.RePopulateAttributesAndExtensions(selectedValues);\r\n };\r\n\r\n that.RePopulateAttributesAndExtensions = function (selectedValues) {\r\n that.IsProductModelRePopulating(true);\r\n\r\n function updateAttributes(attributes, selectedAttributeValues) {\r\n\r\n for (var i = 0; i < attributes.length; i++) {\r\n var attribute = attributes[i];\r\n\r\n var selectedValue = selectedAttributeValues.filter(function (item) {\r\n return item.AttributeId === attribute.AttributeId();\r\n })[0];\r\n\r\n if (selectedValue) {\r\n attribute.SelectedObjectValueId(selectedValue.ObjectValueId);\r\n attribute.InnerLastSelected(selectedValue.ObjectValueId);\r\n attribute.CustomValue.IsCustomValueOptionSelected(selectedValue.IsCustomValue);\r\n attribute.CustomValue.CustomValue(selectedValue.CustomValue);\r\n if(selectedValue.IsCustomFormat) {\r\n attribute.CustomFormat.IsCustomFormatSelected(true);\r\n attribute.CustomFormat.Length(selectedValue.CustomLength);\r\n attribute.CustomFormat.Width(selectedValue.CustomWidth);\r\n }\r\n } else {\r\n console.info(\"updating attributes: attribute \", attribute.AttributeId(), \" not selected, isExtension \", attribute.IsExtension());\r\n }\r\n }\r\n\r\n }\r\n\r\n if (pageModelHndl.IsCatalogueProduct()) {\r\n that.IsProductModelRePopulating(false);\r\n return;\r\n }\r\n\r\n // update content\r\n var selectedContentValues = selectedValues\r\n .filter(function (item) { return !item.IsExtension; });\r\n\r\n var attributes = that.Attributes();\r\n updateAttributes(attributes, selectedContentValues);\r\n\r\n // update extensions\r\n var selectedExtensionValues = selectedValues\r\n .filter(function (item) { return item.IsExtension; });\r\n\r\n for (var l = 0; l < that.Extensions().length; l++) {\r\n var extension = that.Extensions()[l];\r\n\r\n attributes = extension.Attributes();\r\n updateAttributes(attributes, selectedExtensionValues);\r\n }\r\n\r\n // set last selected item\r\n var lastSelectedItem = selectedValues[selectedContentValues.length - 1];\r\n that.LastSelectedObjectValue(lastSelectedItem.ObjectValueId);\r\n\r\n that.IsProductModelRePopulating(false);\r\n };\r\n};\r\n","/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\nvar SammyModel = function (pageModelHndl, model) {\r\n var that = this;\r\n\r\n that.IsPaused = ko.observable(false);\r\n\r\n that.resolveArticleReference = function (articleReference) {\r\n pageModelHndl.pProductModel.IsLoading(true);\r\n\r\n var input = {\r\n articleReference: articleReference\r\n };\r\n\r\n var url = $(\"#ResolveArticleReferenceUrl\").val();\r\n return $.get(url, input)\r\n .fail(function () {\r\n alerts.error();\r\n }).always(function () {\r\n pageModelHndl.pProductModel.IsLoading(false);\r\n });\r\n };\r\n\r\n that.LoadProductModelData = function () {\r\n if (pageModelHndl.IsProductModelPopulated()) {\r\n return;\r\n }\r\n if (model) {\r\n pageModelHndl.pProductModel.PopulateProductModel(model);\r\n return;\r\n }\r\n\r\n $.get(ajaxUrls.order.LoadObjectConfiguration, { id: pageModelHndl.ObjectId() })\r\n .done(function(data) {\r\n if (data.Success) {\r\n pageModelHndl.pProductModel.PopulateProductModel(data.Model);\r\n } else {\r\n alerts.error();\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n that.LoadShowData = function (articleReference) {\r\n if (!pageModelHndl.IsEditMode()) {\r\n pageModelHndl.SubmitText(SubmitTextShoppingCart);\r\n pageModelHndl.CurrentHash(\"#/show/\" + articleReference);\r\n pageModelHndl.EditData([]);\r\n pageModelHndl.IsEditDataAvailable(false);\r\n }\r\n \r\n return that.resolveArticleReference(articleReference).done(function(data) {\r\n if (!data.Success) {\r\n pageModelHndl.ShowData([]);\r\n pageModelHndl.IsShowDataAvailable(false);\r\n var errorMessage = $(\"#errorDiv2\").text();\r\n alerts.error(errorMessage);\r\n return;\r\n }\r\n\r\n pageModelHndl.pProductModel.ArticleReference(articleReference);\r\n pageModelHndl.CurrentAmount(data.Model.Amount);\r\n\r\n pageModelHndl.ShowData(data);\r\n pageModelHndl.IsShowDataAvailable(true);\r\n pageModelHndl.CatalogueProductDisplayText(data.Model.DisplayText);\r\n pageModelHndl.IsScrollingRequired(true);\r\n\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues(data.Model.SelectedValues);\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n\r\n if (pageModelHndl.IsProductModelPopulated()) {\r\n pageModelHndl.CurrentAmount(data.Model.Amount);\r\n pageModelHndl.pProductModel.RePopulateProductModel(data.Model.SelectedValues);\r\n } else {\r\n that.LoadProductModelData();\r\n }\r\n\r\n });\r\n };\r\n\r\n that.LoadPositionEditData = function (editId) {\r\n pageModelHndl.ShowData([]);\r\n pageModelHndl.IsShowDataAvailable(false);\r\n var editUrl = $(\"#EditPositionUrl\").val();\r\n\r\n return $.get(editUrl, { positionNumber: editId })\r\n .done(function (data) {\r\n if (!data.Success) {\r\n pageModelHndl.EditData([]);\r\n pageModelHndl.IsEditDataAvailable(false);\r\n alerts.error(data.ErrorMessage);\r\n return;\r\n }\r\n\r\n var result = data.Result;\r\n\r\n var articleReference = result.ArticleReference;\r\n pageModelHndl.IsEditMode(true);\r\n pageModelHndl.EditData(result);\r\n\r\n Object.keys(result.OrderOptionMap).map(function(key, index) {\r\n var optionType = key;\r\n var optionId = result.OrderOptionMap[key];\r\n\r\n pageModelHndl.pOrderOptionsModelV2.addSelectedOrderOption(optionType, optionId, true);\r\n pageModelHndl.pOrderOptionsModelV2.SelectedDeliveryCountryId(result.DeliveryCountryId);\r\n });\r\n pageModelHndl.pAdditionalWorkModelV2.SelectedAdditionalWork(result.SelectedAdditionalWorkIds);\r\n\r\n // load product config\r\n that.LoadShowData(articleReference);\r\n })\r\n .fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n that.LoadEditOrderData = function (articleReference, orderPositionId) {\r\n pageModelHndl.EditOrderPositionId(orderPositionId);\r\n\r\n pageModelHndl.SubmitText(EditOrderSave);\r\n\r\n pageModelHndl.EditData([]);\r\n pageModelHndl.IsEditDataAvailable(false);\r\n pageModelHndl.IsShowDataAvailable(false);\r\n pageModelHndl.OrderPositionId(orderPositionId);\r\n pageModelHndl.CurrentHash(\"#/editorder/\" + articleReference + \"/\" + orderPositionId);\r\n\r\n that.resolveArticleReference(articleReference).done(function(data) {\r\n if (!data.Success) {\r\n pageModelHndl.ShowData([]);\r\n pageModelHndl.IsShowDataAvailable(false);\r\n document.location.hash = \"/\";\r\n $(\"#errorDiv2\").fadeIn(\"slow\").delay(3000).fadeOut(\"fast\");\r\n return;\r\n }\r\n\r\n pageModelHndl.EditOrderData(data);\r\n pageModelHndl.IsEditOrderDataAvailable(true);\r\n\r\n pageModelHndl.pProductModel.SelectedAttributeAndExtensionValues(data.Model.SelectedValues);\r\n pageModelHndl.pProductModel.UpdateProductModel();\r\n\r\n if (pageModelHndl.IsProductModelPopulated()) {\r\n pageModelHndl.CurrentAmount(data.Model.Amount);\r\n pageModelHndl.pProductModel.RePopulateProductModel(data.Model.SelectedValues);\r\n } else {\r\n that.LoadProductModelData();\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n\r\n $.get(ajaxUrls.order.GetCouponForOrderPosition, { orderPositionId: orderPositionId })\r\n .done(function (data) {\r\n if (data != null) {\r\n var infoModel = new CouponInfoModel(pageModelHndl);\r\n infoModel.Populate(data);\r\n pageModelHndl.EditCoupon(infoModel);\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n that.LoadTemplateData = function (editId) {\r\n pageModelHndl.ShowData([]);\r\n pageModelHndl.IsShowDataAvailable(false);\r\n pageModelHndl.SubmitText(SubmitTextShoppingCart);\r\n pageModelHndl.EditId(\"-1\");\r\n pageModelHndl.EditData([]);\r\n pageModelHndl.IsEditDataAvailable(false);\r\n\r\n $.get(ajaxUrls.shoppingCart.GetItem, { position: editId }, function (data) {\r\n if (!data.Success) {\r\n pageModelHndl.EditData([]);\r\n pageModelHndl.IsEditDataAvailable(false);\r\n document.location.hash = \"/\";\r\n return;\r\n }\r\n\r\n pageModelHndl.EditData(data.Model);\r\n pageModelHndl.IsEditDataAvailable(true);\r\n\r\n if (pageModelHndl.IsProductModelPopulated()) {\r\n pageModelHndl.CurrentAmount(data.Model.Amount);\r\n pageModelHndl.pProductModel.RePopulateProductModel(data.Model.ProductConfig, true, data.Model.Extensions);\r\n } else {\r\n that.LoadProductModelData();\r\n }\r\n }).fail(function () {\r\n alerts.error();\r\n });\r\n };\r\n\r\n var sammy = Sammy(function() {\r\n this.get(\"#/\",\r\n function() {\r\n that.LoadProductModelData();\r\n });\r\n\r\n this.get(\"#/show/:articleReference\",\r\n function() {\r\n if (!that.IsPaused()) {\r\n that.LoadShowData(this.params.articleReference);\r\n }\r\n });\r\n\r\n this.get(\"#/edit/:editId\",\r\n function() {\r\n that.LoadPositionEditData(this.params.editId);\r\n });\r\n\r\n this.get(\"#/editorder/:editId/:orderPositionId\",\r\n function() {\r\n that.LoadEditOrderData(this.params.editId, this.params.orderPositionId);\r\n });\r\n\r\n this.get(\"#/template/:templateId\",\r\n function() {\r\n that.LoadTemplateData(this.params.templateId);\r\n });\r\n\r\n // Overwrites not found behaviour of Sammy\r\n // for sammy only above defined 'routes' are valid \r\n this.notFound = function(verb, path) {\r\n console.warn(['sammy route: 404 Not Found', verb, path].join(' '));\r\n return true;\r\n };\r\n });\r\n sammy.raise_errors = true;\r\n sammy.run();\r\n};","$(\".AdditionalTeaserLinkPanel > a\").on(\"click\",\r\n function() {\r\n scrollTo(\"#AdditionalTeaser\", function () { });\r\n });","var SubmitModelV2 = function(pageModelHndl) {\r\n var that = this;\r\n\r\n that.ArticleReference = ko.observable();\r\n that.Amount = ko.observable();\r\n that.SelectedOrderOptions = ko.observable();\r\n that.ItemCount = ko.observable();\r\n\r\n that.PopulateSubmitModel = function() {\r\n that.ArticleReference(pageModelHndl.pPriceTableModelV2.ArticleReference());\r\n that.Amount(pageModelHndl.pPriceTableModelV2.Amount());\r\n\r\n that.SelectedOrderOptions(new SelectOrderOptionsModel(pageModelHndl));\r\n\r\n that.ItemCount(pageModelHndl.SelectedItemCount());\r\n }\r\n};\r\n\r\nvar SelectOrderOptionsModel = function(pageModelHndl) {\r\n var that = this;\r\n\r\n that.CountryId = ko.observable(2);\r\n that.DeliveryOptionId = ko.observable(1);\r\n that.DataCheckId = ko.observable(1);\r\n that.ProofId = ko.observable(1);\r\n that.HotfoilId = ko.observable(1);\r\n that.FileFormatId = ko.observable(1);\r\n that.FileTransferId = ko.observable(1);\r\n that.ProductionTimeId = ko.observable(1);\r\n that.PrintMethodId = ko.observable(1);\r\n that.PaintworkId = ko.observable(1);\r\n that.BundlingId = ko.observable(1);\r\n};","var TopProductModel = function() {\r\n var that = this;\r\n\r\n that.IsLoading = ko.observable(false);\r\n that.ArticleReference = ko.observable();\r\n};","!function(i){\"use strict\";\"function\"==typeof define&&define.amd?define([\"jquery\"],i):\"undefined\"!=typeof exports?module.exports=i(require(\"jquery\")):i(jQuery)}(function(i){\"use strict\";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'',nextArrow:'',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:\"50px\",cssEase:\"ease\",customPaging:function(e,t){return i('