{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./Typescript/Checkout/Tracking/checkoutTrackingGlobal.ts","webpack:///./Typescript/Tracking/Models/AddToCartTracking/AddToCartTrackingModel.ts","webpack:///./Typescript/Tracking/Models/AddToCartTracking/IAddToCartPush.ts","webpack:///./Typescript/Tracking/Models/AddToCartTracking/IEcondaPush.ts","webpack:///./Typescript/Checkout/checkoutStep3Gast.ts","webpack:///./Typescript/Checkout/Tracking/checkoutTrackingStep3.ts","webpack:///./Typescript/Checkout/Tracking/checkoutTrackingStep1.ts","webpack:///./Typescript/ShoppingList/shoppingListService.ts","webpack:///./scripts/Econda/emos3.js","webpack:///./Typescript/Swiper/SwiperConfig.ts","webpack:///./Typescript/Tracking/Tracking.ts","webpack:///./Typescript/Shared/Trbo/TrboRequestBuilder.js","webpack:///./Typescript/Shared/Trbo/TrboResponseMapper.ts","webpack:///./scripts/enBestellformular.js","webpack:///./Typescript/FactFinder/ffAutosuggest.ts","webpack:///./node_modules/jquery-slimscroll/jquery.slimscroll.js","webpack:///./Typescript/FactFinder/Models/ffConstants.ts","webpack:///./Typescript/FactFinder/ViewRenderer/SucheRenderer.ts","webpack:///./Typescript/ShoppingList/shoppingList.ts","webpack:///./Typescript/Navigation/mobileNav.ts","webpack:///./Typescript/Navigation/mobileNavBuilder.ts","webpack:///./Typescript/Shared/productCaroussel.ts","webpack:///./Typescript/Shared/grid.ts","webpack:///./Typescript/Shared/forms.ts","webpack:///./Typescript/Shared/sendAvailabilityReminder.ts","webpack:///./Typescript/Checkout/checkoutShared.ts","webpack:///./Typescript/Shared/Models/DummyImageSizeEnum.ts","webpack:///./Typescript/OneClickCheckout/oneClickCheckoutTracking.ts","webpack:///./Typescript/Shared/Slider.ts","webpack:///./Typescript/Shared/PriceHelper.ts","webpack:///./Typescript/swiper/swiperconfig.ts","webpack:///./Typescript/Tracking/GoogleTracking.ts","webpack:///./Typescript/Shared/ProductHelper.ts","webpack:///./Typescript/Shared/userCentrics.ts","webpack:///./scripts/functions.js","webpack:///./Typescript/Produktdetails/ProductGoogleTracking.ts","webpack:///./Typescript/Checkout/Tracking/checkoutTrackingHelper.ts","webpack:///./Typescript/Checkout/checkoutGlobal.ts","webpack:///./Typescript/Shared/lazyImageLoader.ts","webpack:///./Typescript/FactFinder/Tracking/factFinderTracking.ts","webpack:///./Typescript/Shared/AlertHelper.ts","webpack:///./Typescript/Checkout/checkoutService.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","1","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","AddToCartTracking","trackingModel","addToCartPush","JSON","stringify","econdaPush","dataLayer","parse","lineItem","price","product","prices","filter","x","priceType","priceTypeId","currentPriceType","titleMain","id","productId","formatPrice2Digits","getProductNetPrice","brand","publisher","publisherName","getBreadcrumbByTocId","mainTocNodeId","Products","category","variant","mediaType","mediaTypeName","quantity","sku","isbnIssn","comboName","authorList","displayFormat","dimension8","availabilityStatusId","isApproximatePrice","isNew","isStandardwerk","isStandard","isTop","isTopArticle","isPreview","addToCartTrackingData","AddToCartTrackingModel","miniBasket","current_basket","ItemCount","itemCount","TotalNet","totalNet","replace","TotalGross","totalGross","Currency","currency","ProductIdsCurrentBasket","productIds","label","event","eventCategory","eventAction","eventLabel","trackingData","this","AddToCartPush","EcondaPush","addTCartPushProducts","addToCartPushProducts","ecommerce","currencyCode","add","products","forEach","trackingProduct","AddToCartPushProduct","dimesion8","econdaPushProducts","emosUrl","ecSiteId","document","head","querySelector","getAttribute","ecContent","ecProducts","EcondaPushProduct","type","pid","group","count","var1","var2","var3","var4","toString","var5","firstPart","secondPart","buildVar5","var6","checkoutService","CheckoutService","step1ContentContainer","$","step2ContentContainer","spinner","isGuestUser","location","search","indexOf","submitOngoing","scrollToFirstError","duration","element","filledValidationErrors","test","text","documentElement","body","animate","scrollTop","offset","top","fillAddress","form","addressClassification","find","val","addressType","addressUsageType","customerNo","company","addition1","addition2","leitwegId","department","salutation","title","firstName","middleName","lastName","streetName","streetNumber","postalCode","city","country","vatNo","postNo","packstationNo","postfachNo","postFilialeNo","phone","industry","additionalInfo","addAddressesToCartResultHandling","html","overwriteOldForm","then","slideDown","addClass","href","container","Promise","resolve","reject","registerEvents","on","tab","removeClass","dataID","attr","openTab","formsWrapper","parents","radioButtonArea","trigger","triggerId","triggerElement","triggerForm","not","prop","is","targetShow","targetHide","hasClass","cart","localStorage","getItem","onloadTracking","formContainerId","formBillingAddress","formEmail","formShippingAddress","targetId","shippingAddressContainer","formShippingAddressId","getShippingAddressForm","shippingIsBilling","isBillingAddressValid","valid","isEmailValid","isShippingAddressValid","dangerAlert","trackPrefixNameProblem","errorInputFields","first","slideUp","billingAddress","emailAdress","shippingAddress","emailAddress","AddAddressesToCartGast","catch","off","addAddressesToCart","Cookies","set","formSepa","isPayPalSelected","isInvoiceSelected","isApplePaySelected","isGooglePaySelected","isSepaValid","isDataUsageAccepted","paymentMethodChange","paymentMethodId","iban","bic","bankName","accountHolder","creditCardReferenceNumber","creditCardCompany","creditCardValidThru","creditCardSaferpayAliasId","paymentSuccessReturnUrl","paymentErrorReturnUrl","paymentCancelReturnUrl","paymentmethodchange","fillPaymentMethodSepa","paymentMethod","AddPaymentmethodToCartGast","console","log","addPaymentmethodToCart","recaptchaCallbackGuest","response","getSaferpayIframe","hide","registrierungTracking","eventValue","ecCustomProperties","Target","rqtype","ecOrderProcess","step","undefined","UC_UI","isInitialized","lineItems","productPrice","singleItemNetPrice","ProductHelper","breadcrumb","pageTitle","checkout","actionField","setTimeout","productPrices","productNetPrice","totalNetPrice","amount","updatedLineItem","newQuantitiy","oldQuantity","quantityChange","Number","parseFloat","Math","abs","deleteItem","completeFunction","ajax","method","dataType","url","complete","addItem","success","updateCounter","showAlert","successMessage","updateShoppingListCount","merklistenElement","message","show","delay","fadeOut","ShoppingListService","bz","DFLTS","bE","U","bx","q","VCL","DO_NOT_TRACK","aB","ck","A","bR","a7","aE","b5","ab","ah","bH","aY","D","bj","aG","cb","aM","b2","k","w","bA","bt","az","ai","e","cu","ct","cv","G","co","kw","cp","nl","ref","suma","all","b7","by","bo","bh","y","b6","J","be","bv","R","bd","bL","a8","am","ao","E","bs","a","bC","N","bJ","bu","B","aD","bm","aP","ax","H","F","ca","b8","bw","bP","parseInt","bl","bB","cz","cB","a5","bq","aS","v","bi","cx","f","bV","an","cy","cw","I","cn","cD","aq","aW","at","aQ","cE","cA","cI","cK","u","isNaN","cJ","cg","Date","aL","cH","cG","M","ch","cC","S","bg","ag","aV","C","V","T","cs","bO","aJ","au","aN","bc","ar","K","bU","b9","aU","cm","a0","cr","bW","aZ","bN","g","bF","ci","props","cfg","rid","a6","ad","b0","bf","L","aX","bM","ce","bb","cc","ac","aF","cf","P","b4","navigator","Y","cd","b3","getTime","ba","ap","bD","aK","bG","aC","b","Q","aw","aO","a3","a4","bp","bT","a9","ay","a2","aT","jp","af","b1","bk","aj","a1","ak","W","bX","bn","aI","aA","isFinite","O","aa","screen","getTimezoneOffset","bY","aR","av","Z","bI","aH","ae","z","setSlideGroupBig","setSlideGroupSmall","karussellElementsLarge","karussellElementsSmall","swiperElements","carouselbig","carouselsmall","lazyloadKarussell","index","karussellTop","karussell","getBoundingClientRect","innerHeight","pageYOffset","initSwiperLarge","classList","error","initSwiperSmall","configureSwiperSlider","autoplay","effect","elements","Swiper","navigation","nextEl","prevEl","loop","autoplayDisableOnInteraction","elem","swiper","slidesPerView","spaceBetween","slidesPerGroup","loopFillGroupWithBlank","pagination","el","clickable","observer","observeParents","breakpoints","1200","1024","768","640","320","resize","width","params","update","render","frequency","windowWidth","addEventListener","hId","hKid","hMail","eventName","timer","tracking_eecPromotionview","loggedInPageType","loggedInResult","loginTracking","eId","pushTrboId","remove","TrackLogin","trackIdLayerComplete","trackIdLayerReduced","trackingParam","trackGooglePromotionEvent_click","trackGoogleAddToMerkliste_click","MerklisteKarusellProductClickedTracking","fixedPriceValue","toFixed","testAboTracking","trackExternalBasketClick","campaignId","campaignName","moduleName","userType","_trboq","_trbo","app","tracker","trackExternalClick","clearTimeout","click","trackNaviEvent_click","buildTrboRequestUrl","slot","requestUrl","parseGlobalData","parseSessionData","parseProductData","parseDataLayerData","parseSegments","segments","udp","segmentData","st","encodeURIComponent","pt","floor","sh","get_user_id","ts","get_sale_count","ust","get_user_start_time","sdt","get_session_duration_total","sc","get_session_count","sid","get_session_id","get_page_type_id","get_current_basket","cic","cic2","get_cic2","session_data","getSessions","sst","_trbo_ud","session","createTime","pvc","sessionSummary","pageViewCount","sd","sessionDuration","passt_sessions","sessions","keys","sessionkey","product_data","now","opts","requestDataTransformer","getProducts","data_layer","_local_storage_data_layer","getUserSummary","externalData","data_layer_key","user","userId","sessionId","num","voucher","userSummary","saleCount","userCreateTime","sessionDurationTotal","sessionCount","getChannelData","showBezugsartOverlay","trboProduct","custom15","custom7","custom11","mapTrboResponseToProduktkarussellModel","trboResponse","tracking","campaign_id","campaign_name","module_id","module_name","user_type","tr","karussellItems","authorstring","imageUrl","image_url","isAnkuendigung","custom3","isEbook","custom2","isTopTitel","custom1","toLocaleString","style","pricePrefix","custom6","productDetailUrl","deeplink_orig","article","warenkorbAnzeigen","isBeckOnline","custom10","kupOrderNo","custom12","dateOfPublicationDescription","lieferstatus","custom14","lieferstatusId","auflage","custom4","releaseYear","custom5","medium","orderSuccess","each","DeleteSearchedISBNS","orderSuccessClose","errorClose","orderFailedClose","orderIncompleteClose","orderFailedISBNClose","orderIncomplete","orders","itemLength","updateTotalOrderPrice","totalPrice","showEproxPrice","String","updateProductData","searchProduct","productCloned","display","clone","isbn","authors","description","availability","caPrice","priceUnformatted","linkToBasket","links","bibliographischeDaten","dateSpan","createElement","innerHTML","appendTo","updateErrorHandler","jqxhr","removeOrderItem","ele","target","closest","parentNode","childElementCount","getEnBestellformData","email","address","zipCode","tel","fax","furtherInformation","orderItems","getOrderList","total","array","order","pricePerUnit","ready","trim","validateIsbn","preventDefault","checkValidity","inputFields","statusCode","status","contentType","markSuggest","suggestion","searchquery","re","RegExp","matched","umlauteAnpassen","query","model","suggestions","displaysElements","isMobile","hiddenSuggestElements","toUpperCase","suchvorschlag","markedSuggest","span","append","availabilityStatusFilter","includes","attributes","titelvorschlag","image","setDummyImage","deeplink","urheberzeile","servicethema","markedSuggestThema","spanThema","formattedQuery","markedCategory","spanCategory","fillSuggestContainer","getAutoSuggestResults","changeCurIcon","children","area","factfinderSuggestTracking","mouseup","container_01","Element","has","container_02","container_03","CloseDropDownWindows","jQuery","fn","extend","slimScroll","options","height","size","color","position","distance","start","opacity","alwaysVisible","disableFadeOut","railVisible","railColor","railOpacity","railDraggable","railClass","barClass","wrapperClass","allowPageScroll","wheelStep","touchScrollStep","borderRadius","railBorderRadius","isOverPanel","isOverBar","isDragg","queueHide","touchDif","barHeight","percentScroll","lastScroll","divS","releaseScroll","me","parent","bar","siblings","rail","getBarHeight","isPlainObject","css","h","scrollTo","scrollBy","unwrap","scrollContent","wrapper","overflow","background","zIndex","BorderRadius","MozBorderRadius","WebkitBorderRadius","posCss","right","left","wrap","$doc","pageY","currTop","hideBar","unbind","stopPropagation","hover","showBar","originalEvent","touches","outerHeight","_onWheel","attachEvent","delta","wheelDelta","detail","srcTarget","srcElement","returnValue","isWheel","isJump","maxTop","min","max","ceil","scrollHeight","offsetTop","msg","stop","fadeIn","slimscroll","lastClickedFilterParentId","setFilter","filterUrl","resultCount","breadCrumbTrailItem","searchQuery","mainModel","sortList","searchResult","history","pushState","btoa","breadCrumbTrailItems","Value","nullOrEmpty","next","groups","toLowerCase","filterHolder","txtInput","removeAttr","selectedElements","associatedFieldName","createFilterCheckbox","trueElement","searchParams","selected","createBoolFilter","clickHandlerAjaxSearch","filterGroups","insertAfter","filterGroupElements","prepend","recordCount","createFilterCheckboxMobile","createBoolFilterMobile","createFilterGroupMobile","records","record","__ORIG_POSITION__","paging","currentPage","resultsPerPage","bruttopreis","searchSimilarity","neuerscheinungMerkmal","voranzeigeMerkmal","toptitelMerkmal","standardwerkMerkmal","Medienname","match","setLabels","produktURL","productNumber","produktAbbildung","haupttitel","untertitelzusatz","untertitel","substring","getUntertitel","darstellungsform","createLinkSpan","erscheinungsjahr","medienname","verlag","isbN_ISSN_Type","priceNet","preisvariantenMerkmal","caPreisMerkmal","formattedPrice","DelocaleString","lngAvailabilityStatusID","buildBeckOnlineLink","warenkorbsymbolAnzeigen","basketButton","showModal","checkoutAdd","displayName","createFilterTags","sortsList","meta","content","appendChild","origin","pathname","link","rel","previousLink","fullUrlCrawler","nextLink","pageLinks","number","firstLink","preDotsLi","li","lastLink","postDotsLi","createPagination","mobileFunctions","cutTextWholeWords","dataSpan","fieldId","getElementById","filterValue","shoppingListService","xhr","trackMerklisteInteraction_click","navHelper","MobileNavBuilder","updateMobileNavi","buildMobileNavi","empty","showBack","backLink","backId","parentWeitere","parentFachbereichDetail","mobileNavItems","navItem","navItemProtoType","hasChildren","fachbereichDetail","weitereFachgebiete","merklisteLinks","addMerklisteForLoggedInUser","addLogInLinkForLoggedOutUser","trboId","hideTrboSliders","trboSliders","trboDynamicSliders","renderTrboSliders","renderDynamicTrboSliders","handleTrboBuehnen","trboDynamicBuehnen","getServicesBaseInfo","service","consent","dispatchEvent","Event","scroll","slotName","encodeURI","target_url","desktop_url","tablet_url","mobile_url","trboProducts","CreateSliderContent","sliderGuid","newsletterEntry","grecaptcha","recaptchaResponse","getResponse","trackingallowed","listNameInxmail","trackingPermissionMainButtonValue","additionalParamsJson","additionParamsList","parseJSON","extendedForm","firstname","lastname","setCustomValidity","post","trackNewsletterRegisterEvent","fail","loginFlag","MerklisteKarusellInViewTracking","passwordInput","currentProductId","currentTrackingEvent","modalForm","intiRecaptcha","recaptchaAllowed","recaptchaId","checkForRecaptcha","trackingEvent","script","modal","onload","src","widgetId","validation","reminderEntry","availabilityReminderSubmitTracking","reset","selectedBasketItemToDelete","itemToDeleteId","basketContainer","fillBasket","currentItemList","basketItemListClone","reverse","addLineItemToBasket","giftLineItems","addGiftLineItemToBasket","replaceWith","currentCart","areTotalPricesApproximated","totalGrossPrice","currencyIsoCode","basketItem","fillProductContainer","gift","seoOptimizedUrlPart","hasProduktabbildung","getImagePath","getDummyImage","DummyImageSize","large","titleMainHead","edition","publicationYear","totalItemGrossPrice","priceDescriptionShort","priceTypeDescription","canNotBeReturned","mediaTypeId","checkAvailabilityStatus","getAvailabilityStatus","mediaGroupName","getDRMInfo","dRMId","drmInfo","drmInfoLinks","bindingType","drmInfoRechts","getSystemanforderungenLink","systemanforderungenLink","deliveryTypeId","chosenDeliveryType","priceDescriptionLink","getAdditionalPriceInfoByDelivertypeId","additionalPriceInfo","singleItemGrossPrice","some","loadImage","imageWidth","round","buildLineItemChange","lineitem","lineItemChange","lineItemId","updateLineItem","newCart","deleteLineItemFromBasket","deleteElement","basketitem","lineItemToDelete","getLineItemById","newQuantity","deleteLineItem","deletedLineItem","getItemCountForBasket","onChangeQuantityTracking","overrideEmptyBasket","getItemCountInBasket","setItemCountForBasket","TrackMiniBasket","items","basketOverlay","item","itemPrototype","availabilityStatus","seoPath","singleItemPrice","totalItemPrice","fillBasketOverlay","hideModal","counter","currentvalue","prev","countElement","lineItemToUpdate","oldQuantitiy","updateQuantityOfLineItem","setNewQuantityOfBasketItem","merklisteModal","modalId","currentLineItem","produktvariantenContainer","checkItemPrototype","pricetypeId","newCheckItem","priceAmount","priceGross","specialConditions","fillProduktVariantenModal","checkitem","fillBezugsartenModal","button","parentContainer","newPricetypeId","updatePriceTypeOfLineItem","_","setNewPricetypeIdOfBasketItem","newChosenDeliveryType","updateChosenDeliveryTypeOfLineItem","setNewChosenDeliveryTypeOfBasketItem","getAvailabilityInfoText","productItem","getEditionText","sliderPrototype","sliderId","trbotracking","sliderPrototypes","labelWrapper","newLabel","topLabel","standardwerkLabel","ankuendigungLabel","ebookLabel","addToCartButton","loginPageUrl","addContainerViewTracking","isCentPrice","windowHeight","trackGooglePromotionEvent_view","promoView","promotions","icampv","promoClick","icampc","trboPromotionViewTracking","IsVisibleElement","usertype","trackExternalView","top_of_element","bottom_of_element","top_of_screen","pageType","external_user_id","externalIdHash","emailHash","kupCustomerNumberHash","action","storedAvailabilityStatusList","sessionStorage","availabilityStatusList","setItem","drmId","drmMapping","drmMappingItem","DRmid","AnzeigeText","storedOrderableAvailabilityStatusList","orderableAvailabilityStatusList","deliverytypeId","priceinfo","tocId","imageSize","DeliveryTypeID","Bruttopreis","PreisvariantenMerkmal","Urheberzeile","Verlag","createPlaceholderHtml","templateId","lazy","containerClass","className","sitekey","ccGuestCallback","callback","showrecaptcha","initUserCentrics","iframe","youTubeAllowed","ucSrc","checkForYouTubeIframe","googleMapsAllowed","checkForGoogleMapsIframe","yumpuAllowed","checkForYumpuIframe","podigeeAllowed","checkForPodigeeIframe","isTrboAllowed","placeholderUrl","protocol","hostname","port","onerror","sep","grp","dec","x_integer","split","x_fraction","x_fractionString","sx","join","doc","parentMenuText","currentParent","findPopupHeader","getWrapper","subUl","getChildLevel","getParentLevel","naviSlimScroll","switchChevron","slideToggle","toggleCatMenu","parentElement","allElementsToCut","Array","cutElement","getElementsByClassName","clientHeight","offsetHeight","textContent","closeAlert","doNotShowAgain","require","onscroll","cElement","cName01","cName02","usedSearchTerm","toggleClass","ttDataTarget","currentEl","moretext","substr","toggle","$expand","iconEl","currentID","allTabIcons","tabPane","getID","allKarussellAuthorElements","authorElement","allKarussellTitleElements","titleElement","addressform","gewinnspielForm","antwort","vorname","nachname","street","dataUsageAccepted","newsletterAccepted","gewinnspielEntry","modelstate","setModelstateErrorsGewinnspiel","responseJSON","ModelState","productGoogleTracking","productsGoogleTrackingContainer","CalculatePrice","currentPrice","currentPriceTypeId","highestPriceDescription","highestPrice","laufzeitFaktor","getLaufzeitFaktor","aboWert","summeProbeAbosWerte","getHighestValidPriceFromLineItem","currentDate","validPrices","validFrom","validUntil","map","summeProbeAbosGrossWerte","hoechsterPreis","priceCalculation","highestPriceAmount","CalculatePriceFromLineItem","currentPricetypeId","CalculatePriceFromPriceCalculationModel","spinnerModal","ChosenDeliveryType","isExpressKauf","activeButtonClickTracking","addItemToBasket","addProductToBasket","AddToCartTrackingLineItem","expressKauf","getFittingImage","imageSizeOptions","SizeOptions","fillModalWeiterShoppenRecomendation","fillModalWeiterShoppen","innerWidth","TrackBasketOverlayInteraction","noModal","auswahlButton","hideRecommandation","productPrototype","replaceImageHeight","sizeOptions","backgroundOptions","filteredKeys","lazyloadImages","querySelectorAll","lazyload","img","dataset","sizeoptions","srcset","sizes","backgroundImage","factfinderCartTracking","factfinderCheckoutTracking","origPos","pos","page","pagesize","simi","factFinderCampaign","searchResultClickTracking","elementId","responseText","showBasket","addAdditionalInfoToCart","orderCode","customerMessage","OrderCode","CustomerMessage","headers","addDiscountToCart","code","addItemByIsbnSearch","addPaymentShippingDataToCart","addresschange","paymentmethodChange","bskAdditionalInfo","relatedBusinessPartnerId","updateBillingaddressInCart","billingAddressId","getAvailableDeliveryAddresses","isBusiness","shippingAsBilling","reload","AddArvatoAddressesToCart","addresses"],"mappings":"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","file":"app.d1aa99adf1b8c31dcccb.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t1: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([204,0]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","declare var dataLayer: any[];\r\nimport {\r\n IAddToCartTracking,\r\n ITrackingProduct,\r\n IAddToCartTrackingData,\r\n AddToCartTrackingModel,\r\n} from '../../Tracking/Models/AddToCartTracking/AddToCartTrackingModel';\r\nimport ILineItem = CheckoutflowReponse.ILineItem;\r\nimport { getProductNetPrice } from '../Tracking/checkoutTrackingHelper';\r\nimport { formatPrice2Digits } from '../../Shared/PriceHelper';\r\nimport { getBreadcrumbByTocId } from '../../Shared/ProductHelper';\r\n\r\nexport function AddToCartTracking(trackingModel: IAddToCartTracking) {\r\n if (trackingModel) {\r\n let addToCartPush = JSON.stringify(trackingModel.addToCartPush);\r\n let econdaPush = JSON.stringify(trackingModel.econdaPush);\r\n dataLayer.push(JSON.parse(econdaPush));\r\n dataLayer.push(JSON.parse(addToCartPush));\r\n }\r\n}\r\n\r\nexport async function AddToCartTrackingLineItem(lineItem: ILineItem) {\r\n const price = lineItem.product.prices.filter((x) => x.priceType.priceTypeId ==\r\n lineItem.currentPriceType.priceTypeId)[0];\r\n \r\n let addToCartTrackingData = {\r\n Products: [\r\n {\r\n name: lineItem.product.titleMain,\r\n id: lineItem.product.productId,\r\n price: +formatPrice2Digits(getProductNetPrice(lineItem), true),\r\n brand: lineItem.product.publisher.publisherName,\r\n category: await getBreadcrumbByTocId(\r\n lineItem.product.mainTocNodeId\r\n ),\r\n variant: lineItem.product.mediaType.mediaTypeName,\r\n quantity: 1,\r\n sku: lineItem.product.isbnIssn,\r\n comboName: lineItem.product.authorList !== null ?\r\n lineItem.product.authorList +\r\n ' - ' +\r\n lineItem.product.titleMain : lineItem.product.titleMain,\r\n displayFormat: lineItem.product.displayFormat,\r\n dimension8: lineItem.product.displayFormat,\r\n publisherName: lineItem.product.publisher.publisherName,\r\n availabilityStatusId: lineItem.product.availabilityStatusId,\r\n isApproximatePrice: price?.isApproximatePrice,\r\n isNew: lineItem.product.isNew,\r\n isStandardwerk: lineItem.product.isStandard,\r\n isTop: lineItem.product.isTopArticle,\r\n isPreview: lineItem.product.isPreview\r\n },\r\n ] as ITrackingProduct[],\r\n } as IAddToCartTrackingData;\r\n let addToCartTrackingModel = new AddToCartTrackingModel(\r\n addToCartTrackingData\r\n );\r\n AddToCartTracking(addToCartTrackingModel);\r\n}\r\n\r\nexport function TrackMiniBasket(miniBasket: any) {\r\n if (miniBasket) {\r\n dataLayer.push({\r\n current_basket: {\r\n ItemCount: miniBasket.itemCount,\r\n TotalNet: miniBasket.totalNet?.replace(',', '.'),\r\n TotalGross: miniBasket.totalGross?.replace(',', '.'),\r\n Currency: miniBasket.currency,\r\n ProductIdsCurrentBasket: miniBasket.productIds,\r\n },\r\n });\r\n }\r\n else {\r\n dataLayer.push({\r\n current_basket: {\r\n ItemCount: 0,\r\n TotalNet: 0,\r\n TotalGross: 0,\r\n Currency: 'EUR',\r\n ProductIdsCurrentBasket: '',\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport function TrackBasketOverlayInteraction(label: string) {\r\n if (label) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'navigation data',\r\n eventAction: 'meta-cart_interaction',\r\n eventLabel: label,\r\n });\r\n\r\n dataLayer.push({\r\n 'event': \"econdaEvent\",\r\n 'ecCustomProperties': {\r\n 'Target' : ['navigation data', 'meta-cart_interaction' + '/' + label, 0, 'd'], \r\n 'rqtype' : 'hiddenpi'\r\n }\r\n });\r\n }\r\n}\r\n","import { AddToCartPush, IAddToCartPush } from \"./IAddToCartPush\";\r\nimport { EcondaPush, IEcondaPush } from \"./IEcondaPush\";\r\n\r\nexport class AddToCartTrackingModel implements IAddToCartTracking{\r\n constructor(trackingData: IAddToCartTrackingData) {\r\n this.addToCartPush = new AddToCartPush(trackingData.Products);\r\n this.econdaPush = new EcondaPush(trackingData.Products);\r\n }\r\n addToCartPush: IAddToCartPush;\r\n econdaPush: IEcondaPush;\r\n}\r\n\r\nexport interface IAddToCartTracking {\r\n addToCartPush: IAddToCartPush;\r\n econdaPush: IEcondaPush;\r\n}\r\n\r\nexport interface IAddToCartTrackingData {\r\n Products: ITrackingProduct[];\r\n}\r\n\r\nexport interface ITrackingProduct {\r\n name: string;\r\n id: number;\r\n price: number;\r\n brand: string;\r\n category: string;\r\n variant: string;\r\n quantity: number;\r\n sku: string;\r\n comboName: string;\r\n displayFormat: string;\r\n publisherName: string;\r\n dimension8: string;\r\n availabilityStatusId: number;\r\n isApproximatePrice: boolean;\r\n isNew: boolean;\r\n isStandardwerk: boolean;\r\n isTop: boolean;\r\n isPreview: boolean;\r\n}\r\n\r\n\r\n\r\n","import { ITrackingProduct } from './AddToCartTrackingModel';\r\n\r\nexport class AddToCartPush implements IAddToCartPush {\r\n constructor(addTCartPushProducts: ITrackingProduct[]) {\r\n this.event = 'eec.addToCart';\r\n this.ecommerce = {} as IEcommerce;\r\n this.ecommerce.currencyCode = 'EUR';\r\n this.ecommerce.add = {} as IAdd;\r\n this.ecommerce.add.products = mapAddToCartPushProducts(addTCartPushProducts);\r\n }\r\n event: string;\r\n ecommerce: IEcommerce;\r\n}\r\n\r\nexport interface IAddToCartPush {\r\n event: string;\r\n ecommerce: IEcommerce;\r\n}\r\n\r\nclass AddToCartPushProduct {\r\n constructor(trackingProduct: ITrackingProduct) {\r\n this.name = trackingProduct.name;\r\n this.id = trackingProduct.id;\r\n this.price = trackingProduct.price;\r\n this.brand = trackingProduct.brand;\r\n this.category = trackingProduct.category;\r\n this.variant = trackingProduct.variant;\r\n this.quantity = trackingProduct.quantity;\r\n this.dimesion8 = trackingProduct.displayFormat;\r\n }\r\n name: string;\r\n id: number;\r\n price: number;\r\n brand: string;\r\n category: string;\r\n variant: string;\r\n quantity: number;\r\n dimesion8: string;\r\n}\r\n\r\nexport interface IAddToCartPushProduct {\r\n name: string;\r\n id: number;\r\n price: number;\r\n brand: string;\r\n category: string;\r\n variant: string;\r\n quantity: number;\r\n dimesion8: string;\r\n}\r\n\r\ninterface IEcommerce {\r\n currencyCode: string;\r\n add: IAdd;\r\n}\r\n\r\ninterface IAdd {\r\n products: IAddToCartPushProduct[];\r\n}\r\n\r\nfunction mapAddToCartPushProducts(trackingProducts: ITrackingProduct[]): IAddToCartPushProduct[] {\r\n let addToCartPushProducts = [] as IAddToCartPushProduct[];\r\n trackingProducts.forEach((trackingProduct: ITrackingProduct) => {\r\n addToCartPushProducts.push(new AddToCartPushProduct(trackingProduct));\r\n });\r\n return addToCartPushProducts;\r\n}\r\n","import { ITrackingProduct } from './AddToCartTrackingModel';\r\n\r\nexport class EcondaPush implements IEcondaPush {\r\n constructor(products: ITrackingProduct[]) {\r\n this.emosUrl = '/scripts/Econda/emos3.js';\r\n this.ecSiteId = document.head.querySelector('[name~=econdaurl][content]').getAttribute('content');\r\n this.ecContent = '';\r\n this.ecProducts = mapEcondaPushProducts(products);\r\n }\r\n emosUrl: string;\r\n ecSiteId: string;\r\n ecContent: string;\r\n ecProducts: IEcondaPushProduct[];\r\n}\r\n\r\nexport interface IEcondaPush {\r\n emosUrl: string;\r\n ecSiteId: string;\r\n ecContent: string;\r\n ecProducts: IEcondaPushProduct[];\r\n}\r\n\r\nclass EcondaPushProduct implements IEcondaPushProduct {\r\n constructor(trackingProduct: ITrackingProduct) {\r\n this.type = 'c_add';\r\n this.pid = trackingProduct.id;\r\n this.sku = trackingProduct.sku;\r\n this.name = trackingProduct.comboName;\r\n this.price = trackingProduct.price;\r\n this.group = trackingProduct.category;\r\n this.count = trackingProduct.quantity;\r\n this.var1 = trackingProduct.variant;\r\n this.var2 = trackingProduct.displayFormat;\r\n this.var3 = trackingProduct.publisherName;\r\n this.var4 = trackingProduct.availabilityStatusId.toString();\r\n this.var5 = buildVar5(trackingProduct);\r\n this.var6 = trackingProduct.isApproximatePrice ? 'CaPreis' : 'Festpreis';\r\n }\r\n type: string;\r\n pid: number;\r\n sku: string;\r\n name: string;\r\n price: number;\r\n group: string;\r\n count: number;\r\n var1: string;\r\n var2: string;\r\n var3: string;\r\n var4: string;\r\n var5: string;\r\n var6: string;\r\n dimension8: string;\r\n}\r\n\r\nexport interface IEcondaPushProduct {\r\n type: string;\r\n pid: number;\r\n sku: string;\r\n name: string;\r\n price: number;\r\n group: string;\r\n count: number;\r\n var1: string;\r\n var2: string;\r\n var3: string;\r\n var4: string;\r\n var5: string;\r\n var6: string;\r\n dimension8: string;\r\n}\r\n\r\nfunction mapEcondaPushProducts(trackingProducts: ITrackingProduct[]): IEcondaPushProduct[] {\r\n let econdaPushProducts = [] as IEcondaPushProduct[];\r\n trackingProducts.forEach((trackingProduct: ITrackingProduct) => {\r\n econdaPushProducts.push(new EcondaPushProduct(trackingProduct));\r\n });\r\n return econdaPushProducts;\r\n}\r\n\r\nfunction buildVar5(trackingProduct: ITrackingProduct): string {\r\n let firstPart = 'none';\r\n if (trackingProduct.isTop === true) {\r\n firstPart = 'isTop';\r\n } else if (trackingProduct.isStandardwerk === true) {\r\n firstPart = 'isStandardwerk';\r\n }\r\n\r\n var secondPart = 'none';\r\n if (trackingProduct.isNew == true) {\r\n secondPart = 'isNew';\r\n } else if (trackingProduct.isPreview == true) {\r\n secondPart = 'isPreview';\r\n }\r\n\r\n return `${firstPart}_${secondPart}`;\r\n}\r\n","import { dangerAlert } from '../Shared/AlertHelper';\r\nimport { onloadTracking } from './Tracking/checkoutTrackingStep3';\r\nimport { CheckoutService } from './checkoutService';\r\nimport IBillingAddress = CheckoutflowRequest.IBillingAddress;\r\nimport IShippingAddress = CheckoutflowRequest.IShippingAddress;\r\nimport IPaymentMethodChange = CheckoutflowRequest.IPaymentMethodChange;\r\nimport ICart = CheckoutflowReponse.ICart;\r\nimport { trackPrefixNameProblem } from '../Tracking/GoogleTracking';\r\nconst checkoutService = new CheckoutService();\r\nconst step1ContentContainer: JQuery = $('#step1ContentContainer');\r\nconst step2ContentContainer: JQuery = $('#step2ContentContainer');\r\nconst spinner: JQuery = $('.checkoutSpinner');\r\nlet isGuestUser: boolean = window.location.search.indexOf('isGuestOrder') > -1;\r\ndeclare var Cookies: any;\r\nvar submitOngoing = false;\r\n\r\n$(() => {\r\n let cart: ICart = JSON.parse(localStorage.getItem('currentCart')) as ICart;\r\n\r\n if (window.location.search.indexOf('step2') !== -1) {\r\n onloadTracking(cart, '4_Zahlarten', 4);\r\n } else if (\r\n window.location.search.indexOf('isGuestOrder') !== -1 ||\r\n window.location.search.indexOf('isNewCustomer') !== -1\r\n ) {\r\n onloadTracking(cart, '3_Adressdaten');\r\n }\r\n\r\n $('.checkout_step_3_1_submit').on('click', function() {\r\n let formContainerId = $('#formRechnungsadresse input[name=optradiorechnungsadresse]:checked').attr(\r\n 'data-targetShow'\r\n );\r\n let formBillingAddress = $(formContainerId).find('form');\r\n let formEmail = $(step1ContentContainer).find('.email_Form');\r\n let formShippingAddress = getShippingAddressForm();\r\n let shippingIsBilling: boolean =\r\n step1ContentContainer.find('#radio_SetShippingAddressAsBillingAddress:checked').length > 0;\r\n let isBillingAddressValid = formBillingAddress.valid();\r\n let isEmailValid = isGuestUser && formEmail.length > 0 ? formEmail.valid() : false;\r\n let isShippingAddressValid = formShippingAddress.length > 0 ? formShippingAddress.valid() : shippingIsBilling;\r\n\r\n if (formShippingAddress.length <= 0 && !shippingIsBilling) {\r\n dangerAlert('Sie müssen eine Lieferadresse auswählen.');\r\n }\r\n\r\n const middleName = $(formBillingAddress)\r\n .find('#MiddleName')\r\n .val();\r\n const lastName = $(formBillingAddress)\r\n .find('#LastName')\r\n .val();\r\n\r\n if (middleName && !lastName) {\r\n trackPrefixNameProblem();\r\n }\r\n\r\n if (!isBillingAddressValid || (!isEmailValid && isGuestUser) || !isShippingAddressValid) {\r\n const errorInputFields = $('.input-validation-error');\r\n errorInputFields.attr('aria-invalid', 'true');\r\n scrollToFirstError();\r\n errorInputFields.first().trigger('focus');\r\n return;\r\n }\r\n\r\n step1ContentContainer.slideUp('fast', function() {\r\n spinner.removeClass('hide');\r\n });\r\n\r\n let billingAddress: IBillingAddress = fillAddress(formBillingAddress);\r\n let emailAdress: string = isGuestUser ? (formEmail.find('.input_Email').val() as string) : null;\r\n let shippingAddress: IShippingAddress = fillAddress(formShippingAddress);\r\n\r\n addAddressesToCart(billingAddress, shippingAddress, emailAdress, shippingIsBilling, isGuestUser);\r\n });\r\n\r\n $('.checkout_step_3_2_submit').on('click', function() {\r\n Cookies.set('neworguest', 'true');\r\n Cookies.set('visitedStep3', 'true');\r\n\r\n let formSepa = getSepaForm();\r\n let isPayPalSelected: boolean = step2ContentContainer.find('#radio_paypal:checked').length > 0;\r\n let isInvoiceSelected: boolean = step2ContentContainer.find('#radio_Invoice:checked').length > 0;\r\n let isApplePaySelected: boolean = step2ContentContainer.find('#radio_applepay:checked').length > 0;\r\n let isGooglePaySelected: boolean = step2ContentContainer.find('#radio_googlepay:checked').length > 0;\r\n let isSepaValid = formSepa.length > 0 ? formSepa.valid() : false;\r\n let isDataUsageAccepted: boolean = step2ContentContainer.find('#DataUsageAccepted:checked').length > 0;\r\n if (!isSepaValid && !isPayPalSelected && !isInvoiceSelected && !isApplePaySelected && !isGooglePaySelected) {\r\n scrollToFirstError();\r\n return;\r\n }\r\n\r\n let paymentMethodChange: IPaymentMethodChange = CreatePaymentmethodChange();\r\n if (isPayPalSelected) {\r\n paymentMethodChange.type = 'PayPal';\r\n } else if (isInvoiceSelected) {\r\n paymentMethodChange.type = 'Invoice';\r\n } else if (isApplePaySelected) {\r\n paymentMethodChange.type = 'ApplePay';\r\n } else if (isGooglePaySelected) {\r\n paymentMethodChange.type = 'GooglePay';\r\n } else {\r\n paymentMethodChange = fillPaymentMethodSepa(paymentMethodChange, formSepa);\r\n if (!isDataUsageAccepted) {\r\n $('#dataUsageError').removeClass('hide');\r\n scrollToFirstError();\r\n return;\r\n }\r\n }\r\n\r\n step2ContentContainer.slideUp('fast', function() {\r\n spinner.removeClass('hide');\r\n });\r\n addPaymentmethodToCart(paymentMethodChange, isDataUsageAccepted, isGuestUser);\r\n });\r\n registerEvents();\r\n\r\n if ($('#requestFailed').val()) {\r\n dangerAlert($('#requestFailed').val());\r\n }\r\n\r\n $(document.body).on('change', '#rechnungsadressePrivatForm .input_FirstName', function() {\r\n $('#packstationForm .input_FirstName').val($(this).val());\r\n $('#postfilialePrivatForm .input_FirstName').val($(this).val());\r\n });\r\n\r\n $(document.body).on('change', '#rechnungsadressePrivatForm .input_LastName', function() {\r\n $('#packstationForm .input_LastName').val($(this).val());\r\n $('#postfilialePrivatForm .input_LastName').val($(this).val());\r\n });\r\n\r\n $(document.body).on('change', '#rechnungsadressePrivatForm .input_Salutation', function() {\r\n $('#packstationForm .input_Salutation').val($(this).val());\r\n $('#postfilialePrivatForm .input_Salutation').val($(this).val());\r\n });\r\n\r\n prefillDeliveryPostAddresses();\r\n});\r\n\r\nexport const recaptchaCallbackGuest = function(response) {\r\n checkoutService.getSaferpayIframe(response).then(response => {\r\n const iframeUrl = response as string;\r\n if (iframeUrl) {\r\n $('.kreditkartenIframeWrapper iframe').attr('src', response as string);\r\n $('.recpatcha-container').hide();\r\n $('.cc-iframe-container').removeClass('hide');\r\n }\r\n });\r\n};\r\n\r\nfunction prefillDeliveryPostAddresses() {\r\n if (window.location.search.indexOf('isNewCustomer') !== -1) {\r\n $('#packstationForm .input_FirstName').val($('#FirstName').val());\r\n $('#postfilialePrivatForm .input_FirstName').val($('#FirstName').val());\r\n\r\n $('#packstationForm .input_LastName').val($('#LastName').val());\r\n $('#postfilialePrivatForm .input_LastName').val($('#LastName').val());\r\n\r\n $('#packstationForm .input_Salutation').val($('#Salutation').val());\r\n $('#postfilialePrivatForm .input_Salutation').val($('#Salutation').val());\r\n }\r\n}\r\n\r\nfunction getShippingAddressForm(): JQuery {\r\n let checkedElement = step1ContentContainer.find('input[type=radio][name=lieferadresse]:checked');\r\n let targetId = checkedElement.parents('.lieferadressen_area').attr('data-target');\r\n let shippingAddressContainer = $(targetId);\r\n if (targetId == '#formPackstation') {\r\n return shippingAddressContainer.find('form');\r\n }\r\n let formShippingAddressId = shippingAddressContainer.find('.radioButtonAddress:checked').attr('data-targetShow');\r\n let formShippingAddress = $(formShippingAddressId).find('form');\r\n return formShippingAddress;\r\n}\r\n\r\nfunction getSepaForm(): JQuery {\r\n let checkedElement = step2ContentContainer.find('input[type=radio][name=zahlungsweise]:checked');\r\n let targetId = checkedElement.parents('.zahlungsweisen_area').attr('data-target');\r\n return $(targetId).find('form');\r\n}\r\n\r\nfunction scrollToFirstError() {\r\n var filledValidationErrors = $('.validationMessage').filter(function() {\r\n return /.*\\S.*/.test($(this).text());\r\n });\r\n scrollTo(filledValidationErrors);\r\n}\r\n\r\nfunction fillAddress(form: JQuery) {\r\n if (!form || form.length == 0) {\r\n return null;\r\n }\r\n return {\r\n addressClassification: form.find('#AddressClassification').val() as string,\r\n addressType: form.find('#AddressType').val() as string,\r\n addressUsageType: form.find('#AddressUsageType').val() as string,\r\n customerNo: form.find('#CustomerNo').val() as string,\r\n company: form.find('input[id$=Company]').val() as string,\r\n addition1: form.find('input[id$=Addition1]').val() as string,\r\n addition2: form.find('input[id$=Addition2]').val() as string,\r\n leitwegId: form.find('input[id$=LeitwegId]').val() as string,\r\n department: form.find('input[id$=Department]').val() as string,\r\n salutation: form.find('select[id$=Salutation]').val() as string,\r\n title: form.find('select[id$=Title]').val() as string,\r\n firstName: form.find('input[id$=FirstName]').val() as string,\r\n middleName: '',\r\n lastName: form.find('input[id$=LastName]').val() as string,\r\n streetName: form.find('input[id$=StreetName]').val() as string,\r\n streetNumber: form.find('input[id$=StreetNumber]').val() as string,\r\n postalCode: form.find('input[id$=PostalCode]').val() as string,\r\n city: form.find('input[id$=City]').val() as string,\r\n country: form.find('select[id$=Country]').val() as string,\r\n vatNo: form.find('input[id$=VatNo]').val() as string,\r\n postNo: form.find('input[id$=PostNo]').val() as string,\r\n packstationNo: form.find('input[id$=PackstationNo]').val() as string,\r\n postfachNo: form.find('input[id$=PostfachNo]').val() as string,\r\n postFilialeNo: form.find('input[id$=PostFilialeNo]').val() as string,\r\n phone: form.find('input[id$=Phone]').val() as string,\r\n industry: [form.find('input[id$=Industry]').val() as string],\r\n additionalInfo: form.find('input[id$=AdditionalInfo]').val() as string,\r\n };\r\n}\r\n\r\nfunction CreatePaymentmethodChange(): IPaymentMethodChange {\r\n return {\r\n paymentMethodId: '',\r\n type: '',\r\n iban: '',\r\n bic: '',\r\n bankName: '',\r\n accountHolder: '',\r\n creditCardReferenceNumber: '',\r\n creditCardCompany: '',\r\n creditCardValidThru: '',\r\n creditCardSaferpayAliasId: '',\r\n paymentSuccessReturnUrl: '',\r\n paymentErrorReturnUrl: '',\r\n paymentCancelReturnUrl: '',\r\n };\r\n}\r\n\r\nfunction fillPaymentMethodSepa(paymentmethodchange: IPaymentMethodChange, form: JQuery) {\r\n if (!form || form.length == 0) {\r\n paymentmethodchange;\r\n }\r\n paymentmethodchange.accountHolder = form.find('#AccountHolder').val() as string;\r\n paymentmethodchange.iban = form.find('#Iban').val() as string;\r\n paymentmethodchange.bic = form.find('#Bic').val() as string;\r\n paymentmethodchange.type = 'SEPA';\r\n return paymentmethodchange;\r\n}\r\n\r\nfunction addAddressesToCart(\r\n billingAddress: IBillingAddress,\r\n shippingAddress: IShippingAddress,\r\n emailAddress: string,\r\n shippingIsBilling: boolean,\r\n isGuestUser: boolean\r\n) {\r\n if (submitOngoing) {\r\n return;\r\n }\r\n submitOngoing = true;\r\n checkoutService\r\n .AddAddressesToCartGast(billingAddress, shippingAddress, emailAddress, shippingIsBilling, isGuestUser)\r\n .then(html => {\r\n addAddressesToCartResultHandling(html);\r\n submitOngoing = false;\r\n })\r\n .catch(html => {\r\n step1ContentContainer.slideDown('slow', function() {\r\n spinner.addClass('hide');\r\n });\r\n submitOngoing = false;\r\n })\r\n .then(() => {\r\n step1ContentContainer.off();\r\n registerEvents();\r\n submitOngoing = false;\r\n });\r\n}\r\n\r\nexport function addAddressesToCartResultHandling(html) {\r\n if (html) {\r\n overwriteOldForm(step1ContentContainer, html).then(() => {\r\n step1ContentContainer.slideDown('slow', function() {\r\n spinner.addClass('hide');\r\n scrollToFirstError();\r\n });\r\n });\r\n } else {\r\n window.location.href += '&step2=true';\r\n }\r\n}\r\n\r\nfunction addPaymentmethodToCart(\r\n paymentMethod: IPaymentMethodChange,\r\n isDataUsageAccepted: boolean,\r\n isGuestUser: boolean\r\n) {\r\n if (submitOngoing) {\r\n return;\r\n }\r\n submitOngoing = true;\r\n checkoutService\r\n .AddPaymentmethodToCartGast(paymentMethod, isDataUsageAccepted, isGuestUser)\r\n .then(html => {\r\n if (html) {\r\n overwriteOldForm(step2ContentContainer, html).then(() => {\r\n step2ContentContainer.slideDown('slow', function() {\r\n spinner.addClass('hide');\r\n scrollToFirstError();\r\n });\r\n });\r\n } else {\r\n window.location.href = '/pruefen-bestellen/';\r\n }\r\n })\r\n .catch(html => {\r\n console.log('error');\r\n step2ContentContainer.slideDown('slow', function() {\r\n spinner.addClass('hide');\r\n });\r\n })\r\n .then(() => {\r\n console.log('complete');\r\n step2ContentContainer.off();\r\n registerEvents();\r\n submitOngoing = false;\r\n });\r\n}\r\n\r\nfunction overwriteOldForm(container: JQuery, html: string) {\r\n return new Promise((resolve, reject) => {\r\n container.html(html);\r\n resolve();\r\n });\r\n}\r\n\r\nfunction registerEvents() {\r\n $('#step1ContentContainer .form-action-el, #step2ContentContainer .form-action-el').on('click', function(event) {\r\n openTab($(this));\r\n });\r\n $('#step1ContentContainer .form_bearbeiten button').on('click', function() {\r\n var formsWrapper = $(this).parents('.forms_wrapper');\r\n formsWrapper.find('.form_speichern').removeClass('hide');\r\n formsWrapper.find('.form_bearbeiten_abbrechen').removeClass('hide');\r\n formsWrapper.find('.form_bearbeiten').addClass('hide');\r\n formsWrapper.find('.input_form_wrapper').removeClass('disabled-Element');\r\n $(formsWrapper.find('.input_formRadio')).removeClass('disabled-Element');\r\n });\r\n\r\n $('#step1ContentContainer .form_bearbeiten_abbrechen').on('click', function() {\r\n var formsWrapper = $(this).parents('.forms_wrapper');\r\n formsWrapper.find('.form_speichern').addClass('hide');\r\n formsWrapper.find('.form_bearbeiten_abbrechen').addClass('hide');\r\n formsWrapper.find('.form_bearbeiten').removeClass('hide');\r\n formsWrapper.find('.input_form_wrapper').addClass('disabled-Element');\r\n var radioButtonArea = $(formsWrapper.find('.input_formRadio'));\r\n if (radioButtonArea.find('#currentFormIsBusinessForm').val() == 'True') {\r\n radioButtonArea.find('.input_radioGeschaeftlich').trigger('click');\r\n } else {\r\n radioButtonArea.find('.input_radioPrivat').trigger('click');\r\n }\r\n radioButtonArea.addClass('disabled-Element');\r\n });\r\n\r\n //if ($(\"#InputErrorRechnungsadresseOccured\").val() == \"geschaeftlich\") {\r\n // $(\".input_formRadioRechnungsadresse .input_radioGeschaeftlich\").trigger(\"click\");\r\n //}\r\n\r\n if ($('#InputErrorLieferadresseOccured').val()) {\r\n let triggerId = '#formTrigger' + $('#InputErrorLieferadresseType').val();\r\n let triggerElement = $(triggerId);\r\n triggerElement\r\n .trigger('click')\r\n .find('.acc-trigger')\r\n .trigger('click');\r\n if ($('#InputErrorLieferadresseOccured').val() == 'geschaeftlich') {\r\n triggerElement.find('.input_radioGeschaeftlich').trigger('click');\r\n } else {\r\n triggerElement.find('.input_radioPrivat').trigger('click');\r\n }\r\n let triggerForm = triggerElement.data('target');\r\n $([document.documentElement, document.body]).animate(\r\n {\r\n scrollTop: $(triggerForm).offset().top,\r\n },\r\n 500\r\n );\r\n }\r\n\r\n //if ($(\"#InputErrorPaymentmethodOccured\").val()) {\r\n // let triggerId = \"#formTrigger\" + $(\"#InputErrorPaymentmethodOccured\").val();\r\n // let triggerElement = $(triggerId);\r\n // triggerElement.trigger(\"click\").find(\".acc-trigger\").trigger(\"click\");\r\n // let triggerForm = triggerElement.data(\"target\");\r\n // $([document.documentElement, document.body]).animate({\r\n // scrollTop: $(triggerForm).offset().top\r\n // }, 500);\r\n //}\r\n\r\n //Der erste RadioButton im Lieferadressen-Bereich funktioniert nicht mit den anderen, da er in einer Form sitzt. Workaround\r\n $('#step1ContentContainerinput[type=radio][name=lieferadresse]').on('change', function() {\r\n $('input[type=radio][name=lieferadresse]:checked')\r\n .not(this)\r\n .prop('checked', false);\r\n });\r\n\r\n //Die RadioButtons für PayPal und Rechnung funktionieren nicht mit den anderen, da sie in einer Form sitzen. Workaround\r\n $('#step2ContentContainer input[type=radio][name=zahlungsweise]').on('change', function() {\r\n $('input[type=radio][name=zahlungsweise]:checked')\r\n .not(this)\r\n .prop('checked', false);\r\n });\r\n\r\n $('#step2ContentContainer #DataUsageAccepted').on('change', function() {\r\n if ($(this).is(':checked')) {\r\n $('#dataUsageError').addClass('hide');\r\n }\r\n });\r\n\r\n //Wechsel zwischen Privat und Geschäftsadresse\r\n $('#step1ContentContainer input[type=radio].radioButtonAddress').on('change', function() {\r\n var targetShow = $(this).attr('data-targetShow');\r\n var targetHide = $(this).attr('data-targetHide');\r\n $(targetHide).addClass('hide');\r\n $(targetShow).removeClass('hide');\r\n\r\n if ($(this).hasClass('input_radioGeschaeftlich')) {\r\n $('.lieferBusiness').removeClass('hide');\r\n $('.lieferPrivat,#formTriggerPackstation,#formTriggerPostfiliale').addClass('hide');\r\n $('#shippingAddressContainerGast .input_radioGeschaeftlich').prop('checked', true);\r\n } else {\r\n $('.lieferBusiness').addClass('hide');\r\n $('.lieferPrivat,#formTriggerPackstation,#formTriggerPostfiliale').removeClass('hide');\r\n $('#shippingAddressContainerGast .input_radioPrivat').prop('checked', true);\r\n }\r\n });\r\n\r\n //Unter geschäftlichen Rechnungsadressen dürfen private Lieferadressen angelegt werden, umgekehrt nicht.\r\n $('#step1ContentContainer #formRechnungsadresse .radioButtonAddress').on('click', function() {\r\n if ($(this).hasClass('input_radioPrivat')) {\r\n $('#formLieferadresse .input_formRadio').addClass('disabled-Element');\r\n }\r\n if ($(this).hasClass('input_radioGeschaeftlich')) {\r\n $('#formLieferadresse .input_formRadio').removeClass('disabled-Element');\r\n }\r\n });\r\n //Blendet wenn ein Land mit dem Eintrag \"ShowVAT\" ausgewählt wird das VAT-Feld ein\r\n $('#step1ContentContainer .CountryListGeschaeftlich').on('change', function() {\r\n var showVat = $(this)\r\n .find('option:selected')\r\n .data('showvat');\r\n if (showVat === 'True') {\r\n $('#VATEntry').removeClass('hide');\r\n } else {\r\n $('#VATEntry').addClass('hide');\r\n }\r\n });\r\n\r\n $('.accordion-header.acc-trigger').on('click', function() {\r\n $(this)\r\n .find('input[type=radio]')\r\n .prop('checked', true);\r\n\r\n $('#rechnungsadressePrivatForm .input_FirstName').trigger('change');\r\n $('#rechnungsadressePrivatForm .input_LastName').trigger('change');\r\n\r\n $('#rechnungsadressePrivatForm .input_Salutation').trigger('change');\r\n });\r\n\r\n $('.acc-trigger.openOnLoad').trigger('click');\r\n}\r\n\r\nfunction openTab(tab: JQuery) {\r\n $('.hide_ifFormOpen').addClass('hide');\r\n $('.hide_ifNotNew').removeClass('hide');\r\n $('.show_ifNotNew').addClass('hide');\r\n var dataID = tab.attr('data-target');\r\n $(dataID)\r\n .addClass('form-active')\r\n .slideDown(500);\r\n}\r\n\r\nfunction scrollTo(classOrElement, duration?: number) {\r\n let element = $(classOrElement);\r\n if (element.length > 0) {\r\n $([document.documentElement, document.body]).animate(\r\n {\r\n scrollTop: $(element).offset().top - 30,\r\n },\r\n duration ? duration : 1000\r\n );\r\n }\r\n}\r\n","import { formatPrice2Digits } from '../../Shared/PriceHelper';\r\nimport { getProductNetPrice } from './checkoutTrackingHelper';\r\nimport ProductHelper = require('../../Shared/ProductHelper');\r\n\r\nimport ICart = CheckoutflowReponse.ICart;\r\ndeclare var dataLayer: any[];\r\ndeclare var UC_UI: any;\r\n\r\n/**\r\n * führt die dataLayer-Pushes für die Rechnungs- und Lieferadressen aus.\r\n */\r\n\r\nexport async function onloadTracking(cart: ICart, ecOrderProcess = '3_RechnungsLieferdaten', step = 3) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n let lineItems = cart.lineItems;\r\n let products = [];\r\n let productIds = [];\r\n for (let lineItem of lineItems) {\r\n let product = lineItem.product;\r\n productIds.push(product.productId);\r\n let productPrice = lineItem.singleItemNetPrice\r\n ? formatPrice2Digits(getProductNetPrice(lineItem), true)\r\n : '';\r\n let breadcrumb: string = await ProductHelper.getBreadcrumbByTocId(product.mainTocNodeId);\r\n products.push({\r\n name: product.titleMain,\r\n id: product.productId,\r\n price: productPrice,\r\n brand: product.publisher ? product.publisher.publisherName : '',\r\n category: breadcrumb ? breadcrumb : '',\r\n variant: product.mediaType ? product.mediaType.mediaTypeName : '',\r\n quantity: lineItem.quantity,\r\n dimension8: product.displayFormat,\r\n });\r\n }\r\n\r\n dataLayer.push({\r\n pageTitle: 'Rechnungs-, Liefer-, Zahlungsdaten',\r\n event: 'eec.checkoutStep',\r\n ecommerce: {\r\n checkout: {\r\n actionField: { step: step },\r\n products: products,\r\n },\r\n },\r\n });\r\n\r\n if ($('#TrackingOrigin').val() === 'regimprozess') {\r\n registrierungTracking();\r\n }\r\n } else {\r\n setTimeout(onloadTracking.bind(null, cart, ecOrderProcess, step), 100);\r\n }\r\n}\r\n\r\nexport function registrierungTracking(): void {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'registrierung',\r\n eventLabel: 'reg im bestellprozess',\r\n eventValue: '5.0',\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', 'registrierung' + '/' + 'reg im bestellprozess', 5.0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n","import ProductHelper = require(\"../../Shared/ProductHelper\");\r\nimport ICart = CheckoutflowReponse.ICart;\r\nimport ILineItem = CheckoutflowReponse.ILineItem;\r\nimport { formatPrice2Digits } from \"../../Shared/PriceHelper\";\r\nimport { buildVar5, getProductNetPrice } from \"./checkoutTrackingHelper\";\r\ndeclare var dataLayer: any[];\r\ndeclare var UC_UI: any;\r\n\r\n/**\r\n * führt die dataLayer-Pushes für die übergebenen LineItems aus.\r\n * Für Warenkorb-onload\r\n * @param lineItems\r\n */\r\nexport async function onloadTracking(cart: ICart) {\r\n if (window[\"UC_UI\"] !== undefined && UC_UI.isInitialized) {\r\n let lineItems = cart? cart.lineItems : [];\r\n let products = [];\r\n let productIds = [];\r\n let productPrices = [];\r\n for (let lineItem of lineItems) {\r\n let product = lineItem.product;\r\n productIds.push(product.productId)\r\n let productNetPrice = lineItem.singleItemNetPrice ? formatPrice2Digits(getProductNetPrice(lineItem), true) : \"\";\r\n productPrices.push(productNetPrice);\r\n let breadcrumb: string = await ProductHelper.getBreadcrumbByTocId(product.mainTocNodeId);\r\n products.push(\r\n {\r\n 'name': product.titleMain,\r\n 'id': product.productId,\r\n 'price': productNetPrice,\r\n 'brand': product.publisher ? product.publisher.publisherName : \"\",\r\n 'category': breadcrumb ? breadcrumb : \"\",\r\n 'variant': product.mediaType ? product.mediaType.mediaTypeName : \"\",\r\n 'quantity': lineItem.quantity,\r\n 'dimension8': product.displayFormat\r\n\r\n });\r\n }\r\n dataLayer.push({\r\n 'emosUrl': '/scripts/Econda/emos3.js',\r\n 'pageTitle': 'Warenkorb',\r\n 'event': 'eec.checkoutStep',\r\n 'ecommerce': {\r\n 'checkout': {\r\n 'actionField': { 'step': 1 },\r\n 'products': products\r\n }\r\n }\r\n });\r\n\r\n dataLayer.push({\r\n 'google_tag_params': {\r\n 'ecomm_pagetype': 'cart',\r\n 'ecomm_prodid': productIds,\r\n 'ecomm_pvalue': productPrices,\r\n 'ecomm_totalvalue':(cart && cart.totalNetPrice) ? formatPrice2Digits(cart.totalNetPrice.amount, true) : \"\"\r\n }\r\n\r\n });\r\n\r\n }\r\n else {\r\n setTimeout(onloadTracking.bind(null, cart), 100);\r\n }\r\n \r\n}\r\n\r\n\r\n\r\n /**\r\n * Führt die dataLayer-Pushes für das übergebene LineItem durch.\r\n * add, oder remove bei Quantity-change.\r\n * @param updatedLineItem\r\n * @param oldQuantity\r\n */\r\nexport async function onChangeQuantityTracking(cart: ICart, updatedLineItem: ILineItem, newQuantitiy: number, oldQuantity: number) {\r\n let product = updatedLineItem.product;\r\n let breadcrumb: string = await ProductHelper.getBreadcrumbByTocId(product.mainTocNodeId);\r\n let quantityChange = newQuantitiy - oldQuantity;\r\n const price = updatedLineItem.product.prices.filter((x) => x.priceType.priceTypeId ==\r\n updatedLineItem.currentPriceType.priceTypeId)[0];\r\n if (quantityChange > 0) {\r\n dataLayer.push({\r\n 'ecProducts': [\r\n {\r\n type: 'c_add',\r\n pid: product.productId,\r\n sku: product.isbnIssn,\r\n name: product.authorList !== null ?\r\n product.authorList +\r\n ' - ' +\r\n product.titleMain : product.titleMain,\r\n price: updatedLineItem.singleItemNetPrice ? formatPrice2Digits(getProductNetPrice(updatedLineItem), true) : \"\",\r\n group: breadcrumb,\r\n count: quantityChange,\r\n var1: product.mediaType ? product.mediaType.mediaTypeName : \"\",\r\n var2: product.displayFormat,\r\n var3: product.publisher ? product.publisher.publisherName : \"\",\r\n var4: product.availabilityStatusId.toString(),\r\n var5: buildVar5(product),\r\n var6: price?.isApproximatePrice ? \"CaPreis\" : \"Festpreis\"\r\n }\r\n ],\r\n 'emosUrl': '/scripts/Econda/emos3.js',\r\n 'ecSiteId': document.head.querySelector(\"[name~=econdaurl][content]\").getAttribute(\"content\"),\r\n 'ecContent': '',\r\n 'event': 'eec.addToCart',\r\n 'ecommerce': {\r\n 'currencyCode': 'EUR',\r\n 'add': { // 'add' actionFieldObject measures.\r\n 'products': [\r\n { // adding a product to a shopping cart.\r\n 'name': product.titleMain,\r\n 'id': product.productId,\r\n 'price': updatedLineItem.singleItemNetPrice ? formatPrice2Digits(getProductNetPrice(updatedLineItem), true) : \"\",\r\n 'brand': product.publisher ? product.publisher.publisherName : \"\",\r\n 'category': breadcrumb,\r\n 'variant': product.mediaType ? product.mediaType.mediaTypeName : \"\",\r\n 'quantity': quantityChange,\r\n 'dimension8': product.displayFormat\r\n }\r\n ]\r\n }\r\n }\r\n },\r\n {\r\n 'google_tag_params': {\r\n 'ecomm_pagetype': 'cart',\r\n 'ecomm_prodid': product.productId,\r\n 'ecomm_pvalue': updatedLineItem.singleItemNetPrice ? formatPrice2Digits(getProductNetPrice(updatedLineItem), true) : \"\",\r\n 'ecomm_totalvalue': cart.totalNetPrice ? formatPrice2Digits(cart.totalNetPrice.amount, true) : \"\"\r\n\r\n }\r\n }\r\n );\r\n } else {\r\n dataLayer.push({\r\n 'emosUrl': '/scripts/Econda/emos3.js',\r\n 'ecSiteId': document.head.querySelector(\"[name~=econdaurl][content]\").getAttribute(\"content\"),\r\n 'ecContent': '',\r\n 'event': 'eec.removeFromCart',\r\n 'ecommerce': {\r\n 'currencyCode': 'EUR',\r\n 'remove': { // 'remove' actionFieldObject measures.\r\n 'products': [\r\n { // removing a product to a shopping cart.\r\n 'name': product.titleMain,\r\n 'id': product.productId,\r\n 'price': updatedLineItem.singleItemNetPrice ? Number.parseFloat(formatPrice2Digits(getProductNetPrice(updatedLineItem), true)) : \"\",\r\n 'brand': product.publisher ? product.publisher.publisherName : \"\",\r\n 'category': breadcrumb,\r\n 'variant': product.mediaType ? product.mediaType.mediaTypeName : \"\",\r\n 'quantity': Math.abs(quantityChange),\r\n 'dimension8': product.displayFormat\r\n }\r\n ]\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n \r\n","import { AddItemResponse } from \"./addItemResponse\";\r\n\r\nexport class ShoppingListService {\r\n \r\n /**\r\n * Enterfnert ein Produkt von der Shoppinglist\r\n * @param productId Die Id des Produkts was von der ShoppingList entfernt werden soll\r\n * @param completeFunction Wird ausgeführt, wenn der ajax request beendet wurde\r\n */\r\n deleteItem(productId: any, completeFunction: (xhr, status) => void) {\r\n $.ajax({\r\n method: \"DELETE\", \r\n dataType: 'JSON',\r\n url: `/Umbraco/api/ShoppingList/DeleteItem?productId=${productId}`,\r\n complete: completeFunction\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Fügt ein Produkt der Merkliste hinzu und aktualisiert bei Erfolg den Zähler\r\n * @param productId \r\n */\r\n addItem(productId: any) {\r\n $.ajax({\r\n method: \"POST\", \r\n dataType: 'JSON',\r\n url: `/Umbraco/api/ShoppingList/AddItem?productId=${productId}`,\r\n success: data => {\r\n var response = data as AddItemResponse;\r\n this.updateCounter($(\".wrapper.remember.navItemSymbol\"), response.count);\r\n this.showAlert(response.successMessage);\r\n $(\"#spinnerModal\").addClass(\"hide\");\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Aktualsiert das Symbol zur Anzahl der Items in der Merklsite\r\n */\r\n updateShoppingListCount() {\r\n var merklistenElement = $(\".wrapper.remember.navItemSymbol\");\r\n if (merklistenElement.length > 0) {\r\n $.ajax({\r\n method: \"GET\", \r\n dataType: 'JSON',\r\n url: `/Umbraco/api/ShoppingList/GetShoppingListItemCount`,\r\n success: data => {\r\n this.updateCounter(merklistenElement, data);\r\n }\r\n }); \r\n }\r\n }\r\n\r\n private updateCounter(element, count) {\r\n if (count > 0) {\r\n element.html(`${count}`);\r\n }\r\n else {\r\n element.html(\"\");\r\n }\r\n }\r\n\r\n private showAlert(message) {\r\n $(\"#merklisteAddId p\").text(message)\r\n $(\"#merklisteAddId\").show().delay(3000).fadeOut();\r\n }\r\n}","(function(bz,u){var EMOS_VERSION=\"c57.1\",cj=\"emos3\",o=bz[cj],bE,U;if(!o){bz[cj]=o={}}var DFLTS={};if(!o.defaults){o.defaults={}}var bx,q,aB,b5,ab,ah,bH,aY,D,bj,aG,cb,aM,b2,k,w,bA,bt,az,ai,co,r,j,b7,by,bo,bh,y,b6,J,be,bv;function aj(){bE={};U={};bx=n(\"PRIV_COOKIE\",\"emos_privacy:l\");q=n(\"PRIV_CFG\",{'3':{VCL:730},'0':{DO_NOT_TRACK:true}});aB=aE(\"PRIV_MODE\",'3');b5=n(\"JUNK_SIZE\",1600);ab=n(\"CLIENT_COOKIE_LIFETIME\",30);ah=n(\"CNSID\",\"emos_jcsid:s\");bH=n(\"CNVID\",\"emos_jcvid:f\");aY=n(\"CNCAMP\",\"emos_jckamp:f\");D=n(\"CNPV\",null);bj=n(\"COOKIE_DNT\",\"emos_optout:f\");aG=n(\"COOKIE_DOMAIN\",null);cb=n(\"TRACK_FIRSTPARTY\",true);aM=n(\"TRACK_POSTCONVERSION\",false);b2=n(\"CLIENT_KEY\",'0000142c-e5475260-593c-4cbb-9b94-062b5d8ad618');k=n(\"TRACK_THIRD_PARTY\",false);w=n(\"SAMPLING_RATE\",1);bA=n(\"PRODUCT_ID_IN_EC_EVENT\",1);bt=n(\"PMAP\",{});az=n(\"P_MAP\",{});ai=G(\"PARAM_TO_PROP\",{\"emosmarker\":\"marker\",\"ecmUid\":\"newsuid\"});co=n(\"MC_COOKIE\",{kw:30,cp:30,nl:30,ref:30,suma:30});r=n(\"ADD_COOKIE_PARAMS\",{all:[\"empid\",\"empcode\",\"empcode2\"]});j=n(\"ADD_COOKIE_PROPS\",{});b7=n(\"TIMEOUT\",6000);by=n(\"DO_NOT_TRACK\",false);bo=n(\"SEO_BLACK\",[]);bh=n(\"VCL\",0);y=n(\"URL\",'www.econda-monitor.de');b6=n(\"URL_A\",null);J=n(\"SM\",\"c\");be=n(\"PAGEID_FROM_URL\",false);bv=n(\"SCROLL\",-1)}var R=\"emoscache\",X=30,bd=\"emos_sampling\",m=\"emos_clickmonitor\",bL=\"https://monitor.econda-monitor.de/click\",a8=0,am=-1,ao=null,E=0,bs=0,a=null,K,bC=[],N=false,bJ=[],bu=[],B=aD(bz.sessionStorage),bm=aD(bz.localStorage),bR=false,aP=false,ch,aL,ax=null,s=false,H=-1,F=-1,ca=65536,b8=65536,bw=false;function V(i){var e=bP(i);if(e){ax=e.substring(0,254);i.pageId=ax}if(i.pageid){delete i.pageid}}function bP(e){if(o.pageId){return o.pageId}if(e.pageId){return e.pageId}if(e.pageid){return e.pageid}if(ax){return ax}if(be){var i=bz.location;return i.protocol+\"//\"+i.host+i.pathname}return null}function aq(){if(o.pageId){return o.pageId}return ax}function aD(ct){try{return ct&&ct.length>=0}catch(i){return false}}function a5(e){return parseInt(e,10)}function n(e,ct){var i=U[e];if(bl(i)){i=o[e]}if(bl(i)){i=ct}bE[e]=i;return i}function G(e,cx){var i=n(e,cx);var cu=e+\"_MERGE\";var ct=U[cu];if(!a7(ct)){ct=o[cu]}if(a7(ct)){for(var cw in ct){if(ct.hasOwnProperty(cw)){var cv=ct[cw];if(cv===null){delete i[cw]}else{i[cw]=cv}}}}bE[e]=i;return i}function aE(e,ct){var i=null;if(bx){i=ck(A(bx))}if(i){bR=true}else{bR=false;i=o[e]}if(!i){i=ct}if(i){U=q[i]}if(!a7(U)){U={}}bE[e]=i;return i}var bB=bz.encodeURIComponent;function cp(i){try{return bz.decodeURIComponent(i.replace(/\\+/g,\"%20\"))}catch(ct){try{return bz.unescape(i)}catch(cu){return i}}}function bN(cu,ct,i){if(cu.addEventListener){cu.addEventListener(ct,i,true)}else{if(cu.attachEvent){cu.attachEvent(\"on\"+ct,i)}else{var e=cu[\"on\"+ct];if(!e){cu[\"on\"+ct]=i}else{cu[\"on\"+ct]=function(cv){i(cv);e(cv)}}}}}function bb(cA,cz,cu){var ct=cz.cookie;var e=null;var cB=null;if(ct){if(cz.emcl){e=a5(cz.emcl)}if(!e){e=ab}e=e*86400;cB=bq(ct)}bi(cA);var cx=f(bV(an(JSON.stringify(cA))));var cy=Math.floor(cx.length/b5)+1;var cv=[];for(var cw=0;cw1){cv=cv+\"|\"+Math.round(e*100)/100}var cu=bz.orientation;if(aF(cu)&&cu!==0){cv=cv+\"o\"+cu}ct.swsh=cv;ct.tz=new Date().getTimezoneOffset()/60;var i=bz.performance;if(a7(i)){var cw=i.navigation;if(a7(cw)){if(aF(cw.type)&&cw.type<255){ct.nt=cw.type}}}ct.emosV=EMOS_VERSION}function aw(cw,ct){try{if(cw===null||cw.length===0){return\"\"}if(ct>=0){var i=cn(cw,\"/\",ct,0);if(i>=0){cw=cw.substring(0,i)}}var cx=cw.indexOf(\"?\");if(cx>=0){cw=cw.substring(0,cx)}var cv=cw.indexOf(\"#\");if(cv>=0){cw=cw.substring(0,cv)}}catch(cu){}return cw.substring(0,127)}function cn(cv,cu,ct,i){var e=cv.indexOf(cu,i);if(ct===1){return e}else{return cn(cv,cu,ct-1,e+cu.length)}}function t(cE){try{var cD=aq();if(aW(cD)){return}if(!cD||!at()||!b2||!aP||!ao||aQ()){return}if(!cE){cE=bz.event}var cA={};if((cE.which&&cE.which!==1)||(!cE.which&&cE.button!==1)){return}var cI=cE.pageX;var cu=cE.pageY;var cK=u.documentElement&&u.documentElement.clientHeight!==0?u.documentElement:u.body;if(isNaN(cI)||isNaN(cu)){cI=cE.clientX+((isNaN(bz.pageXOffset)?cK.scrollLeft:bz.pageXOffset));cu=cE.clientY+((isNaN(bz.pageYOffset)?cK.scrollTop:bz.pageYOffset))}if(isNaN(cI)||isNaN(cu)){return}var ct=cE.target?cE.target:cE.srcElement;while(ct!==null&&ct.nodeType===3){ct=ct.parentNode}if(ct.nodeType!==1){return}if(!ct.nodeName){return}var cJ=ct.nodeName.toLowerCase();if(cJ===\"base\"){return}if(cJ===\"map\"){ct=cg(ct,cI,cu)}else{if(cJ===\"area\"){ct=cg(ct.parentNode,cI,cu)}}if(cJ===\"option\"){ct=ct.parentNode;if(ct.nodeName.toLowerCase()===\"optgroup\"){ct=ct.parentNode}}if(typeof ct.getBoundingClientRect===\"function\"){if(ct===u.body.parentNode){ct=u.body}}else{if(ct===u.body){ct=u.body.parentNode}}var cz=new Date().getTime();var cv=Math.floor((cz-aL)/1000);var cw=Math.floor((cz-K)/1000);aL=cz;if(u.body.parentNode===ct||u.body===ct){var cH,cG;if(bz.innerHeight){cH=bz.innerWidth-17;cG=bz.innerHeight-17}else{cH=cK.clientWidth;cG=cK.clientHeight}if(cHH){H=cu;bw=true}if(ct>F){F=ct;bw=true}if(cv=cx[0]&&ct>=cx[1]&&e<=cx[0]+cu.clientWidth&&ct<=cx[1]+cu.clientHeight){return cu}}}}return u.body.parentNode}function bf(cw,ct){var cu=o.plugins;if(aS(cu)){for(var cv=0;cv0){bz.setInterval(function(){g(false)},bv*1000)}}}}function aW(i){var e=bz.emosClickmonitor;if(e){e.pageId=i;return true}return false}function bc(){var e=false;if(bz.emosClickmonitor){e=true}else{e=location.search.indexOf(\"clickmonitor=econda\")>=0||location.hash.indexOf(\"clickmonitor_econda\")>=0;if(e){T(m,\"true\")}else{e=cs(m)===\"true\"}}if(e){bO();N=false;aP=false;aN()}return e}function aN(){var e=bz.emosClickmonitor;if(e){e.pageId=aq()}else{e=bz.emosClickmonitor={};e.cookieName=m;e.cookieDomain=aJ();e.urlClickmonitor=bL;e.ckey=b2;e.pageId=aq();au()}}function au(){var cA=u.documentElement;var ct=cA.namespaceURI;var cx=cA.prefix;var cv=cx?cx+\":head\":\"head\";var cy=cA.childNodes;var cB=null;for(var cw=0;cwcu){ct[cu]=null}}function b0(e,i){var ct=e[i];if(aS(ct)&&ct.length>0){if(aS(ct[0])){return ct[0]}return ct}return null}function bM(e,i,cu){var ct=b0(e,i);if(ct&&ct.length>cu){ct[cu]=d(ct[cu])+\"|sid=\"+E}}function d(cu){if(bU(cu)){var cv=0,e,ct;for(e=0;e=0){bz.console.log(cv)}var cu=bb(cv,e,cw);for(var ct=0;ct=0){var ct=e+\"=;path=/;max-age=0;\";var i=aJ();if(i){ct=ct+\"domain=\"+i+\";\"}u.cookie=ct}}function cc(ct,e,cv){var cu=bq(ct);if(navigator.sendBeacon){navigator.sendBeacon(p()+\"?\"+cu)}else{var i=new Image();var cw=bz.setTimeout(function(){i.src=cq},b7);bC[cv]=i;i.src=p()+\"?\"+cu}}function bZ(ct,i,e){h(ct);bC[i]=null;bz.clearTimeout(e)}function bq(i){var ct=\"\";for(var cu in i){var e=typeof i[cu];if(e===\"string\"||e===\"boolean\"||e===\"number\"){if(ct!==\"\"){ct+=\"&\"}ct+=cu+\"=\"+bB(i[cu])}}return ct}function aI(cu){var cv=cu.split(\"&\");var i={};for(var e=0;e1){v(i,ct,e)}}}function v(cx,cy,cA){var cz={};var cB=false;for(var cw=0;cw0){var ct=cw.split(\":\");if(ct.length>0){E=ct[0]}}}}}if(!E){E=aV()}else{E=E.substr(0,64)}var cC=A(bH);if(!!bh){bs=null;if(bU(o.ext_vid)){bs=o.ext_vid;cC=null}else{if(bU(o.emos_vid)){bs=o.emos_vid}else{if(cC){var cD=ck(cC);if(cD&&cD.length>0){var i=cD.split(\":\");if(i.length>0){bs=i[0];if(bs===\"undefined\"){bs=null}}}}}}if(!bs){bs=E}else{bs=bs.substr(0,64)}}else{if(aB===\"2\"&&bR){b9(cC)}}var cz=c();if(cz==null){cz=Math.random()*w<=1}a0(cz);if(cB){var cy=E+\":\"+(cz?\"t\":\"f\")+\":\"+w+\":0\";cr(cB,cy,null);var e=ck(cB);if(cy!==e){E=\"NULL\"}}o.emos_sid=E;if(!!bh){if(cC){var cu=bs+\":1:0:0:0:\"+cz+\":\"+w;cr(cC,cu,bh*86400);var cv=ck(cC);if(cu!==cv){bs=\"NULL\"}}o.emos_vid=bs}}function aK(e,i,ct){i=i+\"|lt=\"+(new Date().getTime()+ct);cm(e,i)}function cm(i,ct){if(bm){try{bz.localStorage.setItem(i,ct)}catch(cu){}}}function ap(i){var ct=aU(i);if(ct){var cu=ct.lastIndexOf(\"|lt=\");if(cu>=0){var e=Number.parseInt(ct.substr(cu+4));if(new Date().getTime()<=e){return ct.substring(0,cu)}}else{return ct}}return null}function aU(i){if(bm){try{return bz.localStorage.getItem(i)}catch(ct){}}return null}function aC(i){if(bm){try{bz.localStorage.removeItem(i)}catch(ct){}}}function c(){if(w<=1){return true}var i=aU(bd);if(i){var ct=i.split(\"|\");if(ct.length>1){var e=a5(ct[1]);if(e===w){return(\"1\"===ct[0])}}}return null}function a0(e){if(J!==\"p\"){N=true;aP=e}else{N=e;aP=e}if(w>1){cm(bd,(e?\"1\":\"0\")+\"|\"+w)}}function ba(cw){var ct=u.cookie.split(\";\");for(var cv=0;cv>>8&255);cy.push(cz&255);cy.push(cA>>>24);cy.push(cA>>>16&255);cy.push(cA>>>8&255);cy.push(cA&255);for(var cw=0;cw<9;cw++){var e=65536*Math.random();cy.push(e>>>8&255);cy.push(e&255)}var ct=navigator.userAgent;if(ct){for(var cv=0;cv>8);cv.push(cu&255);return cv}function an(e){var i=[];for(var cu=0;cu=32||ct===9){i.push(ct)}}else{if((ct>127)&&(ct<2048)){i.push((ct>>6)|192);i.push((ct&63)|128)}else{i.push((ct>>12)|224);i.push(((ct>>6)&63)|128);i.push((ct&63)|128)}}}return i}var al=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*_\";function f(cx){var cu=al,cv=[],ct=0,e=cx.length;if((e%3)===1){cx.push(0);cx.push(0)}else{if((e%3)===2){cx.push(0)}}var cw=cx.length;while(ct>2));cv.push(cu.charAt(((cx[ct]&3)<<4)|(cx[ct+1]>>4)));cv.push(cu.charAt(((cx[ct+1]&15)<<2)|(cx[ct+2]>>6)));cv.push(cu.charAt(cx[ct+2]&63));ct+=3}if((e%3)===1){cv[cv.length-1]=cv[cv.length-2]=\"\"}if((e%3)===2){cv[cv.length-1]=\"\"}return cv.join(\"\")}function bn(cB,cz,cw){var cD=Q(cz);var cu=aw(cD,3);var i=aO(cD,false);if(cu){cB.ref=cu}for(var cx in ai){if(cw[cx]){cB[ai[cx]]=cw[cx]}}if(cz.cookie||cB.source){return}if(!b(cz,\"customMktDetect\")){var cE=b(cz,\"customCampaign\");var cC=b(cz,\"customSource\");if(cw.refID){cE=cw.refID;if(cw.emsrc){cC=cw.emsrc}}else{if(cw.em_cmp){cE=cw.em_cmp;if(cw.em_src){cC=cw.em_src}}}if(cE){if(cC){if(cC===\"kw\"){cw.adword=cE}else{if(cC===\"nl\"){cw.newsletter=cE}else{cw.campaign=cE}}}else{cC=\"cp\";cw.campaign=cE}}if(cw.campaign){var e=cC?cC:\"cp\";if(cC&&!co[cC]){co[cC]=co.cp}var ct=a3(cB,cz,cw,e);ct.campaign=cw.campaign;if(cu){ct.ref=cu}a4(i,ct);return}if(cw.newsletter||cw.ecmId){var cA=a3(cB,cz,cw,\"nl\");if(cw.newsletter){cA.news=cw.newsletter}if(cw.ecmId){cA.newsmid=cw.ecmId}return}if(cw.adword||cw.gclid){var cy=a3(cB,cz,cw,\"kw\");var cv=cw.adword;if(cw.gclid){if(!cv){cv=\"google auto tagging\"}cy.gclid=cw.gclid}if(cv){cy.adword=cv}if(cu){cy.ref=cu}a4(i,cy);bp(cy,null,true,cu,cw,i);return}}if(cD===null||cD.length===0){a3(cB,cz,cw,\"direct\");return}if(bT(cu)){cB.ref=aw(cD,-1);cB.source=\"intern\";return}if(bp(cB,cz,false,cu,cw,i)){return}a3(cB,cz,cw,\"ref\").ref=cu}function a4(ct,i){var e=ct.url?cp(ct.url).substring(0,127):null;if(e){i.refUrl=e}}function a3(ct,e,cv,cu){if(co[cu]){if(!e.cookie){e.cookie={}}var i=e.cookie;e.emcl=co[cu];ar(r,cv,cu,i);i.source=cu;return i}else{ct.source=cu;return ct}}function ar(e,ct,cu,i){if(e.all){a9(e.all,ct,i)}if(e[cu]){a9(e[cu],ct,i)}}function a9(cw,cv,cu){for(var ct=0;ct0){var e=aI(cv);cu.postconv=\"1\";e.ccbtd=Math.floor(new Date().getTime()/1000)-a5(e.ccbt);delete e.ccbt;W(cu,e)}}}}function O(){if(!D){return}var cy=ck(A(D));if(cy&&cy.length>0){var cw=new Date().getTime();cy=cp(cy);var ct=[];var e=cy.split(\"@\");for(var cu=0;cu=0){return false}}}for(var cx=0;cx=0){var cC=(cv[0])?e[cv[0]]:null;if(!cC&&ct!==null){cC=\"not provided\"}if(cC){var cA=cy?cB:a3(cB,cz,cF,\"suma\");var cE=cv[2];if(cE&&e[cE]){cA.smqpe=e[cE];cA.smqp=cC}else{cA.smqp=cp(cC)}if(cv.length===5&&e[cv[3]]){var cD=a5(e[cv[3]]);if(!isNaN(cD)){cA.smstart=cD*cv[4]}}if(!cy&&cu){cA.ref=cu}return true}}}return false}function aa(cu,cw,e){var ct=a2(cw,e);if(ct){if(!ct[3]){var i=cu.ec_Event;if(aS(i)&&i.length>0){var cv=i[0];if(a7(cv)){ct[3]=(Y(cv))?cv[bA]:cv.pid}}}cu.crossData=[ct]}}function a2(cu,e){var i=b(e,\"crossData\");if(aS(i)&&typeof i[0]===\"string\"){return i}var ct=b(e,\"emcs0\");if(ct){return[ct,b(e,\"emcs1\"),b(e,\"emcs2\"),b(e,\"emcs3\")]}if(cu.emcs0){return[cu.emcs0,cu.emcs1,cu.emcs2,cu.emcs3]}return null}var x=[\"uk\",\"tr\",\"br\"];var aT={at:[\"co\"],jp:[\"co\",\"ac\",\"go\",\"ne\",\"or\"],au:[\"com\",\"org\",\"net\",\"info\"]};function b1(i,ct){if(af(x,i)){return 3}var e=aT[i];if(e&&af(e,ct)){return 3}return 2}function af(cu,ct){for(var e=0;e=cu){var cw=\"\";for(var ct=e.length-cu;ct=0){e=e.substr(cy+1)}var ct=e.split(\"&\");for(var cx=0;cx {\r\n\r\n checkForSwiperSlider();\r\n\r\n let windowWidth = $(window).width();\r\n if (windowWidth <= 768) {\r\n setSlideGroupBig = 1;\r\n setSlideGroupSmall = 1;\r\n }\r\n else if (windowWidth <= 1200) {\r\n setSlideGroupBig = 3;\r\n setSlideGroupSmall = 1;\r\n }\r\n else {\r\n setSlideGroupBig = 4;\r\n setSlideGroupSmall = 3;\r\n }\r\n\r\n //Produktkarussell\r\n karussellElementsLarge = $(\"[id^=produktkarussellLarge]:not(.initialized):not(.trboDynamicSlider)\");\r\n karussellElementsSmall = $(\"[id^=produktkarussellSmall]:not(.initialized):not(.trboDynamicSlider)\");\r\n lazyloadKarussell();\r\n\r\n\r\n window.addEventListener(\"scroll\", function () {\r\n lazyloadKarussell();\r\n });\r\n\r\n /**\r\n * Beim window resize müssen die Produktkarussel aktualisiert werden,\r\n * ansonsten passt die Darstellung nicht mehr\r\n */\r\n $(window).resize(() => {\r\n for (var j = 0; j < carouselbig.length; j++) {\r\n carouselbig[j].pagination.render();\r\n carouselbig[j].pagination.update();\r\n carouselbig[j].update();\r\n }\r\n for (var k = 0; k < carouselsmall.length; k++) {\r\n carouselsmall[k].pagination.render();\r\n carouselsmall[k].pagination.update();\r\n carouselsmall[k].update();\r\n }\r\n });\r\n});\r\n\r\n\r\nfunction lazyloadKarussell() {\r\n for (let index = 0; index < karussellElementsLarge.length; index++) {\r\n try {\r\n const karussell = karussellElementsLarge[index];\r\n let karussellTop = karussell.getBoundingClientRect().top;\r\n if (karussellTop < (window.innerHeight + window.pageYOffset + inAdvance) && karussellTop > 0) {\r\n carouselbig.push(initSwiperLarge(karussell));\r\n karussell.classList.add('initialized');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n for (let index = 0; index < karussellElementsSmall.length; index++) {\r\n try {\r\n const karussell = karussellElementsSmall[index];\r\n let karussellTop = karussell.getBoundingClientRect().top;\r\n if (karussellTop < (window.innerHeight + window.pageYOffset + inAdvance) && karussellTop > 0) {\r\n carouselsmall.push(initSwiperSmall(karussell));\r\n karussell.classList.add('initialized');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n karussellElementsLarge = karussellElementsLarge.filter(':not(.initialized)');\r\n karussellElementsSmall = karussellElementsSmall.filter(':not(.initialized)');\r\n}\r\n\r\n/**\r\n * Überprüft ob es auf der Seite Slider gibt, falls ja, werden diese konfiguriert\r\n */\r\nfunction checkForSwiperSlider() {\r\n swiperElements = $(\"[id^=bannerSwiper]:not(.trboDynamicBuehne)\");\r\n var frequency = swiperElements.first().data(\"frequency\");\r\n if (swiperElements.length > 0) { \r\n configureSwiperSlider(frequency, \"fade\", swiperElements);\r\n }\r\n}\r\n\r\n/**\r\n * Konfiguriert alle Swiper Slider auf der Seite\r\n * @param autoplay Die Anzeigedauer eines Bildes\r\n * @param effect Der Transition effekt\r\n * @param elements Die Swiper slider Elemente\r\n */\r\nexport function configureSwiperSlider(autoplay: number, effect: string, elements: any) {\r\n for (var i = 0; i < elements.length; i++) {\r\n var swiper = new Swiper((elements[i]) as any, {\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n loop: true,\r\n autoplay: {\r\n delay: autoplay,\r\n },\r\n autoplayDisableOnInteraction: true,\r\n effect: effect\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Initialisierungsfunktion für das kleine karussel\r\n * @param elem\r\n */\r\nexport function initSwiperSmall(elem: any) {\r\n let swiper = new Swiper(elem,\r\n {\r\n slidesPerView: setSlideGroupSmall,\r\n spaceBetween: 30,\r\n slidesPerGroup: setSlideGroupSmall,\r\n loop: true,\r\n loopFillGroupWithBlank: true,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n observer: true,\r\n observeParents: true,\r\n breakpoints: {\r\n 1200: {\r\n slidesPerView: 2,\r\n spaceBetween: 40\r\n },\r\n 1024: {\r\n slidesPerView: 2,\r\n spaceBetween: 40\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n spaceBetween: 30\r\n },\r\n 640: {\r\n slidesPerView: 1,\r\n spaceBetween: 20\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 10\r\n }\r\n },\r\n on: {\r\n resize: function () {\r\n if ($(window).width() > 1200) {\r\n setSlideGroupSmall = 3;\r\n this.params.slidesPerView = 3;\r\n } else if (($(window).width() < 1200) && ($(window).width() > 1024)) {\r\n setSlideGroupSmall = 2;\r\n this.params.slidesPerView = 2;\r\n } else if ($(window).width() < 1024) {\r\n this.params.slidesPerView = 1;\r\n setSlideGroupSmall = 1;\r\n }\r\n this.params.slidesPerGroup = setSlideGroupSmall;\r\n this.update();\r\n this.pagination.update();\r\n this.pagination.render();\r\n }\r\n }\r\n });\r\n $(elem).find('.swiper-wrapper').removeClass('hide');\r\n return swiper;\r\n}\r\n\r\n/**\r\n * Initialisierungsfunktion für das große karussel\r\n * @param elem\r\n */\r\nexport function initSwiperLarge(elem: any) {\r\n let swiper = new Swiper(elem,\r\n {\r\n slidesPerView: setSlideGroupBig,\r\n spaceBetween: 30,\r\n slidesPerGroup: setSlideGroupBig,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n observer: true,\r\n observeParents: true,\r\n breakpoints: {\r\n //1400: {\r\n // slidesPerView: 4,\r\n // spaceBetween: 30\r\n //},\r\n 1200: {\r\n slidesPerView: 4,\r\n spaceBetween: 40\r\n },\r\n 1024: {\r\n slidesPerView: 3,\r\n spaceBetween: 30\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n spaceBetween: 30\r\n },\r\n 640: {\r\n slidesPerView: 1,\r\n spaceBetween: 20\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 10\r\n }\r\n },\r\n on: {\r\n resize: function() {\r\n if ($(window).width() > 1200) {\r\n setSlideGroupBig = 4;\r\n this.params.slidesPerView = 4;\r\n } else if (($(window).width() < 1200) && ($(window).width() > 1024)) {\r\n setSlideGroupBig = 3;\r\n this.params.slidesPerView = 3;\r\n } else if ($(window).width() < 1024 && ($(window).width() > 768)) {\r\n this.params.slidesPerView = 2;\r\n setSlideGroupBig = 3;\r\n } else {\r\n this.params.slidesPerView = 1;\r\n setSlideGroupBig = 1;\r\n }\r\n this.params.slidesPerGroup = setSlideGroupBig;\r\n this.update();\r\n this.pagination.update();\r\n this.pagination.render();\r\n }\r\n }\r\n });\r\n $(elem).find('.swiper-wrapper').removeClass('hide');\r\n return swiper;\r\n}","import {\r\n trackGooglePromotionEvent_click,\r\n MerklisteKarusellProductClickedTracking,\r\n tracking_eecPromotionview,\r\n trackExternalBasketClick,\r\n trackGoogleAddToMerkliste_click,\r\n pushTrboId,\r\n trackIdLayerComplete,\r\n trackIdLayerReduced,\r\n} from './GoogleTracking';\r\nimport { loginTracking } from './GoogleTracking';\r\nimport { trackNaviEvent_click } from './GoogleTracking';\r\n\r\ndeclare var _trboq: any;\r\ndeclare var _trbo: any;\r\nimport * as Cookies from 'js-cookie';\r\n\r\n$(() => {\r\n tracking_eecPromotionview();\r\n TrackLogin();\r\n trackIdLayer();\r\n\r\n ///tracking event f�r den Cklick auf Title/Image in Karusell TOP Produkte\r\n $('body').on('click', '.topProductTracking', function() {\r\n var trackingParam = $(this).data('trackingevent');\r\n if (trackingParam) {\r\n trackGooglePromotionEvent_click(trackingParam);\r\n }\r\n });\r\n\r\n $('body').on('click', '.addToMerklisteTracking', function() {\r\n const productId = $(this).data('id');\r\n if (productId) {\r\n trackGoogleAddToMerkliste_click(productId);\r\n }\r\n });\r\n\r\n $('body').on('click', '.ffSponsored', function() {\r\n var trackingParam = $(this).data('trackingevent');\r\n if (trackingParam) {\r\n trackGooglePromotionEvent_click(trackingParam);\r\n }\r\n });\r\n\r\n $('body').on('click', '.similarProductTracking', function() {\r\n var trackingParam = $(this).data('trackingevent');\r\n if (trackingParam) {\r\n trackGooglePromotionEvent_click(trackingParam);\r\n }\r\n });\r\n\r\n $('body').on('click', '.merklisteTracking', function() {\r\n MerklisteKarusellProductClickedTracking();\r\n });\r\n\r\n $('body').on('click', '.probeAboTracking', function() {\r\n var id = parseInt($(this).data('productid'));\r\n const price = Number.parseFloat($(this).attr('data-price'));\r\n testAboTracking(id, price);\r\n });\r\n\r\n $('body').on('click', '.externalBasketLink', function() {\r\n const id = parseInt($(this).data('productid'));\r\n const eventAction = $(this).data('eventaction');\r\n const eventLabel = $(this).data('eventlabel');\r\n trackExternalBasketClick(id, eventLabel, eventAction);\r\n });\r\n\r\n $('body').on('click', '.trboClickTracking', function() {\r\n const campaignId = $(this).data('campaignid');\r\n const campaignName = $(this).data('campaignname');\r\n const moduleId = $(this).data('moduleid');\r\n const moduleName = $(this).data('modulename');\r\n const userType = $(this).data('usertype');\r\n const productId = $(this).data('productid');\r\n if (campaignId && moduleId && productId) {\r\n _trboq.push([\r\n 'layerClick',\r\n {\r\n moduleId: moduleId,\r\n campaignId: campaignId,\r\n productId: productId,\r\n },\r\n ]);\r\n _trbo.app.tracker.trackExternalClick(userType, campaignId, campaignName, moduleId, moduleName);\r\n }\r\n });\r\n\r\n $('body').on('click', '.trboBannerClickTracking', function() {\r\n const campaignId = $(this).data('campaignid');\r\n const moduleId = $(this).data('moduleid');\r\n if (campaignId && moduleId) {\r\n _trboq.push([\r\n 'layerClick',\r\n {\r\n moduleId: moduleId,\r\n campaignId: campaignId,\r\n },\r\n ]);\r\n }\r\n });\r\n\r\n $('body').on('click', '.googleTracking.promotionTracking', function(e) {\r\n var trackingParam = $(this).data('trackingevent');\r\n if (trackingParam) {\r\n trackGooglePromotionEvent_click(trackingParam);\r\n }\r\n });\r\n\r\n var timer;\r\n $(window).on('scroll', function() {\r\n if (timer) {\r\n window.clearTimeout(timer);\r\n }\r\n timer = window.setTimeout(function() {\r\n tracking_eecPromotionview();\r\n }, 100);\r\n });\r\n\r\n $('.googleNaviLinkTracking').click(function() {\r\n var trackingParam = $(this).data('trackingevent');\r\n if (trackingParam) {\r\n trackNaviEvent_click(trackingParam);\r\n }\r\n });\r\n});\r\n\r\n/**\r\n * Tracking f�r \"beck-online 14-Tage-Test\"\r\n */\r\nfunction testAboTracking(productId: number, price: number) {\r\n const priceValue = price * 12;\r\n const fixedPriceValue = priceValue.toFixed(2);\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'product data',\r\n eventAction: 'click on bo button',\r\n eventLabel: `click_bo_${productId}`,\r\n eventValue: fixedPriceValue,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: [\r\n 'product data',\r\n 'click on bo button' + '/' + `click_bo_${productId}`,\r\n Number.parseFloat(fixedPriceValue),\r\n 'd',\r\n ],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nfunction TrackLogin() {\r\n const loggedInPageType = Cookies.get('LoggedInPageType');\r\n const loggedInResult = Cookies.get('LoggedInResult');\r\n\r\n if (loggedInPageType && loggedInResult) {\r\n loginTracking(loggedInPageType, loggedInResult);\r\n }\r\n\r\n const eId = Cookies.get('eId');\r\n if (eId) {\r\n pushTrboId(eId);\r\n Cookies.remove('eId');\r\n }\r\n}\r\n\r\nfunction trackIdLayer() {\r\n const hId = Cookies.get('hEid');\r\n const hKid = Cookies.get('hKid');\r\n const hMail = Cookies.get('hMail');\r\n const eventName = Cookies.get('eName');\r\n if (hId) {\r\n trackIdLayerComplete(hId, hMail, hKid);\r\n Cookies.remove('hEid');\r\n Cookies.remove('hKid');\r\n Cookies.remove('hMail');\r\n } else if (hMail) {\r\n trackIdLayerReduced(hMail, eventName);\r\n Cookies.remove('hEid');\r\n Cookies.remove('hKid');\r\n Cookies.remove('hMail');\r\n Cookies.remove('eName');\r\n }\r\n}\r\n","\r\n\r\nexport const buildTrboRequestUrl = (slot, productId) => {\r\n let requestUrl = 'https://api-v4.trbo.com/s2s.php';\r\n\r\n requestUrl +=\r\n '?g=' + JSON.stringify(parseGlobalData());\r\n requestUrl +=\r\n '&s=' + JSON.stringify(parseSessionData());\r\n requestUrl +=\r\n '&p=' + JSON.stringify(parseProductData(productId));\r\n requestUrl +=\r\n '&dl=' +\r\n JSON.stringify(parseDataLayerData(slot));\r\n requestUrl +=\r\n '&seg=' +\r\n JSON.stringify(parseSegments());\r\n\r\n if (Cookies.get(\"trbodebug\")) {\r\n console.log(requestUrl);\r\n }\r\n return requestUrl;\r\n}\r\n\r\nconst parseSegments = function() {\r\n var segments = {};\r\n if (typeof window !== 'undefined' && window && window._trbo) {\r\n segments = window._trbo.udp.data.segmentData;\r\n }\r\n\r\n return segments;\r\n}\r\n\r\nconst parseGlobalData = function() {\r\n var global_data = {\r\n st: 0,\r\n p: encodeURIComponent(window.location.href),\r\n pt: encodeURIComponent(window.location.href), // current URL with URL parameters\r\n t: Math.floor((new Date()).getTime() / 1000),\r\n sh: 13017, // shop_id from trbo interface : TODO \r\n u: get_user_id(), // trbo user_id\r\n ts: get_sale_count(), // sale count number of sales per User\r\n ust: get_user_start_time(), // user start time\r\n sdt: get_session_duration_total(), // session duration total of all sessions in seconds\r\n sc: get_session_count(), // session count, number of total sessions\r\n sid: get_session_id(),\r\n pt: get_page_type_id(),\r\n cb: get_current_basket(),\r\n bw: 1440, // browser / viewport with\r\n bh: 768, // browser / viewport height\r\n cic: [], // click in channel - legacy\r\n cic2: get_cic2(), // click in channel v2\r\n ref: \"\", // page referrer\r\n };\r\n\r\n return global_data;\r\n};\r\n\r\nconst parseSessionData = function() {\r\n var session_data = [];\r\n // if window._trbo is available :\r\n if (typeof window !== 'undefined' && window && window._trbo) {\r\n session_data = window._trbo.udp.getSessions().slice(0,5);\r\n } else if (typeof localStorage !== 'undefined') {\r\n // else use local storage\r\n session_data.push({\r\n sst: JSON.parse(localStorage._trbo_ud).session.createTime,\r\n pvc: JSON.parse(localStorage._trbo_ud).session.sessionSummary.pageViewCount,\r\n sd: JSON.parse(localStorage._trbo_ud).session.sessionSummary.sessionDuration\r\n });\r\n var passt_sessions = JSON.parse(localStorage._trbo_ud).sessions;\r\n if (Object.keys(passt_sessions).length > 0) {\r\n for (var sessionkey in passt_sessions) {\r\n if (session_data.length >= 5) continue;\r\n session_data.push({\r\n sst: passt_sessions[sessionkey].createTime,\r\n pvc: passt_sessions[sessionkey].sessionSummary.pageViewCount,\r\n sd: passt_sessions[sessionkey].sessionSummary.sessionDuration \r\n });\r\n }\r\n }\r\n }\r\n\r\n return session_data;\r\n};\r\n\r\nconst parseProductData = function(productId) {\r\n var product_data = {};\r\n\r\n if (productId) {\r\n product_data = {\r\n [productId]: Date.now()\r\n };\r\n\r\n return product_data;\r\n }\r\n\r\n \r\n // if window._trbo is available :\r\n if (typeof window !== 'undefined' && window && window._trbo) {\r\n product_data = window._trbo.app.opts.requestDataTransformer.getProducts()\r\n } else if (typeof localStorage !== 'undefined') {\r\n }\r\n\r\n return product_data;\r\n};\r\n\r\nconst parseDataLayerData = function(slot) {\r\n var data_layer = {};\r\n \r\n if (typeof window !== 'undefined' && window && window._trbo) {\r\n var _local_storage_data_layer = _trbo.udp.getUserSummary().externalData;\r\n if (_local_storage_data_layer && Object.keys(_local_storage_data_layer).length > 0) {\r\n for (var data_layer_key in _local_storage_data_layer) {\r\n if (_local_storage_data_layer[data_layer_key] !== 'n/a' && \r\n _local_storage_data_layer[data_layer_key] !== '' && \r\n data_layer_key !== 'external_user_id') {\r\n if (typeof _local_storage_data_layer[data_layer_key] === 'object' && \r\n _local_storage_data_layer[data_layer_key] !== null) {\r\n data_layer[data_layer_key] = _local_storage_data_layer[data_layer_key]\r\n }\r\n else {\r\n data_layer[data_layer_key] = _local_storage_data_layer[data_layer_key].toString().replace(\"&\", \"%26\");\r\n }\r\n \r\n }\r\n }\r\n }\r\n }\r\n \r\n if (slot) {\r\n data_layer[\"slot\"] = slot;\r\n }\r\n\r\n return data_layer;\r\n};\r\n\r\n/**\r\n * unique trbo user id\r\n */\r\nconst get_user_id = function() {\r\n return JSON.parse(localStorage._trbo_ud).user.userId;;\r\n};\r\n\r\n/**\r\n * current session id of user\r\n */\r\nconst get_session_id = function() {\r\n return JSON.parse(localStorage._trbo_ud).session.sessionId;\r\n};\r\n\r\n/**\r\n * id of current page type\r\n */\r\nconst get_page_type_id = function() {\r\n var page_type_mapping = {\r\n 'detail': 1,\r\n 'search': 2,\r\n 'basket': 3,\r\n 'home': 4,\r\n 'other': 5,\r\n 'checkout': 6,\r\n 'static': 7,\r\n 'category': 8,\r\n 'unknown': 9,\r\n 'confirmation': 10,\r\n 'account': 12\r\n };\r\n var page_type_id = page_type_mapping.detail;\r\n // TODO return correct page type\r\n\r\n return page_type_id;\r\n};\r\n\r\n/**\r\n * value, number and items of current basket\r\n */\r\nconst get_current_basket = function() {\r\n var current_basket_data = {\r\n value: 0, // absolut value of current basket\r\n num: 0, // number of products within current basket\r\n voucher: 0, // is voucher within basket : 0 = no : 1 = yes\r\n p: [] // array of product_ids within current basket \r\n };\r\n // TODO fill data\r\n return current_basket_data;\r\n};\r\n\r\n\r\n/**\r\n * total number of sale conversions\r\n */\r\nconst get_sale_count = function() {\r\n return JSON.parse(localStorage._trbo_ud).user.userSummary.saleCount;\r\n};\r\n\r\n/**\r\n * timestamp when user was created \r\n */ \r\nconst get_user_start_time = function() {\r\n return JSON.parse(localStorage._trbo_ud).user.userSummary.userCreateTime;\r\n};\r\n\r\n/**\r\n * total session duration from all sessions in seconds\r\n */\r\nconst get_session_duration_total = function() {\r\n return JSON.parse(localStorage._trbo_ud).user.userSummary.sessionDurationTotal;\r\n};\r\n\r\n/**\r\n * get number of sessions for this user\r\n */\r\nconst get_session_count = function() {\r\n return JSON.parse(localStorage._trbo_ud).user.userSummary.sessionCount;\r\n};\r\n\r\nconst get_cic2 = function() {\r\n let cic2 = [];\r\n\r\n if (typeof window !== 'undefined' && window && window._trbo) {\r\n cic2 = window._trbo.udp.getChannelData()\r\n } \r\n\r\n return cic2;\r\n}\r\n","import { Datum, ITrboResonse } from '../../Checkout/Models/Trbo/ITrboResonse';\r\nimport { ProduktkarussellItem, ProduktkarussellModel } from '../../Produktdetails/Models/Produktkarussell';\r\n\r\nexport const mapTrboResponseToProduktkarussellModel = (trboResponse: ITrboResonse): ProduktkarussellModel => {\r\n let response = {} as ProduktkarussellModel;\r\n response.karussellItems = [] as ProduktkarussellItem[];\r\n if (trboResponse.tracking.length > 0) {\r\n response.campaignId = trboResponse.tracking[0].campaign_id;\r\n response.campaignName = trboResponse.tracking[0].campaign_name;\r\n response.moduleId = trboResponse.tracking[0].module_id;\r\n response.moduleName = trboResponse.tracking[0].module_name;\r\n response.userType = trboResponse.tracking[0].user_type;\r\n }\r\n\r\n if (trboResponse.data) {\r\n for (let i = 0; i < trboResponse.data.length; i++) {\r\n for (let tr = 0; tr < trboResponse.data[i].length; tr++) {\r\n try {\r\n const trboProduct = trboResponse.data[i][tr];\r\n response.karussellItems.push({\r\n authorstring: trboProduct.brand,\r\n imageUrl: trboProduct.image_url,\r\n isAnkuendigung: trboProduct.custom3 === 'True',\r\n isEbook: false,\r\n isNew: trboProduct.custom2 === 'True',\r\n isStandardwerk: false,\r\n isTopTitel: trboProduct.custom1 === 'True',\r\n price: parseFloat(trboProduct.price).toLocaleString('de-De', {\r\n style: 'currency',\r\n currency: 'EUR',\r\n }),\r\n pricePrefix:\r\n trboProduct.custom6 === 'True' ? 'ca. ' : trboProduct.custom7 === 'True' ? 'ab ' : '',\r\n productDetailUrl: trboProduct.deeplink_orig,\r\n productId: parseInt(trboProduct.article),\r\n showBezugsartOverlay: showBezugsartOverlay(trboProduct),\r\n title: trboProduct.label,\r\n warenkorbAnzeigen: true,\r\n isBeckOnline: trboProduct.custom10 === 'beck-online-Modul',\r\n kupOrderNo: trboProduct.custom12,\r\n dateOfPublicationDescription: '',\r\n lieferstatus: trboProduct.custom14,\r\n lieferstatusId: 0,\r\n auflage: trboProduct.custom4,\r\n releaseYear: trboProduct.custom5,\r\n medium: trboProduct.custom10,\r\n publisher: trboProduct.custom11,\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return response;\r\n};\r\nfunction showBezugsartOverlay(trboProduct: Datum): boolean {\r\n return (\r\n trboProduct.custom15 === '5' &&\r\n parseFloat(trboProduct.price) > 0 &&\r\n trboProduct.custom7 === 'False' &&\r\n (trboProduct.custom11 === 'C.H.BECK' || trboProduct.custom11 === 'Vahlen')\r\n );\r\n}\r\n","$(document).ready(function () {\r\n\r\n $(\".bestellform #order_form #clearFormBtn\").click(function (e) {\r\n orderSuccessClose();\r\n errorClose();\r\n orderFailedClose();\r\n orderIncompleteClose();\r\n orderFailedISBNClose();\r\n DeleteSearchedISBNS();\r\n $('#totalOrderPrice').html(\"\");\r\n });\r\n\r\n $(document).on('input', 'input[name=\"user_product\"]', function () {\r\n validateIsbn(this);\r\n });\r\n\r\n $('#isbnList').on('input', '.input-quantity', function () {\r\n updateTotalOrderPrice();\r\n });\r\n\r\n // Verknüpfung des Events mit dem Button zur Entfernung von Produkten\r\n $(\"#isbnList\").on(\"click\", '.btn-remove', removeOrderItem);\r\n\r\n //Validierung des Formulars bei Submit\r\n $(\"#submitbtn\").click(function (event) {\r\n\r\n event.preventDefault();\r\n orderSuccessClose();\r\n errorClose();\r\n orderFailedClose();\r\n orderIncompleteClose();\r\n orderFailedISBNClose();\r\n\r\n if (checkValidity()) {\r\n var data = getEnBestellformData();\r\n\r\n if (data.orderItems[0].id != null) {\r\n $.ajax({\r\n url: \"/Umbraco/api/EnBestellformular/SubmitOrder\",\r\n data: JSON.stringify(data),\r\n dataType: \"json\",\r\n success: orderSuccess(),\r\n error: function (statusCode) {\r\n error(statusCode.status);\r\n },\r\n type: \"POST\",\r\n contentType: \"application/json; charset=utf-8\"\r\n });\r\n } else {\r\n orderFailedISBN();\r\n } \r\n } else {\r\n orderIncomplete();\r\n }\r\n \r\n \r\n \r\n });\r\n});\r\n\r\n\r\n/**\r\n * Check ob die Formulardaten ausgefüllt worden sind.\r\n * Wenn nicht wird eine error klasse gesetzt\r\n */\r\nfunction checkValidity() {\r\n var valid = true;\r\n $(\"form[id='order_form'] input\").removeClass(\"inputError\");\r\n\r\n if (!$(\"form[id='order_form']\")[0].checkValidity()) {\r\n valid = false;\r\n var inputFields = $(\"form[id='order_form'] input\");\r\n for (var i = 0; i < inputFields.length; i++) {\r\n if (!inputFields[i].checkValidity()) {\r\n $(inputFields[i]).addClass(\"inputError\");\r\n }\r\n }\r\n }\r\n\r\n return valid;\r\n}\r\n /**\r\n * Aufgerufen nachdem das Formular erfolgreich übermittelt wurde.\r\n * Leer das Formular und zeigt eine Danknachricht an.\r\n * @returns {} \r\n */\r\nfunction orderSuccess() {\r\n emptyForm();\r\n $('.overlay').show();\r\n};\r\n\r\nfunction error(statusCode) {\r\n if (statusCode === 500) {\r\n orderFailed(); \r\n }\r\n if (statusCode === 400) {\r\n orderIncomplete();\r\n }\r\n }\r\n\r\n function orderFailed(data) {\r\n $('.overlayOrderFailed').show();\r\n};\r\n\r\n function orderFailedISBN() {\r\n $('.overlayISBNFailed').show();\r\n};\r\n\r\n function orderIncomplete(data) {\r\n $('.overlayOrderIncomplete').show();\r\n};\r\n\r\nfunction orderSuccessClose() {\r\n $('.overlay').hide();\r\n};\r\n\r\nfunction errorClose() {\r\n orderIncompleteClose();\r\n orderFailedClose();\r\n}\r\n\r\nfunction orderFailedISBNClose() {\r\n $('.overlayISBNFailed').hide();\r\n};\r\n\r\nfunction orderFailedClose() {\r\n $('.overlayOrderFailed').hide();\r\n};\r\n\r\nfunction orderIncompleteClose() {\r\n $('.overlayOrderIncomplete').hide();\r\n};\r\n\r\n /**\r\n * Leert alle Felder des Formulars\r\n * Leer das Formular und zeigt eine Danknachricht an.\r\n * @returns {} \r\n */\r\n function emptyForm() {\r\n $(\"#order_form\").each(function() {\r\n $(this).val(\"\");\r\n });\r\n $(\"#clearFormBtn\").click();\r\n\r\n DeleteSearchedISBNS();\r\n\r\n $('#totalOrderPrice').html(\"\");\r\n orderSuccessClose();\r\n errorClose();\r\n orderFailedClose();\r\n orderIncompleteClose();\r\n orderFailedISBNClose();\r\n}\r\n\r\nfunction DeleteSearchedISBNS() {\r\n var orders = $('.ENItem');\r\n if ($('.ENItem').length == 1) {\r\n $(orders[0]).hide();\r\n }\r\n var itemLength = $('.ENItem').length;\r\n for (var i = 0; i < itemLength; i++) {\r\n if (i > 0) {\r\n\r\n $(orders[i]).remove();\r\n }\r\n else {\r\n $(orders[0]).hide();\r\n $(orders[0]).data(\"data-Id\", null);\r\n }\r\n }\r\n}\r\n\r\n /**\r\n * Funktion zur Ermittlung des Gesamtpreises\r\n * @returns {} \r\n */\r\n function updateTotalOrderPrice() {\r\n var totalPrice = 0;\r\n var orders = $('.ENItem');\r\n var showEproxPrice = false;\r\n \r\n for (var i = 0; i < $('.ENItem').length; i++) { \r\n var productPrice = $(orders[i]).find('.price').text();\r\n if (productPrice.indexOf(\"ca.\") >= 0) {\r\n showEproxPrice = true;\r\n }\r\n totalPrice += $(orders[i]).data('data-price') * $(orders[i]).find('.input-quantity').val(); \r\n }\r\n if (showEproxPrice) {\r\n $('#totalOrderPrice').html(\"Total price is ca. \" + String(totalPrice.toFixed(2)).replace(\".\", \",\") + \" €\");\r\n }\r\n else {\r\n $('#totalOrderPrice').html(\"Total price is \" + String(totalPrice.toFixed(2)).replace(\".\", \",\") + \" €\");\r\n } \r\n }\r\n\r\n /**\r\n * Funktion zm Update der Produktdaten und der Anzeige dieser\r\n * @param {} e: Event der eingegebenen gültigen ISBN\r\n * @param {} data\r\n * @returns {}\r\n */\r\n //e sind die daten aus der API!\r\n function updateProductData(e, data) {\r\n var searchProduct = e[0];\r\n var products = $('#resultWrapper').find('.resultItem');\r\n var product = products[0];\r\n var productCloned = false;\r\n \r\n\r\n if (product.style.display !== \"none\") {\r\n var newProduct = $(product).clone();\r\n product = newProduct;\r\n productCloned = true;\r\n }\r\n //Editieren;\r\n $(product).data(\"data-Id\", searchProduct.productId);\r\n $(product).data(\"data-Isbn\", searchProduct.isbn);\r\n\r\n if (!searchProduct.isNew) { $(product).find(\".statusNew\").hide(); } \r\n if (!searchProduct.isTopTitel) { $(product).find(\".statusTop\").hide(); }\r\n $(product).find(\".productImage\").first().attr(\"src\", searchProduct.imageUrl).attr(\"onerror\",\"this.src = '/images/NoBook_tranparent.png'\");\r\n $(product).find(\".publisher\").html(searchProduct.authors);\r\n $(product).find(\".title\").html(searchProduct.title);\r\n $(product).find(\".description\").html(searchProduct.description);\r\n $(product).find(\".availability\").html(searchProduct.availability);\r\n $(product).find(\".price\").html(searchProduct.caPrice? \"ca. \": \"\" + searchProduct.price); \r\n $(product).data(\"data-price\", searchProduct.priceUnformatted);\r\n $(product).find(\".enBestellformularToBasketButton\").attr(\"href\",searchProduct.linkToBasket);\r\n\r\n var links = $(product).find(\".links\").first();\r\n links.html(\"\");\r\n\r\n for (var i = 0; i < searchProduct.bibliographischeDaten.length; i++) {\r\n var dateSpan = document.createElement('span');\r\n dateSpan.innerHTML = searchProduct.bibliographischeDaten[i];\r\n $(dateSpan).appendTo(links);\r\n }\r\n \r\n $(product).show();\r\n if (productCloned) {\r\n product.appendTo(\"#resultWrapper\");\r\n }\r\n\r\n $('input[name=\"user_product\"]').val(\"\");\r\n updateTotalOrderPrice();\r\n }\r\n\r\n /**\r\n * Funktion zur Anzeige eines Warntextes bei nicht gefundenem Produkt\r\n * @param {} e: Event der eingegebenen gültigen ISBN\r\n * @param {} jqxhr\r\n * @returns {}\r\n */\r\n// TODO Anpassung des Codes\r\n function updateErrorHandler(e, jqxhr) {\r\n //if (jqxhr.status === 404) {\r\n // $(e).parent().find(\".field-validation-valid\").html(\"No product found for this ISBN\").css('display', 'inline');\r\n //} else {\r\n // $(e).parent().find(\".field-validation-valid\").html(\"No product found. Server returned Status: \" + jqxhr.status).css('display', 'inline');\r\n //}\r\n }\r\n\r\n /**\r\n * Funktion zur Validierung von ISBNs\r\n * Ruft bei Valider ISBN eine Abfrage von Produktdaten auf\r\n * @param {} e: Event der eingegebenen gültigen ISBN\r\n * @returns {}\r\n */\r\n function validateIsbn(e) {\r\n var isbn = e.value.trim();\r\n var isbnPattern = /^(?:ISBN(?:-1[03])?:? )?(?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]$/;\r\n\r\n if (isbnPattern.test(isbn)) {\r\n var url = '/umbraco/api/EnBestellformular/GetProductByISBN';\r\n $.ajax({\r\n url: url,\r\n data: { isbn: isbn},\r\n dataType: \"json\",\r\n success: updateProductData,\r\n error: updateErrorHandler\r\n });\r\n };\r\n }\r\n\r\n/**\r\n * Funktion zum Formatieren der Währung\r\n * @param {} n, c, d, t \r\n * @returns {} formatierter Währungsstring\r\n */\r\n// TODO Integration und Anpassung des Codes\r\nfunction formatMoney(n, c, d, t) {\r\n //var c = isNaN(c = Math.abs(c)) ? 2 : c,\r\n // d = d == undefined ? \",\" : d,\r\n // t = t == undefined ? \".\" : t,\r\n // s = n < 0 ? \"-\" : \"\",\r\n // i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + \"\",\r\n // j = (j = i.length) > 3 ? j % 3 : 0;\r\n //return s + (j ? i.substr(0, j) + t : \"\") + i.substr(j).replace(/(\\d{3})(?=\\d)/g, \"$1\" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : \"\");\r\n}\r\n\r\n\r\n\r\n/**\r\n * Funktion zur Entfernung eines Produkts aus der Liste\r\n * Setztbei einem einzigen vorhandenen Produkt dessen Feld zurück\r\n * @param {} e: Event des gedrückten Knopfes\r\n * @returns {}\r\n */\r\n// TODO Integration und Anpassung des Codes\r\nfunction removeOrderItem(e) {\r\n var ele = $(e.target).closest(\".ENItem\");\r\n if (ele[\"0\"].parentNode.childElementCount === 1) {\r\n $(ele).hide();\r\n $('#totalOrderPrice').html(\"\");\r\n } else {\r\n $(ele).remove();\r\n updateTotalOrderPrice();\r\n }\r\n}\r\n\r\n/**\r\n * Funktion zum Auslesen der Produktdaten im Formular\r\n * zur Erstellung der Email an den Kunden und den Shop\r\n * @returns {} data\r\n */\r\nfunction getEnBestellformData() {\r\n data = {\r\n email: $('input[name=user_email]') .val(),\r\n //confirmEmail: $(\"#ConfirmEMailTextBox\").val(),\r\n name: $('input[name=user_name]') .val(),\r\n firstName: $('input[name=user_first_name]') .val(),\r\n company: $('input[name=user_company]') .val(),\r\n address: $('input[name=user_address]') .val(),\r\n zipCode: $('input[name=user_zip]') .val(),\r\n city: $('input[name=user_city]') .val(),\r\n country: $('input[name=user_country]') .val(),\r\n tel: $('input[name=user_tel]') .val(),\r\n fax: $('input[name=user_fax]') .val(),\r\n furtherInformation: $('textarea[name=user_information]').val(),\r\n orderItems: getOrderList(),\r\n total: $('#totalOrderPrice').text()\r\n }\r\n return data;\r\n}\r\n\r\n/**\r\n * Funktion zur Erstellung einer Liste von bestellten Produkten\r\n * @returns {} array: Array von Produktdaten und Bestellmenge\r\n */\r\n// TODO Integration und Anpassung des Codes\r\nfunction getOrderList() {\r\n var array = [];\r\n var orders = $('.ENItem');\r\n for (var i = 0; i < orders.length; i++) {\r\n var order = {\r\n quantity: parseInt($(orders[i]).find('.input-quantity').val()),\r\n id: $(orders[i]).data('data-Id'),\r\n isbn: $(orders[i]).data('data-Isbn'),\r\n title: $(orders[i]).find(\".title.md.hidden-sm.hidden-xs\").text(),\r\n pricePerUnit: $(orders[i]).data('data-price')\r\n };\r\n array.push(order);\r\n }\r\n return array;\r\n}\r\n\r\n","import { AutosuggestModel } from './Models/ffAutosuggestModel';\r\nimport { setDummyImage } from '../../scripts/functions.js';\r\nimport { availabilityStatusFilter } from './Models/ffConstants';\r\nimport { factfinderSuggestTracking } from './Tracking/factFinderTracking';\r\n\r\n$(() => {\r\n /**\r\n * Ab 3 Zeichen (ohne Leerzeichen) soll dem Kunden ein Autosuggest-Vorschlag gemacht werden\r\n */\r\n $('.mainSearchInput').on('input', function() {\r\n var query = ($(this).val() + '').trim();\r\n if (query !== '') {\r\n $(this)\r\n .closest('.inputEls')\r\n .find('.eraseSearchTerm')\r\n .removeClass('hide');\r\n }\r\n if (query == '') {\r\n $(this)\r\n .closest('.inputEls')\r\n .find('.eraseSearchTerm')\r\n .addClass('hide');\r\n }\r\n if (query !== '' && query.length > 2) {\r\n getAutoSuggestResults($(this).val());\r\n } else if (query == '' || query.length < 3) {\r\n $('.autoSuggest').hide(50);\r\n }\r\n\r\n var changeCurIcon = $('.showMoreSubjects').children('i.fa');\r\n if ($(changeCurIcon).hasClass('fa-angle-up')) {\r\n $(changeCurIcon)\r\n .removeClass('fa-angle-up')\r\n .addClass('fa-angle-down');\r\n $('.moreSubjects').hide(0);\r\n }\r\n });\r\n\r\n $('.autoSuggest').on('click', '.suggest-tracking', function() {\r\n const area = $(this).data('area') as string;\r\n\r\n if (area) {\r\n factfinderSuggestTracking(area);\r\n }\r\n });\r\n\r\n /**\r\n * Fragt die Daten vom Controller ab\r\n * @param query\r\n */\r\n function getAutoSuggestResults(query) {\r\n $.get('/umbraco/api/FfAutosuggest/GetSuggest?query=' + query, data => {\r\n var model = data as AutosuggestModel;\r\n clearSuggests();\r\n if (model != null && model.suggestions != null && model.suggestions.length > 0) {\r\n var displaysElements: boolean = fillSuggestContainer(model, query);\r\n if (displaysElements) {\r\n $('.autoSuggest').show(50);\r\n } else {\r\n $('.autoSuggest').hide();\r\n }\r\n } else {\r\n $('.autoSuggest').hide();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Füllt das Autosuggest-Overlay aus dem Model\r\n * @param model\r\n * @param query\r\n */\r\n function fillSuggestContainer(model: AutosuggestModel, query): boolean {\r\n let displaysElements = false;\r\n var isMobile = $(window).width() < 992;\r\n var hiddenSuggestElements = $('#hiddenSuggestElements');\r\n query = capitalize(query);\r\n for (let suggestion of model.suggestions) {\r\n if (suggestion.type === 'searchTerm') {\r\n //Kopiert das Suchvorschlag-Element\r\n var suchvorschlag = hiddenSuggestElements.find('.Suchvorschlag').clone();\r\n //Bringt die Usersuche un das selbe Format wie die Antwort von FF\r\n var searchquery = umlauteAnpassen(query).toUpperCase();\r\n //Füllt den suggest, hängt es dem passenden Container an und zeigt den Container an.\r\n if (suggestion.name != null) {\r\n var markedSuggest = markSuggest(suggestion.name, searchquery);\r\n suchvorschlag.attr('href', `/suche?query=${suggestion.name}&userInput=${query}`);\r\n var span = hiddenSuggestElements.find('#SuggestElementsToClone span').clone();\r\n span.html(markedSuggest);\r\n suchvorschlag.append(span);\r\n $('.Suchvorschlaege .suggestItems').append(suchvorschlag);\r\n $('.Suchvorschlaege').show();\r\n displaysElements = true;\r\n }\r\n } else if (suggestion.type === 'category' && !isMobile) {\r\n var category = hiddenSuggestElements.find('.Kategorievorschlag').clone();\r\n if (suggestion.name != null) {\r\n var formattedQuery = umlauteAnpassen(query).toUpperCase();\r\n var markedCategory = markSuggest(suggestion.name, formattedQuery);\r\n category.attr('href', suggestion.attributes.deeplink);\r\n var spanCategory = hiddenSuggestElements.find('#SuggestElementsToClone span').clone();\r\n spanCategory.html(markedCategory);\r\n category.append(spanCategory);\r\n $('.Kategorievorschlaege .suggestItems').append(category);\r\n $('.Kategorievorschlaege').show();\r\n displaysElements = true;\r\n }\r\n } else if (suggestion.type === 'Service' && !isMobile) {\r\n //Kopiert das Servicevorschlag-Element\r\n var servicethema = hiddenSuggestElements.find('.Servicethema').clone();\r\n //Füllt den suggest, hängt es dem passenden Container an und zeigt den Container an.\r\n if (suggestion.name != null) {\r\n var markedSuggestThema = markSuggest(suggestion.name, query);\r\n var spanThema = hiddenSuggestElements.find('#SuggestElementsToClone span').clone();\r\n servicethema.attr('href', '/suche?query=' + suggestion.name);\r\n spanThema.html(markedSuggestThema);\r\n servicethema.append(spanThema);\r\n $('.Servicethemen .suggestItems').append(servicethema);\r\n $('.Servicethemen').show();\r\n displaysElements = true;\r\n }\r\n } else if (suggestion.type === 'productName' && !isMobile) {\r\n if (availabilityStatusFilter.includes(suggestion.attributes.availabilityStatusId)) {\r\n //Kopiert das Titelvorschlag-Element\r\n var titelvorschlag = hiddenSuggestElements.find('.Titelvorschlag').clone();\r\n //Füllt den suggest, hängt es dem passenden Container an und zeigt den Container an.\r\n titelvorschlag.find('.title').html(suggestion.name != null ? suggestion.name : '');\r\n\r\n if (suggestion.image != null) {\r\n var widthParam = suggestion.image.indexOf('&width=56');\r\n if (widthParam > 0) {\r\n suggestion.image = suggestion.image.replace('&width=56', '');\r\n }\r\n suggestion.image = suggestion.image + '&height=80';\r\n }\r\n titelvorschlag\r\n .find('img')\r\n .attr('src', suggestion.image != null ? suggestion.image : '')\r\n .on('error', function() {\r\n setDummyImage(this);\r\n });\r\n if (suggestion.attributes != null) {\r\n titelvorschlag.attr(\r\n 'href',\r\n suggestion.attributes.deeplink\r\n ? suggestion.attributes.deeplink\r\n : `/product/${suggestion.attributes.id}`\r\n );\r\n titelvorschlag\r\n .find('.author')\r\n .html(\r\n suggestion.attributes.urheberzeile != null\r\n ? markSuggest(suggestion.attributes.urheberzeile, query)\r\n : ''\r\n );\r\n titelvorschlag\r\n .find('.volume')\r\n .html(\r\n suggestion.attributes.auflage != null\r\n ? markSuggest(suggestion.attributes.auflage, query)\r\n : ''\r\n );\r\n }\r\n $('.Titelvorschlaege .suggestItems').append(titelvorschlag);\r\n $('.Titelvorschlaege').show();\r\n displaysElements = true;\r\n }\r\n }\r\n }\r\n return displaysElements;\r\n }\r\n\r\n /**\r\n * markiert die gesuchten wörter im suchvorschlag\r\n * @param suggestion\r\n * @param searchquery\r\n */\r\n function markSuggest(suggestion, searchquery) {\r\n var re = new RegExp(searchquery.replace(/ /g, '|'), 'gi');\r\n\r\n return suggestion.replace(re, function(matched) {\r\n return '' + matched + '';\r\n });\r\n }\r\n\r\n /**\r\n * Löscht die Vorschläge\r\n */\r\n function clearSuggests() {\r\n $('.suggestItems').html('');\r\n $('.Suchvorschlaege').hide();\r\n $('.Servicethemen').hide();\r\n $('.Kategorievorschlaege').hide();\r\n $('.Titelvorschlaege').hide();\r\n }\r\n\r\n /**\r\n * Passt die Umlaute in einem String an. zB ä => ae\r\n * @param query\r\n */\r\n function umlauteAnpassen(query) {\r\n return query\r\n .replace(/\\u00e4/g, 'ae')\r\n .replace(/\\u00c4/g, 'Ae')\r\n .replace(/\\u00fc/g, 'ue')\r\n .replace(/\\u00dc/g, 'Ue')\r\n .replace(/\\u00f6/g, 'oe')\r\n .replace(/\\u00d6/g, 'Oe');\r\n }\r\n\r\n function capitalize(s) {\r\n return s && s[0].toUpperCase() + s.slice(1);\r\n }\r\n});\r\n/**\r\n * Lässt das Suggestfenster verschwinden, wenn man danaben klickt\r\n */\r\n$(document).mouseup(e => {\r\n var container_01 = $('.autoSuggest');\r\n\r\n // if the target of the click isn't the container nor a descendant of the container\r\n if (e.target instanceof Element && container_01.has(e.target).length === 0 && !container_01.is(e.target)) {\r\n container_01.hide();\r\n }\r\n CloseDropDownWindows(e);\r\n});\r\n\r\nfunction CloseDropDownWindows(e) {\r\n var container_02 = $('.showMoreSubjects');\r\n if (!container_02.is(e.target) && container_02.has(e.target).length === 0) {\r\n //container_02.hide();\r\n var changeCurIcon = $(container_02).children('i.fa');\r\n if ($(changeCurIcon).hasClass('fa-angle-up')) {\r\n $(changeCurIcon)\r\n .removeClass('fa-angle-up')\r\n .addClass('fa-angle-down');\r\n $('.moreSubjects').hide(0);\r\n $('.moreSubjectsTestContainer').hide(0);\r\n }\r\n }\r\n const container_03 = $('.basket-menu-bubble');\r\n if (!container_03.is(e.target) && container_03.has(e.target).length === 0) {\r\n container_03.hide();\r\n }\r\n}\r\n","/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)\n * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)\n * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.\n *\n * Version: 1.3.8\n *\n */\n(function($) {\n\n $.fn.extend({\n slimScroll: function(options) {\n\n var defaults = {\n\n // width in pixels of the visible scroll area\n width : 'auto',\n\n // height in pixels of the visible scroll area\n height : '250px',\n\n // width in pixels of the scrollbar and rail\n size : '7px',\n\n // scrollbar color, accepts any hex/color value\n color: '#000',\n\n // scrollbar position - left/right\n position : 'right',\n\n // distance in pixels between the side edge and the scrollbar\n distance : '1px',\n\n // default scroll position on load - top / bottom / $('selector')\n start : 'top',\n\n // sets scrollbar opacity\n opacity : .4,\n\n // enables always-on mode for the scrollbar\n alwaysVisible : false,\n\n // check if we should hide the scrollbar when user is hovering over\n disableFadeOut : false,\n\n // sets visibility of the rail\n railVisible : false,\n\n // sets rail color\n railColor : '#333',\n\n // sets rail opacity\n railOpacity : .2,\n\n // whether we should use jQuery UI Draggable to enable bar dragging\n railDraggable : true,\n\n // defautlt CSS class of the slimscroll rail\n railClass : 'slimScrollRail',\n\n // defautlt CSS class of the slimscroll bar\n barClass : 'slimScrollBar',\n\n // defautlt CSS class of the slimscroll wrapper\n wrapperClass : 'slimScrollDiv',\n\n // check if mousewheel should scroll the window if we reach top/bottom\n allowPageScroll : false,\n\n // scroll amount applied to each mouse wheel step\n wheelStep : 20,\n\n // scroll amount applied when user is using gestures\n touchScrollStep : 200,\n\n // sets border radius\n borderRadius: '7px',\n\n // sets border radius of the rail\n railBorderRadius : '7px'\n };\n\n var o = $.extend(defaults, options);\n\n // do it for every element that matches selector\n this.each(function(){\n\n var isOverPanel, isOverBar, isDragg, queueHide, touchDif,\n barHeight, percentScroll, lastScroll,\n divS = '
',\n minBarHeight = 30,\n releaseScroll = false;\n\n // used in event handlers and for better minification\n var me = $(this);\n\n // ensure we are not binding it again\n if (me.parent().hasClass(o.wrapperClass))\n {\n // start from last bar position\n var offset = me.scrollTop();\n\n // find bar and rail\n bar = me.siblings('.' + o.barClass);\n rail = me.siblings('.' + o.railClass);\n\n getBarHeight();\n\n // check if we should scroll existing instance\n if ($.isPlainObject(options))\n {\n // Pass height: auto to an existing slimscroll object to force a resize after contents have changed\n if ( 'height' in options && options.height == 'auto' ) {\n me.parent().css('height', 'auto');\n me.css('height', 'auto');\n var height = me.parent().parent().height();\n me.parent().css('height', height);\n me.css('height', height);\n } else if ('height' in options) {\n var h = options.height;\n me.parent().css('height', h);\n me.css('height', h);\n }\n\n if ('scrollTo' in options)\n {\n // jump to a static point\n offset = parseInt(o.scrollTo);\n }\n else if ('scrollBy' in options)\n {\n // jump by value pixels\n offset += parseInt(o.scrollBy);\n }\n else if ('destroy' in options)\n {\n // remove slimscroll elements\n bar.remove();\n rail.remove();\n me.unwrap();\n return;\n }\n\n // scroll content by the given offset\n scrollContent(offset, false, true);\n }\n\n return;\n }\n else if ($.isPlainObject(options))\n {\n if ('destroy' in options)\n {\n \treturn;\n }\n }\n\n // optionally set height to the parent's height\n o.height = (o.height == 'auto') ? me.parent().height() : o.height;\n\n // wrap content\n var wrapper = $(divS)\n .addClass(o.wrapperClass)\n .css({\n position: 'relative',\n overflow: 'hidden',\n width: o.width,\n height: o.height\n });\n\n // update style for the div\n me.css({\n overflow: 'hidden',\n width: o.width,\n height: o.height\n });\n\n // create scrollbar rail\n var rail = $(divS)\n .addClass(o.railClass)\n .css({\n width: o.size,\n height: '100%',\n position: 'absolute',\n top: 0,\n display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',\n 'border-radius': o.railBorderRadius,\n background: o.railColor,\n opacity: o.railOpacity,\n zIndex: 90\n });\n\n // create scrollbar\n var bar = $(divS)\n .addClass(o.barClass)\n .css({\n background: o.color,\n width: o.size,\n position: 'absolute',\n top: 0,\n opacity: o.opacity,\n display: o.alwaysVisible ? 'block' : 'none',\n 'border-radius' : o.borderRadius,\n BorderRadius: o.borderRadius,\n MozBorderRadius: o.borderRadius,\n WebkitBorderRadius: o.borderRadius,\n zIndex: 99\n });\n\n // set position\n var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };\n rail.css(posCss);\n bar.css(posCss);\n\n // wrap it\n me.wrap(wrapper);\n\n // append to parent div\n me.parent().append(bar);\n me.parent().append(rail);\n\n // make it draggable and no longer dependent on the jqueryUI\n if (o.railDraggable){\n bar.bind(\"mousedown\", function(e) {\n var $doc = $(document);\n isDragg = true;\n t = parseFloat(bar.css('top'));\n pageY = e.pageY;\n\n $doc.bind(\"mousemove.slimscroll\", function(e){\n currTop = t + e.pageY - pageY;\n bar.css('top', currTop);\n scrollContent(0, bar.position().top, false);// scroll content\n });\n\n $doc.bind(\"mouseup.slimscroll\", function(e) {\n isDragg = false;hideBar();\n $doc.unbind('.slimscroll');\n });\n return false;\n }).bind(\"selectstart.slimscroll\", function(e){\n e.stopPropagation();\n e.preventDefault();\n return false;\n });\n }\n\n // on rail over\n rail.hover(function(){\n showBar();\n }, function(){\n hideBar();\n });\n\n // on bar over\n bar.hover(function(){\n isOverBar = true;\n }, function(){\n isOverBar = false;\n });\n\n // show on parent mouseover\n me.hover(function(){\n isOverPanel = true;\n showBar();\n hideBar();\n }, function(){\n isOverPanel = false;\n hideBar();\n });\n\n // support for mobile\n me.bind('touchstart', function(e,b){\n if (e.originalEvent.touches.length)\n {\n // record where touch started\n touchDif = e.originalEvent.touches[0].pageY;\n }\n });\n\n me.bind('touchmove', function(e){\n // prevent scrolling the page if necessary\n if(!releaseScroll)\n {\n \t\t e.originalEvent.preventDefault();\n\t\t }\n if (e.originalEvent.touches.length)\n {\n // see how far user swiped\n var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;\n // scroll content\n scrollContent(diff, true);\n touchDif = e.originalEvent.touches[0].pageY;\n }\n });\n\n // set up initial height\n getBarHeight();\n\n // check start position\n if (o.start === 'bottom')\n {\n // scroll content to bottom\n bar.css({ top: me.outerHeight() - bar.outerHeight() });\n scrollContent(0, true);\n }\n else if (o.start !== 'top')\n {\n // assume jQuery selector\n scrollContent($(o.start).position().top, null, true);\n\n // make sure bar stays hidden\n if (!o.alwaysVisible) { bar.hide(); }\n }\n\n // attach scroll events\n attachWheel(this);\n\n function _onWheel(e)\n {\n // use mouse wheel only when mouse is over\n if (!isOverPanel) { return; }\n\n var e = e || window.event;\n\n var delta = 0;\n if (e.wheelDelta) { delta = -e.wheelDelta/120; }\n if (e.detail) { delta = e.detail / 3; }\n\n var target = e.target || e.srcTarget || e.srcElement;\n if ($(target).closest('.' + o.wrapperClass).is(me.parent())) {\n // scroll content\n scrollContent(delta, true);\n }\n\n // stop window scroll\n if (e.preventDefault && !releaseScroll) { e.preventDefault(); }\n if (!releaseScroll) { e.returnValue = false; }\n }\n\n function scrollContent(y, isWheel, isJump)\n {\n releaseScroll = false;\n var delta = y;\n var maxTop = me.outerHeight() - bar.outerHeight();\n\n if (isWheel)\n {\n // move bar with mouse wheel\n delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();\n\n // move bar, make sure it doesn't go out\n delta = Math.min(Math.max(delta, 0), maxTop);\n\n // if scrolling down, make sure a fractional change to the\n // scroll position isn't rounded away when the scrollbar's CSS is set\n // this flooring of delta would happened automatically when\n // bar.css is set below, but we floor here for clarity\n delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);\n\n // scroll the scrollbar\n bar.css({ top: delta + 'px' });\n }\n\n // calculate actual scroll amount\n percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());\n delta = percentScroll * (me[0].scrollHeight - me.outerHeight());\n\n if (isJump)\n {\n delta = y;\n var offsetTop = delta / me[0].scrollHeight * me.outerHeight();\n offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);\n bar.css({ top: offsetTop + 'px' });\n }\n\n // scroll content\n me.scrollTop(delta);\n\n // fire scrolling event\n me.trigger('slimscrolling', ~~delta);\n\n // ensure bar is visible\n showBar();\n\n // trigger hide when scroll is stopped\n hideBar();\n }\n\n function attachWheel(target)\n {\n if (window.addEventListener)\n {\n target.addEventListener('DOMMouseScroll', _onWheel, false );\n target.addEventListener('mousewheel', _onWheel, false );\n }\n else\n {\n document.attachEvent(\"onmousewheel\", _onWheel)\n }\n }\n\n function getBarHeight()\n {\n // calculate scrollbar height and make sure it is not too small\n barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);\n bar.css({ height: barHeight + 'px' });\n\n // hide scrollbar if content is not long enough\n var display = barHeight == me.outerHeight() ? 'none' : 'block';\n bar.css({ display: display });\n }\n\n function showBar()\n {\n // recalculate bar height\n getBarHeight();\n clearTimeout(queueHide);\n\n // when bar reached top or bottom\n if (percentScroll == ~~percentScroll)\n {\n //release wheel\n releaseScroll = o.allowPageScroll;\n\n // publish approporiate event\n if (lastScroll != percentScroll)\n {\n var msg = (~~percentScroll == 0) ? 'top' : 'bottom';\n me.trigger('slimscroll', msg);\n }\n }\n else\n {\n releaseScroll = false;\n }\n lastScroll = percentScroll;\n\n // show only when required\n if(barHeight >= me.outerHeight()) {\n //allow window scroll\n releaseScroll = true;\n return;\n }\n bar.stop(true,true).fadeIn('fast');\n if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }\n }\n\n function hideBar()\n {\n // only hide when options allow it\n if (!o.alwaysVisible)\n {\n queueHide = setTimeout(function(){\n if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)\n {\n bar.fadeOut('slow');\n rail.fadeOut('slow');\n }\n }, 1000);\n }\n }\n\n });\n\n // maintain chainability\n return this;\n }\n });\n\n $.fn.extend({\n slimscroll: $.fn.slimScroll\n });\n\n})(jQuery);\n","/**\r\n * List alle Verfügbarkeitsstatus deren Produkte angezeigt werden dürfen\r\n */\r\nexport const availabilityStatusFilter = [\r\n 1,\r\n 3,\r\n 4,\r\n 5,\r\n 8,\r\n 9,\r\n 10,\r\n 11,\r\n 12,\r\n 13,\r\n 17,\r\n 18,\r\n 19,\r\n 20,\r\n 21,\r\n 22,\r\n 23,\r\n 24,\r\n 25,\r\n 26,\r\n 27,\r\n 28,\r\n 29,\r\n 30,\r\n 32,\r\n 33,\r\n 34\r\n];\r\n","//declare var hallo: any;\r\nimport { mobileFunctions, setDummyImage, DelocaleString, cutTextWholeWords } from '../../../scripts/functions.js';\r\nimport { checkoutAdd } from '../../Checkout/checkoutGlobal';\r\nimport ProductHelper = require('../../Shared/ProductHelper');\r\n\r\nvar lastClickedFilterParentId = '';\r\n$(() => {\r\n $('.ajax_filter_link_tag').on('click', function() {\r\n clickHandlerAjaxSearch(this);\r\n });\r\n\r\n $('.ajax_filter_link').on('click', function(e) {\r\n e.preventDefault();\r\n clickHandlerAjaxSearch(this);\r\n });\r\n $('.filterCategory').on('click', function() {\r\n if ($(this).hasClass('ffBoolFilterLink')) {\r\n lastClickedFilterParentId = '';\r\n } else {\r\n lastClickedFilterParentId = $(this).attr('id');\r\n }\r\n });\r\n $('.ajax_sort_select').on('change', function() {\r\n clickHandlerAjaxSearch(this);\r\n });\r\n\r\n $('.eraseSearchTerm').on('click', function(e) {\r\n e.preventDefault();\r\n $(this).addClass('hide');\r\n var fieldId = $(this).data('searchfieldid');\r\n (document.getElementById(fieldId)).value = '';\r\n });\r\n\r\n $('body').on('input', '.ff-filter-input', function() {\r\n let filterValue = $(this).val() as string;\r\n let siblings = $(this)\r\n .parent()\r\n .siblings();\r\n siblings.show();\r\n siblings.each(function() {\r\n let value = $(this).data('filtervalue');\r\n if (\r\n String(value)\r\n .toLowerCase()\r\n .indexOf(filterValue.toLowerCase()) === -1\r\n ) {\r\n $(this).hide();\r\n }\r\n });\r\n });\r\n});\r\n\r\nexport function setFilter(requestUrl) {\r\n $.ajax({\r\n method: 'POST',\r\n dataType: 'JSON',\r\n contentType: 'application/json',\r\n data: JSON.stringify({ filterUrl: requestUrl, query: '' }),\r\n url: '/Umbraco/api/sucheapi/SucheJson',\r\n success: data => {\r\n $('.ajax_search_results').html('');\r\n var result = data.searchResult;\r\n if ($('.ajax_filter_menu').find('.categorie.top').length !== 0) {\r\n $('.ajax_filter_menu>li')\r\n .slice(1)\r\n .remove();\r\n } else {\r\n $('.ajax_filter_menu').html('');\r\n }\r\n $('.ajax_filter_menu_mobile').html('');\r\n $('.ajax_pagination').html('');\r\n $('.mobile-filter-tags').html('');\r\n $('.ajax_sort_select').html('');\r\n\r\n //der aktuelle Filter wird in die URL gebaut und diese als die aktuelle in die Brower History gepushed\r\n history.pushState(null, null, `?filter=${window.btoa(requestUrl)}`);\r\n\r\n setResultCountFor(\r\n result.resultCount,\r\n result.breadCrumbTrailItems[0] ? result.breadCrumbTrailItems[0].Value : null\r\n );\r\n\r\n createFilterGroup(result.groups);\r\n createFilterGroupMobile(result.groups);\r\n createSearchResults(result, result.records);\r\n createFilterTags(result.groups);\r\n createSortList(result.sortsList);\r\n if (result.searchParams.indexOf('query') == -1) {\r\n if (result.paging.currentPage != 1) {\r\n $('link[rel=\"canonical\"]').remove();\r\n\r\n if ($('meta[name=\"robots\"]').length > 0) {\r\n $('meta[name=\"robots\"]').attr('content', 'noindex, follow');\r\n } else {\r\n var meta = document.createElement('meta');\r\n meta.name = 'robots';\r\n meta.content = 'noindex, follow';\r\n document.head.appendChild(meta);\r\n }\r\n } else {\r\n $('meta[name=\"robots\"]').remove();\r\n if ($('link[rel=\"canonical\"]').length > 0) {\r\n $('link[rel=\"canonical\"]').attr('href', window.location.origin + window.location.pathname);\r\n } else {\r\n var link = document.createElement('link');\r\n link.rel = 'canonical';\r\n link.href = window.location.origin + window.location.pathname;\r\n document.head.appendChild(link);\r\n }\r\n }\r\n }\r\n if (result.resultCount > 20) {\r\n createPagination(result.paging);\r\n }\r\n $('.popover-modal').hide(0);\r\n $('body').removeClass('noScroll');\r\n mobileFunctions();\r\n //Klappt das Menu des zuletzt geklickten filters wieder auf\r\n if (lastClickedFilterParentId !== '') {\r\n $('#' + lastClickedFilterParentId).click();\r\n }\r\n $('.spinner-wrapper').hide();\r\n cutTextWholeWords();\r\n $('html, body').animate({ scrollTop: 0 }, 'fast');\r\n },\r\n error: function() {\r\n $('.spinner-wrapper').hide();\r\n },\r\n });\r\n}\r\nfunction clickHandlerAjaxSearch(e) {\r\n $('.spinner-wrapper').show();\r\n var requestUrl = $(e).is('select')\r\n ? $(e)\r\n .find(':selected')\r\n .data('url')\r\n : $(e).data('url');\r\n setFilter(requestUrl);\r\n}\r\n\r\nfunction setResultCountFor(resultCount, breadCrumbTrailItem) {\r\n var searchQuery = nullOrEmpty(breadCrumbTrailItem) ? '' : breadCrumbTrailItem;\r\n if (\r\n $('.resultCountFor')\r\n .next('input[type=hidden]')\r\n .val() !== 'noSearchQuery' &&\r\n searchQuery != ''\r\n ) {\r\n $('.resultCountFor').html(resultCount + ' Treffer für \"' + searchQuery + '\"');\r\n } else {\r\n $('.resultCountFor').html(resultCount + ' Treffer');\r\n }\r\n}\r\n\r\nfunction createFilterGroup(filterGroups) {\r\n filterGroups.forEach((value, key) => {\r\n if (!nullOrEmpty(value.elements) && value.elements.filter(x => x.name.toLowerCase() === 'true')[0] != null) {\r\n createBoolFilter(value);\r\n } else {\r\n var prototype = $('#protoypes #ajax_filter_element').clone();\r\n prototype.find('.txt').html(value.name);\r\n var filterHolder = prototype.find('.categorySubMenu');\r\n if (key > 3) {\r\n prototype.find('.expander').addClass('fa-angle-down');\r\n } else {\r\n filterHolder.addClass('active');\r\n prototype.find('.expander').addClass('fa-angle-up');\r\n }\r\n\r\n if (value.elements.length > 7) {\r\n filterHolder.addClass('katNaviScroll');\r\n }\r\n if (key > 3 && value.elements.length < 7) {\r\n filterHolder.css('display', 'none');\r\n }\r\n if (value.name !== 'Fachbereich' && value.name !== 'Lieferbarkeit' && value.name !== 'Preis') {\r\n let txtInput = $('#protoypes #ajax_filter_textinput').clone();\r\n $(txtInput).data('filtername', value.name);\r\n txtInput.removeAttr('id');\r\n filterHolder.append(txtInput);\r\n }\r\n value.selectedElements.forEach((value, key) => {\r\n if (value.associatedFieldName == 'Erscheinungsjahr') {\r\n if (+value.name <= 0) {\r\n return;\r\n }\r\n }\r\n filterHolder.append(createFilterCheckbox(value));\r\n });\r\n\r\n value.elements.forEach((value, key) => {\r\n if (value.associatedFieldName == 'Erscheinungsjahr') {\r\n if (+value.name <= 0) {\r\n return;\r\n }\r\n }\r\n filterHolder.append(createFilterCheckbox(value));\r\n });\r\n prototype.removeAttr('id');\r\n $('.ajax_filter_menu').append(prototype);\r\n }\r\n });\r\n $('.ajax_filter_link').on('click', function() {\r\n clickHandlerAjaxSearch(this);\r\n });\r\n}\r\n\r\nfunction createBoolFilter(value) {\r\n var trueElement = value.elements.filter(x => x.name.toLowerCase() === 'true')[0];\r\n var prototype = $('#protoypes #ajax_filter_boolElement').clone();\r\n prototype.find('.txt').html(value.name);\r\n $('.ajax_filter_menu').append(prototype);\r\n prototype.find('.ajax_filter_link').data('url', trueElement.searchParams);\r\n trueElement.selected ? prototype.find('.checkbox').addClass('selected') : '';\r\n prototype.removeAttr('id');\r\n}\r\n\r\nfunction createFilterCheckbox(filterGroupElements) {\r\n var prototype = $('#protoypes #ajax_filter_checkbox').clone();\r\n prototype.data('filtervalue', filterGroupElements.name);\r\n prototype.find('.ajax_filter_link').data('url', filterGroupElements.searchParams);\r\n filterGroupElements.selected ? prototype.find('.checkbox').addClass('selected') : '';\r\n prototype.find('.text').prepend(filterGroupElements.name);\r\n prototype.find('.matches').html('(' + filterGroupElements.recordCount + ')');\r\n prototype.removeAttr('id');\r\n return prototype;\r\n}\r\n\r\nfunction createFilterGroupMobile(filterGroups) {\r\n filterGroups.forEach((value, key) => {\r\n if (!nullOrEmpty(value.elements) && value.elements.filter(x => x.name.toLowerCase() === 'true')[0] != null) {\r\n createBoolFilterMobile(value);\r\n } else {\r\n var prototype = $('#protoypes #ajax_filter_element_mobile').clone();\r\n prototype\r\n .find('.filterCategory')\r\n .find('.txt')\r\n .html(value.name);\r\n prototype.find('.mobNavLink').attr('id', 'mobNavLink_' + value.name);\r\n var prevEl = prototype.find('.mobNavLink').find('.txt');\r\n $(\"\").insertAfter(prevEl);\r\n var filterHolder = prototype.find('.categorySubMenu');\r\n value.elements.forEach((value, key) => {\r\n filterHolder.append(createFilterCheckboxMobile(value));\r\n });\r\n prototype.removeAttr('id');\r\n $('.ajax_filter_menu_mobile').append(prototype);\r\n }\r\n });\r\n $('.ajax_filter_link').on('click', function() {\r\n clickHandlerAjaxSearch(this);\r\n });\r\n $('.filterCategory').on('click', function() {\r\n lastClickedFilterParentId = $(this).attr('id');\r\n });\r\n $('.mobSubMenu .backLink').on('click', function() {\r\n lastClickedFilterParentId = '';\r\n });\r\n}\r\n\r\nfunction createBoolFilterMobile(value) {\r\n var trueElement = value.elements.filter(x => x.name.toLowerCase() === 'true')[0];\r\n var prototype = $('#protoypes #ajax_filter_boolElement_mobile').clone();\r\n prototype.find('.txt').html(value.name);\r\n $('.ajax_filter_menu_mobile').append(prototype);\r\n prototype.find('.ajax_filter_link').data('url', trueElement.searchParams);\r\n trueElement.selected ? prototype.find('.checkbox').addClass('selected') : '';\r\n prototype.removeAttr('id');\r\n}\r\n\r\nfunction createFilterCheckboxMobile(filterGroupElements) {\r\n var prototype = $('#protoypes #ajax_filter_checkbox_mobile').clone();\r\n prototype.find('.ajax_filter_link').data('url', filterGroupElements.searchParams);\r\n filterGroupElements.selected ? prototype.find('.checkbox').addClass('selected') : '';\r\n prototype.find('.text').prepend(filterGroupElements.name);\r\n prototype.find('.matches').html('(' + filterGroupElements.recordCount + ')');\r\n prototype.removeAttr('id');\r\n return prototype;\r\n}\r\n\r\nfunction createSearchResults(mainModel, searchResults) {\r\n searchResults.forEach((value, key) => {\r\n var result = value.record;\r\n var prototype = $('#ajax_filter_search_result').clone();\r\n var parent = $(prototype).find('.resultItem');\r\n var query = $('#sucheQuery').val() as any;\r\n var sessionId = $('#sessionId').val() as any;\r\n\r\n ///Set Data for FactFinder Tracking\r\n parent.attr('data-id', value.id);\r\n parent.attr('data-origpos', result.__ORIG_POSITION__);\r\n parent.attr('data-pos', value.position);\r\n parent.attr('data-query', query);\r\n parent.attr('data-page', mainModel.paging.currentPage);\r\n parent.attr('data-pagesize', mainModel.paging.resultsPerPage);\r\n parent.attr('data-sessionid', sessionId);\r\n parent.attr('data-price', result.bruttopreis);\r\n parent.attr('data-simi', value.searchSimilarity);\r\n\r\n setLabels(prototype, result);\r\n prototype\r\n .find('.ajax_search_detail_link')\r\n .attr('href', result.produktURL ? result.produktURL : `/product/${result.productNumber}`);\r\n prototype\r\n .find('.ajax_search_result_img')\r\n .attr('src', result.produktAbbildung.replace('width=56', 'width=213&height=170'));\r\n if (result.urheberzeile != null && result.urheberzeile !== '') {\r\n prototype.find('.publisher').html(result.urheberzeile);\r\n } else {\r\n prototype.find('.publisher').remove();\r\n }\r\n\r\n prototype\r\n .find('.title')\r\n .find('.cutSpan')\r\n .html(result.haupttitel);\r\n prototype\r\n .find('.description')\r\n .find('.cutSpan')\r\n .html(getUntertitel(result));\r\n\r\n // Merkliste Link\r\n prototype.find('.merklisteProto').attr('data-id', value.id);\r\n if ($('#loggedInFlag').length > 0) {\r\n prototype.find('.merklisteProto').addClass('addToMerkliste');\r\n prototype\r\n .find('.merklisteProto')\r\n .children()\r\n .attr('data-id', value.id);\r\n } else {\r\n prototype.find('.merklisteProto').attr('href', `${$('#hiddenLoginUrl').val()}?merklisteId=${value.id}`);\r\n }\r\n\r\n //Bibliografische Daten\r\n if (result.darstellungsform != null && result.darstellungsform !== '') {\r\n createLinkSpan(prototype, result.darstellungsform);\r\n }\r\n if (result.auflage != null && result.auflage !== '') {\r\n createLinkSpan(prototype, result.auflage);\r\n prototype.find('.edition').html(result.auflage);\r\n }\r\n\r\n if (result.erscheinungsjahr != null && result.erscheinungsjahr !== '' && +result.erscheinungsjahr > 0) {\r\n createLinkSpan(prototype, result.erscheinungsjahr);\r\n }\r\n if (result.medienname != null && result.medienname !== '') {\r\n createLinkSpan(prototype, result.medienname);\r\n }\r\n if (result.verlag != null && result.verlag !== '') {\r\n createLinkSpan(prototype, result.verlag);\r\n }\r\n if (result.isbn) {\r\n createLinkSpan(prototype, `${result.isbN_ISSN_Type} ${result.isbn}`);\r\n }\r\n //Preis\r\n if (\r\n result.priceTypeId == 4000 &&\r\n result.priceNet == 0 &&\r\n (result.bruttopreis == '0' || result.bruttopreis == '0.00')\r\n ) {\r\n prototype\r\n .find('.pricing')\r\n .find('.price')\r\n .html('kostenloses Probe-Abo');\r\n prototype\r\n .find('.pricing')\r\n .find('.price')\r\n .css('font-family', 'LatoRegular, sans-serif');\r\n prototype\r\n .find('.pricing')\r\n .find('.ab')\r\n .remove();\r\n prototype\r\n .find('.pricing')\r\n .find('.ca')\r\n .remove();\r\n } else {\r\n if (result.preisvariantenMerkmal.toLowerCase() === 'true') {\r\n prototype\r\n .find('.pricing')\r\n .find('.ab')\r\n .html('ab ');\r\n } else {\r\n prototype\r\n .find('.pricing')\r\n .find('.ab')\r\n .remove();\r\n }\r\n if (result.caPreisMerkmal.toLowerCase() === 'true') {\r\n prototype\r\n .find('.pricing')\r\n .find('.ca')\r\n .html('ca.');\r\n } else {\r\n prototype\r\n .find('.pricing')\r\n .find('.ca')\r\n .remove();\r\n }\r\n if (\r\n result.caPreisMerkmal.toLowerCase() === 'false' &&\r\n result.preisvariantenMerkmal.toLowerCase() === 'false'\r\n ) {\r\n prototype\r\n .find('.pricing')\r\n .find('.ab')\r\n .addClass('hide');\r\n prototype\r\n .find('.pricing')\r\n .find('.ca')\r\n .addClass('hide');\r\n }\r\n var formattedPrice =\r\n result.bruttopreis !== null && result.bruttopreis !== ''\r\n ? DelocaleString(parseFloat(result.bruttopreis), '.', 3, 2) + ' €'\r\n : '';\r\n prototype\r\n .find('.pricing')\r\n .find('.price')\r\n .html(formattedPrice);\r\n }\r\n\r\n if (\r\n result.lngAvailabilityStatusID == 3 &&\r\n result.dateOfPublicationDescription != null &&\r\n result.dateOfPublicationDescription != ''\r\n ) {\r\n prototype\r\n .find('.availability')\r\n .html(result.lieferstatus + ' (' + result.dateOfPublicationDescription + ')');\r\n prototype\r\n .find('.availabiltyInfoMobile')\r\n .html(result.lieferstatus + ' (' + result.dateOfPublicationDescription + ')');\r\n } else {\r\n prototype.find('.availability').html(result.lieferstatus);\r\n prototype.find('.availabiltyInfoMobile').html(result.lieferstatus);\r\n }\r\n if (result.lngAvailabilityStatusID == 1 || result.lngAvailabilityStatusID == 4) {\r\n prototype.find('.availability').addClass('availabilityStatusColorGreen');\r\n prototype.find('.availabiltyInfoMobile').addClass('availabilityStatusColorGreen');\r\n }\r\n if (result.lngAvailabilityStatusID == 3 || result.lngAvailabilityStatusID == 5) {\r\n prototype.find('.openSendReminderModal').removeClass('hidden');\r\n prototype.find('.openSendReminderModal').attr('data-id', value.id);\r\n }\r\n\r\n //Warenkorb\r\n if (result.medienname == 'beck-online-Modul') {\r\n prototype\r\n .find('.beck-online-checkout-add')\r\n .attr('data-productid', value.id)\r\n .attr('data-price', result.bruttopreis.replace(',', '.'))\r\n .attr('href', buildBeckOnlineLink(result))\r\n .removeClass('hide');\r\n } else if (result.warenkorbsymbolAnzeigen === 'true' && result.darstellungsform !== 'Seminar') {\r\n let basketButton = prototype.find('.ajax_checkout_add');\r\n basketButton.attr('data-productid', value.id).removeClass('hide');\r\n basketButton.attr('data-pricetypeid', result.priceTypeId);\r\n\r\n if (ProductHelper.showBezugsartOverlay(result)) {\r\n basketButton\r\n .removeClass('ajax_checkout_add')\r\n .addClass('ajax_checkout_bezugsart')\r\n .addClass('showModal')\r\n .attr('data-toggle', 'modal')\r\n .attr('data-target', '#modalBezugsart-01');\r\n }\r\n }\r\n\r\n if (result.darstellungsform == 'Seminar') {\r\n prototype.find('.merklisteProto').addClass('hide');\r\n }\r\n\r\n $('.ajax_search_results').append(prototype.html());\r\n $('img').unbind('error');\r\n $('img').on('error', function() {\r\n setDummyImage(this);\r\n });\r\n });\r\n $('.ajax_search_results .ajax_checkout_add').on('click', function() {\r\n var showModal = !$(this).hasClass('noModal');\r\n checkoutAdd($(this), showModal);\r\n });\r\n}\r\n\r\nfunction buildBeckOnlineLink(result) {\r\n return `https://shop.beck-online.de/?crop=${result.kupOrderNo}&chk=${result.kupOrderNo}&usr=1&cid=BS&uid=`;\r\n}\r\n\r\nfunction createLinkSpan(prototype, data) {\r\n var dataSpan = $('#protoypes')\r\n .find('#ElementsToClone')\r\n .find('span')\r\n .clone();\r\n data.trim();\r\n dataSpan.html(data);\r\n prototype.find('.links').append(dataSpan);\r\n}\r\n\r\nfunction createPagination(paging) {\r\n var prototype = $('#ajax_pagination').clone();\r\n //Pfeile\r\n if (paging.previousLink !== null && paging.previousLink.searchParams !== null) {\r\n var fullUrlCrawler = window.location.pathname + '?filter=' + window.btoa(paging.previousLink.searchParams);\r\n prototype.find('.btn.prev').attr('href', fullUrlCrawler);\r\n prototype.find('.btn.prev').data('url', paging.previousLink.searchParams);\r\n }\r\n if (paging.nextLink !== null && paging.nextLink.searchParams !== null) {\r\n var fullUrlCrawler = window.location.pathname + '?filter=' + window.btoa(paging.nextLink.searchParams);\r\n prototype.find('.btn.next').attr('href', fullUrlCrawler);\r\n prototype.find('.btn.next').data('url', paging.nextLink.searchParams);\r\n }\r\n //Nummern & Punkte\r\n if (paging.pageLinks[0].number > paging.firstLink.number) {\r\n var preDotsLi = $('#protoypes')\r\n .find('#ElementsToClone')\r\n .find('li')\r\n .clone();\r\n preDotsLi.html('...');\r\n prototype.find('ul').append(preDotsLi.html());\r\n }\r\n paging.pageLinks.forEach((value, key) => {\r\n var li = $('#protoypes')\r\n .find('#ElementsToClone')\r\n .find('li')\r\n .clone();\r\n var a = $('#protoypes')\r\n .find('#ElementsToClone')\r\n .find('a')\r\n .clone();\r\n var fullUrlCrawler = '';\r\n if (value.number === 1) {\r\n fullUrlCrawler = window.location.origin + window.location.pathname;\r\n } else {\r\n fullUrlCrawler =\r\n window.location.origin + window.location.pathname + '?filter=' + window.btoa(value.searchParams);\r\n }\r\n\r\n a.attr('href', fullUrlCrawler);\r\n a.data('url', value.searchParams);\r\n a.addClass('ajax_filter_link');\r\n a.html(value.number);\r\n if (value.number === paging.currentPage) {\r\n li.addClass('current');\r\n a.attr('aria-current', 'page');\r\n }\r\n li.append(a);\r\n prototype.find('ul').append(li);\r\n });\r\n if (paging.pageLinks[paging.pageLinks.length - 1].number < paging.lastLink.number) {\r\n var postDotsLi = $('#protoypes')\r\n .find('#ElementsToClone')\r\n .find('li')\r\n .clone();\r\n postDotsLi.html('...');\r\n prototype.find('ul').append(postDotsLi.html());\r\n }\r\n $('.ajax_pagination').append(prototype);\r\n\r\n //Click-Event\r\n $('.ajax_filter_link').on('click', function(e) {\r\n e.preventDefault();\r\n clickHandlerAjaxSearch(this);\r\n });\r\n}\r\n\r\nfunction createFilterTags(filterGroups) {\r\n filterGroups.forEach((value, key) => {\r\n value.elements.forEach((element, key) => {\r\n if (element.selected === true) {\r\n var prototype = $('#protoypes #ajax_mobile-filter-tag').clone();\r\n var span = $('#protoypes #ElementsToClone span').clone();\r\n span.html(' x ').addClass('closer');\r\n var displayName = element.name.toLowerCase() !== 'true' ? element.name : value.name;\r\n prototype.append(displayName).append(span);\r\n prototype.data('url', element.searchParams);\r\n prototype.removeAttr('id');\r\n $('.mobile-filter-tags').append(prototype);\r\n }\r\n });\r\n $('.ajax_filter_link_tag').on('click', function() {\r\n clickHandlerAjaxSearch(this);\r\n });\r\n });\r\n}\r\n\r\nfunction createSortList(sortList) {\r\n $('.ajax_sort_select').unbind('change');\r\n sortList.forEach((value, key) => {\r\n if (value.selected === true) {\r\n var prototype = $('#protoypes #ElementsToClone option').clone();\r\n if (value.description === 'sort.relevanceDescription') {\r\n prototype.html('Relevanz').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n if (value.name === 'Haupttitel' && value.order === 'asc') {\r\n prototype.html('Titel').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n if (value.name === 'Erscheinungsjahr' && value.order === 'desc') {\r\n prototype.html('Erscheinungsjahr').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n if (value.name === 'Urheberzeile' && value.order === 'asc') {\r\n prototype.html('Autor').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n }\r\n });\r\n sortList.forEach((value, key) => {\r\n if (value.selected === false) {\r\n var prototype = $('#protoypes #ElementsToClone option').clone();\r\n if (value.description === 'sort.relevanceDescription') {\r\n prototype.html('Relevanz').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n if (value.name === 'Haupttitel' && value.order === 'asc') {\r\n prototype.html('Titel').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n if (value.name === 'Erscheinungsjahr' && value.order === 'desc') {\r\n prototype.html('Erscheinungsjahr').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n if (value.name === 'Urheberzeile' && value.order === 'asc') {\r\n prototype.html('Autor').data('url', value.searchParams);\r\n $('.ajax_sort_select').append(prototype);\r\n }\r\n }\r\n });\r\n $('.ajax_sort_select').on('change', function() {\r\n clickHandlerAjaxSearch(this);\r\n });\r\n}\r\n\r\nfunction setLabels(prototype, result) {\r\n if (result.neuerscheinungMerkmal.toLowerCase() !== 'true') {\r\n prototype.find('.statusLabel.Neuerscheinungsmerkmal').css('display', 'none');\r\n }\r\n if (result.voranzeigeMerkmal.toLowerCase() !== 'true') {\r\n prototype.find('.statusLabel.Vorankuendigungsmerkmal').css('display', 'none');\r\n }\r\n if (result.toptitelMerkmal.toLowerCase() !== 'true') {\r\n prototype.find('.statusLabel.Toptitelmerkmal').css('display', 'none');\r\n }\r\n if (!isStandardwerk(result)) {\r\n prototype.find('.statusLabel.Stadardwerkmerkmal').css('display', 'none');\r\n }\r\n if (!isEbook(result)) {\r\n prototype.find('.mediaTypeLabel.Ebookmerkmal').css('display', 'none');\r\n }\r\n}\r\n\r\nfunction isEbook(product) {\r\n return !nullOrEmpty(product.Medienname) && product.Medienname.match('^eBook');\r\n}\r\n\r\nfunction isStandardwerk(product) {\r\n return product.standardwerkMerkmal.toLowerCase() === 'true';\r\n}\r\n\r\nfunction getUntertitel(result) {\r\n if (!result.untertitelzusatz && !result.untertitel) {\r\n return '';\r\n }\r\n let untertitel = `${result.untertitelzusatz ? result.untertitelzusatz + ', ' : ''} ${result.untertitel}`.trim();\r\n\r\n if (untertitel.match(',$')) {\r\n return untertitel.substring(1, untertitel.length);\r\n }\r\n if (untertitel.slice(-1) === ',') {\r\n return untertitel.substring(0, untertitel.length - 1);\r\n }\r\n return untertitel;\r\n}\r\n\r\nfunction nullOrEmpty(element) {\r\n return element === null || element === '' || typeof element === 'undefined';\r\n}\r\n","import { trackMerklisteInteraction_click } from \"../Tracking/GoogleTracking\";\r\nimport { ShoppingListService } from \"./shoppingListService\";\r\nconst shoppingListService = new ShoppingListService();\r\n\r\n$(() => {\r\n\r\n /*Bei jeden Seitenaufruf soll die aktuelle Anzahl der Items geldaden werden (nur wenn eingeloggt) */\r\n if ($(\"#loggedInFlag\").length > 0) {\r\n shoppingListService.updateShoppingListCount();\r\n }\r\n /**\r\n * Wird getriggert, wenn auf den entfernen Button geklickt wird.\r\n */\r\n $(\".removeShoppingListItem\").click((e) => {\r\n var productId = $(e.target).data(\"id\");\r\n if (productId) {\r\n shoppingListService.deleteItem(productId, (xhr, status) => {\r\n if (xhr.status === 200) {\r\n $(e.target).closest(\".resultItem\").fadeOut('slow', function () {\r\n $(this).remove();\r\n });\r\n trackMerklisteInteraction_click(\"interaction_remove-from-wishlist\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n $(\".shoppingListItemClick\").click((e) => {\r\n trackMerklisteInteraction_click(\"interaction_product-click-from-wishlist\");\r\n });\r\n\r\n $(\".shoppingListItemAddToBasket\").click((e) => {\r\n trackMerklisteInteraction_click(\"interaction_add-to-cart-from-wishlist\");\r\n });\r\n\r\n /**\r\n * Wird getriggert, wenn auf einen Button zum hinzufügen eines Produkts auf die Merkliste geklickt wird\r\n */\r\n $(document).on('click', '.addToMerkliste', function () {\r\n var productId = $(this).data(\"id\");\r\n if (productId) {\r\n $(\"#spinnerModal\").removeClass(\"hide\");\r\n shoppingListService.addItem(productId);\r\n }\r\n\r\n });\r\n})","import { MobileNavApiResponeModel } from \"./Models/mobileNaviApiResponse\";\r\nimport { MobileNavBuilder } from \"./mobileNavBuilder\";\r\n\r\nconst navHelper = new MobileNavBuilder();\r\n$(() => {\r\n $('ul.mobMenu.mobileNavigation').on('click', 'a.mobNavLink',\r\n function (e) {\r\n updateMobileNavi(e, this);\r\n }\r\n );\r\n\r\n $('ul.mobMenu.mobileNavigation').on('click', '.backLink',\r\n function (e) {\r\n updateMobileNavi(e, this);\r\n }\r\n );\r\n});\r\n\r\nfunction updateMobileNavi(e, target: HTMLElement) {\r\n if ($(target).children('i').length) {\r\n e.preventDefault();\r\n $.ajax({\r\n method: \"GET\",\r\n url: `/Umbraco/api/MobileNavi/GetNavItems?id=${$(target).data(\"id\")}&weitere=${$(target).data(\"weitere\")}&fachbereichDetail=${$(target).data(\"fachbereich\")}`,\r\n success: data => {\r\n var response = data as MobileNavApiResponeModel;\r\n navHelper.buildMobileNavi(response);\r\n },\r\n error: data => {\r\n }\r\n });\r\n }\r\n}\r\n\r\n","import { MobileNavApiResponeModel } from \"./Models/mobileNaviApiResponse\";\r\n\r\nexport class MobileNavBuilder {\r\n /**\r\n * Baut die mobile Navigation anhand der Api Response auf\r\n * @param response \r\n */\r\n buildMobileNavi(response: MobileNavApiResponeModel) {\r\n $(\"ul.mobMenu.mobileNavigation\").empty();\r\n if (response.showBack) {\r\n var backLink = $(\"#mobNavProtoTypes\").find(\".backLink\").clone();\r\n var parentNode = $(\"#mobNavProtoTypes\").find(\".parentNode\").clone().html(response.name);\r\n\r\n backLink.attr(\"data-id\", response.backId + \"\");\r\n backLink.attr(\"data-weitere\", response.parentWeitere + \"\");\r\n backLink.attr(\"data-fachbereich\", response.parentFachbereichDetail + \"\");\r\n\r\n $(\"ul.mobMenu.mobileNavigation\").append(backLink);\r\n $(\"ul.mobMenu.mobileNavigation\").append(parentNode);\r\n }\r\n response.mobileNavItems.forEach(navItem => {\r\n var navItemProtoType = $(\"#mobNavProtoTypes\").find(\".mobNavListItem\").clone();\r\n\r\n navItemProtoType.find(\".txt\").html(navItem.name);\r\n if (!navItem.hasChildren) {\r\n navItemProtoType.find(\"i\").remove();\r\n navItemProtoType.find(\"a\").attr(\"href\", navItem.link);\r\n }\r\n\r\n if (navItem.id) {\r\n navItemProtoType.find(\"a\").attr(\"data-id\", navItem.id);\r\n }\r\n\r\n navItemProtoType.find(\"a\").attr(\"data-fachbereich\", navItem.fachbereichDetail + \"\");\r\n navItemProtoType.find(\"a\").attr(\"data-weitere\", navItem.weitereFachgebiete + \"\");\r\n if (navItem.weitereFachgebiete) {\r\n navItemProtoType.find(\"a\").attr(\"data-id\", \"-1\");\r\n }\r\n\r\n $(\"ul.mobMenu.mobileNavigation\").append(navItemProtoType);\r\n });\r\n }\r\n}","$(() => {\r\n createMerklisteLinks();\r\n});\r\n\r\n/**\r\n * Erstellt den Link für die Merkliste.\r\n * Wenn Benutzer nicht eingeloggt: auf login-Seite\r\n * Ansonsten wird Produkt in Merkliste gelegt\r\n */\r\nfunction createMerklisteLinks() {\r\n const merklisteLinks = $(\"div.productCarousel a.remember\");\r\n const loggedIn = $(\"#loggedInFlag\").length > 0;\r\n\r\n if (loggedIn) {\r\n addMerklisteForLoggedInUser(merklisteLinks);\r\n } else {\r\n addLogInLinkForLoggedOutUser(merklisteLinks);\r\n }\r\n\r\n function addMerklisteForLoggedInUser(merklisteLinks: JQuery) {\r\n for (let i = 0; i < merklisteLinks.length; i++) {\r\n const link = merklisteLinks[i];\r\n $(link).addClass(\"addToMerkliste\");\r\n }\r\n }\r\n\r\n function addLogInLinkForLoggedOutUser(merklisteLinks: JQuery) {\r\n for (let i = 0; i < merklisteLinks.length; i++) {\r\n const link = merklisteLinks[i];\r\n $(link).attr(\"href\", $(link).data(\"login\") + \"?merklisteId=\" + $(link).data(\"id\"));\r\n }\r\n }\r\n}\r\n","import { ITrboBuehneResponse } from '../Checkout/Models/Trbo/ITrboResonse';\r\nimport { ProduktkarussellModel } from '../Produktdetails/Models/Produktkarussell';\r\nimport { CreateSliderContent } from '../Shared/Slider';\r\nimport { configureSwiperSlider, initSwiperLarge, initSwiperSmall } from '../swiper/swiperconfig';\r\nimport {\r\n MerklisteKarusellInViewTracking,\r\n trackIdLayerReduced,\r\n tracking_eecPromotionview,\r\n trackNewsletterRegisterEvent,\r\n} from '../Tracking/GoogleTracking';\r\nimport { buildTrboRequestUrl } from './Trbo/TrboRequestBuilder';\r\nimport { mapTrboResponseToProduktkarussellModel } from './Trbo/TrboResponseMapper';\r\n\r\ndeclare var _trboq: any;\r\ndeclare var _trbo: any;\r\ndeclare var UC_UI: any;\r\ndeclare var grecaptcha: any;\r\nconst trboId = 'ryxCCtrEX';\r\n\r\n$(() => {\r\n ///click button \"Newsletter abbonieren\"\r\n $('.submitNewsletter').click(function(event) {\r\n var validations = {\r\n email: [/^([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/],\r\n };\r\n var newsletterEntry = {};\r\n var params = [];\r\n\r\n //set default validation values\r\n $('#Newsletter_Email_Validation').addClass('hide');\r\n $('#Newsletter_Email_Success').addClass('hide');\r\n $('#Newsletter_Email_Server_Error').addClass('hide');\r\n\r\n if (grecaptcha == undefined) {\r\n $('#Newsletter_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n try {\r\n var recaptchaResponse = grecaptcha.getResponse();\r\n } catch {\r\n $('#Newsletter_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n if (recaptchaResponse.length == 0) {\r\n $('#Newsletter_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n\r\n var email = $('#newsletter_Email')[0];\r\n var trackingallowed = $('#TermsAndConditionsAccepted').prop('checked');\r\n var listNameInxmail = $('#listNameInxmail').val();\r\n var trackingPermissionMainButtonValue = $('#trackingPermissionMainButtonValue').val();\r\n var additionalParamsJson = $('#additionalParams').val();\r\n if (additionalParamsJson) {\r\n var additionParamsList = $.parseJSON(additionalParamsJson.toString());\r\n if (additionParamsList) {\r\n $.each(additionParamsList, function(index, value) {\r\n params.push({ key: index, value: value });\r\n });\r\n }\r\n }\r\n\r\n //erweitertes form\r\n var extendedForm = $('#extendedFormValue').val();\r\n if (extendedForm) {\r\n var salutation = $('#newsletter_Salutation').val();\r\n var firstname = $('#newsletter_Firstname').val();\r\n var lastname = $('#newsletter_Lastname').val();\r\n }\r\n\r\n //set regex for email validation\r\n var validation = new RegExp(validations['email'][0]);\r\n\r\n //validate email\r\n if (!validation.test(email.value)) {\r\n $('#Newsletter_Email_Validation').removeClass('hide');\r\n return false;\r\n } else {\r\n email.setCustomValidity('');\r\n newsletterEntry['Email'] = email == null ? '' : email.value;\r\n newsletterEntry['Salutation'] = salutation == null ? '' : salutation;\r\n newsletterEntry['Firstname'] = firstname == null ? '' : firstname;\r\n newsletterEntry['Lastname'] = lastname == null ? '' : lastname;\r\n newsletterEntry['IsTrackingAllowed'] = trackingallowed == null ? '' : trackingallowed;\r\n newsletterEntry['ListNameInxmail'] = listNameInxmail == null ? '' : listNameInxmail;\r\n newsletterEntry['TrackingPermissionMainButtonValue'] =\r\n trackingPermissionMainButtonValue == null ? '' : trackingPermissionMainButtonValue;\r\n newsletterEntry['AdditionalParameters'] = params == null ? '' : params;\r\n newsletterEntry['RecaptchaResponse'] = recaptchaResponse;\r\n\r\n const datalayerLabel = $(this).data('label');\r\n\r\n //send data to API\r\n if (extendedForm) {\r\n $.post('/Umbraco/Api/Newsletter/SendNewsletterEmailExtended', newsletterEntry, function(data, status) {\r\n $('#Newsletter_Email_Success').removeClass('hide');\r\n trackNewsletterRegisterEvent(datalayerLabel);\r\n if (data) {\r\n trackIdLayerReduced(data, 'idLayer_reduced_nl-registrierung');\r\n }\r\n }).fail(function(data) {\r\n $('#Newsletter_Email_Server_Error').removeClass('hide');\r\n });\r\n } else {\r\n $.post('/Umbraco/Api/Newsletter/SendNewsletterEmail', newsletterEntry, function(data, status) {\r\n $('#Newsletter_Email_Success').removeClass('hide');\r\n trackNewsletterRegisterEvent(datalayerLabel);\r\n if (data) {\r\n trackIdLayerReduced(data, 'idLayer_reduced_nl-registrierung');\r\n }\r\n }).fail(function(data) {\r\n $('#Newsletter_Email_Server_Error').removeClass('hide');\r\n });\r\n }\r\n }\r\n });\r\n\r\n var loginFlag = $('#loggedInFlag');\r\n\r\n if (loginFlag && loginFlag.length > 0 && loginFlag.val && $('#merklisteKarusell').length) {\r\n ShowMerklisteProductsInKarusell();\r\n }\r\n\r\n function ShowMerklisteProductsInKarusell() {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: '/Umbraco/api/MerklisteKarusellApi/GetMerklisteProducts',\r\n success: data => {\r\n MerklisteKarusellInViewTracking();\r\n var products = data as ProduktkarussellModel;\r\n if (products != null && products.karussellItems.length > 0) {\r\n $('.slider').removeClass('hide');\r\n\r\n CreateSliderContent(\r\n products,\r\n $('#merklisteSlider'),\r\n $('#MerklistePrototypes #SliderPrototypes'),\r\n 'merklisteSlider'\r\n );\r\n //Karussell muss neu initialisiert werden, da der Inhalt bei Document.ready noch nicht verfügbar ist.\r\n let topslider = initSwiperLarge($('#produktkarussellLarge'));\r\n\r\n topslider.update();\r\n setTimeout(function() {\r\n // nasty hack aber keinen weg gefunden das karussell auf seite 1 springt...\r\n $('.slider .swiper-pagination-bullet')\r\n .first()\r\n .click();\r\n }, 100);\r\n } else {\r\n $('.slider').addClass('hide');\r\n }\r\n },\r\n error: () => {\r\n $('.slider').addClass('hide');\r\n },\r\n });\r\n }\r\n\r\n hideTrboSliders();\r\n});\r\n\r\nfunction hideTrboSliders() {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n var trboSliders = $('.trbo-grid-caroussel');\r\n var trboDynamicSliders = $('.trboDynamicSlider');\r\n if (trboSliders.length || trboDynamicSliders.length) {\r\n renderTrboSliders();\r\n renderDynamicTrboSliders();\r\n }\r\n handleTrboBuehnen();\r\n } else {\r\n setTimeout(hideTrboSliders, 100);\r\n }\r\n}\r\n\r\nfunction handleTrboBuehnen() {\r\n var trboDynamicBuehnen = $('.trboDynamicBuehne');\r\n if (trboDynamicBuehnen.length) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n if (\r\n UC_UI.getServicesBaseInfo().find(service => service.id === trboId).consent.status &&\r\n window['_trbo'] === undefined\r\n ) {\r\n setTimeout(handleTrboBuehnen, 100);\r\n return;\r\n }\r\n\r\n trboDynamicBuehnen.each(function() {\r\n if (!UC_UI.getServicesBaseInfo().find(service => service.id === trboId).consent.status) {\r\n $(this)\r\n .find('.bannerItem')\r\n .removeClass('hidden');\r\n $(this)\r\n .find('.promotionTracking')\r\n .removeClass('hidden');\r\n configureSwiperSlider($(this).data('frequency'), 'fade', $(this));\r\n document.dispatchEvent(new Event('scroll'));\r\n window.scroll(0, 1); // hack to show slider correctly\r\n tracking_eecPromotionview();\r\n return;\r\n }\r\n const slotName = $(this).data('trboslotname');\r\n const requestUrl = buildTrboRequestUrl(slotName);\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: encodeURI(requestUrl),\r\n success: data => {\r\n const trboResponse = data as ITrboBuehneResponse;\r\n if (!trboResponse || !trboResponse.data || trboResponse.data.length === 0) {\r\n $(`.${slotName}`)\r\n .find('.bannerItem')\r\n .removeClass('hidden');\r\n $(`.${slotName}`)\r\n .find('.promotionTracking')\r\n .removeClass('hidden');\r\n configureSwiperSlider($(`.${slotName}`).data('frequency'), 'fade', $(`.${slotName}`));\r\n document.dispatchEvent(new Event('scroll'));\r\n window.scroll(0, 1); // hack to show slider correctly\r\n tracking_eecPromotionview();\r\n return;\r\n }\r\n\r\n $(`.${slotName}`)\r\n .find('.serverItem')\r\n .remove();\r\n $(`.${slotName}`)\r\n .find('.trboBuehneDummy')\r\n .removeClass('hidden');\r\n $(`.${slotName}`)\r\n .find('.trboBuehneDummy a')\r\n .attr('href', trboResponse.data[0].target_url);\r\n $(`.${slotName}`)\r\n .find('.trboBuehneDummy .desktop img')\r\n .attr('src', trboResponse.data[0].desktop_url);\r\n $(`.${slotName}`)\r\n .find('.trboBuehneDummy .tablet img')\r\n .attr('src', trboResponse.data[0].tablet_url);\r\n $(`.${slotName}`)\r\n .find('.trboBuehneDummy .smartphones img')\r\n .attr('src', trboResponse.data[0].mobile_url);\r\n\r\n if (trboResponse.tracking && trboResponse.tracking.length > 0) {\r\n $(`.${slotName} .trboBannerClickTracking`)\r\n .attr('data-campaignid', trboResponse.tracking[0].campaign_id)\r\n .attr('data-campaignname', trboResponse.tracking[0].campaign_name)\r\n .attr('data-moduleid', trboResponse.tracking[0].module_id)\r\n .attr('data-modulename', trboResponse.tracking[0].module_name)\r\n .attr('data-usertype', trboResponse.tracking[0].user_type);\r\n }\r\n\r\n tracking_eecPromotionview();\r\n },\r\n error: () => {\r\n // $(this).find(\".trboBuehneDummy\").remove();\r\n $(this)\r\n .find('.bannerItem')\r\n .removeClass('hidden');\r\n $(this)\r\n .find('.promotionTracking')\r\n .removeClass('hidden');\r\n configureSwiperSlider($(this).data('frequency'), 'fade', $(this));\r\n document.dispatchEvent(new Event('scroll'));\r\n window.scroll(0, 1); // hack to show slider correctly\r\n tracking_eecPromotionview();\r\n return;\r\n },\r\n });\r\n });\r\n } else {\r\n setTimeout(handleTrboBuehnen, 100);\r\n }\r\n }\r\n}\r\n\r\nfunction renderTrboSliders() {\r\n var trboSliders = $('.trbo-grid-caroussel');\r\n if (trboSliders.length) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n if (\r\n UC_UI.getServicesBaseInfo().find(service => service.id === trboId).consent.status &&\r\n window['_trbo'] === undefined\r\n ) {\r\n setTimeout(renderTrboSliders, 100);\r\n return;\r\n }\r\n\r\n trboSliders.each(function() {\r\n let slot = $(this).data('slot');\r\n let size = $(this).data('largeslider') === 'True' ? 'Large' : 'Small';\r\n if (!UC_UI.getServicesBaseInfo().find(service => service.id === trboId).consent.status) {\r\n $(`.${slot}`)\r\n .parent()\r\n .addClass('hide');\r\n return;\r\n }\r\n $(`.${slot}`)\r\n .parent()\r\n .removeClass('hide');\r\n const requestUrl = buildTrboRequestUrl(slot);\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: encodeURI(requestUrl),\r\n success: data => {\r\n const trboProducts = mapTrboResponseToProduktkarussellModel(data) as ProduktkarussellModel;\r\n if (trboProducts.karussellItems.length === 0) {\r\n $(`.${slot}`)\r\n .parent()\r\n .addClass('hide');\r\n return;\r\n }\r\n CreateSliderContent(\r\n trboProducts,\r\n $(`#product${slot}`),\r\n $('#ProduktdetailPrototypes #SliderPrototypes'),\r\n `#product${slot}`,\r\n true\r\n );\r\n //Karussell muss neu initialisiert werden, da der Inhalt bei Document.ready noch nicht verfügbar ist.\r\n if (size === 'Large') {\r\n initSwiperLarge($(`#produktkarussell${size}${slot}`));\r\n } else {\r\n initSwiperSmall($(`#produktkarussell${size}${slot}`));\r\n }\r\n\r\n tracking_eecPromotionview();\r\n setTimeout(function() {\r\n // nasty hack aber keinen weg gefunden das karussell auf seite 1 springt...\r\n $(`#produktkarussell${size}${slot} .swiper-pagination-bullet`)\r\n .first()\r\n .click();\r\n }, 100);\r\n },\r\n error: () => {\r\n $(`.${slot}`)\r\n .parent()\r\n .addClass('hide');\r\n },\r\n });\r\n });\r\n } else {\r\n setTimeout(renderTrboSliders, 100);\r\n }\r\n }\r\n}\r\n\r\nfunction renderDynamicTrboSliders() {\r\n var trboSliders = $('.trboDynamicSlider');\r\n if (trboSliders.length) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n if (!UC_UI.getServicesBaseInfo().find(service => service.id === trboId).consent.status) {\r\n if (\r\n UC_UI.getServicesBaseInfo().find(service => service.id === trboId).consent.status &&\r\n window['_trbo'] === undefined\r\n ) {\r\n setTimeout(renderDynamicTrboSliders, 100);\r\n return;\r\n }\r\n\r\n trboSliders.each(function() {\r\n $(this)\r\n .find('.ajaxSpinner_Loading')\r\n .addClass('hide');\r\n $(`#product${$(this).data('guid')}`).remove();\r\n if ($(this).data('size') === 'Large') {\r\n initSwiperLarge($(this));\r\n } else {\r\n initSwiperSmall($(this));\r\n }\r\n });\r\n return;\r\n } else {\r\n trboSliders.each(function() {\r\n const slotName = $(this).data('trboslotname');\r\n const sliderGuid = $(this).data('guid');\r\n const requestUrl = buildTrboRequestUrl(slotName);\r\n const size = $(this).data('size');\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: encodeURI(requestUrl),\r\n success: data => {\r\n const trboProducts = mapTrboResponseToProduktkarussellModel(data) as ProduktkarussellModel;\r\n if (trboProducts.karussellItems.length === 0 || $(`#product${sliderGuid}`).length === 0) {\r\n $(this)\r\n .find('.ajaxSpinner_Loading')\r\n .addClass('hide');\r\n $(`#product${sliderGuid}`).remove();\r\n if (size === 'Large') {\r\n initSwiperLarge($(this));\r\n } else {\r\n initSwiperSmall($(this));\r\n }\r\n return;\r\n }\r\n\r\n $(this)\r\n .find('.swiper-wrapper-server')\r\n .remove();\r\n CreateSliderContent(\r\n trboProducts,\r\n $(`#product${sliderGuid}`),\r\n $('#ProduktdetailPrototypes #SliderPrototypes'),\r\n `#product${sliderGuid}`,\r\n true\r\n );\r\n //Karussell muss neu initialisiert werden, da der Inhalt bei Document.ready noch nicht verfügbar ist.\r\n if (size === 'Large') {\r\n initSwiperLarge($(this));\r\n } else {\r\n initSwiperSmall($(this));\r\n }\r\n\r\n tracking_eecPromotionview();\r\n\r\n setTimeout(function() {\r\n // nasty hack aber keinen weg gefunden das karussell auf seite 1 springt...\r\n $(this)\r\n .find(`.swiper-pagination-bullet`)\r\n .first()\r\n .click();\r\n }, 100);\r\n },\r\n error: () => {\r\n $(this)\r\n .find('.ajaxSpinner_Loading')\r\n .addClass('hide');\r\n $(`#product${$(this).data('guid')}`).remove();\r\n if ($(this).data('size') === 'Large') {\r\n initSwiperLarge($(this));\r\n } else {\r\n initSwiperSmall($(this));\r\n }\r\n },\r\n });\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nwindow.addEventListener('onConsentChanged', function(e: any) {\r\n if (e.detail.event === 'consent_status' && e.detail['trbo']) {\r\n setTimeout(handleTrboBuehnen, 1000);\r\n }\r\n});\r\n","import { trackPrefixNameProblem } from \"../Tracking/GoogleTracking\";\r\n\r\n$(() => {\r\n /** Passwort anzeigen toogle */\r\n $('.passwordInputGroup i').on('click', function() {\r\n var passwordInput = $(this)\r\n .closest('.passwordInputGroup')\r\n .find('.passwordInput') as JQuery;\r\n if (passwordInput[0].type === 'password') {\r\n passwordInput[0].type = 'text';\r\n $(this).removeClass('fa-eye');\r\n $(this).addClass('fa-eye-slash');\r\n } else {\r\n passwordInput[0].type = 'password';\r\n $(this).removeClass('fa-eye-slash');\r\n $(this).addClass('fa-eye');\r\n }\r\n });\r\n\r\n $('.register-form').on('submit', function (e) {\r\n const middleName = $(this).find(\"#MiddleName\").val();\r\n const lastName = $(this).find(\"#Surname\").val();\r\n\r\n if (middleName && !lastName) {\r\n trackPrefixNameProblem();\r\n }\r\n });\r\n\r\n $('.login-form').on('submit', function(e) {\r\n const spinnerModal = $('#spinnerModal');\r\n spinnerModal.removeClass('hide');\r\n $(this).find('button[type=submit]').prop('disabled', true);\r\n });\r\n});\r\n","import { availabilityReminderSubmitTracking } from \"../Produktdetails/ProductGoogleTracking\";\r\nimport { trackIdLayerReduced } from \"../Tracking/GoogleTracking\";\r\nimport { checkForRecaptcha, recaptchaId } from \"./userCentrics\";\r\n\r\ndeclare var UC_UI: any;\r\ndeclare var grecaptcha: any;\r\nlet currentProductId: string;\r\nlet currentTrackingEvent: string;\r\nlet modalForm: boolean;\r\n\r\n$(() => {\r\n \r\n\r\n /**\r\n * Wird getriggert, wenn auf einen Button zum öffnen des Reminder Modals gedrückt wird\r\n */\r\n $(document).on('click', '.openSendReminderModal', function() {\r\n const productId = $(this).data('id');\r\n const trackingEvent = $(this).data('tracking');\r\n modalForm = true;\r\n currentTrackingEvent = trackingEvent;\r\n currentProductId = productId;\r\n const modal = $('#modalSendReminder');\r\n if (window['grecaptcha'] == undefined) {\r\n loadRecaptcha();\r\n }\r\n else {\r\n intiRecaptcha()\r\n }\r\n if (productId) {\r\n $(modal).modal();\r\n }\r\n });\r\n});\r\n\r\n/**\r\n * Triggers form submit for availabity reminder\r\n */\r\n $(\".submitAvailabilityReminder\").click(function() {\r\n let validations = {\r\n email: [\r\n /^([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/,\r\n ],\r\n };\r\n \r\n $('#Reminder_Email_Validation').addClass('hide');\r\n $('#Reminder_Email_Success').addClass('hide');\r\n $('#Reminder_Email_Server_Error').addClass('hide');\r\n $('#Reminder_Email_Validation_Modal').addClass('hide');\r\n $('#Reminder_Email_Success_Modal').addClass('hide');\r\n $('#Reminder_Email_Server_Error_Modal').addClass('hide');\r\n\r\n let recaptchaResponse;\r\n if (grecaptcha == undefined) {\r\n $(modalForm ? '#Reminder_Recaptcha_Validation_Modal' : '#Reminder_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n try {\r\n let widgetId = $(modalForm ? \"#reminder-recaptcha-modal\" : \"#reminder-recaptcha\").data('widget');\r\n recaptchaResponse = grecaptcha.getResponse(widgetId);\r\n \r\n } catch {\r\n $(modalForm ? '#Reminder_Recaptcha_Validation_Modal' : '#Reminder_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n if (recaptchaResponse.length == 0) {\r\n $(modalForm ? '#Reminder_Recaptcha_Validation_Modal' : '#Reminder_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n\r\n let validation = new RegExp(validations['email'][0]);\r\n let email = modalForm ? $('#EmailReminderModal')[0] : $('#EmailReminder')[0];\r\n if (!validation.test(email.value)) {\r\n $('#Reminder_Email_Validation').removeClass('hide');\r\n return false;\r\n }\r\n\r\n const productId = $(this).data(\"id\");\r\n let reminderEntry = {};\r\n reminderEntry['Email'] = email.value;\r\n reminderEntry[\"RecaptchaResponse\"] = recaptchaResponse;\r\n reminderEntry[\"ProductId\"] = productId || currentProductId;\r\n \r\n\r\n $.post(\r\n '/Umbraco/Api/AvailiablitySubscription/Subscribe',\r\n reminderEntry,\r\n function(data, status) {\r\n $(modalForm ? '#Reminder_Email_Success_Modal' : '#Reminder_Email_Success').removeClass('hide');\r\n availabilityReminderSubmitTracking(productId ? productId : currentProductId, currentTrackingEvent ? currentTrackingEvent : \"erinnnerungsservice\");\r\n \r\n if (data) {\r\n trackIdLayerReduced(data, \"idLayer_reduced_reminder-service\"); \r\n }\r\n \r\n currentTrackingEvent = null;\r\n currentProductId = null;\r\n modalForm = false;\r\n setTimeout(() => {\r\n $('#modalSendReminder').modal(\"hide\");\r\n $('#EmailReminder').val(\"\");\r\n $('#Reminder_Email_Success').addClass('hide');\r\n grecaptcha.reset();\r\n }, 2000);\r\n }\r\n ).fail(function(data) {\r\n $(modalForm ? '#Reminder_Email_Server_Error_Modal' : '#Reminder_Email_Server_Error').removeClass('hide');\r\n });\r\n});\r\n\r\nfunction loadRecaptcha() {\r\n var script = document.createElement('script');\r\n script.onload = function() {\r\n if (window[\"UC_UI\"] !== undefined && UC_UI.isInitialized) {\r\n intiRecaptcha();\r\n }\r\n };\r\n script.src = 'https://www.google.com/recaptcha/api.js';\r\n\r\n document.head.appendChild(script);\r\n}\r\n\r\nfunction intiRecaptcha() {\r\n const recaptchaAllowed = UC_UI.getServicesBaseInfo().find(service => service.id === recaptchaId).consent.status;\r\n checkForRecaptcha(recaptchaAllowed, true);\r\n}\r\n","/*\r\n * Wording Info:\r\n * currentCart = zwischengespeicherter Warenkorb in der variable currentCart\r\n * Basket = Html-Objekt, das auf der Webseite zu sehen ist\r\n */\r\nimport 'bootstrap';\r\nimport { DummyImageSize } from '../Shared/Models/DummyImageSizeEnum';\r\nimport ProductHelper = require('../Shared/ProductHelper');\r\nimport { CheckoutService } from './checkoutService';\r\nimport { TrackMiniBasket } from './Tracking/checkoutTrackingGlobal';\r\nimport { IBasketOverlayModel } from './Models/BasketOverlay/IBasketOverlayModel';\r\nconst checkoutService = new CheckoutService();\r\nimport { onChangeQuantityTracking } from './Tracking/checkoutTrackingStep1';\r\nimport ICheckoutflowResponse = CheckoutflowReponse.ICheckoutflowResponse;\r\nimport ICart = CheckoutflowReponse.ICart;\r\nimport IPrice = CheckoutflowReponse.IPrice;\r\nimport ILineItem = CheckoutflowReponse.ILineItem;\r\nimport IGiftLineItem = CheckoutflowReponse.IGiftLineItem;\r\nimport ILineItemChange = CheckoutflowRequest.ILineItemChange;\r\nvar basketPrototypes = $('#BasketPrototypes') as JQuery;\r\nvar basketContainer = $('#basket_container') as JQuery;\r\nexport var currentCart: ICart;\r\nimport { ShoppingListService } from \"../ShoppingList/shoppingListService\";\r\nconst shoppingListService = new ShoppingListService();\r\n\r\nlet selectedBasketItemToDelete: JQuery;\r\nlet itemToDeleteId: string;\r\n\r\n/**\r\n * Füllt den basket_container mit den Daten aus der übergebenen Cart.\r\n * @param cart\r\n * @returns {}\r\n */\r\nexport async function fillBasket(cart: ICart) {\r\n let currentItemList = basketContainer.find('#BasketItemList');\r\n if (cart && cart.lineItems && cart.lineItems.length > 0) {\r\n let basketItemListClone = currentItemList.clone();\r\n basketItemListClone.html('');\r\n\r\n for (let lineItem of cart.lineItems.reverse()) {\r\n await addLineItemToBasket(lineItem, basketItemListClone);\r\n }\r\n\r\n if (cart.giftLineItems && cart.giftLineItems.length > 0) {\r\n for (let giftLineItem of cart.giftLineItems.reverse()) {\r\n addGiftLineItemToBasket(giftLineItem, basketItemListClone);\r\n }\r\n }\r\n\r\n currentItemList.replaceWith(basketItemListClone);\r\n } else {\r\n currentItemList.html('');\r\n }\r\n currentCart = cart;\r\n basketContainer.find('.approximatedPriceNote').addClass('hide');\r\n refreshTotalCartPrice();\r\n basketContainer.addClass('hide');\r\n hideOrShowElementsBasedOnNewCart();\r\n}\r\n\r\nasync function addGiftLineItemToBasket(lineItem: IGiftLineItem, basketItemListClone: JQuery) {\r\n let basketItem = $('#BasketPrototypes')\r\n .find('.basket_lineitem')\r\n .clone();\r\n basketItemListClone.append(basketItem);\r\n await fillProductContainer(basketItem, lineItem, true);\r\n}\r\n\r\nasync function addLineItemToBasket(lineItem: ILineItem, basketItemListClone: JQuery) {\r\n let basketItem = $('#BasketPrototypes')\r\n .find('.basket_lineitem')\r\n .clone();\r\n basketItemListClone.append(basketItem);\r\n await fillProductContainer(basketItem, lineItem, false);\r\n}\r\n\r\n/**\r\n * Füllt das übergebene BasketItem mit den Daten aus dem übergebenen LineItem und blendet es dannach ein\r\n * @param basketItem leerer ausgeblendeter (über die Klasse \"hide\") - aber bereits der Produktliste angehängter - Produktcontainer\r\n * @param lineItem das im Warenkorb liegende LineItem\r\n * @param gift Flag das anzeigt, ob es sich um ein Werbemittel handelt\r\n */\r\nasync function fillProductContainer(basketItem: JQuery, lineItem: ILineItem, gift: boolean) {\r\n let product = lineItem.product;\r\n let productId = product.productId;\r\n\r\n //basketItem\r\n basketItem.attr('id', 'basket_lineitem_' + lineItem.id);\r\n basketItem.attr('data-lineitemid', lineItem.id);\r\n\r\n //productdetails\r\n basketItem.find('.lineitem_productlink').attr('href', '/' + product.seoOptimizedUrlPart + '/product/' + productId);\r\n if (product.hasProduktabbildung) {\r\n let image = basketItem.find('.lineitem_productimage');\r\n image.attr('data-src', await ProductHelper.getImagePath(productId, 100));\r\n } else {\r\n basketItem\r\n .find('.lineitem_productimage')\r\n .attr('data-src', await ProductHelper.getDummyImage(DummyImageSize.large));\r\n }\r\n basketItem.find('.lineitem_title').html(product.titleMainHead ? product.titleMainHead : product.titleMain);\r\n\r\n if (!gift) {\r\n basketItem.find('.lineitem_authorlist').html(product.authorList);\r\n if (product.isbnIssn) {\r\n basketItem.find('.lineitem_isbn').html('ISBN ' + product.isbnIssn);\r\n } else {\r\n basketItem.find('.lineitem_isbn').addClass('hide');\r\n }\r\n basketItem.find('.lineitem_edition').html(product.edition);\r\n if (product.publicationYear > 0) {\r\n basketItem.find('.lineitem_publicationyear').html(product.publicationYear + '');\r\n }\r\n basketItem.find('.lineitem_mediatype').html(product.mediaType.mediaTypeName);\r\n } else {\r\n basketItem.find('.isbn-webcode.lineitem_isbn').remove();\r\n basketItem.find('.counter-elements.ajax_checkout_counter').remove();\r\n }\r\n\r\n if (product.publisher && product.publisher.publisherName) {\r\n basketItem.find('.lineitem_publisher').html(product.publisher.publisherName);\r\n }\r\n\r\n basketItem.find('.lineitem_totalprice').html(\r\n (lineItem.totalItemGrossPrice.amount / 100).toLocaleString('de-De', {\r\n style: 'currency',\r\n currency: lineItem.totalItemGrossPrice.currency.currencyIsoCode,\r\n })\r\n );\r\n\r\n basketItem\r\n .find('.lineitem_count')\r\n .val(lineItem.quantity + '')\r\n .html(lineItem.quantity + '');\r\n\r\n let price = product.prices.filter(\r\n x => x.priceType.priceTypeId == lineItem.currentPriceType.priceTypeId\r\n )[0] as IPrice;\r\n basketItem\r\n .find('.lineitem_pricetypedescription')\r\n .html(\r\n price.priceDescriptionShort ? price.priceDescriptionShort : lineItem.currentPriceType.priceTypeDescription\r\n );\r\n\r\n if (price.isApproximatePrice) {\r\n basketItem.find('.lineitem_caInfo').removeClass('hide');\r\n }\r\n\r\n // mediaTypeId == 213 entspricht e-Learning\r\n if (product.canNotBeReturned || product.mediaType.mediaTypeId == 213) {\r\n basketItem.find('.LineItem_CanNotBeReturnedLabel').removeClass('hide');\r\n }\r\n //Ebook oder kostenloses Produkt\r\n if (!gift && (product.mediaType.mediaTypeId == 82 || lineItem.totalItemGrossPrice.amount === 0)) {\r\n basketItem.find('.ajax_checkout_counter').addClass('disabled-Element');\r\n }\r\n if (!ProductHelper.checkAvailabilityStatus(product.availabilityStatusId)) {\r\n basketItem.find('.LineItem_CanNotBeOrderedLabel').removeClass('hide');\r\n } else {\r\n let status = await ProductHelper.getAvailabilityStatus(product.availabilityStatusId);\r\n if (\r\n product.availabilityStatusId == 3 &&\r\n product.dateOfPublicationDescription != null &&\r\n product.dateOfPublicationDescription != ''\r\n ) {\r\n basketItem\r\n .find('.lineitem_availability')\r\n .html(\r\n (await ProductHelper.getAvailabilityStatus(product.availabilityStatusId)) +\r\n ' (' +\r\n product.dateOfPublicationDescription +\r\n ')'\r\n );\r\n } else {\r\n basketItem\r\n .find('.lineitem_availability')\r\n .html(await ProductHelper.getAvailabilityStatus(product.availabilityStatusId));\r\n if (product.availabilityStatusId == 1 || product.availabilityStatusId == 4) {\r\n basketItem.find('.lineitem_availability').addClass('availabilityStatusColorGreen');\r\n basketItem.find('.lineitem_availability_img').removeClass('hide');\r\n }\r\n }\r\n }\r\n if (product.mediaType.mediaTypeId == 213) {\r\n basketItem.find('.price_container').addClass('service');\r\n }\r\n if (product.mediaType.mediaGroupName && product.mediaType.mediaGroupName === 'eBook') {\r\n let drmInfo = await ProductHelper.getDRMInfo(product.dRMId);\r\n if (drmInfo) {\r\n let drmInfoLinks = ` (${product.bindingType} ${drmInfo})`;\r\n let drmInfoRechts = `${product.bindingType} (${drmInfo})`;\r\n basketItem\r\n .find('.lineitem_kopierschutzInfo_details')\r\n .html(drmInfoLinks)\r\n .removeClass('hide');\r\n basketItem\r\n .find('.lineitem_kopierschutzInfo_price')\r\n .html(drmInfoRechts)\r\n .removeClass('hide');\r\n }\r\n let systemanforderungenLink = await ProductHelper.getSystemanforderungenLink();\r\n basketItem\r\n .find('.lineitem_systemvoraussetzungenLink')\r\n .removeClass('hide')\r\n .find('a')\r\n .html(systemanforderungenLink.displayName)\r\n .attr('href', systemanforderungenLink.href)\r\n .attr('target', systemanforderungenLink.target);\r\n basketItem.find('.LineItem_isEbook').removeClass('hide');\r\n basketItem.find('.checkoutServiceIcons').removeClass('hide');\r\n basketItem.find('.price_container').addClass('service');\r\n }\r\n if (\r\n product.prices.length == 1 &&\r\n (product.deliveryTypeId == 5 || product.deliveryTypeId == 4) &&\r\n !(lineItem.currentPriceType.priceTypeId.toString()[0] === '3')\r\n ) {\r\n //Produktvarianten vorhanden\r\n basketItem.find('.aktualisierungsService_aendern_Button').removeClass('hide');\r\n basketItem.find('.price_container').addClass('service');\r\n if (lineItem.chosenDeliveryType == 2) {\r\n basketItem.find('.lineitem_aktualisierungsservice').removeClass('hide');\r\n }\r\n if (lineItem.chosenDeliveryType == 1) {\r\n basketItem.find('.lineitem_einzelbezug').removeClass('hide');\r\n }\r\n }\r\n if (product.deliveryTypeId == 2) {\r\n basketItem.find('.LineItem_AbonnementHinweistext').removeClass('hide');\r\n }\r\n basketItem\r\n .find('.lineitem_pricedescription')\r\n .html(\r\n product.prices.filter(x => x.priceType.priceTypeId == lineItem.currentPriceType.priceTypeId)[0].description\r\n )\r\n .removeClass('hide');\r\n\r\n // In der Pricedesription soll der Link auf die Info Seite für den Aktualisierungsservice entfernt werden.\r\n // Ticket ECOM-459\r\n let priceDescriptionLink = basketItem.find('.lineitem_pricedescription').find('a.internal') as JQuery<\r\n HTMLAnchorElement\r\n >;\r\n if (\r\n priceDescriptionLink &&\r\n priceDescriptionLink.length &&\r\n priceDescriptionLink[0].href === 'https://www.beck-shop.de/content/loseblattwerke/aktualisierungsservice/7841/'\r\n ) {\r\n priceDescriptionLink.remove();\r\n }\r\n\r\n if (product.deliveryTypeId == 3 || product.deliveryTypeId == 6) {\r\n let additionalPriceInfo = await ProductHelper.getAdditionalPriceInfoByDelivertypeId(product.deliveryTypeId);\r\n\r\n if (additionalPriceInfo) {\r\n basketItem\r\n .find('.lineitem_additionalPriceInfo')\r\n .html(additionalPriceInfo)\r\n .removeClass('hide');\r\n }\r\n }\r\n\r\n basketItem.find('.lineitem_unitprice').html(\r\n (lineItem.singleItemGrossPrice.amount / 100).toLocaleString('de-De', {\r\n style: 'currency',\r\n currency: lineItem.singleItemGrossPrice.currency.currencyIsoCode,\r\n })\r\n );\r\n\r\n if (isPriceApproximated(lineItem)) {\r\n basketItem.find('.lineitem_unitprice').prepend('ca. ');\r\n basketItem.find('.lineitem_totalprice').prepend('ca. ');\r\n }\r\n\r\n //Button-logik\r\n if (product.prices.length > 1) {\r\n //Produktvarianten vorhanden\r\n basketItem.find('.produktvariante_aendern_button').removeClass('hide');\r\n basketItem.find('.price_container').addClass('service');\r\n }\r\n\r\n basketItem.find('.delete-item').attr('data-productid', productId);\r\n basketItem.removeClass('hide');\r\n loadImage(basketItem);\r\n}\r\n\r\nexport async function loadImage(basketItem) {\r\n let allImageWrapper = $(basketItem).find('.imgWrapper');\r\n allImageWrapper.each((index, element) => {\r\n let imageWidth = $(element).width();\r\n let image = $(element).find('.lineitem_productimage');\r\n image.attr('src', `${image.attr('data-src')}&width=${Math.round(imageWidth)}`);\r\n });\r\n}\r\n\r\n/**\r\n * Überprüft ob ein Preis des LineItems ein Circa-Preis ist\r\n * @param lineitem\r\n */\r\nfunction isPriceApproximated(lineitem: ILineItem): boolean {\r\n return lineitem.product.prices.some(x => x.isApproximatePrice);\r\n}\r\n\r\n/**\r\n * füllt das update-Model mit den aktuellen Daten. Das was geändert werden soll wird in der entsprechenden Methode angepasst.\r\n * @param lineitem\r\n */\r\nfunction buildLineItemChange(lineitem: ILineItem): ILineItemChange {\r\n let lineItemChange = {} as ILineItemChange;\r\n lineItemChange.productId = lineitem.product.productId;\r\n lineItemChange.lineItemId = lineitem.id;\r\n lineItemChange.quantity = lineitem.quantity;\r\n return lineItemChange;\r\n}\r\n\r\n/*\r\n * Setzt den Gesamtpreis des Baskets auf den aktuellen Wert aus der currentCart.\r\n * Wenn es sich um einen Ca.-Preis handelt wird \"Preis auf Anfrage\" zusammen mit einer Erläuterung ausgegeben\r\n */\r\nfunction refreshTotalCartPrice() {\r\n if (currentCart) {\r\n if (currentCart.areTotalPricesApproximated) {\r\n $('#basket_container')\r\n .find('.basket_totalprice')\r\n .html('Preis auf Anfrage');\r\n $('#basket_container')\r\n .find('.approximatedPriceNote')\r\n .removeClass('hide');\r\n } else {\r\n if (currentCart.totalGrossPrice.amount != undefined) {\r\n $('#basket_container')\r\n .find('.basket_totalprice')\r\n .html(\r\n (currentCart.totalGrossPrice.amount / 100).toLocaleString('de-De', {\r\n style: 'currency',\r\n currency: currentCart.totalGrossPrice.currency.currencyIsoCode,\r\n })\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/*\r\n * Zeigt Elemente an oder blendet Sie aus je nachdem ob die currentCart befüllt ist oder nicht\r\n */\r\nfunction hideOrShowElementsBasedOnNewCart() {\r\n if (currentCart && currentCart.lineItems.length > 0) {\r\n $('#basket_container').removeClass('hide');\r\n $('.onlyShowInFilledBasket').removeClass('hide');\r\n $('.showInEmptyBasket').addClass('hide');\r\n $('.disableInEmptyBasket').removeClass('disabled-Element');\r\n } else {\r\n $('.onlyShowInFilledBasket').addClass('hide');\r\n $('.showInEmptyBasket').removeClass('hide');\r\n $('.disableInEmptyBasket').addClass('disabled-Element');\r\n }\r\n}\r\n\r\nexport function initEvents() {\r\n //Zieht dem Item-Quantity 1 ab und triggert das Change Event des input-Fields\r\n $(basketContainer).on('click', '.ajax_checkout_counter .counter-subtr', function() {\r\n let counter = $(this).next('.lineitem_count');\r\n let currentvalue = +counter.val();\r\n if (currentvalue > 1) {\r\n counter.val(currentvalue - 1);\r\n counter.trigger('change');\r\n } else {\r\n deleteLineItemFromBasket($(this));\r\n }\r\n });\r\n\r\n //Addiert 1 zu der Item-Quantity und triggert das Change Event des input-Fields\r\n $(basketContainer).on('click', '.ajax_checkout_counter .counter-add', function() {\r\n let counter = $(this).prev('.lineitem_count');\r\n let currentvalue = +counter.val();\r\n counter.val(currentvalue + 1);\r\n counter.trigger('change');\r\n });\r\n\r\n //Updatet die LineItem-Quantity auf den Wert des Input-Fields\r\n $(basketContainer).on('change', '.lineitem_count', function() {\r\n if ($(this).val() < 1) {\r\n $(this).val(1);\r\n } else {\r\n setNewQuantityOfBasketItem($(this));\r\n }\r\n });\r\n\r\n //Disabled den löschen-Button und löscht dann das LineItem\r\n $(basketContainer).on('click', '.ajax_checkout_delete_from_basket', function() {\r\n const merklisteModal = $('#delete-basket-item-modal');\r\n if (merklisteModal.length === 1) {\r\n merklisteModal.modal();\r\n itemToDeleteId = $(this).attr('data-productid'); \r\n selectedBasketItemToDelete = $(this);\r\n }\r\n else {\r\n $(this).addClass('disabled-Element');\r\n deleteLineItemFromBasket($(this));\r\n }\r\n });\r\n\r\n $('#delete-basket-item-modal').on('click', '#delete-basket-item-confirm', function() {\r\n selectedBasketItemToDelete.removeClass('disabled-Element');\r\n $('#delete-basket-item-modal').modal('hide');\r\n deleteLineItemFromBasket(selectedBasketItemToDelete);\r\n });\r\n\r\n $('#delete-basket-item-modal').on('click', '#add-to-merkliste', function() {\r\n selectedBasketItemToDelete.removeClass('disabled-Element');\r\n $('#delete-basket-item-modal').modal('hide');\r\n shoppingListService.addItem(itemToDeleteId);\r\n deleteLineItemFromBasket(selectedBasketItemToDelete);\r\n });\r\n\r\n //Zeigt das Aktualisierungs-Service-Modal an\r\n $(basketContainer).on('click', '.changeServiceTrigger', function() {\r\n let modalId = $(this).attr('data-target');\r\n showModal($(modalId));\r\n });\r\n\r\n //Füllt das Modal aus dem geklickten LineItem und zeigt es an\r\n $(basketContainer).on('click', '.produktvariante_aendern_button', function() {\r\n let modalId = $(this).attr('data-target');\r\n let modal = $(modalId);\r\n let lineItemId = $(this)\r\n .parents('.basket_lineitem')\r\n .attr('data-lineitemid') as string;\r\n let currentLineItem = getLineItemById(lineItemId);\r\n fillProduktVariantenModal(modal, currentLineItem);\r\n showModal(modal);\r\n });\r\n\r\n //Füllt das Modal aus dem geklickten LineItem und zeigt es an\r\n $(basketContainer).on('click', '.aktualisierungsService_aendern_Button', function() {\r\n let modalId = $(this).attr('data-target');\r\n let modal = $(modalId);\r\n modal.find('.disabled-Element').removeClass('disabled-Element');\r\n modal.find('input[type=radio]').removeAttr('checked');\r\n let lineItemId = $(this)\r\n .parents('.basket_lineitem')\r\n .attr('data-lineitemid') as string;\r\n let currentLineItem = getLineItemById(lineItemId);\r\n fillBezugsartenModal(modal, currentLineItem);\r\n showModal(modal);\r\n });\r\n\r\n /**\r\n * Aktualisiert den Pricetype des aktuellen LineItems mit dem neu ausgewählten Pricetype\r\n */\r\n $(basketContainer).on('click', '.refresh-basket-btn_produktvariante', function() {\r\n setNewPricetypeIdOfBasketItem($(this));\r\n });\r\n\r\n //Aktualisiert den ChosenDeliveryType des aktuellen LineItems mit dem neu ausgewählten ChosenDeliveryType\r\n $('.refresh-basket-btn_bezugsarten').on('click', function() {\r\n setNewChosenDeliveryTypeOfBasketItem($(this));\r\n });\r\n}\r\n\r\n//Updatetet die Quantity des LineItems\r\nfunction setNewQuantityOfBasketItem(countElement: JQuery) {\r\n let basketitem = countElement.parents('.basket_lineitem');\r\n basketitem.find('.ajax_checkout_counter').addClass('disabled-Element');\r\n let quantity = countElement.val() as number;\r\n let lineItemId = basketitem.attr('data-lineitemid') as string;\r\n let lineItem = getLineItemById(lineItemId);\r\n updateQuantityOfLineItem(lineItem, quantity)\r\n .catch()\r\n .then(() => {});\r\n}\r\n\r\nfunction setNewPricetypeIdOfBasketItem(button: JQuery) {\r\n button.addClass('disabled-Element');\r\n let parentContainer = button.parents('.produktvarianten_modal_content');\r\n let lineItemId = parentContainer.attr('data-lineitemid') as string;\r\n let newPricetypeId = parentContainer.find('.produktvariante_radio:checked').val() as number;\r\n let lineItemToUpdate = getLineItemById(lineItemId);\r\n updatePriceTypeOfLineItem(lineItemToUpdate, newPricetypeId)\r\n .then(_ => {\r\n hideModal(parentContainer.parents('#produktvariantenModal'));\r\n })\r\n .catch()\r\n .then(_ => {\r\n button.removeClass('disabled-Element');\r\n });\r\n}\r\n\r\nfunction setNewChosenDeliveryTypeOfBasketItem(button: JQuery) {\r\n button.addClass('disabled-Element');\r\n let parentContainer = button.parents('.bezugsarten_modal_content');\r\n let lineItemId = parentContainer.attr('data-lineitemid') as string;\r\n let newChosenDeliveryType = +parentContainer.find('.chosenDeliveryType_radio:checked').val() as number;\r\n let lineItemToUpdate = getLineItemById(lineItemId);\r\n updateChosenDeliveryTypeOfLineItem(lineItemToUpdate, newChosenDeliveryType)\r\n .then(_ => {\r\n hideModal(button.parents('#aktualisierungsServiceModal'));\r\n })\r\n .catch()\r\n .then(_ => {\r\n button.removeClass('disabled-Element');\r\n });\r\n}\r\n\r\nasync function updateQuantityOfLineItem(lineItemToUpdate: ILineItem, quantity: number) {\r\n let lineItemChange = buildLineItemChange(lineItemToUpdate);\r\n let oldQuantitiy = lineItemToUpdate.quantity;\r\n lineItemChange.quantity = quantity;\r\n const cart = await updateLineItem(lineItemChange);\r\n var updatedLineItem = getLineItemById(lineItemToUpdate.id);\r\n await getItemCountForBasket();\r\n onChangeQuantityTracking(currentCart, updatedLineItem, quantity, oldQuantitiy);\r\n}\r\n\r\nasync function updatePriceTypeOfLineItem(lineItemToUpdate: ILineItem, pricetypeId: number) {\r\n let lineItemChange = buildLineItemChange(lineItemToUpdate);\r\n lineItemChange.priceTypeId = pricetypeId;\r\n await updateLineItem(lineItemChange);\r\n}\r\n\r\nasync function updateChosenDeliveryTypeOfLineItem(lineItemToUpdate: ILineItem, chosenDeliveryType: number) {\r\n let lineItemChange = buildLineItemChange(lineItemToUpdate);\r\n lineItemChange.chosenDeliveryType = chosenDeliveryType;\r\n lineItemChange.priceTypeId = lineItemToUpdate.currentPriceType.priceTypeId;\r\n await updateLineItem(lineItemChange);\r\n}\r\n\r\nasync function updateLineItem(lineItemChange: ILineItemChange) {\r\n try {\r\n const newCart = await checkoutService.updateLineItem(lineItemChange);\r\n fillBasket(newCart);\r\n return newCart;\r\n } catch {}\r\n}\r\n\r\n/**\r\n * Füllt das Produktvarianten-Modal mit den Preisen aus dem übergebenen LineItem\r\n * @param modal\r\n * @param lineItem\r\n */\r\nfunction fillProduktVariantenModal(modal: JQuery, currentLineItem: ILineItem) {\r\n let produktvariantenContainer = modal.find('.produktvariantenContainer');\r\n produktvariantenContainer.parents('.produktvarianten_modal_content').attr('data-lineitemid', currentLineItem.id);\r\n produktvariantenContainer.html('');\r\n let checkItemPrototype = $('#produktvariantePrototypes .check-item');\r\n for (let price of currentLineItem.product.prices) {\r\n let pricetypeId = price.priceType.priceTypeId;\r\n let newCheckItem = checkItemPrototype.clone();\r\n newCheckItem\r\n .find('input[type=radio]')\r\n .val(pricetypeId)\r\n .attr('id', 'produktvariante_checkbox_' + pricetypeId)\r\n .next('label')\r\n .attr('for', 'produktvariante_checkbox_' + pricetypeId);\r\n let priceAmount = (price.priceGross / 100).toLocaleString('de-De', {\r\n style: 'currency',\r\n currency: price.currency.currencyIsoCode,\r\n });\r\n newCheckItem\r\n .find('.produktvariante_head')\r\n .html(\r\n price.priceDescriptionShort\r\n ? price.priceDescriptionShort + ' ' + priceAmount\r\n : price.priceType.priceTypeDescription + ' ' + priceAmount\r\n );\r\n newCheckItem.find('.produktvariante_description').html(price.description);\r\n newCheckItem.find('.produktvariante_specialConditions').html(price.specialConditions);\r\n if (currentLineItem.currentPriceType.priceTypeId == price.priceType.priceTypeId) {\r\n newCheckItem.addClass('disabled-Element');\r\n }\r\n produktvariantenContainer.append(newCheckItem);\r\n }\r\n\r\n //Checked die aktuelle Produktvariante\r\n produktvariantenContainer\r\n .find('#produktvariante_checkbox_' + currentLineItem.currentPriceType.priceTypeId)\r\n .prop('checked', true);\r\n}\r\n\r\n/**\r\n * Füllt das Bezugsarten-Modal mit den chosenDeliveryType aus dem übergebenen LineItem\r\n * @param modal\r\n * @param lineItem\r\n */\r\nfunction fillBezugsartenModal(modal: JQuery, lineItem: ILineItem) {\r\n let container = modal.find('.bezugsartenContainer');\r\n container.find('.chosenDeliveryType_radio').prop('checked', false);\r\n if (lineItem.product.deliveryTypeId == 4) {\r\n container.find('.description_optionalefortsetzung').removeClass('hide');\r\n container.find('.description_standardfortsetzung').addClass('hide');\r\n }\r\n if (lineItem.product.deliveryTypeId == 5) {\r\n container.find('.description_standardfortsetzung').removeClass('hide');\r\n container.find('.description_optionalefortsetzung').addClass('hide');\r\n }\r\n container.parents('.bezugsarten_modal_content').attr('data-lineitemid', lineItem.id);\r\n let checkItems = container.find('.check-item');\r\n checkItems.each(function() {\r\n let checkitem = $(this);\r\n if (checkitem.find('input[name=bezugsart]').val() == lineItem.chosenDeliveryType) {\r\n checkitem.find('input[name=bezugsart]').prop('checked', true);\r\n checkitem.addClass('disabled-Element');\r\n } else {\r\n checkitem.removeClass('disabled-Element');\r\n }\r\n });\r\n}\r\n\r\n//Löscht das LineItem aus dem Warenkorb\r\nasync function deleteLineItemFromBasket(deleteElement: JQuery) {\r\n let basketitem = deleteElement.parents('.basket_lineitem');\r\n let lineItemId = basketitem.attr('data-lineitemid') as string;\r\n let lineItemToDelete = getLineItemById(lineItemId);\r\n let oldQuantity = lineItemToDelete.quantity;\r\n let newQuantity = 0;\r\n let lineItemChange = buildLineItemChange(lineItemToDelete);\r\n await deleteLineItem(lineItemChange);\r\n lineItemToDelete.quantity = 0;\r\n let deletedLineItem = lineItemToDelete;\r\n await getItemCountForBasket(true);\r\n onChangeQuantityTracking(currentCart, deletedLineItem, newQuantity, oldQuantity);\r\n}\r\n\r\nasync function deleteLineItem(lineItemChange: ILineItemChange) {\r\n const newCart = await checkoutService.deleteLineItem(lineItemChange);\r\n fillBasket(newCart);\r\n}\r\n\r\nfunction getLineItemById(lineItemId: string) {\r\n var lineItem = currentCart.lineItems.filter(x => x.id == lineItemId)[0];\r\n if (lineItem) {\r\n return lineItem;\r\n }\r\n return currentCart.giftLineItems.filter(x => x.id == lineItemId)[0];\r\n}\r\n\r\n/*\r\n * Ruft die Anzahl der Produkte im Warenkorb ab.\r\n */\r\nexport async function getItemCountForBasket(overrideEmptyBasket: boolean = false) {\r\n try {\r\n const cart = await checkoutService.getItemCountInBasket();\r\n if ((cart && cart.itemCount) || overrideEmptyBasket) {\r\n setItemCountForBasket(cart?.itemCount ?? 0);\r\n TrackMiniBasket(cart); \r\n }\r\n if (cart && cart.items) {\r\n fillBasketOverlay(cart);\r\n }\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n}\r\n\r\n/**\r\n * Zeigt die Anzahl der Produkte im Warenkorb an.\r\n * @param itemCount\r\n */\r\nfunction setItemCountForBasket(itemCount: number) {\r\n if (itemCount > 0) {\r\n $('.headerBasket.notify')\r\n .html(itemCount + '')\r\n .removeClass('hide');\r\n }\r\n if (itemCount == 0) {\r\n $('.headerBasket.notify')\r\n .html('')\r\n .addClass('hide');\r\n }\r\n}\r\n\r\nfunction showModal(modal: JQuery) {\r\n $('body').addClass('modal-open');\r\n $('#modal-bg-layover').show();\r\n modal.show();\r\n}\r\n\r\nfunction hideModal(modal: JQuery) {\r\n $('body').removeClass('modal-open');\r\n $('#modal-bg-layover').hide();\r\n modal.hide();\r\n}\r\n\r\nfunction fillBasketOverlay(cart: IBasketOverlayModel) {\r\n const basketOverlay = $('.basket-menu-bubble');\r\n\r\n basketOverlay.find('.basket-summary .pricebox .price').html(cart.totalGross);\r\n\r\n basketOverlay.find('.item.added').remove();\r\n\r\n for (let item of cart.items) {\r\n let itemPrototype = basketOverlay.find('.item.prototype').clone();\r\n itemPrototype\r\n .removeClass('prototype')\r\n .removeClass('hidden')\r\n .addClass('added');\r\n itemPrototype.find('.author').html(item.authorList);\r\n itemPrototype.find('.title').html(item.title);\r\n itemPrototype.find('.edition').html(item.edition);\r\n\r\n itemPrototype.find('.availability').html(item.availabilityStatus);\r\n if (item.availabilityStatusId !== 1) {\r\n itemPrototype.find('.availability').removeClass('available');\r\n }\r\n\r\n itemPrototype.find('.amount span').html(item.quantity.toString());\r\n itemPrototype.find('img').attr('src', item.imageUrl);\r\n itemPrototype.find('a').attr('href', `/${item.seoPath}/product/${item.productId}`);\r\n basketOverlay.find('.basket-items').append(itemPrototype);\r\n\r\n itemPrototype\r\n .find('.singleprice span')\r\n .html((item.singleItemPrice / 100).toLocaleString('de-De', { style: 'currency', currency: 'EUR' }));\r\n itemPrototype\r\n .find('.totalprice span')\r\n .html((item.totalItemPrice / 100).toLocaleString('de-De', { style: 'currency', currency: 'EUR' }));\r\n }\r\n}\r\n","export enum DummyImageSize {\r\n small,\r\n medium,\r\n large\r\n}\r\n","declare var dataLayer: any[];\r\n\r\n/**\r\n * Klick auf Express-Kauf-Button im inaktiven Zustand\r\n */\r\nexport function inactiveButtonClickTracking() {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'express-kauf',\r\n eventLabel: 'button-click_inactive',\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', 'express-kauf' + '/' + 'button-click_inactive', 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * Klick auf Express-Kauf-Button im aktiven Zustand\r\n */\r\nexport function activeButtonClickTracking() {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'express-kauf',\r\n eventLabel: 'button-click_active',\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', 'express-kauf' + '/' + 'button-click_active', 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * Abgeschlossene Konfiguration der Express-Kauf-Daten in Meine Daten\r\n */\r\nexport function saveConfigTracking() {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'express-kauf',\r\n eventLabel: 'config_done',\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', 'express-kauf' + '/' + 'config_done', 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n","import { ProduktkarussellItem, ProduktkarussellModel } from '../Produktdetails/Models/Produktkarussell';\r\n\r\nexport const CreateSliderContent = (\r\n products: ProduktkarussellModel,\r\n container,\r\n sliderPrototype,\r\n sliderId,\r\n trbotracking: boolean = false\r\n): void => {\r\n var container = container;\r\n if (!nullOrEmpty(products) && !nullOrEmpty(products.karussellItems) && products.karussellItems.length > 0) {\r\n var sliderPrototypes = sliderPrototype.clone();\r\n for (let product of products.karussellItems) {\r\n var productItem = sliderPrototypes.find('.productItem').clone();\r\n //Labels\r\n var labelWrapper = productItem.find('.labelWrapper');\r\n if (product.isNew) {\r\n var newLabel = sliderPrototypes.find('.statusLabel.red').clone();\r\n newLabel.find('.txt').html('Neu');\r\n labelWrapper.append(newLabel);\r\n }\r\n if (product.isTopTitel) {\r\n var topLabel = sliderPrototypes.find('.statusLabel.gold').clone();\r\n topLabel.find('.txt').html('Toptitel');\r\n labelWrapper.append(topLabel);\r\n }\r\n if (product.isStandardwerk) {\r\n var standardwerkLabel = sliderPrototypes.find('.statusLabel.gold').clone();\r\n standardwerkLabel.find('.txt').html('Standardwerk');\r\n labelWrapper.append(standardwerkLabel);\r\n }\r\n if (product.isAnkuendigung) {\r\n var ankuendigungLabel = sliderPrototypes.find('.statusLabel.red').clone();\r\n ankuendigungLabel.find('.txt').html('Ankündigung');\r\n labelWrapper.append(ankuendigungLabel);\r\n }\r\n if (product.isEbook) {\r\n var ebookLabel = sliderPrototypes.find('.mediaTypeLabel.gold').clone();\r\n ebookLabel.html('eBook');\r\n productItem.find('.imgWrapper').append(ebookLabel);\r\n }\r\n if (sliderId == 'merklisteSlider') {\r\n productItem.find('.title a').addClass('merklisteTracking');\r\n }\r\n if (container[0].id == 'productTopReihen') {\r\n productItem\r\n .find('.title a')\r\n .html(product.title)\r\n .attr('href', product.productDetailUrl)\r\n .addClass('topProductTracking')\r\n .attr('data-trackingevent', 'PDP_top-products_static-reco');\r\n } else if (container[0].id == 'productTrbo' || container[0].id == 'productTrboLastSeen' || trbotracking) {\r\n productItem\r\n .find('.title a')\r\n .html(product.title)\r\n .attr('href', product.productDetailUrl)\r\n .addClass('trboClickTracking')\r\n .attr('data-campaignid', products.campaignId)\r\n .attr('data-campaignname', products.campaignName)\r\n .attr('data-moduleid', products.moduleId)\r\n .attr('data-modulename', products.moduleName)\r\n .attr('data-productid', product.productId)\r\n .attr('data-usertype', products.userType);\r\n } else {\r\n productItem\r\n .find('.title a')\r\n .html(product.title)\r\n .attr('href', product.productDetailUrl);\r\n }\r\n\r\n productItem.find('.author').html(product.authorstring);\r\n productItem.find('.price').html(product.pricePrefix + product.price);\r\n productItem.find('.imgWrapper img').attr('src', product.imageUrl);\r\n productItem.find('.imgWrapper').attr('href', product.productDetailUrl);\r\n if (container[0].id == 'productTopReihen') {\r\n productItem\r\n .find('.imgWrapper')\r\n .addClass('topProductTracking')\r\n .attr('data-trackingevent', 'PDP_top-products_static-reco');\r\n productItem.find('.addToCard').addClass('promotionClick');\r\n } else if (container[0].id == 'productTrbo' || container[0].id == 'productTrboLastSeen' || trbotracking) {\r\n productItem\r\n .find('.imgWrapper')\r\n .addClass('trboClickTracking')\r\n .attr('data-campaignid', products.campaignId)\r\n .attr('data-campaignname', products.campaignName)\r\n .attr('data-moduleid', products.moduleId)\r\n .attr('data-modulename', products.moduleName)\r\n .attr('data-productid', product.productId)\r\n .attr('data-usertype', products.userType);\r\n } else if (container[0].id == 'productFamilyContainer') {\r\n productItem.find('.imgWrapper').addClass('promotionClick');\r\n productItem.find('.remember').addClass('promotionClick');\r\n productItem.find('.title').addClass('promotionClick');\r\n productItem.find('.addToCard').addClass('promotionClick');\r\n }\r\n\r\n if (sliderId == 'merklisteSlider') {\r\n productItem.find('.imgWrapper').addClass('merklisteTracking');\r\n }\r\n\r\n if (product.warenkorbAnzeigen && product.isBeckOnline !== true) {\r\n let addToCartButton = productItem.find('.addToCard.shop');\r\n if (sliderId == 'merklisteSlider') {\r\n addToCartButton.addClass('merklisteTracking');\r\n }\r\n addToCartButton.attr('data-productid', product.productId);\r\n if (product.showBezugsartOverlay) {\r\n addToCartButton.addClass('ajax_checkout_bezugsart');\r\n addToCartButton.attr('data-toggle', 'modal').attr('data-target', '#modalBezugsart-01');\r\n } else {\r\n addToCartButton.addClass('ajax_checkout_add');\r\n }\r\n if (container[0].id == 'productTrbo' || container[0].id == 'productTrboLastSeen' || trbotracking) {\r\n addToCartButton\r\n .addClass('trboClickTracking')\r\n .attr('data-campaignid', products.campaignId)\r\n .attr('data-campaignname', products.campaignName)\r\n .attr('data-moduleid', products.moduleId)\r\n .attr('data-modulename', products.moduleName)\r\n .attr('data-productid', product.productId)\r\n .attr('data-usertype', products.userType);\r\n\r\n productItem\r\n .find('.remember')\r\n .addClass('trboClickTracking')\r\n .attr('data-campaignid', products.campaignId)\r\n .attr('data-campaignname', products.campaignName)\r\n .attr('data-moduleid', products.moduleId)\r\n .attr('data-modulename', products.moduleName)\r\n .attr('data-productid', product.productId)\r\n .attr('data-usertype', products.userType);\r\n }\r\n productItem.find('.addToCard.screen').addClass('hide');\r\n } else {\r\n productItem.find('.addToCard').addClass('hide');\r\n }\r\n\r\n if (product.isBeckOnline) {\r\n productItem.find('.addToCard.screen').removeClass('hide');\r\n productItem.find('.addToCard.screen').attr('data-productid', product.productId);\r\n productItem\r\n .find('.addToCard.screen')\r\n .attr(\r\n 'href',\r\n `https://shop.beck-online.de/?crop=${product.kupOrderNo}&chk=${\r\n product.kupOrderNo\r\n }&usr=1&cid=BS&uid=`\r\n )\r\n .attr(\r\n 'data-price',\r\n product.price\r\n .replace('€', '')\r\n .replace(',', '.')\r\n .trim()\r\n );\r\n }\r\n\r\n productItem.find('.remember').attr('data-id', product.productId);\r\n if ($('#loggedInFlag').length) {\r\n productItem.find('.remember').addClass('addToMerkliste');\r\n } else {\r\n productItem\r\n .find('.remember')\r\n .attr(\r\n 'href',\r\n products.loginPageUrl\r\n ? products.loginPageUrl + '?merklisteId=' + product.productId\r\n : '/meine-daten/meine-daten-login/' + '?merklisteId=' + product.productId\r\n );\r\n }\r\n\r\n if (\r\n product.lieferstatusId !== 3 &&\r\n product.lieferstatusId !== 5 &&\r\n !product.lieferstatus.includes('vorbestell')\r\n ) {\r\n productItem.find('.reminder').addClass('hide');\r\n } else {\r\n productItem.find('.reminder').attr('data-id', product.productId);\r\n }\r\n\r\n getAvailabilityInfoText(product, productItem);\r\n getEditionText(product, productItem);\r\n\r\n container.append(productItem);\r\n }\r\n\r\n addContainerViewTracking(container, trbotracking, products);\r\n $('.productFamily.ajaxSpinner_Loading').addClass('hide');\r\n } else {\r\n if (container[0].id == sliderId) {\r\n var topProductsKarussel = $('slider');\r\n topProductsKarussel.addClass('hide');\r\n }\r\n }\r\n};\r\n\r\nfunction addContainerViewTracking(container: any, trbotracking: boolean, products: ProduktkarussellModel) {\r\n if (container[0].id == 'productTrbo' || container[0].id == 'productTrboLastSeen' || trbotracking) {\r\n container\r\n .addClass('trboPromotionTracking')\r\n .attr('data-campaignid', products.campaignId)\r\n .attr('data-campaignname', products.campaignName)\r\n .attr('data-moduleid', products.moduleId)\r\n .attr('data-modulename', products.moduleName)\r\n .attr('data-usertype', products.userType);\r\n } else if (container[0].id == 'productTopReihen') {\r\n container\r\n .addClass('googleTracking')\r\n .addClass('promotionTracking')\r\n .attr('data-trackingevent', 'PDP_top-products_static-reco');\r\n } else if (container[0].id == 'productFamilyContainer') {\r\n container\r\n .addClass('googleTracking')\r\n .addClass('promotionTracking')\r\n .attr('data-trackingevent', 'PDP_product-family_static-reco');\r\n }\r\n}\r\n\r\nfunction getAvailabilityInfoText(product: ProduktkarussellItem, productItem: any) {\r\n if (product.lieferstatus && product.lieferstatus.length > 0) {\r\n if (\r\n product.lieferstatusId === 3 &&\r\n product.dateOfPublicationDescription &&\r\n product.dateOfPublicationDescription.length > 0\r\n ) {\r\n productItem\r\n .find('.lieferStatus span')\r\n .html(`${product.lieferstatus} (${product.dateOfPublicationDescription})`);\r\n } else {\r\n productItem.find('.lieferStatus span').html(product.lieferstatus);\r\n if (\r\n product.lieferstatusId === 1 ||\r\n product.lieferstatusId === 4 ||\r\n product.lieferstatus === 'sofort lieferbar!'\r\n ) {\r\n productItem.find('.lieferStatus span').addClass('availabilityStatusColorGreen');\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction nullOrEmpty(element) {\r\n return element === null || element === '' || typeof element === 'undefined';\r\n}\r\nfunction getEditionText(product: ProduktkarussellItem, productItem: any) {\r\n if (product.auflage) {\r\n productItem.find('.edition span').html(product.auflage);\r\n }\r\n}\r\n","/**\r\n * Formatiert den Übergebenen Betrag in das Format 0.00.\r\n * Wenn es sich um einen Cent-Betrag handelt wird vorher /100 geteilt\r\n * @param price\r\n * @param isCentPrice\r\n */\r\nexport function formatPrice2Digits(price: number, isCentPrice?: boolean) {\r\n try {\r\n if (!price && price != 0) {\r\n return null;\r\n }\r\n if (isCentPrice) {\r\n price = price / 100;\r\n }\r\n return price.toFixed(2);\r\n } catch (error) {\r\n return null;\r\n }\r\n}","declare var Swiper: any;\r\nvar inAdvance = 700;\r\n\r\nvar setSlideGroupBig, setSlideGroupSmall;\r\nvar carouselbig = [];\r\nvar carouselsmall = [];\r\nvar karussellElementsLarge: JQuery;\r\nvar karussellElementsSmall: JQuery; \r\nvar swiperElements: JQuery;\r\n$(() => {\r\n\r\n checkForSwiperSlider();\r\n\r\n let windowWidth = $(window).width();\r\n if (windowWidth <= 768) {\r\n setSlideGroupBig = 1;\r\n setSlideGroupSmall = 1;\r\n }\r\n else if (windowWidth <= 1200) {\r\n setSlideGroupBig = 3;\r\n setSlideGroupSmall = 1;\r\n }\r\n else {\r\n setSlideGroupBig = 4;\r\n setSlideGroupSmall = 3;\r\n }\r\n\r\n //Produktkarussell\r\n karussellElementsLarge = $(\"[id^=produktkarussellLarge]:not(.initialized):not(.trboDynamicSlider)\");\r\n karussellElementsSmall = $(\"[id^=produktkarussellSmall]:not(.initialized):not(.trboDynamicSlider)\");\r\n lazyloadKarussell();\r\n\r\n\r\n window.addEventListener(\"scroll\", function () {\r\n lazyloadKarussell();\r\n });\r\n\r\n /**\r\n * Beim window resize müssen die Produktkarussel aktualisiert werden,\r\n * ansonsten passt die Darstellung nicht mehr\r\n */\r\n $(window).resize(() => {\r\n for (var j = 0; j < carouselbig.length; j++) {\r\n carouselbig[j].pagination.render();\r\n carouselbig[j].pagination.update();\r\n carouselbig[j].update();\r\n }\r\n for (var k = 0; k < carouselsmall.length; k++) {\r\n carouselsmall[k].pagination.render();\r\n carouselsmall[k].pagination.update();\r\n carouselsmall[k].update();\r\n }\r\n });\r\n});\r\n\r\n\r\nfunction lazyloadKarussell() {\r\n for (let index = 0; index < karussellElementsLarge.length; index++) {\r\n try {\r\n const karussell = karussellElementsLarge[index];\r\n let karussellTop = karussell.getBoundingClientRect().top;\r\n if (karussellTop < (window.innerHeight + window.pageYOffset + inAdvance) && karussellTop > 0) {\r\n carouselbig.push(initSwiperLarge(karussell));\r\n karussell.classList.add('initialized');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n for (let index = 0; index < karussellElementsSmall.length; index++) {\r\n try {\r\n const karussell = karussellElementsSmall[index];\r\n let karussellTop = karussell.getBoundingClientRect().top;\r\n if (karussellTop < (window.innerHeight + window.pageYOffset + inAdvance) && karussellTop > 0) {\r\n carouselsmall.push(initSwiperSmall(karussell));\r\n karussell.classList.add('initialized');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n karussellElementsLarge = karussellElementsLarge.filter(':not(.initialized)');\r\n karussellElementsSmall = karussellElementsSmall.filter(':not(.initialized)');\r\n}\r\n\r\n/**\r\n * Überprüft ob es auf der Seite Slider gibt, falls ja, werden diese konfiguriert\r\n */\r\nfunction checkForSwiperSlider() {\r\n swiperElements = $(\"[id^=bannerSwiper]:not(.trboDynamicBuehne)\");\r\n var frequency = swiperElements.first().data(\"frequency\");\r\n if (swiperElements.length > 0) { \r\n configureSwiperSlider(frequency, \"fade\", swiperElements);\r\n }\r\n}\r\n\r\n/**\r\n * Konfiguriert alle Swiper Slider auf der Seite\r\n * @param autoplay Die Anzeigedauer eines Bildes\r\n * @param effect Der Transition effekt\r\n * @param elements Die Swiper slider Elemente\r\n */\r\nexport function configureSwiperSlider(autoplay: number, effect: string, elements: any) {\r\n for (var i = 0; i < elements.length; i++) {\r\n var swiper = new Swiper((elements[i]) as any, {\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n loop: true,\r\n autoplay: {\r\n delay: autoplay,\r\n },\r\n autoplayDisableOnInteraction: true,\r\n effect: effect\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Initialisierungsfunktion für das kleine karussel\r\n * @param elem\r\n */\r\nexport function initSwiperSmall(elem: any) {\r\n let swiper = new Swiper(elem,\r\n {\r\n slidesPerView: setSlideGroupSmall,\r\n spaceBetween: 30,\r\n slidesPerGroup: setSlideGroupSmall,\r\n loop: true,\r\n loopFillGroupWithBlank: true,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n observer: true,\r\n observeParents: true,\r\n breakpoints: {\r\n 1200: {\r\n slidesPerView: 2,\r\n spaceBetween: 40\r\n },\r\n 1024: {\r\n slidesPerView: 2,\r\n spaceBetween: 40\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n spaceBetween: 30\r\n },\r\n 640: {\r\n slidesPerView: 1,\r\n spaceBetween: 20\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 10\r\n }\r\n },\r\n on: {\r\n resize: function () {\r\n if ($(window).width() > 1200) {\r\n setSlideGroupSmall = 3;\r\n this.params.slidesPerView = 3;\r\n } else if (($(window).width() < 1200) && ($(window).width() > 1024)) {\r\n setSlideGroupSmall = 2;\r\n this.params.slidesPerView = 2;\r\n } else if ($(window).width() < 1024) {\r\n this.params.slidesPerView = 1;\r\n setSlideGroupSmall = 1;\r\n }\r\n this.params.slidesPerGroup = setSlideGroupSmall;\r\n this.update();\r\n this.pagination.update();\r\n this.pagination.render();\r\n }\r\n }\r\n });\r\n $(elem).find('.swiper-wrapper').removeClass('hide');\r\n return swiper;\r\n}\r\n\r\n/**\r\n * Initialisierungsfunktion für das große karussel\r\n * @param elem\r\n */\r\nexport function initSwiperLarge(elem: any) {\r\n let swiper = new Swiper(elem,\r\n {\r\n slidesPerView: setSlideGroupBig,\r\n spaceBetween: 30,\r\n slidesPerGroup: setSlideGroupBig,\r\n loop: false,\r\n loopFillGroupWithBlank: false,\r\n pagination: {\r\n el: '.swiper-pagination',\r\n clickable: true,\r\n },\r\n navigation: {\r\n nextEl: '.swiper-button-next',\r\n prevEl: '.swiper-button-prev',\r\n },\r\n observer: true,\r\n observeParents: true,\r\n breakpoints: {\r\n //1400: {\r\n // slidesPerView: 4,\r\n // spaceBetween: 30\r\n //},\r\n 1200: {\r\n slidesPerView: 4,\r\n spaceBetween: 40\r\n },\r\n 1024: {\r\n slidesPerView: 3,\r\n spaceBetween: 30\r\n },\r\n 768: {\r\n slidesPerView: 2,\r\n spaceBetween: 30\r\n },\r\n 640: {\r\n slidesPerView: 1,\r\n spaceBetween: 20\r\n },\r\n 320: {\r\n slidesPerView: 1,\r\n spaceBetween: 10\r\n }\r\n },\r\n on: {\r\n resize: function() {\r\n if ($(window).width() > 1200) {\r\n setSlideGroupBig = 4;\r\n this.params.slidesPerView = 4;\r\n } else if (($(window).width() < 1200) && ($(window).width() > 1024)) {\r\n setSlideGroupBig = 3;\r\n this.params.slidesPerView = 3;\r\n } else if ($(window).width() < 1024 && ($(window).width() > 768)) {\r\n this.params.slidesPerView = 2;\r\n setSlideGroupBig = 3;\r\n } else {\r\n this.params.slidesPerView = 1;\r\n setSlideGroupBig = 1;\r\n }\r\n this.params.slidesPerGroup = setSlideGroupBig;\r\n this.update();\r\n this.pagination.update();\r\n this.pagination.render();\r\n }\r\n }\r\n });\r\n $(elem).find('.swiper-wrapper').removeClass('hide');\r\n return swiper;\r\n}","import * as Cookies from 'js-cookie';\r\n\r\ndeclare var dataLayer: any[];\r\nvar windowHeight = $(window).innerHeight();\r\ndeclare var _trboq: any;\r\ndeclare var _trbo: any;\r\ndeclare var UC_UI: any;\r\n\r\n/**\r\n * Googletracking für ein Promotionevent\r\n * @param eventName Der Name des Trackingevents\r\n */\r\nexport function trackGooglePromotionEvent_view(eventName: string) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n dataLayer.push({\r\n event: 'eec.promotionView',\r\n ecommerce: {\r\n promoView: {\r\n promotions: [\r\n {\r\n name: eventName,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n icampv: [[eventName]],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n } else {\r\n setTimeout(trackGooglePromotionEvent_view.bind(null, eventName), 100);\r\n }\r\n}\r\nexport function trackGooglePromotionEvent_click(eventName: string) {\r\n dataLayer.push({\r\n event: 'eec.promotionClick',\r\n ecommerce: {\r\n promoClick: {\r\n promotions: [\r\n {\r\n name: eventName,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n icampc: [[eventName]],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nexport function trackGoogleAddToMerkliste_click(productId: number) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'product data',\r\n eventAction: 'add to wishlist',\r\n eventLabel: `add_${productId}`,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['product data', 'add to wishlist' + '/' + `add_${productId}`, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nexport function trackMerklisteInteraction_click(eventLabel: string) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'interaction_wishlist',\r\n eventLabel: eventLabel,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', 'interaction_wishlist' + '/' + eventLabel, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nexport function MerklisteKarusellInViewTracking() {\r\n trackGooglePromotionEvent_view('all_merklisten_static');\r\n}\r\n\r\nexport function MerklisteKarusellProductClickedTracking() {\r\n trackGooglePromotionEvent_click('all_merklisten_static');\r\n}\r\n\r\nexport function trackNaviEvent_click(eventName: string) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'navigation data',\r\n eventAction: 'navigation_click',\r\n eventLabel: eventName,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['navigation data', 'navigation_click' + '/' + eventName, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nexport function loginTracking(pageType: string, loggedInResult: string) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n if (pageType.includes('meine-daten')) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'login_meine-daten',\r\n eventLabel: loggedInResult == 'failed' ? 'login_failed' : 'login_success',\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: [\r\n 'user data',\r\n 'login_meine-daten' + '/' + (loggedInResult == 'failed' ? 'login_failed' : 'login_success'),\r\n 0,\r\n 'd',\r\n ],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n } else {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'login_checkout',\r\n eventLabel: loggedInResult == 'failed' ? 'login_failed' : 'login_success',\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: [\r\n 'user data',\r\n 'login_checkout' + '/' + (loggedInResult == 'failed' ? 'login_failed' : 'login_success'),\r\n 0,\r\n 'd',\r\n ],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n }\r\n Cookies.remove('LoggedInPageType');\r\n Cookies.remove('LoggedInResult');\r\n } else {\r\n setTimeout(loginTracking.bind(null, pageType, loggedInResult), 100);\r\n }\r\n}\r\n\r\nexport function pushTrboId(eId: string) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n _trboq = _trboq || [];\r\n _trboq.push([\r\n 'dataMatching',\r\n {\r\n external_user_id: eId,\r\n },\r\n ]);\r\n } else {\r\n setTimeout(pushTrboId.bind(null, eId), 100);\r\n }\r\n}\r\n\r\nexport function trackIdLayerComplete(hId: string, hMail: string, hKid: string) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n dataLayer.push({\r\n event: 'idLayer_complete_login',\r\n externalIdHash: hId,\r\n emailHash: hMail,\r\n kupCustomerNumberHash: hKid,\r\n });\r\n } else {\r\n setTimeout(trackIdLayerComplete.bind(null, hId, hMail, hKid), 100);\r\n }\r\n}\r\n\r\nexport function trackIdLayerReduced(hMail: string, eventName: string) {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n dataLayer.push({\r\n event: eventName,\r\n emailHash: hMail,\r\n });\r\n } else {\r\n setTimeout(trackIdLayerReduced.bind(null, hMail, eventName), 100);\r\n }\r\n}\r\n\r\nexport function trackNewsletterRegisterEvent(eventName: string) {\r\n if (eventName) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'newsletter_registrierung',\r\n eventLabel: eventName,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', 'newsletter_registrierung' + '/' + eventName, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport function tracking_eecPromotionview() {\r\n const promotionElements = $('.googleTracking.promotionTracking:not(.promoted)');\r\n promotionElements.each(function() {\r\n if (IsVisibleElement(this)) {\r\n const trackingParam = $(this).data('trackingevent');\r\n if (trackingParam) {\r\n trackGooglePromotionEvent_view(trackingParam);\r\n }\r\n $(this).addClass('promoted');\r\n }\r\n });\r\n\r\n trboPromotionViewTracking();\r\n}\r\n\r\nfunction trboPromotionViewTracking() {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n const promotionTrboElements = $('.trboPromotionTracking:not(.promoted)');\r\n promotionTrboElements.each(function() {\r\n if (IsVisibleElement(this)) {\r\n const moduleId = $(this).data('moduleid');\r\n const moduleName = $(this).data('modulename');\r\n const campaignId = $(this).data('campaignid');\r\n const campaignName = $(this).data('campaignname');\r\n const usertype = $(this).data('usertype');\r\n\r\n if (window['_trboq'] !== undefined && window['_trbo'] !== undefined) {\r\n _trboq.push(['layerView', { moduleId: moduleId, campaignId: campaignId }]);\r\n _trbo.app.tracker.trackExternalView(usertype, campaignId, campaignName, moduleId, moduleName);\r\n $(this).addClass('promoted');\r\n }\r\n }\r\n });\r\n } else {\r\n setTimeout(trboPromotionViewTracking, 100);\r\n }\r\n}\r\n\r\nexport function trackExternalBasketClick(productId: number, eventLabel: string, eventAction: string) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'product data',\r\n eventAction: eventAction,\r\n eventLabel: `${eventLabel}_${productId}`,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['product data', 'newsletter_registrierung' + '/' + `${eventLabel}_${productId}`, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nexport function trackPrefixNameProblem() {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: 'interaction_forms',\r\n eventLabel: 'problem_name-prefix',\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', 'interaction_forms' + '/' + 'problem_name-prefix', 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nexport function trackLageRegistrationAccount(action: string, label: string) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'user data',\r\n eventAction: action,\r\n eventLabel: label,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['user data', action + '/' + label, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nexport function searchResultClickTracking(searchQuery: string) {\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n icampc: [[searchQuery ? `Suchergebnis/${searchQuery}` : 'Suchergebnis']],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n\r\nfunction IsVisibleElement(element) {\r\n if ($(element).hasClass('hide')) {\r\n return false;\r\n }\r\n var top_of_element = $(element).offset().top;\r\n var bottom_of_element = $(element).offset().top + $(element).outerHeight();\r\n var top_of_screen = $(window).scrollTop();\r\n var bottom_of_screen = top_of_screen + windowHeight;\r\n\r\n if (bottom_of_screen > top_of_element && top_of_screen < bottom_of_element) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n","import request = require('request');\r\nimport { DummyImageSize } from '../Shared/Models/DummyImageSizeEnum';\r\nimport { IAvailabilityStatus } from './Models/AvailabilityStatus';\r\nimport { IDRMMapping } from './Models/DRMMapping';\r\nimport { StandardLink } from '../Produktdetails/Models/StandardLink';\r\n\r\n/**\r\n * Holt den availabilityStatus zur übergebenen Id\r\n * @param availabilityStatusId\r\n */\r\nexport function getAvailabilityStatus(availabilityStatusId: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n var storedAvailabilityStatusList = JSON.parse(\r\n sessionStorage.getItem('availabilityStatusList')\r\n ) as IAvailabilityStatus[];\r\n if (storedAvailabilityStatusList) {\r\n resolve(storedAvailabilityStatusList.filter(x => x.id == availabilityStatusId)[0].text);\r\n } else {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: '/Umbraco/api/Settings/GetAvailabilityStatusList',\r\n success: (availabilityStatusList: IAvailabilityStatus[]) => {\r\n sessionStorage.setItem('availabilityStatusList', JSON.stringify(availabilityStatusList));\r\n resolve(availabilityStatusList.filter(x => x.id == availabilityStatusId)[0].text);\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Holt die DRM-Info zur übergebenen Id\r\n * @param availabilityStatusId\r\n */\r\nexport function getDRMInfo(drmId: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n var drmMapping = JSON.parse(sessionStorage.getItem('drmMapping')) as IDRMMapping[];\r\n if (drmMapping) {\r\n let drmMappingItem = drmMapping.filter(x => x.DRmid == drmId)[0];\r\n if (drmMappingItem) {\r\n resolve(drmMappingItem.AnzeigeText);\r\n }\r\n resolve(null);\r\n } else {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: '/Umbraco/api/Settings/GetDRMMapping',\r\n success: (drmMapping: IDRMMapping[]) => {\r\n sessionStorage.setItem('drmMapping', JSON.stringify(drmMapping));\r\n let drmMappingItem = drmMapping.filter(x => x.DRmid == drmId)[0];\r\n if (drmMappingItem) {\r\n resolve(drmMappingItem.AnzeigeText);\r\n }\r\n resolve(null);\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Holt den Link zu den Systemanforderungen (In Umbraco hinterlegt)\r\n * @param availabilityStatusId\r\n */\r\nexport function getSystemanforderungenLink(): Promise {\r\n return new Promise((resolve, reject) => {\r\n var systemanforderungenLink = JSON.parse(sessionStorage.getItem('systemanforderungenLink')) as StandardLink;\r\n if (systemanforderungenLink) {\r\n resolve(systemanforderungenLink);\r\n } else {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: '/Umbraco/api/Settings/GetSystemanforderungenLink',\r\n success: (systemanforderungenLink: StandardLink) => {\r\n sessionStorage.setItem('systemanforderungenLink', JSON.stringify(systemanforderungenLink));\r\n resolve(systemanforderungenLink);\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Checkt, ob die übergene availabilityStatusId lieferbar ist oder nicht\r\n * @param availabilityStatusId\r\n */\r\nexport function checkAvailabilityStatus(availabilityStatusId: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n var storedOrderableAvailabilityStatusList = JSON.parse(\r\n sessionStorage.getItem('orderableAvailabilityStatusList')\r\n ) as number[];\r\n if (storedOrderableAvailabilityStatusList) {\r\n resolve(storedOrderableAvailabilityStatusList.some(x => x == availabilityStatusId));\r\n } else {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: '/Umbraco/api/Settings/GetOrderableAvailabilityStatusList',\r\n success: (orderableAvailabilityStatusList: number[]) => {\r\n sessionStorage.setItem(\r\n 'orderableAvailabilityStatusList',\r\n JSON.stringify(orderableAvailabilityStatusList)\r\n );\r\n resolve(orderableAvailabilityStatusList.includes(availabilityStatusId));\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Holt die AdditionalPriceInfo zu dem Deliverytype. Daten sind in Backend Pflegbar\r\n * @param availabilityStatusId\r\n */\r\nexport function getAdditionalPriceInfoByDelivertypeId(deliverytypeId: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n let priceinfo = sessionStorage.getItem('priceinfo_' + deliverytypeId) as string;\r\n if (priceinfo) {\r\n resolve(priceinfo);\r\n } else {\r\n $.ajax({\r\n method: 'GET',\r\n url: '/Umbraco/api/Settings/GetAdditionalPriceInfoByDelivertypeId?deliverytypeId=' + deliverytypeId,\r\n success: (priceinfo: any) => {\r\n sessionStorage.setItem('priceinfo_' + deliverytypeId, priceinfo);\r\n resolve(priceinfo);\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Holt die AdditionalPriceInfo zu dem Deliverytype. Daten sind in Backend Pflegbar\r\n * @param availabilityStatusId\r\n */\r\nexport function getBreadcrumbByTocId(tocId: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!tocId) {\r\n resolve('Produkt ohne Kategorie');\r\n }\r\n let breadcrumb = sessionStorage.getItem('breadcrumb_' + tocId) as string;\r\n if (breadcrumb) {\r\n resolve(breadcrumb);\r\n } else {\r\n $.ajax({\r\n method: 'GET',\r\n url: '/Umbraco/api/Settings/GetBreadcrumbByTocId?tocId=' + tocId,\r\n success: (breadcrumb: string) => {\r\n sessionStorage.setItem('breadcrumb_' + tocId, breadcrumb);\r\n resolve(breadcrumb);\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Baut den Link zu einem Produktbild zusammen.\r\n * @param productId\r\n * @param width\r\n * @param height\r\n */\r\nexport function getImagePath(productId: number, width: number = -1, height: number = -1): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url:\r\n '/Umbraco/api/ImageServerApi/GetImageUrl?productId=' +\r\n productId +\r\n '&width=' +\r\n width +\r\n '&height=' +\r\n height,\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * gibt den Pfad des Dummybildes passend zur übergebenen Größe zurück\r\n * @param imageSize\r\n */\r\nexport function getDummyImage(imageSize: DummyImageSize): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: '/Umbraco/api/ImageServerApi/GetDummyImage?imageSize=' + imageSize,\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: () => {\r\n reject();\r\n },\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * gilt für Factfinder-Produkte\r\n * @param product\r\n */\r\nexport function showBezugsartOverlay(product): boolean {\r\n return (\r\n product.DeliveryTypeID == '5' &&\r\n product.Bruttopreis != null &&\r\n product.PreisvariantenMerkmal == 'false' &&\r\n product.Urheberzeile != null &&\r\n (product.Verlag == 'C.H.BECK' || product.Verlag == 'Vahlen')\r\n );\r\n}\r\n","import { recaptchaCallbackGuest } from '../Checkout/checkoutStep3Gast';\r\n\r\ndeclare var UC_UI: any;\r\ndeclare var grecaptcha: any;\r\n\r\nexport const recaptchaId = 'Hko_qNsui-Q';\r\nconst googleMapsId = 'S1pcEj_jZX';\r\nconst youtubeId = 'BJz7qNsdj-7';\r\nconst yumpuId = '6LdBYXdAl';\r\nconst trboId = 'ryxCCtrEX';\r\nconst podigeeId = 'nhLMP6qX';\r\n\r\nconst createPlaceholderHtml = (templateId: string): string => {\r\n return `\r\n
\r\n

Wir benötigen Ihre Zustimmung, um einen Service zu laden!

\r\n

\r\n Wir verwenden an dieser Stelle einen Service, um Inhalte einzubetten. \r\n Dieser Service kann Daten zu Ihren Aktivitäten sammeln. Bitte lesen Sie die Details durch und stimmen Sie der Nutzung des Service zu, um diese Inhalte anzuzeigen.\r\n

\r\n Zustimmen\r\n Mehr Informationen\r\n
`;\r\n};\r\n\r\nconst checkForYouTubeIframe = (iframe: HTMLElement, youTubeAllowed: boolean) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && ucSrc.indexOf('youtube') !== -1) {\r\n if (youTubeAllowed) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n } else {\r\n const parent = $(iframe).parent();\r\n $(createPlaceholderHtml(youtubeId)).insertAfter(iframe);\r\n $(iframe).hide();\r\n }\r\n }\r\n};\r\n\r\nconst checkForGoogleMapsIframe = (iframe: HTMLElement, googleMapsAllowed: boolean) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && ucSrc.indexOf('google.com/maps') !== -1) {\r\n if (googleMapsAllowed) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n } else {\r\n const parent = $(iframe).parent();\r\n $(createPlaceholderHtml(googleMapsId)).insertAfter(iframe);\r\n $(iframe).hide();\r\n }\r\n }\r\n};\r\n\r\nconst checkForYumpuIframe = (iframe: HTMLElement, yumpuAllowed: boolean) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && (ucSrc.indexOf('yumpu') !== -1 || ucSrc.indexOf('neuheiten.beck') !== -1)) {\r\n if (yumpuAllowed) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n } else {\r\n const parent = $(iframe).parent();\r\n $(createPlaceholderHtml(yumpuId)).insertAfter(iframe);\r\n $(iframe).hide();\r\n }\r\n }\r\n};\r\n\r\nconst checkForPodigeeIframe = (iframe: HTMLElement, podigeeAllowed: boolean) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && ucSrc.indexOf('podigee') !== -1) {\r\n if (podigeeAllowed) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n } else {\r\n const parent = $(iframe).parent();\r\n $(createPlaceholderHtml(podigeeId)).insertAfter(iframe);\r\n $(iframe).hide();\r\n }\r\n }\r\n};\r\n\r\nexport const checkForRecaptcha = (recaptchaAllowed: boolean, lazy: boolean = false, containerClass: string = null) => {\r\n let className = lazy ? '.g-recaptcha-uc-lazy' : '.g-recaptcha-uc';\r\n if (containerClass) {\r\n className = containerClass;\r\n }\r\n if (!recaptchaAllowed) {\r\n $(className).each(function() {\r\n $(this).empty();\r\n $(this).html(createPlaceholderHtml(recaptchaId));\r\n });\r\n } else {\r\n try {\r\n grecaptcha.ready(function() {\r\n $(className).each(function() {\r\n try {\r\n const sitekey = $(this).data('sitekey');\r\n const ccGuestCallback = $(this).data('cc-guest-callback');\r\n let widgetId = grecaptcha.render(this, {\r\n sitekey: sitekey,\r\n callback: ccGuestCallback === true ? recaptchaCallbackGuest : null,\r\n });\r\n $(this).data('widget', widgetId);\r\n } catch {}\r\n });\r\n });\r\n } catch {}\r\n }\r\n};\r\n\r\nconst showGoogleMapsIframe = (iframe: HTMLElement) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && ucSrc.indexOf('google.com/maps') !== -1) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n $(iframe).show();\r\n $('.' + googleMapsId).remove();\r\n }\r\n};\r\n\r\nconst showYoutubeIframe = (iframe: HTMLElement) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && ucSrc.indexOf('youtube') !== -1) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n $(iframe).show();\r\n $('.' + youtubeId).remove();\r\n }\r\n};\r\n\r\nconst showYumpuIframe = (iframe: HTMLElement) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && (ucSrc.indexOf('yumpu') !== -1 || ucSrc.indexOf('neuheiten.beck') !== -1)) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n $(iframe).show();\r\n $('.' + yumpuId).remove();\r\n }\r\n};\r\n\r\nconst showPodigeeIframe = (iframe: HTMLElement) => {\r\n const ucSrc = $(iframe).attr('uc-src');\r\n if (ucSrc && ucSrc.indexOf('podigee') !== -1) {\r\n $(iframe).attr('src', $(iframe).attr('uc-src'));\r\n $(iframe).show();\r\n $('.' + podigeeId).remove();\r\n }\r\n};\r\n\r\nconst showrecaptcha = (lazy: boolean = false) => {\r\n const className = lazy ? '.g-recaptcha-uc-lazy' : '.g-recaptcha-uc';\r\n $('.' + recaptchaId).remove();\r\n try {\r\n $(className).each(function() {\r\n const sitekey = $(this).data('sitekey');\r\n const ccGuestCallback = $(this).data('cc-guest-callback');\r\n let widgetId = grecaptcha.render(this, {\r\n sitekey: sitekey,\r\n callback: ccGuestCallback === true ? recaptchaCallbackGuest : null,\r\n });\r\n $(this).data('widget', widgetId);\r\n });\r\n } catch {}\r\n};\r\n\r\nconst initUserCentrics = () => {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n const youTubeAllowed = UC_UI.getServicesBaseInfo().find(service => service.id === youtubeId).consent.status;\r\n const googleMapsAllowed = UC_UI.getServicesBaseInfo().find(service => service.id === googleMapsId).consent\r\n .status;\r\n const recaptchaAllowed = UC_UI.getServicesBaseInfo().find(service => service.id === recaptchaId).consent.status;\r\n const yumpuAllowed = UC_UI.getServicesBaseInfo().find(service => service.id === yumpuId).consent.status;\r\n const podigeeAllowed = UC_UI.getServicesBaseInfo().find(service => service.id === podigeeId).consent.status;\r\n const iframes = $('iframe');\r\n iframes.each(function() {\r\n checkForYouTubeIframe(this, youTubeAllowed);\r\n checkForGoogleMapsIframe(this, googleMapsAllowed);\r\n checkForYumpuIframe(this, yumpuAllowed);\r\n checkForPodigeeIframe(this, podigeeAllowed);\r\n });\r\n\r\n checkForRecaptcha(recaptchaAllowed);\r\n } else {\r\n console.log('waiting for usercentrics');\r\n setTimeout(initUserCentrics, 100);\r\n }\r\n};\r\n\r\n$(() => {\r\n initUserCentrics();\r\n});\r\n\r\nexport const isTrboAllowed = () => {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n return UC_UI.getServicesBaseInfo().find(service => service.id === trboId).consent.status;\r\n } else {\r\n return false;\r\n }\r\n};\r\n\r\nwindow.addEventListener('onConsentChanged', function(e: any) {\r\n if (e.detail.event === 'consent_status' && e.detail['Google Maps']) {\r\n $('iframe').each(function() {\r\n showGoogleMapsIframe(this);\r\n });\r\n }\r\n if (e.detail.event === 'consent_status' && e.detail['YouTube Video']) {\r\n $('iframe').each(function() {\r\n showYoutubeIframe(this);\r\n });\r\n }\r\n if (e.detail.event === 'consent_status' && e.detail['yumpu']) {\r\n $('iframe').each(function() {\r\n showYumpuIframe(this);\r\n });\r\n }\r\n if (e.detail.event === 'consent_status' && e.detail['Podigee']) {\r\n $('iframe').each(function() {\r\n showPodigeeIframe(this);\r\n });\r\n }\r\n if (e.detail.event === 'consent_status' && e.detail['reCAPTCHA']) {\r\n showrecaptcha();\r\n if (e.detail.action === 'onUpdateServices') {\r\n showrecaptcha(true);\r\n }\r\n }\r\n});\r\n","//\r\n//console.log(\"JS functions are here\");\r\n//\r\nimport { closeAlert } from '../Typescript/Shared/AlertHelper';\r\nwindow.closeAlert = function (element, doNotShowAgain) {\r\n closeAlert(element, doNotShowAgain);\r\n};\r\nrequire('jquery-slimscroll');\r\n\r\nwindow.onscroll = function () { scrollFunction() };\r\n\r\nfunction scrollFunction() {\r\n if (document.getElementById(\"backToTop\")) {\r\n if (document.body.scrollTop > 320 || document.documentElement.scrollTop > 320) {\r\n document.getElementById(\"backToTop\").style.display = \"block\";\r\n } else {\r\n document.getElementById(\"backToTop\").style.display = \"none\";\r\n }\r\n }\r\n}\r\n\r\n// When the user clicks on the button, scroll to the top of the document\r\nfunction topFunction() {\r\n document.body.scrollTop = 0;\r\n document.documentElement.scrollTop = 0;\r\n}\r\n\r\n/**/\r\n\r\n\r\n/**/\r\n\r\n/*FUNCTIONS*/\r\n$(document).ready(function () {\r\n /*GENERAL-FUNCTIONS*/\r\n //$(\".warenkorbImage\").attr('src', '../assets/warenkorb_white.svg');\r\n $.fn.switchChevron = function (cElement, cName01, cName02) {\r\n //console.log(\"Element: \" + cElement + \"; Class Name 01: \" + cName01 + \"; Class Name 02: \" + cName02 + \";\");\r\n if ($(cElement).hasClass(\"\" + cName01 + \"\")) {\r\n $(cElement).removeClass(\"\" + cName01 + \"\").addClass(\"\" + cName02 + \"\");\r\n } else {\r\n $(cElement).removeClass(\"\" + cName02 + \"\").addClass(\"\" + cName01 + \"\");\r\n }\r\n }\r\n /*fill search field with used term*/\r\n var usedSearchTerm = $('input#sucheQuery').val();\r\n $(\"#SearchTerm\").val(usedSearchTerm);\r\n showDeleteQueryButton(usedSearchTerm);\r\n\r\n\r\n $(\"body\").on(\"click\", \".preventEL,.disabled-Element\",\r\n function (event) {\r\n event.preventDefault();\r\n });\r\n\r\n /*MOBILE-NAV*/\r\n $(\"#mobileNavCtrl\").click(function () {\r\n $(\"#mobMenu\").css(\"width\", \"100%\");\r\n $(\".mobileModal\").css(\"display\", \"block\");\r\n });\r\n $(\"#mobMenu .closebtn\").click(function () {\r\n $(\"#mobMenu\").css(\"width\", \"0\");\r\n $(\".mobileModal\").css(\"display\", \"none\");\r\n });\r\n\r\n $(\".showMoreSubjects\").click(function () {\r\n CloseDropDownWindows($(this));\r\n var changeCurIcon = $(this).children(\"i.fa\");\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n if ($(this).next(\".moreSubjects\").length > 0) {\r\n $(this).next(\".moreSubjects\").slideToggle(0);\r\n } else {\r\n $(this).next(\".moreSubjectsTestContainer\").slideToggle(0);\r\n }\r\n });\r\n\r\n function CloseDropDownWindows(e) {\r\n var container_02 = $(\".showMoreSubjects\");\r\n if (!container_02.is(e.target) && container_02.has(e.target).length === 0) {\r\n //container_02.hide();\r\n var changeCurIcon = $(container_02).children(\"i.fa\");\r\n if ($(changeCurIcon).hasClass(\"fa-angle-up\")) {\r\n $(changeCurIcon)\r\n .removeClass(\"fa-angle-up\")\r\n .addClass(\"fa-angle-down\");\r\n $(\".moreSubjects\").hide(0);\r\n $(\".moreSubjectsTestContainer\").hide(0);\r\n }\r\n }\r\n }\r\n\r\n /**/\r\n $(\".mobile-caps-menu\").ready(function () {\r\n $(\".sideBarBody ul\").each(function () {\r\n if ($(this).hasClass(\"mobSubMenu\")) {\r\n var prevEl = $(this).prev(\".wrapper\").children(\"a.mobNavLink\").children(\".txt\");\r\n //$(\"\").insertAfter(prevEl);\r\n //\r\n $(\"\").insertAfter(prevEl);\r\n }\r\n });\r\n mobileFunctions(this);\r\n });\r\n //$(\".bereichsseiteNav .categorie > p\").click(function () {\r\n // $(\".bereichsseiteNav .categorie\").each(function () {\r\n // var changeCurIcon = $(this).children(\"p\").children(\"i.fa\");\r\n // if ($(changeCurIcon).hasClass(\"fa-angle-up\")) {\r\n // $(changeCurIcon).removeClass(\"fa-angle-up\").addClass(\"fa-angle-down\");\r\n // }\r\n // $(this).children(\"ul.catSub\").hide(0);\r\n // });\r\n // var changeCurIcon = $(this).children(\"i.fa\");\r\n // if ($(changeCurIcon).hasClass(\"fa-angle-down\")) {\r\n // $(changeCurIcon).removeClass(\"fa-angle-down\").addClass(\"fa-angle-up\");\r\n // }\r\n // $(this).next(\"ul.catSub\").show(0);\r\n //});\r\n //test\r\n $(\".bereichsseiteNav .categorie > p\").click(function () {\r\n var changeCurIcon = $(this).children(\"i.fa\");\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n $(this).next(\"ul.catSub\").slideToggle(0);\r\n });\r\n //test\r\n /**/\r\n\r\n /*Category Page Menue*/\r\n $(\".categorySubMenu li\").click(function () {\r\n\r\n $(this).toggleClass(\"selected\");\r\n });\r\n //categoryPage\r\n $(\".areaSideNav .searchResult-filter-menue\").ready(function () {\r\n $(\".categorySubMenu li\").each(function () {\r\n if ($(this).hasClass(\"selected\")) {\r\n $(this).parent(\".categorySubMenu\").addClass(\"active\");\r\n var changeCurIcon = $(this).parent(\".categorySubMenu\").parent(\".categorie\").children(\"p\").children(\"i.fa\");\r\n //$.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n if ($(changeCurIcon).hasClass(\"fa-angle-down\")) {\r\n $(changeCurIcon).removeClass(\"fa-angle-down\").addClass(\"fa-angle-up\");\r\n }\r\n }\r\n });\r\n });\r\n \r\n /*CHECKOUT-PROCESS-FNS*/\r\n $(\".add-data-section .data-trigger\").click(function () {\r\n var changeCurIcon = $(this).children(\"i.fa\");\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n $(this).next(\".addtional-data\").slideToggle();\r\n });\r\n\r\n $(\".m-close\").click(function (event) {\r\n event.preventDefault();\r\n $(\"body\").removeClass(\"modal-open\");\r\n $(\"#modal-bg-layover\").hide();\r\n $(this).parents(\".basket-modal\").hide();\r\n $(this).parents(\".basket-modal\").removeClass(\"in\");\r\n });\r\n\r\n $(\".data-acc-trigger\").click(function (event) {\r\n event.preventDefault();\r\n if ($(window).width() < 992) {\r\n var changeCurIcon = $(this).find(\"i.fa\");\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n $(this).children(\".heading\").toggleClass(\"active\");\r\n $(this).next(\".data-acc-section\").slideToggle();\r\n }\r\n });\r\n /*TOOLTIP*/\r\n $(\"body\").on(\"click\", \".chb-tooltip\", function (event) {\r\n event.preventDefault();\r\n var windowWidth = $(window).width();\r\n var ttDataTarget = $(this).attr(\"data-target\");\r\n if (windowWidth < 801 && ttDataTarget) {\r\n $(\"body\").addClass(\"modal-open\");\r\n $(\"#modal-bg-layover\").show();\r\n $(ttDataTarget).show();\r\n }\r\n });\r\n $(\"body\").on(\"click\", \".my-account-menu\", function () {\r\n event.preventDefault();\r\n var windowWidth = $(window).width();\r\n if (windowWidth > 801) {\r\n if ($(this).hasClass('active')) {\r\n $('.my-account-menu').removeClass('active');\r\n $('.my-account-menu-bubble').removeClass('active');\r\n } else {\r\n $('.my-account-menu').addClass('active');\r\n $('.my-account-menu-bubble').addClass('active');\r\n }\r\n }\r\n });\r\n /**/\r\n $(\".hideContent\").each(function () {\r\n $(this).hide(0);\r\n });\r\n\r\n $(\"#edit-existing-account\").click(function (event) {\r\n event.preventDefault();\r\n $(\"#mm-content-01\").find(\".link\").hide();\r\n $(\"#mm-content-01\").next(\".min-max-content\").removeClass(\"hideContent\").slideDown();\r\n $(\"#mm-content-02\").next(\".min-max-content\").removeClass(\"hideContent\").slideUp();\r\n $(\"#mm-content-03\").next(\".min-max-content\").removeClass(\"hideContent\").slideUp();\r\n });\r\n /*ACCORDION*/\r\n //$(\".acc-trigger\").click(function () {\r\n // var currentEl = $(this).next(\".accordion-content\");\r\n // $(this).parents(\".accordion-wrapper\").find(\"*.accordion-content\").not(currentEl).slideUp(300);\r\n // $(currentEl).slideDown(300);\r\n //});\r\n\r\n $(\"body\").on(\"click\", \".acc-trigger\", function () {\r\n var currentEl = $(this).next(\".accordion-content\");\r\n $(this).parents(\".accordion-wrapper\").find(\"*.accordion-content\").not(currentEl).slideUp(300);\r\n $(currentEl).slideDown(300);\r\n });\r\n /**/\r\n $(\"body\").on(\"click\", \".blend-all-collapsibles\", (function () {\r\n $(this).find(\".content\").each(function () {\r\n $(this).toggleClass(\"el-hidden\");\r\n });\r\n //\r\n $(this).parents(\".mm-wrapper\").find(\".wr-collapsible\").each(function () {\r\n $(this).slideToggle(\"fast\");\r\n });\r\n }));\r\n /**/\r\n $(\".footerSmallNavi p.footerheading\").click(function () {\r\n var changeCurIcon = $(this).children(\"i.fa\");\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n $(this).next(\"ul\").slideToggle(0);\r\n //console.log($(this).next());\r\n });\r\n /*ICON-COLOR-ON-HOVER*/\r\n //$(window).on(\"load\", function () {\r\n\r\n //$(\".svgIconObj\").contents().find(\"svg\").each(function () {\r\n // console.log(\"sljdfhlsjdnv\");\r\n // $(this).mouseenter(function () {\r\n // console.log(\"mouseenter\");\r\n // //$(this).find(\"circle.bgcircle\").css(\"fill\", \"#7f223e\");\r\n // $(this).find(\"path\").css(\"fill\", \"#bd0006\");\r\n // });\r\n // $(this).mouseleave(function () {\r\n // console.log(\"mouseleave\");\r\n // //$(this).find(\"circle.bgcircle\").css(\"fill\", \"#fff\");\r\n // $(this).find(\"path\").css(\"fill\", \"#282837\");\r\n // });\r\n //});\r\n //$(\".actionItem\").mouseenter(function () {\r\n // var iconObject = $(this).find(\".svgIconObj\");\r\n\r\n // $(iconObject).contents().find(\"svg\").each(function () {\r\n // console.log($(this));\r\n // //$(this).css({ \"cursor\": \"pointer\", \"backgroundColor\": \"#7f223e\" });\r\n // $(this).find(\"path\").css(\"fill\", \"#d00007\");\r\n // $(this).find(\"g path\").css(\"fill\", \"#d00007\");\r\n // });\r\n //});\r\n //$(\".actionItem\").mouseleave(function () {\r\n // var iconObject = $(this).find(\".svgIconObj\");\r\n // console.log(\"mouseleave\");\r\n // $(iconObject).contents().find(\"svg\").each(function () {\r\n // //$(this).css({ \"cursor\": \"default\", \"backgroundColor\": \"rgba(0,0,0,0)\" });\r\n // $(this).find(\"path\").css(\"fill\", \"#282837\");\r\n // });\r\n //});\r\n //});\r\n /*PRODUCT-DETAILS*/\r\n $(document).ready(function () {\r\n // Configure/customize these variables.\r\n var showChar = 50; // How many characters are shown by default\r\n var ellipsestext = \"...\";\r\n var moretext = \" mehr \";\r\n var lesstext = \" weniger \";\r\n\r\n\r\n $('.more').each(function () {\r\n var content = $(this).html();\r\n\r\n if (content.length > showChar) {\r\n\r\n var c = content.substr(0, showChar);\r\n var h = content.substr(showChar, content.length - showChar);\r\n\r\n var html = c + '' + ellipsestext + ' ' + h + '  ' + moretext + '';\r\n\r\n $(this).html(html);\r\n }\r\n\r\n });\r\n\r\n $(\".morelink\").click(function () {\r\n if ($(this).hasClass(\"less\")) {\r\n $(this).removeClass(\"less\");\r\n $(this).html(moretext);\r\n } else {\r\n $(this).addClass(\"less\");\r\n $(this).html(lesstext);\r\n }\r\n $(this).parent().prev().toggle();\r\n $(this).prev().toggle();\r\n return false;\r\n });\r\n\r\n\r\n });\r\n //---MORE-LESS-VERSION-2\r\n // Hide the extra content initially, using JS so that if JS is disabled, no problemo:\r\n $('.read-more-content').addClass('hide')\r\n $('.read-more-show, .read-more-hide').removeClass('hide')\r\n\r\n // Set up the toggle effect:\r\n $('.read-more-show').on('click', function (e) {\r\n $(this).next('.read-more-content').removeClass('hide');\r\n $(this).addClass('hide');\r\n e.preventDefault();\r\n });\r\n\r\n // Changes contributed by @diego-rzg\r\n $('.read-more-hide').on('click', function (e) {\r\n var p = $(this).parent('.read-more-content');\r\n p.addClass('hide');\r\n p.prev('.read-more-show').removeClass('hide'); // Hide only the preceding \"Read More\"\r\n e.preventDefault();\r\n });\r\n\r\n\r\n /**/\r\n /*ACCORDEON*/\r\n $('.expand').click(function () {\r\n var changeCurIcon = $(this).children(\"i.fa\");\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-right\", \"fa-angle-down\");\r\n $(this).next(\".expandContent\").slideToggle(0);\r\n });\r\n $(function () {\r\n $(\".accordeonExp\").on(\"click\", function () {\r\n $(this).next().slideToggle(0);\r\n //$expand = $(this).find(\">:first-child\");\r\n $expand = $(this).children(\".right-arrow\").children(\"i.fa\");\r\n $.fn.switchChevron($expand, \"fa-angle-down\", \"fa-angle-up\");\r\n //if ($expand.text() == \"\") {\r\n // $expand.text(\"\");\r\n //} else {\r\n // $expand.text(\"\");\r\n //}\r\n if ($expand) {\r\n\r\n } else {\r\n\r\n }\r\n });\r\n });\r\n /**/\r\n $(\".productDetailView .options .switcher\").click(function () {\r\n //var currentElement = $(this);\r\n $(\".switcher\").each(function () {\r\n var iconEl = $(this).children(\"div\").children(\"h3\").children(\".at\").children(\"i.fa\");\r\n if ($(iconEl).hasClass(\"fa-angle-up\")) {\r\n $(iconEl).removeClass(\"fa-angle-up\").addClass(\"fa-angle-down\");\r\n $(this).children(\".item-content\").slideToggle(0);\r\n $(this).toggleClass(\"active\");\r\n }\r\n\r\n });\r\n\r\n var changeCurIcon = $(this).find(\".at\").children(\"i.fa\");\r\n if (changeCurIcon.length === 0) {\r\n return;\r\n }\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n $(this).children(\".item-content\").slideToggle(0);\r\n $(this).toggleClass(\"active\");\r\n\r\n //andere navis einklappen\r\n //var otherNavis = $(\".switcher\").not(this);\r\n //$(otherNavis).find(\"i.fa\").removeClass(\"fa-angle-up\").addClass(\"fa-angle-down\");\r\n //$(otherNavis).find(\".catSub\").hide();\r\n\r\n });\r\n $(\".tab-switcher-mobile\").click(function () {\r\n var openedTab = $(this);\r\n var currentID = $(this).next(\".tab-pane\").attr(\"id\");\r\n var changeCurIcon = $(this).children(\"a\").children(\"i.fa\");\r\n var allTabIcons = $(\".tab-switcher-mobile\").children(\"a\").children(\"i.fa\");\r\n //$.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n var tabPane = $(this).next(\".tab-pane\");\r\n //console.log(\"currentID: \" + currentID);\r\n if ($(tabPane).hasClass(\"active\")) {\r\n //console.log(\"tab-pane has class 'active'.\");\r\n\r\n } else {\r\n $(allTabIcons).each(function () {\r\n //$.fn.switchChevron($(this), , );\r\n $(this).removeClass(\"fa-angle-up\").addClass(\"fa-angle-down\");\r\n });\r\n $(\".tab-switcher-mobile\").each(function () {\r\n $(this).removeClass(\"open\");\r\n });\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n //$(openedTab).addClass(\"active\");\r\n }\r\n $(this).addClass(\"open\");\r\n var nav = $(\"#\" + currentID);\r\n //console.log(\"offset of '\" + currentID + \"': \" + $(nav).offset().top);\r\n //$('html, body').animate({\r\n // scrollTop: $(nav).offset().top\r\n //}, 2000);\r\n //$('html,body').animate({\r\n // scrollTop: $(currentID).offset().top\r\n //},\r\n //'slow');\r\n\r\n });\r\n\r\n /*POP-OVERS*/\r\n\r\n //$(\"#popover-filter-1\")\r\n\r\n $(\"a[data-role='popover-t1']\").click(function (event) {\r\n event.preventDefault();\r\n var getID = $(this).attr(\"data-target\");\r\n var windowWidth = $(window).width();\r\n var windowHeight = $(window).height();\r\n if (windowWidth < 1024) {\r\n $(\"#\" + getID).show(0);\r\n // $(\".popover-collapse\").hide(0);\r\n // $(getID).width(windowWidth).height(windowHeight).show(0);\r\n $(\"body\").addClass(\"noScroll\");\r\n\r\n }\r\n });\r\n $(\".popover-close\").click(function () {\r\n $(this).parent().parent().parent(\".popover-modal\").hide(0);\r\n $(\"body\").removeClass(\"noScroll\");\r\n });\r\n /*IE-FIX*/\r\n //var initialWinWidth = $(\".slider-section > .container\").width();\r\n //$(\".singleBanner .bannerItem\").css({ width: initialWinWidth });\r\n\r\n //Schneidet den Inhalt der Autorenfelder bei dem Produktkarussell nach dem letzten vom Platz her passenden Wort ab und erg�nz drei Punkte \r\n const allKarussellAuthorElements = $(\"[id^=produktkarussell] .author a\");\r\n Array.prototype.forEach.call(allKarussellAuthorElements,\r\n (authorElement) => { // Loop through each container\r\n var span = authorElement.getElementsByClassName(\"authorSpan\")[0];\r\n var a = authorElement.clientHeight;\r\n if (span) {\r\n while (span.offsetHeight > a) { // Check if the paragraph's height is taller than the container's height. If it is:\r\n span.textContent =\r\n span.textContent.replace(/\\W*\\s(\\S)*$/, '...'); // add an ellipsis at the last shown space\r\n }\r\n }\r\n\r\n });\r\n\r\n //Schneidet den Inhalt der Titel bei dem Produktkarussell nach dem letzten vom Platz her passenden Wort ab und erg�nz drei Punkte\r\n const allKarussellTitleElements = $(\"[id^=produktkarussell] .title a\");\r\n Array.prototype.forEach.call(allKarussellTitleElements,\r\n (titleElement) => { // Loop through each container\r\n var span = titleElement.getElementsByClassName(\"titleSpan\")[0];\r\n var a = titleElement.clientHeight;\r\n if (span) {\r\n while (span.offsetHeight > a) { // Check if the paragraph's height is taller than the container's height. If it is:\r\n span.textContent =\r\n span.textContent.replace(/\\W*\\s(\\S)*$/, '...'); // add an ellipsis at the last shown space\r\n }\r\n }\r\n\r\n });\r\n\r\n cutTextWholeWords();\r\n /**/\r\n /**/\r\n $(function () {\r\n naviSlimScroll();\r\n $(\".katNaviScroll\").each(function () {\r\n if ($(this).hasClass(\"active\")) {\r\n //$(this).parent(\".slimScrollDiv\").css(\"display\",\"block\");\r\n //console.log($(this).parent(\".slimScrollDiv\"));\r\n $(this).parent(\".slimScrollDiv\").css(\"display\", \"block\");\r\n //$(this).parent().addClass(\"test\");\r\n }\r\n });\r\n });\r\n});\r\n\r\n\r\nfunction showDeleteQueryButton(query) {\r\n if (query && query !== '') {\r\n $('.eraseSearchTerm').removeClass('hide');\r\n }\r\n}\r\nexport function setDummyImage(elem) {\r\n var placeholderUrl = location.protocol + \"//\" + location.hostname + \":\" + location.port + '/images/NoBook_tranparent.png';\r\n if (elem.src !== placeholderUrl) {\r\n elem.src = placeholderUrl;\r\n } else {\r\n elem.style.display = 'none';\r\n elem.onerror = null;\r\n }\r\n}\r\n\r\nexport function DelocaleString(x, sep, grp, dec) {\r\n //add decimals\r\n var y = x.toFixed(dec);\r\n //strip decimals\r\n var x_integer = y.split('.')[0];\r\n var x_fraction = y.split('.')[1];\r\n var x_fractionString = \"\";\r\n if (dec > 0) {\r\n x_fractionString = ',' + x_fraction;\r\n }\r\n var sx = ('' + x_integer).split('.'),\r\n s = '',\r\n i, j;\r\n sep || (sep = ' '); // default seperator\r\n grp || grp === 0 || (grp = 3); // default grouping\r\n i = sx[0].length;\r\n while (i > grp) {\r\n j = i - grp;\r\n s = sep + sx[0].slice(j, i) + s;\r\n i = j;\r\n }\r\n s = sx[0].slice(0, i) + s;\r\n sx[0] = s;\r\n return sx.join('.') + x_fractionString;\r\n}\r\n\r\nexport function mobileFunctions(doc) {\r\n\r\n $(\".sideBarBody ul\").each(function (i, el) {\r\n $(this).attr(\"level\", $(this).parents(\"ul\").length);\r\n });\r\n\r\n $(doc).find(\"ul.mobSubMenu\").prepend(\"

\");\r\n $(\".backLink\").each(function () {\r\n var parentMenuText = $(this).parent(\"ul\").parent(\"li\").children(\".wrapper\").children(\"a.mobNavLink\").text();\r\n $(this).next(\"p.parentNode\").text(parentMenuText);\r\n });\r\n\r\n $(\"a.mobNavLink\").click(function (event) {\r\n var currentParent = $(event.target).closest(\".sideBarBody\");\r\n /*in case of popover find poover header and hide it*/\r\n var findPopupHeader = $(this).closest(\".mobMenu\").parent(\".sideBarBody\").parents(\"div.popover-body \").prev(\".popover-header\");\r\n $(findPopupHeader).hide(0);\r\n /**/\r\n var getWrapper = $(this).parent(\".wrapper\");\r\n if ($(getWrapper).next(\"ul\").length > 0) {\r\n event.preventDefault();\r\n\r\n $(\".mobile-caps-menu ul\").each(function () {\r\n $(this).removeClass(\"currentM\");\r\n });\r\n var subUl = $(getWrapper).next(\"ul.mobSubMenu\");\r\n var getChildLevel = $(getWrapper).next(\"ul.mobSubMenu\").attr(\"level\");\r\n var getParentLevel = getChildLevel - 1;\r\n subUl.addClass(\"currentM\");\r\n if (subUl && !subUl.hasClass(\"open\")) {\r\n subUl.addClass(\"open\");\r\n currentParent.find(\"ul[level='\" + getParentLevel + \"']\").children(\"li\").children(\".wrapper\").hide(0);\r\n currentParent.find(\"ul[level='\" + getParentLevel + \"']\").children(\".backLink\").hide(0);\r\n currentParent.find(\"ul[level='\" + getParentLevel + \"']\").children(\".parentNode\").hide(0);\r\n currentParent.find(\"ul[level='\" + getChildLevel + \"']\").children(\".backLink\").show(0);\r\n\r\n subUl.animate({\r\n left: 0,\r\n opacity: 1.0\r\n }, 0, \"linear\");\r\n }\r\n }\r\n //$(\".mobile-caps-menu\").height($(\"ul.currentM\").height());\r\n });\r\n\r\n $(\".backLink\").click(function () {\r\n $(\".mobile-caps-menu ul\").each(function () {\r\n $(this).removeClass(\"currentM\");\r\n });\r\n\r\n var getChildLevel = $(this).parent(\"ul\").attr(\"level\");\r\n var getParentLevel = getChildLevel - 1;\r\n var grandParentLevel = getParentLevel - 1;\r\n $(this).parent(\"ul\").parent(\"li\").parent(\"ul\").addClass(\"currentM\");\r\n $(this).parent(\"ul.mobSubMenu\").removeClass(\"open\").animate({ left: \"100%\", opacity: 0.0 }, 0, \"linear\");\r\n\r\n $(this).hide();\r\n $(\"ul[level='\" + getParentLevel + \"']\").children(\".backLink\").show(0);\r\n $(\"ul[level='\" + getParentLevel + \"']\").children(\".parentNode\").show(0);\r\n $(\"ul[level='\" + getParentLevel + \"']\").children(\"li\").children(\".wrapper\").show(0);\r\n /*in case of popover find popover header and display it when link's parent level is 0*/\r\n if (getParentLevel == 0) {\r\n var findPopupHeader = $(this).closest(\".mobMenu\").parent(\".sideBarBody\").parents(\"div.popover-body \").prev(\".popover-header\");\r\n $(findPopupHeader).show(0);\r\n }\r\n });\r\n $(function () {\r\n naviSlimScroll();\r\n $(\".slimScrollDiv\").css(\"display\", \"none\");\r\n $(\".katNaviScroll\").each(function () {\r\n if ($(this).hasClass(\"active\")) {\r\n //$(this).parent(\".slimScrollDiv\").css(\"display\",\"block\");\r\n //console.log($(this).parent(\".slimScrollDiv\"));\r\n $(this).parent(\".slimScrollDiv\").css(\"display\", \"block\");\r\n //$(this).parent().addClass(\"test\");\r\n }\r\n });\r\n });\r\n\r\n $(\".searchResult-filter-menue .categorie > p\").click(function () {\r\n toggleCatMenu($(this.parentElement));\r\n });\r\n\r\n cutTextWholeWords();\r\n}\r\n\r\nfunction toggleCatMenu(doc) {\r\n var changeCurIcon = doc.children(\"p\").children(\"i.fa\");\r\n $.fn.switchChevron(changeCurIcon, \"fa-angle-down\", \"fa-angle-up\");\r\n if (doc.children(\"p\").next(\"div.slimScrollDiv\").length > 0) {\r\n doc.children(\"div.slimScrollDiv\").slideToggle(0);\r\n } else {\r\n doc.find(\".categorySubMenu\").slideToggle(0);\r\n }\r\n}\r\n\r\nfunction naviSlimScroll() {\r\n $(\".katNaviScroll\").slimScroll({\r\n color: '#8f7747',\r\n size: '8px',\r\n height: '300px',\r\n alwaysVisible: true,\r\n railVisible: true,\r\n railColor: '#f1efee',\r\n railOpacity: 1.0\r\n });\r\n}\r\n\r\n$(\".submitGewinnspiel\").click(function (event) {\r\n\r\n if (grecaptcha == undefined) {\r\n $('#gewinnspiel_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n try {\r\n var recaptchaResponse = grecaptcha.getResponse();\r\n } catch {\r\n $('#gewinnspiel_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n if (recaptchaResponse.length == 0) {\r\n $('#gewinnspiel_Recaptcha_Validation').removeClass('hide');\r\n return false;\r\n }\r\n\r\n var id = $(this).data(\"id\");\r\n var addressform = $(this).data(\"addressform\");\r\n var gewinnspielForm = $(\"#gewinnspielForm_\" + id);\r\n //Blendet die ValidationMessages aus\r\n gewinnspielForm.find(\".validationMessage\").addClass(\"hide\");\r\n var antwort = gewinnspielForm.find(\"#gewinnspiel_Answer\").val();\r\n var salutation = gewinnspielForm.find(\"#gewinnspiel_Salutation\").val();\r\n var title = gewinnspielForm.find(\"#gewinnspiel_Title\").val();\r\n var vorname = gewinnspielForm.find(\"#gewinnspiel_Vorname\").val();\r\n var nachname = gewinnspielForm.find(\"#gewinnspiel_Nachname\").val();\r\n var email = gewinnspielForm.find(\"#gewinnspiel_Email\").val();\r\n var street = gewinnspielForm.find(\"#gewinnspiel_Street\").val();\r\n var city = gewinnspielForm.find(\"#gewinnspiel_City\").val();\r\n var postalCode = gewinnspielForm.find(\"#gewinnspiel_PostalCode\").val();\r\n var dataUsageAccepted = gewinnspielForm.find(\"#gewinnspiel_DataUsageAccepted\").prop('checked');\r\n var newsletterAccepted = gewinnspielForm.find(\"#gewinnspiel_NewsletterAccepted\").prop('checked');\r\n var gewinnspielEntry = {};\r\n gewinnspielEntry[\"Addressform\"] = addressform;\r\n gewinnspielEntry[\"GewinnspielId\"] = id;\r\n gewinnspielEntry[\"Antwort\"] = antwort;\r\n gewinnspielEntry[\"Salutation\"] = salutation;\r\n gewinnspielEntry[\"Title\"] = title;\r\n gewinnspielEntry[\"Vorname\"] = vorname;\r\n gewinnspielEntry[\"Nachname\"] = nachname;\r\n gewinnspielEntry[\"Email\"] = email;\r\n gewinnspielEntry[\"Street\"] = street;\r\n gewinnspielEntry[\"City\"] = city;\r\n gewinnspielEntry[\"PostalCode\"] = postalCode;\r\n gewinnspielEntry[\"DataUsageAccepted\"] = dataUsageAccepted;\r\n gewinnspielEntry[\"NewsletterAccepted\"] = newsletterAccepted;\r\n gewinnspielEntry[\"RecaptchaResponse\"] = recaptchaResponse;\r\n\r\n $.post(\"/Umbraco/Api/Gewinnspiel/SendGewinnspielEntry\", gewinnspielEntry,\r\n function (data, status) {\r\n //success\r\n $(\"#gewinnspielForm_\" + id).addClass(\"hide\");\r\n $(\"#confirmation_\" + id).removeClass(\"hide\");\r\n }).fail(function (data) {\r\n setModelstateErrorsGewinnspiel(data.responseJSON.ModelState, gewinnspielForm);\r\n });\r\n});\r\n/**\r\n * Schreibt die Meldungen aus dem Modelstate in die daf�r vorgesehenen Spans und zeigt diese an\r\n * @param {any} modelstate\r\n * @param {any} gewinnspielForm\r\n */\r\nfunction setModelstateErrorsGewinnspiel(modelstate, gewinnspielForm) {\r\n if (modelstate !== undefined) {\r\n if (modelstate[\"entryJson.Antwort\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_Answer_Validation\").html(modelstate[\"entryJson.Antwort\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.DataUsageAccepted\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_DataUsageAccepted_Validation\").html(modelstate[\"entryJson.DataUsageAccepted\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.Email\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_Email_Validation\").html(modelstate[\"entryJson.Email\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.Nachname\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_Nachname_Validation\").html(modelstate[\"entryJson.Nachname\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.Vorname\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_Vorname_Validation\").html(modelstate[\"entryJson.Vorname\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.City\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_City_Validation\").html(modelstate[\"entryJson.City\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.PostalCode\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_PostalCode_Validation\").html(modelstate[\"entryJson.PostalCode\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.Street\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_Street_Validation\").html(modelstate[\"entryJson.Street\"][0]).removeClass(\"hide\");\r\n }\r\n if (modelstate[\"entryJson.Salutation\"] !== undefined) {\r\n gewinnspielForm.find(\"#gewinnspiel_Salutation_Validation\").html(modelstate[\"entryJson.Salutation\"][0]).removeClass(\"hide\");\r\n }\r\n }\r\n}\r\nexport function cutTextWholeWords() {\r\n //Schneidet den Inhalt der Titel,publisher und descriptions bei der Trefferliste nach dem letzten vom Platz her passenden Wort ab und erg�nz drei Punkte\r\n const allElementsToCut = $(\".FFTrefferlistenProdukt .publisher, .FFTrefferlistenProdukt .title, .FFTrefferlistenProdukt .description\");\r\n Array.prototype.forEach.call(allElementsToCut,\r\n (cutElement) => { // Loop through each container\r\n var span = cutElement.getElementsByClassName(\"cutSpan\")[0];\r\n if (!span) {\r\n return;\r\n }\r\n var p = cutElement.clientHeight;\r\n while (span.offsetHeight > p) {\r\n // Check if the paragraph's height is taller than the container's height. If it is:\r\n span.textContent =\r\n span.textContent.replace(/\\W*\\s(\\S)*$/, '...'); // add an ellipsis at the last shown space\r\n }\r\n });\r\n}\r\n/*Ellipsis-trunket*/\r\n//$(document).ready(function () {\r\n// function ellipsizeTextBox(class_name) {\r\n// var el = document.getElementsByClassName(class_name);\r\n// var wordArray = el.innerHTML.split(' ');\r\n// while (el.scrollHeight > el.offsetHeight) {\r\n// wordArray.pop();\r\n// el.innerHTML = wordArray.join(' ') + '...';\r\n// }\r\n// }\r\n// ellipsizeTextBox(\"listingDescription\");\r\n//});\r\n/**/","import { formatPrice2Digits } from '../Shared/PriceHelper';\r\n\r\ndeclare var dataLayer: any[];\r\ndeclare var UC_UI: any;\r\n\r\n/**\r\n * Googletracking für ein Promotionevent\r\n */\r\nexport function productGoogleTracking() {\r\n if (window['UC_UI'] !== undefined && UC_UI.isInitialized) {\r\n let productsGoogleTrackingContainer = $('#productGoogleTracking');\r\n let name =\r\n productsGoogleTrackingContainer.data('name') !== '' ? productsGoogleTrackingContainer.data('name') : null;\r\n let id = productsGoogleTrackingContainer.data('id') !== '' ? productsGoogleTrackingContainer.data('id') : null;\r\n let price =\r\n productsGoogleTrackingContainer.data('price') !== ''\r\n ? formatPrice2Digits(parseFloat(productsGoogleTrackingContainer.data('price')))\r\n : null;\r\n let brand =\r\n productsGoogleTrackingContainer.data('brand') !== '' ? productsGoogleTrackingContainer.data('brand') : null;\r\n let category =\r\n productsGoogleTrackingContainer.data('category') !== ''\r\n ? productsGoogleTrackingContainer.data('category')\r\n : 'Produkt ohne Kategorie';\r\n let displayFormat =\r\n productsGoogleTrackingContainer.data('displayformat') !== ''\r\n ? productsGoogleTrackingContainer.data('displayformat')\r\n : null;\r\n let variant = null;\r\n if (productsGoogleTrackingContainer.data('producttype') == 'SEMINAR') {\r\n variant = 'Seminar/Tagung';\r\n } else {\r\n if (productsGoogleTrackingContainer.data('variant') !== '') {\r\n variant = productsGoogleTrackingContainer.data('variant');\r\n }\r\n }\r\n\r\n dataLayer.push({\r\n event: 'eec.productDetailImpression',\r\n ecommerce: {\r\n detail: {\r\n products: [\r\n {\r\n name: name, // Name or ID is required.\r\n id: id,\r\n price: price,\r\n brand: brand,\r\n category: category,\r\n variant: variant,\r\n dimension8: displayFormat,\r\n },\r\n ],\r\n },\r\n },\r\n });\r\n } else {\r\n setTimeout(productGoogleTracking, 100);\r\n }\r\n}\r\n\r\nexport function availabilityReminderSubmitTracking(productId: string, eventAction: string) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'product data',\r\n eventAction: eventAction,\r\n eventLabel: `reminder_${productId}`,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['product data', eventAction + '/' + `reminder_${productId}`, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n","import ILineItem = CheckoutflowReponse.ILineItem;\r\nimport IPrice = CheckoutflowReponse.IPrice;\r\nimport { IPriceCalculation } from '../models/pricecalculation';\r\nexport var summeProbeAbosWerte: number = 0;\r\nexport var summeProbeAbosGrossWerte: number = 0;\r\n\r\nexport function getProductGrossPrice(lineItem: ILineItem): number {\r\n /*Anpassung für Probe-Abos (Gross)\r\n \r\n Hier die Formel für den errechneten Wert eines Probe-Abos (BYTE-261):\r\n\r\n Höchster verfügbarer Produktpreis * Wandlungsrate (0.2) * Faktor für angenommene Laufzeit\r\n\r\n > Höchster, verfügbarer Produktpreis > max(PriceGross)\r\n > Wandlungsrate > aus der Datenanalyse gehen wir von einer Wandlungsrate von 20% aus\r\n > Faktor für die angenommene Laufzeit (2 Jahre) > richtet sich nach den Abrechnungszeiträumen der Abos. Hier die Regeln dazu:\r\n\r\n Faktor 4 (4 Halbjahre sind 2 Jahre) > Wenn das Feld \"Preisbeschreibung\" \"halbjährlich\" ODER \"Halbjahr\"enthält\r\n Faktor 2 (2 ganze Jahre sind 2 Jahre) > Wenn das Feld nichts enthält, \"^jährlich.\", \"\\sjährlich.\" oder \"^Jahres.*\" enthält*/\r\n if (lineItem.currentPriceType.priceTypeId.toString()[0] === '4' && lineItem.singleItemGrossPrice.amount == 0) {\r\n const wandlungsrate = 0.2;\r\n let hoechsterPreis = getHighestValidPriceFromLineItem(lineItem.product.prices);\r\n let laufzeitFaktor = getLaufzeitFaktor(hoechsterPreis.priceGross, hoechsterPreis.description);\r\n if (hoechsterPreis && laufzeitFaktor) {\r\n let aboWert = hoechsterPreis.priceGross * wandlungsrate * laufzeitFaktor;\r\n summeProbeAbosGrossWerte += aboWert;\r\n\r\n return aboWert;\r\n }\r\n }\r\n\r\n return lineItem.singleItemGrossPrice ? lineItem.singleItemGrossPrice.amount : null;\r\n}\r\n\r\n/**\r\n * Im priceCalculation müssen die Preise valid übergeben werden.\r\n * @param priceCalculation\r\n * @param lineItem\r\n */\r\nexport function getProductNetPrice(lineItem: ILineItem, priceCalculation?: IPriceCalculation): number {\r\n /*Anpassung für Probe-Abos (Net)\r\n \r\n Hier die Formel für den errechneten Wert eines Probe-Abos (BYTE-261):\r\n\r\n Höchster verfügbarer Produktpreis * Wandlungsrate (0.2) * Faktor für angenommene Laufzeit\r\n\r\n > Höchster, verfügbarer Produktpreis > max(PriceGross)\r\n > Wandlungsrate > aus der Datenanalyse gehen wir von einer Wandlungsrate von 20% aus\r\n > Faktor für die angenommene Laufzeit (2 Jahre) > richtet sich nach den Abrechnungszeiträumen der Abos. Hier die Regeln dazu:\r\n\r\n Faktor 4 (4 Halbjahre sind 2 Jahre) > Wenn das Feld \"Preisbeschreibung\" \"halbjährlich\" ODER \"Halbjahr\"enthält\r\n Faktor 2 (2 ganze Jahre sind 2 Jahre) > Wenn das Feld nichts enthält, \"^jährlich.\", \"\\sjährlich.\" oder \"^Jahres.*\" enthält*/\r\n try {\r\n if (!lineItem && !priceCalculation) {\r\n return null;\r\n }\r\n\r\n if (lineItem) {\r\n return CalculatePriceFromLineItem(lineItem);\r\n }\r\n return CalculatePriceFromPriceCalculationModel(priceCalculation);\r\n } catch (error) {\r\n console.error(error);\r\n return null;\r\n }\r\n}\r\n\r\nexport function buildVar5(trackingProduct: CheckoutflowReponse.IProduct): string {\r\n let firstPart = 'none';\r\n if (trackingProduct.isTopArticle === true) {\r\n firstPart = 'isTop';\r\n } else if (trackingProduct.isStandard === true) {\r\n firstPart = 'isStandardwerk';\r\n }\r\n\r\n let secondPart = 'none';\r\n if (trackingProduct.isNew == true) {\r\n secondPart = 'isNew';\r\n } else if (trackingProduct.isPreview == true) {\r\n secondPart = 'isPreview';\r\n }\r\n\r\n return `${firstPart}_${secondPart}`;\r\n}\r\n\r\nfunction CalculatePriceFromPriceCalculationModel(priceCalculation: IPriceCalculation) {\r\n return CalculatePrice(\r\n priceCalculation.currentPrice,\r\n priceCalculation.currentPricetypeId,\r\n priceCalculation.highestPriceDescription,\r\n priceCalculation.highestPrice\r\n );\r\n}\r\n\r\nfunction CalculatePriceFromLineItem(lineItem: ILineItem): number {\r\n let currentPrice: number = lineItem.singleItemNetPrice.amount;\r\n let currentPriceTypeId: number = lineItem.currentPriceType.priceTypeId;\r\n let highestPrice: IPrice = getHighestValidPriceFromLineItem(lineItem.product.prices);\r\n if (!highestPrice) {\r\n return null;\r\n }\r\n let highestPriceDescription: string = highestPrice.description;\r\n let highestPriceAmount: number = highestPrice.priceNet;\r\n return CalculatePrice(currentPrice, currentPriceTypeId, highestPriceDescription, highestPriceAmount);\r\n}\r\n\r\nfunction CalculatePrice(\r\n currentPrice: number,\r\n currentPriceTypeId: number,\r\n highestPriceDescription: string,\r\n highestPrice: number\r\n): number {\r\n if (currentPriceTypeId.toString()[0] === '4' && currentPrice == 0) {\r\n const wandlungsrate = 0.2;\r\n let laufzeitFaktor = getLaufzeitFaktor(highestPrice, highestPriceDescription);\r\n if (highestPrice && laufzeitFaktor) {\r\n let aboWert = highestPrice * wandlungsrate * laufzeitFaktor;\r\n summeProbeAbosWerte += aboWert;\r\n\r\n return aboWert;\r\n }\r\n }\r\n\r\n return currentPrice;\r\n}\r\n\r\nfunction getHighestValidPriceFromLineItem(prices: IPrice[]): IPrice {\r\n let currentDate = new Date();\r\n let validPrices = prices.filter(\r\n x =>\r\n (x.validFrom == null || new Date(x.validFrom) < currentDate) &&\r\n (x.validUntil == null || new Date(x.validUntil) > currentDate)\r\n );\r\n if (!validPrices) {\r\n return null;\r\n }\r\n return validPrices.filter(x => x.priceGross == Math.max(...validPrices.map(y => y.priceGross)))[0];\r\n}\r\n\r\nfunction getLaufzeitFaktor(highestPrice: number, highestPriceDescription: string): number {\r\n if (!highestPrice) {\r\n return null;\r\n }\r\n if (highestPriceDescription.includes('halbjährlich') || highestPriceDescription.includes('Halbjahr')) {\r\n return 4;\r\n }\r\n\r\n return 2;\r\n}\r\n","import ProductHelper = require('../Shared/ProductHelper');\r\nimport { CheckoutService } from './checkoutService';\r\nimport { getItemCountForBasket } from './checkoutShared';\r\nimport { getFittingImage } from '../Shared/lazyImageLoader';\r\nimport 'bootstrap';\r\nimport IPrice = CheckoutflowReponse.IPrice;\r\nimport CheckoutActionResponseModel = require('./Models/Api/CheckoutActionResponseModel');\r\nimport ICheckoutActionResponseModel = CheckoutActionResponseModel.ICheckoutActionResponseModel;\r\nimport { buildTrboRequestUrl } from '../Shared/Trbo/TrboRequestBuilder';\r\nimport { isTrboAllowed } from '../Shared/userCentrics';\r\nimport { ProduktkarussellModel } from '../Produktdetails/Models/Produktkarussell';\r\nimport { mapTrboResponseToProduktkarussellModel } from '../Shared/Trbo/TrboResponseMapper';\r\nimport { trackGooglePromotionEvent_view } from '../Tracking/GoogleTracking';\r\nimport { activeButtonClickTracking } from '../OneClickCheckout/oneClickCheckoutTracking';\r\nconst checkoutService = new CheckoutService();\r\nconst spinnerModal = $('#spinnerModal');\r\nconst similarProductsTrackingEvent = 'Product_Reco_cart-modal_s2s';\r\nimport * as Cookies from 'js-cookie';\r\nimport { AddToCartTrackingLineItem, TrackBasketOverlayInteraction } from './Tracking/checkoutTrackingGlobal';\r\n\r\n$(() => {\r\n //Funktionen, die beim Seitenstart aufgerufen werden müssen\r\n getItemCountForBasket();\r\n\r\n $('body').on('click', '.basketLink', function() {\r\n if (window.innerWidth >= 992 && $('.headerBasket.notify').hasClass('hide') === false) {\r\n TrackBasketOverlayInteraction('meta-cart_view');\r\n $('.basket-menu-bubble').show();\r\n return false;\r\n }\r\n });\r\n\r\n $('.basket-menu-bubble').on('click', '.closeIcon', function() {\r\n $('.basket-menu-bubble').hide();\r\n });\r\n\r\n $('.basket-menu-bubble').on('click', '.basket-menu-bubble-tracking', function() {\r\n TrackBasketOverlayInteraction($(this).data('label'));\r\n });\r\n\r\n /**\r\n * Triggert onClick das hinzufügen eines Produktes zum Warenkorb und blendet in der Ladezeit einen Spinner ein\r\n */\r\n $('body').on('click', '.ajax_checkout_add', function() {\r\n let button = $(this);\r\n let noModal = button.hasClass('noModal');\r\n let isExpressKauf = button.hasClass('active_express');\r\n checkoutAdd(button, !noModal, null, isExpressKauf);\r\n });\r\n $('.ajax_checkout_add_mobile').on('click', function() {\r\n let button = $(this);\r\n button.addClass('hide');\r\n spinnerModal.removeClass('hide');\r\n let pricetypeId = $('#mobilePriceSelect')\r\n .find('option:selected')\r\n .data('pricetypeid');\r\n let showModal = !$(this).hasClass('noModal');\r\n addItemToBasket(button, pricetypeId, showModal);\r\n });\r\n\r\n $('body').on('click', '.ajax_checkout_bezugsart', function() {\r\n let elem = $(this);\r\n let productId = elem.data('productid');\r\n let pricetypeId = elem.data('pricetypeid');\r\n let showModal = elem.hasClass('showModal');\r\n let auswahlButton = $('#modalBezugsart-01 .bezugsart_auswahl');\r\n auswahlButton.data('productid', productId);\r\n auswahlButton.data('pricetypeid', pricetypeId);\r\n auswahlButton.addClass('showModal');\r\n });\r\n $('.bezugsart_auswahl').on('click', function() {\r\n let elem = $(this);\r\n var productId = elem.data('productid');\r\n var pricetypeId = elem.data('pricetypeid');\r\n var chosenDeliveryType = elem.data('chosendelivertype') as number;\r\n var showModal = elem.hasClass('showModal');\r\n spinnerModal.removeClass('hide');\r\n addItemToBasket(elem, pricetypeId, showModal, chosenDeliveryType);\r\n });\r\n\r\n $('#login-forbidden-order').on('click', function(event) {\r\n event.preventDefault();\r\n if ($('.headerBasket.notify').not('.hide').length > 0) {\r\n window.location.href = $(this).data('basketlink');\r\n } else {\r\n window.location.href = '/';\r\n }\r\n });\r\n});\r\n\r\n/**\r\n * Fügt ein Produkt dem Warenkorb hinzu. Während der Prozess läuft wird der Warenkorbbutton durch einen Spinner ersetzt\r\n * @param element\r\n */\r\nexport function checkoutAdd(button: JQuery, showModal: boolean, ChosenDeliveryType?: number, isExpressKauf?: boolean) {\r\n if (isExpressKauf) {\r\n activeButtonClickTracking();\r\n }\r\n button.addClass('hide');\r\n spinnerModal.removeClass('hide');\r\n let pricetypeId = +button.data('pricetypeid');\r\n addItemToBasket(button, pricetypeId, showModal, ChosenDeliveryType, isExpressKauf);\r\n}\r\n\r\n/**\r\n * Fügt ein Produkt dem Warenkorb hinzu\r\n * @param e\r\n */\r\nfunction addItemToBasket(\r\n button: JQuery,\r\n pricetypeId: number,\r\n showModal: boolean,\r\n chosenDeliveryType?: number,\r\n isExpressKauf?: boolean\r\n) {\r\n const productId = button.data('productid');\r\n checkoutService\r\n .addProductToBasket(productId, pricetypeId, chosenDeliveryType)\r\n .then(async (response: ICheckoutActionResponseModel) => {\r\n await getItemCountForBasket();\r\n AddToCartTrackingLineItem(response.lineItem);\r\n if (isExpressKauf) {\r\n Cookies.set('IsExpressKauf', 'true');\r\n checkoutService\r\n .expressKauf()\r\n .then(() => {\r\n window.location.href = '/pruefen-bestellen/';\r\n spinnerModal.addClass('hide');\r\n button.removeClass('hide');\r\n })\r\n .catch(error => {\r\n window.location.href = '/zahlung-versand/?ErrorOneClickCheckout=true';\r\n spinnerModal.addClass('hide');\r\n button.removeClass('hide');\r\n });\r\n } else {\r\n if (showModal) {\r\n fillModalWeiterShoppen(response);\r\n } else {\r\n window.location.href = '/warenkorb';\r\n }\r\n }\r\n })\r\n .catch(() => {})\r\n .then(() => {\r\n spinnerModal.addClass('hide');\r\n button.removeClass('hide');\r\n });\r\n}\r\n\r\n/**\r\n * Füllt das WeiterShoppen-Modal mit den Daten des hinzugefügten Produkt\r\n * @param data\r\n */\r\nasync function fillModalWeiterShoppen(response: ICheckoutActionResponseModel) {\r\n try {\r\n let lineItem = response.lineItem;\r\n let product = lineItem.product;\r\n if (product != null) {\r\n let modal = $('#modalWeiterShoppen');\r\n\r\n if (product.prices != null) {\r\n let price = product.prices.filter(\r\n x => x.priceType.priceTypeId == lineItem.currentPriceType.priceTypeId\r\n )[0] as IPrice;\r\n if (price != null) {\r\n modal.find('.results-main .price').html(\r\n (price.priceGross / 100).toLocaleString('de-De', {\r\n style: 'currency',\r\n currency: price.currency.currencyIsoCode,\r\n })\r\n );\r\n if (price.isApproximatePrice) {\r\n modal.find('.results-main .price').prepend('ca. ');\r\n }\r\n modal.find('.results-main .priceTypeDescription').html(price.priceType.priceTypeDescription);\r\n }\r\n modal\r\n .find('.results-main .ProductImage')\r\n .attr('src', getFittingImage(response.imageSizeOptions.SizeOptions));\r\n modal.find('.results-main .author').html(product.authorList);\r\n modal.find('.results-main .title').html(product.titleMain);\r\n if (product.isbnIssn) {\r\n modal.find('.results-main .isbn-webcode').html('ISBN ' + product.isbnIssn);\r\n } else {\r\n modal.find('.results-main .isbn-webcode').addClass('hide');\r\n }\r\n modal\r\n .find('.results-main .availabilityStatus')\r\n .html(await ProductHelper.getAvailabilityStatus(product.availabilityStatusId));\r\n if (product.availabilityStatusId == 1 || product.availabilityStatusId == 4) {\r\n modal.find('.results-main .availabilityStatus').addClass('availabilityStatusColorGreen');\r\n modal.find('.results-main .availability img').removeClass('hide');\r\n }\r\n modal.find('.validationMessage.success').html(response.message);\r\n spinnerModal.addClass('hide');\r\n $(modal).modal();\r\n\r\n fillModalWeiterShoppenRecomendation(product.productId);\r\n }\r\n }\r\n } catch (e) {\r\n spinnerModal.addClass('hide');\r\n $('.ajax_checkout_add').removeClass('hide');\r\n }\r\n}\r\n\r\nconst fillModalWeiterShoppenRecomendation = (productId: number) => {\r\n hideRecommandation();\r\n if (isTrboAllowed()) {\r\n const url = buildTrboRequestUrl('Product_Reco_cart-modal_s2s', productId);\r\n $.ajax({\r\n method: 'GET',\r\n dataType: 'JSON',\r\n url: encodeURI(url),\r\n success: data => {\r\n try {\r\n const trboProducts = mapTrboResponseToProduktkarussellModel(data) as ProduktkarussellModel;\r\n if (trboProducts.karussellItems.length === 0) {\r\n return;\r\n }\r\n const productContainer = $('.similar-products');\r\n trboProducts.karussellItems.slice(0, 4).forEach(trboProduct => {\r\n let productPrototype = $('#similar-products-proto').clone();\r\n productPrototype\r\n .find('.title a')\r\n .html(trboProduct.title)\r\n .attr('href', trboProduct.productDetailUrl)\r\n .addClass('similarProductTracking')\r\n .attr('data-trackingevent', similarProductsTrackingEvent);\r\n\r\n productPrototype.find('.author').html(trboProduct.authorstring);\r\n\r\n productPrototype.find('.imgWrapper img').attr('src', replaceImageHeight(trboProduct.imageUrl));\r\n productPrototype\r\n .find('.imgLink')\r\n .attr('href', trboProduct.productDetailUrl)\r\n .addClass('similarProductTracking')\r\n .attr('data-trackingevent', similarProductsTrackingEvent);\r\n\r\n productPrototype.find('.price').html(trboProduct.pricePrefix + trboProduct.price);\r\n productPrototype.find('.year').html(trboProduct.releaseYear);\r\n productPrototype.find('.edition').html(trboProduct.auflage);\r\n productPrototype.find('.medium').html(trboProduct.medium);\r\n productPrototype.find('.publisher').html(trboProduct.publisher);\r\n\r\n if (trboProduct.warenkorbAnzeigen) {\r\n productPrototype.find('.ajax_checkout_add').data('productid', trboProduct.productId);\r\n productPrototype.find('.ajax_checkout_add').removeClass('hide');\r\n }\r\n\r\n productContainer.append(productPrototype);\r\n });\r\n\r\n trackGooglePromotionEvent_view(similarProductsTrackingEvent);\r\n $('.similar-products').show();\r\n } catch {\r\n hideRecommandation();\r\n }\r\n },\r\n });\r\n }\r\n};\r\n\r\nfunction replaceImageHeight(productDetailUrl: string) {\r\n if (!productDetailUrl) {\r\n return productDetailUrl;\r\n }\r\n return productDetailUrl.replace('height=180', 'width=105');\r\n}\r\n\r\nconst hideRecommandation = () => {\r\n $('.similar-products .row').remove();\r\n $('.similar-products').hide();\r\n};\r\n","$(() => {\r\n var lazyloadImages = document.querySelectorAll(\"img.lazy-image, div.lazy-image\");\r\n var inAdvance = 100;\r\n lazyload()\r\n\r\n function lazyload() {\r\n\r\n for (let index = 0; index < lazyloadImages.length; index++) {\r\n try {\r\n const img = lazyloadImages[index];\r\n if (img.getBoundingClientRect().top < (window.innerHeight + window.pageYOffset + inAdvance) && img.getBoundingClientRect().top > 0) {\r\n if (img.dataset.src) {\r\n if (img.dataset.sizeoptions) {\r\n img.src = getFittingImage(img.dataset.sizeoptions);\r\n } else {\r\n img.src = img.dataset.src;\r\n if (img.dataset.srcset) {\r\n img.srcset = img.dataset.srcset;\r\n }\r\n if (img.dataset.sizes) {\r\n img.sizes = img.dataset.sizes;\r\n }\r\n }\r\n }\r\n else if (img.dataset.background) {\r\n let image = getFittingImage(img.dataset.sizeoptions);\r\n if (image) {\r\n img.style.backgroundImage = \"url(\" + image + \")\";\r\n } else {\r\n img.style.backgroundImage = \"url(\" + img.dataset.background + \")\";\r\n }\r\n }\r\n\r\n img.classList.remove(\"lazy-image\");\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n lazyloadImages = document.querySelectorAll(\"img.lazy-image, div.lazy-image\");\r\n }\r\n document.addEventListener(\"scroll\", lazyload);\r\n window.addEventListener(\"resize\", lazyload);\r\n window.addEventListener(\"orientationChange\", lazyload);\r\n})\r\n\r\nexport function getFittingImage(sizeOptions) {\r\n if (!sizeOptions) {\r\n return null;\r\n }\r\n let backgroundOptions = JSON.parse(sizeOptions) as [];\r\n let windowWidth = window.innerWidth;\r\n let keys = (Object.keys(backgroundOptions).map(x => +x));\r\n let filteredKeys = keys.filter(key => key >= windowWidth);\r\n let key;\r\n if (!filteredKeys || filteredKeys.length == 0) {\r\n key = 0; // Default value\r\n } else {\r\n key = filteredKeys[0];\r\n }\r\n return backgroundOptions[key];\r\n}","import { searchResultClickTracking } from '../../Tracking/GoogleTracking';\r\nimport ILineItem = CheckoutflowReponse.ILineItem;\r\nimport { formatPrice2Digits } from '../../Shared/PriceHelper';\r\n\r\ndeclare var dataLayer: any[];\r\n\r\n$(() => {\r\n $('.FactFinderSearchResultContainer').on('click', '.factFinderTrackingItem', function() {\r\n var parent = $(this)\r\n .parents('.resultItem')\r\n .get(0);\r\n var id = parseInt($(parent).data('id'));\r\n var sessionId = $(parent).data('sessionid');\r\n var origPos = $(parent).data('origpos');\r\n var query = $(parent).data('query');\r\n var pos = $(parent).data('pos');\r\n var page = $(parent).data('page');\r\n var pagesize = $(parent).data('pagesize');\r\n var simi = $(parent).data('simi');\r\n var factFinderCampaign = $(parent).data('factfindercampaign');\r\n\r\n searchResultClickTracking(query);\r\n\r\n $.ajax({\r\n method: 'GET',\r\n contentType: 'application/json',\r\n url:\r\n '/Umbraco/api/FactFinderTracking/ProductDetailTracking?' +\r\n 'productId=' +\r\n id +\r\n '&sessionId=' +\r\n sessionId +\r\n '&query=' +\r\n query +\r\n '&position=' +\r\n pos +\r\n '&origPosition=' +\r\n origPos +\r\n '&page=' +\r\n page +\r\n '&pageSize=' +\r\n pagesize +\r\n '&origPageSize=' +\r\n pagesize +\r\n '&simi=' +\r\n simi +\r\n '&factFinderCampaign=' +\r\n factFinderCampaign,\r\n\r\n success: data => {},\r\n error: function() {},\r\n });\r\n });\r\n\r\n $(document).on('click', '.factFinderCartTrackingItem', function() {\r\n var parent = $(this).closest('.resultItem');\r\n var id = parseInt($(parent).data('id'));\r\n var sessionId = $(parent).data('sessionid');\r\n var price = $(parent).data('price');\r\n\r\n factfinderCartTracking(id, sessionId, price, 1);\r\n });\r\n});\r\n\r\n/**\r\n * Ruft das FactfinderCartTracking für jedes LineItem im Warenkorb auf\r\n * @param lineItems\r\n */\r\nexport function factfinderBasketTracking(lineItems: ILineItem[]): void {\r\n for (let lineItem of lineItems) {\r\n let productId = lineItem.product.productId;\r\n let sessionId = $('#CurrentSessionId').val() as string;\r\n let price = lineItem.singleItemGrossPrice.amount;\r\n let count = lineItem.quantity;\r\n factfinderCartTracking(productId, sessionId, price, count);\r\n }\r\n}\r\n\r\n/**\r\n * Ruft das FactfinderCartTracking für jedes LineItem im Warenkorb auf\r\n * @param lineItems\r\n */\r\nexport function factfinderThankYouTracking(lineItems: ILineItem[]): void {\r\n for (let lineItem of lineItems) {\r\n let productId = lineItem.product.productId;\r\n let sessionId = $('#CurrentSessionId').val() as string;\r\n let price = lineItem.singleItemGrossPrice.amount;\r\n let count = lineItem.quantity;\r\n factfinderCheckoutTracking(productId, sessionId, price, count);\r\n }\r\n}\r\n\r\n/**\r\n * Ruft das Factfinder Cart-Tracking auf\r\n * @param productId\r\n * @param sessionId\r\n * @param price\r\n */\r\nexport function factfinderCartTracking(productId: number, sessionId: string, price: number, count: number) {\r\n $.ajax({\r\n method: 'GET',\r\n contentType: 'application/json',\r\n url:\r\n '/Umbraco/api/FactFinderTracking/CartTracking?' +\r\n 'productId=' +\r\n productId +\r\n '&sessionId=' +\r\n sessionId +\r\n '&price=' +\r\n formatPrice2Digits(price, true),\r\n success: data => {},\r\n error: function() {},\r\n });\r\n}\r\n\r\n/**\r\n * Ruft das Factfinder Checkout-Tracking auf (Danke-Seite)\r\n * @param productId\r\n * @param sessionId\r\n * @param price\r\n */\r\nexport function factfinderCheckoutTracking(productId: number, sessionId: string, price: number, count: number) {\r\n $.ajax({\r\n method: 'GET',\r\n contentType: 'application/json',\r\n url:\r\n '/Umbraco/api/FactFinderTracking/ThankYouTracking?' +\r\n 'productId=' +\r\n productId +\r\n '&sessionId=' +\r\n sessionId +\r\n '&price=' +\r\n formatPrice2Digits(price, true),\r\n success: data => {},\r\n error: function() {},\r\n });\r\n}\r\n\r\nexport function factfinderSuggestTracking(area: string) {\r\n dataLayer.push({\r\n event: 'event',\r\n eventCategory: 'Search Action',\r\n eventAction: 'Suggest',\r\n eventLabel: `${area}`,\r\n });\r\n\r\n dataLayer.push({\r\n event: 'econdaEvent',\r\n ecCustomProperties: {\r\n Target: ['search data', `suggest/${area}`, 0, 'd'],\r\n rqtype: 'hiddenpi',\r\n },\r\n });\r\n}\r\n","import * as Cookies from \"js-cookie\";\r\n//Blendet eine Allgemeine Fehlermeldung ein mit dem übergebenen Text, die nach 6 Sekunden langsam ausblendet\r\nexport function dangerAlert(text) {\r\n if (text) {\r\n $(\"#dangerAlert\").removeClass(\"hide\").fadeIn(\"fast\").find(\"p\").html(text);\r\n }\r\n}\r\n\r\nexport function successAlert(text) { \r\n if (text) {\r\n $(\"#successAlert\").removeClass(\"hide\").fadeIn(\"fast\").find(\"p\").html(text);\r\n }\r\n}\r\n\r\nexport function closeAlert(elementId, doNotShowAgain) {\r\n if (doNotShowAgain) {\r\n Cookies.set(\"doNotShowAgain\" + elementId, \"True\");\r\n }\r\n $(elementId).fadeOut(\"slow\", () => {\r\n $(elementId).addClass(\"hide\").find(\"p\").html(\"\");\r\n });\r\n}","import request = require('request');\r\nimport { dangerAlert } from '../Shared/AlertHelper';\r\nimport IAddressChange = CheckoutflowRequest.IAddressChange;\r\nimport IPaymentMethodChange = CheckoutflowRequest.IPaymentMethodChange;\r\nimport IBillingAddress = CheckoutflowRequest.IBillingAddress;\r\nimport IShippingAddress = CheckoutflowRequest.IShippingAddress;\r\nimport ILineItemChange = CheckoutflowRequest.ILineItemChange;\r\nimport ICheckoutflowResponse = CheckoutflowReponse.ICheckoutflowResponse;\r\nimport IBskAdditionalInfo = CheckoutflowRequest.IBskAdditionalInfo;\r\nimport ICart = CheckoutflowReponse.ICart;\r\nimport CheckoutActionResponseModel = require('./Models/Api/CheckoutActionResponseModel');\r\nimport ICheckoutActionResponseModel = CheckoutActionResponseModel.ICheckoutActionResponseModel;\r\nimport { AddToCartTrackingLineItem } from './Tracking/checkoutTrackingGlobal';\r\nlet spinnerModal: JQuery = $('#spinnerModal');\r\n\r\nexport class CheckoutService {\r\n expressKauf(): Promise {\r\n spinnerModal.removeClass('hide');\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'GET',\r\n url: '/Umbraco/api/ExpressKaufApi/Checkout',\r\n success: (response: boolean) => {\r\n resolve(response);\r\n },\r\n error: data => {\r\n //Message im Fehlerfall\r\n reject(data.responseText);\r\n },\r\n complete: () => {\r\n spinnerModal.addClass('hide');\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Called den Api Controller um den aktuellen Warenkorb zu bekommen\r\n */\r\n showBasket(): Promise {\r\n //Logs sind mit Absicht noch drin\r\n console.log('start-Request ' + new Date());\r\n spinnerModal.removeClass('hide');\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'GET',\r\n url: '/Umbraco/api/CheckoutApi/GetCart',\r\n success: (response: ICheckoutflowResponse) => {\r\n resolve(response);\r\n },\r\n error: data => {\r\n //Message im Fehlerfall\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n complete: () => {\r\n spinnerModal.addClass('hide');\r\n //Logs sind mit Absicht noch drin\r\n console.log('End-Request ' + new Date());\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Gibt die Zusätzlichen Informationen an die Cart weiter\r\n */\r\n addAdditionalInfoToCart(orderCode: string, customerMessage: string) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n data: JSON.stringify({\r\n OrderCode: orderCode,\r\n CustomerMessage: customerMessage,\r\n }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n type: 'json',\r\n url: '/Umbraco/api/CheckoutApi/AddAdditionalCartInfo',\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n *\r\n * @param lineItemChange\r\n */\r\n addDiscountToCart(code: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n //data: { \"code\": code },\r\n url: '/Umbraco/api/CheckoutApi/AddDiscountToCart?code=' + code,\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Called den Api Controller um ein Produkt derm Warenkorb über seine ISBN hinzuzufügen\r\n * @param lineItemChange\r\n */\r\n addItemByIsbnSearch(isbn: string): Promise {\r\n spinnerModal.removeClass('hide');\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n data: JSON.stringify({ isbn: isbn }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n type: 'json',\r\n url: '/Umbraco/api/CheckoutApi/AddItemByIsbnSearch',\r\n success: (response: ICheckoutActionResponseModel) => {\r\n AddToCartTrackingLineItem(response.lineItem);\r\n resolve(response.cart);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n complete: () => {\r\n spinnerModal.addClass('hide');\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Called den Api Controller um ein Produkt im Warenkorb zu updaten\r\n * @param lineItemChange\r\n */\r\n updateLineItem(lineItemChange: ILineItemChange): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n data: JSON.stringify(lineItemChange),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n type: 'json',\r\n url: '/Umbraco/api/CheckoutApi/UpdateLineItem',\r\n success: (cart: ICart) => {\r\n resolve(cart);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Called den Api Controller um ein Produkt aus dem Warenkorb zu löschen\r\n * @param lineItemChange\r\n */\r\n deleteLineItem(lineItemChange: ILineItemChange): Promise {\r\n spinnerModal.removeClass('hide');\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n data: JSON.stringify(lineItemChange),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n url: '/Umbraco/api/CheckoutApi/DeleteLineItem',\r\n success: (cart: ICart) => {\r\n resolve(cart);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n complete: () => {\r\n spinnerModal.addClass('hide');\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Called den Api Controller um ein Produkt dem Warenkorb hinzuzufügen\r\n * @param productId\r\n * @param pricetypeId\r\n */\r\n addProductToBasket(\r\n productId: number,\r\n pricetypeId: number,\r\n ChosenDeliveryType?: number\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n data: {\r\n productId: productId,\r\n priceTypeId: pricetypeId,\r\n chosenDeliveryType: ChosenDeliveryType,\r\n },\r\n url: '/Umbraco/api/CheckoutApi/AddItemToBasket',\r\n success: (response: ICheckoutActionResponseModel) => {\r\n resolve(response);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Called den Api Controller um die Anzahl der Produke im Warenkorb zu erhalten\r\n */\r\n getItemCountInBasket(): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'GET',\r\n url: '/Umbraco/api/MiniBasket/GetMiniBasket',\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n reject();\r\n },\r\n });\r\n });\r\n }\r\n\r\n addPaymentShippingDataToCart(\r\n addresschange: IAddressChange,\r\n paymentmethodChange: IPaymentMethodChange,\r\n bskAdditionalInfo: IBskAdditionalInfo,\r\n relatedBusinessPartnerId: string\r\n ): Promise {\r\n spinnerModal.removeClass('hide');\r\n\r\n var data = {\r\n addresschange: addresschange,\r\n paymentmethodchange: paymentmethodChange,\r\n relatedBusinessPartnerId: relatedBusinessPartnerId,\r\n bskAdditionalInfo: bskAdditionalInfo,\r\n };\r\n\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n url: '/Umbraco/api/CheckoutApi/AddPaymentShippingDataToCart',\r\n data: JSON.stringify(data),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n type: 'json',\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText.replace(/\\\"/g, ''));\r\n reject();\r\n },\r\n complete: () => {\r\n spinnerModal.addClass('hide');\r\n },\r\n });\r\n });\r\n }\r\n\r\n updateBillingaddressInCart(billingAddressId: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n url: `/Umbraco/surface/CheckoutSurface/UpdateBillingAddress?addressId=${billingAddressId}`,\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject(data.responseText);\r\n },\r\n complete: () => {},\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Lädt die Lieferadressen die vom Benutzer ausgewählt werden können.\r\n * @param billingAddressId Die Id der BillingAddress\r\n */\r\n getAvailableDeliveryAddresses(billingAddressId: string, isBusiness: boolean): Promise {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n url: `/Umbraco/surface/CheckoutSurface/GetAvailableDeliveryAddresses?addressId=${billingAddressId}&isBusiness=${isBusiness}`,\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n reject();\r\n },\r\n complete: () => {},\r\n });\r\n });\r\n }\r\n\r\n AddAddressesToCartGast(\r\n billingAddress: IBillingAddress,\r\n shippingAddress: IShippingAddress,\r\n emailAddress: string,\r\n shippingAsBilling: boolean,\r\n isGuestUser: boolean\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n var data = {\r\n billingAddress: billingAddress,\r\n shippingAddress: shippingAddress,\r\n emailAddress: emailAddress,\r\n shippingAsBilling: shippingAsBilling,\r\n isGuestUser: isGuestUser,\r\n };\r\n\r\n $.ajax({\r\n method: 'POST',\r\n url: '/Umbraco/surface/CheckoutSurface/AddAddressesToCartGast',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify(data),\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n if (data.responseText == 'Reload') {\r\n window.location.reload();\r\n } else {\r\n dangerAlert(data.responseText);\r\n reject();\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n AddPaymentmethodToCartGast(\r\n paymentmethodchange: IPaymentMethodChange,\r\n isDataUsageAccepted: boolean,\r\n isGuestUser: boolean\r\n ): Promise {\r\n return new Promise((resolve, reject) => {\r\n var data = {\r\n paymentmethodchange: paymentmethodchange,\r\n dataUsageAccepted: isDataUsageAccepted,\r\n isGuestUser: isGuestUser,\r\n };\r\n\r\n $.ajax({\r\n method: 'POST',\r\n url: '/Umbraco/surface/CheckoutSurface/AddPaymentmethodToCartGast',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify(data),\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n });\r\n });\r\n }\r\n\r\n AddArvatoAddressesToCart(addresses) {\r\n return new Promise((resolve, reject) => {\r\n var data = {\r\n billingAddress: addresses.billingAddress,\r\n shippingAddress: addresses.shippingAddress,\r\n };\r\n\r\n $.ajax({\r\n method: 'POST',\r\n url: '/Umbraco/surface/CheckoutSurface/AddArvatoAddressesToCartGast',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n data: JSON.stringify(data),\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n if (data.responseText == 'Reload') {\r\n window.location.reload();\r\n } else {\r\n dangerAlert(data.responseText);\r\n reject();\r\n }\r\n },\r\n });\r\n });\r\n }\r\n\r\n getSaferpayIframe(recaptchaResponse: string) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n method: 'POST',\r\n data: JSON.stringify({\r\n value: recaptchaResponse,\r\n url: window.location.href,\r\n }),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n type: 'json',\r\n url: '/Umbraco/api/CreditCardApi/GetsaferpayIframe',\r\n success: data => {\r\n resolve(data);\r\n },\r\n error: data => {\r\n dangerAlert(data.responseText);\r\n reject();\r\n },\r\n });\r\n });\r\n }\r\n}\r\n"],"sourceRoot":""}