{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./media/src/lib/datepicker lazy ^\\.\\/datepicker\\-.*$ namespace object","webpack:///./media/src/lib/jquery.validationEngine lazy ^\\.\\/jquery\\.validationEngine\\-.*$ namespace object","webpack:///./media/src/js/classes/device-information.js","webpack:///./media/src/js/classes/social-login.js","webpack:///./media/src/js/modules/favorites-service.js","webpack:///./media/src/js/modules/product-images.js","webpack:///./media/src/js/pages/layout2019.js"],"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","14","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","map","webpackAsyncContext","req","then","code","ids","id","keys","DeviceInformation","indexOf","navigator","platform","msMaxTouchPoints","SocialLoginService","constructor","this","googleSocialProcess","handleGoogleCredentialResponse","response","jsonResponse","JSON","parse","atob","credential","split","location","href","dynamicData","page","virtualRoot","email","given_name","family_name","loginSocialMedia","jti","dataLayer","log","signOut_Google","attachFacebook","element","FB","login","getLoginStatus","status","id_token","authResponse","accessToken","api","fields","first_name","last_name","scope","signOut_Facebook","logout","userLogin","socialMediaID","tokenID","socialMediaType","socialLoginService","FleuropWebShop","ProfileService","LoginSocialMedia","clearLoginAlert","enums","enmMyFleuropLoginStatus","Success","$","modal","codeFileName","val","angularOrderFormController","profile","getLoginState","toggleLoginState","session","loginStateIsLoggedIn","GetGreeting","html","Failed","setLoginAlert","textRepository","loginError","gtdl_push","NotVerified","loginNotVerifiedError","prop","NoPassword","ResetPassword","loginNoPasswordError","hide","toggleClass","alertClass","loginDiv","show","FavoritesService","productID","antiForgeryToken","getElementById","fetchOnce","method","headers","json","initializeProductImages","on","attr","dayjs","extend","require","languageCode2Digit","global","getPageNameFromDataLayer","pageType","configureFavorites","updateFavoriteCount","count","supportsTouch","tooltip","toggle","placement","title","favorites","favoritesAdd","click","async","product","closest","hasClass","removeClass","remove","addClass","add","favoritesContentPage","goToSearchPage","searchTerm","virtualLink","modeSettings","isSwissShop","onGoogleLibraryLoad","google","accounts","initialize","client_id","callback","lang","renderButton","theme","size","locale","ready","keyup","phoneContent","replace","toastr","options","thousand","decimal","accounting","settings","currency","symbol","format","precision","number","configureAccountingLibrary","keyCode","runningOnIOS","hover","showAttributePreview","width","preventDefault","stopPropagation","link","imageUrl","productCount","backgroundUrl","description","url","css","configureMenu","productList","each","index","widget","productId","productName","productPrice","find","text","productPosition","widgetName","widgetPosition","category","toUpperCase","list","nameEn","categoryEn","position","Cookiebot","consent","statistics","Cookies","set","enmProductReferer","AttributeListing","WidgetPage","price","onProductClick","slidesList","not","item","trim","extractUrl","bannersList","impressionsList","concat","onPromoClick","configureDataLayerEvents","focus","getQueryStringParameter","isB2C","containerDiv","password","Login","LoginB2B","reload","SendReminder","loginReminderSent","loginReminderError","SendReminderB2B","Logout","homeLink","greeting","configureLoginSection","Mousetrap","copyrightClickCount","fillTestOrder","configureHotkeys","showPendingNotifications","scrollTo","defaults","offset","top","scrollingOffsetWithContext","duration","scrollToParam","configureScrolling","expressCatalogLink","autoComplete","source","configureSource","countryRegNr","delay","minChars","renderItem","configureRenderItem","onSelect","term","newRegNr","regNr","FloristService","GetExpressDetails","ExpressAvailable","guaranteedDateString","GuaranteedDeliveryTime","select2","placeholder","allowClear","selectOnClose","siblings","$selection","one","input","inputPlaceHolder","after","renew","clickedItemName","__doPostBack","enquire","register","Image","pushVirtualBasketToDatalayer","transmissionToNonEuCountries","__lc","license","group","liveChatGroup","params","loginStateAdrNr","loginStateContactAdrNr","loginStateEmail","lc","protocol","getElementsByTagName","parentNode","insertBefore","configureLiveChat","configureValidationEngine","selector","config","autoPositionUpdate","promptPosition","autoHidePrompt","autoHideDelay","binded","scrollOffset","scrollingOffset","focusFirstField","validationEngine","configureZipTownDropdown","language","noResults","dropdownRecipientZipCityNotFoundMessage","ajax","dataType","cache","processResults","searchResults","zipPlaceRegNr","zip","place","results","pagination","more"],"mappings":"aACE,SAASA,EAAqBC,GAQ7B,IAPA,IAMIC,EAAUC,EANVC,EAAWH,EAAK,GAChBI,EAAcJ,EAAK,GACnBK,EAAiBL,EAAK,GAIHM,EAAI,EAAGC,EAAW,GACpCD,EAAIH,EAASK,OAAQF,IACzBJ,EAAUC,EAASG,GAChBG,OAAOC,UAAUC,eAAeC,KAAKC,EAAiBX,IAAYW,EAAgBX,IACpFK,EAASO,KAAKD,EAAgBX,GAAS,IAExCW,EAAgBX,GAAW,EAE5B,IAAID,KAAYG,EACZK,OAAOC,UAAUC,eAAeC,KAAKR,EAAaH,KACpDc,EAAQd,GAAYG,EAAYH,IAKlC,IAFGe,GAAqBA,EAAoBhB,GAEtCO,EAASC,QACdD,EAASU,OAATV,GAOD,OAHAW,EAAgBJ,KAAKK,MAAMD,EAAiBb,GAAkB,IAGvDe,IAER,SAASA,IAER,IADA,IAAIC,EACIf,EAAI,EAAGA,EAAIY,EAAgBV,OAAQF,IAAK,CAG/C,IAFA,IAAIgB,EAAiBJ,EAAgBZ,GACjCiB,GAAY,EACRC,EAAI,EAAGA,EAAIF,EAAed,OAAQgB,IAAK,CAC9C,IAAIC,EAAQH,EAAeE,GACG,IAA3BX,EAAgBY,KAAcF,GAAY,GAE3CA,IACFL,EAAgBQ,OAAOpB,IAAK,GAC5Be,EAASM,EAAoBA,EAAoBC,EAAIN,EAAe,KAItE,OAAOD,EAIR,IAAIQ,EAAmB,GAKnBhB,EAAkB,CACrBiB,GAAI,GAGDZ,EAAkB,GAQtB,SAASS,EAAoB1B,GAG5B,GAAG4B,EAAiB5B,GACnB,OAAO4B,EAAiB5B,GAAU8B,QAGnC,IAAIC,EAASH,EAAiB5B,GAAY,CACzCK,EAAGL,EACHgC,GAAG,EACHF,QAAS,IAUV,OANAhB,EAAQd,GAAUW,KAAKoB,EAAOD,QAASC,EAAQA,EAAOD,QAASJ,GAG/DK,EAAOC,GAAI,EAGJD,EAAOD,QAKfJ,EAAoBO,EAAI,SAAuBhC,GAC9C,IAAIiC,EAAW,GAKXC,EAAqBvB,EAAgBX,GACzC,GAA0B,IAAvBkC,EAGF,GAAGA,EACFD,EAASrB,KAAKsB,EAAmB,QAC3B,CAEN,IAAIC,EAAU,IAAIC,SAAQ,SAASC,EAASC,GAC3CJ,EAAqBvB,EAAgBX,GAAW,CAACqC,EAASC,MAE3DL,EAASrB,KAAKsB,EAAmB,GAAKC,GAGtC,IACII,EADAC,EAASC,SAASC,cAAc,UAGpCF,EAAOG,QAAU,QACjBH,EAAOI,QAAU,IACbnB,EAAoBoB,IACvBL,EAAOM,aAAa,QAASrB,EAAoBoB,IAElDL,EAAOO,IA1DV,SAAwB/C,GACvB,OAAOyB,EAAoBuB,EAAI,IAAM,CAAC,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,6BAA6B,EAAI,6BAA6B,EAAI,6BAA6B,GAAK,8BAA8BhD,IAAUA,GAAW,IAAM,CAAC,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,uBAAuB,EAAI,uBAAuB,GAAK,wBAAwBA,GAAW,UAyD1gBiD,CAAejD,GAG5B,IAAIkD,EAAQ,IAAIC,MAChBZ,EAAmB,SAAUa,GAE5BZ,EAAOa,QAAUb,EAAOc,OAAS,KACjCC,aAAaX,GACb,IAAIY,EAAQ7C,EAAgBX,GAC5B,GAAa,IAAVwD,EAAa,CACf,GAAGA,EAAO,CACT,IAAIC,EAAYL,IAAyB,SAAfA,EAAMM,KAAkB,UAAYN,EAAMM,MAChEC,EAAUP,GAASA,EAAMQ,QAAUR,EAAMQ,OAAOb,IACpDG,EAAMW,QAAU,iBAAmB7D,EAAU,cAAgByD,EAAY,KAAOE,EAAU,IAC1FT,EAAMY,KAAO,iBACbZ,EAAMQ,KAAOD,EACbP,EAAMa,QAAUJ,EAChBH,EAAM,GAAGN,GAEVvC,EAAgBX,QAAWgE,IAG7B,IAAIpB,EAAUqB,YAAW,WACxB1B,EAAiB,CAAEmB,KAAM,UAAWE,OAAQpB,MAC1C,MACHA,EAAOa,QAAUb,EAAOc,OAASf,EACjCE,SAASyB,KAAKC,YAAY3B,GAG5B,OAAOJ,QAAQgC,IAAInC,IAIpBR,EAAoB4C,EAAIxD,EAGxBY,EAAoB6C,EAAI3C,EAGxBF,EAAoB8C,EAAI,SAAS1C,EAASiC,EAAMU,GAC3C/C,EAAoBgD,EAAE5C,EAASiC,IAClCvD,OAAOmE,eAAe7C,EAASiC,EAAM,CAAEa,YAAY,EAAMC,IAAKJ,KAKhE/C,EAAoBoD,EAAI,SAAShD,GACX,oBAAXiD,QAA0BA,OAAOC,aAC1CxE,OAAOmE,eAAe7C,EAASiD,OAAOC,YAAa,CAAEC,MAAO,WAE7DzE,OAAOmE,eAAe7C,EAAS,aAAc,CAAEmD,OAAO,KAQvDvD,EAAoBwD,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQvD,EAAoBuD,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAK7E,OAAO8E,OAAO,MAGvB,GAFA5D,EAAoBoD,EAAEO,GACtB7E,OAAOmE,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOvD,EAAoB8C,EAAEa,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIR3D,EAAoB+D,EAAI,SAAS1D,GAChC,IAAI0C,EAAS1C,GAAUA,EAAOqD,WAC7B,WAAwB,OAAOrD,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAL,EAAoB8C,EAAEC,EAAQ,IAAKA,GAC5BA,GAIR/C,EAAoBgD,EAAI,SAASgB,EAAQC,GAAY,OAAOnF,OAAOC,UAAUC,eAAeC,KAAK+E,EAAQC,IAGzGjE,EAAoBuB,EAAI,wBAGxBvB,EAAoBkE,GAAK,SAASC,GAA2B,MAApBC,QAAQ3C,MAAM0C,GAAYA,GAEnE,IAAIE,EAAaC,OAAqB,aAAIA,OAAqB,cAAK,GAChEC,EAAmBF,EAAWlF,KAAK2E,KAAKO,GAC5CA,EAAWlF,KAAOf,EAClBiG,EAAaA,EAAWG,QACxB,IAAI,IAAI7F,EAAI,EAAGA,EAAI0F,EAAWxF,OAAQF,IAAKP,EAAqBiG,EAAW1F,IAC3E,IAAIU,EAAsBkF,EAI1BhF,EAAgBJ,KAAK,CAAC,GAAG,GAAG,IAErBM,I;;;;;;sFC5NT,IAAIgF,EAAM,CACT,kBAAmB,CAClB,GACA,GAED,qBAAsB,CACrB,GACA,GAED,kBAAmB,CAClB,GACA,GAED,qBAAsB,CACrB,GACA,GAED,kBAAmB,CAClB,GACA,GAED,qBAAsB,CACrB,GACA,GAED,kBAAmB,CAClB,GACA,GAED,qBAAsB,CACrB,GACA,IAGF,SAASC,EAAoBC,GAC5B,IAAI3E,EAAoBgD,EAAEyB,EAAKE,GAC9B,OAAOhE,QAAQC,UAAUgE,MAAK,WAC7B,IAAIrE,EAAI,IAAImB,MAAM,uBAAyBiD,EAAM,KAEjD,MADApE,EAAEsE,KAAO,mBACHtE,KAIR,IAAIuE,EAAML,EAAIE,GAAMI,EAAKD,EAAI,GAC7B,OAAO9E,EAAoBO,EAAEuE,EAAI,IAAIF,MAAK,WACzC,OAAO5E,EAAoBwD,EAAEuB,EAAI,MAGnCL,EAAoBM,KAAO,WAC1B,OAAOlG,OAAOkG,KAAKP,IAEpBC,EAAoBK,GAAK,IACzB1E,EAAOD,QAAUsE,G;;;;;;sFCpDjB,IAAID,EAAM,CACT,+BAAgC,CAC/B,GACA,GAED,kCAAmC,CAClC,GACA,GAED,+BAAgC,CAC/B,GACA,GAED,kCAAmC,CAClC,GACA,GAED,+BAAgC,CAC/B,GACA,GAED,kCAAmC,CAClC,GACA,GAED,+BAAgC,CAC/B,GACA,IAED,kCAAmC,CAClC,GACA,KAGF,SAASC,EAAoBC,GAC5B,IAAI3E,EAAoBgD,EAAEyB,EAAKE,GAC9B,OAAOhE,QAAQC,UAAUgE,MAAK,WAC7B,IAAIrE,EAAI,IAAImB,MAAM,uBAAyBiD,EAAM,KAEjD,MADApE,EAAEsE,KAAO,mBACHtE,KAIR,IAAIuE,EAAML,EAAIE,GAAMI,EAAKD,EAAI,GAC7B,OAAO9E,EAAoBO,EAAEuE,EAAI,IAAIF,MAAK,WACzC,OAAO5E,EAAoBwD,EAAEuB,EAAI,MAGnCL,EAAoBM,KAAO,WAC1B,OAAOlG,OAAOkG,KAAKP,IAEpBC,EAAoBK,GAAK,IACzB1E,EAAOD,QAAUsE,G;;;;;mECpDjB,kCAAO,MAAMO,EAET,sBACI,MAAO,CAAC,OAAQ,SAAU,QAAQC,QAAQC,UAAUC,WAAa,EAErE,uBACI,MAAO,iBAAkBd,QAAUa,UAAUE,oB;;;;;oECNrD,kCAAO,MAAMC,EAOTC,cACIC,KAAKC,oBAAsB,QAG/BC,+BAA+BC,GAC3B,IACI,IAAIC,EAAeC,KAAKC,MAAMC,KAAKJ,EAASK,WAAWC,MAAM,KAAK,KAElE,GAA8C,YAA1CX,EAAmBG,oBACnBS,SAASC,KAAOC,YAAYC,KAAKC,YAC7B,uBAAyBV,EAAaW,MACtC,MAAQX,EAAaY,WACrB,MAAQZ,EAAaa,gBACtB,EACsB,IAAInB,GACVoB,iBAAiBd,EAAaW,MAAOX,EAAae,IAAKhB,EAASK,WAAY,UAGnGY,UAAUzH,KAAK,CAAE,MAAS,cAAe,cAAiB,WAC1DiF,QAAQyC,IAAI,0BAEhB,MAAM1C,GACFC,QAAQyC,IAAI,yBAIpBC,kBAMAC,eAAeC,GACXC,GAAGC,OAAM,SAAUvB,GACfsB,GAAGE,gBAAe,SAASxB,GACvB,GAAwB,cAApBA,EAASyB,OACT,IAAIC,EAAW1B,EAAS2B,aAAaC,YAGrC5B,EAAS2B,aACTL,GAAGO,IAAI,MAAO,CAAEC,OAAQ,2CAA4C,SAAU9B,GAC1E,GAAe,qBAAXqB,EACAd,SAASC,KAAOC,YAAYC,KAAKC,YAAc,uBAAyBX,EAASY,MAAQ,MAAQZ,EAAS+B,WAAa,MAAQ/B,EAASgC,cACrI,EACsB,IAAIrC,GACVoB,iBAAiBf,EAASY,MAAOZ,EAASZ,GAAIsC,EAAU,YAG/ET,UAAUzH,KAAK,CAAE,MAAS,cAAe,cAAiB,aAC1DiF,QAAQyC,IAAI,+BAGhBzC,QAAQyC,IAAI,+BAGrB,CAAEe,MAAO,UAGhBC,mBACIZ,GAAGE,gBAAe,SAAUxB,GACxBsB,GAAGa,QAAO,SAAUnC,GAChBvB,QAAQyC,IAAI,mCAOxBH,iBAAiBqB,EAAWC,EAAeC,EAASC,GAChD,IAAIC,EAAqB,IAAI7C,GAER,IAAI8C,eAAeC,gBACzBC,iBAAiBP,EAAWC,EAAeC,EAASC,GAAiB,SAAUxI,GAC1FyI,EAAmBI,kBAEf7I,GAAU0G,YAAYoC,MAAMC,wBAAwBC,SACpDC,EAAE,eAAeC,MAAM,QACc,aAAjCxC,YAAYC,KAAKwC,cACjBF,EAAE,8BAA8BG,IAAI,IACpCC,2BAA2BC,QAAQC,gBACnCd,EAAmBe,mBACnB9C,YAAY+C,QAAQC,sBAAuB,EAC3ChB,eAAeC,eAAegB,aAAY,SAAU3J,GAChDiJ,EAAE,qBAAqBW,KAAK5J,OAGhCwG,SAASC,KAAOC,YAAYC,KAAKC,YAAc,kBAE5C5G,GAAU0G,YAAYoC,MAAMC,wBAAwBc,QAC3DpB,EAAmBqB,cAAcpD,YAAYqD,eAAeC,WAAY,gBACxEC,UAAU,IACHjK,GAAU0G,YAAYoC,MAAMC,wBAAwBmB,aAC3DzB,EAAmBqB,cAAcpD,YAAYqD,eAAeI,sBAAuB,iBACnFlB,EAAE,4BAA4BmB,KAAK,OAAQ1D,YAAYC,KAAKC,YAAc,qCAAuCC,OACjHoD,UAAU,KACHjK,GAAU0G,YAAYoC,MAAMC,wBAAwBsB,aAE3D3B,eAAeC,eAAe2B,cAAczD,OAC5C4B,EAAmBqB,cAAcpD,YAAYqD,eAAeQ,qBAAsB,qBAO9F1B,kBACII,EAAE,0BAA0BuB,OAGhChB,mBACIP,EAAE,gBAAgBwB,YAAY,UAC9BxB,EAAE,iBAAiBwB,YAAY,UAGnCX,cAAcpH,EAASgI,GACnB,IAAIC,EAAW1B,EAAE,8BACjB0B,EAASP,KAAK,QAAS,SAAWM,GAClCC,EAASf,KAAKlH,GAEduG,EAAE,0BAA0B2B,U;;;;;kEC9HpC,oEAEO,MAAMC,EAET,iBAAiBC,GACb,IAAIC,EAAmBzJ,SAAS0J,eAAe,0BAA0BnH,MAOzE,aANqBoH,YAAU,GAAD,OAAIvE,YAAYC,KAAKC,YAArB,uCAA+DkE,GAAa,CACtGI,OAAQ,OACRC,QAAS,CACL,sBAAuBJ,MAGfK,OAGpB,oBAAoBN,GAChB,IAAIC,EAAmBzJ,SAAS0J,eAAe,0BAA0BnH,MAOzE,aANqBoH,YAAU,GAAD,OAAIvE,YAAYC,KAAKC,YAArB,0CAAkEkE,GAAa,CACzGI,OAAQ,SACRC,QAAS,CACL,sBAAuBJ,MAGfK,U;;;;;yECvBjB,SAASC,IAMZpC,EAAE,qEAAqEqC,GAAG,YAAa,OAAO,WACzD,KAA9BrC,EAAEnD,MAAMyF,KAAK,cACZtC,EAAEnD,MAAMyF,KAAK,MAAOtC,EAAEnD,MAAMyF,KAAK,iBAIzCtC,EAAE,qEAAqEqC,GAAG,WAAY,OAAO,WACzFrC,EAAEnD,MAAMyF,KAAK,MAAOtC,EAAEnD,MAAMyF,KAAK,gBAKrCtC,EAAE,iCAAiCqC,GAAG,YAAa,OAAO,WACrB,KAA9BrC,EAAEnD,MAAMyF,KAAK,cACZtC,EAAEnD,MAAMyF,KAAK,MAAOtC,EAAEnD,MAAMyF,KAAK,iBAIzCtC,EAAE,iCAAiCqC,GAAG,WAAY,OAAO,WACjDrC,EAAEnD,MAAMyF,KAAK,MAAOtC,EAAEnD,MAAMyF,KAAK,mBAzB7C,mC;;;;;;;;;;;;wGCAA,iUASAC,IAAMC,OAAOC,yBAAQ,MAGrB,8BAAmFhF,YAAY+C,QAAQkC,qBAGvGC,EAAOJ,MAAQA,IAEf,IAAI/C,EAAqB,IAAI7C,IAmJ7B,SAASiG,IACL,IAAI7L,EAAS,GAIb,OAHIkH,UAAU,IAAMA,UAAU,GAAG4E,WAC7B9L,EAASkH,UAAU,GAAG4E,UAEnB9L,EAgZX,SAAS+L,IA6CL,SAASC,EAAoBC,GACzBhD,EAAE,gDAAgDW,KAAKqC,GA3CtD1G,IAAkB2G,iBACnBjD,EAAE,aAAakD,QAAQ,CACnBC,OAAQ,UACRC,UAAW,OACXzC,MAAM,EACN0C,MAAO,sBAAF,OAAwB5F,YAAYqD,eAAewC,UAAnD,uBAA2E7F,YAAYqD,eAAeyC,gBAInHvD,EAAE,aAAawD,OAAMC,iBAEjB,IAAIC,EAAU1D,EAAEnD,MAAM8G,QAAQ,YAER,GAAlBD,EAAQxN,SACRwN,EAAU1D,EAAEnD,MAAM8G,QAAQ,uBAC9B,IAAI9B,EAAY6B,EAAQhO,KAAK,MAE7B,GAAGsK,EAAEnD,MAAM+G,SAAS,SAAU,CAC1B5D,EAAEnD,MAAMgH,YAAY,SAEpBd,QADkBnB,IAAiBkC,OAAOjC,QAGvC,CACH7B,EAAEnD,MAAMkH,SAAS,SAEjBhB,QADkBnB,IAAiBoC,IAAInC,IAK3C7B,EAAE,kBAAkBwB,YAAY,eAChC3H,YAAW,WACPmG,EAAE,kBAAkBwB,YAAY,iBACjC,QAGPxB,EAAE,kBAAkBwD,OAAM,WACiB,GAAnCxD,EAAE,uBAAuBW,OACzBpD,SAASC,KAAOC,YAAYC,KAAKuG,qBAEjC1G,SAASC,KAAO,gBAiU5B,SAAS0G,IACL,IAAIC,EAAanE,EAAE,sBAAsBG,MACzC5C,SAASC,KAAOC,YAAYC,KAAK0G,YAAc,cAAgBD,EAtF/DnE,EAAE,sBAAsBsC,KAAK,eAAgB,OAtxBzC7E,YAAY4G,aAAaC,cACzB3I,OAAO4I,oBAAsB,KAEzBC,OAAOC,SAASrI,GAAGsI,WAAW,CAC1BC,UAAW,2EACXC,SAAUpF,EAAmBzC,iCAGjC,IAAI8H,EAAOpH,YAAY+C,QAAQkC,mBAE3BrK,SAAS0J,eAAe,0BACxByC,OAAOC,SAASrI,GAAG0I,aACfzM,SAAS0J,eAAe,yBACpB,CAAEgD,MAAO,UAAWC,KAAM,QAASC,OAAQJ,IAInDxM,SAAS0J,eAAe,0BACxByC,OAAOC,SAASrI,GAAG0I,aACfzM,SAAS0J,eAAe,yBACpB,CAAEgD,MAAO,UAAWC,KAAM,QAASC,OAAQJ,MAS/D7E,EAAE,2BAA2BwD,OAAM,WAC/BhE,EAAmBpB,eAAe,wBAGtC4B,EAAE,wBAAwBwD,OAAM,WAC5BhE,EAAmBpB,eAAe,sBAGtC4B,EAAE,wBAAwBwD,OAAM,WAC5BhE,EAAmBpB,eAAe,sBAzE1C4B,EAAE3H,UAAU6M,OAAM,WA+zBdlF,EAAE,6CAA6CmF,OAAM,WACjD,IAAIC,EAAepF,EAAEnD,MAAMsD,MAC3BiF,EAAeA,EAAaC,QAAQ,WAAY,IAChDrF,EAAEnD,MAAMsD,IAAIiF,MAMhBE,OAAOC,QAAU,CACb,aAAe,EACf,OAAS,EACT,aAAe,EACf,aAAe,EACf,cAAiB,kBACjB,mBAAqB,EACrB,QAAW,KACX,aAAgB,MAChB,aAAgB,OAChB,QAAW,OACX,gBAAmB,OACnB,WAAc,QACd,WAAc,SACd,WAAc,SACd,WAAc,WA1DtB,WAEI,GAAI9H,YAAY4G,aAAaC,YACzB,IAAIkB,EAAW,GACXC,EAAU,SAEVD,EAAW,GACXC,EAAU,IAGlBC,WAAWC,SAAW,CAClBC,SAAU,CACNC,OAAQ,IACRC,OAAQ,OACRL,QAASA,EACTD,SAAUA,EACVO,UAAW,GAEfC,OAAQ,CACJD,UAAW,EACXP,SAAUA,EACVC,QAASA,IA/yBjBQ,GA2EAjG,EAAE,sBAAsBmF,OAAM,SAAUnM,GAEf,IAAjBA,EAAMkN,SACNhC,OAGRlE,EAAE,uBAAuBwD,OAAM,WAC3BU,OAIR,WAGS5H,IAAkB6J,gBACnBnG,EAAE,2BAA2BoG,OAAM,WAE/BC,EADWrG,EAAEnD,UAMjBP,IAAkB2G,iBAClBjD,EAAE,2BAA2BwD,OAAM,SAAU5L,GACrCoI,EAAErE,QAAQ2K,SAAW,MAErBD,EADWrG,EAAEnD,OAEbjF,EAAE2O,iBACF3O,EAAE4O,sBAKd,SAASH,EAAqBI,GAC1B,IAqBkBC,EArBdC,EAAeF,EAAK/Q,KAAK,SACzBkR,EAAgBH,EAAK/Q,KAAK,SAC1B2N,EAAQoD,EAAK/Q,KAAK,SAClBmR,EAAcJ,EAAK/Q,KAAK,eACxBoR,EAAML,EAAKnE,KAAK,QAGC,IAAjBsE,IACAA,EAAgBnJ,YAAYC,KAAKC,YAAc,sDAajC+I,EAXLE,EAYH5G,EAAE,WAAWsC,KAAK,MAAOoE,GAClCrE,GAAG,QAAQ,WACJrC,EAAE,6BAA6B+G,IAAI,mBAAoB,OAASL,EAAW,QAbnF1G,EAAE,2CAA2CW,KAAKgG,GAClD3G,EAAE,4BAA4BW,KAAK0C,GACnCrD,EAAE,uBAAuBW,KAAKkG,GAC9B7G,EAAE,uBAAuBsC,KAAK,OAAQwE,GAEL,WADnB9G,EAAE,+BACJ+G,IAAI,eACZ/G,EAAE,+BAA+B+G,IAAI,aAAc,YA5H3DC,GAgJJ,WAGI,IAAIC,EAAc,GAClBjH,EAAE,oDAAoDkH,MAAK,SAAUC,GACjE,IAAIC,EAASpH,EAAEnD,MAAM8G,QAAQ,oBACzBD,EAAU1D,EAAEnD,MACZwK,EAAY3D,EAAQhO,KAAK,MACzB4R,EAAc5D,EAAQhO,KAAK,UAC3B6R,EAAe7D,EAAQ8D,KAAK,UAAUC,OACtCC,EAAkBN,EAAOI,KAAK,YAAYL,MAAMzD,GAAW,EAE3DiE,EAAaP,EAAOI,KAAK,MAAM7G,OAC/BiH,EAAiB5H,EAAE,oBAAoBmH,MAAMC,GAAU,EACvDS,EAAWpK,YAAY+C,QAAQkC,mBAAmBoF,cAAgB,YAAcH,EAEhFI,EADWnF,IACO,WAAagF,EAEnCX,EAAYzQ,KAAK,CACb,GAAM6Q,EAAW,KAAQC,EAAa,MAASC,EAAc,MAAS,UAAW,SAAYM,EAC7F,KAAQE,EAAM,SAAYL,OAG9BT,EAAY/Q,OAAS,GACrB+H,UAAUzH,KAAK,CACX,MAAS,mBACT,UAAa,CACT,aAAgB,MAChB,YAAeyQ,KAM3BjH,EAAE,qEAAqEqC,GAAG,QAAS,KAAK,SAAUzK,GAC9F,IAAIqP,EAAcjH,EAAEnD,MAAM8G,QAAQ,kBAC9BD,EAAU1D,EAAEnD,MAAM8G,QAAQ,YAC1B0D,EAAY3D,EAAQhO,KAAK,MACzBsS,EAAStE,EAAQhO,KAAK,UACtBuS,EAAa,GACbF,EAAO,GACPG,EAAW,EACf,GAAIjB,EAAYvR,KAAK,aAEjBuS,EAAahB,EAAYvR,KAAK,aAC9BqS,EAAO,iBACPG,EAAWlI,EAAE,YAAYmH,MAAMzD,GAC3ByE,UAAUC,QAAQC,YAClBC,QAAQC,IAAI,iBAAkB9K,YAAYoC,MAAM2I,kBAAkBC,sBACnE,CAEH,IAAIrB,EAASpH,EAAEnD,MAAM8G,QAAQ,oBACzBgE,EAAaP,EAAOI,KAAK,MAAM7G,OAC/BiH,EAAiB5H,EAAE,oBAAoBmH,MAAMC,GAAU,EAC3Da,EAAaxK,YAAY+C,QAAQkC,mBAAmBoF,cAAgB,YAAcH,EAElFI,EADenF,IACG,WAAagF,EAC/BM,EAAWd,EAAOI,KAAK,YAAYL,MAAMzD,GAAW,EAChDyE,UAAUC,QAAQC,YAClBC,QAAQC,IAAI,iBAAkB9K,YAAYoC,MAAM2I,kBAAkBE,YAClEP,UAAUC,QAAQC,YAClBC,QAAQC,IAAI,iBAAkBR,GAEtC,IAAIY,EAAQjF,EAAQ8D,KAAK,UAAUC,OAEnCmB,eAAe/L,KAAM,CACjB,KAAQmL,EAAQ,GAAMX,EAAW,MAASsB,EAAO,MAAS,UAC1D,SAAYV,EAAY,KAAQF,EAAM,SAAYG,OAK1D,IAAIW,EAAa,GACjB7I,EAAE,0BAA0B8I,IAAI,WAAW5B,MAAK,SAAUC,GACtD,IAAI4B,EAAO/I,EAAEnD,MAAM2K,KAAK,SACpBU,EAAWf,EAAQ,EACnB/K,EAAK,UAAY8L,EACjBxO,EAAOqP,EAAKvB,KAAK,MAAM7G,OAAOqI,OAC9BlC,EAAMmC,WAAWF,EAAKhC,IAAI,qBAC9B8B,EAAWrS,KAAK,CAAE,GAAM4F,EAAI,KAAQ1C,EAAM,SAAYoN,EAAK,SAAYoB,OAE3E,IAAIgB,EAAc,GAClBlJ,EAAE,gBAAgBkH,MAAK,SAAUC,GAC7B,IAAI4B,EAAO/I,EAAEnD,MACTnD,EAAOqP,EAAKvB,KAAK,MAAM7G,OAAOqI,OAC9Bd,EAAWf,EAAQ,EACnB/K,EAAK,eAAiB8L,EACtBpB,EAAMmC,WAAWF,EAAKhC,IAAI,qBAC9BmC,EAAY1S,KAAM,CAAE,GAAM4F,EAAI,KAAQ1C,EAAM,SAAYoN,EAAK,SAAYoB,OAE7E,IAAIiB,EAAkBN,EAAWO,OAAOF,GACpCC,EAAgBjT,OAAS,GACzB+H,UAAUzH,KAAK,CACX,MAAS,cACT,UAAa,CACT,UAAa,CACT,WAAc2S,MAO9BnJ,EAAE,gBAAgBqC,GAAG,QAAS,KAAK,SAAUzK,GACzC,IAAImR,EAAO/I,EAAEnD,MAAM8G,QAAQ,gBACvBjK,EAAOqP,EAAKvB,KAAK,MAAM7G,OAAOqI,OAC9Bd,EAAWlI,EAAE,gBAAgBmH,MAAM4B,GAAQ,EAC3C3M,EAAK,eAAiB8L,EACtBpB,EAAMmC,WAAWF,EAAKhC,IAAI,qBAE9BsC,aAAaxM,KADG,CAAE,GAAMT,EAAI,KAAQ1C,EAAM,SAAYoN,EAAK,SAAYoB,OAKtE5L,IAAkB2G,iBACnBb,cAlQJkH,GAsQJ,WACI9J,EAAmBI,kBAEfnC,YAAY+C,QAAQC,qBACpBT,EAAE,gBAAgBwB,YAAY,UAE9BxB,EAAE,iBAAiBwB,YAAY,UAEnCxB,EAAE,+BAA+BqC,GAAG,iBAAiB,WACjDrB,UAAU,GACVnH,YAAW,WACPmG,EAAE,gBAAgBuJ,UACnB,QAG0C,QAA7CC,wBAAwB,oBACpB/L,YAAY4G,aAAaoF,MACzBzJ,EAAE,eAAeC,MAAM,QAEvBD,EAAE,mBAAmBC,MAAM,SAGqB,QAApDuJ,wBAAwB,2BACpB/L,YAAY4G,aAAaoF,MACzBzJ,EAAE,eAAeC,MAAM,QAAQuH,KAAK,iBAAiBhE,QAErDxD,EAAE,mBAAmBC,MAAM,QAAQuH,KAAK,iBAAiBhE,SAsHjE,SAAS3C,EAAcpH,EAASgI,GAC5B,IAAIC,EAAW1B,EAAE,8BACjB0B,EAASP,KAAK,QAAS,SAAWM,GAClCC,EAASf,KAAKlH,GAEduG,EAAE,0BAA0B2B,OAxHhC3B,EAAE,qBAAqBwD,OAAM,WACrB/F,YAAY4G,aAAaoF,MACzBlM,SAASC,KAAOC,YAAYC,KAAKC,YAAc,iBAE/CJ,SAASC,KAAOC,YAAYC,KAAKC,YAAc,yBAIvDqC,EAAE,iBAAiBwD,OAAM,SAAU5L,GAC/BA,EAAE2O,iBACF,IAAImD,EAAe1J,EAAEnD,MAAM8G,QAAQ,kBAC/B/F,EAAQ8L,EAAalC,KAAK,gBAAgBrH,MAC1CwJ,EAAWD,EAAalC,KAAK,mBAAmBrH,MACpDV,eAAeC,eAAekK,MAAMhM,EAAO+L,GAAU,SAAU5S,GAC3DyI,EAAmBI,kBAEf7I,GAAU0G,YAAYoC,MAAMC,wBAAwBC,SACpDC,EAAE,eAAeC,MAAM,QACc,aAAjCxC,YAAYC,KAAKwC,cACjBF,EAAE,8BAA8BG,IAAI,IACpCC,2BAA2BC,QAAQC,gBAwG/CN,EAAE,gBAAgBwB,YAAY,UAC9BxB,EAAE,iBAAiBwB,YAAY,UAvGnB/D,YAAY+C,QAAQC,sBAAuB,GAE3ClD,SAASC,KAAOC,YAAYC,KAAKC,YAAc,iBAEnDM,UAAUzH,KAAK,CAAE,MAAS,iBACnBO,GAAU0G,YAAYoC,MAAMC,wBAAwBc,QAC3DC,EAAcpD,YAAYqD,eAAeC,WAAY,gBACrDC,UAAU,IACHjK,GAAU0G,YAAYoC,MAAMC,wBAAwBmB,aAC3DJ,EAAcpD,YAAYqD,eAAeI,sBAAuB,iBAChElB,EAAE,4BAA4BmB,KAAK,OAAQ1D,YAAYC,KAAKC,YAAc,qCAAuCC,GACjHoD,UAAU,KACHjK,GAAU0G,YAAYoC,MAAMC,wBAAwBsB,aAE3D3B,eAAeC,eAAe2B,cAAczD,GAC5CiD,EAAcpD,YAAYqD,eAAeQ,qBAAsB,wBAK3EtB,EAAE,gBAAgBwD,OAAM,SAAU5L,GAC9BA,EAAE2O,iBAEF,IAAImD,EAAe1J,EAAEnD,MAAM8G,QAAQ,kBAC/B/F,EAAQ8L,EAAalC,KAAK,gBAAgBrH,MAC1CwJ,EAAWD,EAAalC,KAAK,mBAAmBrH,MAEpDV,eAAeC,eAAemK,SAASjM,EAAO+L,GAAU,SAAU5S,GAC9DyI,EAAmBI,kBAEf7I,GAAU0G,YAAYoC,MAAMC,wBAAwBC,SACpDC,EAAE,mBAAmBC,MAAM,QAEU,aAAjCxC,YAAYC,KAAKwC,aACjB3C,SAASuM,SAETvM,SAASC,KAAOC,YAAYC,KAAKC,YAAc,uBAE5C5G,GAAU0G,YAAYoC,MAAMC,wBAAwBsB,WAC3DP,EAAcpD,YAAYqD,eAAeQ,qBAAsB,iBAI/DT,EAAcpD,YAAYqD,eAAeC,WAAY,sBAKjEf,EAAE,qBAAqBwD,OAAM,WACzB,IAAIkG,EAAe1J,EAAEnD,MAAM8G,QAAQ,kBAC/B/F,EAAQ8L,EAAalC,KAAK,gBAAgBrH,MAE9CuJ,EAAalC,KAAK,sBAAsB7F,OACf+H,EAAalC,KAAK,wBACxBrH,IAAIvC,GAAO2L,WAGlCvJ,EAAE,oBAAoBwD,OAAM,SAAU5L,GAClCA,EAAE2O,iBACF,IAAImD,EAAe1J,EAAEnD,MAAM8G,QAAQ,kBACnCnE,EAAmBI,kBACnB,IAAIrB,EAAQmL,EAAalC,KAAK,wBAAwBrH,MACtDV,eAAeC,eAAeqK,aAAaxL,GAAO,SAAUxH,GACpDA,GACA8J,EAAcpD,YAAYqD,eAAekJ,kBAAmB,iBAC5DhK,EAAE,sBAAsBuB,QAGxBV,EAAcpD,YAAYqD,eAAemJ,mBAAoB,sBAIzEjK,EAAE,uBAAuBwD,OAAM,SAAU5L,GACrCA,EAAE2O,iBACF,IACIhI,EADeyB,EAAEnD,MAAM8G,QAAQ,kBACV6D,KAAK,wBAAwBrH,MAEtDX,EAAmBI,kBACnBH,eAAeC,eAAewK,gBAAgB3L,GAAO,SAAUxH,GACvDA,GACA8J,EAAcpD,YAAYqD,eAAekJ,kBAAmB,iBAC5DhK,EAAE,sBAAsBuB,QAGxBV,EAAcpD,YAAYqD,eAAemJ,mBAAoB,sBAsBzEjK,EAAE,iBAAiBwD,OAAM,WACrB,GAAI/F,YAAY4G,aAAaC,YAAa,CACtC,IAAM9E,EAAmBrB,iBAAoB,UAC7C,IAAMqB,EAAmBN,mBAAsB,WAGnDO,eAAeC,eAAeyK,QAAO,WACI,OAAjC1M,YAAYC,KAAKwC,aACjB3C,SAASuM,SAETvM,SAASC,KAAOC,YAAYC,KAAK0M,eAM7CpK,EAAE,iBAAiBqC,GAAG,SAAQ,WAC1B,IAAIwC,EAAOpH,YAAY+C,QAAQkC,mBAE/B8B,OAAOC,SAASrI,GAAG0I,aACfzM,SAAS0J,eAAe,yBACpB,CAAEgD,MAAO,UAAWC,KAAM,QAASC,OAAQJ,OAMvD7E,EAAE,gCAAgCqC,GAAG,SAAQ,WACzC,IAAIwC,EAAOpH,YAAY+C,QAAQkC,mBAE/B/F,IAAmBG,oBAAsB,WAEzC0H,OAAOC,SAASrI,GAAG0I,aACfzM,SAAS0J,eAAe,4BACpB,CAAEgD,MAAO,UAAWC,KAAM,QAASC,OAAQJ,OAIvD7E,EAAE,6BAA6BqC,GAAG,SAAQ,WACtC1F,IAAmBG,oBAAsB,WAKZ,IAA7BW,YAAYC,KAAK2M,UACjBrK,EAAE,qBAAqBW,KAAKlD,YAAYC,KAAK2M,UA/cjDC,GAmdJ,WAIIC,UAAUpP,KAAK,OAAO,WAClBoC,SAASC,KAAOC,YAAYC,KAAKC,YAAc,SAInD4M,UAAUpP,KAAK,OAAO,WAClBoC,SAASC,KAAOC,YAAYC,KAAKC,eAIrC4M,UAAUpP,KAAK,SAAS,WACpBoC,SAASC,KAAOC,YAAYC,KAAKC,YAAc,6CAInD4M,UAAUpP,KAAK,OAAO,WACdsC,YAAY4G,aAAaoF,MACzBlM,SAASC,KAAOC,YAAYC,KAAKC,YAAc,oBAE/CJ,SAASC,KAAOC,YAAYC,KAAKC,YAAc,0BAIvD4M,UAAUpP,KAAK,OAAO,WAClBoC,SAASC,KAAOC,YAAYC,KAAKC,YAAc,UAMnD,IAAI6M,EAAsB,EAC1BxK,EAAE,mBAAmBqC,GAAG,SAAS,WAC7BmI,IACA3Q,WAAW,KACqB,IAAxB2Q,EACAjN,SAASC,KAAOC,YAAYC,KAAKC,YAAc,OAClB,IAAxB6M,GACwB,mBAAlBC,eACPA,gBAERD,EAAsB,GACvB,QAMPD,UAAUpP,KAAK,OAAO,SAAUvD,GAC5BA,EAAE2O,iBACFvG,EAAE,sBAAsBuJ,WAvgB5BmB,GACAC,2BA0gBJ,WAEI3K,EAAEwC,OAAOxC,EAAE4K,SAASC,SAAU,CAC1BC,OAAQ,CAAEC,IAAKtN,YAAYC,KAAKsN,4BAChCC,SAAU,MAId,IAAIC,EAAgB1B,wBAAwB,YACvB,IAAjB0B,IACAA,EAAgB,IAAMA,EACtBlL,EAAE4K,SAAS5K,EAAEkL,KAphBjBC,GACArI,IA4kBA9C,EAAE,oBAAoBwD,OAAM,WACxBjG,SAASC,KAAOC,YAAY4G,aAAa+G,sBAI7CpL,EAAE,wBAAwBwD,OAAM,WAE5BxD,EAAE,wBAAwBC,MAAM,QAChCD,EAAE,wBAAwBG,IAAIH,EAAE,wBAAwBG,OACxDH,EAAE,wBAAwBuJ,WAI9BvJ,EAAE,wBAAwBqL,aAAa,CACnCC,OAAQC,iBAAgB,WAAc,OAAO9N,YAAY+C,QAAQgL,gBACjEC,MAAO,IACPC,SAAU,EACVC,WAAYC,sBACZC,SAAU,SAAUjU,EAAGkU,EAAM/C,GACzB,IAAIgD,EAAWhD,EAAKrT,KAAK,SAErBqW,GAAY/L,EAAE,gCAAgCG,QAC9CH,EAAE,gCAAgCG,IAAI4L,GACtC/L,EAAE,wBAAwBG,IAAIH,EAAE,wBAAwBG,WAMpEH,EAAE,wBAAwBmF,OAAM,SAAUvN,GAErB,IAAbA,EAAEsO,SAA8B,GAAbtO,EAAEsO,QAC0B,IAA3ClG,EAAE,gCAAgCG,QAClCH,EAAE,gCAAgCG,IAAI,IACtCH,EAAE,wBAAwBG,IAAI,IAC9BH,EAAE,wBAAwBG,IAAI,KAEd,GAAbvI,EAAEsO,SAA6B,IAAbtO,EAAEsO,SAA8B,IAAbtO,EAAEsO,SAC9ClG,EAAE,gCAAgCG,IAAI,OAK9CH,EAAE,gCAAgCwD,OAAM,WACpC,IAAIwI,EAAQhM,EAAE,gCAAgCG,MAe9CH,EAAE,qBAAqB+D,SAAS,UAChC/D,EAAE,wBAAwB+D,SAAS,UAbnCtE,eAAewM,eAAeC,kBAAkBF,GAAO,SAAUjV,GAC7D,GAAIA,EAAOoV,iBAAkB,CACzB,IAAIC,EAAuB7J,IAAMxL,EAAOsV,wBAAwBvG,OAAO,sBACvE9F,EAAE,8BAA8BW,KAAKyL,GACrCpM,EAAE,qBAAqBwB,YAAY,eAEnCxB,EAAE,wBAAwBwB,YAAY,gBAalDxB,EAAE,oBAAoBsM,QAAQ,CAC1BC,YAAa,WACTvM,EAAEnD,MAAMnH,KAAK,gBAEjB8W,YAAY,EACZC,eAAe,IAInBzM,EAAE3H,UAAUgK,GAAG,QAAS,gDAAgD,SAAUzK,GAC9EoI,EAAEnD,MAAM8G,QAAQ,sBAAsB+I,SAAS,kBAAkBJ,QAAQ,WAI7EtM,EAAE,kBAAkBqC,GAAG,mBAAmB,SAAUzK,GAChDoI,EAAEpI,EAAE4B,QAAQ9D,KAAK,WAAWiX,WAAWC,IAAI,iBAAiB,SAAUhV,GAClEA,EAAE4O,wBAMVxG,EAAE,oBAAoBqC,GAAG,SAAS,WAStC,IAA6BwK,EACrBN,EACAO,EAFqBD,EARD7M,EAAEnD,MAStB0P,EAAcvM,EAAE6M,GAAOvK,KAAK,eAC5BwK,EAAmB,oBAAoB9M,EAAE6M,GAAOvK,KAAK,MAEzDtC,EAAE,IAAI8M,GAAkBhJ,SACxB9D,EAAE6M,GAAO9I,SAAS,wBAEEnK,IAAhB2S,GACAvM,EAAE6M,GAAOE,MAAM,sCAAsCD,EAAiB,KAAKP,EAAY,cAb3FvM,EAAE,oBAAoBqC,GAAG,QAAQ,WAiBrC,IAAgCwK,EACxBC,EADwBD,EAhBD7M,EAAEnD,MAiBzBiQ,EAAmB,oBAAoB9M,EAAE6M,GAAOvK,KAAK,MAEzDtC,EAAE6M,GAAOhJ,YAAY,mBACrB7D,EAAE,IAAI8M,GAAkBhJ,YA4KxB9D,EAAE,uBAAuBwD,OAAM,WAC3B2E,UAAU6E,WAIdhN,EAAE,iBAAiBwD,OAAM,WACrBjG,SAASuM,YAQb9J,EAAE,mCAAmCqC,GAAG,SAAS,SAAUrJ,GACvD,IAAIiU,EAAkBjN,EAAEnD,MAAMyF,KAAK,MAAM+C,QAAQ,IAAK,IACtD6H,aAAa,uBAAyBD,EAAiB,IACvDjU,EAAMuN,uBAl3BdvG,EAAErE,QAAQ0G,GAAG,QAAQ,WAmwBjB8K,QAAQC,SAAS,iCAAiC,YAEpC,IAAIC,OACV1U,IAAM8E,YAAYC,KAAKC,YAAc,wDApwB7C2P,+BAs0BJ,WACI,IAAK7P,YAAY+C,QAAQ+M,6BAA8B,OAGvD5R,OAAO6R,KAAO7R,OAAO6R,MAAQ,GAC7B7R,OAAO6R,KAAKC,QAAU,QACtB9R,OAAO6R,KAAKE,MAAQjQ,YAAY4G,aAAasJ,cAC7ChS,OAAO6R,KAAKI,OAAS,CACjB,CAAElU,KAAM,cAAekB,MAAO6C,YAAY+C,QAAQqN,iBAClD,CAAEnU,KAAM,qBAAsBkB,MAAO6C,YAAY+C,QAAQsN,yBAEzDrQ,YAAY+C,QAAQC,sBACpB9E,OAAO6R,KAAKI,OAAOpX,KAAK,CAAEkD,KAAM,cAAekB,MAAO6C,YAAY+C,QAAQuN,mBAE9E,WACI,IAAIC,EAAK3V,SAASC,cAAc,UAChC0V,EAAG1U,KAAO,kBACV0U,EAAGvK,OAAQ,EACXuK,EAAGrV,KAAO,UAAYN,SAASkF,SAAS0Q,SAAW,WAAa,WAAa,kCAC7E,IAAI3W,EAAIe,SAAS6V,qBAAqB,UAAU,GAAI5W,EAAE6W,WAAWC,aAAaJ,EAAI1W,GALtF,GAn1BA+W,MA6jBJ1L,EAAOG,mBAAqBA,EAqI5BH,EAAO2L,0BAbP7K,eAAyC8K,EAAW,eAEhD,IAAI1J,EAAOpH,YAAY+C,QAAQkC,yBACzB,2CAAwGmC,IAE9G,IAAI2J,EAAS,CAETC,oBAAoB,EAAMC,eAAgB,oBAAqBC,gBAAgB,EAAMC,cAAe,IACpGC,QAAQ,EAAOC,cAAe,EAAIrR,YAAYC,KAAKqR,gBAAiBC,iBAAiB,GAGzFhP,EAAEuO,GAAUU,iBAAiBT,IA4DjC7L,EAAOuM,yBAxDP,WAE0BlP,EAAE,qBAERsM,QAAQ,CACpBE,YAAY,EACZ2C,SAAU,CACNC,UAAW,WACP,OAAO3R,YAAY4G,aAAagL,0CAGxCC,KAAM,CACFxI,IAAKrJ,YAAYC,KAAKC,YAAc,kBACpC4R,SAAU,OACV9D,MAAO,GACP+D,OAAO,EAEPjD,YAAa,WACTvM,EAAEnD,MAAMnH,KAAK,gBAGjBA,KAAM,SAAUkY,GACZ,IAAIlQ,EAAOkQ,EAAOlQ,MAAQ,EACtByG,EAAayJ,EAAO9B,MAAQ,GAQhC,MANY,CACRN,aAAc/N,YAAY+C,QAAQgL,aAClCrH,WAAYA,EACZzG,KAAMA,IAMd+R,eAAgB,SAAU/Z,GACtB,IAAIga,EAAgBha,EAAKoG,KAAI,SAAUiN,GAMnC,MALa,CACT3M,GAAI2M,EAAK4G,cACTlI,KAAMsB,EAAK6G,IAAM,MAAQ7G,EAAK8G,UAMtC,MAAO,CACHC,QAASJ,EACTK,WAAY,CACRC,KA9CL,IA8CYN,EAAcxZ,e","file":"layout2019.8d0979db9655fb8c5228.min.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\t14: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"0\":\"datePickerLanguages0\",\"1\":\"datePickerLanguages2\",\"2\":\"datePickerLanguages4\",\"3\":\"datePickerLanguages6\",\"7\":\"validationEngineLanguages0\",\"8\":\"validationEngineLanguages2\",\"9\":\"validationEngineLanguages4\",\"10\":\"validationEngineLanguages6\"}[chunkId]||chunkId) + \".\" + {\"0\":\"c554aa8c12016485e14f\",\"1\":\"842bd653cd711285db12\",\"2\":\"7cba28420973b817ae4b\",\"3\":\"22d33ad48a7eb93f47fe\",\"7\":\"adf37a134f6e376c503f\",\"8\":\"802c09613fac73daacec\",\"9\":\"88425af4c460c924eec6\",\"10\":\"a05090d6f17c40a99f90\"}[chunkId] + \".min.js\"\n \t}\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\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 = \"/media/dist/js/pages/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\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([89,21,5]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var map = {\n\t\"./datepicker-de\": [\n\t\t75,\n\t\t0\n\t],\n\t\"./datepicker-de.js\": [\n\t\t75,\n\t\t0\n\t],\n\t\"./datepicker-en\": [\n\t\t76,\n\t\t1\n\t],\n\t\"./datepicker-en.js\": [\n\t\t76,\n\t\t1\n\t],\n\t\"./datepicker-fr\": [\n\t\t77,\n\t\t2\n\t],\n\t\"./datepicker-fr.js\": [\n\t\t77,\n\t\t2\n\t],\n\t\"./datepicker-it\": [\n\t\t78,\n\t\t3\n\t],\n\t\"./datepicker-it.js\": [\n\t\t78,\n\t\t3\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 135;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./jquery.validationEngine-de\": [\n\t\t79,\n\t\t7\n\t],\n\t\"./jquery.validationEngine-de.js\": [\n\t\t79,\n\t\t7\n\t],\n\t\"./jquery.validationEngine-en\": [\n\t\t80,\n\t\t8\n\t],\n\t\"./jquery.validationEngine-en.js\": [\n\t\t80,\n\t\t8\n\t],\n\t\"./jquery.validationEngine-fr\": [\n\t\t81,\n\t\t9\n\t],\n\t\"./jquery.validationEngine-fr.js\": [\n\t\t81,\n\t\t9\n\t],\n\t\"./jquery.validationEngine-it\": [\n\t\t82,\n\t\t10\n\t],\n\t\"./jquery.validationEngine-it.js\": [\n\t\t82,\n\t\t10\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 7);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 136;\nmodule.exports = webpackAsyncContext;","export class DeviceInformation {\r\n\r\n static runningOnIOS() {\r\n return ['iPad', 'iPhone', 'iPod'].indexOf(navigator.platform) >= 0; \r\n } \r\n static supportsTouch() {\r\n return 'ontouchstart' in window || navigator.msMaxTouchPoints;\r\n }\r\n\r\n}","export class SocialLoginService {\r\n\r\n // Google SignIn\r\n // (can only be tested with https://localhost:8080\r\n // because our subdomain https://fleuropwebshop.localhost\r\n // is not accepted by google!)\r\n \r\n constructor() {\r\n this.googleSocialProcess = 'login';\r\n };\r\n\r\n handleGoogleCredentialResponse(response) {\r\n try {\r\n var jsonResponse = JSON.parse(atob(response.credential.split('.')[1]));\r\n\r\n if (SocialLoginService.googleSocialProcess == 'register') {\r\n location.href = dynamicData.page.virtualRoot +\r\n 'Registration.aspx?m=' + jsonResponse.email + \r\n '&f=' + jsonResponse.given_name + \r\n '&l=' + jsonResponse.family_name;\r\n } else {\r\n let socialLoginService = new SocialLoginService();\r\n socialLoginService.loginSocialMedia(jsonResponse.email, jsonResponse.jti, response.credential, 'Google');\r\n };\r\n \r\n dataLayer.push({ 'event': 'loginSocial', 'loginProvider': 'Google' });\r\n console.log('Google SignIn complete');\r\n }\r\n catch(err) {\r\n console.log('Google SignIn failed');\r\n }\r\n };\r\n\r\n signOut_Google() {\r\n //Google no longer allows to logout from himself ;-)\r\n };\r\n\r\n\r\n // Facebook SignIn\r\n attachFacebook(element) {\r\n FB.login(function (response) {\r\n FB.getLoginStatus(function(response) {\r\n if (response.status === 'connected') {\r\n var id_token = response.authResponse.accessToken;\r\n }\r\n\r\n if (response.authResponse) {\r\n FB.api('/me', { fields: 'id, name, email, first_name, last_name' }, function (response) {\r\n if (element == 'register-facebook') {\r\n location.href = dynamicData.page.virtualRoot + 'Registration.aspx?m=' + response.email + '&f=' + response.first_name + '&l=' + response.last_name;\r\n } else {\r\n let socialLoginService = new SocialLoginService();\r\n socialLoginService.loginSocialMedia(response.email, response.id, id_token, 'Facebook');\r\n }; \r\n\r\n dataLayer.push({ 'event': 'loginSocial', 'loginProvider': 'Facebook' });\r\n console.log('Facebook SignIn complete');\r\n });\r\n } else {\r\n console.log('Facebook SignIn failed');\r\n }\r\n });\r\n }, { scope: 'email' });\r\n };\r\n\r\n signOut_Facebook() {\r\n FB.getLoginStatus(function (response) {\r\n FB.logout(function (response) {\r\n console.log('Facebook SignOut complete');\r\n });\r\n });\r\n };\r\n\r\n\r\n // Login to MyFleurop (with Google or Facebook)\r\n loginSocialMedia(userLogin, socialMediaID, tokenID, socialMediaType) { \r\n let socialLoginService = new SocialLoginService(); \r\n\r\n let profileService = new FleuropWebShop.ProfileService();\r\n profileService.LoginSocialMedia(userLogin, socialMediaID, tokenID, socialMediaType, function (result) {\r\n socialLoginService.clearLoginAlert();\r\n \r\n if (result == dynamicData.enums.enmMyFleuropLoginStatus.Success) {\r\n $('#user-popup').modal('hide');\r\n if (dynamicData.page.codeFileName == 'orderform') {\r\n $('#txtSenderPassword:visible').val('');\r\n angularOrderFormController.profile.getLoginState();\r\n socialLoginService.toggleLoginState();\r\n dynamicData.session.loginStateIsLoggedIn = true;\r\n FleuropWebShop.ProfileService.GetGreeting(function (result) {\r\n $('#divLoggedIn span').html(result);\r\n })\r\n } else {\r\n location.href = dynamicData.page.virtualRoot + 'myfleurop.aspx';\r\n }\r\n } else if (result == dynamicData.enums.enmMyFleuropLoginStatus.Failed) {\r\n socialLoginService.setLoginAlert(dynamicData.textRepository.loginError, 'alert-danger');\r\n gtdl_push(3);\r\n } else if (result == dynamicData.enums.enmMyFleuropLoginStatus.NotVerified) {\r\n socialLoginService.setLoginAlert(dynamicData.textRepository.loginNotVerifiedError, 'alert-warning');\r\n $('.loginAlertPlaceholder a').prop(\"href\", dynamicData.page.virtualRoot + 'handlers/emailverification.aspx?m=' + email);\r\n gtdl_push(14);\r\n } else if (result == dynamicData.enums.enmMyFleuropLoginStatus.NoPassword) {\r\n //Send pw reset mail \r\n FleuropWebShop.ProfileService.ResetPassword(email);\r\n socialLoginService.setLoginAlert(dynamicData.textRepository.loginNoPasswordError, 'alert-warning');\r\n }\r\n });\r\n };\r\n\r\n\r\n // Help-functions\r\n clearLoginAlert() {\r\n $('.loginAlertPlaceholder').hide();\r\n };\r\n\r\n toggleLoginState() {\r\n $('#divLoggedIn').toggleClass('d-none');\r\n $('#divLoggedOut').toggleClass('d-none');\r\n };\r\n\r\n setLoginAlert(message, alertClass) {\r\n var loginDiv = $('.loginAlertPlaceholder div');\r\n loginDiv.prop('class', 'alert ' + alertClass);\r\n loginDiv.html(message);\r\n\r\n $('.loginAlertPlaceholder').show();\r\n };\r\n\r\n};","import { fetchOnce, fetchRetry } from '../modules/fetch';\r\n\r\nexport class FavoritesService {\r\n\r\n static async add(productID) {\r\n var antiForgeryToken = document.getElementById('hiddenAntiForgeryToken').value;\r\n let response = await fetchOnce(`${dynamicData.page.virtualRoot}api/favorites/add?productID=${productID}`, {\r\n method: 'POST',\r\n headers: {\r\n 'X-AntiForgery-Token': antiForgeryToken\r\n }\r\n });\r\n return response.json();\r\n }\r\n\r\n static async remove(productID) {\r\n var antiForgeryToken = document.getElementById('hiddenAntiForgeryToken').value;\r\n let response = await fetchOnce(`${dynamicData.page.virtualRoot}api/favorites/remove?productID=${productID}`, {\r\n method: 'DELETE',\r\n headers: {\r\n 'X-AntiForgery-Token': antiForgeryToken\r\n }\r\n });\r\n return response.json();\r\n }\r\n}\r\n","export function initializeProductImages() {\r\n configureImageRollover();\r\n configureImageRolloverSearchSite();\r\n}\r\n\r\nfunction configureImageRollover() {\r\n $('.products-widget .products-list, .products-listing .products-list').on('mouseover', 'img', function () {\r\n if($(this).attr('data-over') !== '') {\r\n $(this).attr('src', $(this).attr('data-over'));\r\n };\r\n }); \r\n\r\n $('.products-widget .products-list, .products-listing .products-list').on('mouseout', 'img', function () {\r\n $(this).attr('src', $(this).attr('data-src'));\r\n }); \r\n}\r\n\r\nfunction configureImageRolloverSearchSite() {\r\n $('.search-result .products-list').on('mouseover', 'img', function () {\r\n if($(this).attr('data-over') !== '') {\r\n $(this).attr('src', $(this).attr('data-over'));\r\n };\r\n }); \r\n\r\n $('.search-result .products-list').on('mouseout', 'img', function () {\r\n $(this).attr('src', $(this).attr('data-ng-src'));\r\n }); \r\n}\r\n","import 'core-js/features/promise'; //Promises polyfill\r\nimport 'regenerator-runtime/runtime'; //Async-await polyfill\r\nimport 'whatwg-fetch'; //Fetch polyfill\r\nimport { DeviceInformation } from '../classes/device-information';\r\nimport { FavoritesService } from '../modules/favorites-service';\r\nimport { initializeProductImages } from \"../modules/product-images\";\r\nimport { SocialLoginService } from '../classes/social-login';\r\n\r\nimport dayjs from 'dayjs';\r\ndayjs.extend(require('dayjs/plugin/utc'));\r\n\r\n//Dynamic imports\r\nimport(/* webpackChunkName: \"datePickerLanguages\" */ `lib/datepicker/datepicker-${dynamicData.session.languageCode2Digit}`);\r\n\r\n//Global variables\r\nglobal.dayjs = dayjs;\r\n\r\nlet socialLoginService = new SocialLoginService();\r\n\r\nconfigureViewStateTroublePrevention();\r\nconfigureSocialLoginLibraries();\r\n\r\n//#region Dom Ready / Load\r\n$(document).ready(function () {\r\n configurePhoneFields();\r\n configureToastrOptions(); \r\n configureAccountingLibrary();\r\n configureSearch();\r\n configureMenu();\r\n configureDataLayerEvents();\r\n configureLoginSection();\r\n configureHotkeys();\r\n showPendingNotifications();\r\n configureScrolling();\r\n configureFavorites();\r\n configureExpress();\r\n configureSelect2Dropdowns();\r\n configureInputPlaceholders(); \r\n configureCookiebotRenewPrompt();\r\n configurePostbackWorkaround();\r\n});\r\n\r\n$(window).on('load', function () {\r\n configureMenuImagePreload();\r\n pushVirtualBasketToDatalayer();\r\n configureLiveChat();\r\n});\r\n\r\n//#endregion\r\n\r\n//#region Configuration\r\n\r\nfunction configureSocialLoginLibraries() {\r\n configureGoogleLibrary();\r\n configureFacebookLibrary();\r\n}\r\n\r\nfunction configureGoogleLibrary() {\r\n if (dynamicData.modeSettings.isSwissShop) {\r\n window.onGoogleLibraryLoad = () => {\r\n\r\n google.accounts.id.initialize({\r\n client_id: '708511173041-cpe5str5284v00rnjgrlej6m4br7ork6.apps.googleusercontent.com',\r\n callback: socialLoginService.handleGoogleCredentialResponse\r\n });\r\n\r\n var lang = dynamicData.session.languageCode2Digit;\r\n\r\n if (document.getElementById(\"g_id_signin_loginForm\")) {\r\n google.accounts.id.renderButton(\r\n document.getElementById(\"g_id_signin_loginForm\"),\r\n { theme: \"outline\", size: \"large\", locale: lang }\r\n );\r\n };\r\n\r\n if (document.getElementById(\"g_id_signin_orderForm\")) {\r\n google.accounts.id.renderButton(\r\n document.getElementById(\"g_id_signin_orderForm\"),\r\n { theme: \"outline\", size: \"large\", locale: lang }\r\n );\r\n };\r\n\r\n };\r\n }\r\n}\r\n\r\nfunction configureFacebookLibrary() {\r\n $('#fb_signin_registerForm').click(function () {\r\n socialLoginService.attachFacebook('register-facebook');\r\n })\r\n\r\n $('#fb_signin_loginForm').click(function () {\r\n socialLoginService.attachFacebook('signin-facebook');\r\n }) \r\n\r\n $('#fb_signin_orderForm').click(function () {\r\n socialLoginService.attachFacebook('signin-facebook');\r\n }) \r\n}\r\n\r\nfunction configureSearch() {\r\n $('.search-form input').keyup(function (event) { \r\n //Enter clicked\r\n if (event.keyCode == 13) {\r\n goToSearchPage();\r\n }\r\n })\r\n $('.search-form button').click(function () {\r\n goToSearchPage();\r\n })\r\n}\r\n\r\nfunction configureMenu() { \r\n\r\n //Preview of AttributeValue infos on hover for non IOS devices\r\n if (!DeviceInformation.runningOnIOS()) {\r\n $('#main-nav .categories a').hover(function () {\r\n var link = $(this);\r\n showAttributePreview(link);\r\n })\r\n }\r\n \r\n //Preview of AttributeValue infos on click for big enough touch devices (they usally have no hover)\r\n if (DeviceInformation.supportsTouch()) {\r\n $('#main-nav .categories a').click(function (e) {\r\n if ($(window).width() >= 992) { \r\n var link = $(this);\r\n showAttributePreview(link);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n\r\n function showAttributePreview(link) {\r\n var productCount = link.data('count');\r\n var backgroundUrl = link.data('image');\r\n var title = link.data('title');\r\n var description = link.data('description');\r\n var url = link.attr('href');\r\n\r\n //use default image for those not set\r\n if (backgroundUrl == '')\r\n backgroundUrl = dynamicData.page.virtualRoot + \"media/images/attributes/category-image-default.jpg\";\r\n\r\n preloadImage(backgroundUrl);\r\n $('#main-nav .category-info #product-count').html(productCount);\r\n $('.category-content .title').html(title);\r\n $('.category-content p').html(description);\r\n $('.category-content a').attr('href', url);\r\n var content = $('#main-nav .category-content');\r\n if (content.css('visibility') != 'visible')\r\n $('#main-nav .category-content').css('visibility', 'visible');\r\n }\r\n\r\n\r\n function preloadImage(imageUrl) {\r\n var img = $(\"\").attr('src', imageUrl)\r\n .on('load', function () { \r\n $('#main-nav .category-image').css(\"background-image\", \"url(\" + imageUrl + \")\");\r\n });\r\n }\r\n\r\n};\r\nfunction getPageNameFromDataLayer() {\r\n var result = '';\r\n if (dataLayer[0] && dataLayer[0].pageType) {\r\n result = dataLayer[0].pageType;\r\n }\r\n return result;\r\n}\r\n\r\nfunction configureDataLayerEvents() {\r\n\r\n //Product widget impressions \r\n var productList = [];\r\n $('.products-widget:visible .products-list .product').each(function (index) {\r\n var widget = $(this).closest('.products-widget');\r\n var product = $(this);\r\n var productId = product.data('id');\r\n var productName = product.data('nameEn');\r\n var productPrice = product.find('.price').text();\r\n var productPosition = widget.find('.product').index(product) + 1;\r\n\r\n var widgetName = widget.find('h2').html();\r\n var widgetPosition = $('.products-widget').index(widget) + 1;\r\n var category = dynamicData.session.languageCode2Digit.toUpperCase() + '/Widgets/' + widgetName;\r\n var pageName = getPageNameFromDataLayer();\r\n var list = pageName + ' widget ' + widgetPosition;\r\n\r\n productList.push({\r\n 'id': productId, 'name': productName, 'price': productPrice, 'brand': 'Fleurop', 'category': category,\r\n 'list': list, 'position': productPosition\r\n });\r\n });\r\n if (productList.length > 0) {\r\n dataLayer.push({\r\n 'event': 'productPromotion',\r\n 'ecommerce': {\r\n 'currencyCode': 'CHF',\r\n 'impressions': productList\r\n }\r\n })\r\n }\r\n \r\n //Product listings AND widget link clicks, excluding search for now.\r\n $('.products-widget .products-list, .products-listing .products-list').on(\"click\", \"a\", function (e) {\r\n var productList = $(this).closest('.products-list');\r\n var product = $(this).closest('.product');\r\n var productId = product.data('id');\r\n var nameEn = product.data('nameEn');\r\n var categoryEn = '';\r\n var list = '';\r\n var position = 0;\r\n if (productList.data('listingEn')) {\r\n //Listing case\r\n categoryEn = productList.data('listingEn');\r\n list = 'productListing';\r\n position = $('.product').index(product); \r\n if (Cookiebot.consent.statistics)\r\n Cookies.set('ProductReferer', dynamicData.enums.enmProductReferer.AttributeListing);\r\n } else {\r\n //Widget case\r\n var widget = $(this).closest('.products-widget');\r\n var widgetName = widget.find('h2').html();\r\n var widgetPosition = $('.products-widget').index(widget) + 1;\r\n categoryEn = dynamicData.session.languageCode2Digit.toUpperCase() + '/Widgets/' + widgetName; \r\n var pageName = getPageNameFromDataLayer();\r\n list = pageName + ' widget ' + widgetPosition;\r\n position = widget.find('.product').index(product) + 1; \r\n if (Cookiebot.consent.statistics)\r\n Cookies.set('ProductReferer', dynamicData.enums.enmProductReferer.WidgetPage);\r\n if (Cookiebot.consent.statistics)\r\n Cookies.set('LastWidgetName', list);\r\n }\r\n var price = product.find('.price').text();\r\n\r\n onProductClick(this, {\r\n 'name': nameEn, 'id': productId, 'price': price, 'brand': 'Fleurop',\r\n 'category': categoryEn, 'list': list, 'position': position\r\n });\r\n });\r\n\r\n //Slider and hero banner impressions\r\n var slidesList = [];\r\n $('#home-slider .owl-item').not('.cloned').each(function (index) {\r\n var item = $(this).find('.item');\r\n var position = index + 1;\r\n var id = 'slider-' + position;\r\n var name = item.find('h3').html().trim();\r\n var url = extractUrl(item.css('background-image'));\r\n slidesList.push({ 'id': id, 'name': name, 'creative': url, 'position': position })\r\n });\r\n var bannersList = [];\r\n $('.hero-banner').each(function (index) {\r\n var item = $(this);\r\n var name = item.find('h3').html().trim();\r\n var position = index + 1;\r\n var id = 'hero-banner-' + position;\r\n var url = extractUrl(item.css('background-image'));\r\n bannersList.push( { 'id': id, 'name': name, 'creative': url, 'position': position } )\r\n });\r\n var impressionsList = slidesList.concat(bannersList);\r\n if (impressionsList.length > 0) {\r\n dataLayer.push({\r\n 'event': 'bannersLoad',\r\n 'ecommerce': {\r\n 'promoView': {\r\n 'promotions': impressionsList\r\n }\r\n }\r\n });\r\n }\r\n\r\n //Hero banner link clicks \r\n $('.hero-banner').on('click', 'a', function (e) {\r\n var item = $(this).closest('.hero-banner');\r\n var name = item.find('h3').html().trim();\r\n var position = $('.hero-banner').index(item) + 1;\r\n var id = 'hero-banner-' + position;\r\n var url = extractUrl(item.css('background-image'));\r\n var bannerObj = { 'id': id, 'name': name, 'creative': url, 'position': position };\r\n onPromoClick(this, bannerObj);\r\n });\r\n\r\n //Picture gallery hover\r\n if (!DeviceInformation.supportsTouch()) {\r\n initializeProductImages();\r\n }\r\n}\r\n\r\nfunction configureLoginSection() {\r\n socialLoginService.clearLoginAlert();\r\n \r\n if (dynamicData.session.loginStateIsLoggedIn)\r\n $('#divLoggedIn').toggleClass('d-none');\r\n else\r\n $('#divLoggedOut').toggleClass('d-none');\r\n\r\n $('#user-popup,#user-b2b-popup').on('show.bs.modal', function () {\r\n gtdl_push(2);\r\n setTimeout(function () {\r\n $('.tbUserLogin').focus();\r\n }, 800); \r\n })\r\n\r\n if (getQueryStringParameter('showloginpopup') == 'true') {\r\n if (dynamicData.modeSettings.isB2C)\r\n $('#user-popup').modal('show');\r\n else\r\n $('#user-b2b-popup').modal('show');\r\n }\r\n\r\n if (getQueryStringParameter('showregistrationpopup') == 'true') {\r\n if (dynamicData.modeSettings.isB2C)\r\n $('#user-popup').modal('show').find('.btn-register').click();\r\n else\r\n $('#user-b2b-popup').modal('show').find('.btn-register').click(); \r\n }\r\n\r\n $('#divLoggedIn span').click(function () {\r\n if (dynamicData.modeSettings.isB2C) {\r\n location.href = dynamicData.page.virtualRoot + 'myfleurop.aspx';\r\n } else {\r\n location.href = dynamicData.page.virtualRoot + 'customercenter.aspx';\r\n }\r\n });\r\n\r\n $(\".btnUserLogin\").click(function (e) {\r\n e.preventDefault();\r\n var containerDiv = $(this).closest('.login-content');\r\n var email = containerDiv.find('.tbUserLogin').val();\r\n var password = containerDiv.find('.tbUserPassword').val();\r\n FleuropWebShop.ProfileService.Login(email, password, function (result) {\r\n socialLoginService.clearLoginAlert();\r\n\r\n if (result == dynamicData.enums.enmMyFleuropLoginStatus.Success) {\r\n $('#user-popup').modal('hide');\r\n if (dynamicData.page.codeFileName == 'orderform') {\r\n $('#txtSenderPassword:visible').val('');\r\n angularOrderFormController.profile.getLoginState();\r\n toggleLoginState();\r\n dynamicData.session.loginStateIsLoggedIn = true;\r\n } else {\r\n location.href = dynamicData.page.virtualRoot + 'myfleurop.aspx';\r\n }\r\n dataLayer.push({ 'event': 'loginManual' });\r\n } else if (result == dynamicData.enums.enmMyFleuropLoginStatus.Failed) {\r\n setLoginAlert(dynamicData.textRepository.loginError, 'alert-danger');\r\n gtdl_push(3);\r\n } else if (result == dynamicData.enums.enmMyFleuropLoginStatus.NotVerified) {\r\n setLoginAlert(dynamicData.textRepository.loginNotVerifiedError, 'alert-warning');\r\n $('.loginAlertPlaceholder a').prop(\"href\", dynamicData.page.virtualRoot + 'handlers/emailverification.aspx?m=' + email);\r\n gtdl_push(14);\r\n } else if (result == dynamicData.enums.enmMyFleuropLoginStatus.NoPassword) {\r\n //Send pw reset mail \r\n FleuropWebShop.ProfileService.ResetPassword(email);\r\n setLoginAlert(dynamicData.textRepository.loginNoPasswordError, 'alert-warning');\r\n }\r\n });\r\n });\r\n\r\n $(\".btnB2BLogin\").click(function (e) {\r\n e.preventDefault();\r\n\r\n var containerDiv = $(this).closest('.login-content');\r\n var email = containerDiv.find('.tbUserLogin').val();\r\n var password = containerDiv.find('.tbUserPassword').val();\r\n \r\n FleuropWebShop.ProfileService.LoginB2B(email, password, function (result) {\r\n socialLoginService.clearLoginAlert();\r\n\r\n if (result == dynamicData.enums.enmMyFleuropLoginStatus.Success) {\r\n $('#user-b2b-popup').modal('hide');\r\n\r\n if (dynamicData.page.codeFileName == 'orderform') {\r\n location.reload();\r\n } else {\r\n location.href = dynamicData.page.virtualRoot + 'customercenter.aspx';\r\n }\r\n } else if (result == dynamicData.enums.enmMyFleuropLoginStatus.NoPassword) { \r\n setLoginAlert(dynamicData.textRepository.loginNoPasswordError, 'alert-warning');\r\n\r\n } else {\r\n //failed or unverified\r\n setLoginAlert(dynamicData.textRepository.loginError, 'alert-danger');\r\n }\r\n });\r\n });\r\n\r\n $(\".recover-password\").click(function () {\r\n var containerDiv = $(this).closest('.login-content');\r\n var email = containerDiv.find('.tbUserLogin').val();\r\n\r\n containerDiv.find(\".pw-forgot-content\").show();\r\n var reminderEmailField = containerDiv.find(\".tbUserLoginReminder\");\r\n reminderEmailField.val(email).focus(); \r\n });\r\n\r\n $(\".btnSendReminder\").click(function (e) {\r\n e.preventDefault();\r\n var containerDiv = $(this).closest('.login-content');\r\n socialLoginService.clearLoginAlert();\r\n var login = containerDiv.find('.tbUserLoginReminder').val();\r\n FleuropWebShop.ProfileService.SendReminder(login, function (result) { \r\n if (result) {\r\n setLoginAlert(dynamicData.textRepository.loginReminderSent, 'alert-success');\r\n $(\".pw-forgot-content\").hide();\r\n }\r\n else\r\n setLoginAlert(dynamicData.textRepository.loginReminderError, 'alert-danger');\r\n });\r\n });\r\n\r\n $('.btnB2BSendReminder').click(function (e) {\r\n e.preventDefault();\r\n var containerDiv = $(this).closest('.login-content');\r\n var login = containerDiv.find('.tbUserLoginReminder').val();\r\n\r\n socialLoginService.clearLoginAlert();\r\n FleuropWebShop.ProfileService.SendReminderB2B(login, function (result) {\r\n if (result) {\r\n setLoginAlert(dynamicData.textRepository.loginReminderSent, 'alert-success');\r\n $(\".pw-forgot-content\").hide();\r\n }\r\n else\r\n setLoginAlert(dynamicData.textRepository.loginReminderError, 'alert-danger');\r\n });\r\n\r\n });\r\n\r\n function clearLoginAlert() {\r\n $('.loginAlertPlaceholder').hide();\r\n }\r\n\r\n function setLoginAlert(message, alertClass) {\r\n var loginDiv = $('.loginAlertPlaceholder div');\r\n loginDiv.prop('class', 'alert ' + alertClass);\r\n loginDiv.html(message);\r\n\r\n $('.loginAlertPlaceholder').show();\r\n }\r\n\r\n function toggleLoginState() { \r\n $('#divLoggedIn').toggleClass('d-none');\r\n $('#divLoggedOut').toggleClass('d-none');\r\n }\r\n\r\n $(\"a.logout-link\").click(function () {\r\n if (dynamicData.modeSettings.isSwissShop) {\r\n try { socialLoginService.signOut_Google(); } catch {};\r\n try { socialLoginService.signOut_Facebook(); } catch {}; \r\n }\r\n \r\n FleuropWebShop.ProfileService.Logout(function () {\r\n if (dynamicData.page.codeFileName == 'dev')\r\n location.reload();\r\n else\r\n location.href = dynamicData.page.homeLink;\r\n })\r\n });\r\n\r\n \r\n //Render Google Sign-In button for login-form\r\n $('#divLoggedOut').on('click',function(){\r\n var lang = dynamicData.session.languageCode2Digit;\r\n\r\n google.accounts.id.renderButton(\r\n document.getElementById(\"g_id_signin_loginForm\"),\r\n { theme: \"outline\", size: \"large\", locale: lang }\r\n );\r\n });\r\n\r\n //Detection of the Google Sign-In process (login or registration) and\r\n //render Google Sign-In button for registration-form\r\n $('.account-popup .btn-register').on('click',function(){\r\n var lang = dynamicData.session.languageCode2Digit;\r\n\r\n SocialLoginService.googleSocialProcess = 'register';\r\n\r\n google.accounts.id.renderButton(\r\n document.getElementById(\"g_id_signin_registerForm\"),\r\n { theme: \"outline\", size: \"large\", locale: lang }\r\n );\r\n });\r\n\r\n $('.account-popup .btn-login').on('click',function(){\r\n SocialLoginService.googleSocialProcess = 'login';\r\n });\r\n \r\n \r\n //Apply custom greeting that respects daytime.\r\n if (dynamicData.page.greeting != '')\r\n $('#divLoggedIn span').html(dynamicData.page.greeting);\r\n}\r\n\r\n//configures keyboard hotkeys, that can be used to access features of the shop.\r\nfunction configureHotkeys() {\r\n //a space between two keys represents a sequence, so \"g d\" means, press g, than d.\r\n\r\n //Go dev\r\n Mousetrap.bind('g d', function () {\r\n location.href = dynamicData.page.virtualRoot + 'dev';\r\n });\r\n\r\n //Go home\r\n Mousetrap.bind('g h', function () {\r\n location.href = dynamicData.page.virtualRoot;\r\n });\r\n\r\n //Go to orderform\r\n Mousetrap.bind('g o f', function () {\r\n location.href = dynamicData.page.virtualRoot + 'de/p/das-ist-freddy-echeveria/ids-73397';\r\n });\r\n\r\n //Go to registration\r\n Mousetrap.bind('g r', function () {\r\n if (dynamicData.modeSettings.isB2C)\r\n location.href = dynamicData.page.virtualRoot + 'registration.aspx';\r\n else\r\n location.href = dynamicData.page.virtualRoot + 'registrationb2b.aspx';\r\n }); \r\n\r\n //Go to help\r\n Mousetrap.bind('h p', function () {\r\n location.href = dynamicData.page.virtualRoot + 'help';\r\n });\r\n\r\n //Copyright can be used as button, currently supported:\r\n // - doubleclick: go to help page\r\n // - tripleclick: fill test order\r\n let copyrightClickCount = 0;\r\n $('.copyright span').on('click', function () {\r\n copyrightClickCount++;\r\n setTimeout(() => {\r\n if (copyrightClickCount === 2)\r\n location.href = dynamicData.page.virtualRoot + 'help';\r\n else if (copyrightClickCount === 3) \r\n if (typeof fillTestOrder === 'function')\r\n fillTestOrder();\r\n \r\n copyrightClickCount = 0;\r\n }, 500); // 500ms to allow additional clicks\r\n\r\n });\r\n\r\n\r\n //Focus search\r\n Mousetrap.bind('f s', function (e) {\r\n e.preventDefault();\r\n $('.search-form input').focus();\r\n });\r\n}\r\n\r\nfunction configureScrolling() { \r\n //Configuration\r\n $.extend($.scrollTo.defaults, {\r\n offset: { top: dynamicData.page.scrollingOffsetWithContext },\r\n duration: 1000\r\n });\r\n \r\n //Feature that allows querystring parameter scrollto on any page \r\n var scrollToParam = getQueryStringParameter('scrollto');\r\n if (scrollToParam != '') { \r\n scrollToParam = '#' + scrollToParam; \r\n $.scrollTo($(scrollToParam)); \r\n }\r\n}\r\n\r\nfunction configureFavorites() {\r\n\r\n //Tooltips for products in widgets, listings and on orderform.\r\n if (!DeviceInformation.supportsTouch()) {\r\n $('.favorite').tooltip({ \r\n toggle: \"tooltip\",\r\n placement: \"left\",\r\n html: true,\r\n title: `${dynamicData.textRepository.favorites}
${dynamicData.textRepository.favoritesAdd}`\r\n }); \r\n }\r\n\r\n $('.favorite').click(async function () {\r\n //lists/widgets\r\n var product = $(this).closest('.product');\r\n //orderform\r\n if (product.length == 0)\r\n product = $(this).closest('.product-main-info');\r\n var productID = product.data('id'); \r\n \r\n if($(this).hasClass('added')) {\r\n $(this).removeClass('added');\r\n let count = await FavoritesService.remove(productID); \r\n updateFavoriteCount(count)\r\n \r\n } else {\r\n $(this).addClass('added');\r\n let count = await FavoritesService.add(productID); \r\n updateFavoriteCount(count); \r\n\r\n }\r\n\r\n $('#head-favorite').toggleClass('highlighted')\r\n setTimeout(function () {\r\n $('#head-favorite').toggleClass('highlighted')\r\n }, 500);\r\n });\r\n\r\n $('#head-favorite').click(function () {\r\n if ($('#head-favorite span').html() == 0)\r\n location.href = dynamicData.page.favoritesContentPage;\r\n else\r\n location.href = '/favorites';\r\n });\r\n\r\n function updateFavoriteCount(count) {\r\n $('#head-favorite span, #favorite-listing-count').html(count);\r\n } \r\n}\r\nglobal.configureFavorites = configureFavorites;\r\n\r\nfunction configureExpress() {\r\n //Advertisement\r\n $('.express-offer a').click(function () {\r\n location.href = dynamicData.modeSettings.expressCatalogLink;\r\n })\r\n\r\n //Open check popup\r\n $('.express-available a').click(function () {\r\n //open popup, fill field and focus\r\n $('#express-check-popup').modal('show');\r\n $('#expressDeliveryCity').val($('#txtRecipientZipTown').val());\r\n $('#expressDeliveryCity').focus();\r\n })\r\n\r\n //Autocompleter\r\n $('#expressDeliveryCity').autoComplete({\r\n source: configureSource(function () { return dynamicData.session.countryRegNr; }),\r\n delay: 400,\r\n minChars: 2,\r\n renderItem: configureRenderItem(),\r\n onSelect: function (e, term, item) {\r\n var newRegNr = item.data('regnr');\r\n\r\n if (newRegNr != $('#hiddenRecipientZipTownRegNr').val()) {\r\n $('#hiddenRecipientZipTownRegNr').val(newRegNr);\r\n $('#txtRecipientZipTown').val($('#expressDeliveryCity').val());\r\n //checkDeliveryDate();\r\n }\r\n }\r\n });\r\n\r\n $('#expressDeliveryCity').keyup(function (e) {\r\n //If region already selected the backspace or delete buttons clear the whole selection\r\n if (e.keyCode == 46 || e.keyCode == 8) {\r\n if ($('#hiddenRecipientZipTownRegNr').val() != '') {\r\n $('#hiddenRecipientZipTownRegNr').val('');\r\n $('#expressDeliveryCity').val('');\r\n $('#txtRecipientZipTown').val('');\r\n }\r\n } else if (e.keyCode != 9 && e.keyCode != 13 && e.keyCode != 16) { // Not Tab & Enter & Shift \r\n $('#hiddenRecipientZipTownRegNr').val('');\r\n }\r\n });\r\n\r\n //Express check\r\n $('#btnCheckExpressAvailability').click(function () {\r\n var regNr = $('#hiddenRecipientZipTownRegNr').val();\r\n\r\n clearResult();\r\n FleuropWebShop.FloristService.GetExpressDetails(regNr, function (result) {\r\n if (result.ExpressAvailable) {\r\n var guaranteedDateString = dayjs(result.GuaranteedDeliveryTime).format('DD.MM.YYYY - HH:mm');\r\n $('#lblGuaranteedDeliveryTime').html(guaranteedDateString);\r\n $('#expressAvailable').toggleClass('d-none');\r\n } else {\r\n $('#expressNotAvailable').toggleClass('d-none');\r\n }\r\n })\r\n });\r\n\r\n function clearResult() {\r\n $('#expressAvailable').addClass('d-none');\r\n $('#expressNotAvailable').addClass('d-none');\r\n }\r\n}\r\n\r\nfunction configureSelect2Dropdowns() {\r\n // Standard select2 init \r\n $('.custom-dropdown').select2({\r\n placeholder: function () {\r\n $(this).data('placeholder');\r\n },\r\n allowClear: false,\r\n selectOnClose: true\r\n });\r\n\r\n // Open Select2 dropdown focus (with tab)\r\n $(document).on('focus', '.select2-selection.select2-selection--single', function (e) {\r\n $(this).closest(\".select2-container\").siblings('select:enabled').select2('open');\r\n });\r\n\r\n // Open Select2 dropdown focus (with tab); only once controller\r\n $('select.select2').on('select2:closing', function (e) {\r\n $(e.target).data(\"select2\").$selection.one('focus focusin', function (e) {\r\n e.stopPropagation();\r\n });\r\n });\r\n}\r\n\r\nfunction configureInputPlaceholders() {\r\n $('.user-form input').on('focus', function () {\r\n setInputPlaceholder($(this));\r\n });\r\n \r\n $('.user-form input').on('blur', function () {\r\n removeInputPlaceholder($(this));\r\n }); \r\n}\r\n\r\nfunction setInputPlaceholder(input) {\r\n var placeholder = $(input).attr(\"placeholder\");\r\n var inputPlaceHolder = 'inputPlaceHolder_'+$(input).attr(\"id\");\r\n\r\n $('#'+inputPlaceHolder).remove();\r\n $(input).addClass(\"hidePlaceholder\");\r\n\r\n if (placeholder !== undefined) {\r\n $(input).after(''+placeholder+'');\r\n }; \r\n};\r\n\r\nfunction removeInputPlaceholder(input) {\r\n var inputPlaceHolder = 'inputPlaceHolder_'+$(input).attr(\"id\");\r\n\r\n $(input).removeClass(\"hidePlaceholder\");\r\n $('#'+inputPlaceHolder).remove(); \r\n}; \r\n\r\nasync function configureValidationEngine(selector = \"#aspnetForm\") {\r\n //load language file\r\n let lang = dynamicData.session.languageCode2Digit;\r\n await import(/* webpackChunkName: \"validationEngineLanguages\" */ `validationEngine/jquery.validationEngine-${lang}`);\r\n\r\n let config = {\r\n //attention! offset needs to be passed in positive to be subtracted\r\n autoPositionUpdate: true, promptPosition: \"bottomLeft:+10,+0\", autoHidePrompt: true, autoHideDelay: 8000,\r\n binded: false, scrollOffset: -1 * dynamicData.page.scrollingOffset, focusFirstField: true\r\n }\r\n\r\n $(selector).validationEngine(config);\r\n}\r\nglobal.configureValidationEngine = configureValidationEngine;\r\n\r\nfunction configureZipTownDropdown() {\r\n var pageSize = 20;\r\n var zipTownSelector = $('.ziptown-dropdown');\r\n\r\n zipTownSelector.select2({\r\n allowClear: false,\r\n language: {\r\n noResults: function () {\r\n return dynamicData.modeSettings.dropdownRecipientZipCityNotFoundMessage;\r\n }\r\n },\r\n ajax: {\r\n url: dynamicData.page.virtualRoot + 'api/regions/get',\r\n dataType: 'json',\r\n delay: 50,\r\n cache: true,\r\n\r\n placeholder: function () {\r\n $(this).data('placeholder');\r\n },\r\n\r\n data: function (params) {\r\n var page = params.page || 1;\r\n var searchTerm = params.term || '';\r\n\r\n var query = {\r\n countryRegNr: dynamicData.session.countryRegNr,\r\n searchTerm: searchTerm,\r\n page: page\r\n }\r\n\r\n return query;\r\n },\r\n\r\n processResults: function (data) {\r\n var searchResults = data.map(function (item) {\r\n var result = {\r\n id: item.zipPlaceRegNr,\r\n text: item.zip + ' - ' + item.place\r\n }\r\n\r\n return result;\r\n })\r\n\r\n return {\r\n results: searchResults,\r\n pagination: {\r\n more: (searchResults.length == pageSize ? true : false)\r\n }\r\n }\r\n\r\n }\r\n\r\n },\r\n })\r\n}\r\nglobal.configureZipTownDropdown = configureZipTownDropdown;\r\n\r\nfunction configureMenuImagePreload() {\r\n // Preload Menu default image so it's immediately there\r\n enquire.register('screen and (min-width: 768px)', function () {\r\n //Preload default image\r\n var img = new Image();\r\n img.src = dynamicData.page.virtualRoot + 'media/images/attributes/category-image-default.jpg'; \r\n })\r\n}\r\n\r\nfunction configureAccountingLibrary() {\r\n // Configure accounting library (to work with localized numbers). \r\n if (dynamicData.modeSettings.isSwissShop) {\r\n var thousand = \"\";\r\n var decimal = \".\";\r\n } else {\r\n var thousand = \"\";\r\n var decimal = \",\";\r\n }\r\n\r\n accounting.settings = {\r\n currency: {\r\n symbol: \"€\", // default currency symbol is '$'\r\n format: \"%s%v\", // controls output: %s = symbol, %v = value/number (can be object: see below)\r\n decimal: decimal, // decimal point separator\r\n thousand: thousand, // thousands separator\r\n precision: 2 // decimal places\r\n },\r\n number: {\r\n precision: 2, // default precision on numbers is 0\r\n thousand: thousand,\r\n decimal: decimal\r\n }\r\n\r\n }\r\n}\r\n\r\nfunction configureViewStateTroublePrevention() {\r\n $('#__EVENTVALIDATION').attr('autocomplete', 'off');\r\n}\r\n\r\n\r\nfunction configurePhoneFields() { \r\n //Allow only the following chars to be entered on phone fields: + and 0-9. \r\n $('input[id*=\"Phone\"], input[class*=\"phone\"]').keyup(function () {\r\n let phoneContent = $(this).val();\r\n phoneContent = phoneContent.replace(/[^+0-9]/g, '');\r\n $(this).val(phoneContent);\r\n });\r\n}\r\n\r\nfunction configureToastrOptions() {\r\n //Initialize notifications\r\n toastr.options = {\r\n \"closeButton\": true,\r\n \"debug\": false,\r\n \"newestOnTop\": false,\r\n \"progressBar\": false,\r\n \"positionClass\": \"toast-top-right\",\r\n \"preventDuplicates\": true,\r\n \"onclick\": null,\r\n \"showDuration\": \"300\",\r\n \"hideDuration\": \"1000\",\r\n \"timeOut\": \"9000\",\r\n \"extendedTimeOut\": \"1000\",\r\n \"showEasing\": \"swing\",\r\n \"hideEasing\": \"linear\",\r\n \"showMethod\": \"fadeIn\",\r\n \"hideMethod\": \"fadeOut\"\r\n }\r\n}\r\n\r\nfunction configureLiveChat() {\r\n if (!dynamicData.session.transmissionToNonEuCountries) return;\r\n\r\n //LiveChat (www.livechatinc.com) code \r\n window.__lc = window.__lc || {};\r\n window.__lc.license = 8978395;\r\n window.__lc.group = dynamicData.modeSettings.liveChatGroup;\r\n window.__lc.params = [\r\n { name: 'Login.AdrNr', value: dynamicData.session.loginStateAdrNr },\r\n { name: 'Login.ContactAdrNr', value: dynamicData.session.loginStateContactAdrNr }\r\n ];\r\n if (dynamicData.session.loginStateIsLoggedIn)\r\n window.__lc.params.push({ name: 'Login.Email', value: dynamicData.session.loginStateEmail });\r\n\r\n (function () {\r\n var lc = document.createElement('script');\r\n lc.type = 'text/javascript';\r\n lc.async = true;\r\n lc.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.livechatinc.com/tracking.js';\r\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(lc, s);\r\n })();\r\n}\r\n\r\nfunction configureCookiebotRenewPrompt() {\r\n //open the cookiebot dialog again\r\n $('.open-consent-popup').click(function () {\r\n Cookiebot.renew();\r\n })\r\n\r\n //refresh the page to apply the new settings\r\n $('.refresh-page').click(function () {\r\n location.reload();\r\n })\r\n}\r\n\r\nfunction configurePostbackWorkaround() {\r\n //CSP fix: handle the postback outside the inline event and suppress the inline event\r\n //This applies to all links that have an \"id\"\" starting with \"lb\"\" and all elements with the class \"postback-override\"\r\n\r\n $('a[id^=\"lb\"], .postback-override').on('click', function (event) {\r\n var clickedItemName = $(this).attr('id').replace('#', '');\r\n __doPostBack('ctl00$CenterContent$' + clickedItemName, '');\r\n event.preventDefault();\r\n });\r\n}\r\n\r\n//#endregion\r\n\r\n//#region Utilities\r\n\r\nfunction goToSearchPage() {\r\n var searchTerm = $('.search-form input').val();\r\n location.href = dynamicData.page.virtualLink + '/search/?q=' + searchTerm;\r\n}\r\n\r\nfunction detachValidationEngine() {\r\n if ($(\"#aspnetForm\").validationEngine !== undefined)\r\n $(\"#aspnetForm\").validationEngine('detach');\r\n return true;\r\n}\r\n\r\nfunction searchInShop(searchFieldID, event) {\r\n var doSearch = false;\r\n\r\n if (event) {\r\n //KeyUp case\r\n if (event.keyCode == 13) {\r\n doSearch = true;\r\n }\r\n } else {\r\n //Click case\r\n doSearch = true;\r\n }\r\n\r\n if (doSearch) {\r\n var searchTerm = $('#' + searchFieldID).val();\r\n location.href = dynamicData.page.virtualLink + '/search/?q=' + searchTerm;\r\n }\r\n}\r\n\r\n//#endregion"],"sourceRoot":""}