{"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/Tracking/checkoutTrackingStep1.ts","webpack:///./Typescript/Shared/Trbo/TrboRequestBuilder.js","webpack:///./Typescript/Shared/Trbo/TrboResponseMapper.ts","webpack:///./Typescript/Shared/PriceHelper.ts","webpack:///./scripts/Econda/emos3.js","webpack:///./Typescript/Swiper/SwiperConfig.ts","webpack:///./Typescript/Tracking/Tracking.ts","webpack:///./Typescript/Checkout/checkoutRecaptchaCallback.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/ShoppingList/shoppingListService.ts","webpack:///./Typescript/Navigation/mobileNav.ts","webpack:///./Typescript/Navigation/mobileNavBuilder.ts","webpack:///./Typescript/Navigation/stickyHeader.ts","webpack:///./Typescript/Navigation/meganav.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/Shared/Slider.ts","webpack:///./Typescript/swiper/swiperconfig.ts","webpack:///./Typescript/Tracking/GoogleTracking.ts","webpack:///./Typescript/Shared/userCentrics.ts","webpack:///./Typescript/Shared/ProductHelper.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","onloadTracking","cart","undefined","UC_UI","isInitialized","lineItems","productPrices","productNetPrice","singleItemNetPrice","ProductHelper","breadcrumb","totalNetPrice","amount","setTimeout","updatedLineItem","newQuantitiy","oldQuantity","quantityChange","Number","parseFloat","Math","abs","buildTrboRequestUrl","slot","requestUrl","parseGlobalData","parseSessionData","parseProductData","parseDataLayerData","parseSegments","Cookies","console","log","segments","_trbo","udp","segmentData","st","encodeURIComponent","location","href","pt","floor","Date","getTime","sh","u","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","cb","get_current_basket","bw","bh","cic","cic2","get_cic2","ref","session_data","getSessions","localStorage","sst","_trbo_ud","session","createTime","pvc","sessionSummary","pageViewCount","sd","sessionDuration","passt_sessions","sessions","keys","sessionkey","product_data","now","app","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","response","tracking","campaignId","campaign_id","campaignName","campaign_name","module_id","moduleName","module_name","userType","user_type","tr","karussellItems","authorstring","imageUrl","image_url","isAnkuendigung","custom3","isEbook","custom2","isTopTitel","custom1","toLocaleString","style","pricePrefix","custom6","productDetailUrl","deeplink_orig","parseInt","article","title","warenkorbAnzeigen","isBeckOnline","custom10","kupOrderNo","custom12","dateOfPublicationDescription","lieferstatus","custom14","lieferstatusId","auflage","custom4","releaseYear","custom5","medium","error","isCentPrice","toFixed","bz","DFLTS","bE","U","bx","q","VCL","DO_NOT_TRACK","aB","ck","A","bR","a7","aE","b5","ab","ah","bH","aY","D","bj","aG","aM","b2","k","w","bA","bt","az","ai","e","cu","ct","cv","G","co","kw","cp","nl","suma","all","b7","by","bo","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","bP","bl","bB","cz","cB","a5","bq","aS","v","bi","cx","f","bV","an","cy","cw","I","top","cn","cD","aq","aW","at","aQ","cE","cA","cI","cK","isNaN","cJ","cg","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","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","initSwiperSmall","configureSwiperSlider","autoplay","effect","elements","Swiper","navigation","nextEl","prevEl","loop","delay","autoplayDisableOnInteraction","elem","swiper","slidesPerView","spaceBetween","slidesPerGroup","loopFillGroupWithBlank","pagination","el","clickable","observer","observeParents","breakpoints","1200","1024","768","640","320","on","resize","$","width","params","update","render","find","removeClass","frequency","first","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","eventValue","ecCustomProperties","Target","rqtype","testAboTracking","attr","trackExternalBasketClick","_trboq","tracker","trackExternalClick","clearTimeout","click","trackNaviEvent_click","checkoutService","CheckoutService","recaptchaCallbackGuest","getSaferpayIframe","then","hide","orderSuccess","each","val","DeleteSearchedISBNS","html","orderSuccessClose","errorClose","orderFailedClose","orderIncompleteClose","orderFailedISBNClose","show","orderIncomplete","orders","itemLength","updateTotalOrderPrice","totalPrice","showEproxPrice","text","indexOf","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","firstName","company","address","zipCode","city","country","tel","fax","furtherInformation","orderItems","getOrderList","total","array","order","pricePerUnit","ready","trim","test","ajax","url","dataType","success","validateIsbn","preventDefault","valid","checkValidity","inputFields","addClass","statusCode","status","contentType","markSuggest","suggestion","searchquery","re","RegExp","matched","umlauteAnpassen","query","model","suggestions","displaysElements","hiddenSuggestElements","productResultsCount","originalQuery","toUpperCase","suchvorschlag","markedSuggest","span","append","formattedQuery","markedCategory","attributes","deeplink","spanCategory","servicethema","markedSuggestThema","spanThema","availabilityStatusFilter","includes","titelvorschlag","image","setDummyImage","urheberzeile","fillSuggestContainer","getAutoSuggestResults","changeCurIcon","children","hasClass","area","factfinderSuggestTracking","mouseup","container_01","Element","has","is","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","offset","scrollTop","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","trigger","msg","stop","fadeIn","fadeOut","slimscroll","lastClickedFilterParentId","setFilter","method","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","medienname","erscheinungsjahr","verlag","isbN_ISSN_Type","priceNet","preisvariantenMerkmal","caPreisMerkmal","formattedPrice","DelocaleString","lngAvailabilityStatusID","buildBeckOnlineLink","warenkorbsymbolAnzeigen","basketButton","showModal","checkoutAdd","element","displayName","createFilterTags","sortsList","meta","content","appendChild","origin","pathname","link","rel","previousLink","fullUrlCrawler","nextLink","pageLinks","number","firstLink","preDotsLi","li","lastLink","postDotsLi","createPagination","mobileFunctions","cutTextWholeWords","animate","dataSpan","fieldId","getElementById","filterValue","shoppingListService","ShoppingListService","updateShoppingListCount","deleteItem","xhr","trackMerklisteInteraction_click","addItem","completeFunction","complete","updateCounter","showAlert","successMessage","merklistenElement","message","navHelper","MobileNavBuilder","updateMobileNavi","buildMobileNavi","empty","showBack","backLink","breadcumb","isOtherTopics","showDots","backId","parentWeitere","parentFachbereichDetail","backLinkTitle","mobileNavItems","navItem","navItemProtoType","hasChildren","fachbereichDetail","weitereFachgebiete","lastScrollTop","navbarHeight","showStickyNav","selectedElement","button","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","prop","listNameInxmail","trackingPermissionMainButtonValue","additionalParamsJson","additionParamsList","parseJSON","extendedForm","salutation","firstname","lastname","setCustomValidity","post","trackNewsletterRegisterEvent","fail","loginFlag","MerklisteKarusellInViewTracking","passwordInput","middleName","lastName","trackPrefixNameProblem","currentProductId","currentTrackingEvent","modalForm","intiRecaptcha","recaptchaAllowed","recaptchaId","checkForRecaptcha","trackingEvent","script","modal","onload","src","widgetId","validation","reminderEntry","availabilityReminderSubmitTracking","reset","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","parents","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","catch","setNewQuantityOfBasketItem","modalId","currentLineItem","produktvariantenContainer","checkItemPrototype","pricetypeId","newCheckItem","priceAmount","priceGross","specialConditions","fillProduktVariantenModal","container","checkitem","fillBezugsartenModal","parentContainer","newPricetypeId","updatePriceTypeOfLineItem","_","setNewPricetypeIdOfBasketItem","newChosenDeliveryType","updateChosenDeliveryTypeOfLineItem","setNewChosenDeliveryTypeOfBasketItem","toggleClass","getAvailabilityInfoText","productItem","getEditionText","sliderPrototype","sliderId","trbotracking","sliderPrototypes","labelWrapper","newLabel","topLabel","standardwerkLabel","ankuendigungLabel","ebookLabel","addToCartButton","loginPageUrl","addContainerViewTracking","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","createPlaceholderHtml","templateId","lazy","containerClass","className","sitekey","ccGuestCallback","callback","showrecaptcha","initUserCentrics","iframe","youTubeAllowed","ucSrc","checkForYouTubeIframe","googleMapsAllowed","checkForGoogleMapsIframe","yumpuAllowed","checkForYumpuIframe","podigeeAllowed","checkForPodigeeIframe","isTrboAllowed","Promise","resolve","reject","storedAvailabilityStatusList","sessionStorage","getItem","availabilityStatusList","setItem","drmId","drmMapping","drmMappingItem","DRmid","AnzeigeText","storedOrderableAvailabilityStatusList","orderableAvailabilityStatusList","deliverytypeId","priceinfo","tocId","imageSize","DeliveryTypeID","Bruttopreis","PreisvariantenMerkmal","Urheberzeile","Verlag","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","body","documentElement","cElement","cName01","cName02","usedSearchTerm","ttDataTarget","slideDown","slideUp","currentEl","not","moretext","substr","toggle","$expand","iconEl","currentID","allTabIcons","tabPane","getID","allKarussellAuthorElements","authorElement","allKarussellTitleElements","titleElement","addressform","gewinnspielForm","antwort","vorname","nachname","street","postalCode","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","addItemToBasket","addProductToBasket","AddToCartTrackingLineItem","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","set","expressKauf","responseText","showBasket","dangerAlert","addAdditionalInfoToCart","orderCode","customerMessage","OrderCode","CustomerMessage","headers","addDiscountToCart","code","addItemByIsbnSearch","addPaymentShippingDataToCart","addresschange","paymentmethodChange","bskAdditionalInfo","relatedBusinessPartnerId","paymentmethodchange","updateBillingaddressInCart","billingAddressId","getAvailableDeliveryAddresses","isBusiness","AddAddressesToCartGast","billingAddress","shippingAddress","emailAddress","shippingAsBilling","isGuestUser","reload","AddPaymentmethodToCartGast","isDataUsageAccepted","AddArvatoAddressesToCart","addresses"],"mappings":"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","file":"app.0a82527fd79a2d1d0b64.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([201,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 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","\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","/**\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}","(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 checkForSwiperSlider();\r\n\r\n let windowWidth = $(window).width();\r\n if (windowWidth <= 768) {\r\n setSlideGroupBig = 1;\r\n setSlideGroupSmall = 1;\r\n } else if (windowWidth <= 1200) {\r\n setSlideGroupBig = 3;\r\n setSlideGroupSmall = 1;\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 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\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 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)\r\n .find('.swiper-wrapper')\r\n .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 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)\r\n .find('.swiper-wrapper')\r\n .removeClass('hide');\r\n return swiper;\r\n}\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","import { CheckoutService } from './checkoutService';\r\nconst checkoutService = new CheckoutService();\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","$(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').removeClass('autoSuggest-container');\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').addClass('autoSuggest-container');\r\n } else {\r\n $('.autoSuggest').removeClass('autoSuggest-container');\r\n }\r\n } else {\r\n $('.autoSuggest').removeClass('autoSuggest-container');\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 hiddenSuggestElements = $('#hiddenSuggestElements');\r\n let productResultsCount = 0;\r\n const originalQuery = query;\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.find('a').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.find('a').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') {\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.find('a').attr('href', suggestion.attributes.deeplink);\r\n var spanCategory = hiddenSuggestElements.find('#SuggestElementsToClone span').clone();\r\n spanCategory.html(markedCategory);\r\n category.find('a').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') {\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.find('a').attr('href', '/suche?query=' + suggestion.name);\r\n spanThema.html(markedSuggestThema);\r\n servicethema.find('a').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') {\r\n if (\r\n availabilityStatusFilter.includes(suggestion.attributes.availabilityStatusId) &&\r\n productResultsCount < 3\r\n ) {\r\n productResultsCount++;\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\r\n if (productResultsCount === 0) {\r\n $('.allSearchResultsLink').hide();\r\n } else {\r\n $('.allSearchResultsLink').show();\r\n $('.allSearchResultsLink').attr('href', `/suche?query=${originalQuery}`);\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.removeClass('autoSuggest-container');\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('li');\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\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\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.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 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.medienname != null && result.medienname !== '' && result.medienname !== 'Buch') {\r\n createLinkSpan(prototype, result.medienname);\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\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 { 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}","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', function(e) {\r\n updateMobileNavi(e, this);\r\n });\r\n\r\n $('ul.mobMenu.mobileNavigation').on('click', '.backLink', function(e) {\r\n updateMobileNavi(e, this);\r\n });\r\n\r\n $('ul.mobMenu.mobileNavigation').on('click', '.mobile-menu-breadcrumb-root', function(e) {\r\n console.log('click');\r\n\r\n updateMobileNavi(e, this);\r\n });\r\n});\r\n\r\nfunction updateMobileNavi(e, target: HTMLElement) {\r\n if ($(target).children('i').length || $(target).hasClass('mobile-menu-breadcrumb-root')) {\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(\r\n 'weitere'\r\n )}&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","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 let backLink = $('#mobNavProtoTypes')\r\n .find('.backLink')\r\n .clone();\r\n\r\n const breadcumb = $('#mobNavProtoTypes')\r\n .find('.mobile-menu-breadcrumb')\r\n .clone();\r\n\r\n if (!response.breadcrumb) {\r\n breadcumb.find('.mobile-menu-breadcrumb-root').remove();\r\n breadcumb.find('.mobile-menu-breadcrumb-dots').remove();\r\n breadcumb.find('.mobile-menu-breadcrumb-arrow').remove();\r\n } else {\r\n breadcumb.find('.mobile-menu-breadcrumb-root').html(response.breadcrumb.name);\r\n breadcumb.find('.mobile-menu-breadcrumb-root').attr('data-id', response.breadcrumb.id + '');\r\n breadcumb\r\n .find('.mobile-menu-breadcrumb-root')\r\n .attr('data-weitere', response.breadcrumb.isOtherTopics + '');\r\n\r\n if (response.breadcrumb.showDots === false) {\r\n breadcumb.find('.mobile-menu-breadcrumb-dots').remove();\r\n breadcumb\r\n .find('.mobile-menu-breadcrumb-arrow')\r\n .first()\r\n .remove();\r\n }\r\n }\r\n\r\n breadcumb.find('.mobile-menu-breadcrumb-current').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 backLink.find('span.txt').html(response.backLinkTitle);\r\n\r\n $('ul.mobMenu.mobileNavigation').append(backLink);\r\n $('ul.mobMenu.mobileNavigation').append(breadcumb);\r\n }\r\n response.mobileNavItems.forEach(navItem => {\r\n var navItemProtoType = $('#mobNavProtoTypes')\r\n .find('.mobNavListItem')\r\n .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","let lastScrollTop = 0;\r\nconst scrollDelta = 150;\r\nconst navbarHeight = $('header').outerHeight();\r\n\r\nfunction showStickyNav() {\r\n const scrollTop = $(this).scrollTop();\r\n\r\n if (scrollTop === 0) {\r\n $('header').removeClass('sticky');\r\n $('main').css('padding-top', 0);\r\n lastScrollTop = scrollTop;\r\n return;\r\n }\r\n\r\n // Make sure they scroll more than delta\r\n if (Math.abs(lastScrollTop - scrollTop) <= scrollDelta) {\r\n return;\r\n }\r\n\r\n // If they scrolled down and are past the navbar, add class sticky.\r\n if (scrollTop > lastScrollTop && scrollTop > navbarHeight) {\r\n // Scroll Down\r\n $('header').removeClass('sticky');\r\n $('main').css('padding-top', 0);\r\n } else {\r\n // Scroll Up\r\n if (scrollTop + $(window).height() < $(document).height() && scrollTop < lastScrollTop) {\r\n $('header').addClass('sticky');\r\n $('main').css('padding-top', navbarHeight);\r\n }\r\n }\r\n\r\n lastScrollTop = scrollTop;\r\n}\r\n\r\n$(window).on('scroll', function() {\r\n showStickyNav();\r\n});\r\n","$('.menuItemContainer')\r\n .on('mouseenter', function() {\r\n const selectedElement = $(this);\r\n setTimeout(function() {\r\n if ($(selectedElement).is(':hover')) {\r\n const megaNav = selectedElement.children('.menuLevelContent').first();\r\n megaNav.removeClass('hidden');\r\n\r\n const button = selectedElement.children('.menuEntry').first();\r\n button.addClass('hover').attr('aria-expanded', 'true');\r\n\r\n const buttonIcon = button.find('i');\r\n buttonIcon.removeClass('fa-angle-down').addClass('fa-angle-up');\r\n }\r\n }, 300);\r\n })\r\n .on('mouseleave', function() {\r\n const selectedElement = $(this);\r\n setTimeout(function() {\r\n if ($(selectedElement).is(':hover') === false) {\r\n const megaNav = selectedElement.children('.menuLevelContent').first();\r\n megaNav.addClass('hidden');\r\n\r\n const button = selectedElement.children('.menuEntry').first();\r\n button.removeClass('hover').attr('aria-expanded', 'false');\r\n\r\n const buttonIcon = button.find('i');\r\n buttonIcon.removeClass('fa-angle-up').addClass('fa-angle-down');\r\n }\r\n }, 300);\r\n });\r\n\r\n$('.menuEntry').on('click', function() {\r\n const selectedElement = $(this);\r\n if (selectedElement.hasClass('hover')) {\r\n selectedElement.removeClass('hover').attr('aria-expanded', 'false');\r\n selectedElement.siblings('.menuLevelContent').addClass('hidden');\r\n\r\n const buttonIcon = $(this).find('i');\r\n buttonIcon.removeClass('fa-angle-up').addClass('fa-angle-down');\r\n } else {\r\n selectedElement.addClass('hover').attr('aria-expanded', 'true');\r\n selectedElement.siblings('.menuLevelContent').removeClass('hidden');\r\n\r\n const buttonIcon = $(this).find('i');\r\n buttonIcon.removeClass('fa-angle-down').addClass('fa-angle-up');\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 { 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\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\r\n if ($(\"#loggedInFlag\").length > 0) {\r\n basketItem.find('.checkout-remember').attr('data-id', productId); \r\n }\r\n else {\r\n basketItem.find('.checkout-remember').remove();\r\n }\r\n \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 $(this).addClass('disabled-Element');\r\n deleteLineItemFromBasket($(this));\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 });\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 $('#produktvariantenModal').on('click', '.show-more-button', function() {\r\n if ($(this).prev().hasClass('snippet')) {\r\n $(this).html('Weniger anzeigen');\r\n }\r\n else {\r\n $(this).html('Mehr anzeigen');\r\n }\r\n $(this).prev().toggleClass('snippet');\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 .attr('for', 'produktvariante_checkbox_' + pricetypeId);\r\n newCheckItem.find('.produktvariante_description').html(price.description);\r\n newCheckItem.find('.produktvariante_specialConditions').html(price.specialConditions);\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 showModal(modal);\r\n showShowMoreButton();\r\n}\r\n\r\nfunction showShowMoreButton() {\r\n $(\".mobile-description\").each(function() {\r\n let element = $(this);\r\n if (element.height() > 100) {\r\n element.addClass('snippet');\r\n }\r\n else {\r\n element.siblings('.show-more-button').remove();\r\n }\r\n });\r\n \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.show();\r\n}\r\n\r\nfunction hideModal(modal: JQuery) {\r\n $('body').removeClass('modal-open');\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","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 img').attr('alt', `Cover ${product.title}`);\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","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 checkForSwiperSlider();\r\n\r\n let windowWidth = $(window).width();\r\n if (windowWidth <= 768) {\r\n setSlideGroupBig = 1;\r\n setSlideGroupSmall = 1;\r\n } else if (windowWidth <= 1200) {\r\n setSlideGroupBig = 3;\r\n setSlideGroupSmall = 1;\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 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\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 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)\r\n .find('.swiper-wrapper')\r\n .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 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)\r\n .find('.swiper-wrapper')\r\n .removeClass('hide');\r\n return swiper;\r\n}\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 { recaptchaCallbackGuest } from '../Checkout/checkoutRecaptchaCallback';\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","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 { 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/*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 $(\"header\").css(\"height\", \"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 $(\"header\").css(\"height\", \"initial\");\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\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\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 \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 });\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 });\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 $(\"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\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}","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\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 checkoutAdd(button, !noModal, null);\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) {\r\n button.addClass('hide');\r\n spinnerModal.removeClass('hide');\r\n let pricetypeId = +button.data('pricetypeid');\r\n addItemToBasket(button, pricetypeId, showModal, ChosenDeliveryType);\r\n}\r\n\r\n/**\r\n * Fügt ein Produkt dem Warenkorb hinzu\r\n * @param e\r\n */\r\nfunction addItemToBasket(button: JQuery, pricetypeId: number, showModal: boolean, chosenDeliveryType?: number) {\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 (showModal) {\r\n fillModalWeiterShoppen(response);\r\n } else {\r\n window.location.href = '/warenkorb';\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":""}