PageSourceSearch

https://jysk.ro/sites/jysk.ro/files/js/js__IP-wQrY4pxuXByvGQG9rQeW…yny0eRHq_MdHEZ5YEDzQyz1lT57d_qVb6_v6RfvBSva

js jysk.ro collected 2026-09-24 20:40:38 UTC 152,628 bytes, 59 lines download raw bytes

1/* @license GPL-2.0-or-later https://www.drupal.org/licensing/faq */
2((Drupal)=>{Drupal.behaviors.lazy={attach(context,settings){const utils={extend(obj,src){Object.keys(src).forEach((key)=>{obj[key]=src[key];});return obj;},once(selector){return (context||document).querySelector(selector);},loadScript(url){if(document.querySelectorAll(`script[src="${url}"]`).length===0){const script=document.createElement('script');const scripts=document.getElementsByTagName('script')[0];script.src=url;script.async=true;scripts.parentNode.insertBefore(script,scripts);}}};if(utils.once('body',context)){const lazysizes=settings.lazy.lazysizes||{};if(!settings.lazy.preferNative){window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig=utils.extend(window.lazySizesConfig,lazysizes);if(!Object.entries)Object.entries=(obj)=>{const ownProps=Object.keys(obj);let i=ownProps.length;const resArray=new Array(i);while(i--)resArray[i]=[ownProps[i],obj[ownProps[i]]];return resArray;};const min=settings.lazy.minified?'.min':'';Object.entries(lazysizes.plugins).forEach((path)=>{utils.loadScript(`${settings.lazy.libraryPath}/plugins/${path[1]}${min}.js`);});utils.loadScript(`${settings.lazy.libraryPath}/lazysizes${min}.js`);}}}};})(Drupal);;
3(function($,Drupal,debounce){const cache={right:0,left:0,bottom:0,top:0};const cssVarPrefix='--drupal-displace-offset';const documentStyle=document.documentElement.style;const offsetKeys=Object.keys(cache);const offsetProps={};offsetKeys.forEach((edge)=>{offsetProps[edge]={enumerable:true,get(){return cache[edge];},set(value){if(value!==cache[edge])documentStyle.setProperty(`${cssVarPrefix}-${edge}`,`${value}px`);cache[edge]=value;}};});const offsets=Object.seal(Object.defineProperties({},offsetProps));function getRawOffset(el,edge){const $el=$(el);const documentElement=document.documentElement;let displacement=0;const horizontal=edge==='left'||edge==='right';let placement=$el.offset()[horizontal?'left':'top'];placement-=window[`scroll${horizontal?'X':'Y'}`]||document.documentElement[`scroll${horizontal?'Left':'Top'}`]||0;switch(edge){case 'top':displacement=placement+$el.outerHeight();break;case 'left':displacement=placement+$el.outerWidth();break;case 'bottom':displacement=documentElement.clientHeight-placement;break;case 'right':displacement=documentElement.clientWidth-placement;break;default:displacement=0;}return displacement;}function calculateOffset(edge){let edgeOffset=0;document.querySelectorAll(`[data-offset-${edge}]`).forEach((el)=>{if(el.style.display==='none')return;let displacement=parseInt(el.getAttribute(`data-offset-${edge}`),10);if(isNaN(displacement))displacement=getRawOffset(el,edge);edgeOffset=Math.max(edgeOffset,displacement);});return edgeOffset;}function displace(broadcast=true){const newOffsets={};offsetKeys.forEach((edge)=>{newOffsets[edge]=calculateOffset(edge);});offsetKeys.forEach((edge)=>{offsets[edge]=newOffsets[edge];});if(broadcast)$(document).trigger('drupalViewportOffsetChange',offsets);return offsets;}Drupal.behaviors.drupalDisplace={attach(){if(this.displaceProcessed)return;this.displaceProcessed=true;$(window).on('resize.drupalDisplace',debounce(displace,200));}};Drupal.displace=displace;Object.defineProperty(Drupal.displace,'offsets',{value:offsets,writable:false});Drupal.displace.calculateOffset=calculateOffset;})(jQuery,Drupal,Drupal.debounce);;
4(function($,Drupal,once){if(once('drupal-dialog-deprecation-listener','html').length){const eventSpecial={handle($event){const $element=$($event.target);const event=$event.originalEvent;const dialog=event.dialog;const dialogArguments=[$event,dialog,$element,event?.settings];$event.handleObj.handler.apply(this,dialogArguments);}};$.event.special['dialog:beforecreate']=eventSpecial;$.event.special['dialog:aftercreate']=eventSpecial;$.event.special['dialog:beforeclose']=eventSpecial;$.event.special['dialog:afterclose']=eventSpecial;const listenDialogEvent=(event)=>{const windowEvents=$._data(window,'events');const isWindowHasDialogListener=windowEvents[event.type];if(isWindowHasDialogListener)Drupal.deprecationError({message:`jQuery event ${event.type}
4 is deprecated in 10.3.0 and is removed from Drupal:12.0.0. See https://www.drupal.org/node/3422670`});};['dialog:beforecreate','dialog:aftercreate','dialog:beforeclose','dialog:afterclose'].forEach((e)=>window.addEventListener(e,listenDialogEvent));window.addEventListener('dialog:beforecreate',(event)=>{const dialog=event.target;$(dialog).on('dialogButtonsChange.dialogDeprecation',(e)=>{if(!e?.originalEvent){Drupal.deprecationError({message:`jQuery event dialogButtonsChange is deprecated in 11.2.0 and is removed from Drupal:12.0.0. See https://www.drupal.org/node/3464202`});dialog.dispatchEvent(new CustomEvent('dialogButtonsChange'));}});});window.addEventListener('dialog:beforeclose',(event)=>{const dialog=event.target;$(dialog).off(`dialogButtonsChange.dialogDeprecation`);});}})(jQuery,Drupal,once);;
5class DrupalDialogEvent extends Event{constructor(type,dialog,settings=null){super(`dialog:${type}`,{bubbles:true});this.dialog=dialog;this.settings=settings;}}(function($,Drupal,drupalSettings,bodyScrollLock){drupalSettings.dialog={autoOpen:true,buttonClass:'button',buttonPrimaryClass:'button--primary',close(event){Drupal.dialog(event.target).close();Drupal.detachBehaviors(event.target,null,'unload');}};Drupal.dialog=function(element,options){let undef;const $element=$(element);const domElement=$element.get(0);const dialog={open:false,returnValue:undef};function openDialog(settings){settings=$.extend({},drupalSettings.dialog,options,settings);if(settings.dialogClass)Drupal.deprecationError({message:'dialogClass is deprecated in drupal:10.4.x and will be removed from drupal:12.0.0.'});const event=new DrupalDialogEvent('beforecreate',dialog,settings);domElement.dispatchEvent(event);$element.dialog(event.settings);dialog.open=true;if(event.settings.modal)bodyScrollLock.lock(domElement);domElement.dispatchEvent(new DrupalDialogEvent('aftercreate',dialog,event.settings));}function closeDialog(value){domElement.dispatchEvent(new DrupalDialogEvent('beforeclose',dialog));bodyScrollLock.clearBodyLocks();$element.dialog('close');dialog.returnValue=value;dialog.open=false;domElement.dispatchEvent(new DrupalDialogEvent('afterclose',dialog));}dialog.show=()=>{openDialog({modal:false,uiDialogTitleHeadingLevel:2});};dialog.showModal=()=>{openDialog({modal:true,uiDialogTitleHeadingLevel:1});};dialog.close=closeDialog;return dialog;};})(jQuery,Drupal,drupalSettings,bodyScrollLock);;
6(function($,Drupal,drupalSettings,debounce,displace){drupalSettings.dialog=$.extend({autoResize:true,maxHeight:'95%'},drupalSettings.dialog);function resetPosition(options){const offsets=displace.offsets;const left=offsets.left-offsets.right;const top=offsets.top-offsets.bottom;const leftString=`${(left>0?'+':'-')+Math.abs(Math.round(left/2))}px`;const topString=`${(top>0?'+':'-')+Math.abs(Math.round(top/2))}px`;options.position={my:`center${left!==0?leftString:''} center${top!==0?topString:''}`,of:window};return options;}function resetSize(event){const positionOptions=['width','height','minWidth','minHeight','maxHeight','maxWidth','position'];let adjustedOptions={};let windowHeight=$(window).height();let option;let optionValue;let adjustedValue;for(let n=0;n<positionOptions.length;n++){option=positionOptions[n];optionValue=event.data.settings[option];if(optionValue)if(typeof optionValue==='string'&&optionValue.endsWith('%')&&/height/i.test(option)){windowHeight-=displace.offsets.top+displace.offsets.bottom;adjustedValue=parseInt(0.01*parseInt(optionValue,10)*windowHeight,10);if(option==='height'&&Math.round(event.data.$element.parent().outerHeight())<adjustedValue)adjustedValue='auto';adjustedOptions[option]=adjustedValue;}}if(!event.data.settings.modal)adjustedOptions=resetPosition(adjustedOptions);event.data.$element.dialog('option',adjustedOptions);event.data.$element?.get(0)?.dispatchEvent(new CustomEvent('dialogContentResize',{bubbles:true}));}window.addEventListener('dialog:aftercreate',(e)=>{const autoResize=debounce(resetSize,20);const $element=$(e.target);const {settings}=e;const eventData={settings,$element};if(settings.autoResize===true||settings.autoResize==='true'){const uiDialog=$element.dialog('option',{resizable:false,draggable:false}).dialog('widget');uiDialog[0].style.position='fixed';$(window).on('resize.dialogResize scroll.dialogResize',eventData,autoResize).trigger('resize.dialogResize');$(document).on('drupalViewportOffsetChange.dialogResize',eventData,autoResize);}});window.addEventListener('dialog:beforeclose',()=>{$(window).off('.dialogResize');$(document).off('.dialogResize');});})(jQuery,Drupal,drupalSettings,Drupal.debounce,Drupal.displace);;
7(function($,{tabbable,isTabbable}){$.widget('ui.dialog',$.ui.dialog,{options:{buttonClass:'button',buttonPrimaryClass:'button--primary'},_createButtons(){const opts=this.options;let primaryIndex;let index;const il=opts.buttons.length;for(index=0;index<il;index++)if(opts.buttons[index].primary&&opts.buttons[index].primary===true){primaryIndex=index;delete opts.buttons[index].primary;break;}this._super();const $buttons=this.uiButtonSet.children().addClass(opts.buttonClass);if(typeof primaryIndex!=='undefined')$buttons.eq(index).addClass(opts.buttonPrimaryClass);},_createWrapper(){this.uiDialog=$('<div>
7').hide().attr({tabIndex:-1,role:'dialog','aria-modal':this.options.modal?'true':null}).appendTo(this._appendTo());this._addClass(this.uiDialog,'ui-dialog','ui-widget ui-widget-content ui-front');this._on(this.uiDialog,{keydown(event){if(this.options.closeOnEscape&&!event.isDefaultPrevented()&&event.keyCode&&event.keyCode===$.ui.keyCode.ESCAPE){event.preventDefault();this.close(event);return;}if(event.keyCode!==$.ui.keyCode.TAB||event.isDefaultPrevented())return;const tabbableElements=tabbable(this.uiDialog[0]);if(tabbableElements.length){const first=tabbableElements[0];const last=tabbableElements[tabbableElements.length-1];if((event.target===last||event.target===this.uiDialog[0])&&!event.shiftKey){this._delay(function(){$(first).trigger('focus');});event.preventDefault();}else{if((event.target===first||event.target===this.uiDialog[0])&&event.shiftKey){this._delay(function(){$(last).trigger('focus');});event.preventDefault();}}}},mousedown(event){if(this._moveToTop(event))this._focusTabbable();}});if(!this.element.find('[aria-describedby]').length)this.uiDialog.attr({'aria-describedby':this.element.uniqueId().attr('id')});},_focusTabbable(){let hasFocus=this._focusedElement?this._focusedElement.get(0):null;if(!hasFocus)hasFocus=this.element.find('[autofocus]').get(0);if(!hasFocus){const $elements=[this.element,this.uiDialogButtonPane];for(let i=0;i<$elements.length;i++){const element=$elements[i].get(0);if(element){const elementTabbable=tabbable(element);hasFocus=elementTabbable.length?elementTabbable[0]:null;}if(hasFocus)break;}}if(!hasFocus){const closeBtn=this.uiDialogTitlebarClose.get(0);hasFocus=closeBtn&&isTabbable(closeBtn)?closeBtn:null;}if(!hasFocus)hasFocus=this.uiDialog.get(0);$(hasFocus).eq(0).trigger('focus');}});})(jQuery,window.tabbable);;
8(($)=>{$.widget('ui.dialog',$.ui.dialog,{_allowInteraction(event){if(event.target.classList===undefined)return this._super(event);return event.target.classList.contains('ck')||this._super(event);}});})(jQuery);;
9(function($,Drupal,{focusable}){Drupal.behaviors.dialog={attach(context,settings){if(!document.querySelector('#drupal-modal'))document.body.insertAdjacentHTML('beforeend','<div id="drupal-modal" class="ui-front" style="display:none"></div>');if(context!==document){const dialog=context.closest('.ui-dialog-content');if(dialog){if($(dialog).dialog('option','drupalAutoButtons'))dialog.dispatchEvent(new CustomEvent('dialogButtonsChange'));setTimeout(function(){if(!dialog.contains(document.activeElement)){const autoFocusElement=dialog?.querySelector('[autofocus]');if(autoFocusElement){autoFocusElement.focus();return;}const focusableElements=focusable(dialog);if(focusableElements.length>0){focusableElements[0].focus();return;}const dialogWrapper=dialog.closest('.ui-dialog');const buttonPane=dialogWrapper?.querySelector('.ui-dialog-buttonpane');const focusableButtons=focusable(buttonPane);if(focusableButtons.length>0){focusableButtons[0].focus();return;}const closeButton=dialogWrapper?.querySelector('.ui-dialog-titlebar-close');if(closeButton){closeButton.focus();return;}dialog.focus();}},0);}}const originalClose=settings.dialog.close;settings.dialog.close=function(event,...args){originalClose.apply(settings.dialog,[event,...args]);const $element=$(event.target);const ajaxContainer=$element.data('uiDialog')?$element.data('uiDialog').opener.closest('[data-drupal-ajax-container]'):[];if(ajaxContainer.length&&(document.activeElement===document.body||$(document.activeElement).not(':visible'))){const focusableChildren=focusable(ajaxContainer[0]);if(focusableChildren.length>0)setTimeout(()=>{focusableChildren[0].focus();},0);}$(event.target).remove();};},prepareDialogButtons($dialog){const buttons=[];const buttonSelectors='.form-actions input[type=submit], .form-actions a.button, .form-actions a.action-link';const buttonElements=$dialog[0].querySelectorAll(buttonSelectors);buttonElements.forEach((button)=>{button.style.display='none';buttons.push({text:button.innerHTML||button.getAttribute('value'),class:button.getAttribute('class'),'data-once':button.dataset.once,click(e){if(button.tagName==='A')button.click();else ['mousedown','mouseup','click'].forEach((event)=>button.dispatchEvent(new MouseEvent(event)));e.preventDefault();}});});return buttons;}};Drupal.AjaxCommands.prototype.openDialog=function(ajax,response,status){if(!response.selector)return false;let dialog=document.querySelector(response.selector);if(!dialog){dialog=document.createElement('div');dialog.id=response.selector.replace(/^#/,'');dialog.classList.add('ui-front');document.body.appendChild(dialog);}if(!ajax.wrapper)ajax.wrapper=dialog.id;response.command='insert';response.method='html';ajax.commands.insert(ajax,response,status);response.dialogOptions=response.dialogOptions||{};if(typeof response.dialogOptions.drupalAutoButtons==='undefined')response.dialogOptions.drupalAutoButtons=true;else if(response.dialogOptions.drupalAutoButtons==='false')response.dialogOptions.drupalAutoButtons=false;else response.dialogOptions.drupalAutoButtons=!!response.dialogOptions.drupalAutoButtons;if(!response.dialogOptions.buttons&&response.dialogOptions.drupalAutoButtons)response.dialogOptions.buttons=Drupal.behaviors.dialog.prepareDialogButtons($(dialog));const dialogButtonsChange=()=>{const buttons=Drupal.behaviors.dialog.prepareDialogButtons($(dialog));$(dialog).dialog('option','buttons',buttons);};dialog.addEventListener('dialogButtonsChange',dialogButtonsChange);dialog.addEventListener('dialog:beforeclose',(event)=>{dialog.removeEventListener('dialogButtonsChange',dialogButtonsChange);});const createdDialog=Drupal.dialog(dialog,response.dialogOptions);if(response.dialogOptions.modal)createdDialog.showModal();else createdDialog.show();dialog.parentElement?.querySelector('.ui-dialog-buttonset')?.classList.add('form-actions');};Drupal.AjaxCommands.prototype.closeDialog=function(ajax,response,status){const dialog=document.querySelector(response.selector);if(dialog){Drupal.dialog(dialog).close();if(!response.persist)dialog.remove();}};Drupal.AjaxCommands.prototype.setDialogOption=function(ajax,response,status){const dialog=document.querySelector(response.selector);if(dialog)$(dialog).dialog('option',response.optionName,response.optionValue);};window.addEventListener('dialog:aftercreate',(event)=>{const dialog=event.dialog;const cancelButton=event.target.querySelector('.dialog-cancel');const cancelClick=(e)=>{dialog.close('cancel');e.preventDefault();e.stopPropagation();};cancelButton?.removeEventListener('click',cancelClick);cancelButton?.addEventListener('click',cancelClick);});Drupal.AjaxCommands.prototype.openModalDialogWithUrl=function(ajax,response){const dialogOptions=response.dialogOptions||{};const elementSettings={progress:{type:'throbber'},dialogType:'modal',dialog:dialogOptions,url:response.url,httpMethod:'GET'};Drupal.ajax(elementSettings).execute();};})(jQuery,Drupal,window.tabbable);;
10(function($,Drupal,Bootstrap){Drupal.behaviors.dialog.ajaxCurrentButton=null;Drupal.behaviors.dialog.ajaxOriginalButton=null;var success=Drupal.Ajax.prototype.success;Drupal.Ajax.prototype.success=function(response,status){if(this.dialogType)for(var i=0,l=response.length;i<l;i++)if(response[i].dialogOptions){response[i].dialogType=response[i].dialogOptions.dialogType=this.dialogType;response[i].$trigger=response[i].dialogOptions.$trigger=$(this.element);}return success.apply(this,[response,status]);};var beforeSerialize=Drupal.Ajax.prototype.beforeSerialize;Drupal.Ajax.prototype.beforeSerialize=function(element,options){if(this.dialogType){options.data['ajax_page_state[dialogType]']=this.dialogType;var id=$(this.element).parents('.js-drupal-dialog:first').attr('id');
10if(id)options.data['ajax_page_state[dialogId]']=id;}return beforeSerialize.apply(this,arguments);};Drupal.behaviors.dialog.ajaxUpdateButtons=function(reset){if(this.ajaxCurrentButton&&this.ajaxOriginalButton){this.ajaxCurrentButton.html(this.ajaxOriginalButton.html()||this.ajaxOriginalButton.attr('value'));this.ajaxCurrentButton.prop('disabled',this.ajaxOriginalButton.prop('disabled'));}if(reset){this.ajaxCurrentButton=null;this.ajaxOriginalButton=null;}};$(document).ajaxSend(function(){Drupal.behaviors.dialog.ajaxUpdateButtons();}).ajaxComplete(function(){Drupal.behaviors.dialog.ajaxUpdateButtons(true);});;Drupal.behaviors.dialog.prepareDialogButtons=function prepareDialogButtons($dialog){var _this=this;var buttons=[];var $buttons=$dialog.find('.form-actions').find('button, input[type=submit], a.button, .btn');$buttons.each(function(){var $originalButton=$(this).attr('tabindex',-1).css({display:'block',width:0,height:0,padding:0,border:0,overflow:'hidden'});buttons.push({text:Bootstrap.stripHtml($originalButton)||$originalButton.attr('value'),class:$originalButton.attr('class').replace('use-ajax-submit',''),click:function click(e){e.preventDefault();e.stopPropagation();_this.ajaxCurrentButton=$(e.target);_this.ajaxOriginalButton=$originalButton;Bootstrap.simulate($originalButton,['mousedown','mouseup','click']);},create:function(){_this.ajaxCurrentButton=$(this);_this.ajaxOriginalButton=$originalButton;_this.ajaxUpdateButtons(true);}});});return buttons;};})(window.jQuery,window.Drupal,window.Drupal.bootstrap);;
11(function($,Drupal,once,tabbable){if($.ui&&$.ui.dialog&&$.ui.dialog.prototype._allowInteraction){var _allowInteraction=$.ui.dialog.prototype._allowInteraction;$.ui.dialog.prototype._allowInteraction=function(event){if($(event.target).closest('.cke_dialog').length)return true;return _allowInteraction.apply(this,arguments);};}Drupal.behaviors.webformDialogEvents={attach:function(){if(once('webform-dialog','html').length)$(window).on({'dialog:aftercreate':function(event,dialog,$element,settings){setTimeout(function(){const tabbableElements=tabbable.tabbable($element.get(0));var hasFocus=$element.find("[autofocus]");if(!hasFocus.length){hasFocus=tabbableElements.filter((element)=>{return (element.tagName.toLowerCase()==="input"&&element.type!=="button");});hasFocus=$(hasFocus);}if(!hasFocus.length)hasFocus=$element.parent().find('.ui-dialog-titlebar-close');hasFocus.eq(0).trigger('focus');});}});}};})(jQuery,Drupal,once,tabbable);;
12(function($,Drupal,drupalSettings,once){Drupal.webform=Drupal.webform||{};Drupal.webform.dialog=Drupal.webform.dialog||{};Drupal.webform.dialog.options=Drupal.webform.dialog.options||{};Drupal.webformOpenDialog=function(url,type){var $div=$('<div><a href="'+url+'" class="webform-dialog '+type+'"></a></div>');Drupal.behaviors.webformDialog.attach($div.get(0));$div.find('a').trigger('click');};Drupal.behaviors.webformDialog={attach(context){$(once('webform-dialog','a.webform-dialog',context)).each(function(){var $a=$(this);var options=$.extend({},Drupal.webform.dialog.options);if($a.attr('class').match(/webform-dialog-([a-z0-9_]+)/)){var dialogOptionsName=RegExp.$1;if(drupalSettings.webform.dialog.options[dialogOptionsName]){options=drupalSettings.webform.dialog.options[dialogOptionsName];delete options.title;}}if($(this).data('dialog-options'))$.extend(options,$(this).data('dialog-options'));var href=$a.attr('href');if(href.indexOf('?source_entity_type=ENTITY_TYPE&source_entity_id=ENTITY_ID')!==-1){if(drupalSettings.webform.dialog.entity_type&&drupalSettings.webform.dialog.entity_id){href=href.replace('ENTITY_TYPE',encodeURIComponent(drupalSettings.webform.dialog.entity_type));href=href.replace('ENTITY_ID',encodeURIComponent(drupalSettings.webform.dialog.entity_id));}else href=href.replace('?source_entity_type=ENTITY_TYPE&source_entity_id=ENTITY_ID','');$a.attr('href',href);}href+=(href.indexOf('?')===-1?'?':'&')+'_webform_dialog=1';var element_settings={};element_settings.progress={type:'fullscreen'};element_settings.url=href;element_settings.event='touchstart click';element_settings.dialogType=$a.data('dialog-type')||'modal';element_settings.dialog=options;element_settings.element=this;element_settings.error=function error(xmlhttp,uri){if(xmlhttp.status===403)window.location.replace(href.split('?')[0]);};Drupal.ajax(element_settings);});}};})(jQuery,Drupal,drupalSettings,once);;
13(function($){$.B2bOrder=function(uuid,object){if(!uuid||typeof (object)==='undefined')return;var object_name=object.toString();return $.ajax({type:'POST',data:{uuid,object:object_name},url:Drupal.url('b2b/order/mark'),dataType:'json',global:false,success:function(response){if(response.marked)if(object_name==='WssClickCollectOrder')object.update(false,true);else object.read(null,false,true);}});};})(jQuery);;
14var clickCollectOrder={};var STORES_STOCK_CALLER_CONTEXT='stores_stock';var CLICK_COLLECT_CALLER_CONTEXT='click_collect';(function($){clickCollectOrder.shop=new function(){this.addToBasketCC=function(product){var context=new PaymentContext();context.article.order_type='click&collect';onlineOrder.shop.prepareContextVars(product);new WssClickCollect().order.addArticle(context.article.wss_id,context.article.quantity,undefined,undefined);};this.openCollectAtStore=function(product){var context=new PaymentContext();context.article.order_type='click&collect';onlineOrder.shop.prepareContextVars(product);var quantity=context.article.quantity;if(drupalSettings.wss_payment.enabled){var order=new OrderController().getModel();if(order&&order.orderlines)for(var orderline_index in order.orderlines){var orderline=order.orderlines[orderline_index];if(context.article.wss_id==orderline.article){quantity=orderline.quantityAmount;break;}}}new WssClickCollect().order.switchToClickCollect(context.article.wss_id,quantity,null,null);};this.show_more_stores=function(delta){delta=typeof (delta)!=="undefined"?delta:drupalSettings.wss_click_collect.shops_to_display;var stores_to_display=new WssClickCollect().stores.stores_to_display();new WssClickCollect().stores.stores_to_display(stores_to_display+delta);};this.switch_store=function(article_id){article_id=typeof (article_id)!=='undefined'?article_id:null;var product=$('body.node-type-product article.node-product');var context=new PaymentContext();if(article_id&&product.length){$.WssClickCollectStoresAtpInit(CLICK_COLLECT_CALLER_CONTEXT,article_id);onlineOrder.shop.prepareContextVars(product);context.article.order_type='click&collect';new WssClickCollect().order.switchStore(context.article.wss_id,context.article.quantity);}else{context.show_popup=false;new WssClickCollect().order.switchStore();}};this.stores_locator_init=function(container_selector,context){$(container_selector).find('.wss-click-collect-stores-selector-address-form input[name="address"]').each(function(){var uri='/wss/json/zipsuggestion/'+drupalSettings.wss_click_collect.catalog+'/1';var $input=$(this).attr('autocomplete','OFF').attr('aria-autocomplete','list');$input.parent().attr('role','application').append($('<span class="element-invisible" aria-live="assertive"></span>').attr('id',$input.attr('id')+'-autocomplete-aria-live'));let autocomplete=$(this).autocomplete({source:function(request,response){$.ajax({url:uri+'/'+request.term,success:function(data){let transformed=$.map(data,function(val){for(let key in val)return {label:val[key]['name'],data:val[key]};});transformed=_.uniq(transformed,'label');response(transformed);},error:function(){response([]);}});},select:function(event,ui){new WssClickCollect().location.update(ui.item.data.lat,ui.item.data.lon,ui.item.label);var locationAddress=$(this.input).val();if($('#notification-container').not('.type-storeStock').length)var caller=CLICK_COLLECT_CALLER_CONTEXT;else var caller=STORES_STOCK_CALLER_CONTEXT;new WssClickCollect().location.create(locationAddress,caller);}}).data('uiAutocomplete');autocomplete._renderMenu=function(ul,items){let self=this;$.each(items,function(index,item){self._renderItemData(ul,item);});$(ul).addClass("search-suggestions store-stock-suggestions dropdown-menu").attr("data-test","storeStockSuggestions");};autocomplete._renderItem=function(ul,item){return $("<li data-lat='"+item.data.lat+"' data-lng='"+item.data.lon+"'>").data("item.autocomplete",item).append(item.label).appendTo(ul);};var location=new WssClickCollect().location.read();location.address.subscribe(function(value){$input.val(value);});});};}();})(jQuery);;
15(function($){$.WssClickCollectStoresAtpInit=function(caller,wssId){caller=typeof (caller)!=='undefined'?caller:null;if(!wssId){var data_source=$('article.node-product');if(data_source.length){var current_article_id=$(data_source[0]).data('wss_id');new WssClickCollect().storesAtp.create(current_article_id,caller);}}else new WssClickCollect().storesAtp.create(wssId,caller);};})(jQuery);;
16(function($){$(function(){if(drupalSettings.wss_click_collect.stores_stock_enabled||drupalSettings.wss_click_collect.enabled){new WssRequestEvent().addListener('WssClickCollectLocationCreateStart',new $.WssClickCollectLocationCreateStartListener());new WssRequestEvent().addListener('WssClickCollectLocation',new $.WssClickCollectLocationListener());new WssRequestEvent().addListener('WssClickCollectLocationRendered',new $.WssClickCollectLocationRenderedListener());new WssRequestEvent().addListener('WssClickCollectStores',new $.WssClickCollectStoresListener());new WssRequestEvent().addListener('WssClickCollectStoresAtp',new $.WssClickCollectStoresAtpListener());new WssRequestEvent().addListener('WssClickCollectOrder',new $.WssClickCollectOrderListener());new WssRequestEvent().addListener('WssClickCollectOrderMoveArticlesProcessor',new $.WssClickCollectOrderMoveArticlesProcessorListener());new WssRequestEvent().addListener('WssClickCollectOrderSetStoreProcessor',new $.WssClickCollectOrderSetStoreProcessorListener());new WssRequestEvent().addListener('WssClickCollectOrderSetArticleProcessor',new $.WssClickCollectOrderSetArticleProcessorListener());new WssRequestEvent().addListener('WssClickCollectOrder',new $.CCBasketListener());var elements={'order':$('.wss-click-collect-order-ko-view'),'stores':$('.wss-click-collect-stores-ko-view'),'location':$('.wss-click-collect-location-ko-view')};var settings=drupalSettings.wss_click_collect;var get_uuid=$.url().param('uuid');if(!settings.order_uuid&&get_uuid)settings.order_uuid=get_uuid;new WssClickCollect(settings,elements).create();}});})(jQuery);;
17(function($,cookies){$.WssClickCollectOrderListener=function(){this.success=function(object,e,url){var clickCollectElements=$('.wss-click-collect-basket-block-full, .product-teaser .wss-click-collect-product-link-button, .wss-click-collect-basket-block-teaser, .page-basket-click-n-collect .basket-click-and-collect');var onlineElements=$('.wss-basket-teaser, .wss-basket-full, .field-name-field-payment-add-to-basket, .basket-overview .basket-click-and-collect');if(object.order.orderlines().length){$(clickCollectElements).show();$(onlineElements).hide();
17if(object.order.type()==='GIFT_CARD')if(cookies.get(drupalSettings.wss_payment.cookie_name_original)){cookies.remove(drupalSettings.wss_click_collect.cookie_name);new WssClickCollect().order.update(null,true);new OrderController().read(cookies.get(drupalSettings.wss_payment.cookie_name_original));if(window.location.pathname===Drupal.url('basket/click-n-collect'))window.location.replace(Drupal.url('basket'));}}else{var giftCardExist=new WssCache('localStorage').read('JYSKGiftCardOrderCache');if(giftCardExist&&window.location.pathname===Drupal.url('basket/click-n-collect')){if(cookies.get(drupalSettings.wss_payment.cookie_name_original)){cookies.remove(drupalSettings.wss_click_collect.cookie_name);window.location.replace(Drupal.url('basket'));}}else{if(!object.order.orderlines().length){$(clickCollectElements).hide();$(onlineElements).show();}}}$.WssClickCollectStoresAtpInit(CLICK_COLLECT_CALLER_CONTEXT);new WssClickCollect().storesAtp.getBasketProductsAtp();if(!object.read().savingsPrTypeB2B_DISCOUNTText&&drupalSettings.customerB2B)$.B2bOrder(cookies.get(drupalSettings.wss_click_collect.cookie_name),object);if(object.read().savingsPrTypeB2B_DISCOUNTText&&cookies.get('b2bReloadBasketCC')){cookies.remove('b2bReloadBasketCC');object.update(false,true);}$.JYSKGigtcardDisplayGiftCardOrderInfo();if(window.location.pathname==='/basket/click-n-collect/receipt')dataLayer.push({event:'ReceiptPageLoad'});};this.error=function(object,e,url){if($.inArray(1,e.errorCodes)>=0){$.WssClickCollectStoresAtpInit(CLICK_COLLECT_CALLER_CONTEXT);var clickCollectElements=$('.page-basket-click-n-collect .forward-link, .wss-click-collect-basket-block-full, .wss-click-collect-basket-block-teaser, .page-basket-click-n-collect .basket-click-and-collect');$(clickCollectElements).hide();}if($.inArray(3,e.errorCodes)>=0){var message={is_error:true,text:e.userMessage,error_code:''};var context=new PaymentContext();var article_being_set=new WssClickCollect().order.getArticleBeingSet();context.article.wss_id=article_being_set.wss_id;if(article_being_set.name)context.article.name=article_being_set.name;var html=Drupal.theme('basket_notification_error',context.article,message);jysk.notification.openNotification(html,'addedToBasket',Drupal.t('Product added to basket'));new WssClickCollect().order.update();}$.JYSKGigtcardDisplayGiftCardOrderInfo();};this.empty=function(object,e,url){};};})(jQuery,Cookies);;
18(function($,cookies){$.CCBasketListener=function(){this.success=function(object){let articles=object.getArticles('click_collect');const pathInfo=drupalSettings.path.currentPath;if(pathInfo==='basket/click-n-collect'){const savedPersist=JSON.parse(localStorage.getItem('reduxPersist:PersistFormValues')??'{}');localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...savedPersist,WSSOrderline:{type:'click_collect',orderLine:articles},oocfBasketStockStatus:Object.keys(articles).length>0?savedPersist.oocfBasketStockStatus:undefined}));}else{if(Object.keys(articles).length>0){const eventOrder=new CustomEvent('oocf-store-type-event',{detail:{orderlineCC:articles}});window.dispatchEvent(eventOrder);}}};};})(jQuery,Cookies);;
19(function($){$.WssClickCollectLocationCreateStartListener=function(){this.success=function(object,e,url){if(object.context.caller){if(object.context.caller===CLICK_COLLECT_CALLER_CONTEXT&&!$('.collect-at-store-container').length){var html=Drupal.theme('wss_click_collect_store_selector');jysk.notification.openNotification(html,"collectAtStore",Drupal.t('Collect at store - Free'));new WssClickCollect().stores.applyBindings($('.wss-click-collect-stores-ko-view'));new WssClickCollect().location.applyBindings($('.wss-click-collect-location-ko-view'));clickCollectOrder.shop.stores_locator_init('.wss-click-collect-stores-selector-popup-wrapper',CLICK_COLLECT_CALLER_CONTEXT);}if(object.context.caller===STORES_STOCK_CALLER_CONTEXT)new WssClickCollect().location.applyBindings($('.wss-click-collect-location-ko-view'));}};};})(jQuery);;
20(function($){$.WssClickCollectLocationListener=function(){var lastLocationWithWrongIndex='';this.success=function(object,e,url){var currentLocation=object.location.raw_address;if(object.context.caller){if(object.context.caller===CLICK_COLLECT_CALLER_CONTEXT)new WssClickCollect().stores.create(CLICK_COLLECT_CALLER_CONTEXT);if(object.context.caller===STORES_STOCK_CALLER_CONTEXT)new WssClickCollect().stores.create(STORES_STOCK_CALLER_CONTEXT);}if(object.location.location_types&&object.location.location_types.indexOf('country')!==-1&&lastLocationWithWrongIndex!==currentLocation){var zipUrl='/wss/json/zipsuggestion/'+drupalSettings.wss_click_collect.catalog+'/1/'+encodeURIComponent(object.location.raw_address);$.get(zipUrl,function(data){if(data.length){lastLocationWithWrongIndex=currentLocation;new WssClickCollect().location.create(Object.keys(data[0])[0],object.context.caller);}});}else lastLocationWithWrongIndex='';};this.error=function(object,e,url){if(object.context.caller){if(object.context.caller===CLICK_COLLECT_CALLER_CONTEXT){if($.inArray(1,e.errorCodes)>=0||$.inArray(2,e.errorCodes)>=0)new WssClickCollect().stores.create(CLICK_COLLECT_CALLER_CONTEXT);new WssClickCollect().stores.stores_to_display(0);}if(object.context.caller===STORES_STOCK_CALLER_CONTEXT){if($.inArray(1,e.errorCodes)>=0||$.inArray(2,e.errorCodes)>=0)new WssClickCollect().stores.create(STORES_STOCK_CALLER_CONTEXT);if($.inArray(3,e.errorCodes)>=0)if($.browser.mozilla)new WssClickCollect().stores.create(STORES_STOCK_CALLER_CONTEXT);new WssClickCollect().stores.stores_to_display(0);}if(e.errorCodes&&e.errorCodes[0]==='ZERO_RESULTS'){var address=$('.wss-click-collect-stores-selector-address-form input').val();var url='/wss/json/zipsuggestion/'+drupalSettings.wss_click_collect.catalog+'/1/'+encodeURIComponent(address);$.get(url,function(data){if(data.length){var index=Object.keys(data[0])[0];new WssClickCollect().location.create(index,object.context.caller,data[0][index].lat,data[0][index].lon);}});}}};};})(jQuery);;
21(function($){$.WssClickCollectStoresListener=function(){this.success=function(object,e,url){if(object.context.caller){if(object.context.caller===CLICK_COLLECT_CALLER_CONTEXT)new WssClickCollect().stores.buildStoresList();if(object.context.caller===STORES_STOCK_CALLER_CONTEXT)new WssClickCollect().stores.buildStoresStockList();}};};})(jQuery);;
22(function($){$.WssClickCollectStoresAtpListener=function(){this.success=function(atp,e,url){this.proccessAtp(atp,e,url);};this.error=function(atp,e,url){$('.store-stock-link').remove();this.proccessAtp(atp,e,url);};this.proccessAtp=function(atp,e,url){if(atp.context.caller&&atp.context.caller===STORES_STOCK_CALLER_CONTEXT){var cache=new WssCache();var address=cache.read('wss_click_collect_location_address');var lat=cache.read('wss_click_collect_location_lat');var lng=cache.read('wss_click_collect_location_lng');new WssClickCollect().location.create(address,STORES_STOCK_CALLER_CONTEXT,lat,lng);}var atpPositiveStores=atp.getStoresPositiveAtpUnits();if(Object.keys(atpPositiveStores).length<=0)$('.store-stock-link').addClass('disabled').prop('disabled',true);};};})(jQuery);;
23(function($){$.WssClickCollectOrderMoveArticlesProcessorListener=function(){this.success=function(object,e,url){new OrderController().read();if(Drupal.urlMatch('basket/click-n-collect')||Drupal.urlMatch('basket/click-n-collect/overview'))window.location.href='/basket';};this.error=function(object,e,url){if(e.jqXHR&&e.jqXHR.responseText){var response=$.parseJSON(e.jqXHR.responseText);if(response.order&&response.order.errorMessage!==undefined){var error_message=response.order.errorMessage;switch(response.order.errorCode){case 'INSUFFICIENT_ATP':error_message=Drupal.t("Sorry, but some of the articles from your basket can't be moved to onlinesales order.");break;case 'ARTICLE_NOT_AVAILABLE_IN_ORDERTYPE':error_message=Drupal.t('Some items in your basket are not available for sale online');break;}
23new WssClickCollect().order.update();}}};};})(jQuery);;
24(function($){$.WssClickCollectOrderSetStoreProcessorListener=function(){this.success=function(object,e,url,response_data){var currentUrl=window.location.pathname;if(currentUrl=='/basket')window.location.href='/basket/click-n-collect';var context=new PaymentContext();context.show_popup=true;};};})(jQuery);;
25(function($){$.WssClickCollectOrderSetArticleProcessorListener=function(){this.success=function(object,e,url,response_data){var context=new PaymentContext();if(context.article.quantity>0&&context.article.wss_id&&context.show_popup)new WssClickCollect().order.applyBindings($('#notification-container .wss-click-collect-order-ko-view'));};};})(jQuery);;
26(function($){$.WssClickCollectLocationRenderedListener=function(){this.success=function(object,e,url){clickCollectOrder.shop.stores_locator_init('#stockModal',STORES_STOCK_CALLER_CONTEXT);};};})(jQuery);;
27(function($){Drupal.behaviors.enableClickCollectConfirmationSubmit={attach:function(context){$('.wss-click-collect-confirmation-form [data-test="confirmOrderButton"], [form="wss-click-collect-confirmation-form"][data-test="confirmOrderButton"]',context).prop('disabled',false);}};$(document).ready(function(){$(document).on('click','#stockModal .wss-click-collect-stores-selector-address-form a.cta-info',function(event){event.preventDefault();var address=$(this).parents().closest('.wss-click-collect-stores-selector-address-form').find('input[name="address"]').val();new WssClickCollect().location.create(address,STORES_STOCK_CALLER_CONTEXT);});$(document).on('keypress keyup','#stockModal .wss-click-collect-stores-selector-address-form, #notification form.wss-click-collect-stores-selector-address-form',function(event){var code=event.keyCode||event.which;if(code==13)event.preventDefault();});$(document).on('keypress','.wss-click-collect-stores-selector-address-form',function(event){var keyCode=event.keyCode||event.which;if(keyCode=='13')$(this).find('a.primary').trigger('click');});$(document).on('click','#notification a.wss-click-collect-store-link, #notification .wss-click-collect-store-button, #notification .wss-click-collect-store-active-header',function(event){event.preventDefault();var shop_id=$(this).data('shop-id');var shop_name=$(this).data('shop-name');new WssClickCollect().order.setStore(shop_id,shop_name);});$(document).on('click','#notification form.wss-click-collect-stores-selector-address-form a.cta-info',function(event){event.preventDefault();var address=$(this).parents().closest('.wss-click-collect-stores-selector-address-form').find('input[name="address"]').val();new WssClickCollect().location.create(address,CLICK_COLLECT_CALLER_CONTEXT);});$(document).on('click','.addToBasket.wss-click-collect-add-to-basket',function(e){e.preventDefault();var product=$(this).parents().closest('.node-product');clickCollectOrder.shop.addToBasketCC(product);});$(document).on('click','.openCollectAtStore',function(e){e.preventDefault();var product=$(this).parents('article.node-product');$.WssClickCollectStoresAtpInit(CLICK_COLLECT_CALLER_CONTEXT,product.data('wss_id'));clickCollectOrder.shop.openCollectAtStore(product);});$(document).on('click','.store-stock-link',function(e){e.preventDefault();jysk.notification.openNotification(Drupal.theme('wss_click_collect_stock_modal'),'storeStock',Drupal.t("Store stock count"));Drupal.attachBehaviors('#notification-container');new WssClickCollect().stores.applyBindings($('.wss-click-collect-stores-ko-view'));});$(document).on('change','.wss-click-collect-order-ko-view input[name="quantity"]',function(){new WssClickCollect().order.changeArticleQuantity($(this).attr('data-wss_id'),$(this).val());});$(document).on('hover','#collect-at-store .glyphicon',function(){$(this).tooltip({placement:'top'});});$(document).on('click','.reserve-product-new-delivery-selector-oocf',function(e){e.preventDefault();var shop_id=$(this).data('shop-id');var shop_name=$(this).data('shop-name');var add_to_basket=$(this).data('add-to-basket');var product=document.querySelector('.node-product');new WssClickCollect().order.setStore_new(shop_id,shop_name,product,add_to_basket);});$(document).on('click','.switchOnlineStoreButton',function(e){e.preventDefault();var product=$(this).parents().closest('.node-product');new WssClickCollect().order.switchToOnlinesales(product);});$(document).on('click','.switchCCStore',function(e){e.preventDefault();var product=$(this).parents('article.node-product');var shop_id=$(this).data('shop-id');var shop_name=$(this).data('shop-name');new WssClickCollect().order.setStore_new(shop_id,shop_name,product,false);});$(document).on('click','.basket-click-and-collect .cc-dismiss',function(e){e.preventDefault();$('.basket-click-and-collect').addClass('dismiss');$('.basket-click-and-collect-content').addClass('hidden');$('.basket-click-and-collect .cc-dismiss-undo').removeClass('hidden');});$(document).on('click','.basket-click-and-collect .cc-dismiss-undo',function(e){e.preventDefault();$('.basket-click-and-collect').removeClass('dismiss');$('.basket-click-and-collect-content').removeClass('hidden');$('.basket-click-and-collect .cc-dismiss-undo').addClass('hidden');});$(document).on('click','.view-store-opening-hours',function(e){e.preventDefault();var openingHours=$('.click-and-collect-store-open-hours');if(openingHours.is(':visible')){openingHours.slideUp('fast');$(this).text(Drupal.t('See the store opening hours'));}else{openingHours.slideDown('fast');$(this).text(Drupal.t("Hide the store's opening hours"));}});$(document).on('click','.field-name-field-payment-store-stock .store-stock-link:not(.disabled)',function(e){e.preventDefault();var article=$(this).closest('.node-product[data-wss_id]');if(article.length){var wssId=$(article).data('wss_id');
27if(wssId)$.WssClickCollectStoresAtpInit(STORES_STOCK_CALLER_CONTEXT,wssId);}});$(document).on('JYSKProductTooltipView JYSKProductTooltipLoad',function(){if(typeof WssClickCollect!=='undefined')new WssClickCollect().order.update();});$('.wss-click-collect-confirmation-form .primary.btn').prop('disabled',false);});})(jQuery);;
28(function($){Drupal.theme.wss_click_collect_stock_modal=function(){var html='';html+='<div id="stockModal" class="open-variants wss-click-collect-stores-selector-popup-wrapper modal-content">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">'+Drupal.t("Store stock count")+'</h2>';html+='</div>';html+='<div class="modal-body clearfix">';html+='<p>'+Drupal.t("Check the availability of the product in any JYSK store")+'</p>';html+='<div class="wss-click-collect-location-ko-view" data-bind="template: {name: \'wss-click-collect-address-form-template\', afterRender: afterRender}">';html+='<i class="glyphicon glyphicon-refresh glyphicon-spin"></i>';html+=Drupal.t("Location form is being loaded");html+='</div>';html+='<div class="wss-click-collect-stores-ko-view" data-bind="template: {name: \'wss-click-collect-stores-stock-template\'}"><br/>';html+='<i class="glyphicon glyphicon-refresh glyphicon-spin"></i>';html+=Drupal.t("Stores list is being loaded");html+='</div>';html+='</div>';html+='</div>';return html;};Drupal.theme.wss_click_collect_store_selector=function(){var html='';html+='<div id="notification" data-test="ccStoresSelectorPopup" class="open-variants wss-click-collect-stores-selector-popup-wrapper modal-content">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">'+Drupal.t('Collect at store - Free')+'</h2>';html+='</div>';html+='<div class="collect-at-store-container">';html+='<p class="wss-click-collect-stores-selector-intro">'+Drupal.t('You can pick up your order <i>within 2 hours</i> (within the stores opening hours).');html+='<div class="wss-click-collect-location-ko-view" data-bind="template: {name: \'wss-click-collect-address-form-template\'}"></div>';html+='<div class="wss-click-collect-stores-ko-view" data-bind="template: {name: \'wss-click-collect-stores-list-template\'}"></div>';html+='</div>';html+='</div>';return html;};})(jQuery);;
29var WssClickCollectStores=function(){var self=this;self.stores={};self.context={caller:null};self.is_loading=ko.observable(false);self.stores_list=ko.observableArray();self.stores_stock_list=ko.observableArray();self.stores_to_display=ko.observable();self.hide_atp_negative_stores=ko.observable();self.hide_no_display_stores=ko.observable();self.show_hide_no_display_stores_filter=ko.observable();self.hide_atp_negative_stock_stores=ko.observable();self.hide_no_display_stock_stores=ko.observable(false);self.total_number_of_stores=ko.observable();var rebuildStoresListCallback=function(){self.buildStoresList(function(){var displayAllStoresSwitcherProcessor=function(){this.validate=function(data){return true;};this.parse=function(data){};this.toString=function(){return 'WssDisplayAllStoresSwitcherProcessor';};};new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),new displayAllStoresSwitcherProcessor());},true);};self.hide_atp_negative_stores.subscribe(function(newValue){rebuildStoresListCallback();});self.hide_atp_negative_stock_stores.subscribe(function(newValue){self.buildStoresStockList();});self.hide_no_display_stock_stores.subscribe(function(newValue){self.buildStoresStockList();});self.hide_no_display_stores.subscribe(function(newValue){rebuildStoresListCallback();});self.atp_positive_stores=null;self.create=function(caller){caller=typeof (caller)!=='undefined'?caller:null;self.context.caller=caller;var settings=new WssClickCollect().settings;var stores_list_url=new WssClickCollect().settings.stores_list_url;var location=new WssClickCollect().location.read();var request={amount:'all',all:caller===STORES_STOCK_CALLER_CONTEXT};if(location.lat&&location.lng){request.lat=location.lat;request.lon=location.lng;request.sort_by='distance';}self.is_loading(true);new WssRequest(stores_list_url,self,request,null,null,true);};self.applyBindings=function(elements){if(typeof (elements)==='undefined')elements=new WssClickCollect().elements.stores;if(!elements)return;for(var i=0;i<elements.length;i++){var bindings_applied=!!ko.dataFor(elements[i]);if(!bindings_applied)ko.applyBindings(self,elements[i]);}};self.read=function(){return self.stores;};self.update=function(data){self.stores=data;self.total_number_of_stores(Object.keys(self.stores).length);var settings=new WssClickCollect().settings;var stores_to_display=self.stores_to_display()?self.stores_to_display():settings.shops_to_display;self.stores_to_display(stores_to_display);self.setStoresDefaultCollectabilityStates();self.applyBindings();};self.validate=function(data){self.is_loading(false);return true;};self.parse=function(data){self.update(data);};self.toString=function(){return 'WssClickCollectStores';};self.setStoresDefaultCollectabilityStates=function(initial_state){initial_state=typeof (initial_state)==='undefined'?'loading':initial_state;var default_stores_collectability_states={};for(var store_index in self.stores){var shop_id=self.stores[store_index].shop_id;default_stores_collectability_states[shop_id]=initial_state;}ko.mapping.fromJS(default_stores_collectability_states,self.storesCollactability);};self.buildStoresStockList=function(callback){var storesAtp=new WssClickCollect().storesAtp;var stores_positive_atp_units=storesAtp.getStoresPositiveAtpUnits();var stores_on_display=storesAtp.getStoresOnDisplay();self.show_hide_no_display_stores_filter(Object.keys(stores_on_display).length);var closest_stores=[];for(var store_id in self.stores){var store=self.stores[store_id];if(stores_positive_atp_units[store_id])store.units=stores_positive_atp_units[store_id];else store.units=0;if(self.hide_no_display_stock_stores()&&!stores_on_display[store_id])continue;if(self.hide_atp_negative_stock_stores()&&store.units<=0)continue;closest_stores.push(store);}self.stores_stock_list(closest_stores);if(typeof (callback)!=='undefined')callback();};self.buildStoresList=function(callback,use_cached_data){self.is_loading(true);use_cached_data=typeof (use_cached_data)==='undefined'?false:use_
29cached_data;var stores_on_display=new WssClickCollect().storesAtp.getStoresOnDisplay();self.show_hide_no_display_stores_filter(Object.keys(stores_on_display).length);new WssClickCollect().storesAtp.buildAtpPositiveStoresList(function(closest_atp_positive_stores){self.atp_positive_stores=closest_atp_positive_stores;self.setStoresDefaultCollectabilityStates('not_ok');var stores_collactability_states=ko.mapping.toJS(self.storesCollactability);for(var store_index in closest_atp_positive_stores){var shop_id=closest_atp_positive_stores[store_index].shop_id;if(self.getStoreAtp(shop_id)===false||self.getStoreAtp(shop_id)>0)stores_collactability_states[shop_id]='ok';}var filtered_stores_list;if(self.hide_atp_negative_stores())filtered_stores_list=closest_atp_positive_stores;else filtered_stores_list=Object.values(self.read());if(self.hide_no_display_stores()){var filtered_display=[];var stores_on_display=new WssClickCollect().storesAtp.getStoresOnDisplay();for(store_index in filtered_stores_list){var store=filtered_stores_list[store_index];if(stores_on_display[store.shop_id])filtered_display.push(store);}filtered_stores_list=filtered_display;}self.stores_list(filtered_stores_list);ko.mapping.fromJS(stores_collactability_states,self.storesCollactability);self.is_loading(false);if(typeof (callback)!=='undefined')callback();},use_cached_data);};self.sortStoresByDistance=function(atp_positive_stores,include_closest_store){include_closest_store=typeof (include_closest_store)!=='undefined'?include_closest_store:false;var stores_list=[];var shops_counter=0;for(var store_id in self.stores)if(jQuery.inArray(store_id,atp_positive_stores)>=0||(shops_counter==0&&include_closest_store)){stores_list.push(self.stores[store_id]);shops_counter++;}return stores_list;};self.userAddress=ko.computed(function(){var address=new WssClickCollect().location.read().address;return address;});self.getStoreAtp=function(store_id){return new WssClickCollect().storesAtp.getStorePositiveAtpUnits(store_id);};self.getStoreAtpText=function(store_id){var store_atp=self.getStoreAtp(store_id);if(store_atp)return Drupal.t('@atp pcs.',{"@atp":store_atp});else return Drupal.t('All products in stock');};self.getStoreCheckedTimeText=function(store_id){return new WssClickCollect().storesAtp.getStoreCheckedTimeText(store_id);};self.getDisplayModel=function(store_id){return new WssClickCollect().storesAtp.getDisplayModel(store_id);};self.getCurrentStoreId=function(){var store_id=new WssClickCollect().order.read().siteId;store_id=store_id?store_id:false;return store_id;};self.isCurrentStore=function(store_id){var is_current_store=false;var order=new WssClickCollect().order.read();if(order&&order.orderlines&&order.orderlines.length)if(store_id==self.getCurrentStoreId())is_current_store=true;return is_current_store;};self.storesCollactability=ko.mapping.fromJS({});self.error=function(error_code,error_message){var errors=[{errorCode:error_code,systemMessage:error_message,userMessage:error_message}];new WssRequestEvent().trigger(new WssRequestExceptionErrors(errors),self);self.is_loading(false);};};;
30var WssClickCollectStoresAtp=function(){var self=this;self.context={caller:null};self.storesData=ko.observable({});self.storesPositiveAtpUnits=ko.observable({});self.storesOnDisplay=ko.observable({});var basketStoreAtp=null;self.stores_collactability={};self.create=function(article_id,caller){if(typeof (article_id)==='undefined'||!article_id){var error_message=Drupal.t("Can't load stores atp data because article id isn't set");self.error(error_message);return;}caller=typeof (caller)!=='undefined'?caller:null;self.context.caller=caller;var settings=new WssClickCollect().settings;var url=settings.stores_atp_url;url+=settings.sales_org+'/';url+=article_id;new WssRequest(url,self,{negativeOk:1});};self.getStoresPositiveAtpUnits=function(){return self.storesPositiveAtpUnits();};self.hasStoresPositiveAtpUnits=function(){return Object.keys(self.storesPositiveAtpUnits()).length>0;};self.getStoresOnDisplay=function(){return self.storesOnDisplay();};self.update=function(data){self.storesData(data);var showOnDisplayLabel=drupalSettings.jysk_product?.show_on_display_label??false;var storesPositiveAtpUnits={};var storesOnDisplay={};for(var key in data)if(data.hasOwnProperty(key)){var store=data[key];if(store.onDisplay&&showOnDisplayLabel)storesOnDisplay[key]=store.onDisplay;
30if(store.units>0)storesPositiveAtpUnits[key]=store.units;}self.storesPositiveAtpUnits(storesPositiveAtpUnits);self.storesOnDisplay(storesOnDisplay);var current_store_id=new WssClickCollect().order.read().siteId;if(current_store_id){var current_store_atp=self.getStorePositiveAtpUnits(current_store_id);new WssClickCollect().order.current_store_atp(current_store_atp);}};self.validate=function(data){return true;};self.parse=function(data){self.update(data);};self.toString=function(){return 'WssClickCollectStoresAtp';};self.getStorePositiveAtpUnits=function(store_id){var units=self.getStoresPositiveAtpUnits();if(units[store_id])return units[store_id];return false;};self.getDisplayModel=function(store_id){var storesOnDisplay=self.getStoresOnDisplay();if(storesOnDisplay&&storesOnDisplay[store_id])return storesOnDisplay[store_id];return false;};self.getStoreCheckedTimeText=function(store_id){var stores=self.storesData();if(stores){var ageSeconds=stores[store_id]?stores[store_id].ageSeconds:0;if(!ageSeconds){var keys=Object.keys(stores);for(var i=0;i<=keys.length;i++){var storeId=keys[i];if(typeof stores[storeId]==='object'&&stores[storeId].ageSeconds)ageSeconds=Math.max(ageSeconds,stores[storeId].ageSeconds);}}var checked=new Date(Date.now()-ageSeconds*1000);var year=checked.getFullYear();var month=('0'+(checked.getMonth()+1)).slice(-2);var date=('0'+checked.getDate()).slice(-2);var hour=('0'+checked.getHours()).slice(-2);var min=('0'+checked.getMinutes()).slice(-2);return Drupal.t('Updated @date',{'@date':hour+':'+min+' - '+date+'.'+month+'.'+year});}return (drupalSettings.jysk_product!==undefined&&drupalSettings.jysk_product.product_status!==undefined)?Drupal.t('loading'):'';};self.getBasketStoreAtp=function(article){var data=basketStoreAtp;if(data[article])return data[article].units;return false;};var articlesAtpPositiveStores={};var basketAtpPositiveStores=[];self.buildAtpPositiveStoresList=function(callback,use_cached_data){use_cached_data=typeof (use_cached_data)==='undefined'?false:use_cached_data;var atp_positive_stores=new WssClickCollect().stores.atp_positive_stores;if(use_cached_data&&atp_positive_stores){if(typeof (callback)!=='undefined')callback(atp_positive_stores);return;}var settings=new WssClickCollect().settings;var articles_to_check=[];var orderlines_click_collect=new WssClickCollect().order.getArticles('click_collect');var orderlines_online_sales=new WssClickCollect().order.getArticles('online_sales');var click_collect_articles=0;for(var line_number in orderlines_click_collect)click_collect_articles++;var orderlines=click_collect_articles?orderlines_click_collect:orderlines_online_sales;var orderlines_ids=[];for(var orderline_number in orderlines){var orderline=orderlines[orderline_number];articles_to_check.push(orderline);orderlines_ids.push(parseInt(orderline.wss_id));}var article_to_add=new WssClickCollect().order.getArticleToAdd();if(article_to_add&&jQuery.inArray(article_to_add.article_id,orderlines_ids)<0){var article={wss_id:article_to_add.article_id,units:article_to_add.quantity};articles_to_check.push(article);}articlesAtpPositiveStores={};basketAtpPositiveStores=[];if(!articles_to_check.length){if(typeof (callback)!=='undefined')callback(basketAtpPositiveStores);return;}var articlesLeft=articles_to_check.length;var BasketAtpPositiveStoresProcessor=function(){var self=this;self.article={};self.validate=function(shops){return true;};self.parse=function(shops){articlesLeft--;articlesAtpPositiveStores[self.article.wss_id]={};for(var shop_id in shops)if(shops[shop_id].units>=settings.min_count_click_collect)articlesAtpPositiveStores[self.article.wss_id][shop_id]=shops[shop_id];if(articlesLeft===0)self.mergeArticlesAtpPositiveStores();};self.toString=function(){return 'WssBasketAtpPositiveStoresProcessor';};self.checkedStores=[];self.mergeArticlesAtpPositiveStores=function(){for(var article_id in articlesAtpPositiveStores)for(var store_id in articlesAtpPositiveStores[article_id]){if(jQuery.inArray(store_id,self.checkedStores)>=0)continue;var occurrencesCount=0;var orderlinesCount=0;for(var index in articlesAtpPositiveStores){orderlinesCount++;
30if(typeof (articlesAtpPositiveStores[index][store_id])!=='undefined')occurrencesCount++;}if(orderlinesCount==occurrencesCount)basketAtpPositiveStores.push(store_id);self.checkedStores.push(store_id);}if(typeof (callback)!=='undefined'){var basket_atp_positive_stores_sorted=new WssClickCollect().stores.sortStoresByDistance(basketAtpPositiveStores);callback(basket_atp_positive_stores_sorted);}};};var base_url=settings.stores_atp_url+settings.sales_org+'/';for(var article_index in articles_to_check){if(!articles_to_check[article_index])continue;var current_article=articles_to_check[article_index];var processor=new BasketAtpPositiveStoresProcessor();processor.article=current_article;new WssRequest(base_url+current_article.wss_id,processor,{negativeOk:1});}};self.getBasketProductsAtp=function(){var settings=new WssClickCollect().settings;var order=new WssClickCollect().order.read();if(!order.orderlines.length||typeof (order.siteId)=='undefined'||order.siteId=='')return;var articles=[];var need_request=false;for(var line_index in order.orderlines){var article_id=order.orderlines[line_index].article;articles.push(article_id);if(!basketStoreAtp||typeof basketStoreAtp[article_id]==='undefined')need_request=true;}if(!need_request)return;var BasketArticlesAtpPerStore=function(){this.validate=function(data){return data?true:false;};this.parse=function(data){basketStoreAtp=data;};this.read=function(data){};this.toString=function(){return 'WssBasketArticlesAtpPerStoreProcessor';};};var request={articles:articles.join(',')};var url=settings.articles_atp_per_store_url+settings.sales_org+'/'+order.siteId;var listener=new BasketArticlesAtpPerStore();new WssRequest(url,listener,request);};self.error=function(error_message){var errors=[{errorCode:0,systemMessage:error_message,userMessage:error_message}];new WssRequestEvent().trigger(new WssRequestExceptionErrors(errors),self);};};;
31var WssClickCollectLocation=function(){var self=this;var $=jQuery;self.location={address:ko.observable(),lat:null,lng:null,location_types:[],raw_address:null};self.context={caller:null};self.is_loading=ko.observable(false);self.has_error=ko.observable(false);self.errorMessage=ko.observable();self.errorLevel=ko.observable('danger');self.message=ko.observable();self.afterRender=function(elements){var LocationTemplateProcessor=function(){this.validate=function(data){return true;};this.parse=function(data){};this.toString=function(){return 'WssClickCollectLocationRendered';};};new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),new LocationTemplateProcessor());};self.create=function(user_address,caller,lat,lng){if(user_address&&drupalSettings.wss_click_collect.region=='pl')user_address=user_address.replace(/[-'`~!@#$%^&*()_|+=?;:'",.<>\{\}\[\]\\\/]/gi,'');caller=typeof (caller)!=='undefined'?caller:null;self.context.caller=caller;var lat=lat||null;var lng=lng||null;self.error_set_defaults();self.is_loading(true);var WssClickCollectLocationCreateStart=function(){this.context=self.context;this.validate=function(data){return true;};this.parse=function(data){};this.toString=function(){return 'WssClickCollectLocationCreateStart';};};new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),new WssClickCollectLocationCreateStart());if(typeof (user_address)==='undefined'||!user_address)if(self.location.lat&&self.location.lng){new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),self);self.handleModalOverflow();self.is_loading(false);return;}else{self.getBrowserLocation();return;}new WssClickCollect().location.update(lat,lng,user_address);if(lat&&lng){new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),self);self.is_loading(false);return;}var data={language:new WssClickCollect().settings.language,region:new WssClickCollect().settings.region,address:user_address,components:drupalSettings.jysk_store.region};this.codeAddress(data);$.support.cors=true;};self.handleModalOverflow=function(){var stockModalSelector=$(".type-storeStock, .type-collectAtStore");if(stockModalSelector!==null)stockModalSelector.each(function(){$(this).find(".modal-content").addClass("js--has-content");});};self.read=function(){return self.location;};self.update=function(lat,lng,address,location_types,raw_address){var cache=new WssCache();cache.update('wss_click_collect_location_lat',lat);cache.update('wss_click_collect_location_lng',lng);if(lat&&lng){self.location.lat=lat;self.location.lng=lng;self.handleModalOverflow();}if(location_types)self.location.location_types=location_types;if(raw_address)self.location.raw_address=raw_address;if(typeof (address)!=='undefined'){self.location.address(address);cache.update('wss_click_collect_location_address',address);}self.applyBindings();};self.validate=function(data){self.is_loading(false);
31if(data.status==='OK'||data.status===0)return true;else{var system_message=data.status;var user_message=data.status;self.error(3,system_message,user_message);return false;}};self.parse=function(data,raw_address){var lat;var lng;var address;var location_types;raw_address=typeof (raw_address)!=='undefined'?raw_address:'';if(data)if(data[0]){lat=data[0].geometry.location.lat();lng=data[0].geometry.location.lng();address=data[0].formatted_address;location_types=data[0].address_components[0].types;new WssClickCollect().location.update(lat,lng,address,location_types,raw_address);}else{new WssClickCollect().location.update(null,null,'',null);new WssRequestEvent().trigger(new WssRequestExceptionNoData(),self);}};self.toString=function(){return 'WssClickCollectLocation';};self.applyBindings=function(elements){if(typeof (elements)==='undefined')elements=new WssClickCollect().elements.location;if(!elements)return;for(var i=0;i<elements.length;i=i+1){var bindings_applied=!!ko.dataFor(elements[i]);if(!bindings_applied)ko.applyBindings(self,elements[i]);}};self.getBrowserLocation=function(){if(navigator.geolocation){self.message(Drupal.t("Please allow us to use your computer's location or just search using your address and we'll provide you with a list of stores closest to you."));self.is_loading(true);var navigator_success=function(position){self.message(null);self.is_loading(false);var lat=position.coords.latitude.toString();var lon=position.coords.longitude.toString();new WssClickCollect().location.update(parseFloat(lat.substring(0,8)),parseFloat(lon.substring(0,8)));new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),self);self.handleModalOverflow();};var navigator_error=function(error){self.message(null);var system_message=error.message;var user_message=Drupal.t('Unable to fetch your current location. Please use the address filed.');self.error(2,system_message,user_message);};navigator.geolocation.getCurrentPosition(navigator_success,navigator_error);}else{var user_message=Drupal.t('Your browser doesn\'t support automatic geo location feature. Use address field instead.');self.error(1,user_message,user_message);}};self.error=function(error_code,system_message,user_message,error_level){error_level=typeof (error_level)!=='undefined'?error_level:'warning';var user_message_translated=user_message;switch(system_message){case 'ZERO_RESULTS':user_message_translated=Drupal.t('Address can not be geocoded. Please verify it and try to search again.');break;}self.errorMessage(user_message_translated);self.errorLevel(error_level);self.has_error(true);self.is_loading(false);var errors=[{errorCode:error_code,systemMessage:system_message,userMessage:user_message_translated}];new WssRequestEvent().trigger(new WssRequestExceptionErrors(errors),self);};self.error_set_defaults=function(){self.message(null);self.errorMessage(null);self.has_error(false);self.errorLevel('danger');};self.codeAddress=function(data){var geocoder=new google.maps.Geocoder();geocoder.geocode({'address':data.address,componentRestrictions:{country:data.region.toUpperCase()}},function(results,status){if(status==='OK'){self.parse(results,data.address);new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),self);self.is_loading(false);}else{self.error(status,status,Drupal.t('Geocode was not successful for the following reason')+' : '+status,'warning');self.is_loading(false);}});};};;
32var WssClickCollectOrder=function(){var self=this;self.order=ko.mapping.fromJS({});self.store_name=ko.observable();self.store_info=ko.observableArray();self.is_loading=ko.observable(false);self.current_store_atp=ko.observable();self.productsCount=ko.observable(0);self.b2bOrder=ko.observable(0);self.justAddedAll=ko.observable(0);self.showSwitchToOnline=ko.observable(true);self.attachDrupalBehaviours=function(elements){elements.filter(function(item){return !!item.innerHTML;}).forEach(function(element){Drupal.attachBehaviors(element);});window.document.dispatchEvent(new Event('SSRRefresh'));};var context={article_being_set:{wss_id:null}};var article_to_add=null;var move_articles=false;
32self.create=function(){self.update();};self.read=function(){return ko.mapping.toJS(self.order);};self.update=function(data,cache,success_callback){var referrer=document.referrer;var protocolPattern=window.location.protocol;var matchWithReferrerPattern;if(referrer.search(protocolPattern)==-1)matchWithReferrerPattern=true;else matchWithReferrerPattern=false;cache=cache||false;var settings=new WssClickCollect().settings;if(!settings.order_uuid&&window.Cookies.get(settings.cookie_name))new WssClickCollect().settings.order_uuid=window.Cookies.get(settings.cookie_name);if(data&&typeof data!=='undefined'&&!cache){ko.mapping.fromJS(data.order,self.order);new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),self);self.updateStoreName(success_callback);self.recalculateProductsCount();self.justAdded();self.switchToOnline();return;}if(!settings.order_uuid){var system_message=Drupal.t('UUID is required.');var user_message=system_message;self.error(1,system_message,user_message);self.applyBindings();return;}self.is_loading(true);var api_url=settings.api_url;var request={orderuuid:settings.order_uuid};var cache_settings={storage:'localStorage',flush:false,validator:null,key:'WssCCOrderKey'};if(cache||matchWithReferrerPattern)cache_settings.flush=true;new WssRequest(api_url+'orderquery',self,request,false,false,cache_settings);};self.destroy=function(){if(self.order){self.order.orderlines.removeAll();for(var i in self.order)if(typeof self.order[i]=='function')if(i.match(/price/))self.order[i]('0');self.update({});}};self.validate=function(data){jQuery.dataLayerWssRequestReadEvent(data.order);self.is_loading(false);if(data.isError==false)return true;var system_message=Drupal.t('Responce validation failure.');var user_message=Drupal.t('Responce validation failure.');self.error(2,system_message,user_message);return false;};self.parse=function(data){ko.mapping.fromJS(data.order,self.order);self.recalculateProductsCount();self.updateStoreName();self.discountB2B();self.justAdded();self.switchToOnline();self.applyBindings();};self.toString=function(){return 'WssClickCollectOrder';};self.applyBindings=function(elements){if(typeof elements==='undefined')elements=new WssClickCollect().elements.order;if(!elements)return;for(var i=0;i<elements.length;i=i+1){var bindings_applied=!!ko.dataFor(elements[i]);if(!bindings_applied)ko.applyBindings(self,elements[i]);}};self.recalculateProductsCount=function(){var count=0;var orderlines=self.read().orderlines;for(var i in orderlines)count+=parseInt(orderlines[i].quantityAmount,10);if(count===0){const savedPersist=JSON.parse(localStorage.getItem('reduxPersist:PersistFormValues')??'{}');if(!window.Cookies.get('WSS_ORDER_UUID')||savedPersist?.WSSOrderline?.type!=='online')localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...savedPersist,WSSOrderline:{},oocfBasketStockStatus:undefined,basketClickCollectable:true}));}self.productsCount(count);};self.discountB2B=function(){if(drupalSettings.customerB2B&&typeof self.read().savingsPrTypeB2B_DISCOUNTAmount!=='undefined')self.b2bOrder(true);else self.b2bOrder(0);};self.switchToOnline=function(){var orderlines=self.read().orderlines;for(var i=0;i<orderlines.length;i++)if(orderlines[i].hasOwnProperty('atp')&&orderlines[i].atp===0){self.showSwitchToOnline(false);return;}self.showSwitchToOnline(true);};self.justAdded=function(){var orderlines=self.read().orderlines;for(var i in orderlines)if(orderlines[i]&&orderlines[i].justAdded===true)return self.justAddedAll(0);return self.justAddedAll(true);};self.moveArticles=function(from,to,success_callback,product){if(typeof from==='undefined')from='online_sales';if(typeof to==='undefined')to='click_collect';var orderlines=self.getArticles(from);var articles=[];for(var article_wss_id in orderlines)articles.push(article_wss_id);var api_url=new WssClickCollect().settings.api_url;if(articles.length){var request={to,from,article:articles.join()};if(request.from=='online_sales'){var cache=new WssCache();var key=onlineOrder.cache.key();cache.flush(key);var cache_settings={storage:onlineOrder.cache.storage,flush:true,validator:null,key};}else{if(request.from=='click_collect'){var cache=new WssCache();var key='WssCCOrderKey';cache.flush(key);var zipcode=window.Cookies.get('jysk_zipcode');if(!zipcode)onlineOrder.shop.askZipcode();var cache_settings={storage:'localStorage',flush:true,validator:null,key};}}var MoveArticlesProcessor=function(){this.validate=function(data){return true;};this.parse=function(data){var order_data={};self.update(order_data,true);if(typeof success_callback==='function')success_callback();};this.toString=function(){return 'WssClickCollectOrderMoveArticlesProcessor';};};new WssRequest(api_url+'moveArticles',new MoveArticlesProcessor(),request,false,false,cache_settings,'text');}else onlineOrder.shop.addToBasket(product);};self.getArticles=function(from){if(typeof from==='undefined')from='click_collect';var articles={};switch(from){case 'online_sales':if(drupalSettings.wss_payment.enabled){var order=new OrderController().getModel();if(order.type=='ONLINE_SALES')for(var orderline_number in order.orderlines){var orderline=order.orderlines[orderline_number];var wss_id=orderline.article;articles[wss_id]={};articles[wss_id].wss_id=orderline.article;articles[wss_id].units=orderline.quantityAmount;}}break;case 'click_collect':var order=self.read();for(var orderline_number in order.orderlines){var orderline=order.orderlines[orderline_number];var wss_id=orderline.article;articles[wss_id]={};articles[wss_id].wss_id=orderline.article;articles[wss_id].units=orderline.quantityAmount;}break;}return articles;};self.addArticle=function(article_id,quantity,shop_id,zipcode,success_callback){quantity=typeof quantity!=='undefined'?quantity:1;shop_id=typeof shop_id!=='undefined'?shop_id:null;zipcode=typeof zipcode!=='undefined'?zipcode:null;var basket_quantity=self.getBasketArticleQuantity(article_id);if(basket_quantity)quantity+=basket_quantity;self.setArticle(article_id,quantity,shop_id,zipcode,success_callback);};self.setArticle=function(article_id,quantity,shop_id,zipcode,success_callback){if(typeof quantity==='undefined')quantity=1;context.article_being_set.wss_id=article_id;var productAtp=0;if(typeof shop_id==='undefined'||!shop_id)productAtp=self.getCurrentStoreAtp();else if(Drupal.urlMatch('basket/click-n-collect')||Drupal.urlMatch(''))productAtp=new WssClickCollect().storesAtp.getBasketStoreAtp(article_id);else{productAtp=self.getCurrentStoreAtp(shop_id);if(!productAtp)productAtp=new WssClickCollect().storesAtp.getBasketStoreAtp(article_id);}if(!self.checkStoreAtp(productAtp,quantity))return false;if(!productAtp&&(typeof shop_id==='undefined'||!shop_id)){if(article_id)article_to_add={article_id,quantity};self.switchStore();return;}var settings=new WssClickCollect().settings;var api_url=settings.api_url;var request={catalog:settings.catalog,article:article_id,quantity};if(typeof shop_id!=='undefined'&&shop_id)request.siteId=shop_id;if(typeof zipcode!=='undefined'&&zipcode)request.zip=zipcode;var SetArticleProcessor=function(){this.validate=function(data){return true;};this.parse=function(data){self.update(data,false,success_callback);};this.toString=function(){return 'WssClickCollectOrderSetArticleProcessor';};};var cache_settings={storage:'localStorage',flush:true,validator:null,key:'WssCCOrderKey'};var prevOrder=self.read();var request_callback=function(jqXHR,textStatus){if(textStatus==='success'){jQuery.dataLayerWssRequestUpdateEvent(jqXHR.responseJSON.order,prevOrder);if(typeof jQuery.dataLayerFBWssRequestUpdateEvent!=='undefined')jQuery.dataLayerFBWssRequestUpdateEvent(jqXHR.responseJSON.order,prevOrder);}};new WssRequest(api_url+'setarticle',new SetArticleProcessor(),request,request_callback,false,cache_settings);};self.checkStoreAtp=function(storeAtp,quantity){if(storeAtp<quantity){var params={'@productAtp':storeAtp};var system_message='Selected quantity is greater than ATP';var user_message=Drupal.t("We're sorry. The amount selected exceeds the current number of articles we have in stock. In stock: @productAtp.",params);self.error(3,system_message,user_message);return false;}return true;};self.getBasketArticleQuantity=function(article_id){var quantity=0;if(typeof article_id==='undefined')return quantity;var order=self.read();for(var orderline_number in order.orderlines)if(article_id==order.orderlines[orderline_number].article){quantity=order.orderlines[orderline_number].quantityAmount;break;}return quantity;};self.setStore=function(store_id,store_name,success_callback){var settings=new WssClickCollect().settings;self.store_name(store_name);var api_url=settings.api_url;var request={siteId:store_id,catalog:settings.catalog,orderuuid:settings.order_uuid};var SetStoreProcessor=function(){this.validate=function(data){return true;};this.parse=function(data){self.update(data,false,success_callback);var atps=new WssClickCollect().storesAtp.getStoresPositiveAtpUnits();var store_id=self.read().siteId;if(atps&&atps[store_id]){var atp=atps[store_id];self.current_store_atp(atp);}};this.toString=function(){return 'WssClickCollectOrderSetStoreProcessor';};};var cache_settings={storage:'localStorage',flush:true,validator:null,key:'WssCCOrderKey'};new WssRequest(api_url+'site',new SetStoreProcessor(),request,false,false,cache_settings);};self.setStore_new=function(store_id,store_name,product,add=false){var safed_store_id=new WssClickCollect().order.read().siteId;var context=new PaymentContext();var wssClickCollect=new WssClickCollect();const event=new CustomEvent('oocf-store-event',{detail:{storeInfo:{},valid:true}});var orderlines={};var articles=[];var move=false;var switchStore=false;orderlines=wssClickCollect.order.getArticles('online_sales');for(var article_wss_id in orderlines)articles.push(article_wss_id);if(articles.length)move=true;else{orderlines=wssClickCollect.order.getArticles('click_collect');for(var article_wss_id in orderlines)articles.push(article_wss_id);if(articles.length)switchStore=true;}if((move||switchStore)&&articles){context.show_popup=true;const settings=wssClickCollect.settings;var request={articles:articles.join(',')};jQuery.ajax({url:`/websapapi/shops/atp/bundle/${settings.sales_org}/${store_id}`,data:request,dataType:'json',type:'GET',cache:false,success:function(response_data){for(var key in orderlines)if(response_data[key]){if
32(orderlines[key].units>response_data[key].units){var error_message=Drupal.t('Not enough quantity in selected store.');var html=Drupal.theme('wss_payment_popup_error',error_message);jysk.notification.openNotification(html,'addedToBasket',error_message);throw new Error(error_message);}self.store_name(store_name);if(switchStore){self.setStore(store_id,store_name,()=>{event.detail.storeInfo=wssClickCollect.order.store_info();window.dispatchEvent(event);});return;}else{context.show_popup=true;self.moveArticles('online_sales','click_collect',()=>{self.setStore(store_id,store_name,()=>{event.detail.storeInfo=wssClickCollect.order.store_info();window.dispatchEvent(event);});if(add)addToBasket();});return;}}else{var error_message=Drupal.t('Not enough quantity in selected store.');var html=Drupal.theme('wss_payment_popup_error',error_message);jysk.notification.openNotification(html,'addedToBasket',error_message);throw new Error(error_message);}},error:function(jqXHR,textStatus,errorThrown){JyskAjaxThrobber('hide');var e=new WssRequestExceptionAjaxError(jqXHR,textStatus,errorThrown);var error_message=Drupal.t('Not enough quantity in selected store.');var html=Drupal.theme('wss_payment_popup_error',error_message);jysk.notification.openNotification(html,'addedToBasket',error_message);throw new Error(error_message);}});return;}function addToBasket(){context.show_popup=false;context.article.order_type='click&collect';onlineOrder.shop.prepareContextVars(product);article_to_add=context.article;var basket_quantity=self.getBasketArticleQuantity(article_to_add.wss_id);if(!basket_quantity){self.setStore(store_id,store_name,()=>{clickCollectOrder.shop.addToBasketCC(product);event.detail.storeInfo=wssClickCollect.order.store_info();window.dispatchEvent(event);});article_to_add=null;return;}else article_to_add=null;if(!self.checkStoreAtp(self.getCurrentStoreAtp(store_id),basket_quantity))return false;}if(add)addToBasket();context.show_popup=false;if(safed_store_id!==store_id)self.setStore(store_id,store_name,()=>{event.detail.storeInfo=wssClickCollect.order.store_info();window.dispatchEvent(event);});};self.switchToClickCollect=function(article_id,quantity,shop_id,zipcode){article_id=typeof article_id!=='undefined'?article_id:null;shop_id=typeof shop_id!=='undefined'?shop_id:null;zipcode=typeof zipcode!=='undefined'?zipcode:null;quantity=typeof quantity!=='undefined'?quantity:1;if(article_id)article_to_add={article_id,quantity};if(drupalSettings.wss_payment.enabled){var order=new OrderController().getModel();if(order.type=='SMOS'){var context=new PaymentContext();var error_message=Drupal.t('You must finish your current order with sliding doors before adding additional products to the basket.');var message={is_error:true,text:error_message,error_code:'SLIDING_DOORS_ORDER_NOT_COMPLETED'};var html=Drupal.theme('basket_notification_error',context.article,message);jysk.notification.openNotification(html,'addedToBasket',error_message);throw new Error(error_message);}else{if(order.type=='ONLINE_SALES'&&order.orderlines&&order.orderlines.length){jQuery.each(order.orderlines,function(index,article){var onlineOnlyStatuses=[drupalSettings.productStatus.onlineOnly,drupalSettings.productStatus.dropShipment];if(article.articleStatus&&(onlineOnlyStatuses.includes(article.articleStatus)||order.notAvailableForClickCollect)){var error_message=Drupal.t('Your basket contain product that can be ordered only online.');var html=Drupal.theme('wss_payment_popup_error',error_message);jysk.notification.openNotification(html,'addedToBasket',error_message);throw new Error(error_message);}});move_articles=true;}}}self.switchStore();return;};self.switchToOnlinesales=function(product){self.moveArticles('click_collect','online_sales',null,product);var cache=new WssCache();cache.flush('wss_click_collect_location_address');cache.flush('wss_click_collect_location_lat');cache.flush('wss_click_collect_location_lng');onlineOrder.cache.clear();};self.switchStore=function(article_id,quantity){article_id=typeof article_id!=='undefined'?article_id:null;quantity=typeof quantity!=='undefined'?quantity:1;if(article_id)article_to_add={article_id,quantity};var cache=new WssCache();var address=cache.read('wss_click_collect_location_address');var lat=cache.read('wss_click_collect_location_lat');var lng=cache.read('wss_click_collect_location_lng');new WssClickCollect().location.create(address,'click_collect',lat,lng);};self.updateStoreName=function(success_callback){var stores_list_url=new WssClickCollect().settings.stores_list_url;var store_id=new WssClickCollect().order.read().siteId;if(store_id){var request={store_id};var UpdateStoreNameProcessor=function(){this.validate=function(data){return true;};this.parse=function(data){if(data[store_id]){self.store_name(data[store_id].shop_name);self.store_info(data[store_id]);}if(typeof success_callback==='function')success_callback();};this.toString=function(){return 'UpdateStoreNameProcessor';};};new WssRequest(stores_list_url,new UpdateStoreNameProcessor(),request,null,null,true);}};self.getCurrentStoreAtp=function(store_id){var atp=0;if(typeof store_id==='undefined')store_id=new WssClickCollect().order.read().siteId;if(store_id)atp=new WssClickCollect().storesAtp.getStorePositiveAtpUnits(store_id);return atp;};self.changeArticleQuantity=function(article,quantity){var context=new PaymentContext();context.show_popup=false;var currentOrderline=self.getOrderline(article);if(currentOrderline&&currentOrderline.quantityAmount>0&&currentOrderline.totalpriceAmount){var unitPrice=currentOrderline.totalpriceAmount/currentOrderline.quantityAmount;updateOsaPurchaseRevenue(article,unitPrice*quantity);}self.setArticle(article,quantity,new WssClickCollect().order.read().siteId,undefined);};self.articleToAdd=function(){return article_to_add;};self.getMoveArticlesState=function(){return move_articles;};self.getArticleToAdd=function(){return article_to_add;};self.getArticleBeingSet=function(){var article={wss_id:null,name:null};article.wss_id=context.article_being_set.wss_id;var orderlines=self.read().orderlines;if(orderlines)for(var orderline_index in orderlines){var orderline=orderlines[orderline_index];if(orderline.article==article.wss_id){article.name=orderline.receiptText;break;}}return article;};self.getArticlePicture=function(article_id){var address='';var orderline=self.getOrderline(article_id);if(!orderline)return address;address=orderline.picturePrefix+'wd3.small'+orderline.pictureSuffix;return address;};self.getOrderline=function(article_id){var orderlines=self.read().orderlines;if(!orderlines)return null;for(var orderline_index in orderlines){var orderline=orderlines[orderline_index];if(orderline.article==article_id)return orderline;}return null;};
32self.error=function(error_code,system_message,user_message){var errors=[{errorCode:error_code,systemMessage:system_message,userMessage:user_message}];new WssRequestEvent().trigger(new WssRequestExceptionErrors(errors),self);};};;
33var WssClickCollect=function(settings,elements){var self=this;WssClickCollect=function(){return self;};if(typeof (settings)==='undefined')settings={};self.settings=settings;if(typeof (elements)==='undefined')elements={order:[],stores:[],location:[]};self.elements=elements;self.location=new WssClickCollectLocation();self.stores=new WssClickCollectStores();self.order=new WssClickCollectOrder();self.storesAtp=new WssClickCollectStoresAtp();self.create=function(){self.order.create();};self.log=function(){if(!window.console)return;var c=window.console;c.group('Click&Collect log');c.group('Models');c.log('Order:\n',self.order.read(),'\n');c.log('Stores ATP:\n',self.storesAtp.getStoresPositiveAtpUnits(),'\n');c.log('Location:\n',self.location.read(),'\n');c.log('Stores:\n',self.stores.read(),'\n');c.groupEnd();if(c.table){c.groupCollapsed('Tables');c.log('Stores ATP:');c.table(self.storesAtp.getStoresPositiveAtpUnits());c.log('Stores:');c.table(self.stores.read());c.groupEnd();}c.groupCollapsed('Full Models');c.dir(self.order);c.dir(self.storesAtp);c.dir(self.location);c.dir(self.stores);c.groupEnd();c.groupEnd();};};;
34(function($){this.WssPaymentProductLabels=function(elements){this.elements=elements;this.hasUndefinedStatuses=false;};WssPaymentProductLabels.prototype.getElements=function(){return this.elements;};WssPaymentProductLabels.prototype.needATPCheck=function(){return this.hasUndefinedStatuses;};WssPaymentProductLabels.prototype.processProducts=function(settings){settings=settings||drupalSettings;var isWSSPaymentEnabled=false;if(typeof settings.wss_payment!=='undefined')isWSSPaymentEnabled=settings.wss_payment.enabled;if(!isWSSPaymentEnabled)return this;var self=this;this.getElements().each(function(){var label='';var attr={id:$(this).data('wss_id'),statusCode:$(this).data('statuscode'),storeSales:$(this).data('storesales'),onlineSales:$(this).data('onlinesales')};$.each(attr,function(key,value){if(typeof value=="undefined"||value=='')attr[key]=0;});if((isWSSPaymentEnabled&&!attr.onlineSales&&attr.statusCode!=drupalSettings.productStatus.onlineOnly)||(!isWSSPaymentEnabled&&attr.statusCode!=drupalSettings.productStatus.discontinued))label='store';if(isWSSPaymentEnabled&&((attr.onlineSales&&!attr.storeSales)||attr.statusCode==drupalSettings.productStatus.onlineOnly||attr.statusCode==drupalSettings.productStatus.dropShipment))label='online';if(isWSSPaymentEnabled&&label==''){label='?';self.hasUndefinedStatuses=true;}$(this).data('productLabel',label);});return this;};WssPaymentProductLabels.prototype.processProductsAtpNumbers=function(atpNumbers){$.each(this.getElements(),function(){var label=$(this).data('productLabel');var id=$(this).data('wss_id');if(typeof label!=="undefined"&&label=='?'){$.each(atpNumbers,function(key,value){if(key==id){if(parseInt(value)<0)label='store';return;}});if(label=='?')label='';$(this).data('productLabel',label);}});return this;};WssPaymentProductLabels.prototype.getProductsWssIdForAtpRequest=function(){var result=[];$.each(this.getElements(),function(){var label=$(this).data('productLabel'),id=$(this).data('wss_id');if(typeof label!=="undefined"&&label=='?')result.push(id);});return result;};WssPaymentProductLabels.prototype.setLabels=function(){$.each(this.getElements(),function(){var label=$(this).data('productLabel');var labelObj=$('<div>');switch(label){case 'online':if(!$(this).find('.product-sticker.online-only').length){labelObj.addClass('product-sticker online-only').html(Drupal.t('Only online'));$(this).find('.product-stickers').append(labelObj);$(this).find('.product-sticker.store-only').remove();}break;case 'store':if(!$(this).find('.product-sticker.store-only').length){labelObj.addClass('product-sticker store-only').html(Drupal.t('Only in store'));$(this).find('.product-stickers').append(labelObj);$(this).find('.product-sticker.online-only').remove();}break;default:break;}});return this;};}(jQuery));;
35var AtpController=function(atp_api_url,sales_org,data,elements){var _self=this;var $=jQuery;AtpController=function(){return _self;};_self.elements=null;if(typeof (elements)!=="undefined")_self.elements=elements;_self.data=null;if(typeof (data)!=='undefined')_self.data=data;_self.model={};_self.processingIds=[];this.read=function(){var query={};var sendRequest=false;for(var i=0;i<_self.data.length;i++){var id=_self.data[i];if(_self.processingIds.indexOf(id)==-1){query[id]='';_self.processingIds.push(id);sendRequest=true;}}if(sendRequest){query.sorg=sales_org;new WssRequest(atp_api_url,_self,query,null,'POST');}else new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),_self);};this.validate=function(data){if(data.errors)throw new WssRequestExceptionErrors(data.errors);return true;};this.parse=function(data){_self.model=$.extend(_self.model,data);};this.toString=function(){return 'AtpController';};this.getModel=function(){return _self.model;};this.updateData=function(data){if(typeof (data)!=="undefined")_self.data=data;};this.putElements=function(elements){if(typeof (elements)!=="undefined")_self.elements=elements;};this.getElements=function(){return _self.elements;};};;
36var WssCache=function(storage,key_add_date,key_language){var self=this;var settings={storage:'sessionStorage',key_add_date:true,key_language:false,storage_available:false};storage=storage||settings.storage;key_add_date=typeof key_add_date!='undefined'?key_add_date:settings.key_add_date;key_language=typeof key_language!='undefined'?key_language:settings.key_language;try{settings.storage_available=storage in window&&window[storage]!==null;settings.storage=storage;settings.key_add_date=key_add_date;settings.key_language=key_language;}catch(e){}self.read=function(key){if(!settings.storage_available||!JSON)return false;var normalized_key=normalizeKey(key);var storage=window[settings.storage];if(settings.key_add_date){var updatedDate=storage.getItem(normalized_key+'_updated');if(updatedDate!==getDateFormatted())return false;}return JSON.parse(storage.getItem(normalized_key));};self.update=function(key,value,removeOldData){removeOldData=removeOldData||false;if(!settings.storage_available||!JSON)return false;var normalized_key=normalizeKey(key);var stringified_value=JSON.stringify(value);try{window[settings.storage].setItem(normalized_key,stringified_value);if(settings.key_add_date)window[settings.storage].setItem(normalized_key+'_updated',getDateFormatted());}catch(e){switch(e.name){case 'QuotaExceededError':self.flush();break;}}if(removeOldData)self.flushOldData(key);};self.flush=function(key){if(!settings.storage_available||!JSON)return false;key=key||false;if(!key){window[settings.storage].clear();return;}var normalized_key=normalizeKey(key);window[settings.storage].removeItem(normalized_key);};self.flushOldData=function(key){if(!settings.storage_available||!JSON)return false;key=key||false;if(!key){window[settings.storage].clear();return;}var normalized_key=normalizeKey(key);for(var i in window[settings.storage])if(window[settings.storage].hasOwnProperty(i))if(~i.indexOf(key)&&i!==normalized_key)window[settings.storage].removeItem(i);};self.keyFromRequest=function(url,request){request=request||false;var key=url;if(request){key+='?';for(var property in request)key+=property+'='+request[property]+'&';}return key;};self.getSettings=function(){return settings;};self.available=function(){return settings.storage_available;};var getDateFormatted=function(){return new Date().toISOString().slice(0,10);};var normalizeKey=function(key){var elements=[key];if(settings.key_language)elements.unshift(drupalSettings.jysk.language);return elements.join('_');};};;
37var WssRequest=function(url,caller,data,callback,requestType,cache_settings,dataType){JyskA
37jaxThrobber('show');new WssRequestEvent().trigger(new WssRequestExceptionRequestSent(),caller,url);data=data||[];requestType=requestType||'GET';cache_settings=cache_settings||false;dataType=dataType||'json';var cache_defaults={storage:null,flush:false,validator:null,key:null};jQuery.extend(cache_defaults,cache_settings);var cache=new WssCache(cache_defaults.storage);if(cache_settings&&cache.available()){var key=cache_defaults.key?cache_defaults.key:cache.keyFromRequest(url,data);var cached_data=cache.read(key);var cache_outdated=false;if(typeof cache_defaults.validator=='function'&&cached_data)cache_outdated=cache_defaults.validator(cached_data);if(cached_data&&!cache_settings.flush&&!cache_outdated){ajaxSuccess(cached_data);return;}}jQuery.ajax({url,data,dataType,type:requestType,cache:false,success:function(response_data){var update_cache=cache_settings?true:false;ajaxSuccess(response_data,update_cache,data);},error:function(jqXHR,textStatus,errorThrown){JyskAjaxThrobber('hide');var e=new WssRequestExceptionAjaxError(jqXHR,textStatus,errorThrown);new WssRequestEvent().trigger(e,caller,url);},complete:function(jqXHR,textStatus){ajaxComplete(jqXHR,textStatus);},beforeSend:function(jqXHR,settings){settings.error=function(jqXHR,textStatus,errorThrown){if(textStatus=="error"){JyskAjaxThrobber('hide');var e=new WssRequestExceptionAjaxError(jqXHR,textStatus,errorThrown);new WssRequestEvent().trigger(e,caller,url);}};}});function ajaxComplete(jqXHR,textStatus){JyskAjaxThrobber('hide');if(typeof callback=='function')callback(jqXHR,textStatus);}function ajaxSuccess(response_data,update_cache,request_data){new WssRequestEvent().trigger(new WssRequestExceptionReceived(),caller,url,response_data,cache_settings,request_data);var result=false;update_cache=update_cache||false;JyskAjaxThrobber('hide');try{result=caller.validate(response_data);}catch(e){if(e.message)logError(e.message);else logError(e);if(e.name==='No Data')if(update_cache){var key=cache_defaults.key?cache_defaults.key:cache.keyFromRequest(url,data);cache.flush(key);}new WssRequestEvent().trigger(e,caller,url,response_data,null,request_data);return;}caller.parse(response_data);if(update_cache){var key=cache_defaults.key?cache_defaults.key:cache.keyFromRequest(url,data);cache.update(key,response_data);}if(result===true)new WssRequestEvent().trigger(new WssRequestExceptionSuccess(),caller,url,response_data,cache_settings);}function logError(message){if(window.console&&drupalSettings.environment!='prod')console.error(url+' '+caller.toString()+': '+message);}};var WssRequestEvent=function(){var _self=this;WssRequestEvent=function(){return _self;};var listeners={};this.addListener=function(objectName,listener){if(!listeners[objectName])listeners[objectName]=[];listeners[objectName].push(listener);};this.trigger=function(e,object,url,response_data,cache_settings,request_data){response_data=response_data||null;cache_settings=cache_settings||null;var callback=e.callback;if(!callback)return false;var objectName=object.toString();if(!listeners[objectName])return false;for(var listener in listeners[objectName])if(listeners[objectName][listener][callback])listeners[objectName][listener][callback](object,e,url,response_data,cache_settings,request_data);};};function WssRequestExceptionRequestSent(){return {name:'Request Sent',message:'The request has been sent.',callback:'sent'};}function WssRequestExceptionReceived(){return {name:'Received',message:'The data has been received.',callback:'received'};}function WssRequestExceptionSuccess(){return {name:'Success',message:'The data is being parsed.',callback:'success'};}function WssRequestExceptionAjaxError(jqXHR,textStatus,errorThrown){var message=textStatus;if(jqXHR.status)message+=', '+jqXHR.status;if(jqXHR.statusText)message+=', '+jqXHR.statusText;if(errorThrown)message+=', '+errorThrown;return {name:'Ajax Error',message,callback:'error',jqXHR};}function WssRequestExceptionNoData(){return {name:'No Data',message:'No data in received message.',callback:'empty'};}function WssRequestExceptionErrors(errors){var messages='';var userMessages='';var errorCodes=[];for(var i in errors){messages+=errors[i].errorCode+': '+errors[i].systemMessage+"\n";if(errors[i].userMessage)userMessages+=errors[i].userMessage;if(errors[i].errorCode)errorCodes.push(errors[i].errorCode);}return {name:'No Data',message:messages,userMessage:userMessages,callback:'error',errorCodes};}function WssRequestExceptionDestroyed(){return {name:'Destroyed',message:'Current payment has been destroyed.',callback:'destroy'};};
38(function($){Drupal.behaviors.WSSBasketPage={attach:function(context,settings){$('.basket-actions .primary.disabled').on('click.atpDisabled',function(e){e.preventDefault();e.stopPropagation();});}};var BasketSapAtpOrderListener=function(){this.success=function(object,e,url){var disableSubmit=false;var isGiftCardProduct=false;$('.basket-actions .primary').addClass('disabled');var order=object.getModel();var atp_api_url=drupalSettings.wss_payment.online_atp_url;var query={sorg:drupalSettings.jysk.sales_org,'sap':''};for(var i=0;i<order.orderlines.length;i++){if(order.orderlines[i].article==='9009000')isGiftCardProduct=true;query[order.orderlines[i].article]='';}if(!isGiftCardProduct)$.ajax({url:atp_api_url,data:query,dataType:'json',async:false,success:function(atp){for(var i=0;i<order.orderlines.length;
38i++)if(atp[order.orderlines[i].article]<order.orderlines[i].quantityAmount)disableSubmit=true;}});if(!disableSubmit)$('.basket-actions .primary').off('click.atpDisabled').removeClass('disabled');};};new WssRequestEvent().addListener('OrderController',new BasketSapAtpOrderListener());})(jQuery);;
39/* @license MIT https://github.com/allmarkedup/purl/blob/master/LICENSE */
40;(function(factory){if(typeof define==='function'&&define.amd)if(typeof jQuery!=='undefined')define(['jquery'],factory);else define([],factory);else if(typeof jQuery!=='undefined')factory(jQuery);else factory();})(function($,undefined){var tag2attr={a:'href',img:'src',form:'action',base:'href',script:'src',iframe:'src',link:'href'},key=['source','protocol','authority','userInfo','user','password','host','port','relative','path','directory','file','query','fragment'],aliases={'anchor':'fragment'},parser={strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/},toString=Object.prototype.toString,isint=/^[0-9]+$/;function parseUri(url,strictMode){var str=decodeURI(url),res=parser[strictMode||false?'strict':'loose'].exec(str),uri={attr:{},param:{},seg:{}},i=14;while(i--)uri.attr[key[i]]=res[i]||'';uri.param['query']=parseString(uri.attr['query']);uri.param['fragment']=parseString(uri.attr['fragment']);uri.seg['path']=uri.attr.path.replace(/^\/+|\/+$/g,'').split('/');uri.seg['fragment']=uri.attr.fragment.replace(/^\/+|\/+$/g,'').split('/');uri.attr['base']=uri.attr.host?(uri.attr.protocol?uri.attr.protocol+'://'+uri.attr.host:uri.attr.host)+(uri.attr.port?':'+uri.attr.port:''):'';return uri;};function getAttrName(elm){var tn=elm.tagName;if(typeof tn!=='undefined')return tag2attr[tn.toLowerCase()];return tn;}function promote(parent,key){if(parent[key].length==0)return parent[key]={};var t={};for(var i in parent[key])t[i]=parent[key][i];parent[key]=t;return t;}function parse(parts,parent,key,val){var part=parts.shift();if(!part)if(isArray(parent[key]))parent[key].push(val);else if('object'==typeof parent[key])parent[key]=val;else if('undefined'==typeof parent[key])parent[key]=val;else parent[key]=[parent[key],val];else{var obj=parent[key]=parent[key]||[];if(']'==part)if(isArray(obj)){if(''!=val)obj.push(val);}else if('object'==typeof obj)obj[keys(obj).length]=val;else obj=parent[key]=[parent[key],val];else if(~part.indexOf(']')){part=part.substr(0,part.length-1);if(!isint.test(part)&&isArray(obj))obj=promote(parent,key);parse(parts,obj,part,val);}else{if(!isint.test(part)&&isArray(obj))obj=promote(parent,key);parse(parts,obj,part,val);}}}function merge(parent,key,val){if(~key.indexOf(']')){var parts=key.split('['),len=parts.length,last=len-1;parse(parts,parent,'base',val);}else{if(!isint.test(key)&&isArray(parent.base)){var t={};for(var k in parent.base)t[k]=parent.base[k];parent.base=t;}set(parent.base,key,val);}return parent;}function parseString(str){return reduce(String(str).split(/&|;/),function(ret,pair){try{pair=decodeURIComponent(pair.replace(/\+/g,' '));}catch(e){}var eql=pair.indexOf('='),brace=lastBraceInKey(pair),key=pair.substr(0,brace||eql),val=pair.substr(brace||eql,pair.length),val=val.substr(val.indexOf('=')+1,val.length);if(''==key)key=pair,val='';return merge(ret,key,val);},{base:{}}).base;}function set(obj,key,val){var v=obj[key];if(undefined===v)obj[key]=val;else if(isArray(v))v.push(val);else obj[key]=[v,val];}function lastBraceInKey(str){var len=str.length,brace,c;for(var i=0;i<len;++i){c=str[i];if(']'==c)brace=false;if('['==c)brace=true;if('='==c&&!brace)return i;}}function reduce(obj,accumulator){var i=0,l=obj.length>>0,curr=arguments[2];while(i<l){if(i in obj)curr=accumulator.call(undefined,curr,obj[i],i,obj);++i;}return curr;}function isArray(vArg){return Object.prototype.toString.call(vArg)==="[object Array]";}function keys(obj){var keys=[];for(prop in obj)if(obj.hasOwnProperty(prop))keys.push(prop);return keys;}function purl(url,strictMode){if(arguments.length===1&&url===true){strictMode=true;url=undefined;}strictMode=strictMode||false;url=url||window.location.toString();return {data:parseUri(url,strictMode),attr:function(attr){attr=aliases[attr]||attr;return typeof attr!=='undefined'?this.data.attr[attr]:this.data.attr;},param:function(param){return typeof param!=='undefined'?this.data.param.query[param]:this.data.param.query;},fparam:function(param){return typeof param!=='undefined'?this.data.param.fragment[param]:this.data.param.fragment;},segment:function(seg){if(typeof seg==='undefined')return this.data.seg.path;else{seg=seg<0?this.data.seg.path.length+seg:seg-1;return this.data.seg.path[seg];}},fsegment:function(seg){if(typeof seg==='undefined')return this.data.seg.fragment;else{seg=seg<0?this.data.seg.fragment.length+seg:seg-1;return this.data.seg.fragment[seg];}}};};if(typeof $!=='undefined'){$.fn.url=function(strictMode){var url='';if(this.length)url=$(this).attr(getAttrName(this[0]))||'';return purl(url,strictMode);};$.url=purl;}else window.purl=purl;});;
41/* @license GPL-2.0-or-later https://www.drupal.org/licensing/faq */
42var OrderController=function(api_url,catalog,nodes){if(typeof api_url=='undefined')api_url=drupalSettings.wss_payment.api_url;if(typeof catalog=='undefined')catalog=drupalSettings.wss_payment.catalog;var _self=this;OrderController=function(){return _self;};var model=false;this.read=function(uuid,force_cache,flush_cache){uuid=uuid||null;force_cache=force_cache||false;flush_cache=flush_cache||false;var url=api_url+'order';var request={version:'full'};if(uuid){request.orderuuid=uuid;new WssRequest(url,_self,request,false,'GET');return;}var cookie=window.Cookies.get(drupalSettings.wss_payment.cookie_name_original);if(!cookie)return;var cache_settings={storage:onlineOrder.cache.storage,validator:onlineOrder.cache.cac
42heIsOutdated};if((!force_cache&&window.location.pathname.indexOf(Drupal.url('basket'))==0)||flush_cache)cache_settings.flush=true;new WssRequest(url,_self,request,false,'GET',cache_settings);};this.update=function(id,quantity,zipcode,mode,orderLineId){mode=typeof mode!=='undefined'?mode:'set';zipcode=typeof zipcode!=='undefined'?zipcode:null;if(quantity!==parseInt(quantity,10))quantity=1;var wss_controller='addarticle';switch(mode){case 'set':wss_controller='setarticle';break;case 'add':wss_controller='addarticle';break;}var query={catalog,article:id,quantity};if(typeof orderLineId!=='undefined')query.orderLineId=orderLineId;if(zipcode)query.zipcode=zipcode;var cache_settings={storage:onlineOrder.cache.storage,key:onlineOrder.cache.key(),flush:true};var prevOrder=new OrderController().getModel();var request_callback=function(jqXHR,textStatus){if(textStatus==='success'){jQuery.dataLayerWssRequestUpdateEvent(jqXHR.responseJSON.order,prevOrder);if(typeof jQuery.dataLayerFBWssRequestUpdateEvent!=='undefined')jQuery.dataLayerFBWssRequestUpdateEvent(jqXHR.responseJSON.order,prevOrder);}else{if(textStatus==='error'&&jqXHR.responseJSON.code===409){var error={errorCode:jqXHR.responseJSON.code,systemMessage:jqXHR.responseJSON.description,userMessage:Drupal.t('The system is currently busy, please try again')};new WssRequestEvent().trigger(new WssRequestExceptionErrors([error]),_self);}}};new WssRequest(api_url+wss_controller,_self,query,request_callback,'GET',cache_settings);};this.changeCatalogLanguage=function(catalog,callback){var orderuuid=window.Cookies.get(drupalSettings.wss_payment.cookie_name_original);var query={catalog,orderuuid};if(typeof callback!='function')callback=false;var cache_settings={storage:onlineOrder.cache.storage,flush:true,validator:false,key:onlineOrder.cache.key()};new WssRequest(api_url+'changecatalog',_self,query,callback,'GET',cache_settings);};this.bulkUpdate=function(context,zipcode){zipcode=typeof zipcode!=='undefined'?zipcode:null;var wss_controller='bulkaddarticle';var query={catalog};jQuery.extend(query,context.article.bulk);if(zipcode)query.zipcode=zipcode;var cache_settings={storage:onlineOrder.cache.storage,key:onlineOrder.cache.key(),flush:true};new WssRequest(api_url+wss_controller,_self,query,false,'GET',cache_settings);};this.remove=function(id){_self.update(id,0);};this.destroy=function(id,without_request){id=id||null;without_request=without_request||false;if(without_request){cleanModel();return;}new WssRequest(api_url+'clearorder',_self,null,function(){cleanModel();new WssRequestEvent().trigger(new WssRequestExceptionDestroyed(),_self.toString());});};this.validate=function(data){if(data===null)throw new WssRequestExceptionNoData();if(data.isError){this.read();throw new WssRequestExceptionErrors(data.errors);}if(!data.order||!data.order.orderlines||!data.order.orderlines.length){cleanModel();throw new WssRequestExceptionNoData();}return true;};this.parse=function(data){updateModel(data.order);};this.toString=function(){return 'OrderController';};this.getModel=function(remove_mapping){remove_mapping=remove_mapping||false;var js=null;if(remove_mapping)js=ko.mapping.toJS(model);else js=ko.toJS(model);return js;};this.applyBindings=function(elements){var elLn=elements.length;if(!model||!elLn)return;for(var i=0;i<elLn;i++)ko.applyBindings(model,elements[i]);};this.cloneOrder=function(uuid,callback){var query={uuid,version:'full'};new WssRequest(api_url+'cloneorder',_self,query,callback,'GET');};function cleanModel(){if(model){model.orderlines.removeAll();for(var i in model)if(typeof model[i]=='function')if(i.match(/price/))model[i]('0');}}function updateModel(data){if(model)ko.mapping.fromJS(data,model);else{model=new OrderModel(data);for(var i in nodes)ko.applyBindings(model,nodes[i]);}return model;}};var addOopusMessage=function(data,order){const colonDelimiter=order.subtotalpriceText.match(/.*\d(.*)$/)[1];const jyskstoreCarrierId='jyskstore'+drupalSettings.jysk_react.domain.domainCode;let deliveryToJyskStoreIndex=-1;deliveryToJyskStoreIndex=data?.carriers.findIndex((obj)=>obj.externId.toLowerCase()===jyskstoreCarrierId.toLowerCase());if(data.carriers[deliveryToJyskStoreIndex]?.minimumSubtotal>order.subtotalpriceAmount){oopusMessage=Drupal.t('At least @amount',{amount:currencyCorrecter(data.carriers[deliveryToJyskStoreIndex]?.minimumSubtotal,colonDelimiter,data.carriers[deliveryToJyskStoreIndex]?.minPriceText)});oopusMessage=cleanUpTranslation(oopusMessage);data.carriers[deliveryToJyskStoreIndex]={...data.carriers[deliveryToJyskStoreIndex],oopusMessage};}return data;};var OrderModel=function(data){var mapping={orderlines:{key:function(data){return ko.utils.unwrapObservable(data.orderLineId);},create:function(options){var orderLines=new OrderLineModel(options.data);orderLines.init();return orderLines;}}};ko.mapping.fromJS(data,mapping,this);this.productsCount=ko.computed(function(){var count=0;var orderlines=this.orderlines();for(var i in orderlines)if(orderlines[i]&&typeof orderlines[i].quantityAmount==='function')count+=parseInt(orderlines[i].quantityAmount(),10);if(count===0){const savedPersist=JSON.parse(localStorage.getItem('reduxPersist:PersistFormValues')??'{}');localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...savedPersist,WSSOrderline:{},oocfBasketStockStatus:undefined,basketClickCollectable:true}));}return count;},this);ko.bindingHandlers.getCarrierData={init:function(element,valueAccessor){const languageCode=drupalSettings.jysk_react.language_2_letter_code+'-'+drupalSettings.jysk_react.domain.country_code;const currency=drupalSettings.jysk_react.checkout.currency;const api_url=drupalSettings.wss_payment.api_url;const subTotal=data.subtotalpriceAmount;const colonDelimiter=data.subtotalpriceText.match(/.*\d(.*)$/)[1];const params=ko.unwrap(valueAccessor());const totalPriceAmount=ko.unwrap(params.basketTotalPrice);let oopusMessage=null;let thresholdMessage=null;let thresholdMessageAmount=null;const fetchPromise=fetch(api_url+'carrierlist?orderuuid='+data.uuid+'&includeOopus=1').then((data)=>data.json()).catch();fetchPromise.then(function(data){const fetchObject=data.carriers.map((index)=>{if(index?.nextDiscount?.shippingPrice===0&&totalPriceAmount<index?.nextDiscount.amountThreshold)if(index?.nextDiscount?.amountThreshold<thresholdMessageAmount||!thresholdMessageAmount)thresholdMessageAmount=index?.nextDiscount?.amountThreshold;
42index={...index,oopusMessage,originalPrice:index.originalPrice?currencyCorrecter(index.originalPrice):null,currency};return index;});if(thresholdMessageAmount){thresholdMessage=Drupal.t('Buy for @amount to get free shipping',{amount:currencyCorrecter(thresholdMessageAmount,colonDelimiter)});thresholdMessage=cleanUpTranslation(thresholdMessage);}data={...data,thresholdMessage,carriers:fetchObject};const jyskstoreCarrierId='jyskstore'+drupalSettings.jysk_react.domain.country_code;let deliveryToJyskStoreIndex=-1;deliveryToJyskStoreIndex=data.carriers?.findIndex((obj)=>obj.externId.toLowerCase()===jyskstoreCarrierId.toLowerCase());if(data.carriers[deliveryToJyskStoreIndex]?.minimumSubtotal>totalPriceAmount){oopusMessage=Drupal.t('At least @amount',{amount:currencyCorrecter(data.carriers[deliveryToJyskStoreIndex]?.minimumSubtotal,colonDelimiter)});oopusMessage=cleanUpTranslation(oopusMessage);data.carriers[deliveryToJyskStoreIndex]={...data.carriers[deliveryToJyskStoreIndex],oopusMessage};}data={...data,thresholdMessage};ko.applyBindingsToDescendants(data,element);});return {controlsDescendantBindings:true};}};this.notAvailableForClickCollect=ko.computed(function(){var ccNotAvailable=false;var orderlines=this.orderlines();for(var i in orderlines){var atp=orderlines[i].shopsAtp.read();if(atp&&!atp.totalNumberStoresWithAtp)ccNotAvailable=true;}return ccNotAvailable;},this);this.isOnlineOrder=ko.computed(function(){return this.type()==='ONLINE_SALES';},this);this.isGiftCardOrder=ko.computed(function(){return this.type()==='GIFT_CARD';},this);this.isSmosdOrder=ko.computed(function(){return this.type()==='SMOS';},this);this.b2bOrder=ko.computed(function(){if(drupalSettings.customerB2B){if(this.savingsPrTypeB2B_DISCOUNTText===undefined)this.savingsPrTypeB2B_DISCOUNTText=ko.observable();return this.savingsPrTypeB2B_DISCOUNTText;}return false;},this);this.justAddedAll=ko.computed(function(){var orderlines=this.orderlines();for(var i in orderlines)if(orderlines[i]&&orderlines[i].justAdded()===true)return false;return true;},this);this.isSimpleShipping=ko.computed(function(){return this.shippingAndFreightLines().length==1;},this);this.attachDrupalBehaviours=function(elements){elements.filter(function(item){return !!item.innerHTML;}).forEach(function(element){Drupal.attachBehaviors(element);});window.document.dispatchEvent(new Event('SSRRefresh'));};this.removeGiftCard=function(orderline){jQuery.ajax(Drupal.url('basket/orderline/'+orderline+'/delete')).done(function(){onlineOrder.cache.clear();new OrderController().getModel();new OrderController().read();});};this.showTeaser=ko.computed(function(){if(typeof this.shippingTeaser.thressHoldAmount!=='undefined'&&typeof this.subtotalpriceAmount!=='undefined')if(this.shippingTeaser.thressHoldAmount()>this.subtotalpriceAmount())if(this.shippingTeaser.hasOwnProperty('teaserNear'))return this.shippingTeaser.teaserNear();else return this.shippingTeaser.teaser();else return false;else return false;},this);};var OrderLineModel=function(data){ko.mapping.fromJS(data,{},this);this.shopsAtp=new OrderStoresAtp();this.picture=ko.computed(function(){return (this.picturePrefix().replace(/\/$/,'')+'/wd3.small'+this.pictureSuffix());},this);this.quantity=ko.computed({read:function(){return this.quantityAmount();},write:function(value){if(!value)value=1;if(this.customerColliRoundingFactor()!=1&&this.quantityAmount()!=value&&value%this.customerColliRoundingFactor()!=0){jysk.notification.closeNotification();var article={wss_id:this.article(),name:this.receiptText(),colli_rounding_factor:this.customerColliRoundingFactor(),quantity:Math.ceil(value/this.customerColliRoundingFactor())*this.customerColliRoundingFactor()};var html=Drupal.theme('colli_rounding_factor_basket_popup',article);jysk.notification.openNotification(html,'set');this.quantity(this.quantityAmount());jQuery('.basket-items .basket-item-quantity input').each(function(){jQuery(this).val(jQuery(this).data('quantity'));});return false;}else{var context=new PaymentContext();context.article.name=this.receiptText();context.article.wss_id=this.article();
42new OrderController().update(this.article(),parseInt(value,10),null,'set',this.orderLineId());}},owner:this});this.parts=this.parts||[];this.beforePriceLine=this.beforePriceLine||'';this.remove=function(){new OrderController().remove(this.article());};this.destroy=function(){new OrderController().destroy();};this.init=function(){this.shopsAtp.create(this.article());};this.changeQuantity=function(delta){delta=parseInt(delta);var article=this.article();var quantity=this.quantity()+delta;var context=new PaymentContext();context.article.name=this.receiptText();if(typeof this.totalpriceAmount==='function'&&this.quantityAmount()>0){var unitPrice=this.totalpriceAmount()/this.quantityAmount();updateOsaPurchaseRevenue(article,unitPrice*quantity);}new OrderController().update(article,quantity,null,'set',this.orderLineId());};};const currencyCorrecter=(content,colonDelimiter=',-',compareValue='')=>{const value=ko.toJS(content);const decodedColonDelimiter=ko.toJS(colonDelimiter);const currency=drupalSettings.jysk_react.checkout.currency;const locale=drupalSettings.jysk_react.language_2_letter_code+'-'+drupalSettings.jysk_react.domain.country_code;let formattedNumber=value.toLocaleString(locale,{useGrouping:true,minimumFractionDigits:0,maximumFractionDigits:2});if(compareValue!=='')return compareValue.replace(/\d+(?=[,.;])/g,formattedNumber);if(!Number.isInteger(value))formattedNumber=value.toLocaleString(locale,{useGrouping:true,minimumFractionDigits:2,maximumFractionDigits:2});return formattedNumber.includes(colonDelimiter)?formattedNumber:`${formattedNumber} ${decodedColonDelimiter}`;};const checkSecondaryPriceEnabled=()=>{return drupalSettings.jysk_react_ssr.globalSettings.secondaryPriceEnabled;};const cleanUpTranslation=(inputString)=>{inputString=inputString.replace('@<','<');inputString=inputString.replace(/<\/?[^>]+(>|$)/g,'');return inputString;};const triggerOffCanvasRecyclingTax=(content)=>{offCanvasRecyclingTax({recyclingTaxFeeText:content.recyclingTaxFeeText,recyclingTaxBasePriceText:content.priceValueText,priceValueText:content.priceValueText,recyclingTaxBasePrice:ko.toJS(content.recyclingTaxBasePrice),recyclingTaxFee:ko.toJS(content.recyclingTaxFee),priceValue:ko.toJS(content.priceValue)});};const triggerOffCanvasDelivery=async(content)=>{const transformedContent=ko.toJS(content);const delivery=await fetch(`/wss/json/carrierlist?orderuuid=${transformedContent.uuid}&includeOopus=1`).then((response)=>response.json());const data=addOopusMessage(delivery,transformedContent);offCanvasDelivery(data);};(function($){window.colliRoundingFactorBasket=function(article,action,quantity){switch(action){case 'delete':new OrderController().remove(article);jysk.notification.closeNotification();break;case 'add':case 'deduct':if(quantity>0){new OrderController().update(article,quantity);$('.basket-item-quantity input[data-wss_id='+article+']').val(quantity);}else{if(quantity==0)new OrderController().remove(article);}jysk.notification.closeNotification();break;case 'close':jysk.notification.closeNotification();break;}};})(jQuery);;
43var OrderStoresAtp=function(){var self=this;self.storesAtp=ko.observable(null);self.create=function(article_id){if(typeof WssClickCollect==='undefined'){var error_message=Drupal.t("Can't load stores atp data because C&C has been disabled.");self.error(error_message);return;}if(typeof (article_id)==='undefined'||!article_id){var error_message=Drupal.t("Can't load stores atp data because article id isn't set");self.error(error_message);return;}var settings=new WssClickCollect().settings;var url=settings.stores_atp_url;url+=settings.sales_org+'/';url+=article_id;new WssRequest(url,self);};self.read=function(){return self.storesAtp();};self.update=function(data){self.storesAtp(data);};self.validate=function(data){return true;};self.parse=function(data){self.update(data);};self.toString=function(){return 'OrderStoresAtp';};self.error=function(error_message){var errors=[{errorCode:0,systemMessage:error_message,userMessage:error_message}];new WssRequestEvent().trigger(new WssRequestExceptionErrors(errors),self);};};;
44(function($,cookies){$.JYSKGigtcardDisplayGiftCardOrderInfo=function(){if($('.giftcard-order-info').length&&(cookie
44s.get('WSS_GIFTCARD_UUID')||(cookies.get(drupalSettings.wss_click_collect?.cookie_name)&&cookies.get(drupalSettings.wss_payment?.cookie_name_original)))){var giftCardOrder=$.JyskGiftCardLoadGiftCardOrder();if(giftCardOrder&&giftCardOrder.orderLines){var data={counter_text:Drupal.formatPlural(giftCardOrder.orderLines.orderlines.length,Drupal.t('You also have 1 gift card in the basket.',{},{jysk_context:'gift card'}),Drupal.t('123 You also have @count gift cards in the basket.',{},{jysk_context:'gift card'}),{'@count':giftCardOrder.orderLines.orderlines.length}),description:Drupal.formatPlural(giftCardOrder.orderLines.orderlines.length,Drupal.t('You can finish the purchase of the gift card after you completed this order.',{},{jysk_context:'gift card'}),Drupal.t('You can finish the purchase of the gift cards after you completed this order.',{},{jysk_context:'gift card'}))};var html=Drupal.theme('jysk_giftcard_order_info_template',data);$('.giftcard-order-info').html(html);}}};})(jQuery,Cookies);;
45(function($,cookies){window.colliRoundingFactor=function(action){var context=new PaymentContext();var order=new context.article.context.OrderController();switch(action){case 'delete':order.remove(context.article.wss_id);jysk.notification.closeNotification();break;case 'close':jysk.notification.closeNotification();break;case 'add':var zipcode=cookies.get('jysk_zipcode');if(context.article.ask_zipcode&&!zipcode){var product=$('a.wss-payment-add-to-basket[data-wss-id="'+context.article.wss_id+'"]');onlineOrder.shop.askZipcode(product);}else{jysk.notification.closeNotification();order.update(context.article.wss_id,context.article.quantity,null,'add');}break;}};})(jQuery,Cookies);;
46function updateOsaPurchaseRevenue(target,revenue){var PURCHASE_COLLECTOR_KEY='JSYK_ONLINE_SEARCH_APPLICATION_PURCHASE_COLLECTOR';var QUERY_KEY='JYSK_RECENTLY_QUERY_OSA';if(!target)return;try{var purchaseHistory=window.localStorage.getItem(PURCHASE_COLLECTOR_KEY);var jsonHistory=JSON.parse(purchaseHistory||'[]');var existingEntry=jsonHistory.find(function(item){return item.target===target;});if(!existingEntry)return;var context=window.localStorage.getItem(QUERY_KEY)||'';var purchase=[];if(revenue>0)purchase.push({target,revenue,context});
46jsonHistory.forEach(function(item){if(item.target!==target)purchase.push(item);});if(!purchase.length){window.localStorage.removeItem(PURCHASE_COLLECTOR_KEY);return;}window.localStorage.setItem(PURCHASE_COLLECTOR_KEY,JSON.stringify(purchase));}catch(e){console.error('Error updating OSA purchase history: '+e);}};
47(function($,cookies){$.PaymentsOrderListener=function(){this.received=function(object,e,url,response_data,cache_settings){if(!cache_settings)return;onlineOrder.cache.saveOrderHash(response_data);};this.error=function(){onlineOrder.cache.clear();$.JYSKGigtcardDisplayGiftCardOrderInfo();};this.destroy=function(object){onlineOrder.cache.clear();};this.success=function(object,e,url,response_data){if(url=='/wss/json/setarticle'){var warning=$('.basket-item.basket-item-warning');if(!warning.length)$('.inline-messages.col-xs-12 .warning').remove();}if(typeof response_data.order.savingsPrTypeB2B_DISCOUNTText==='undefined'&&drupalSettings.customerB2B)$.B2bOrder(response_data.order.uuid,object);if(typeof response_data.order.savingsPrTypeB2B_DISCOUNTText!=='undefined'&&cookies.get('b2bReloadBasket')&&window.location.pathname.indexOf(Drupal.url('basket'))!==0){cookies.remove('b2bReloadBasket');object.read(null,false,true);}$.JYSKGigtcardDisplayGiftCardOrderInfo();Drupal.attachBehaviors($('.wss-payment-basket').get(0));jQuery.dataLayerWssRequestReadEvent(response_data.order);if(window.location.pathname==='/basket/receipt')dataLayer.push({'event':'ReceiptPageLoad'});};};})(jQuery,Cookies);;
48(function($){$.PaymentsAtpListener=function(){this.success=function(object){var data=object.getModel();var elements=object.getElements();$.each(elements,function(){var el=$(this).find(drupalSettings.wss_payment.AtpController.selector);if(el.length==0)return;var wss_id=el.data('wss-id');var statuscode=el.data('statuscode');el.button=el.siblings('.wss-payment-not-orderable').first();if((!data[wss_id]||data[wss_id]<0)){el.hide();el.button.show();if(el.hasClass('basket-related-product'))el.closest('.owl-item').remove();}else{if(el.hasClass('wishlist'))el.css('display','block');else el.show();el.button.hide();}});};};})(jQuery);;
49(function($){$.WSSAtpStoresListener=function(){this.success=function(object,e,url,response_data){this.hideCCButton(object,e,url,response_data);};this.hideCCButton=function(object,e,url,response_data){var hideClickCollect=false;var order=new OrderController().getModel();for(var i=0;i<order.orderlines.length;i++){var orderline=order.orderlines[i];if((orderline.articleStatus&&(orderline.articleStatus==drupalSettings.productStatus.onlineOnly||orderline.articleStatus==drupalSettings.productStatus.dropShipment))||(orderline.articleStatus==drupalSettings.productStatus.procuredArticles&&order.notAvailableForClickCollect))hideClickCollect=true;}};};})(jQuery);;
50(function($,cookies){$.DropshipmentZipcodeListener=function(){this.validate=function(object,e,url,response_data,cache_settings,request_data){if(url=='/wss/json/addarticle'&&typeof request_data!="undefined"){var context=new PaymentContext();if(typeof e.errorCodes!="undefined"&&!_.isEmpty(e.errorCodes[0])&&(e.errorCodes[0]=='NO_CARRIER_FOR_ZIPCODE_FOUND'||e.errorCodes[0]=='ZIPCODE_INVALID')&&typeof request_data.zipcode!="undefined"&&context.article.statuscode==drupalSettings.productStatus.dropShipment)return false;}return true;};this.error=function(object,e,url,response_data,cache_settings,request_data){if(!this.validate(object,e,url,response_data,cache_settings,request_data)){cookies.set('jysk_zipcode_invalid',request_data.zipcode);$('.product-sumup .dropshipment-product-unavailable').remove();var context=new PaymentContext();$('.product-sumup .note-product').after(Drupal.theme('dropshipment_invalid_code',request_data.zipcode,context.article.statuscode,context.article.storesales,context.article.wss_id));var message=Drupal.t('Unfortunately we can not deliver to your ZIP code. Maybe you could have the goods delivered to a different zip code?');$('#wss-payment-zipcode-form .dropship-zip-validation-feedback').remove();$('#wss-payment-zipcode-form').append(Drupal.theme('dropshipment_validation_feedback',message,'not-validated'));}if(url==='/wss/json/addarticle'&&typeof e.errorCodes!="undefined"&&!_.isEmpty(e.errorCodes[0])&&e.errorCodes[0]==='INSUFFICIENT_ATP'&&e.userMessage&&e.userMessage.length){var context=new PaymentContext();if(context.article.statuscode==drupalSettings.productStatus.dropShipment){var message={
50is_error:true,text:e.userMessage,error_code:e.message};var html=Drupal.theme('basket_notification_error',context.article,message);jysk.notification.openNotification(html,"addedToBasket",e.userMessage);}}};this.success=function(object,e,url,response_data,cache_settings,request_data){if(url=='/wss/json/addarticle'){const zipCodeEvent=new CustomEvent('ocof-zipcode-ask-event',{detail:{type:'init'}});window.dispatchEvent(zipCodeEvent);var context=new PaymentContext();context.hide_basket_popup=false;$('#wss-payment-zipcode-form .dropship-zip-validation-feedback').remove();cookies.remove('jysk_zipcode_invalid',{path:'/'});$('.product-sumup .dropshipment-product-unavailable').remove();var message=Drupal.t('It is possible to provide your zip code. Your ZIP code is stored.');$('#wss-payment-zipcode-form').append(Drupal.theme('dropshipment_validation_feedback',message,'validated'));}};};})(jQuery,Cookies);;
51(function($){$.WssPaymentProductLabelsAtpListener=function(){this.success=function(object){var data=object.getModel();var elements=object.getElements();var products=new WssPaymentProductLabels(elements);products.processProductsAtpNumbers(data).setLabels();};};})(jQuery);;
52(function($,cookies){$.basketListener=function(){this.sent=function(object){};this.success=function(object,listener,request_url,response_data){var context=new PaymentContext();if(request_url!='/wss/json/order')context.message.payment.type=null;if(request_url==='/wss/json/cloneorder'){var title=Drupal.t('Basket changed');var message=Drupal.t('You already confirmed an existing order. You can now continue shopping, but you will need to complete the basket flow again.');var html=Drupal.theme('clone_order',title,message);jysk.notification.openNotification(html,'addedToBasket',title);}if((context.article.wss_id&&!context.hide_basket_popup&&context.message.zipcode.type!='error'&&context.message.payment.type!='error'&&request_url=='/wss/json/addarticle')||request_url=='/wss/json/bulkaddarticle'){new OrderController().applyBindings($('#notification-container .wss-payment-basket'));if($('.basket-notification-delivery-info span').length&&$('.basket-notification-delivery-info span').text().length>1)$('.basket-notification-delivery-info').css('padding-bottom','10px');}if(window.location.pathname===Drupal.url('basket/click-n-collect/receipt'))if(response_data.order.orderType==='ONLINE_SALES')cookies.remove(drupalSettings.wss_payment.cookie_name_original,{path:'/',domain:''});};this.error=function(object,e){var context=new PaymentContext();context.message.payment.type='error';context.message.payment.code=e.errorCodes;context.message.payment.message=e.userMessage;if(e.message.indexOf('ZIPCODE_INVALID')!=-1||e.message.indexOf('NO_CARRIER_FOR_ZIPCODE_FOUND')!=-1){cookies.remove('jysk_zipcode',{path:'/'});context.message.zipcode.type='error';}
52if(e.userMessage&&e.userMessage.length&&!context.hide_basket_popup)if(e.errorCodes[0]==='ORDER_NOT_EDITABLE'){var orderuuid=cookies.get(drupalSettings.wss_payment.cookie_name_original);new OrderController().cloneOrder(orderuuid);}else{var message={is_error:true,text:e.userMessage,error_code:e.message};if(e.errorCodes[0]==="ZIPCODE_INVALID"){var errorEvent=new CustomEvent('powerstep-zip-event',{detail:{isError:true,text:e.userMessage,errorCode:e.message}});window.dispatchEvent(errorEvent);}else{var html=Drupal.theme('basket_notification_error',context.article,message);jysk.notification.openNotification(html,"addedToBasket",e.userMessage);}$('.basket-items .basket-item-quantity input').each(function(){$(this).val($(this).attr('data-quantity'));});}};this.empty=function(object){if(window.location.pathname===Drupal.url('basket/click-n-collect/receipt'))cookies.remove(drupalSettings.wss_payment.cookie_name_original,{path:'/',domain:''});};this.destroy=function(object){var context=new PaymentContext();cookies.remove('jysk_zipcode',{path:'/'});context.message.zipcode.type=null;if(Drupal.urlMatch('basket/review')||Drupal.urlMatch('basket/klarna-denied'))window.location=Drupal.url('');};};})(jQuery,Cookies);;
53(function($,cookies){$.OnlineBasketListener=function(){this.success=function(object){let articles={};var order=object.getModel();const pathInfo=drupalSettings.path.currentPath;if(order.type==='ONLINE_SALES')for(var orderline_number in order.orderlines){var orderline=order.orderlines[orderline_number];var wss_id=orderline.article;articles[wss_id]={};articles[wss_id].wss_id=orderline.article;articles[wss_id].units=orderline.quantityAmount;}if(pathInfo==='basket'||pathInfo==='basket/continue'){const savedPersist=JSON.parse(localStorage.getItem('reduxPersist:PersistFormValues')??'{}');localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...savedPersist,WSSOrderline:{type:'online',orderLine:articles},oocfBasketStockStatus:order.orderlines.length>0?savedPersist.oocfBasketStockStatus:undefined}));}else{if(Object.keys(articles).length>0){const eventOrder=new CustomEvent('oocf-store-type-event',{detail:{orderlineOnline:articles}});window.dispatchEvent(eventOrder);}}};};})(jQuery,Cookies);;
54(function($,cookies){$(document).ready(function(){$(document).on('click','.dropshipModal',function(e){if(_.isObject(drupalSettings.wss_payment_dropshipment_modal)){var drop_settings=drupalSettings.wss_payment_dropshipment_modal;jysk.notification.openNotification(Drupal.theme('dropshipment_modal',drop_settings.title,drop_settings.body),'dropshipmentZip',drop_settings.title);}});$(document).on('submit','.wss-share-basket-share-form',function(e){const isSharedBasket=e.currentTarget.classList.value.search('wss-share-basket-share-form')>=0;if(isSharedBasket)e.preventDefault();const savedPersist=JSON.parse(localStorage.getItem('reduxPersist:PersistFormValues')??'{}');localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...savedPersist,WSSOrderline:{},oocfBasketStockStatus:undefined,basketClickCollectable:true}));});$(document).on('click','.addToBasket.wss-payment-add-to-basket',function(e){e.preventDefault();var product=$('.add-to-basket[data-wss_id='+$(this).data('wss-id')+']');onlineOrder.shop.addToBasket(product);});$(document).on('keypress','#wss-payment-zipcode-form #edit-code',function(e){if(e.which==13){$(this).blur();$('#wss-payment-zipcode-form').submit();return false;}});$(document).on('submit','#wss-payment-zipcode-form',function(e){e.preventDefault();onlineOrder.shop.validateZipcode($(this));});$(document).on('keyup','#wss-payment-zipcode-form #edit-code',function(event){if($(this).val()&&event.keyCode==13)$('#edit-submit').trigger('mousedown');});$(document).on('click','a.flush-basket',function(){new OrderController().destroy();return false;});$(document).on('click','.finish-giftcard-order, .basket-giftcard-remove',function(e){new WssCache('localStorage').flush('JYSKGiftCardOrderCache');});var checked_option=$('.form-item-flexdelivery input:checkbox:checked').closest('.carrier-flex');if(checked_option)checked_option.find('.flex-delivery').slideDown('fast');$(document).on('change','#notification .notification-item-quantity input.amount',function(){var $this=$(this);var quantity_int=parseInt($this.val(),10);var quantity=quantity_int>0?quantity_int:1;var saved_quantity=$this.data('saved_quantity');var wss_id=$this.data('wss_id');var context=new PaymentContext();if(context.article.order_type=='online'){var colli_rounding=$this.data('colli_rounding');if(colli_rounding!=1)if(quantity%colli_rounding!=0&&quantity!=saved_quantity){jysk.notification.closeNotification();var html=Drupal.theme('colli_rounding_factor_popup',context.article);jysk.notification.openNotification(html,'set');return false;}var orderLineId=$this.data('orderLineId');new OrderController().update(wss_id,quantity,null,'set',orderLineId);}else new WssClickCollect().order.changeArticleQuantity(wss_id,quantity);var price_element=$this.parents().closest('.notification-item').find('.notification-item-price');var item_price=$(price_element).data('item_price');var currency=$(price_element).data('currency');var total_price=item_price*quantity;$(price_element).text(total_price.toFixed(2)+' '+currency);$this.val(quantity);updateOsaPurchaseRevenue(wss_id,total_price);});if($.browser&&$.browser.msie)$('#wss-payment-zipcode-form').submit(function(){return false;});var zipcode_invalid=cookies.get('jysk_zipcode_invalid');if(!_.isEmpty(zipcode_invalid)&&_.isEmpty(cookies.get('jysk_zipcode'))){var button=$(".addToBasket.btn.wss-payment-add-to-basket[role='button']");if(button.data('statuscode')==drupalSettings.productStatus.dropShipment){$('.product-sumup .dropshipment-product-unavailable').remove();$('.product-sumup .note-product').after(Drupal.theme('dropshipment_invalid_code',zipcode_invalid,button.data('statuscode'),button.data('storesales'),button.data('wss-id')));}}$(document).on('click','.pane-in-notification-view',function(e){e.preventDefault();
54var title=$(this).attr('title');$.ajax($(this).attr('href')).done(function(data){window.JyskNotificationFormReactConnector.formRenderSet({title,form:data,messages:[]});window.dispatchEvent(new Event('JyskNotificationFormRenderSet'));});});$(document).on('JYSKProductTooltipView JYSKProductTooltipLoad',function(event,content){Drupal.attachBehaviors(content);});});})(jQuery,Cookies);;
55(function($){$(function(){const readPersistForm=JSON.parse(localStorage.getItem('reduxPersist:PersistFormValues')??'{}');const readWssOrderLine=JSON.parse(localStorage.getItem('/wss/json/order?version=full&')??'{}');const readWssCCOrderLine=JSON.parse(localStorage.getItem('WssCCOrderKey')??'{}');const event=new CustomEvent('ocof-clear-storage');if(window.Cookies.get('UUID_REFRESHED')){window.dispatchEvent(event);localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...readPersistForm,WSSOrderline:{},oocfBasketStockStatus:undefined,basketClickCollectable:true}));window.Cookies.remove('UUID_REFRESHED');}if(!!window.Cookies.get('WSS_ORDER_UUID')&&(readWssOrderLine.isError===false||readWssCCOrderLine.isError===false)){const cookieOrderUuid=window.Cookies.get('WSS_ORDER_UUID');let storedOrderUuid=undefined;if(readWssCCOrderLine.isError===false&&readWssOrderLine===undefined)storedOrderUuid=readWssCCOrderLine?.order?.uuid;else storedOrderUuid=readWssOrderLine?.order?.uuid;if(cookieOrderUuid!==storedOrderUuid){localStorage.removeItem('reduxPersist:PersistFormValues');localStorage.removeItem('/wss/json/order?version=full&');localStorage.removeItem('WssCCOrderKey');window.Cookies.remove('WSSUpdateOrderCache');}}if(!window.Cookies.get('WSS_ORDER_UUID')&&readPersistForm?.WSSOrderline?.type==='online'){window.dispatchEvent(event);localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...readPersistForm,WSSOrderline:{},oocfBasketStockStatus:undefined,basketClickCollectable:true}));}if(!window.Cookies.get('CC_WSS_ORDER_UUID')&&readPersistForm?.WSSOrderline?.type==='click_collect'){window.dispatchEvent(event);localStorage.setItem('reduxPersist:PersistFormValues',JSON.stringify({...readPersistForm,WSSOrderline:{},oocfBasketStockStatus:undefined,basketClickCollectable:true}));}});new WssRequestEvent().addListener('AtpController',new $.PaymentsAtpListener());new WssRequestEvent().addListener('OrderController',new $.DropshipmentZipcodeListener());new WssRequestEvent().addListener('OrderController',new $.PaymentsOrderListener());new WssRequestEvent().addListener('OrderController',new $.basketListener());new WssRequestEvent().addListener('OrderController',new $.WSSAtpStoresListener());new WssRequestEvent().addListener('OrderController',new $.OnlineBasketListener());new WssRequestEvent().addListener('OrderStoresAtp',new $.WSSAtpStoresListener());})(jQuery);;
56(function($){window.DY=window.DY||{};Drupal.behaviors.wss_payment_drupal={attach:function(context,settings){var args=settings.wss_payment;var sales_org=settings.jysk.sales_org;var baskets=$(args.OrderController.selector);var pagesToManualInit=[Drupal.url('basket/delivery')];var elementsToManualInit='wss-payment-delivery-form-container';if(baskets.length&&$.inArray(location.pathname,pagesToManualInit)>=0)if(typeof (context.className)!=='undefined'&&context.className.indexOf(elementsToManualInit)===0){var get_uuid=$.url().param('sessionid');new OrderController(args.api_url,args.catalog,$.makeArray(baskets)).read(get_uuid);}var compareZip=args.vat_reduced_not_allowed_in;if(compareZip){const addressFormSelector='.page-basket-address .wss-payment-address-form';const submitButtonSelector=$(addressFormSelector+' .js-form-submit');const zipCodeSelector='input.zipCode';const vatFieldSelector='input[name=vatRegNo]';var formData=$(addressFormSelector).serialize();var shouldVatModalGetShown=false;function hasFormDataChanged(){var currentFormData=$(addressFormSelector).serialize();var hasChanged=currentFormData!==formData;formData=currentFormData;return hasChanged;}function showVatModal(){var html=Drupal.theme('gr_vat_zip_message');jysk.notification.openNotification(html,'vatMessage');shouldVatModalGetShown=false;}$(addressFormSelector).find("input, textarea").on("input",function(){if(hasFormDataChanged()){shouldVatModalGetShown=false;$(zipCodeSelector).each(function(){var currentVat=$(vatFieldSelector).val();var currentZip=$(this).val().replace(/\s+/g,'');if(currentZip.length===5&&compareZip.includes(currentZip)&&currentVat!=='')shouldVatModalGetShown=true;});}});}if(args.AtpController){var elements=[];var data=[];var args_labels=settings.wss_payment_labels;if(args_labels.Products.products!=''){data=data.concat(args_labels.Products.products.getProductsWssIdForAtpRequest());elements=elements.concat($.makeArray(args_labels.Products.products.getElements()));}var buttons=$(args_labels.Products.selector+' '+args.AtpController.selector,context);if(buttons.length){var products=[];buttons.each(function(){var product=$(this).parents(args_labels.Products.selector);var id=product.data('wss_id');data.push(id);products.push(product);});elements=elements.concat($.makeArray(products));}if(data.length!=0){var atp_controller=new AtpController(args.online_atp_url,sales_org,data,elements);atp_controller.putElements(elements);atp_controller.updateData(data);atp_controller.read();}}$('.page-basket form',context).not('#wss-payment-address-form, #wss-click-collect-address-form, #wss-payment-delivery-form .wss-b2b-form, #customer-create-account-form form').addClass('disable-submit-processed').on('submit',function(){var $this=$(this);var errors=[];var $button=$this.find("button[type='submit'], input[type='submit']").not('.cta-info');if($this.valid())$button.prop('disabled',true);$this.trigger('validate.wss_payment',[errors]);if(errors.length){$button.prop('disabled',false);return false;}else return true;});$('#wss-payment-address-form .basket-actions input').off('click').on('click',function(){$(this).closest('form').valid();if(compareZip&&shouldVatModalGetShown){showVatModal();return false;}});$('#wss-payment-gateway-form').not('.no-submit').submit();}};$(function(){var args=drupalSettings.wss_payment;var baskets=$(args.OrderController.selector);var pagesToInit=[Drupal.url('basket/review'),Drupal.url('basket/receipt')];if(baskets.length||$.inArray(location.pathname,pagesToInit)>=0){var get_uuid=$.url().param('sessionid');new OrderController(args.api_url,args.catalog,$.makeArray(baskets)).read(get_uuid);}});})(jQuery);;
57var onlineOrder={};(function($,cookies){onlineOrder.shop=new function(){this.addToBasket=function(product){var context=new PaymentContext();context.article.order_type='online';onlineOrder.shop.prepareContextVars(product);context.article.ask_zipcode=$(product).data('ask_zipcode');context.show_popup=true;if(context.article.colli_rounding_factor!=1&&context.article.original_quantity!=context.article.quantity){var html=Drupal.theme('colli_rounding_factor_popup',context.article);jysk.notification.openNotification(html,"set");}
57else{var zipcode=cookies.get('jysk_zipcode');if(context.article.ask_zipcode&&!zipcode)onlineOrder.shop.askZipcode(product);else{if(zipcode)zipcode=zipcode.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g,'');new OrderController().update(context.article.wss_id,context.article.quantity,zipcode,'add');}}};this.bulkAddToBasket=function(products){var context=new PaymentContext();onlineOrder.shop.prepareBulkContextVars(products);var zipcode=cookies.get('jysk_zipcode');if($(products[0]).data('ask_zipcode')==1&&!zipcode)onlineOrder.shop.askZipcode($(products[0]));else new OrderController().bulkUpdate(context,null);};this.askZipcode=function(product){var title='';var body='';var type='enterZip';if(!_.isUndefined(product)&&product.data('statuscode')==drupalSettings.productStatus.dropShipment&&!_.isEmpty(drupalSettings.wss_payment_dropshipment_zip_modal)){title=drupalSettings.wss_payment_dropshipment_zip_modal.title;body=drupalSettings.wss_payment_dropshipment_zip_modal.body;type+=' type-dropshipmentZip';}const zipCodeEvent=new CustomEvent('ocof-zipcode-ask-event',{detail:{title,body,type}});window.dispatchEvent(zipCodeEvent);};this.validateZipcode=function(form){var context=new PaymentContext();if(context.article.statuscode==drupalSettings.productStatus.dropShipment)context.hide_basket_popup=true;var zipcode_input=$(form).find('#edit-code');var zipcode_value=$(zipcode_input).val();$(zipcode_input).removeClass('error');$(form).find('.error-message').remove();if(zipcode_value.length)if(!zipcode_value.match(/^[0-9a-z\-\s]+$/i)){var message=Drupal.t('Zipcode contains 
57not allowed characters');onlineOrder.shop.ZipcodeShowError(form,zipcode_input,message);}else{context.message.zipcode.type=null;window.parent.Cookies.set('jysk_zipcode',zipcode_value);if(context.bulk==true)new OrderController().bulkUpdate(context,zipcode_value);else if(context.article.wss_id)new OrderController().update(context.article.wss_id,context.article.quantity,zipcode_value,'add');else $.get('/basket/update-zipcode/'+zipcode_value,function(data){if(data===true){const zipCodeEvent=new CustomEvent('ocof-zipcode-ask-event',{detail:{type:'add-to-basket'}});window.dispatchEvent(zipCodeEvent);}else onlineOrder.shop.ZipcodeShowError(form,zipcode_input,data);});}else{var message=Drupal.t('Post code field is required');onlineOrder.shop.ZipcodeShowError(form,zipcode_input,message);}};this.ZipcodeShowError=function(form,zipcode_input,message){$(zipcode_input).addClass('error');var errorOutput='<div class="error-message">'+message+'</div>';$(errorOutput).insertBefore($(form).find('.form-item-code'));};this.prepareContextVars=function(product){var context=new PaymentContext();context.article.nid=$(product).data('nid');context.article.name=$(product).data('name');context.article.wss_id=$(product).data('wss_id');context.article.has_accessories=$(product).data('has-accessories');context.article.colli_rounding_factor=$(product).data('colli-rounding-factor');context.article.statuscode=$(product).data('statuscode');context.article.storesales=$(product).data('storesales');var quantity_field=$(product).find('.product-quantity-input');if(quantity_field.length){var quantity_field_value=parseInt(quantity_field.val(),10);context.article.original_quantity=quantity_field_value&&quantity_field_value>0?quantity_field_value:0;}else if($(product).hasClass('wishlist')||$(product).hasClass('product-tip'))context.article.original_quantity=$(product).data('quantity');else context.article.original_quantity=1;if(context.article.order_type==='click&collect')context.article.quantity=context.article.original_quantity;else context.article.quantity=Math.ceil(context.article.original_quantity/context.article.colli_rounding_factor)*context.article.colli_rounding_factor;return context;};this.prepareBulkContextVars=function(products){var context=new PaymentContext();var jsonObj={};for(var i in products){jsonObj['article'+i]=products[i].getAttribute('data-wss_id');jsonObj['quantity'+i]=products[i].getAttribute('data-quantity');}context.article.bulk=jsonObj;context.bulk=true;return context;};}();onlineOrder.cache=new function(){var self=this;self.storage='localStorage';self.clear=function(){var settings=drupalSettings.wss_payment;var cookie=cookies.get(settings.checksum_cookie_name);if(cookie)cookies.set(settings.checksum_cookie_name,null,{path:'/',domain:settings.cookie_domain.split(':')[0],expires:settings.checksum_expires});var key=self.key();var cache=new WssCache(self.storage);if(cache.read(key))cache.flush(key);};self.key=function(){var cache=new WssCache(self.storage);var url=drupalSettings.wss_payment.api_url+'order';var request={version:'full'};return cache.keyFromRequest(url,request);};self.cacheIsOutdated=function(cached_order){if(!cookies.get(drupalSettings.wss_payment.cookie_name_original))return true;var normalized_order=self.normilizeOrder(cached_order);var storage_checksum=self.calculateHash(normalized_order);var cookie_checksum=cookies.get(drupalSettings.wss_payment.checksum_cookie_name);if(storage_checksum==cookie_checksum)return false;return true;};self.saveOrderHash=function(order){var normalizedOrder=self.normilizeOrder(order);var hash=self.calculateHash(normalizedOrder);cookies.set(drupalSettings.wss_payment.checksum_cookie_name,hash,{path:'/',domain:drupalSettings.wss_payment.cookie_domain.split(':')[0],expires:drupalSettings.wss_payment.checksum_expires});};self.normilizeOrder=function(order){if(!order||!JSON)return null;var normalized_order=null;if(typeof order=="string")normalized_order=JSON.parse(order);else normalized_order=jQuery.extend(true,{},order);if(!normalized_order)return null;if(normalized_order.order)normalized_order=normalized_order.order;normalized_order.aliveMs=0;return normalized_order;};self.calculateHash=function(value){if(!JSON||!value)return null;var str=(typeof value=='string')?value:JSON.stringify(value);var strLn=str.length;var hash=0;if(strLn==0)return hash;for(var i=0;i<strLn;i++){var char=str.charCodeAt(i);hash=((hash<<5)-hash)+char;
57hash=hash&hash;}return hash;};}();})(jQuery,Cookies);;
58var PaymentContext=function(){var _self=this;PaymentContext=function(){return _self;};this.article={wss_id:null,nid:null,name:null,statuscode:null,storesales:null,has_accessories:false,ask_zipcode:false,quantity:1,original_quantity:1,from_iframe:false,context:window,colli_rounding_factor:1,order_type:'online'};this.message={zipcode:{type:null,code:null,message:null},payment:{type:null,code:null,message:null}};this.show_popup=true;this.hide_basket_popup=false;this.bulk=false;return _self;};;
59(function($){Drupal.theme.basket_notification_error=function(product,message){var html='';html+='<div id="notification" class="error">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">';html+='<span class="alert error">!</span> '+product.name;html+='</h2>';html+='</div>';html+='<div class="notification-content">';if(message.text.length)html+='<p class="notification-alert error">'+message.text+'</p>';html+='<div class="modal-footer notification-actions">';if(message.is_error&&(message.error_code.indexOf('NO_CARRIER_FOR_ZIPCODE_FOUND')==0||message.error_code.indexOf('ZIPCODE_INVALID')==0)){html+='<a class="btn primary popup-link-back right" href="#" onclick="onlineOrder.shop.askZipcode(); return false;">';html+=Drupal.t('Enter zipcode again');html+='</a>';}html+='<button class="btn secondary closeNotification">'+Drupal.t('Continue shopping')+'</button>';html+='</div>';html+='</div>';html+='</div>';return html;};Drupal.theme.colli_rounding_factor_popup=function(product){var articleAlreadyInBasket=false;var model=new OrderController().getModel();for(var i in model.orderlines)if(model.orderlines[i].article==product.wss_id){articleAlreadyInBasket=true;break;}var html='';html+='<div id="notification" class="product-set">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">';html+='<span class="alert error">!</span> '+product.name;html+='</h2>';html+='</div>';html+='<div class="notification-content">';if(product.colli_rounding_factor)html+='<p class="notification-alert error">'+Drupal.t('is only sold in multiples of the rounding value of <b>@rounding_value</b>',{'@rounding_value':product.colli_rounding_factor})+'</p>';html+='<a class="set-choice add" href="#" onclick="colliRoundingFactor(\'add\'); return false;">';html+='<span>'+Drupal.t('Add @rounding_value pieces to the basket',{'@rounding_value':product.quantity})+'</span>';html+='</a>';if(articleAlreadyInBasket){html+='<a class="set-choice dont-add" href="#" onclick="colliRoundingFactor(\'delete\'); return false;">';html+='<span>'+Drupal.t('Remove the article from the basket')+'</span>';html+='</a>';}else{html+='<a class="set-choice dont-add" href="#" onclick="colliRoundingFactor(\'close\'); return false;">';html+='<span>'+Drupal.t("Don't add article to the basket")+'</span>';html+='</a>';}html+='</div>';html+='</div>';return html;};Drupal.theme.colli_rounding_factor_basket_popup=function(product){var html='';html+='<div id="notification" class="product-set">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">';html+='<span class="alert error">!</span> '+product.name;html+='</h2>';html+='</div>';html+='<div class="notification-content">';if(product.colli_rounding_factor)html+='<p class="notification-alert error">'+Drupal.t('is only sold in multiples of the rounding value of <b>@rounding_value</b>',{'@rounding_value':product.colli_rounding_factor})+'</p>';html+='<a class="set-choice add" href="#" onclick="colliRoundingFactorBasket('+product.wss_id+', \'add\', '+product.quantity+'); return false;">';html+='<span>'+Drupal.t('Add @rounding_value pieces to the basket',{'@rounding_value':product.quantity})+'</span>';html+='</a>';html+='<a class="set-choice dont-add" href="#" onclick="colliRoundingFactorBasket('+product.wss_id+', \'delete\'); return false;">';html+='<span>'+Drupal.t('Remove the article from the basket')+'</span>';html+='</a>';html+='</div>';html+='</div>';return html;};Drupal.theme.wss_iframe_popup=function(iframe){var html='';html+='<div id="notification" class="error html-popup iframe">';html+='<div class="notification-content">';html+=iframe;html+='</div>';html+='</div>';return html;};Drupal.theme.wss_payment_popup_error=function(error_message){var html='';html+='<div id="notification" class="error">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">';
59html+='<span class="alert error">!</span> '+error_message;html+='</h2>';html+='</div>';html+='<div class="notification-content">';html+='<button class="btn btn-secondary secondary closeNotification">'+Drupal.t('Continue shopping')+'</button>';html+='</div>';html+='</div>';return html;};Drupal.theme.dropshipment_modal=function(title,body){var html='';html+='<div id="notification" class="open-variants wss-payment-dropshipment-popup">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">'+Drupal.t(title)+'</h2>';html+='</div>';html+='<div class="modal-body clearfix">';html+='<p>'+Drupal.t(body)+'</p>';html+='</div>';return html;};Drupal.theme.dropshipment_invalid_code=function(invalid_code,statuscode,storesales,wss_id){var html='';html+='<div class="dropshipment-product-unavailable">';html+='<p>';html+=Drupal.t("Can not delivered to the postal code.");html+=' <strong>'+invalid_code+'</strong>';html+=' - ';html+='<a href="#addthis" class="addToBasket add-dropship-item addToBasket wss-payment-add-to-basket" data-test="addToTheBasketButton"';html+=' data-statuscode="'+statuscode+'"';html+=' data-storesales="'+storesales+'"';
59html+=' data-wss-id="'+wss_id+'">'+Drupal.t('Shift')+'</a>';html+='</p>';html+='</div>';return html;};Drupal.theme.dropshipment_validation_feedback=function(message,status){var html='';html+='<div class="dropship-zip-validation-feedback '+status+'"><p>';if(status=='not-validated')html+='<span>✘</span>';else html+='<span>✔</span>';html+=message;html+='</p>';html+='</div>';return html;};Drupal.theme.jysk_error_message=function(message){var html='';html+='<div class="inline-messages col-xs-12 delivery-error">';html+='<div class="alert alert-block alert-danger messages error" role="alert"><p>';html+=message;html+='</p></div></div>';return html;};Drupal.theme.clone_order=function(title,message){var html='';html+='<div id="notification" class="error">';html+='<div class="modal-header notification-header-container">';html+='<h2 class="text-header s-2">';html+=title;html+='</h2>';html+='</div>';html+='<div class="notification-content">';html+='<span>'+message+'</span>';html+='</div>';html+='<div class="notification-content">';html+='<button class="btn btn-secondary secondary closeNotification">'+Drupal.t('Continue shopping')+'</button>';html+='</div>';html+='</div>';return html;};Drupal.theme.gr_vat_zip_message=function(){var html='';html+='<div id="notification" class="gr_vat_zip_modal">';html+='<div class="notification-content">';html+='<p class="notification-alert information mb-0">'+Drupal.t('Please note that our online store cannot currently support reduced VAT for the islands of Leros, Lesvos, Kos, Samos and Chios. For orders above €100, please contact the B2B department at <a href="mailto: [email protected]">[email protected]</a> or by phone at <a href="tel:+302111993542">+30 211 1993542</a>.')+'</p>';html+='</div>';html+='</div>';return html;};})(jQuery);;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.