เบลค
ผู้หญิง เครื่องประดับสตรี แว่นกันแดด Oscar De La Renta แว่นตากันแดด Cat Eye ระดับปานกลาง ",MARKO='\x3c!-- dwMarker="content" dwContentID="',MARKC='" --\x3e';HIDED="hide-desktop",HIDEM="hide-mobile",SE="< \/script>",SIB='
2601684BLKOSS1365 ',tag='',idl,objs=[],e,ne;if(U===typeof $){setTimeout(buildDots,250,dvi);return;} e=DOC.getElementById(dvi.id) ;if(N!==e){io=D.sup.getObjByIDT(dvi,C_DHC).children;tag+=sHTML+' style="'+(2>io.length?'display:none;':'' )+'">';for(i=0;i ';objs.push(obj);} tag+=eHTML;$('#'+dvi.id).after(tag);dotsFix();D.sup.addObjs(objs);setupImages(objs);}} การตั้งค่าฟังก์ชันCarouselH(dj,e){var ch=dj.actions.carouselH;ch.state={lastOffset:0,timeoutId:null,animate:false,offsetChangeCallback:function(){}};ch.data.padWidth=ch .data.padWidth||0;ศูนย์ฟังก์ชัน(o){var currentScrollLeft,anchoredScrollLeft,width,$dvh,ch;$dvh=$('#'+o.id);width=$dvh.width();ch =o.actions.carouselH;currentScrollLeft=$dvh.scrollLeft();anchoredScrollLeft=ch.data.padWidth+ch.state.lastOffset*width;if(currentScrollLeft!==anchoredScrollLeft){ch.state.animate=true;$ dvh.css('overflow-x','hidden');$dvh.animate({scrollLeft:anchoredScrollLeft},{duration:200,always:function(){currentScrollLeft=$dvh.scrollLeft();if(currentScrollLeft! ==anchoredScrollLeft)ch.state.timeoutId=setTimeout(center,200,o);ch.state.animate=false;$dvh.css('overflow-x','scroll');updateCNav(o.rootId?o .rootId:D.sup.getObjByIDT(o,C_DVI).id);}});}} e.addEventListener('scroll',function(event){if('undefined'==typeof $)return;var obj=$(event.target),width=obj.width(),o=D.sup.getObj(obj.attr('id')),threshhold=Math.floor(width/5),lastPosition,scrollLeft, limit,ch;ch=o.actions.carouselH;if(ch.state.animate)return;clearTimeout(ch.state.timeoutId);lastPosition=ch.data.padWidth+ch.state.lastOffset*width;scrollLeft=obj .scrollLeft();if(scrollLeft>lastPosition+width){scrollLeft=lastPosition+width;obj.scrollLeft(scrollLeft);}else if(scrollLeft
lastPosition+threshhold){ch.state.lastOffset++;limit=$('#'+D.sup.getObjByIDT(o,C_DHC).id).children().ความยาว-1;if(ch.state.lastOffset>limit )ch.state.lastOffset=limit;center(o);try{ch.state.offsetChangeCallback(ch.state.lastOffset);}catch(e){}}else if(scrollLeft=dhcDriObj.children.length||!dhcDriObj.children[1].hasSrc)a.state.isPaused=true;e.addEventListener('mouseenter',function(event){if(isTouch())return;var obj= $(event.target),s=a.state;if(e!==obj[0]){s=D.sup.getObj(obj.attr('id')).actions['hoverHToggle']. state;} if(s.isPaused)return;if(s.isHovering)return;obj.css('overflow-x','hidden');timeoutId=setTimeout(function(){obj.animate({scrollLeft:obj .width()},d);},d);s.isHovering=true;});e.addEventListener('mouseleave',function(event){var obj=$(event.target),s=a. state;if(e!==obj[0]){s=D.sup.getObj(obj.attr('id')).actions['hoverHToggle'].state;} if(!s.isHovering)return ;clearTimeout(timeoutId);obj.animate({scrollLeft:0},d);s.isHovering=false;});a.state.isReady=true;} function setupCarouselNavClick(o,e,a){D.sup .log('ฟังก์ชั่น setupCarouselNavClick ดำเนินการ!','o:',o,'e:',e,'a:',a);var d=a.data,dviObj=D.sup.getObjBySrcId(d.carouselId ),dhc;if(N===dviObj)dviObj=D.sup.getObj(d.carouselId);if(N===dviObj)return;e=e||D.sup.getDOMElementOfObj(o);D .sup.log('พบ e:',e);d.carouselId=dviObj.id;dviObj.notifyCNC=dviObj.notifyCNC||[];dviObj.notifyCNC.push(o.id);if(!d. imageId||''===d.imageId){dhc=DOC.getElementById(D.sup.getObjByIDT(dviObj,C_DHC).id);d.imageId=dhc.children[d.offset].getAttribute('id ');} e.addEventListener('click',function(e){D.sup.log('carouselNavClick!');if(d.imageId)carouselHNav(d.carouselId,d.imageId);else carouselHNavByPosition(d .carouselId,d.offset);});D.sup.log('การตั้งค่าฟังก์ชันCarouselNavClick เสร็จสมบูรณ์!');} ฟังก์ชัน setupActions(o,e){ D.sup.log('ฟังก์ชัน setupActions ที่ดำเนินการ: o:',o ,'e:',e);var i,a;if(o.hasOwnProperty('actions')){for(i in o.actions){a=o.actions[i];a.state=a. state||{isReady:false};a.state.isReady=a.state.isReady||false;if(!a.state.isReady){switch(i){case'hoverHToggle':if(C_DVH=== o.idt)setupActionHoverHToggle(o,e,a);break;case'carouselH':setupCarouselH(o,e);break;case'carouselNavClick':D.sup.log('ตั้งค่าการดำเนินการ carouselNavClick');setupCarouselNavClick( o,e,a);D.sup.log('carouselNavClick setup complete');break;case'hoverZoom':if(C_DVI===o.idt){setTimeout(D.api.createHoverZoom,500,o. id);a.state.isReady=true;} break;default:D.sup.log('action is not a know type');}}}} D.sup.log('setupActions complete');} หน้าต่าง .cv_t=0;function checkVisible(){var cv_s=new Date().getTime();D.sup.processList(D.lov,function(o,e,list){if(loadOnVisible(o,e)) D.sup.removeFromList(o,list);});var cv_e=new Date().getTime();var cv_d=cv_e-cv_s;window.cv_t+=cv_d;} ฟังก์ชัน setupImages(objs){ฟังก์ชันถูกต้อง(o ){var ret=false;if(o.load.hasOwnProperty('data')&&o.load.data.hasOwnProperty('target'))ret=true;return ret;} objs=objs||D.objs;D .sup.processList(objs,function(o,e){var i,te,go,t='default';if(o.hasOwnProperty('load')){switch(o.load.on){case' ทันที':setSrc(o,e);break;case'visible':D.sup.addToLov(o);break;case'watch':if(o.load.data&&o.load.data.type)D.sup .startWatching(o.load.data.type,D.sup.getDOMElementOfObj(o));break;case'refVisible':if(valid(o)){go=D.sup.getObj(o.load.data. target);if(N===go){go={id:o.load.data.target,isRef:true,isRefVisible:true,notify:[],load:{on:'none'}};D .sup.addToList(go,D.objs);} if(o.load.data.useWatch){if(o.load.data&&o.load.data.type)t=o.load.data.type;D sup.startWatching(t,D.sup.getDOMElementOfObj(go));}อื่น D.sup.addToList(go,D.lov);go.notify.push(o);} break;case'refHover':if( ถูกต้อง(o)){te=DOC.getElementById(o.load.data.target);tr=te.getAttribute('data-tref')||'';if(''===tr){go= {id:o.load.data.target,tr:D.sup.createId('TRF'),isRef:!0,isRefHover:!0,isEventSet:!1,notify:[],โหลด:{on:' ไม่มี'}};te.setAttribute('data-tref',go.tr);D.sup.removeFromList(go,D.objs);D.sup.addToList(go,D.objs);setTimeout(ฟังก์ชัน( ){te=D.sup.getDOMElementOfObj(go);if(N!==te){te.addEventListener('mouseenter',function(){if(go.isFired)return;for(i=0;i1){switchAllImagesToRetina();}});} ฟังก์ชัน init(){if(!D.state.isFooterInit){initWatchTypes();setupImages();checkVisible();setupScrollHandler();setupResizeHandler();setupZoomDetection() ;D.state.isFooterInit=true;D.sup.setAddObjCallbackFunc(ฟังก์ชัน(objs){D.sup.log('ฟังก์ชัน addObjCallbackFunc ดำเนินการ: objs:',objs);setupImages(objs);checkVisible();}); }} function carouselHNavByPosition(id,position){var $dhc,$imgs,imageId;$dhc=$('#'+D.sup.getObjByIDT(D.sup.getObj(id),C_DHC).id);if (1!==$dhc.length)return;$imgs=$dhc.children();if(0>=$imgs.length)return;imageId=$imgs.eq(position).attr('id') ;carouselHNav(id,imageId);} function carouselHNav(id,imageId){var $dvh,$dhc,dviObj=D.sup.getObj(id),dvhId,dvhObj,dhcId,$imgs,$img,offset,scrollLeft ,ch;if(dviObj.hasOwnProperty('children')){dvhId=D.sup.getObjByIDT(dviObj,C_DVH).id;dhcId=D.sup.getObjByIDT(dviObj,C_DHC).id;}อื่นๆ{dvhId= dviObj.dvhId;dhcId=dviObj.dhcId;} dvhObj=D.sup.getObj(dvhId);ch=dvhObj.actions.carouselH;$dvh=$('#'+dvhId);if(1!==$dvh .length)return;$dhc=$('#'+dhcId);if(1!==$dhc.length)return;$imgs=$dhc.children();$imgs.removeClass('selected'); $imgs.each(function(i,o){if(o.id===imageId){offset=i;return;}});$img=$('#'+imageId);$img.addClass( 'selected');scrollLeft=$dvh.width()*offset+ch.data.padWidth;$dvh.scrollLeft(scrollLeft);if(ch.state)ch.state.lastOffset=offset;updateCNav(id);} ฟังก์ชัน updateDots(){var dots=DOC.getElementsByClassName('vjs_dri-dots'),style,displayREX=/display:[^;]*;/g;for(i=0;i=dots[i].children.length){style+='display:none;';} dots[i].setAttribute('style',style);}} ฟังก์ชัน updateZoomFix(imgId){var presetREX=/\$[ ^$]*\$/,img=$('#'+imgId),driObj;if('IMG'===img[0].tagName){zoom=$('.'+C_PPI+' .zoomimg- คอนเทนเนอร์ img');driObj=D.sup.getObj(imgId);newURL=driObj.src||'';if(''===newURL)newURL=driObj.bps[D.state.breakPoint].src; newURL=newURL.replace(presetREX,'');if(-1===newURL.indexOf('?'))newURL+='?&';newURL+='$DWP_PRODUCT_ZOOM_DESKTOP$';zoom.attr('src' ,newURL);zoom.css({'width':'1760px','height':'2500px'});}} ฟังก์ชัน updateCNav(dviId){var dviObj=D.sup.getObj(dviId),dvh,dhc ,offset,imgs;function findPosition(dvh){return Math.floor(dvh.scrollLeft()/dvh.width()+0.5);} if(N!==dviObj){dvh=$('#'+dviId+ ' [id^="dri-DVH"]');dhc=dvh.find('[id^="dri-DHC"]');offset=findPosition(dvh);imgs=dhc.children('.vjs_dri ');imgs.removeClass('selected');imgs.eq(offset).addClass('selected');if(dviObj.notifyCNC)notify(dviObj.notifyCNC,imgs.eq(offset).attr('id' ));}} การแจ้งเตือนฟังก์ชัน(รายการ,imgId){var i,o,e,id;การตรวจสอบฟังก์ชัน(imgId,id,e){var c='selected';if(imgId===id)e.addClass (c);else e.removeClass(c);} for(i=0;inewLength){thumbs=$('.product-thumbnails-cont .thumb:not(.video)');dots=$('.dri-nav-dot:not(.dri-nav-dot-video)') ;for(i=newLength;i');D.addElement(thumbContainerId,[{form:'bpImg',imgData:[{url:imgUrls[i]}],config:{actions:{carouselNavClick:{data:{carouselId:dviId,offset:i} }}}}],false);}} thumbImgs=$('.product-thumbnails-cont [id^="dri-BPI"]');thumbs=$('.product-thumbnails-cont .thumb:not (.วิดีโอ)');dots=$('.dri-nav-dot:not(.dri-nav-dot-video)');for(i=0;i0;i--){if(img.eq(i).hasClass('selected'))return i;} return 0;},quickSwapCarouselImage:function(id,index,url){var obj=D.sup. getObj(id),dhcDriObj,imgs,preset,pmREX=/\$([^$]*)\$/;dhcDriObj=D.sup.getObjByIDT(obj,C_DHC);imgs=$('#'+dhcDriObj. id+' img');if(index>=imgs.length)return;if(!obj.hasOwnProperty('quickSwap'))obj.quickSwap=[];obj.quickSwap[index]=imgs.eq(ดัชนี) attr('src');preset=obj.quickSwap[index].match(pmREX)[1];url=D.sup.changePreset(url,preset);imgs.eq(index).attr('src', url);},quickRevertCarouselImage:function(id,index){var obj=D.sup.getObj(id),dhcDriObj,imgs;dhcDriObj=D.sup.getObjByIDT(obj,C_DHC);imgs=$('#' +dhcDriObj.id+' img');if(index>=imgs.length)return;if(obj.hasOwnProperty('quickSwap')&&Array.isArray(obj.quickSwap)&&'string'==typeof obj.quickSwap[ ดัชนี]&&''!==obj.quickSwap[ดัชนี]){imgs.eq(index).attr('src',obj.quickSwap[index]);obj.quickSwap[index]='';}}, changeCarouselImages:function(id,urls){var imgId,imgUrl,obj=D.sup.getObj(id),imgs,i,dvhDriObj,dhcDriObj;if(N==urls||U==urls)return; if(N===obj)return;dhcDriObj=D.sup.getObjByIDT(obj,C_DHC);imgs=$('#'+dhcDriObj.id+' img');if(0===imgs.length)return ;dvhDriObj=D.sup.getObjByIDT(obj,C_DVH);for(i=0;i=urls.length)dvhDriObj.actions.hoverHToggle.state.isPause=true;else dvhDriObj.actions.hoverHToggle.state.isPaused=false;} if(!D.state.useWatch)checkVisible();},ดึงCarouselImageUrls:function( id){var urls=[],dviObj,imgs;if(''!==id){dviObj=D.sup.getObj(id);if(U!==typeof dviObj){imgs=$('# '+D.sup.getObjByIDT(dviObj,C_DHC).id+'>img');imgs.each(function(i,o){var imgId=$(o).attr('id'),imgObj=D sup.getObj(imgId),url;if(U!==imgObj){url=U!==typeof imgObj.src?imgObj.src:imgObj.bps[0].src;urls.push(url);} });}} return url;},carouselNext:function(id,loop){var dviObj=D.sup.getObj(id),$dhc=$('#'+D.sup.getObjByIDT(dviObj,C_DHC) .id),img;loop='boolean'===typeof loop?loop:false;img=$dhc.children('.selected').next();if(0===img.length){if (loop)img=$dhc.children(':first-child');else return;} carouselHNav(id,img.attr('id'));},carouselPrev:function(id,loop){var dviObj= D.sup.getObj(id),$dhc=$('#'+D.sup.getObjByIDT(dviObj,C_DHC).id),img;loop='boolean'===typeof loop?loop:false;img =$dhc.children('.selected').prev();if(0===img.length){if(loop)img=$dhc.children(':last-child');else return;} carouselHNav(id,img.attr('id'));},createHoverZoom:function(dviId){D.sup.log('createHoverZoom');var HZM_STR='',ICON_STR='',zwX=393,zwY =393,preset='$DWP_PRODUCT_ZOOM_DESKTOP$',idREX=/{{id}}/g,widthREX=/{{width}}/g,heightREX=/{{height}}/g,imgIdREX=/{{imgId }}/g,zoomImageSrcREX=/{{zoomImageSrc}}/g,presetREX=/\$[^$]*\$/g,imgId,dviObj,dviDriObj,hzmStr,iconStr,$hzm,$img,$icon, cursorTimeout,pos,$col2,src,$dvi,$body,lastScrollTop=0,lastScrollLeft=0,leaveTime=30,$imgsel,cursorStyle='cursor:url(/on/demandware.static/Sites-Belk-Site/ -/default/images/search-plus.cur),auto;';dviObj=DOC.getElementById(dviId);if(null===dviObj)return;if(U==typeof jQuery){setTimeout(D. api.createHoverZoom,250,dviId);return;} $dvi=$('#'+dviId);$body=$('body');function hoverZoomInit(){if(''===D.state. hzmId){D.state.hzmId=D.sup.createId('HZM');hzmStr=HZM_STR;hzmStr=hzmStr.replace(idREX,D.state.hzmId);hzmStr=hzmStr.replace(widthREX,zwX); hzmStr=hzmStr.replace(heightREX,zwY);imgId=D.sup.createId('IMG');hzmStr=hzmStr.replace(imgIdREX,imgId);$imgsel=$dvi.find('img.selected'); if(0===$imgsel.length)$imgsel=$dvi.find('img');src=$imgsel.eq(0).attr('src');if(U!==typeof src) src=src.replace(presetREX,preset);else src=DEFAULT_IMAGE_URL;hzmStr=hzmStr.replace(zoomImageSrcREX,src);$hzm=$(hzmStr);$body.append($hzm);$img=$(' #'+imgId);}else{$hzm=$('#'+D.state.hzmId);src=$dvi.find('img.selected').attr('src');$imgsel=$ dvi.find('img.selected');if(0===$imgsel.length)$imgsel=$dvi.find('img');src=$imgsel.eq(0).attr('src' );if(U!==typeof src)src=src.replace(presetREX,preset);else src=DEFAULT_IMAGE_URL;$img=$hzm.find('img');$img.attr('src',src );}} ตำแหน่งฟังก์ชันZoomWindow(){$col2=$('.product-col-2');if($col2.length){pos=D.sup.getElementOffset($col2[0]);$hzm. css({left:pos.left+parseInt($col2.css('margin-left'),10)+parseInt($col2.css('padding-left'),10)+'px',top:pos .top});}else D.sup.log('.product-col-2 not found');} ฟังก์ชันแสดง(){$hzm.show();} ฟังก์ชันซ่อน(){$hzm.hide() ;} dviObj.addEventListener('mouseenter',function(e){clearTimeout(cursorTimeout);if(1ซ้าย) ซ้าย = 0; ถ้า (1760-zwXบน)บน=0;ถ้า(2500-zwY ',ZOOM_STR='',idREX=/{{id}}/g,srcREX=/{{src}}/g,widthREX=/{{width}}/g,heightREX=/{{height}}/g,zoomedImageIdREX=/{ {zoomedImageId}}/g,zoomedImageSrcREX=/{{zoomedImageSrc}}/g,imagesREX=/{{images}}/g,dviIdREX=/{{dviId}}/g,dvhIdREX=/{{dvhId}}/g ,dhcIdREX=/{{dhcId}}/g,padWidthREX=/{{padWidth}}/g,imgStr='',imgsStr='',zoomStr='',imgList=[],imgId,dviId,dvhId,dhcId ,zId,zoom=[{ความกว้าง:0,ความสูง:0},{ความกว้าง:1760,ความสูง:2500}],zi=-1,pi=0,zoomObj,panObj,panFlag=false,panX,panY,panMaxX, panMaxY,padWidth=50,dviDriObj,dvhDriObj,$dvh,$dhc;zoom[0].height=Math.ceil((zoom[1].height-height)/2)+height;zoom[0].width= Math.ceil(ซูม[0].height*1760/2500);dviId=D.sup.createId(C_DVI);dvhId=D.sup.createId(C_DVH);dhcId=D.sup.createId(C_DHC);zId =D.sup.createId('ZIM');for(i=0;i=ความยาว)ออฟเซ็ต=ความยาว-1;carouselHNav(dviId,$children.eq(offset).attr('id'));obj=$('#'+zId);zi=-1;obj.hide() ;panObj.css({left:'0px',top:'0px'});return offset;};interfaceObj.prev=function(){var obj,dvh=D.sup.getObj(dvhId),offset=dvh .actions.carouselH.state.lastOffset,$children=$('#'+dhcId).children();offset--;if(0>offset)offset=0;carouselHNav(dviId,$children.eq(offset) .attr('id'));obj=$('#'+zId);zi=-1;obj.hide();panObj.css({left:'0px',top:'0px'}); กลับ offset;};interfaceObj.gotoImage=function(imageId){if('undefined'===typeof imageId)return;var offset,dvh=D.sup.getObj(dvhId);carouselHNav(dviId,imageId);offset= dvh.actions.carouselH.state.lastOffset;return offset;};interfaceObj.plus=function(){var obj,left,top,lastMaxX,lastLeft,scale,$children;zi++;if(zi>zoom.length-1 ){zi=zoom.length-1;return zi+1;} obj=$('#'+zId);pi=$children=$('#'+dhcId).children('.selected').index ();obj.attr('src',imgURLs[pi]+'&hei='+zoom[zi].height);obj.css({'min-width':zoom[zi].width+'px', width:zoom[zi].width+'px','min-height':zoom[zi].height+'px',height:zoom[zi].height+'px'});panMaxX=zoom[zi].width -width;panMaxY=ซูม[zi].height-height;left=parseInt(panObj.css('left'),10);top=parseInt(panObj.css('top'),10);if(0= ==zi){left=-Math.floor(panMaxX/2);top=-Math.floor(panMaxY/2);}else{lastMaxX=zoom[zi-1].width-width;lastLeft=Math.floor (lastMaxX/2);scale=Math.floor(panMaxX/2)/lastLeft;left=left*scale;top=top*scale;} if(left>0)left=0;if(top>0)top= 0;if(left<-panMaxX)left=-panMaxX;if(top<-panMaxY)top=-panMaxY;panObj.css({left:left+'px',top:top+'px'});obj.show ();return zi+1;};interfaceObj.minus=function(){var obj,left,top,lastMaxX;zi--;obj=$('#'+zId);if(-1>=zi) {zi=-1;obj.hide();panObj.css({left:'0px',top:'0px'});}else{obj.attr('src',imgURLs[pi]+'&hei= '+zoom[zi].height);obj.css({'min-width':zoom[zi].width+'px',width:zoom[zi].width+'px','min-height':zoom [zi].height+'px',height:zoom[zi].height+'px'});panMaxX=zoom[zi].width-width;panMaxY=zoom[zi].height-height;left=parseInt(panObj .css('left'),10);top=parseInt(panObj.css('top'),10);lastMaxX=zoom[zi+1].width-width;lastLeft=Math.floor(lastMaxX/2) ;scale=Math.floor(panMaxX/2)/lastLeft;left=left*scale;top=top*scale;if(left>0)left=0;if(top>0)top=0;if(left< -panMaxX)left=-panMaxX;if(top<-panMaxY)top=-panMaxY;panObj.css({left:left+'px',top:top+'px'});} return zi+1;};interfaceObj .setOffsetChangeCallback=function(func){D.sup.getObj(dvhId).actions.carouselH.state.offsetChangeCallback=func;};zoomObj=$(zoomStr);panObj=zoomObj.find('#'+zId);panObj .on('mousedown touchstart',function(e){var o=e;if(o.originalEvent)o=o.originalEvent;if(o.touches)o=o.touches[0];if(typeof e. ยกเลิกได้!=='บูลีน'||e.cancelable)e.preventDefault();if(-1!==zi){panFlag=true;panX=o.pageX||o.clientX;panY=o.pageY| |o.clientY;}});function mouseUp(e){panFlag=false;} function mouseMove(e){var dx,dy,top,left,x,y,o=e;if(o.originalEvent)o =o.originalEvent;if(o.touches)o=o.touches[0];x=o.pageX||o.clientX;y=o.pageY||o.clientY;if(typeof e.cancelable!= ='บูลีน'||e.cancelable)e.preventDefault();if(panFlag){dx=x-panX;dy=y-panY;panX=x;panY=y;left=parseInt(panObj.css(' ซ้าย'),10);top=parseInt(panObj.css('top'),10);left+=dx;top+=dy;if(left>0)left=0;if(top>0)top=0 ;if(left<-panMaxX)left=-panMaxX;if(top<-panMaxY)top=-panMaxY;panObj.css({left:left+'px',top:top+'px'});}} $( DOC).on('mouseup touchend',mouseUp);panObj.on('mouseup touchend',mouseUp);panObj.on('mousemove',mouseMove);panObj.on('touchmove',function(e){panFlag =true;mouseMove(e);});dviDriObj={id:dviId,idt:C_DVI,children:[],loadType:'none',isDone:true,loadTypeData:{},rootId:dviId,dvhId:dvhId, dhcId:dhcId,state:{isSrcSet:true,bpUsed:-1},interactionData:{applyZoomFix:false},};dvhDriObj={id:dvhId,idt:C_DVH,children:[],loadType:'none',isDone :true,loadTypeData:{},rootId:dviId,state:{isSrcSet:true,bpUsed:-1},actions:{carouselH:{data:{padWidth:padWidth}}}};dhcDriObj={id:dhcId,idt :C_DHC,children:[],loadType:'none',isDone:true,loadTypeData:{},rootId:dviId,state:{isSrcSet:true,bpUsed:-1}};dviDriObj.children.push(dvhDriObj); dvhDriObj.children.push(dhcDriObj);$('#'+locId).append(zoomObj);$dvh=$('#'+dvhId);$dvh.scrollLeft(padWidth);D.sup.addObj(dviDriObj );D.sup.addObj(dvhDriObj);D.sup.addObj(dhcDriObj);setupCarouselH(dvhDriObj,$dvh[0]);$dvh.css('overflow-x','auto');$dhc= $('#'+dhcId);$dhc.children(':first-child').addClass('selected');return interfaceObj;}};} init();})(หน้าต่าง,เอกสาร,{}) ;รายละเอียด https://www.belk.com/p/oscar-de-la-renta-moderate-cat-eye-sunglasses/2601684BLKOSS1365.html $42.0042
$33.60 หลังคูปอง
เพิ่มคูปอง 20% BUNNYHOP
จบ 4/2รายละเอียด
"; } อื่น { if (data.hasOwnProperty("coupons") && 0 < data.coupons.length) { brStatus = getCookie(cookieName); c = pickCoupon(data.coupons, brStatus); if (null !== c ) { วันที่ = วันที่ใหม่(c.endDate); isCouponInSession = sessionCoupons.indexOf(c.couponCode) > -1 ? true : เท็จ ถ้า (c.promoPrice.min === c.promoPrice.max) { ราคา = d + FormatPrice(c.promoPrice.min); afterpayPrice = c.promoPrice.min.toString(); } อื่น { ราคา = d + FormatPrice(c.promoPrice.min) + " - " + d + FormatPrice(c.promoPrice. สูงสุด); afterpayPrice = c.promoPrice.max.toString(); } cs += "
"; cs +="
"; cs +="
"; if (cardTierMessageOnly && c.isTier) { href = $(".quickview-quickview .product-brand a").attr("href"); cs +="
" +qvMsg1 + "" + qvMsg2 + " " +qvMsg3 + "
"; } อื่น { cs +="
"; if (จริง === c.hidePrice) { cs +="" + ซ่อนข้อความราคา + " "; pricePost = PPW; } อื่น { cs +="" + ราคา + " "; } cs +="" + ราคาโพสต์ + "
"; cs +="
"; if (!isCouponInSession) { cs +="" + disPre + c.cpnDiscount + disPost + c.couponCode.toUpperCase() + " "; } อื่น { cs +="เพิ่ม " + c.couponCode.toUpperCase() + " "; } cs +="
"; cs +="
" + (c.isTier ? altPre : "") + datePre + (date.getMonth() + 1) + "/" + (date.getDate()) + "" + ข้อความลิงค์ + "
"; ถ้า (isAfterpayEnabled) { cs +="
"; } } คส +="
"; } } } } กลับ cs;}(function(){var c=document.querySelector('.vjs_price-with-coupon'),p=(null!==c?c.parentNode:null);if( null!==p)p.removeChild(c);})();(function (){var c=document.querySelector("#replace-price-with-coupon"),p=(null!==c ?c.parentNode:null),d=document.createElement("DIV"),f=document.createDocumentFragment(),s=BuildPriceWithCoupon({"coupons":[{"promotionid":"62245009-46335518-01", "couponCode":"BUNNYHOP","displayRequirement":["None"],"hidePrice":false,"promoPrice":{"min":"33.60","max":"33.60"},"cpnDiscount": "20","endDate":"04/02/2023 23:59 น."","isTier":false},{"promotionid":"62245035-28545914-01","couponCode":"SPRINGBREAK","displayRequirement ":["ใดๆ"],"hidePrice":false,"promoPrice":{"min":"31.50","max":"31.50"},"cpnDiscount":"25","endDate":"04 /02/2023 23:59 น."}],"isAfterpayEligible":true,"isAfterpayEnabled":true},false);d.innerHTML=s; while(0
โปรโมชั่น "; return html;}function copyObjectNameMapDefault(sourceName, sourceValue) { return sourceName;}function copyObject(d, s, nameMap) { var j, k, js, stack = []; if ("function" !== typeof nameMap) { nameMap = copyObjectNameMapDefault; } stack.push({s: s, d: d}); while (0 < stack.length) { p = stack.pop(); s = p.s; d = p.d; for (j in s) { js = nameMap(j, s[j]); if ("string" === typeof s[j]) { d[js] = s[j]; } else { if ("object" === typeof s[j]) { if (Array.isArray(s[j])) { if (U === typeof d[js]) { d[js] = []; } for (k = 0; k < s[j].length; k++) { if ("string" === typeof s[j][k]) { d[js][k] = s[j][k]; } else { if ("object" === typeof s[j][k]) { if (U === typeof d[js][k]) { if (Array.isArray(s[j][k])) { d[js][k] = []; } else { d[js][k] = {}; } } } } stack.push({s: s[j][k], d: d[js][k]}); } } else { if (U === typeof d[j]) { d[js] = {}; } stack.push({s: s[j], d: d[js]}); } } else { d[js] = s[j]; } } } }}function mergeObjects() { var i = 0, n, r = {}, p; for (i = 0; i < arguments.length; i++) { n = arguments[i]; copyObject(r, n); } return r;}function persist() { var _self = this; if (!coms.hasOwnProperty(_self.instance.tagId)) { coms[_self.instance.tagId] = _self; }}function debug(v) { if (U !== typeof v) { if (B !== typeof v) { v = false; } DEBUG = v; } return DEBUG;}function insert(sId, cName, cData, cConfig) { var e = N, instance, html = "", css = "", id, ne, f; e = D.getElementById(sId); if (N === e) { log("script tag id:", sId, "NOT found!"); return; } if (cNames.hasOwnProperty(cName)) { var id = createId("COM"); instance = newInstance(cName, cData, cConfig); instance.instance = {tagId: id}; html += instance.html(); f = D.createDocumentFragment(); ne = D.createElement("DIV"); ne.setAttribute("id", id); if (E !== instance.component["class"]) { ne.setAttribute("class", instance.component["class"]); } ne.innerHTML = html; f.appendChild(ne); e.parentElement.replaceChild(f, e); } else { log("cName:", cName, "NOT found!"); if (F === typeof nextInsert) { nextInsert(sId, cName, cData, cConfig); } }}function attach(sId, tId, cName, cData, cConfig) { var cObj = N, cElem = N; cElem = document.getElementById(tId); if (N !== cElem) { cObj = newInstance(cName, cData, cConfig); if (N !== cObj) { cObj.instance = {tagId: tId}; if (cObj.hasOwnProperty("attach") && F === typeof cObj.attach) { cObj.attach(); } } } else { log("ERROR:", "DOM Element for Component", cName, "with tagId", tId, "NOT found!"); } document.getElementById(sId).remove();}function update(cId, cData) { var cInstance = null; if (coms.hasOwnProperty(cId)) { cInstance = coms[cId]; cInstance.update(cData); } else { log("cId:", cId, "not found!"); }}function getComs() { return coms;}function isNull(v) { return N === v;}function isUndefined(v) { return U === typeof v;}function isBoolean(v) { return B === typeof v;}function isFunction(v) { return F === typeof v;}function isNumber(v) { return "number" === typeof v;}function isString(v) { return S === typeof v;}function isStringEmpty(v) { return E === v;}function isArray(v) { return Array.isArray(v);}function isArrayEmpty(v) { return v.length ? false : true;}function isObject(v) { return O === typeof v;}function isObjectEmpty(v) { var i, c = true; for (i in v) { c = false; break; } return c;}function isObjectNotEmpty(v) { return !isObjectEmpty(v);}function isObjectAndEmpty(v) { return isObject(v) && isObjectEmpty(v);}function isObjectAndNotEmpty(v) { return isObject(v) && isObjectNotEmpty(v);}function isBaseObject(v) { return O === typeof v && N !== v && "Object" === v.constructor.name;}function isBaseObjectAndEmpty(v) { return isBaseObject(v) && isObjectEmpty(v);}function isBaseObjectAndNotEmpty(v) { return isBaseObject() && isObjectNotEmpty(v);}function isEmpty(v) { var i, c; return isNull(v) || isUndefined(v) || isStringEmpty(v) || (isObject(v) && isObjectEmpty(v)) || (isArray(v) && isArrayEmpty(v));}function toBoolean(v, d) { var r = d; if (isUndefined(d) || !isBoolean(d)) { d = false; } if (isNaN(v)) { r = String(!d).toUpperCase() === v.toUpperCase() ? !d : d; } else { r = Number(!d) === v ? !d : d; } return r;}function getUrlParm(url, name) { var str = url, s = str.indexOf(name + "="), e, p, value = ""; if (-1 !== s) { e = str.indexOf("&", s); if (-1 === e) { e = str.length; } p = str.substring(s, e).split("="); if (1 < p.length) { value = p[1]; } } return value;}function addUrlParms(url, parms) { const q = "?", a = "&"; var sep = q, pos = -1, p; if (!url) { url = ""; } pos = url.lastIndexOf(q); if (-1 !== pos) { if (url.length - 1 === pos) { sep = E; } else { sep = a; } } for (p in parms) { if (U !== typeof parms[p] && E !== parms[p]) { url += sep + p + "=" + parms[p]; sep = a; } } return url;}function objPropDef(o, pn, dv, vt, iv, npn) { var i = 1; function isMatch(c, cw, isTyped) { var ret = false, i; if (isFunction(cw)) { ret = cw(c); } else { if (isTyped) { c = typeof c; } if (Array.isArray(cw)) { for (i = 0; i < cw.length; i++) { if (c === cw[i]) { ret = true; break; } } } } return ret; } function isDefault(o, p) { var ret = false; if (o.hasOwnProperty(p) && o[p] !== dv) { if (!isMatch(o[p], vt, true) || isMatch(o[p], iv, false)) { ret = true; } } else { ret = true; } return ret; } if (isString(npn)) { if (isDefault(o, npn)) { if (isDefault(o, pn)) { o[npn] = dv; } else { o[npn] = o[pn]; } } delete o[pn]; } else { if (isDefault(o, pn)) { o[pn] = dv; } }}function jsonClone(json) { const FS = "\u0192s", functions = []; var clone; function replacer(n, v) { var nv = {}; if (isFunction(v)) { nv[FS] = functions.push(v) - 1; v = nv; } return v; } function reviver(n, v) { if (isBaseObject(v) && v.hasOwnProperty(FS)) { v = functions[v[FS]]; } return v; } if (json) { clone = JSON.parse(JSON.stringify(json, replacer), reviver); } return clone;}function jsonCompare(a, b) { return (JSON.stringify(a) === JSON.stringify(b));}function performJsonAjaxRequests(requests, success, failure, requestsData, simulateSendFunc, simTime) { const MIME_TYPE = "application/json"; var reqs = jsonClone(requests), name, ready, rn, co, results = {}, pubsub = {}, isSim = isFunction(simulateSendFunc), allDone = false; requestsData = jsonClone(isBaseObject(requestsData) ? requestsData : {}); if (!isNumber(simTime)) { simTime = 0; } function defaultSimulateSendFunc(request, data, handle) { handle({type: "load", currentTarget: {responseText: JSON.stringify(data)}}); } if (!isSim) { simulateSendFunc = defaultSimulateSendFunc; } function sub(name, func, data) { if (!pubsub[name]) { pubsub[name] = []; } pubsub[name].push({func: func, data: data}); } function pub(name, data) { var subs = pubsub[name], i, s; if (subs) { for (i = 0; i < subs.length; i++) { s = subs[i]; setTimeout(function (s) { s.func(name, data, s.data); }, 0, s); } } } function can(name, func) { var subs = pubsub[name], i, s; if (subs) { for (i = 0; i < subs.length; i++) { s = subs[i]; if (func === s.func) { subs.splice(i, 1); break; } } } } function isRequestReady(ready) { var ret = true, i; function isReadyAnds(ready) { var ret = true, r; if (Object.keys(ready).length) { for (r in ready) { if (results[r]) { if (ready[r] !== results[r].success) { ret = -1; break; } } else { ret = false; break; } } } return ret; } function isReadyOrs(ready) { var ret = true; if (ready.length) { for (i = 0; i < ready.length; i++) { ret = isReadyAnds(ready[i]); if (-1 < ret) { if (ret) { break; } } else { ready.splice(i--, 1); } } if (0 > ret) { if (0 < i) { ret = false; } else { ret = -1; } } } else { ret = -1; } return ret; } if (!isUndefined(ready) && !isNull(ready)) { if (isArray(ready)) { ret = isReadyOrs(ready); } else { if (isObject(ready)) { ret = isReadyAnds(ready); } else { if (isFunction(ready)) { ret = ready(jsonClone(results)); } else { if (isBoolean(ready)) { ret = ready ? true : -1; } } } } } return ret; } function mapData(request, resultsData) { var map = request.map, requestData = requestsData[request.name], pName, resName, resResults; if (map && isFunction(map)) { if (!requestData) { requestData = requestsData[request.name] = {}; } map(requestData, jsonClone(resultsData)); } else { if (isObjectAndNotEmpty(request.subscribes) && isObjectNotEmpty(resultsData) && isObject(requestData)) { for (pName in requestData) { if (isUndefined(requestData[pName])) { for (resName in resultsData) { resResults = resultsData[resName].out; if (resResults.hasOwnProperty(pName) && !isUndefined(resResults[pName])) { requestData[pName] = resResults[pName]; } } } } } } } function isRetry(retry, status, type) { var ret = false, wt; function isCount(retry) { var ret = false; if (isNumber(retry.max)) { if (0 < retry.max) { if (!retry.count) { retry.count = 0; } if (retry.count < retry.max) { ret = true; } } } else { ret = true; } return ret; } function isStatus(s, status) { var ret = false; if (isNumber(s)) { if (status === s) { ret = true; } } else { if (isArray(s)) { if (-1 !== s.indexOf(status)) { ret = true; } } } return ret; } if (retry) { if (isCount(retry)) { if (isObject(retry.when)) { if (retry.when.status) { ret = isStatus(retry.when.status, status); } if (!ret && (wt = retry.when[type])) { if (wt) { if (isBoolean(wt)) { ret = wt; } else { ret = isStatus(retry.when[type], status); } } } } else { ret = true; } } } return ret; } function makeRequest(request, data) { const MG = "GET", MP = "POST", cache = jsonAjaxResponseCache, pending = jsonAjaxInProgressRequests; var n, req = new XMLHttpRequest(), rname = request.name; function sets(target, method, sets) { var name; if (sets) { for (name in sets) { target[method](name, sets[name]); } } } function handle(e, fromCache) { var result, target = e.currentTarget || e.target || e.srcElement, responseText = target.responseText, reqStatus = isSim ? e.status : req.status; function isSuccess(e, r) { var ret = true; if (isFunction(request.isSuccess)) { ret = request.isSuccess(e, r); } return ret; } if (isRetry(request.retry, reqStatus, e.type)) { setTimeout(makeRequest, 0, request, data); } else { if (pending.hasOwnProperty(request.url) && pending[request.url].request === request) { delete pending[request.url]; } result = results[rname] = {}; result.fromCache = (!!fromCache); if (requestsData[rname]) { result.in = requestsData[rname]; } if ("load" === e.type) { try { result.out = JSON.parse(responseText); if (isSuccess(e, result.out)) { if (!fromCache) { saveResponse(request, data, e); } result.success = true; if (isFunction(request.success)) { setTimeout(request.success, 0, results); } } else { result.success = false; result[e.type] = req.status; result.event = e; } } catch (e) { result.success = false; result.required = request.required; result.parse = "Invalid Json Body!"; result.event = e; if (isFunction(request.failure)) { setTimeout(request.failure, 0, results); } } } else { result.success = false; result.required = request.required; result[e.type] = req.status; result.event = e; if (isFunction(request.failure)) { setTimeout(request.failure, 0, results); } } pub(rname, request); } } function buildCacheKey(request, data) { return request.url + (data ? JSON.stringify(data) : E); } function saveResponse(request, data, e) { if (request.cache && request.url && "" !== request.url) { log("storing response to cache:", request, e); cache[buildCacheKey(request, data)] = {e: e, data: data, time: new Date().getTime()}; } } function isCached(request, data) { const time = new Date().getTime(), cacheKey = buildCacheKey(request, data); var ret = false, cacheValue; if (request.cache && cache.hasOwnProperty(cacheKey)) { cacheValue = cache[cacheKey]; log("request.cache:", request.cache, "cacheValue.time:", cacheValue.time, "+=", cacheValue.time + request.cache, "time:", time); if (0 > request.cache || cacheValue.time + request.cache > time) { log("response cache used, request:", request, "response:", jsonClone(cacheValue.e)); handle(cacheValue.e, true); ret = true; } else { log("deleting cache for request:", request, jsonClone(cache[request._url])); delete cache[cacheKey]; } } return ret; } function addHandlers(req) { req.addEventListener("load", handle); req.addEventListener("error", handle); req.addEventListener("abort", handle); req.addEventListener("timeout", handle); } if (request.url && "" !== request.url) { if (pending.hasOwnProperty(request.url) && jsonCompare(pending[request.url].data, data)) { log("batch pending: found match!", request.url, "hold!"); addHandlers(pending[request.url].req); request.held = true; } else { if (!request.method) { request.method = MG; } if (MG === request.method) { request._url = addUrlParms(request.url, data); } else { request._url = request.url; } if (!isCached(request, data)) { if (isSim) { setTimeout(simulateSendFunc, 0, request, data, handle); } else { req.overrideMimeType("application/json"); addHandlers(req); sets(req, "addEventListener", request.handlers); req.open(request.method, request._url); sets(req, "setRequestHeader", request.headers); if (0 < request.timeout) { req.timeout = request.timeout; } if (MG === request.method) { try { req.send(); pending[request.url] = {request: request, data: data, req: req}; } catch (e) { log("req.send() Exception:", e); } } else { if (MP === request.method) { req.setRequestHeader("Content-Type", "application/json"); try { req.send(JSON.stringify(data)); pending[request.url] = {request: request, data: data, req: req}; } catch (e) { log("req.send() Exception:", e); } } else { log("Invalid request method.", "request:", request); } } } } } } else { setTimeout(defaultSimulateSendFunc, 0, request, data, handle); } } function performRequest(request, requestsData) { var isReady = false; isReady = isRequestReady(request._ready); if (-1 === isReady) { results[request.name] = {success: false, ready: request._ready}; if (isFunction(request.failure)) { setTimeout(request.failure, 0, results); } pub(request.name, request); } else { if (isReady) { mapData(request, results); makeRequest(request, requestsData[request.name]); } } } function startBatch(requests, requestsData) { var name, i, keys, request; function extractSubscribes(ready) { var subs = {}, i; function add(obj) { var keys = obj, i; if (!isArray(obj)) { keys = Object.keys(obj); } for (i = 0; i < keys.length; i++) { subs[keys[i]] = true; } } if (ready) { if (isArray(ready)) { for (i = 0; i < ready.length; i++) { add(ready[i]); } } else { if (isObject(ready)) { add(ready); } else { if (isFunction(ready)) { if (ready.subs) { add(ready.subs); } else { add(requests); } } } } } return subs; } function publish(name, pubData, subData) { can(name, publish); performRequest(subData, requestsData); } function checkDone(name, pubData, subData) { var isDone = true, isSuccess = true; if (allDone) { return; } for (name in requests) { if (!results[name]) { isDone = false; break; } } if (isDone) { allDone = true; pubsub = {}; for (name in requests) { if (requests[name].required && !results[name].success) { isSuccess = false; break; } } if (isSuccess) { success(results, requests); } else { failure(results, requests); } } } for (name in requests) { request = requests[name]; request.name = name; if (!isNumber(request.cache)) { request.cache = 0; } objPropDef(request, "required", true, ["boolean"]); if (request.hasOwnProperty("ready")) { request._ready = jsonClone(request.ready); } request.subscribes = extractSubscribes(request._ready); keys = Object.keys(request.subscribes); for (i = 0; i < keys.length; i++) { sub(keys[i], publish, request); } sub(name, checkDone, requests[name]); } for (name in requests) { performRequest(requests[name], requestsData); } } startBatch(reqs, requestsData);}function pad(val, count, str) { var i; val = "" + val || ""; count = count || 0; str = "" + str || ""; if (0 > count) { count = -count; for (i = val.length; i < count; i++) { val = val + str; } } else { for (i = val.length; i < count; i++) { val = str + val; } } return val;}function createId(type) { var c = config.ids, pre = c.prefix, sep = c.separator, td = c.type, sd = c.system, system, date = new Date(), id; type = onEtoVal(type, td); type = pad(type, -3, c.pad).substr(-0, 3).toUpperCase(); system = pad(sd, -3, c.pad).substr(-0, 3).toUpperCase(); id = pre + sep + type + sep + system + pad(date.getTime(), 16, "0") + pad(nextId++, 16, "0"); return id;}function onNtoE(v) { return N === v ? E : v;}function onEtoVal(v, val) { return E === v ? val : v;}function log() { var d, s, i; if (!DEBUG) { return; } d = "componentManager:"; s = "console.log(d"; for (i = 0; i < arguments.length; i++) { s += ",arguments[" + i + "]"; } s += ");"; eval(s);}function newInstance(cName, cData, cConfig) { var instance = null, template = {}; if (U === typeof cConfig) { cConfig = {}; } if (cNames.hasOwnProperty(cName)) { instance = {}; template = cNames[cName]; copyObject(instance, template); instance.data = mergeObjects(instance.default.data, cData); instance.config = mergeObjects(instance.default.config, cConfig); if (!template.hasOwnProperty("class")) { template["class"] = {}; } instance["class"] = template["class"]; } else { log("ERROR:", "Definition for component", cName, "NOT found!"); } return instance;}function buildStyle(style, parents) { const E = "", S = " "; var a, p, str = "", sep = "", pre = style.pre, sel = style.sel, post = style.post, attr = style.attr; function buildAttrString(attr) { var a, str = ""; for (a in attr) { str += a + ":" + attr[a] + ";"; } return str; } if (isEmpty(attr) || !isObject(attr) && !isArray(attr)) { return E; } if (isEmpty(parents)) { parents = E; } if (isEmpty(pre)) { pre = E; } if (isEmpty(sel)) { sel = E; } if (isEmpty(post)) { post = E; } if (isString(sel)) { str += parents + S + pre + (isStringEmpty(pre) ? E : S) + sel + (isStringEmpty(sel) ? E : S) + post; } else { if (isArray(sel)) { for (p = 0; p < sel.length; p++) { str += sep + parents + S + pre + (isStringEmpty(pre) ? E : S) + sel[p] + (isStringEmpty(sel[p]) ? E : S) + post; sep = ","; } } } if (isStringEmpty(str)) { return E; } str += "{"; if (isArray(attr)) { for (p = 0; p < attr.length; p++) { str += buildAttrString(attr[p]); } } else { str += buildAttrString(attr); } str += "}"; return str;}function buildTagString(tag) { var tstr = "", astr = "", cstr = "", a, p; if (tag.hasOwnProperty("content") && isString(tag.content)) { cstr += tag.content; } else { if (isArray(tag.content)) { } } if (tag.hasOwnProperty("name") && isString(tag.name) && !isStringEmpty(tag.name)) { if (tag.hasOwnProperty("attr") && isObject(tag.attr)) { for (a in tag.attr) { astr += " " + a + "=\"" + tag.attr[a] + "\""; } } if (tag.hasOwnProperty("prop") && isObject(tag.prop)) { for (p in tag.prop) { if (tag.prop[p]) { astr += " " + p; } } } tstr += "<" + tag.name + astr + ">" + cstr + "" + tag.name + ">"; } return tstr;}function buildComponentTag(contentFunc) { const _self = this; var tagId, html = ""; if (!_self.instance || !_self.instance.tagId) { tagId = createId("COM"); _self.instance = {tagId: tagId}; } else { tagId = _self.instance.tagId; } html += ""; ถ้า (contentFunc) { html ++ contentFunc.call(_self); } html += "
"; return html;}function copyObjectNameMapDefault(sourceName, sourceValue) { return sourceName;}function copyObject(d, s, nameMap) { var j, k, js, stack = []; if ("function" !== typeof nameMap ) { nameMap = copyObjectNameMapDefault; } stack.push({s: s, d: d}); while (0 < stack.length) { p = stack.pop(); s = p.s; d = p.d; for (j ใน s) { js = nameMap(j, s[j]); if ("string" === typeof s[j]) { d[js] = s[j]; } อื่น { if ("object" = == ประเภทของ s[j]) { ถ้า (Array.isArray(s[j])) { ถ้า (U === ประเภทของ d[js]) { d[js] = []; } สำหรับ (k = 0; k < s[j].length; k++) { ถ้า ("สตริง" === ประเภทของ s[j][k]) { d[js][k] = s[j][k]; } อื่น { ถ้า ("วัตถุ" === ประเภทของ s[j][k]) { ถ้า (U === ประเภทของ d[js][k]) { ถ้า (Array.isArray(s[j][k])) { d [js][k] = []; } อื่น { d[js][k] = {}; } } } } stack.push({s: s[j][k], d: d[js][ k]}); } } อื่น { if (U === typeof d[j]) { d[js] = {}; } stack.push({s: s[j], d: d[js]} ); } } อื่น { d[js] = s[j]; } } } }}ฟังก์ชัน mergeObjects() { var i = 0, n, r = {}, p; for (i = 0; i < อาร์กิวเมนต์ ความยาว i++) { n = ข้อโต้แย้ง[i]; copyObject(r, n); } ส่งคืน r;} ฟังก์ชันคงอยู่ () { var _self = นี่; ถ้า (!coms.hasOwnProperty(_self.instance.tagId)) { coms[_self.instance.tagId] = _self; }}ฟังก์ชัน Bopis_html() { const _self = สิ่งนี้; var f, str = ""; f = _self.config.feature; ถ้า (_self.config.features.hasOwnProperty(f)) { _self.feature = _self.config.features[f]; ถ้า (_self.hasOwnProperty(f) && _self.isFunction(_self[f])) { str += _self[f](); } } return str;}function Bopis_getDeliveryConfigBatch(โทรกลับ) { const _self = this; const SP = "sitePreferences", DC = "deliveryConfig"; const AS = [S], AB = [B]; ชุด const = {}; ชุด [SP] = {"url": _self.baseAjaxUrl + "SitePreferences-GetPreferencesJSON?prefcontext=deliveryOptions", "แคช": 60000}; ชุด [DC] = {"url": _self.baseAjaxUrl + "Stores-DeliveryConfig", "แคช": 1800000, สำเร็จ: ฟังก์ชัน (ผลลัพธ์) { ถ้า (results.deliveryConfig.success && results.deliveryConfig.out.sddZipCode) { ถ้า (window.libs && window.libs.notify) { window.libs.notify.api.fire ("dc-done", {sddZip: results.deliveryConfig.out.sddZipCode}); } } }}; _self.performJsonAjaxRequests (แบทช์ ฟังก์ชัน (r, rq) { var d, n, data = {}; ฟังก์ชันผสาน (d, s) { var n; สำหรับ (n ใน s) { d[n] = s[n] ; } } ผสาน(ข้อมูล, r[SP].out); ผสาน(ข้อมูล, r[DC].out); _self.objPropDef(ข้อมูล, "storeId", E, AS); _self.objPropDef(ข้อมูล, "zipCode ", E, AS); _self.objPropDef(ข้อมูล, "sddZipCode", E, AS); _self.objPropDef(ข้อมูล, "StoreInventoryService", "dom", AS, null, "storeInvService"); _self.objPropDef(ข้อมูล , "FIND_IN_STORE_ENABLE", _self.default.data.fisEnabled, AB, null, "fisEnabled"); _self.objPropDef(ข้อมูล, "enableStorePickUp", _self.default.data.bopisEnabled, AB, null, "bopisEnabled"); _self .objPropDef(ข้อมูล, "enableSameDayDeliveryPDP", _self.default.data.sddEnabled, AB, null, "sddEnabled"); _self.objPropDef(ข้อมูล, "useSFCCforStoreInv", เท็จ, AB, null, "storeInvSfccOnly"); objPropDef(ข้อมูล , "BOPISPickupReadyHours", 4, ["number"], null, "readyHours"); if (_self.isFunction(callback)) { ลอง { callback(data); } catch (e) { log("Exception:", e); } } }, ฟังก์ชัน (r) { บันทึก ("getDeliveryConfigBatch ล้มเหลว: ผลลัพธ์:", r); });}ฟังก์ชัน Bopis_getStoresByZipPidBatch (pid, orin, zip, sddZip, sddStoreId, โทรกลับ) { const _self = this; const prod = "www.belk.com", dev = "www.belkdev.com"; var โฮสต์ = ผลิตภัณฑ์; ถ้า (prod !== window.location.host) { โฮสต์ = dev; } const batch = {deliveryConfig: {url: _self.baseAjaxUrl + "Stores-DeliveryConfig", "cache": 1800000, จำเป็น: เท็จ, สำเร็จ: ฟังก์ชัน (ผลลัพธ์) { ถ้า (results.deliveryConfig.success && results.deliveryConfig.out .sddZipCode) { ถ้า (window.libs && window.libs.notify) { window.libs.notify.api.fire ("dc-done", {sddZip: results.deliveryConfig.out.sddZipCode}); } } }}, storesCall: {url: _self.baseAjaxUrl + "Stores-GetStoresByZip", "cache": 60000, จำเป็น: false}, inventoryCall: {url: "https://" + host + "/inventory/" + _self.data.storeInvService, วิธีการ: "POST", จำเป็น: เท็จ, "แคช": 60000, หมดเวลา: 3000, พร้อม: {storesCall: จริง}, แผนที่: ฟังก์ชัน (ปลายทาง, ผลลัพธ์) { แหล่งที่มาของ const = results.storesCall .ออก; var ฉัน; dest.stores = []; สำหรับ (i = 0; i < source.length; i++) { dest.stores[i] = source[i].storeId; } }, isSuccess: ฟังก์ชัน (e, r) { var ret = จริง; ถ้า (r.statusCode) { log("statusCode ในการตอบกลับสินค้าคงคลัง:", r); ret = เท็จ; } if (!r.hasOwnProperty(pid)) { log("missing pid", pid, " ในการตอบกลับสินค้าคงคลัง:", r); ret = เท็จ; } กลับ ret; }}, backupCall: {url: _self.baseAjaxUrl + "StoreInventory-RedesignInventory", "cache": 60000, จำเป็น: false, พร้อม: [{storesCall: false}, {inventoryCall: false}]}, successNode: {พร้อม: [{storesCall: จริง, สินค้าคงคลังการโทร: จริง}, {backupCall: จริง}], ต้องการ: จริง, แผนที่: ฟังก์ชัน (ปลายทาง, r) { var id, n, o; ถ้า (r.deliveryConfig.success) { สำหรับ (n ใน r.deliveryConfig.out) { ปลายทาง [n] = r.deliveryConfig.out [n]; } objPropDef(ปลายทาง, "BOPISPickupReadyHours", 4, ["number"], null, "readyHours"); } ถ้า (r.storesCall.success && r.inventoryCall.success) { dest.stores = r.storesCall.out; สำหรับ (n = 0; n < dest.stores.length; n++) { dest.stores[n].id = dest.stores[n].storeId; ลบ dest.stores[n].storeId; } ถ้า (r.inventoryCall.out[pid]) { o = r.inventoryCall.out[pid]; สำหรับ (n = 0; n < dest.stores.length; n++) { id = dest.stores[n].id; ถ้า (o.hasOwnProperty(id)) { dest.stores[n].quantity = o[id]; ถ้า (0 " + _self.promoMsg + ""; } ฟังก์ชั่น build() { var str = "", isStore = !_self.isObjectEmpty(_self.data.store), bopisPromoAssetID = window.SitePreferences.BOPIS_CLEARANCE_COUPON_ENABLED ? "bopis-clearance-promo" : "bopis-promo-messaging "; str +="กรองตามรถกระบะที่มีในร้านค้าของคุณ " + _self.config.messaging.bopis + _self.pickupTodayOrTomorrow(); ถ้า (1 < _self.selectedStoreIds.length) { storeName = _self.config.messaging.atStoresX.replace("X", _self.selectedStoreIds.length); } อื่น { ถ้า (isStore) { storeName = _self.data.store.name; } } str += " " + _self.buildStoreSelectionToggle(storeName); str += " "; str +=" "; str +=""; if (!_self.isStringEmpty(_self.promoMsg)) { str += buildBopisPromoMsg(); } อื่น { _self.getBopisPromoMessaging(bopisPromoAssetID, ฟังก์ชัน (ข้อมูล) { ถ้า (data.hasOwnProperty("isOnline") && data.isOnline && data.hasOwnProperty("assetContent") && !_self.isStringEmpty(data.assetContent)) { _self.promoMsg = data.assetContent; $("#" + _self.instance.tagId + " .promo").html(buildBopisPromoMsg ()); } }); } str +=" "; const newMoveSel = "#bopis-pickup"; const oldMoveSel = "#secondary"; var moveToSel = newMoveSel; if (!window.facetNav || !window.facetNav.nav) { moveToSel = oldMoveSel; } var moveTryCount = 0; var toi = null; function startMoveTo(obj, toSel) { if (toi) { clearTimeout(toi); toi = null; } moveTo(obj, toSel); } function moveTo(obj, toSel) { var to = document.querySelector(toSel), plp; if (!_self.isNull(to)) { to.prepend(obj); _self.addStoreSelectionHandlers(); switch (toSel) { case oldMoveSel: case newMoveSel: $("#results-products").css({width: "auto"}); $(".bopis-filter-options").css({display: "none"}); plp = comp.querySelector(".plp"); plp.classList.add("facet"); if (oldMoveSel === moveToSel) { plp.classList.add("wrap"); } break; default: $("#results-products").css({width: ""}); $(".bopis-filter-options").css({display: ""}); plp = comp.querySelector(".plp"); plp.classList.remove("facet"); if (oldMoveSel === moveToSel) { plp.classList.remove("wrap"); } } } else { if (newMoveSel === moveToSel) { moveTryCount++; if (moveTryCount > 20) { moveToSel = oldMoveSel; toSel = moveToSel; } } toi = setTimeout(moveTo, 50, obj, toSel); } } var noMove = true; var comp = document.querySelector("#" + _self.instance.tagId); if (_self.feature.moveToLeftOnDesktop) { mm.addListener(function bpchange(e) { var comp = document.querySelector("#" + _self.instance.tagId); if (!comp) { mm.removeListener(bpchange); if (toi) { clearTimeout(toi); toi = null; } return; } if (noMove !== e.matches) { noMove = e.matches; if (noMove) { startMoveTo(comp, ".bopis-filter-options"); } else { startMoveTo(comp, moveToSel); } } }); noMove = mm.matches; } if (!_self.isNull(comp)) { $(comp).find(".plp .center-vert").html(str); _self.addStoreSelectionHandlers(); if (!noMove) { startMoveTo(comp, moveToSel); } } } function getStores(zip) { var found = {}; if (!_self.isStringEmpty(zip)) { _self.getStoresByZip(zip, function (zip, data) { var i; _self.log("getStoresByZip with zip:", zip, " returned data:", data); if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.zip = zip; _self.stores = data.stores; if (data.hasOwnProperty("readyHours") && _self.isNumber(data.readyHours)) { _self.readyHours = data.readyHours; } if (data.hasOwnProperty("pickupToday") && _self.isBoolean(data.pickupToday)) { _self.pickupToday = data.pickupToday; } if (data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } if (0 === _self.selectedStoreIds.length) { if (!_self.isArrayEmpty(_self.stores)) { found = _self.findFirstBopisStore(); } if (!_self.isUndefined(found.store)) { _self.data.store = found.store; _self.selectedStoreIds.push(found.store.id); } else { _self.data.store = {}; } } else { if (!_self.isArrayEmpty(_self.stores)) { for (i = 0; i < _self.selectedStoreIds.length; i++) { found = _self.findStore(_self.selectedStoreIds[i]); if (!found.hasOwnProperty("store") || !found.store.hasOwnProperty("bopis") || !found.store.bopis) { _self.selectedStoreIds.splice(i--, 1); } } found = {}; if (0 !== _self.selectedStoreIds.length) { found = _self.findStore(_self.selectedStoreIds[0]); } } if (found.hasOwnProperty("store") && found.store.hasOwnProperty("bopis") && found.store.bopis) { _self.data.store = found.store; } else { _self.data.store = {}; } } } build(); }); } else { _self.data.zip = zip; build(); } } urlStoreId = _self.getUrlParm(window.location.href, "storeId"); if (!_self.isStringEmpty(urlStoreId)) { ids = decodeURIComponent(urlStoreId); } else { if (window.hasOwnProperty("User") && window.User.hasOwnProperty("storeId") && !_self.isNull(window.User.storeId)) { ids = window.User.storeId; } } if (!_self.isStringEmpty(ids)) { ids = ids.split("|"); for (i = 0; i < ids.length; i++) { _self.selectedStoreIds.push(ids[i]); } } function closePopper(e) { var $t = $(e.target), $p; if (_self["class"].ignoreNextClosePopperSelf === _self) { _self["class"].ignoreNextClosePopperSelf = null; return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .as-link").length) { return; } if ("filterByStorePickup" === $t.attr("for")) { return; } $p = $t.closest("#" + _self.instance.tagId + " .popper"); if (0 === $p.length) { if (_self.isPopperOpen) { _self.hidePopper(); } } } window.libs.notify.api.request(["jquery-ready"], function () { const ENS = "click." + _self.component.class + ".popper"; var zip, $B = $("body"); $B.off(ENS); $B.on(ENS, closePopper); if (_self.isStringEmpty(_self.data.zip)) { _self.getDeliveryConfigBatch(function (data) { if (!_self.isObjectEmpty(data)) { _self.data.bopisEnabled = data.bopisEnabled; _self.data.findInStoreEnabled = data.fisEnabled; _self.data.storeId = data.storeId; if ("" !== data.zipCode) { zip = data.zipCode; getStores(zip); } else { getStores(_self.data.zip); } } else { build(); } }); } else { getStores(_self.data.zip); } }); document.addEventListener("brdata_ready", function (e) { const checked = (-1 !== window.location.href.indexOf("searchType=FreePickup")); _self.update({checked: checked}); }); str += ""; return str;}function Bopis_pdp() { const _self = this; const zipClass = "select-zip"; var valid, str = "", e, pid = "", zip = ""; valid = _self.validateData(_self.data); log("data valid:", valid); if (isUndefined(_self.config.messaging.bopis) || !isString(_self.config.messaging.bopis) || isStringEmpty(_self.config.messaging.bopis)) { _self.config.messaging.bopis = _self.default.config.messaging.bopis; } pid = _self.data.skuId; _self.objPropDef(_self.data, "skuOrin", "", ["string"]); orin = _self.data.skuOrin; zip = _self.data.zip; function closePopper(e) { if (_self.ignoreNextClosePopper) { _self.ignoreNextClosePopper = false; return; } var $t = $(e.target), $p = $t.closest("#" + _self.instance.tagId + " .popper"); if (0 !== $t.filter("#" + _self.instance.tagId + " .as-link").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rradio").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rcheckbox").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .vlabel").length) { return; } if ($t.hasClass("rradio")) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " #receive-option-pickup").length) { return; } if (0 === $p.length) { if (_self.isPopperOpen) { _self.hidePopper(); } } } function build() { var $C = $("#" + _self.instance.tagId); $C.find(".pdp").html(_self.buildPDP()); $C.find(".reserve-space").removeClass("reserve-space"); _self.addOutlineHandlers(); _self.addStoreSelectionHandlers(); _self.addPDPZipSelectionHandlers(); _self.addConnsZipSelectionHandler(); } function getStores(pid, orin, zip, sddZip, sddStoreId) { var found = {}; if (_self.isUndefined(pid)) { pid = ""; } if (_self.isUndefined(orin)) { orin = ""; } if (_self.isUndefined(zip)) { zip = ""; } if (_self.isUndefined(sddZip)) { sddZip = ""; } if (_self.isUndefined(sddStoreId)) { sddStoreId = ""; } if (!_self.isStringEmpty(pid) && (_self.data.findInStoreEnabled && !_self.isStringEmpty(zip) || !_self.isStringEmpty(sddZip) && !_self.isStringEmpty(sddStoreId))) { if (_self.isStringEmpty(sddStoreId)) { sddZip = ""; } else { if (_self.isStringEmpty(sddZip)) { sddStoreId = ""; } } _self.getStoresByZipPidBatch(pid, orin, zip, sddZip, sddStoreId, function (parms, data) { if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.skuId = parms.pid; _self.data.zip = parms.zip; if (data.hasOwnProperty("stores")) { _self.stores = data.stores; } if (data.hasOwnProperty("readyHours")) { _self.readyHours = data.readyHours; } if (data.hasOwnProperty("pickupToday")) { _self.pickupToday = data.pickupToday; } if (data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } if (data.hasOwnProperty("sddStore")) { _self.data.sddStore = data.sddStore; _self.data.sddStoreId = _self.data.sddStore.id; } if (data.hasOwnProperty("sameDay")) { _self.data.sddSameDay = data.sameDay; } if (!_self.isArrayEmpty(_self.stores)) { if (!_self.isNull(_self.data.preferredStoreId)) { found = _self.findStore(_self.data.preferredStoreId); } else { if (!_self.isObjectEmpty(_self.data.store)) { found = _self.findStore(_self.data.store.id); } } } if (!_self.isUndefined(found.store)) { _self.data.store = found.store; _self.data.storeId = _self.data.store.id; } else { if (0 < _self.stores.length) { _self.data.store = _self.stores[0]; _self.data.storeId = _self.data.store.id; } } if (_self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 === _self.data.store.quantity) { _self.searchResults = _self.searchStores(_self.stores); if (_self.searchResults.bopis) { _self.data.store = _self.searchResults.store; _self.data.storeId = _self.data.store.id; } } } build(); }); } else { _self.data.zip = zip; build(); } } window.libs.notify.api.request(["jquery-ready"], function () { const ENS = "click." + _self.component.class + ".popper"; var $B = $("body"); $B.off(ENS); $B.on(ENS, closePopper); if (_self.isStringEmpty(_self.data.zip)) { _self.getDeliveryConfigBatch(function (data) { if (!_self.isObjectEmpty(data)) { _self.data.bopisEnabled = data.bopisEnabled; _self.data.findInStoreEnabled = data.fisEnabled; _self.data.storeId = data.storeId; _self.data.preferredStoreId = _self.data.storeId; _self.data.zip = data.zipCode; _self.data.sddEnabled = data.sddEnabled; _self.data.sddZip = data.sddZipCode; _self.data.storeInvService = data.storeInvService; _self.data.storeInvSfccOnly = data.storeInvSfccOnly; if (_self.data.sddEnabled && E !== _self.data.sddZip) { _self.getSddStore(function (data) { if (!_self.isObjectEmpty(data) && data.hasOwnProperty("store") && !_self.isStringEmpty(data.store)) { _self.data.sddStoreId = data.store; } if (_self.isStoresDataNeeded()) { getStores(pid, _self.data.skuOrin, _self.data.zip, _self.data.sddZip, _self.data.sddStoreId); } else { build(); } }); } else { if (_self.isStoresDataNeeded()) { getStores(pid, _self.data.skuOrin, _self.data.zip); } else { build(); } } } else { build(); } }); } else { if (_self.isStoresDataNeeded()) { getStores(pid, _self.data.skuOrin, _self.data.zip, _self.data.sddZip, _self.data.sddStoreId); } else { build(); } } }); _self.persist(); str += ""; return str;}function Bopis_bag() { const _self = this; var valid, str = ""; if (!_self.class.hasOwnProperty("isClosePoppers")) { _self.class.isClosePoppers = false; } if (!_self.class.hasOwnProperty("ignoreNextClosePopperSelf")) { _self.class.ignoreNextClosePopperSelf = null; } _self.readyHours = 4; _self.pickupToday = false; if (!_self.isUndefined(_self.data.readyHours) && _self.isNumber(_self.data.readyHours)) { _self.readyHours = _self.data.readyHours; } if (!_self.isUndefined(_self.data.pickupToday) && _self.isBoolean(_self.data.pickupToday)) { _self.pickupToday = _self.data.pickupToday; } if (!_self.isString(_self.data.pickupDay)) { _self.data.pickupDay = ""; } if (isUndefined(_self.config.messaging.bopis) || !isString(_self.config.messaging.bopis) || isStringEmpty(_self.config.messaging.bopis)) { _self.config.messaging.bopis = _self.default.config.messaging.bopis; } if (!_self.data.hasOwnProperty("sessionZip")) { _self.data.sessionZip = ""; } function closePoppers(e) { var $t = $(e.target), ignoreSelf = null, pid = ""; if (0 !== $t.closest(".receive-option-pickup").length) { pid = $t.closest("." + _self.component.class).attr("id"); if ("" !== pid && coms.hasOwnProperty(pid)) { ignoreSelf = coms[pid]; } } if (!isNull(_self.class.ignoreNextClosePopperSelf)) { ignoreSelf = _self.class.ignoreNextClosePopperSelf; _self.class.ignoreNextClosePopperSelf = null; } _self.hidePoppers(ignoreSelf); } function build() { const ENS = "click." + _self.component.class + ".popper"; var $B = $("body"); var $C = $("#" + _self.instance.tagId); $C.find(".bag").html(_self.buildPDP()); $C.find(".reserve-space").removeClass("reserve-space"); _self.addStoreSelectionHandlers(); _self.addConnsZipSelectionHandler(); if (!_self.class.isClosePoppers) { $B.off(ENS); $B.on(ENS, closePoppers); _self.class.isClosePoppers = true; } } if (_self.data.productInStock) { _self.getDeliveryConfigBatch(function (data) { _self.data.storeInvService = data.storeInvService; _self.data.storeInvSfccOnly = data.storeInvSfccOnly; window.libs.notify.api.request(["jquery-ready"], function () { build(); }); }); _self.persist(); str += ""; } return str;}function Bopis_bagSddBanner() { const _self = this; const zipClass = "select-zip", sddM = _self.config.messaging.sdd; var str = ""; function formatPrice(p) { const regEx = /(\d(?=(\d{3})+\.))/g; return "$" + Number(p).toFixed(2).replace(regEx, "$1,"); } if (isNumber(_self.data.sddFee) || isString(_self.data.sddFee) && !isStringEmpty(_self.data.sddFee)) { _self.data.formattedSddFee = formatPrice(_self.data.sddFee); } else { _self.data.formattedSddFee = ""; } function closePopper(e) { if (_self.ignoreNextClosePopper) { _self.ignoreNextClosePopper = false; return; } var $t = $(e.target), $p = $t.closest("#" + _self.instance.tagId + " .popper"); if (0 !== $t.filter("#" + _self.instance.tagId + " .as-link").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rradio").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .rcheckbox").length) { return; } if (0 !== $t.filter("#" + _self.instance.tagId + " .vlabel").length) { return; } if ($t.hasClass("rradio")) { return; } if (0 === $p.length) { if (_self.isPopperOpen) { _self.hidePopper(); } } } function buildSddMessage() { var msg = "", fee = _self.isStringEmpty(_self.data.formattedSddFee) ? "" : "(" + _self.data.formattedSddFee + ") "; function day(sameDay) { var msg = ""; if (sameDay) { msg = "today"; } else { msg = "tomorrow"; } return msg; } function fill(msg) { var rX = /{{X}}/, rS = /{{S}}/, rC = /{{C}}/, rE = /{{E}}/; msg = msg.replace(rX, _self.data.sddItemCount); msg = msg.replace(rS, 1 < _self.data.sddItemCount ? "s" : ""); msg = msg.replace(rC, _self.data.sddCutoffTime + " ET"); msg = msg.replace(rE, _self.data.sddEndTime.replace(" ", "")); if (!_self.data.hasReducedEliteFee && 0 !== _self.data.sddFee) { return fee + msg; } else { return msg; } } if (_self.data.hasSdd) { if (_self.data.sddZip) { if (_self.data.sddStoreId) { if (0 < _self.data.sddItemCount) { if (_self.data.sddSelected) { if (_self.data.sddSameDay) { msg = fill(sddM.eligibleActive); } else { msg = fill(sddM.eligibleActiveCutoff); } } else { if (_self.data.hasPresale) { if (_self.data.sddSameDay) { msg = fill(sddM.eligiblePresale); } else { msg = fill(sddM.eligiblePresaleCutoff); } } else { if (_self.data.sddSameDay) { msg = fill(sddM.eligible); } else { msg = fill(sddM.eligibleCutoff); } } } } else { msg = _self.data.sddFee === 0 ? "(" + sddM.Free + ")" + " " + sddM.noSddInZip : fee + sddM.noSddInZip; } } else { msg = _self.data.sddFee === 0 ? "(" + sddM.Free + ")" + " " + sddM.zipNotEligible : fee + sddM.zipNotEligible; } } else { msg = _self.data.sddFee === 0 ? "(" + sddM.Free + ")" + " " + sddM.noZip : fee + sddM.noZip; } } else { } return msg; } function addSelectionHandlers() { var $C = $("#" + _self.instance.tagId); var $zObj = $C.find("." + zipClass), $in, len; $zObj.on("click", function (e) { if ($zObj.prop("checked")) { _self.showPopper(zipClass); $in = $C.find(".popper .search-by-zip .zip-code"); $in.focus(); len = $in.val().length; $in[0].setSelectionRange(len, len); } else { _self.hidePopper(); } e.stopPropagation(); }); var $cbObj = $C.find("#selectSdd"); $cbObj.on("click", function (e) { if ($cbObj.prop("checked")) { $("#sddSelected").val(true); } else { $("#sddSelected").val(false); } if (window.progress) { window.progress.show(); } $("input[type=\"hidden\"][name$=\"_updateCart\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateGiftBox\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateSSDZipCode\"]").remove(); $("#update-sddOption").click(); }); } function build() { var str = "", zipLabel = "", isTo = false, isDisabled = false, fee = _self.isStringEmpty(_self.data.formattedSddFee) ? "" : _self.data.formattedSddFee; if (_self.isStringEmpty(_self.data.sddZip)) { zipLabel = "Check My Area"; } else { zipLabel = _self.data.sddZip, isTo = true; } if (!_self.data.sddZip || !_self.data.sddStoreId || !_self.data.sddItemCount) { isDisabled = true; } str += ""; str +="
เลือก จัดส่งในวันเดียวกัน "; str +="
"; str +=" "; str +="
"; str +="" + (isDisabled ? "" : (_self.data.sddSameDay ? sddM.sameDayPre : sddM.nextDayPre)); str ++ isDisabled ? "" : _self.data.isEliteCustomer ? (0 === _self.data.sddFee ? sddM.elitesPre : _self.data.hasReducedEliteFee ? ค่าธรรมเนียม : "") : 0 === _self.data.sddFee ? sddM.Free : ""; str +=" " + sddM.title + (isDisabled ? "" : ( _self.data.hasReducedEliteFee && _self.data.isEliteCustomer && 0 !== _self.data.sddFee ? " " + sddM.forElites + " " : " ")) + _self.buildToolTip(_self.data.sddToolTip) + (isTo ? " ถึง " : "") + " "; str +=" " " + _self.buildSelectionToggle(zipClass, zipLabel); str ++ ""; str +=" "; str +=""; str += buildSddMessage(); str +="
"; str +="
"; str +="
"; return str; } if (_self.data.hasSdd) { window.libs.notify.api.request(["jquery-ready"], ฟังก์ชัน () { const ENS = "คลิก" + _self.instance.tagId + ".popper"; var $B = $("body"); $B.off(ENS); $B.on(ENS, closePopper); addSelectionHandlers(); }); str = ""; str +="
"; str += สร้าง (); str +="
"; str +="
"; } return str;}function Bopis_isPickupDisabled() { const _self = this; const NITP = true; var isDisabled = true; if (!_self.data.mirakl && !_self.error && !_self.data.productOnlineOnly && !_self .data.skuOnlineOnly && _self.data.bopisEnabled && _self.data.findInStoreEnabled && _self.data.bopisProduct && !_self.isStringEmpty(_self.data.skuId) && _self.data.bopisSku && !(_self.data.isConnsItem || window.pageData.isConnsProduct) && (NITP || !_self.isStringEmpty(_self.data.zip)) && ((NITP && _self.isStringEmpty(_self.data.zip)) || !_self.isObjectEmpty(_self.data. store) && _self.data.store.bopis && 0 < _self.data.store.quantity || _self.searchResults.bopis)) { isDisabled = false; } return isDisabled;}function Bopis_isStoresDataNeeded(data) { const _self = this; ถ้า (!data) { data = _self.data; } ส่งคืน data.bopisEnabled && data.findInStoreEnabled && data.bopisProduct && !data.mirakl && !data.productOnlineOnly && !data.skuOnlineOnly && !(data.isConnsItem || หน้าต่าง pageData.isConnsProduct);}ฟังก์ชัน Bopis_buildInputRC(config) { const _self = สิ่งนี้; var c = config, str = "", เช็คแล้ว = c.isChecked ? "ตรวจสอบแล้ว" : ""; ฟังก์ชัน pc(c) { ส่งคืน _self.isUndefined(c) || !_self.isString(ค) || _self.isStringEmpty(c) ? "" : " " === ค[0] ? ค : " " + ค; } ถ้า (!c.isDisabled) { ถ้า (c.isMultiSelect) { str += ""; } อื่น { str +=" ""; } } อื่น { str +=" ""; } สตร +=""; str += c.content; str += " "; return str;}function Bopis_buildPDP() { const _self = this; const regD = /{{D}}/; var M = _self.config.messaging, str = "", ชื่อ = "ตัวเลือกรับ", ปริมาณ = 0, labelText = "", skuSelected = false, pid = "", preOrderPromoDetails = "", preOrderPromoId = "", isConnsItem = _self.config.feature === "bag" ? _self.data.isConnsItem : window.pageData .isConnsProduct; if (_self.config.feature !== "bag" && (isConnsItem && !_self.isObjectEmpty(_self.data.connsSKUData) && !_self.isObjectEmpty(_self.data.connsInvData) && !_self.data.connsInvData .conns)) { return; } if (!_self.isStringEmpty(_self.data.skuId)) { skuSelected = true; } if (_self.isObject(_self.data.store) && _self.data.store.hasOwnProperty(" ปริมาณ") && _self.isNumber(_self.data.store.quantity)) { ปริมาณ = _self.data.store.quantity; } if ("pdp" === _self.config.feature && skuSelected && !_self.data. skuShipEligible && 0 >= ปริมาณ && !_self.data.connsSKUData) { str += ""; str +=""; str += M.bopisOnly; str +=" "; str +=" ""; str += M.productOutNear.replace(/{{Z}}/, _self.data.zip).replace(regD, _self.data.storeSearchDistance); str +="
"; } อื่น { ถ้า (_self.data.productInStock) { ถ้า (!skuSelected) { str +=""; str +=""; ถ้า (_self.data.skuShipEligible) { str +=""; if (!_self.isStringEmpty(_self.shipPromoMsg)) { str ++= _self.shipPromoMsg; } str += " "; str +=" ""; str += M.selectSizeForOpt; } อื่น { str +="" + เอ็มโบปิสเท่านั้น + " "; str +=" ""; str += M.selectSizeBopisOnly; } str +="
"; } อื่น { ถ้า (0 < _self.data.skuStockLevel) { ถ้า (_self.data.sddEnabled && _self.data.skuSddEligible) { str ++= _self.buildSddEligibleBanner(); } str +=""; str +="
" + M.receiveOptionsHeader + "
" ; if (!_self.isObjectEmpty(_self.data.connsSKUData) && !_self.isObjectEmpty(_self.data.connsInvData) && isConnsItem) { str += _self.buildConnsOption(); } อื่น { str +="
"; labelText = _self.buildProductShipStatus(_self.data.skuStockLevel, _self.data.productInStock && !skuSelected, _self.data.surchargeAmount); str ++ _self.buildInputRC({isDisabled: !_self.data.skuShipEligible, isMultiSelect: เท็จ , id: name + "-ship", value: "ship", name: name, content: labelText, isChecked: "bag" === _self.config.feature && !_self.isObjectEmpty(_self.data.store) && _self.data.bopisSelected ? false : จริง, isMessage: เท็จ}); str +="
"; } str +="
" ; if (_self.data.isPreOrderEnabled && _self.data.showPreOrder && ("กระเป๋า" === _self.config.feature || _self.hasPreOrderResponse)) { str ++= _self.buildPreSaleOption(); } str +="
"; str += _self.buildPickupOption(); str += "
"; str ++ _self.buildStoreId(); if (isConnsItem && "bag" !== _self.config.feature) { str ++ ""; if (!_self.isObjectEmpty(_self.data.connsSKUData)) { str += _self.buildConnsFields(); } อื่น { $("#add-to-cart").addClass("ปิดการใช้งาน add-to-cart -disabled").prop("disabled", true).attr("type", "button"); } str +="
"; } } อื่น { ถ้า (isConnsItem) { ถ้า (!_self.isObjectEmpty(_self.data.connsSKUData) && !_self.isObjectEmpty(_self.data.connsInvData)) { str +=""; str +="
" + M.receiveOptionsHeader + "
"; str += _self.buildConnsOption(); str += "
"; } if ("กระเป๋า" !== _self.config.feature) { str +=""; if (!_self.isObjectEmpty(_self.data.connsSKUData)) { str += _self.buildConnsFields(); } อื่น { $("#add-to-cart").addClass("ปิดการใช้งาน add-to-cart -disabled").prop("disabled", true).attr("type", "button"); } str +="
"; } } อื่น { str +=""; str += M.skuOut; str += "
"; } } } } อื่น { str +=""; str += M.productOut; str +="
"; } } ฟังก์ชัน updatePreOrderRadio(invStatus) { var $C = $("#" + _self.instance.tagId); if (invStatus) { var preOrderContent = ""; preOrderContent += _self.buildPreSaleOption(); $C find(".preorder-container").html(preOrderContent).show(); } อื่น { $C.find(".preorder-container").hide(); } } if ("pdp" === _self .config.feature && _self.data.isPreOrderEnabled && _self.data.showPreOrder) { pid = _self.data.skuId; if (_self.isStringEmpty(pid)) { pid = _self.data.productId; } preOrderPromoDetails = _self.data .preOrderPromoDetails; preOrderPromoId = _self.data.preOrderPromoId; _self.getPreOrderFCInventory(pid, preOrderPromoDetails, ฟังก์ชัน (pid, preOrderPromoDetails, data) { _self.hasPreOrderResponse = true; if (data.hasOwnProperty("preOrderInStock") && data.preOrderInStock && ข้อมูล .hasOwnProperty("preOrderATSCount") && data.preOrderATSCount > 0) { _self.data.hasPreOrderInventory = true; updatePreOrderRadio(true); _self.addStoreSelectionHandlers(); updatePDPPreOrderIndicators(); } อื่น { _self.data.hasPreOrderInventory = เท็จ; อัพเดทPreOrderRadio(เท็จ); updatePDPPPreOrderIndicators(); } }); } อื่น { ถ้า (_self.data.isQuickView && !_self.data.showPreOrder && _self.data.skuId !== "") { _self.data.hasPreOrderInventory = เท็จ; _self.hasPreOrderResponse = จริง; อัพเดทPreOrderRadio(เท็จ); updatePDPPPreOrderIndicators(); } } ฟังก์ชัน updateShipPromoMsg() { var $C; ถ้า (_self.isString(_self.shipPromoMsg) && !_self.isStringEmpty(_self.shipPromoMsg)) { $C = $("#" + _self.instance.tagId); $C.find(".ship-message .ship-promo").html((_self.isStringEmpty(_self.data.skuId) ? "" : " - ") + _self.shipPromoMsg); } } ถ้า ("pdp" === _self.config.feature && _self.data.skuShipEligible && (!_self.isShipPromoMsg || _self.lastSkuId !== _self.data.skuId)) { _self.isShipPromoMsg = จริง; pid = _self.data.skuId; ถ้า (_self.isStringEmpty(pid)) { pid = _self.data.productId; } _self.getShippingPromoMessage(pid, ฟังก์ชัน (pid, data) { _self.lastSkuId = _self.data.skuId; if (data.hasOwnProperty("shippingMsg")) { if (_self.isString(data.shippingMsg) && !_self. isStringEmpty(data.shippingMsg)) { _self.shipPromoMsg = data.shippingMsg; updateShipPromoMsg(); } อื่น { ถ้า (_self.isObject(data.shippingMsg) && !_self.isObjectEmpty(data.shippingMsg)) { ถ้า (_self.isStringEmpty (_self.data.skuId) && data.shippingMsg.long) { _self.shipPromoMsg = data.shippingMsg.long; } อื่น { ถ้า (data.shippingMsg.short) { _self.shipPromoMsg = data.shippingMsg.short; } } updateShipPromoMsg (); } } } }); } ฟังก์ชัน updatePDPPreOrderIndicators() { var $poGiftBadge = $(".preorder-gift-badge"), $pdTop = $(".product-detail.top"), badgeHtml = "ของขวัญก่อนการขายที่มีสิทธิ์
", $promoContainer = $(".promotion"), $promoCallOutMessage = $(".promotion .callout-message"), $poPromoMessage = $(".callout-message-row.preorder-promo-message"), $ RegularPromoMessage = $(".callout-message-row:not(.preorder-promo-message)"); if (_self.data.hasPreOrderInventory) { if ($poGiftBadge.length === 0 && $pdTop.length > 0 ) { $pdTop.prepend(badgeHtml); } else { $poGiftBadge.show(); } } else { if ($poGiftBadge.length !== 0) { $poGiftBadge.hide(); } if ($poPromoMessage.length !== 0 && $regularPromoMessage.length === 0) { $promoContainer.hide(); $poPromoMessage.hide(); } อื่น { if ($poPromoMessage.length !== 0) { $poPromoMessage.hide() ; } } } } ถ้า (_self.isStringEmpty(_self.promoMsg) || _self.data.bopisPromoAssetID !== _self.promoMsgAssetID) { _self.promoMsgAssetID = _self.data.bopisPromoAssetID; _self.getBopisPromoMessaging(_self.data.bopisPromoAssetID, ฟังก์ชัน (ข้อมูล) { ถ้า (data.hasOwnProperty("isOnline") && data.isOnline && data.hasOwnProperty("assetContent") && !_self.isStringEmpty(data.assetContent)) { _self.promoMsg = data.assetContent; $("#" + _self.instance.tagId + " .promo-msg").html(_self.promoMsg); } }); } ส่งคืน str;} ฟังก์ชัน Bopis_fixStoreData (ข้อมูล) { const _self = สิ่งนี้; var ฉัน; ถ้า (data.stores) { สำหรับ (i = 0; i < data.stores.length; i++) { data.stores[i].distance = data.stores[i].distance.replace(/[^.0- 9]/g, ""); data.stores[i].name = data.stores[i].name.replace(/Belk /gi, ""); } }}ฟังก์ชัน Bopis_getBopisPromoMessaging (bopisPromoAssetID โทรกลับ) { const _self = สิ่งนี้; var CAN = bopisPromoAssetID !== "" ? bopisPromoAssetID : "bopis-promo-messaging"; var url = _self.baseAjaxUrl; url += "COContent-GetContentAsset?assetName="; url += สามารถ; $.ajax (url, {สำเร็จ: ฟังก์ชัน (ข้อมูล, textStatus, jqXHR) { บันทึก ("getBopisPromoMessaging ajax สำเร็จ: ข้อมูล:", ข้อมูล, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self. isFunction(callback)) { ลอง { callback(data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getBopisPromoMessaging ajax error : jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); }, สมบูรณ์: ฟังก์ชัน (jqXHR, textStatus) { log("getBopisPromoMessaging ajax สมบูรณ์: jqXHR:", jqXHR, "textStatus:" , textStatus); }});} ฟังก์ชัน Bopis_getShippingPromoMessage (pid, โทรกลับ) { const _self = this; var url = _self.baseAjaxUrl; url += "สินค้า-GetShippingPromoMsg?pid="; url += พิด; $.ajax (url, {สำเร็จ: ฟังก์ชัน (ข้อมูล, textStatus, jqXHR) { บันทึก ("getShippingPromoMessage ajax สำเร็จ: ข้อมูล:", ข้อมูล, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self. isUndefined(data)) { data = {}; } if (_self.isFunction(callback)) { ลอง { callback(pid, data); } catch (e) { log("Exception:", e); } } } , ข้อผิดพลาด: ฟังก์ชัน (jqXHR, textStatus, errorThrown) { บันทึก ("getShippingPromoMessage ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); if (_self.isFunction(callback)) { ลอง { callback(pid, {}); } catch (e) { log("Exception:", e); } } }, complete: function (jqXHR, textStatus) { log("getShippingPromoMessage ajax complete: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_getStoresByZip(zip, โทรกลับ) { const _self = this; var url = _self.baseAjaxUrl; _self.error = เท็จ; ถ้า (_self.isStringEmpty(zip)) { กลับ; } url += "ร้านค้า-GetBopisStoresByZip?zipCode=" + zip; โทรกลับ = โทรกลับ || ฟังก์ชัน (zip, data) { log("ไม่มีการเรียกกลับสำหรับการเรียก getStoresByZip โดย zip:", zip, "returned data:", data); }; $.ajax (url, {สำเร็จ: ฟังก์ชัน (ข้อมูล, textStatus, jqXHR) { บันทึก ("getStoresByZip ajax สำเร็จ: ข้อมูล:", ข้อมูล, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self. isObject(ข้อมูล) && data.hasOwnProperty("success") && data.success) { _self.fixStoreData(data); } if (!data.success) { _self.error = true; } if (_self.isFunction(callback) ) { ลอง { โทรกลับ (zip, data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getStoresByZip ajax error: jqXHR :", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); }, สมบูรณ์: ฟังก์ชัน (jqXHR, textStatus) { บันทึก("getStoresByZip ajax สมบูรณ์: jqXHR:", jqXHR, "textStatus:", textStatus ); }});} ฟังก์ชัน Bopis_getSddStore (โทรกลับ) { const _self = สิ่งนี้; var url = _self.baseAjaxUrl, cachedData; บันทึก ("_self.sddZipToStoreCache:", _self.sddZipToStoreCache); ถ้า (_self.sddZipToStoreCache.hasOwnProperty(_self.data.sddZip)) { cachedData = _self.sddZipToStoreCache[_self.data.sddZip]; ถ้า (!_self.isUndefined(cachedData) && !_self.isObjectEmpty(cachedData) && _self.isFunction(callback)) { ลอง { callback(cachedData); } catch (e) { log("ข้อยกเว้น:", e); } กลับ; } } url += "COSameDayDelivery-GetDeliveryAssuranceStore?zipCode=" + _self.data.sddZip; $.ajax (url, {ความสำเร็จ: ฟังก์ชัน (ข้อมูล, textStatus, jqXHR) { บันทึก ("getSddStore ajax สำเร็จ: ข้อมูล:", ข้อมูล, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self. isObject(ข้อมูล) && !_self.isObjectEmpty(ข้อมูล) && data.hasOwnProperty("zipCode") && _self.isString(data.zipCode) && !_self.isStringEmpty(data.zipCode)) { _self.sddZipToStoreCache[data.zipCode] = data; } อื่น { data = {}; } if (_self.isFunction(callback)) { ลอง { callback(data); } catch (e) { log("Exception:", e); } } }, ข้อผิดพลาด : ฟังก์ชัน (jqXHR, textStatus, errorThrown) { log("getSddStore ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); if (_self.isFunction(callback)) { ลอง { โทรกลับ ({}); } catch (e) { บันทึก ("ข้อยกเว้น:", e); } } }, สมบูรณ์: ฟังก์ชัน (jqXHR, textStatus) { บันทึก ("getSddStore ajax สมบูรณ์: jqXHR:", jqXHR, "textStatus :", textStatus); }});}ฟังก์ชัน Bopis_setSessionStore (storeId, โทรกลับ) { const _self = this; var url = _self.baseAjaxUrl; url += "StoreInventory-SetPreferredStore?storeId=" + storeId; $.ajax (url, {สำเร็จ: ฟังก์ชัน (ข้อมูล, textStatus, jqXHR) { บันทึก ("setSessionStore ajax สำเร็จ: ข้อมูล:", ข้อมูล, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self. isFunction(callback)) { ลอง { callback(data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("setSessionStore ajax error : jqXHR:", jqXHR, "textStatus:", textStatus, "errorThrown:", errorThrown); }, สมบูรณ์: ฟังก์ชัน (jqXHR, textStatus) { บันทึก("setSessionStore ajax เสร็จสมบูรณ์: jqXHR:", jqXHR, "textStatus:" , textStatus); }});}function Bopis_getPreOrderFCInventory(pid, preOrderPromoDetails, callback) { log("getPreOrderFCInventory เรียกด้วย pid:", pid, "preOrderPromoDetails:", preOrderPromoDetails, "callback", callback); const _self = นี่; var url = _self.baseAjaxUrl + "COPreOrder-GetPreOrderFCInventory"; ถ้า (_self.isStringEmpty (preOrderPromoDetails)) { กลับ; } โทรกลับ = โทรกลับ || ฟังก์ชัน (preOrderPromoDetails, data) { log("ไม่มีการเรียกกลับสำหรับการเรียก getPreOrderFCInventory โดย preOrderPromoDetails:", preOrderPromoDetails, "ข้อมูลที่ส่งคืน:", data); }; preOrderPromoDetails = JSON.parse(preOrderPromoDetails); preOrderPromoDetails.pid = pid; $.ajax({วิธีการ: "POST", dataType: "json", contentType: "application/json", url: url, data: JSON.stringify(preOrderPromoDetails), ความสำเร็จ: ฟังก์ชัน (ข้อมูล, textStatus, jqXHR) { บันทึก ("getPreOrderFCInventory ajax สำเร็จ: data:", data, "textStatus:", textStatus, "jqXHR:", jqXHR); if (_self.isFunction(callback)) { ลอง { callback(pid, preOrderPromoDetails, data); } catch (e) { log("Exception:", e); } } }, error: function (jqXHR, textStatus, errorThrown) { log("getPreOrderFCInventory ajax error: jqXHR:", jqXHR, "textStatus:", textStatus, " errorThrown:", errorThrown); }, สมบูรณ์: ฟังก์ชัน (jqXHR, textStatus) { log("getPreOrderFCInventory ajax สมบูรณ์: jqXHR:", jqXHR, "textStatus:", textStatus); }});}function Bopis_availabilityMessage(ปริมาณ, forceInStock , isPunc, forPopper) { const _self = สิ่งนี้; const p = "", e = "!", n = ""; var M = _self.config.messaging, str = "ปริมาณ) { str += " น้อยกว่า\">" + M.stock["น้อย"]; ถ้า (5 > ปริมาณ) { str ++=" (" + M.stock.lowX.replace("X", ปริมาณ) + ")"; } } อื่น { if (forceInStock || 5 < ปริมาณ) { str += " in\">" + M.stock["in"] + (!forPopper && isPunc ? p : ""); } อื่น { ถ้า (0 === ปริมาณ) { str ++ " out\">" + M.stock.out; } อื่น { ถ้า (5 === ปริมาณ) { str ++ " low\">" + M.stock.low; } อื่น { ถ้า (5 > ปริมาณ) { str +=" low\">" + M.stock.lowX.replace("X", ปริมาณ) + (isPunc ? e : ""); } } } } } str += " "; return str;}function Bopis_buildSelectionToggle(theClass, text) { const _self = this; var str = ""; str ++=""; str +="" + ข้อความ + " "; str +=" ""; return str;}ฟังก์ชัน Bopis_buildStoreSelectionToggle(ข้อความ) { const _self = this; var str = ""; str ++=""; str +="" + ข้อความ + " "; str +=" ""; return str;}function Bopis_searchStores(ร้านค้า) { const _self = this; var i, store, ret = {}; _self.copyObject(ret, _self.default.config.init.searchResults); ถ้า (0 < stores.length) { สำหรับ (i = 0; i < stores.length; i++) { store = stores[i]; if (0 < store.quantity) { ret.inStore = จริง ถ้า (store. bopis) { ret.bopis = true; ret.store = store; break; } } } ret.isSearch = true; } return ret;}function Bopis_updateInStockOnly() { const _self = this; var $C = $("#" + _self.instance.tagId), $d = $C.find(".popper.bopis .stores li .filter-instockonly").closest("li"), $inp = $C.find(".popper. bopis .filters input[name=\"in-stock-only\"]"); if ($inp.length) { if ($inp.prop("checked")) { _self.inStockOnly = true; $d. ซ่อน (); } อื่น { _self.inStockOnly = false; $d.show (); } _self.updatePopperScrollbar (); }} ฟังก์ชัน Bopis_searchResponse (pid, zip, data) { const _self = this; var $C = $( "#" + _self.instance.tagId); if (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.skuId = pid; _self.data.zip = ซิป; ถ้า (data.hasOwnProperty("ร้านค้า") && _self.isArray(data.stores) && 0 < data.stores.length) { _self.data.store = data.stores[0]; _self.stores = data.stores; } อื่น { _self.data.store = {}; _self.stores = []; } ถ้า (data.hasOwnProperty("readyHours") && _self.isNumber(data.readyHours)) { _self.readyHours = data.readyHours; } ถ้า (data.hasOwnProperty("pickupToday") && _self.isBoolean(data.pickupToday)) { _self.pickupToday = data.pickupToday; } ถ้า (data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } _self.searchResults = _self.searchStores(_self.stores); ถ้า (_self.searchResults.bopis) { ถ้า (_self.feature.myStore) { $C.find(".my-store").replaceWith(buildMyStoreHtml(_self.stores[0], 0)); } $C.find(".popper.bopis .stores").empty(); $C.find(".popper.bopis .stores").ต่อท้าย(_self.buildStoresHtml()); $C.find(".popper.bopis .zip-link").hide().html(_self.data.zip); $C.find(".popper.bopis .show-on-results").show(); $C.find(".popper.bopis .no-stores-msg").remove(); $C.find(".popper.bopis .zip-link").show(); $C.find(".popper.bopis .search-by-zip").hide(); _self.updateInStockOnly(); _self.updatePopperScrollbar(); _self.addStoreItemHandlers(); } อื่น { $C.find(".popper.bopis .show-on-results").ซ่อน(); $C.find(".popper.bopis .search-by-zip").show(); $C.find(".popper.bopis .no-stores-msg").remove(); $C.find(".popper.bopis").ต่อท้าย("" + _self.config.messaging.notInStockX.replace("X", "" + ซิป + " ") + " " + _self.config.messaging.tryArea + "
"); } } อื่น { log("หยุดที่นี่?"); $C.find(".popper.bopis .show-on-results").hide(); $C.find(".popper.bopis ค้นหาโดย zip").show(); $C.find(".popper.bopis .no-stores-msg").remove(); $C.find(".popper.bopis").ผนวก( "" + _self.config.messaging.notInStockX.replace("X", "" + ซิป + " ") + " " + _self.config.messaging.tryArea + "
"); } if (window.progress) { window.progress.hide(); }}function Bopis_pickupTodayOrTomorrow() { const _self = this; var ret = " วันนี้"; if (!_self.pickupToday) { if ("" === _self.data.pickupDay) { ret = " พรุ่งนี้"; } อื่น { ret = " " + _self.data.pickupDay; } } return ret;}function Bopis_buildPickupOption() { const _self = this; var str = " ", name = "ตัวเลือกรับ", labelText = "", isDisabled = true, skuSelected = false, HideRadio = false, M = _self.config.messaging, isChecked = false; skuSelected = !_self.isStringEmpty(_self.data. skuId); if (skuSelected && !_self.isArrayEmpty(_self.stores) && (!_self.data.bopisSku || _self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 = == _self.data.store.quantity)) { _self.searchResults = _self.searchStores(_self.stores); } str ++ ""; isDisabled = _self.isPickupDisabled(); HideRadio = (!skuSelected || 0 === _self.data.skuStockLevel); if (hideRadio) { labelText +=""; ถ้า (skuSelected) { labelText += _self.config.messaging.skuOut; } อื่น { labelText += _self.config.messaging.selectSize; } labelText +=" "; } อื่น { labelText = _self.buildProductPickupStatus(); } if ("bag" === _self.config.feature && !_self.isObjectEmpty(_self.data.store) && _self.data.bopisSelected) { isChecked = true ; } อื่น { if (!_self.data.skuShipEligible) { isChecked = true; } } str += _self.buildInputRC({isDisabled: isDisabled, isMultiSelect: false, id: name + "-pickup", value: "pickup" , ชื่อ: ชื่อ, เนื้อหา: labelText, isChecked: isChecked, isMessage: HideRadio}); str +="
"; return str;}function Bopis_buildPreSaleOption() { const _self = this; var str = "", name = "receive-option", labelText = "", M = _self.config.messaging; if (!_self.data. hasPreOrderInventory) { ส่งคืน str; } str +=""; labelText +="" + M.preSaleHeader + " -" + M.preSaleShipMessage + " " + _self.data.releaseDate + " " + M.preSaleCouponExclusionMessage + " "; if ("bag" === _self.config.feature && _self.data.preOrderSelected) { _self.fromPreOrder = true; } str ++= _self.buildInputRC({isMultiSelect: false, id: name + "-presale" , ค่า: "presale", ชื่อ: ชื่อ, เนื้อหา: labelText, isChecked: "bag" === _self.config.feature && _self.data.preOrderSelected ? true : false}); str ++ ""; str ++= "
"; return str;} ฟังก์ชัน Bopis_buildProductShipStatus (skuStockLevel, forceInStock, surchargeAmount) { const _self = this; var str = "", M = _self.config.messaging; ฟังก์ชันเติม (msg) { var rE = /{{E}} /, rT = /{{T}}/; msg = msg.replace(rE, _self.data.sddEndTime.replace(" ", "")); msg = msg.replace(rT, _self.data.sddSameDay ? "วันนี้" : "พรุ่งนี้"); return msg; } str +=""; if (_self.data.skuShipEligible) { str ++("bag" === _self.config.feature && !isStringEmpty(_self.data.sddStoreId)) ? M.sdd.title : M.shipFree; if ( "กระเป๋า" === _self.config.feature && !isStringEmpty(_self.data.sddStoreId)) { str == ""; str +=" - " + เติม(M.sdd.delivers); str +=" "; } อื่น { ถ้า ("กระเป๋า" === _self.config.feature && !_self.isStringEmpty(_self.data.estimatedShippingMessage)) { str ++ ""; str +=" - " + _self.config.messaging.estimatedDelivery + _self.data.estimatedShippingMessage; str +=" "; } อื่น { str +=""; if (!_self.isStringEmpty(_self.shipPromoMsg)) { str += " - " + _self.shipPromoMsg; } str +=" "; } } สต +=" "; str += _self.availabilityMessage(skuStockLevel, forceInStock, true, false); if (_self.isNumber(surchargeAmount) && 0 !== surchargeAmount) { str +="$" + surchargeAmount + " " + M.surchargeAmountApplies + " "; } } อื่น { str ++= _self.config.messaging.noShip; str += " "; str +="" + _self.config.messaging.bopisOnly + " "; } str +=" "; return str;}function Bopis_buildProductPickupStatus() { const _self = this; const regD = /{{D}}/; var str = "", msg = "", br = " ", bh = "", ทค = " ", sm = "", โปร = "", M = _self.config.messaging, sto = {}; str +=""; function storeMsg(ร้านค้า) { var sto = {msg: M.atNearStore, ชื่อ: M.selectStore}; if (!_self.isObjectEmpty(store)) { if (store.closed) { sto.msg = M.storeClosed ; } อื่น { sto.msg = M.atMyStore; } sto.name = store.name; } กลับ sto; } ฟังก์ชัน ofZip(msg) { var str = br + ssm + msg; if (!_self.isStringEmpty(_self. data.zip)) { str += " จาก " + _self.data.zip; } str += tc; return str; } ฟังก์ชัน inStoreScenarios() { ถ้า (_self.searchResults.isSearch && _self.searchResults.inStore) { ถ้า (0 < _self.data.store.quantity) { msg = bh + M.notBopis + tc; if (_self.data.store.closed) { msg += br + ssm + M.storeClosed + tc; } อื่น ๆ { msg += br + ssm + M.atMyStore + tc; } msg += _self.buildStoreSelectionToggle(_self.data.store.name); msg += br + _self.availabilityMessage(_self.data.store.quantity, เท็จ, จริง, เท็จ); } อื่น { ถ้า (!_self.data.skuOnlineOnly) { msg = bh + M.noBopisNearby + tc; } อื่น { msg = bh + M.notBopis + tc; } msg += br + ssm + M.atNearStore + tc; msg += " " + _self.buildStoreSelectionToggle(M.selectStore); } } อื่น { ถ้า (_self.data.skuOnlineOnly) { msg = bh + M.notBopis + tc; msg += br + ssm + _self.config.messaging.skuOnlineOnly + tc; } อื่น { ถ้า (_self.data.bopisSku) { msg = bh + M.noBopisNearby + tc; msg += ofZip(M.notNearby.replace(regD, _self.data.storeSearchDistance)); msg += br + _self.buildStoreSelectionToggle(M.selectZip); } อื่น { msg = bh + M.notBopis + tc; ถ้า (_self.data.store.closed) { msg += br + ssm + M.storeClosed + tc; } อื่น { msg += br + ssm + M.atNearStore + tc; msg += " " + _self.buildStoreSelectionToggle(M.selectStore); } } } } } ถ้า (_self.data.mirakl) { msg = bh + M.notBopis + tc; } อื่น { ถ้า (_self.data.productOnlineOnly) { msg = bh + M.notBopis + tc; ถ้า ("pdp" === _self.config.feature) { msg ++ br + _self.config.messaging.productOnlineOnly; } } อื่น { ถ้า (_self.data.skuOnlineOnly) { msg = bh + M.notBopis + tc; ถ้า ("pdp" === _self.config.feature) { msg ++= br + ssm + M.skuOnlineOnly + tc; } } อื่น { if (!_self.data.productInStock) { log("(!_self.data.productInStock) สถานการณ์ไม่ควรเกิดขึ้น"); } อื่น { ถ้า (_self.data.bopisEnabled && _self.data.findInStoreEnabled) { ถ้า (_self.error) { ถ้า (_self.data.skuOnlineOnly) { msg = bh + M.notBopis + tc; ถ้า ("pdp" === _self.config.feature) { msg ++= br + ssm + _self.config.messaging.skuOnlineOnly + tc; } } อื่น { ถ้า (_self.data.bopisSku) { msg = bh + M.noBopisNearby + tc; } อื่น { msg = bh + M.notBopis + tc; } msg += ofZip(M.notNearby.replace(regD, _self.data.storeSearchDistance)); msg += br + _self.buildStoreSelectionToggle(M.selectZip); } } อื่น { ถ้า (_self.data.bopisProduct) { ถ้า (!_self.isStringEmpty(_self.data.skuId)) { ถ้า (_self.data.bopisSku) { ถ้า (!_self.isStringEmpty(_self.data.zip) ) { ถ้า (!_self.isObjectEmpty(_self.data.store)) { ถ้า (_self.data.store.bopis && 0 < _self.data.store.quantity) { msg = bh + M.bopis + _self.pickupTodayOrTomorrow( ) + ทค; msg += br + _self.availabilityMessage(_self.data.store.quantity, เท็จ, เท็จ, เท็จ); ข้อความ += "ที่ "; msg += _self.buildStoreSelectionToggle(_self.data.store.name); msg += br + pro; if (_self.isStringEmpty(_self.promoMsg)) { msg += M.readyTimeX.replace("X", _self.readyHours); } อื่น { msg += _self.promoMsg; } msg += tc; } อื่น { ถ้า (_self.searchResults.bopis) { msg = bh + M.bopis + _self.pickupTodayOrTomorrow() + tc; msg += br + M.nearby + " " + _self.buildStoreSelectionToggle(M.selectStore); msg += br + pro; if (_self.isStringEmpty(_self.promoMsg)) { msg += M.readyTimeX.replace("X ", _self.readyHours); } อื่น { msg += _self.promoMsg; } msg += tc; } อื่น { ถ้า ("กระเป๋า" === _self.config.feature) { msg = bh + M.notBopis + tc ; } อื่น { inStoreScenarios(); } } } } อื่น { ถ้า (0 === _self.stores.length) { msg = bh + M.notBopis + tc; msg += ofZip(M.noStoresNearby.replace(regD, _self.data.storeSearchDistance)); msg += br + _self.buildStoreSelectionToggle(M.selectZip); } อื่น { msg = bh + M.noBopisNearby + _self.pickupTodayOrTomorrow() + tc; msg += " " + _self.buildStoreSelectionToggle (M.selectStore); } } } อื่น { msg = bh + M.bopis + _self.pickupTodayOrTomorrow() + tc; msg += " " + _self.buildStoreSelectionToggle(M.selectStore); } } อื่น { ถ้า ("กระเป๋า" === _self.config.feature) { msg = bh + M.notBopis + tc; } อื่น { inStoreScenarios(); } } } อื่น { log("(_self.isStringEmpty(data.prdoductId)) สถานการณ์ไม่ควรเกิดขึ้น"); } } อื่น { ถ้า (!_self.isStringEmpty(data.prdoductId)) { ถ้า (_self.data.bopisSku) { } อื่น { } } อื่น { msg = bh + M.notBopis + tc; msg += br + M.selectSize; } } } } อื่น { ถ้า ("กระเป๋า" === _self.config.feature) { msg = bh + M.notBopis + tc; } อื่น { msg = bh + M.bopisDisabled + tc; ถ้า (_self.data.findInStoreEnabled) { sto = storeMsg (_self.data.store); msg += br + ssm + sto.msg + tc + " " + _self.buildStoreSelectionToggle(sto.name); } } } } } } } str += msg; สตริง +="
"; return str;}function Bopis_buildStoreHtml(ร้านค้า, offset) { const _self = this; var str = "", VC = _self.feature; str +=""; str +="" + ชื่อร้าน + " "; str +="" +ระยะทางร้านค้า + " ไมล์ "; if (store.bopis) { if (VC.showStock) { str += _self.availabilityMessage(store.quantity, false, true, true); } } อื่น { str +="ปิดให้บริการชั่วคราว "; } str +=" "; return str;}function Bopis_buildMyStoreHtml(ร้านค้า, offset) { const _self = this; var str = ""; str +=""; str +="
"; str +="
ร้านค้าของฉันใกล้ " + _self.data.zip + "
"; str += _self.buildStoreHtml(ร้านค้า, ชดเชย); str +="
รวมอยู่ในผลการกรองเสมอ
"; str +="
"; str +="
"; return str;}function Bopis_buildStoreItemHtml(ร้านค้า, offset) { const _self = this; var str = "", VC = _self.feature, addClass = "filter-instockonly", isDisabled = true, isChecked = false, isSelected = _self .selectedStoreIds.some(function (e) { return e === store.id; }); if (store.id === _self.data.storeId || isSelected) { isChecked = true; } if ("plp" === _self.config.feature) { if (store.bopis) { isDisabled = false; } } else { if (0 < store.quantity && store.bopis) { if ("bag" === _self.config. คุณลักษณะ && _self.data.hasOwnProperty("lineItemQuantity") && _self.data.lineItemQuantity > store.quantity) { addClass = ""; } else { isDisabled = false; } } } str += _self.buildInputRC({isDisabled: isDisabled , isMultiSelect: VC.isMultiSelect, ชื่อ: ชื่อ + offset, id: store.id, ชื่อ: "store", ค่า: store.id, เนื้อหา: _self.buildStoreHtml(store, offset), isChecked: isChecked, isMessage: false, "คลาส": isDisabled ? addClass : ""}); return str;}function Bopis_buildStoresHtml() { const _self = this; var str = "", VC = _self.feature, s = 0, storesLength = _self.stores.length; ถ้า (0 < VC.storeListLimit && VC.storeListLimit < storesLength) { storesLength = VC.storeListLimit; } สำหรับ (s = 0; s < storesLength; s++) { str +=""; str += _self.buildStoreItemHtml(_self.stores[s], s); str += " "; } return str;}function Bopis_buildToolTip(data) { const _self = this, ttc = "sdd-ui-tooltip", qttc = "sddq-ui-tooltip", styleId = ttc + "-style", qstyleId = qttc + "-style", style = "." + ttc + "{max-width:300px;z-index:5;}", qstyleb = "." + qttc + "{max-width:300px;z-index :", qstylee = ";}", hbs = ""; var content = "", str = "", ss = null, qv = null, qzi = 1,000, tc = ttc; if (data.hasOwnProperty("isOnline") && data.isOnline && data.hasOwnProperty("assetContent ") && !_self.isStringEmpty(data.assetContent)) { เนื้อหา = data.assetContent; } ถ้า (_self.data.isQuickView) { ถ้า (!document.querySelector("#" + qstyleId)) { qv = document.querySelector (".ui-dialog.quick-view"); ถ้า (qv) { qzi = qv.style["z-index"]; } ss = document.createElement("style"); ss.id = qstyleId; ss .innerHTML = qstyleb + qzi + qstylee; } tc = qttc; } อื่น { if (!document.querySelector("#" + styleId)) { ss = document.createElement("style"); ss.id = styleId; ss .innerHTML = style; } } if (!_self.isNull(ss)) { document.head.appendChild(ss); } str += hbs + tc + hbe + content + he; return str;}function Bopis_buildSddEligibleBanner() { const _self = this; const zipClass = "select-zip"; var str = "", zipLabel = "ตรวจสอบพื้นที่ของฉัน", isTo = false, toggle = "", message = _self.config.messaging.sdd.msgEligible, isEligible = จริง ถ้า ("pdp" === _self.config.feature && _self.data.sddEnabled) { ถ้า (!_self.isStringEmpty(_self.data.sddZip)) { zipLabel = _self.data.sddZip, isTo = จริง ; } toggle = _self.buildSelectionToggle(zipClass, zipLabel); ถ้า (_self.isStringEmpty(_self.data.sddZip)) { ข้อความ = _self.config.messaging.sdd.title; } อื่น { ถ้า (_self.isStringEmpty(_self.data.sddStoreId) || _self.data.sddStore.closed || !_self.data.sddStore.bopis || 0 >= _self.data.sddStore.quantity) { ข้อความ = _self.config.messaging.sdd.msgNotEligible; isEligible = เท็จ; } } } สต + = ""; str +="
"; str +="
" + "" + ข้อความ + " " + _self.buildToolTip(_self.data.sddToolTip) + (isTo ? " ถึง " : " ") + สลับ + "
"; str +="
"; return str;}function Bopis_buildPopper(theClass) { const _self = this; var str = "", storesLength, min = false, HideTop = false, DN = " style=\"display:none;\"", altMsg = "อัปเดตตำแหน่ง:", defaultMsg = "ร้านค้าใกล้", msg = defaultMsg, sd = "ไม่มี", oi = "inline", VC = _self.feature, noStoresMsg = "", zip = "", zipStr, isSdd = ( "select-zip" === theClass), isConns = ("select-zip-conns" === theClass), isError = false, popperClass = "", bc = ""; if (isSdd) { VC = _self. config.features.bagSddBanner; zip = _self.data.sddZip; min = true; sd = "block"; popperClass = "sdd"; bc = "update"; } else { if (isConns) { VC = _self.config. features.bagSddBanner; zip = !_self.isStringEmpty(_self.data.connsZip) ? _self.data.connsZip : _self.data.sddZip; min = true; sd = "block"; popperClass = "conns"; bc = "อัพเดท -conns-zip"; } อื่น { zip = _self.data.zip; isError = _self.error; if (_self.isStringEmpty(zip) || isError || (_self.searchResults.isSearch && !_self.searchResults.bopis && !_self.searchResults.inStore)) { นาที = จริง; sd = "บล็อก"; } popperClass = "โบพิส"; bc = "ค้นหา"; } } ถ้า (VC.myStore) { ถ้า ("" !== zip) { msg = altMsg; } _self.firstStoreItem = 1; ซ่อนด้านบน = จริง; } สตร +=""; str +="
"; str +="
" ; if (!isSdd && !isConns) { str += "
" + ข้อความ + " " + ซิป + "
"; } str +="
" ; if (VC.showFilters && !VC.myStore) { str += "ในสต็อกเท่านั้น "; } str +="
" ; if (!isSdd && !isConns) { if (VC.myStore && 0 < _self.stores.length) { str ++buildMyStoreHtml(_self.stores[0], 0); } if (!_self.searchResults.isSearch || _self.searchResults.bopis || _self.searchResults.inStore) { str += "
"; str += _self.buildStoresHtml(); str += " "; } อื่น { str +="
"; zipStr = "" + ซิป + " "; ถ้า (0 < _self.stores.length) { noStoresMsg = _self.config.messaging.notInStockX.replace("X", zipStr); } อื่น { noStoresMsg = _self.config.messaging.notInStockX.replace("X" , zipStr); } สต +="
" + noStoresMsg + " " + _self.config.messaging.tryArea + "
"; } ถ้า (VC.isMultiSelect) { str +="
"; } } สต +="
"; return str;}function Bopis_showPopper(theClass) { log("showPopper เรียก!"); const _self = this; var str = "", tc = theClass ? theClass : "select-store", $i = $(" #" + _self.instance.tagId + "-" + tc), $pl = $i.nextAll(".popper-location"), $p = $pl.find(".popper"), zip = "" , showWait = false; function show() { $p = $pl.find(".popper").show(); _self.fixPopperPosition(); if (0 === $(document.activeElement).filter(" .zip-code").ความยาว) { $p.find(".top").focus(); } _self.isPopperOpen = true; if (!$i.prop("checked")) { $i.prop ("ตรวจสอบแล้ว" จริง); } _self.updatePopperScrollbar(); if ("plp" === _self.config.feature && _self.feature.moveToLeftOnDesktop) { $("#secondary").css({โอเวอร์โฟลว์: " มองเห็นได้", แสดง: "inline-block"}); } } if ("bag" === _self.config.feature && 0 === _self.stores.length && !_self.error && (!_self.isStringEmpty( _self.data.zip) || !_self.isStringEmpty(_self.data.sessionZip))) { showWait = true; if (window.progress) { window.progress.show(); } zip = _self.data.zip; ถ้า (_self.isStringEmpty(zip)) { zip = _self.data.sessionZip; } ถ้า (!_self.isStringEmpty(zip)) { _self.data.zip = ซิป; _self.getStoresByZipPidBatch(_self.data.skuId, _self.data.skuOrin, zip, "", "", ฟังก์ชัน (parms, data) { _self.searchResponse(parms.pid, parms.zip, data); แสดง(); }); } } ถ้า (_self.isPopperOpen) { กลับ; } ถ้า (0 === $p.length) { str ++ _self.buildPopper(theClass); $pl.append(str); _self.addPopperHandlers(); } _self.ignoreNextClosePopper = จริง; _self["คลาส"].ignoreNextClosePopperSelf = _self; setTimeout(ฟังก์ชัน (e) { _self.ignoreNextClosePopper = false; _self["คลาส"].ignoreNextClosePopperSelf = null; }, 5); ถ้า (!showWait) { แสดง(); }}ฟังก์ชัน Bopis_hidePopper() { const _self = สิ่งนี้; var $C = $("#" + _self.instance.tagId); _self.ignoreNextClosePopper = เท็จ; _self["คลาส"].ignoreNextClosePopperSelf = null; ถ้า (0 < $C.length) { $C.find(".select-store").prop("ตรวจสอบ", เท็จ); $C.find(".select-zip").prop("ตรวจสอบ", เท็จ); $C.find(".popper").hide(); _self.isPopperOpen = เท็จ; } if ("plp" === _self.config.feature && _self.feature.moveToLeftOnDesktop) { $("#secondary").css({โอเวอร์โฟลว์: "", แสดง: ""}); }}ฟังก์ชัน Bopis_hidePoppers (ignoreSelf) { const _self = สิ่งนี้; var $poppers = $(".vco_Bopis"); ถ้า (!_self.isUndefined(ignoreSelf) && !_self.isNull(ignoreSelf)) { $poppers = $poppers.not("#" +ignoreSelf.instance.tagId); } $poppers = $poppers.find(".popper"); $poppers.each(ฟังก์ชัน (i, o) { var $o = $(o), $i, $b, bid, c; $i = $o.closest(".pickup-message").find(" .toggle-carrot"); $b = $i.closest("." + _self.component.class); bid = $b.attr("id"); if (coms.hasOwnProperty(bid)) { c = coms[bid]; c.hidePopper.call(c); } });}function Bopis_updatePopperScrollbar() { const _self = this; var $C = $("#" + _self.instance.tagId), $S = $C.find(".popper.bopis .stores"); ถ้า (4 < $S.find("li:visible").length) { $S.css("overflow-y", "scroll"); } อื่น { $S.css("ล้น-y", "ซ่อน"); }}ฟังก์ชัน Bopis_fixPopperPosition () { const _self = สิ่งนี้; const marginLeft = 12; var $ps = $("." + _self.component.class + " .popper"), $au, r, delta, pRight, aRight; $ps.each(ฟังก์ชัน (i, o) { var $o = $(o); r = $o[0].getBoundingClientRect(); if (0 !== r.width || 0 !== r. ความสูง) { pRight = Number($o.css("right").replace("px", "")); $au = $o.find(".arrowup"); delta = Math.floor(r. ซ้าย) - marginLeft; if (0 > delta) { $o.css("right", pRight + delta); aRight = Number($au.css("right").replace("px", "")) ; $au.css("right", aRight - delta); } } });}function Bopis_multiSelectUpdate($C, SelectedCount) { const _self = this; ถ้า (0 < _self.feature.storeSelectLimit && _self.feature.storeSelectLimit <= SelectedCount) { $C.find(".popper .stores input:not(:checked)").prop("disabled", true); } อื่น { $C.find(".popper .stores input:disabled").prop("disabled", false); }}ฟังก์ชัน Bopis_addPDPZipSelectionHandlers() { const _self = สิ่งนี้; const zipClass = "select-zip", ENS = "คลิก" + _self.component.class + "." + zipClass + ".popper"; var $in, เลน; var $C = $("#" + _self.instance.tagId); var $zObj = $C.find("." + zipClass); $zObj.off(ENS); $zObj.on(ENS, ฟังก์ชัน (e) { $(".toggle-carrot.select-store").prop("ตรวจสอบแล้ว", เท็จ); $(".toggle-carrot.select-store + .vlabel + .popper-location .popper").hide(); _self.isPopperOpen = false; if ($(e.currentTarget).prop("checked")) { _self.showPopper(zipClass); $in = $C.find (".popper .search-by-zip .zip-code"); $in.focus(); len = $in.val().length; $in[0].setSelectionRange(len, len); } อื่น { _self.hidePopper(); } e.stopPropagation(); });} function Bopis_addStoreItemHandlers() { const _self = this,checkedStorePattern = ".popper.bopis .stores input:checked"; var $C = $("#" + _self.instance.tagId), $ins = $C.find(".stores input"); $ins.on("click", function (e) { var store = {}, found = null, str = ""; if (_self.feature.isMultiSelect) { SelectedCount = $C.find(checkedStorePattern).Length; ถ้า (0 === SelectedCount) { e.preventDefault(); } อื่น { _self.multiSelectUpdate($C, SelectedCount); } } อื่น { store.obj = $C.find("#" + e.currentTarget.getAttribute ("id")); store.name = store.obj.find("+ .vlabel > .store > .name").html(); store.id = store.obj.val(); found = _self. findStore(store.id).store; if (!_self.isEmpty(found)) { _self.data.store = found; _self.data.storeId =found.id; str = _self.buildInputRC({isDisabled: _self.isPickupDisabled (), isMultiSelect: เท็จ, id: "receive-option-pickup", ค่า: "pickup", ชื่อ: "receive-option", เนื้อหา: _self.buildProductPickupStatus(), isChecked: true, isMessage: false}); if (!_self.isNull(_self.to)) { clearTimeout(_self.to); _self.to = null; } _self.to = setTimeout(ฟังก์ชัน () { $C.find(".receive-option-pickup") .html(str); _self.isPopperOpen = false; _self.updateStoreId(); _self.addStoreSelectionHandlers(); _self.to = null; }, 1,000); ถ้า ("กระเป๋า" === _self.config.feature) { window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, จริง, เท็จ, _self.fromPreOrder, _self.data.storeId); } } } });}ฟังก์ชัน Bopis_addStoreSelectionHandlers() { const _self = สิ่งนี้; var $C = $("#" + _self.instance.tagId); var $ss = $C.find(".select-store"); $ss.on("click", function (e) { $(".toggle-carrot.select-zip").prop("checked", false); $(".toggle-carrot.select-zip + . vlabel + .popper-location .popper").hide(); _self.isPopperOpen = false; if ($ss.prop("checked")) { _self.showPopper(); } อื่น { _self.hidePopper(); } e.stopPropagation(); }); $C.on("คลิก", ".js_nostore", ฟังก์ชัน (จ) { e.preventDefault(); _self.showPopper(); }); ฟังก์ชัน pickupOptionHandler (previousOption) { ถ้า (_self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 === _self.data.store.quantity || "กระเป๋า" === _self .config.feature && _self.data.store.quantity < _self.data.lineItemQuantity) { $(".toggle-carrot.select-zip").prop("ตรวจสอบแล้ว", เท็จ); $(".toggle-carrot.select-zip + .vlabel + .popper-location .popper").hide(); _self.isPopperOpen = เท็จ; _self.showPopper(); $("#" + _self.instance.tagId + PreviousOption).prop("ตรวจสอบ", จริง); } อื่น { ถ้า ("กระเป๋า" === _self.config.feature) { window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, จริง, เท็จ, _self.fromPreOrder, _self.data.storeId); } } } ฟังก์ชัน changePWCVisibility(isPreOrder) { var $pwc = $(".vjs_price-with-coupon"); ถ้า ($ pwc.length > 0) { ถ้า (isPreOrder) { $pwc.hide(); } อื่น ๆ { $pwc.show(); } } } if ("bag" === _self.config.feature) { $C.find("#" + _self.instance.tagId + "-receive-option-pickup").on("click", ฟังก์ชัน (จ) { ถ้า (_self.data.triggerPOModal && _self.fromPreOrder) { e.preventDefault(); document.addEventListener ("modal-affirmed", ฟังก์ชัน (ข้อมูล) { if (data.detail === "preorder-ro -change-modal") { ถ้า (_self.isObjectEmpty(_self.data.store) || !_self.data.store.bopis || 0 === _self.data.store.quantity || "กระเป๋า" === _self.config.feature && _self.data.store.quantity < _self.data.lineItemQuantity) { pickupOptionHandler("-receive-option-presale"); } อื่น { $("#" + _self.instance.tagId + "- รับตัวเลือกรับ"). .hash = ""; } }); window.location.hash = "preorder-ro-change-modal"; } อื่น { if (_self.fromPreOrder) { pickupOptionHandler("-receive-option-presale"); } อื่น { PickupOptionHandler ("-รับตัวเลือกเรือ"); } } }); } อื่น { $C.find("#" + _self.instance.tagId + "-receive-option-pickup").on("change", function (e) { pickupOptionHandler("-receive-option-ship") ; changePWCVisibility(เท็จ); }); } $C.find("#" + _self.instance.tagId + "-receive-option-ship").on("click", function (e) { if ("bag" === _self.config.feature ) { ถ้า (_self.data.triggerPOModal && _self.fromPreOrder) { e.preventDefault(); document.addEventListener("modal-affirmed", function (data) { if (data.detail === "preorder-ro-change -modal") { $("#" + _self.instance.tagId + "-receive-option-ship").prop("ตรวจสอบแล้ว", จริง); window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, เท็จ เท็จ _self.fromPreOrder); window.location.hash = ""; } }); document.addEventListener ("modal-rejected", function (data) { if (data.detail === "preorder-ro- change-modal") { $("#" + _self.instance.tagId + "-receive-option-presale").prop("checked", true); } }); window.location.hash = "preorder- ro-change-modal"; } อื่น { $("#" + _self.instance.tagId + "-receive-option-ship").prop("ตรวจสอบแล้ว" จริง); window.expose.cartInventory.deliveryOptionChange(_self .data.lineItemId, เท็จ, เท็จ, _self.fromPreOrder); } } อื่น { $("#" + _self.instance.tagId + "-receive-option-ship").prop("ตรวจสอบแล้ว", จริง); changePWCVisibility(เท็จ); } }); $C.find("#" + _self.instance.tagId + "-receive-option-presale").on("click", function (e) { if ("bag" === _self.config.feature) { window.expose.cartInventory.deliveryOptionChange(_self.data.lineItemId, เท็จ, จริง, เท็จ); } อื่น { changePWCVisibility(จริง); } });}ฟังก์ชัน Bopis_addPopperHandlers() { const _self = สิ่งนี้; constcheckedStorePattern = ".popper .stores input:checked"; var i, $C = $("#" + _self.instance.tagId), SelectedCount = 0; var isFix = (-1 !== navigator.userAgent.indexOf("iPhone OS 13_")); _self.to = null; ฟังก์ชัน sddChangeZip() { var zip = $C.find(".search-by-zip .zip-code.sdd").val(); วาร์ $f, $b; ถ้า (5 === ความยาว zip.) { ถ้า ("bagSddBanner" === _self.config.feature) { $f = $("#sddZipCode"); ถ้า ($f.length) { $f.val(zip); $b = $("#update-sddZip"); ถ้า ($b.length) { $C.find("#" + _self.instance.tagId + "-select-zip + .vlabel .as-link").html(zip); ถ้า (window.progress) { window.progress.show(); } _self.hidePopper(); $("input[type=\"hidden\"][name$=\"_updateCart\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateGiftBox\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateSameDayDelivery\"]").remove(); $b.click(); } } } อื่น { _self.data.sddZip = zip; _self.data.sddStoreId = ""; ถ้า (window.progress) { window.progress.show(); } _self.hidePopper(); _self.getSddStore(ฟังก์ชัน (ข้อมูล) { ถ้า (!_self.isObjectEmpty(ข้อมูล) && data.hasOwnProperty("store") && !_self.isStringEmpty(data.store)) { _self.data.sddStoreId = data.store; _self .getStoresByZipPidBatch(_self.data.skuId, _self.data.skuOrin, "", _self.data.sddZip, _self.data.sddStoreId, ฟังก์ชัน (parms, data) { log("pdp zip update data:", data); ถ้า (data.hasOwnProperty("สำเร็จ") && data.success && data.hasOwnProperty("sddStore") && !_self.isObjectEmpty(data.sddStore)) { _self.data.sddStore = data.sddStore; _self.data.sddStoreId = _self.data.sddStore.id; } ถ้า (_self.data.sddEnabled) { $C.find(".sdd-eligible").replaceWith(_self.buildSddEligibleBanner()); _self.addPDPZipSelectionHandlers(); } ถ้า ( window.progress) { window.progress.hide(); } }); } อื่น { log("no sddStoreId!"); if (_self.data.sddEnabled) { $C.find(".sdd-eligible") .replaceWith(_self.buildSddEligibleBanner()); _self.addPDPZipSelectionHandlers(); } ถ้า (window.progress) { window.progress.hide(); } } }); } } อื่น { $C.find(".popper.sdd .no-stores-msg").remove(); $C.find(".popper.sdd").ต่อท้าย("" + _self.config.messaging.notInStockX.replace("X", "" + ซิป + " ") + " " + _self.config.messaging.tryArea + "
"); } } ถ้า (0 < $C.length) { _self.multiSelectUpdate($C, $C.find(checkedStorePattern).length); $C.find(".zip-code:not(.conns)" ).on("keypress", function (e) { switch (e.key) { case "Enter": e.preventDefault(); if ($(e.currentTarget).siblings("button.update").length ) { sddChangeZip(); } อื่น { ค้นหา (); } ตัวแบ่ง กรณี "0": กรณี "1": กรณี "2": กรณี "3": กรณี "4": กรณี "5": กรณี "6" : case "7": case "8": case "9": break; default: e.preventDefault(); return false; break; } }); function iPhoneOS13PopperFix($this) { var $p = $C.find (".popper"); $p.hide(); setTimeout(function () { $p.show(); $this.focus(); }); } if (isFix) { $C.find(". รหัสไปรษณีย์").on("keyup", function (e) { var $this = $(this), $p = $C.find(".popper"); if (2 > $this.val() .length) { iPhoneOS13PopperFix($this); } }); } $C.find(".zip-code").on("paste", function (e) { var $o = $(this), v, nv, ret = false; setTimeout(function () { v = $o.val(); nv = v.replace(/[^0-9]/g, ""); if (v !== nv) { $o.val(nv); } }, 0); return true; }); _self.addStoreItemHandlers(); _self.updateInStockOnly(); $C.find(".filters input[name=\"in-stock-only\"]").on("click", function () { _self.updateInStockOnly(); }); การค้นหาฟังก์ชัน () { var ใช้ได้ = เท็จ; _self.data.zip = $C.find(".search-by-zip .zip-code.bopis").val(); ถ้า ("pdp" === _self.config.feature || "กระเป๋า" === _self.config.feature) { ถ้า (_self.isStringEmpty(_self.data.zip)) { _self.searchResponse(_self.data. skuId, "", {ความสำเร็จ: จริง, ร้านค้า: []}); } อื่น { ถ้า (window.progress) { window.progress.show(); } _self.getStoresByZipPidBatch(_self.data.skuId, _self.data.skuOrin, _self.data.zip, "", "", ฟังก์ชัน (parms, data) { _self.searchResponse(parms.pid, parms.zip, data) ; }); } } อื่น { if ("plp" === _self.config.feature) { _self.getStoresByZip(_self.data.zip, ฟังก์ชัน (zip, data) { var found = {}, SelectedStoreIds = [], saveSelected; ถ้า (_self.isObject(data) && data.hasOwnProperty("success") && data.success) { _self.data.zip = zip; _self.stores = data.stores; if (data.hasOwnProperty("readyHours") && _self .isNumber(data.readyHours)) { _self.readyHours = data.readyHours; } if (data.hasOwnProperty("pickupToday") && _self.isBoolean(data.pickupToday)) { _self.pickupToday = data.pickupToday; } if ( data.hasOwnProperty("pickupDay") && _self.isString(data.pickupDay)) { _self.data.pickupDay = data.pickupDay; } if (!_self.isArrayEmpty(_self.stores)) { found = _self.findFirstBopisStore() ; } if (!_self.isUndefined(found.store)) { _self.data.store = found.store; _self.data.storeId = found.store.id; SelectedStoreIds.push(found.store.id); _self SelectStoreIds = []; $C.find(".stores").empty(); $C.find(".stores").append(_self.buildStoresHtml()); $C.find(".zip-link ").ซ่อน().html(_self.data.zip); $C.find(".show-on-results").show(); $C.find(".no-stores-msg").remove(); _self.updatePopperScrollbar(); _self.addStoreItemHandlers(); } อื่น { _self.data.store = {}; $C.find(".show-on-results").hide(); $C.find(".no-stores-msg").remove(); $C.find(".popper").ผนวก("" + _self.config.messaging.notInStockX.replace("X", "" + _self.data.zip + " ") + " " + _self.config.messaging.tryArea + "
"); } } }); } } } ฟังก์ชัน handleConnsInvResponse(pid, data) { _self.data.connsInvData = data; $(".conns-label").replaceWith(_self.buildConnsDeliveryStatus()); _self.addConnsZipSelectionHandler( ); $("#conns-fields").html(_self.buildConnsFields()); } ฟังก์ชัน updateConnsZipCode() { var zip = $C.find(".search-by-zip .zip-code.conns") .val(); if (5 === zip.length) { if ("bag" === _self.config.feature) { $connsZip = $("#connsZipCode"); if ($connsZip.length) { $connsZip.val(zip); $updateZipButton = $("#update-connsZip"); if ($updateZipButton.length) { $C.find("#" + _self.instance.tagId + "-select-zip- conns + .vlabel .as-link").html(zip); if (window.progress) { window.progress.show(); } _self.hidePopper(); $("input[type=\"hidden\" ][ชื่อ$=\"_updateCart\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateGiftBox\"]").remove(); $( "input[type=\"hidden\"][name$=\"_updateSameDayDelivery\"]").remove(); $("input[type=\"hidden\"][name$=\"_updateSSDZipCode\" ]").remove(); $updateZipButton.click(); } } } อื่น { ถ้า (_self.data.connsZip !== zip) { _self.data.connsZip = zip; document.dispatchEvent (New CustomEvent ("conns-zip-updated", {รายละเอียด: {zip: zip, callback: handleConnsInvResponse, pid: _self.data.skuId}})); } _self.hidePopper(); } } } $C.find(".search-by-zip .update").on("คลิก", sddChangeZip); $C.find(".search-by-zip .search").on("คลิก", ค้นหา); $C.find(".search-by-zip .update-conns-zip").on("คลิก", updateConnsZipCode); $C.find(".search-by-zip .zip-code.conns").on("การกดปุ่ม", ฟังก์ชัน (e) { ถ้า (e.key === "Enter") { e.preventDefault() ; updateConnsZipCode(); } }); $C.find(".search-by-zip .clear-input").on("คลิก", ฟังก์ชัน (e) { var $z = $(e.currentTarget); if ($z.length) { $ z = $z.siblings(".zip-code"); $z.val(""); if (isFix) { iPhoneOS13PopperFix($z); } } }); $C.find(".zip-link").on("คลิก", ฟังก์ชัน (e) { e.stopPropagation(); $C.find(".zip").hide(); $C.find( ".top .zip-link").hide(); $C.find(".search-by-zip").show(); $C.find(".top").show(); _self. แก้ไข PopperPosition(); }); $C.find(".bottom .multi-select-results").on("click", function () { var $checkedStores, firstStoreId = "", firstStore = {}, storename = "", storeId = "" , sep = ""; $checkedStores = $C.find(".stores .rcheckbox:checked"); if (0 < $checkedStores.length) { firstStoreId = $checkedStores.eq(0.val(); if ( !_self.isStringEmpty(firstStoreId)) { _self.setSessionStore(firstStoreId); if (1 < $checkedStores.length) { ชื่อร้าน = _self.config.messaging.atStoresX.replace("X", $checkedStores.length); } อื่น { firstStore = _self.findStore(firstStoreId).store; ชื่อร้าน = firstStore.name; } $C.find(".select-store + .vlabel .as-link").html(ชื่อร้าน); _self.selectedStoreIds = [] ; $checkedStores.each(ฟังก์ชัน (i, o) { var v = $(o).val(); _self.selectedStoreIds.push(v); storeId += sep + v; sep = "|"; }); window.User.storeId = storeId; _self.hidePopper(); var $fbsp = $C.find("#filterByStorePickup"); if (0 < $fbsp.length) { if ($fbsp.prop("checked") ) { $fbsp.removeClass("js__allitems"); $fbsp.removeClass("js_nostore"); $fbsp.addClass("js__pickuptoday"); $fbsp.click(); $fbsp.removeClass("js__pickuptoday"); $fbsp.addClass("js__allitems"); } อื่น { $fbsp.addClass("js__pickuptoday"); $fbsp.click(); } } } อื่น { บันทึก ("ร้านแรก emtpy!"); } } }); } $(window).off("resize.bopis.popper").on("resize.bopis.popper", ฟังก์ชัน () { _self.fixPopperPosition(); });}ฟังก์ชัน Bopis_addOutlineHandlers() { const _self = สิ่งนี้ ; แฟล็ก var = เท็จ; var $C = $("#" + _self.instance.tagId); $C.on("คีย์ดาวน์", ฟังก์ชัน (e) { var $t = $(e.target), $n = $t, f = ""; if (9 === e.keyCode) { flag = true ; log("key 9"); } if (13 === e.keyCode) { log("key 13"); log("e.target:", e.target); if ($t.hasClass( "vlabel")) { f = $t.attr("for"); if (!_self.isStringEmpty(f)) { $n = $t.siblings("#" + f); } if (0 == = $n.length) { $n = $t.prev(); } } $n.trigger("คลิก"); } }); $C.on("focusin", function (e) { var $t = $(e.target); if (flag) { $t.removeClass("no-outline"); flag = false; $t.on ("เบลอ", ฟังก์ชัน () { $t.addClass("no-outline"); }); } });}ฟังก์ชัน Bopis_buildStoreId() { const _self = this; var str = ""; str += ""; ส่งคืน str;} ฟังก์ชัน Bopis_updateStoreId () { const _self = สิ่งนี้; var $i = $("input[name=\"store-ship-radio\"]"); $i.attr("value", _self.data.storeId);}ฟังก์ชัน Bopis_findStore(id) { const _self = this; var ฉันพบ = {}; สำหรับ (i = 0; i < _self.stores.length; i++) { ถ้า (id === _self.stores[i].id) { found.store = _self.stores[i]; found.offset = ผม; หยุดพัก; } } พบผลตอบแทน;} ฟังก์ชัน Bopis_findFirstBopisStore () { const _self = สิ่งนี้; var ฉันพบ = {}; สำหรับ (i = 0; i < _self.stores.length; i++) { ถ้า (_self.stores[i].bopis) { found.store = _self.stores[i]; found.offset = ผม; หยุดพัก; } } พบผลตอบแทน }ฟังก์ชัน Bopis_buildConnsOption () { const _self = สิ่งนี้; var str = "", ชื่อ = "ตัวเลือกรับ", labelText = ""; ถ้า (_self.isObjectEmpty(_self.data.connsSKUData)) { กลับ str; } สตร +=""; labelText = _self.buildConnsDeliveryStatus(); labelText +="
"; str ++= _self.buildInputRC({isMultiSelect: false, id: name + "-ship", value: "ship", name: name, content: labelText, isChecked: true, isMessage: false}); str ++= " "; return str;}function Bopis_buildConnsZipSelectionToggle(theClass, text) { const _self = this; var str = ""; str ++=""; str +="" + ข้อความ + " "; str +="
"; return str;} function Bopis_addConnsZipSelectionHandler() { const _self = this, zipClass = "select-zip-conns", ENS = "click." + _self.component.class + "." + zipClass + ".popper"; var $in, len; var $C = $("#" + _self.instance.tagId); var $zObj = $C.find("." + zipClass); $zObj.off(ENS); $zObj บน(ENS, ฟังก์ชัน (e) { $(".toggle-carrot.select-store").prop("ถูกเลือก", เท็จ); $(".toggle-carrot.select-store + .vlabel + .popper- ตำแหน่ง .popper").hide(); _self.isPopperOpen = false; if ($(e.currentTarget).prop("checked")) { _self.showPopper(zipClass); $in = $C.find(". popper .search-by-zip .zip-code.conns"); $in.focus(); len = $in.val().length; $in[0].setSelectionRange(len, len); } อื่น { _self.hidePopper(); } e.stopPropagation(); });} function Bopis_buildConnsDeliveryStatus() { const _self = this, zipClass = "select-zip-conns", M = _self.config.messaging, toDeliver = M.connsToDeliver , ในสต็อก = _self.data.connsInvData.inStock && (_self.config.feature === "pdp" ? _self.data.connsInvData.hasOwnProperty("conns") && _self.data.connsInvData.conns.location != "" : จริง), isDeliveryItem = _self.data.connsSKUData.hasOwnProperty("การจัดส่ง") && _self.data.connsSKUData.delivery, deliveryOptionTitle = isDeliveryItem ? M.connsTruckDelivery : M.ship, errorDeliveryElement = document.querySelector ("#js-error-delivery"); var str = "", deliveryMessage = "", zipLabel = "เลือกพื้นที่ของคุณ", มีสินค้า = มีในสต็อก ? "มี" : "ไม่สามารถ", isConnsZipAvailable = !_self.isStringEmpty(_self.data.connsZip); สตริง +="
" + deliveryOptionTitle; if (!_self.isObjectEmpty(_self.data.connsInvData) && !_self.isObjectEmpty(_self.data.connsSKUData) && _self.data.connsSKUData.delivery && _self.data.connsInvData.conns && _self.data connsInvData.conns.hasOwnProperty("วันที่จัดส่ง") && _self.data.connsInvData.conns.deliveryDate !== null) { str += " -" + M.connsDeliveryDate + " " + _self.data.connsInvData.conns.deliveryDate + " "; } อื่น { ถ้า (!_self.isObjectEmpty(_self.data.connsSKUData) && !_self.data.connsSKUData.delivery && _self.config.feature === "กระเป๋า") { str ++ " -" + _self.config.messaging.estimatedDelivery + _self.data.connsInvData.conns.deliveryDate + " "; } } สต +=" "; if (!inStock) { zipLabel = "ลองพื้นที่อื่น"; deliveryMessage += available + toDeliver; deliveryMessage += isConnsZipAvailable ? _self.data.connsZip : _self.data.sddZip; deliveryMessage += "."; } else { ถ้า (!_self.isStringEmpty(_self.data.connsZip) || !_self.isStringEmpty(_self.data.sddZip)) { zipLabel = isConnsZipAvailable ? _self.data.connsZip : _self.data.sddZip; deliveryMessage += ความพร้อมใช้งาน + toDeliver ; } } ถ้า (!isConnsZipAvailable) { _self.data.connsZip = _self.data.sddZip; } str += "" + ข้อความส่งของ + " "; str += _self.buildConnsZipSelectionToggle(zipClass, zipLabel); if (inStock && isDeliveryItem && zipLabel !== "" && _self.config.feature !== "bag") { str +="
"; _self.buildConnsDeliveryPrice(_self.baseAjaxUrl, _self.data.skuId, zipLabel); } return str;}function Bopis_buildConnsFields() { const _self = this, zip = _self.data.connsZip !== "" ? _self.data .connsZip : _self.data.sddZip; var str = ""; if (!_self.isObjectEmpty(_self.data.connsInvData) && !_self.isObjectEmpty(_self.data.connsInvData.conns)) { str +=" ""; $("#add-to-cart").removeClass("disabled add-to-cart-disabled").addClass("add-to-cart").prop("disabled", false).attr("ประเภท ", "submit"); } str +=" ""; return str;}function Bopis_buildConnsDeliveryPrice(ajaxUrl, pid, zip) { if (window.progress) { window.progress.show(); } var url = ajaxUrl + " COConns-GetDeliveryCharges?pid=" + pid + "&zipCode=" + zip; $.ajax(url, {success: function (data) { if (data && data.hasOwnProperty("delivery")) { ให้ deliveryPriceEl = เอกสาร querySelector(".conns-delivery-price"); if (deliveryPriceEl !== null) { deliveryPriceEl.innerHTML = data.delivery === "0.00" ? "FREE" : "$" + data.delivery; } } ถ้า (window.progress) { window.progress.hide(); } }});}ฟังก์ชัน Bopis_update (ข้อมูล) { const _self = สิ่งนี้; วาร์ $C; _self.log("Bopis.update ถูกเรียกด้วยข้อมูลใหม่:", data); $C = $("#" + _self.instance.tagId); ถ้า (!$C.length) { _self.log("จำเป็นต้องสร้างส่วนประกอบใหม่"); $(".bopis-filter-options").html(_self.buildComponentTag()); $C = $("#" + _self.instance.tagId); } ถ้า (ข้อมูล) { Object.assign(_self.data, data); _self.reset(); } $C.empty(); $C.html(_self.html());}var cNames={"Bopis":{isNull:isNull,isUndefined:isUndefined,isBoolean:isBoolean,isFunction:isFunction,isNumber:isNumber,isString:isString,isStringEmpty:isStringEmpty, isArray:isArray,isArrayEmpty:isArrayEmpty,isObject:isObject,isObjectEmpty:isObjectEmpty,isObjectNotEmpty:isObjectNotEmpty,isObjectAndEmpty:isObjectAndEmpty,isObjectAndNotEmpty:isObjectAndNotEmpty,isBaseObject:isBaseObject,isBaseObjectAndEmpty:isBaseObjectAndEmpty,isBaseObjectAndNotEmpty: isBaseObjectAndNotEmpty,isEmpty:isEmpty,toBoolean:toBoolean,getUrlParm: getUrlParm,addUrlParms:addUrlParms,objPropDef:objPropDef,jsonClone:jsonClone,jsonCompare:jsonCompare,performJsonAjaxRequests:performJsonAjaxRequests,pad:pad,createId:createId,onNtoE:onNtoE,onEtoVal:onEtoVal,log:log,newInstance:newIn ท่าทาง, buildStyle:buildStyle, buildTagString:buildTagString,buildComponentTag:buildComponentTag,copyObjectNameMapDefault:copyObjectNameMapDefault,copyObject:copyObject,mergeObjects:mergeObjects,persist:persist,html:Bopis_html,baseAjaxUrl:"/on/demandware.store/Sites-Belk-Site/default/",isPopperOpen: เท็จ,promoMsg:"",isPromoMsg:false,promoMsgAssetID:"",shipPromoMsg:"",isShipPromoMsg:false,firstStoreItem:0,ignoreNextClosePopper:false,hasPreOrderResponse:false,fromPreOrder:false,feature:{},store:{} ,ร้านค้า:[],sddZipToStoreCache:{},lastSkuId:"ไม่มี",ข้อผิดพลาด:false,searchResults:{"isSearch":false,"bopis":false,"inStore":false,"store":{}}, รหัสร้านค้าที่เลือก:[],ในสต็อกเท่านั้น:จริง,getDeliveryConfigBatch:Bopis_getDeliveryConfigBatch,getStoresByZipPidBatch:Bopis_getStoresByZipPidBatch,validateData:Bopis_validateData,รีเซ็ต:Bopis_reset,plp:Bopis_plp,pdp:Bopis_pdp,กระเป๋า: Bopis_bag,bagSddBanner:Bopis_bagSddBanner,isPickupDisabled:Bopis_isPickupDisabled,isStoresDataNeeded:Bopis_isStoresDataNeeded,buildInputRC :Bopis_buildInputRC,buildPDP:Bopis_buildPDP,fixStoreData:Bopis_fixStoreData,getBopisPromoMessaging:Bopis_getBopisPromoMessaging,getShippingPromoMessage:Bopis_getShippingPromoMessage,getStoresByZip:Bopis_getStoresByZip,getSddStore:Bopis_getSddStore setSessionStore:Bopis_setSessionStore,getPreOrderFCInventory:Bopis_getPreOrderFCInventory,availabilityMessage:Bopis_availabilityMessage,buildSelectionToggle:Bopis_buildSelectionToggle,buildStoreSelectionToggle:Bopis_buildStoreSelectionToggle,searchStores:Bopis_searchStores ,updateInStockOnly:Bopis_updateInStockOnly,searchResponse:Bopis_searchResponse,pickupTodayOrTomorrow:Bopis_pickupTodayOrTomorrow,buildPickupOption:Bopis_buildPickupOption,buildPreSaleOption:Bopis_buildPreSaleOption,buildProductShipStatus:Bopis_buildProductShipStatus,buildProduct PickupStatus:Bopis_buildProductPickupStatus,buildStoreHtml:Bopis_buildStoreHtml,buildMyStoreHtml:Bopis_buildMyStoreHtml,buildStoreItemHtml:Bopis_buildStoreItemHtml,buildStoresHtml:Bopis_buildStoresHtml,buildToolTip:Bopis_buildToolTip,buildSddEligible แบนเนอร์ :Bopis_buildSddEligibleBanner,buildPopper:Bopis_buildPopper,showPopper:Bopis_showPopper,hidePopper:Bopis_hidePopper,hidePoppers:Bopis_hidePoppers,updatePopperScrollbar:Bopis_updatePopperScrollbar,fixPopperPosition:Bopis_fixPopperPosition,multiSelectUpdate:Bopis_multiSelect ปรับปรุง เพิ่ม PDPZipSelectionHandlers:Bopis_addPDPZipSelectionHandlers,addStoreItemHandlers:Bopis_addStoreItemHandlers,addStoreSelectionHandlers:Bopis_addStoreSelectionHandlers,addPopperHandlers:Bopis_addPopperHandlers,addOutlineHandlers:Bopis_addOutlineHandlers ,buildStoreId:Bopis_buildStoreId,updateStoreId:Bopis_updateStoreId,findStore:Bopis_findStore,findFirstBopisStore:Bopis_findFirstBopisStore,buildConnsOption:Bopis_buildConnsOption,buildConnsZipSelectionToggle:Bopis_buildConnsZipSelectionToggle,addConnsZipS ElectionHandler:Bopis_addConnsZipSelectionHandler,buildConnsDeliveryStatus:Bopis_buildConnsDeliveryStatus,buildConnsFields:Bopis_buildConnsFields,buildConnsDeliveryPrice:Bopis_buildConnsDeliveryPrice,update:Bopis_update,super:{}, ส่วนประกอบ:{"name":"Bopis","class":"vco_Bopis"},ค่าเริ่มต้น:{"data":{"productOnlineOnly":false,"skuOnlineOnly":false,"bopisEnabled":false,"findInStoreEnabled": false,"curbSidePickupEnabled":false,"sddEnabled":false,"fisEnabled":true,"bopisProduct":true,"bopisSku":false,"zip":"","storeId":"","productInStock": เท็จ,"skuId":"","skuStockLevel":-1,"surchargeAmount":"","showPreOrder":false,"isPreOrderEnabled":false,"preOrderSelected":false,"hasPreOrderInventory":false,"triggerPOModal" :false,"isQuickView":false,"releaseDate":"","preOrderPromoId":"","preOrderPromoDetails":"","store":{},"estimatedShippingMessage":"","sddZip":"" ,"sddStoreId":"","sddStore":{},"sddSameDay":true,"skuSddEligible":false,"skuShipEligible":false,"storeSearchDistance":50,"pickupDay":"","mirakl": เท็จ,"bopisPromoAssetID":"bopis-promo-messaging","isConnsItem":false,"connsSKUData":{},"connsInvData":{},"connsZip":""},"config":{"init" :{"searchResults":{"isSearch":false,"bopis":false,"inStore":false}},"feature":"","features":{"plp":{"moveToLeftOnDesktop":true, "isMultiSelect":true,"showFilters":false,"myStore":false,"showStock":false,"storeListLimit":0,"storeSelectLimit":5,"hideScrollbars":false},"pdp":{"isMultiSelect ":false,"showFilters":true,"myStore":false,"showStock":true,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false},"bag":{"isMultiSelect": เท็จ,"showFilters":true,"myStore":false,"showStock":true,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false},"bagSddBanner":{"isMultiSelect":false, "showFilters":false,"myStore":false,"showStock":false,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false}},"readyHours":4,"pickupToday":true, "tags":{},"messaging":{"sdd":{"title":"Same Day Delivery","pre":"ใหม่! ","sameDayPre":"รับเลยวันนี้! ","nextDayPre":"เร็วเข้า! ","elitesPre":"Elites Get FREE","forElites":"for Elites","Free":"FREE","delivers":"Delivers by {{E}} {{T}}."," มีสิทธิ์":"คุณมี {{X}} รายการที่มีสิทธิ์{{S}} สั่งซื้อภายใน {{C}} เพื่อได้รับภายในวันนี้ภายใน {{E}}.","eligibleCutoff":"เลยเวลาสำหรับวันเดียวกันไปแล้ว รับ {{X}} รายการ{{S}} พรุ่งนี้ภายใน {{E}}.","eligibleActive":"{{X}} รายการ{{S}} จัดส่งวันนี้ภายใน {{E}}"," มีสิทธิ์ ActiveCutoff":"เลยเวลาของวันเดียวกันไปแล้ว {{X}} รายการ{{S}} จัดส่งพรุ่งนี้ภายในวันที่ {{E}}.","eligiblePresale":"สั่งซื้อภายใน {{C}} เพื่อรับ {{X}} รายการภายในวันนี้ภายใน {{E}} สินค้าพรีเซลล์จะยังคงจัดส่งในวันที่วางจำหน่าย","eligiblePresaleCutoff":"เลยเวลาสำหรับวันเดียวกันไปแล้ว รับ {{X}} รายการ{{S}} ในวันพรุ่งนี้ภายใน {{E}} การขายล่วงหน้าจะจัดส่งในวันที่วางจำหน่าย","noSddInZip":"สินค้าของคุณไม่พร้อมจำหน่ายในวันเดียวกันสำหรับ ZIP นี้","noZip":"ป้อน ZIP ของคุณเพื่อตรวจสอบความพร้อมจำหน่ายสินค้า","zipNotEligible":"สิ่งนี้ บริการไม่พร้อมใช้งานใน ZIP ของคุณ","msgEligible":"มีสิทธิ์สำหรับการจัดส่งในวันเดียวกัน","msgNotEligible":"ไม่มีสิทธิ์สำหรับการจัดส่งในวันเดียวกัน"},"stock":{"ใน":"ในสต็อก", "ต่ำ":"เหลือน้อย","lowX":"เหลือ X","หมด":"สินค้าหมด","น้อยกว่า":"สินค้าไม่เพียงพอ"},"bopisDisabled":"ไม่สามารถรับสินค้าได้ชั่วคราว"," shipFree":"Ship It","ship":"Ship It","productOut":"สินค้านี้หมดสต็อก","productOutNear":"สินค้านี้หมดสต็อกภายใน {{D}} ไมล์จาก {{Z}}","skuOut":"ตัวเลือกรายการที่คุณเลือกหมดในขณะนี้","productOnlineOnly":"รายการนี้ออนไลน์เท่านั้น","skuOnlineOnly":"ตัวเลือกรายการที่เลือกอยู่ในสถานะออนไลน์ เท่านั้น","bopisOnly":"รับที่ร้านเท่านั้น","noShip":"ไม่มีบริการจัดส่ง","bopis":"รับที่ร้านฟรี","notBopis":"ไม่สามารถรับสินค้าได้","noBopisNearby":"รับสินค้า ไม่มีจำหน่ายในบริเวณใกล้เคียง","readyTimeX":"คำสั่งซื้อส่วนใหญ่พร้อมภายใน X ชั่วโมง!","atMyStore":"ไปที่ร้านค้าเพื่อซื้อที่ ","storeClosure":"ร้านค้าปิดชั่วคราว","storeClosed":"ร้านค้าเปิดอยู่ ปิดชั่วคราว","atNearStore":"ไปที่ร้านค้าเพื่อซื้อ","notNearby":"ไม่มีในสต็อกภายใน {{D}} ไมล์","noStoresNearby":"ไม่มีร้านค้าภายใน {{D}} ไมล์", "selectZip":"ลองพื้นที่อื่น","selectStore":"ค้นหาร้านค้า","selectSizeBopisOnly":"เลือกขนาดเพื่อค้นหาในร้านค้า","selectSize":"โปรดเลือกขนาดเพื่อตรวจสอบความพร้อมในร้านค้า" ,"selectSizeForOpt":"เลือกขนาดเพื่อดูตัวเลือกการจัดส่ง","ใกล้เคียง":"มีจำหน่ายในบริเวณใกล้เคียง","noStoresX":"ไม่มีร้าน Belk ตั้งอยู่ใกล้กับ X","notInStockX":"สินค้าไม่มีในสต็อกที่ ร้านค้าใกล้ X","tryArea":"ลองพื้นที่อื่นหรือร้านค้าออนไลน์แล้วเราจะจัดส่งให้","atStoresX":"ที่ X Stores Near You","estimatedDelivery":" มาถึงใน ","surchargeAmountApplies ":"มีค่าบริการเพิ่มเติมสำหรับสินค้าขนาดใหญ่","preSaleHeader":"Pre-sale","preSaleShipMessage":"จัดส่งพร้อมของขวัญ","preSaleCouponExclusionMessage":"ไม่รวมคูปองและของขวัญที่ไม่ใช่ก่อนการขาย","receiveOptionsHeader": "วิธีการรับ","connsTruckDelivery":"การจัดส่งด้วยรถบรรทุก","connsDeliveryDate":"มาถึง","connsToDeliver":" เพื่อส่งมอบที่ "}}}}};if (window.comp.hasOwnProperty('insert' )) nextInsert=window.comp.insert;window.comp={VERSION:"0.3.4.0",debug:debug,insert:insert,attach:attach,getComs:getComs,update:update};})(หน้าต่างเอกสาร );
\r\n
\r\nการจัดส่งในวันเดียวกันคือ $14.95 ต่อคำสั่งซื้อหรือเพียง $9.95 หากคุณถึงเกณฑ์การจัดส่ง \r\nสั่งซื้อภายใน 14.00 น. รับวันเดียวกัน! การสั่งซื้อหลัง 14.00 น. จะถูกจัดส่งภายในเวลา 21.00 น. ของวันถัดไป \r\nจัดส่งในวันเดียวกันสำหรับรายการและรหัสไปรษณีย์ที่มีสิทธิ์เท่านั้น \r\n ","showInMobile":true,"mobileContent":"
จัดส่งในวันเดียวกัน
\r\n
\r\nการจัดส่งในวันเดียวกันคือ $14.95 ต่อคำสั่งซื้อหรือเพียง $9.95 หากคุณถึงเกณฑ์การจัดส่ง \r\nสั่งซื้อภายใน 14.00 น. รับวันเดียวกัน! การสั่งซื้อหลัง 14.00 น. จะถูกจัดส่งภายในเวลา 21.00 น. ของวันถัดไป \r\nจัดส่งในวันเดียวกันสำหรับรายการและรหัสไปรษณีย์ที่มีสิทธิ์เท่านั้น \r\n "}},{"init":{"searchResults":{"isSearch":false,"bopis":false,"inStore":false}},"feature":"pdp","features":{"plp ":{"moveToLeftOnDesktop":true,"isMultiSelect":true,"showFilters":false,"myStore":false,"showStock":false,"storeListLimit":0,"storeSelectLimit":5,"hideScrollbars":false },"pdp":{"isMultiSelect":false,"showFilters":true,"myStore":false,"showStock":true,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false}, "bag":{"isMultiSelect":false,"showFilters":true,"myStore":false,"showStock":true,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false},"bagSddBanner ":{"isMultiSelect":false,"showFilters":false,"myStore":false,"showStock":false,"storeListLimit":0,"storeSelectLimit":0,"hideScrollbars":false}},"readyHours" :4,"pickupToday":true,"tags":{},"messaging":{"sdd":{"title":"Same Day Delivery","pre":"ใหม่! ","sameDayPre":"รับเลยวันนี้! ","nextDayPre":"เร็วเข้า! ","elitesPre":"Elites Get FREE","forElites":"for Elites","Free":"FREE","delivers":"Delivers by {{E}} {{T}}."," มีสิทธิ์":"คุณมี {{X}} รายการที่มีสิทธิ์{{S}} สั่งซื้อภายใน {{C}} เพื่อได้รับภายในวันนี้ภายใน {{E}}.","eligibleCutoff":"เลยเวลาสำหรับวันเดียวกันไปแล้ว รับ {{X}} รายการ{{S}} พรุ่งนี้ภายใน {{E}}.","eligibleActive":"{{X}} รายการ{{S}} จัดส่งวันนี้ภายใน {{E}}"," มีสิทธิ์ ActiveCutoff":"เลยเวลาของวันเดียวกันไปแล้ว {{X}} รายการ{{S}} จัดส่งพรุ่งนี้ภายในวันที่ {{E}}.","eligiblePresale":"สั่งซื้อภายใน {{C}} เพื่อรับ {{X}} รายการภายในวันนี้ภายใน {{E}} สินค้าพรีเซลล์จะยังคงจัดส่งในวันที่วางจำหน่าย","eligiblePresaleCutoff":"เลยเวลาสำหรับวันเดียวกันไปแล้ว รับ {{X}} รายการ{{S}} ในวันพรุ่งนี้ภายใน {{E}} การขายล่วงหน้าจะจัดส่งในวันที่วางจำหน่าย","noSddInZip":"สินค้าของคุณไม่พร้อมจำหน่ายในวันเดียวกันสำหรับ ZIP นี้","noZip":"ป้อน ZIP ของคุณเพื่อตรวจสอบความพร้อมจำหน่ายสินค้า","zipNotEligible":"สิ่งนี้ บริการไม่พร้อมใช้งานใน ZIP ของคุณ","msgEligible":"มีสิทธิ์สำหรับการจัดส่งในวันเดียวกัน","msgNotEligible":"ไม่มีสิทธิ์สำหรับการจัดส่งในวันเดียวกัน"},"stock":{"ใน":"ในสต็อก", "ต่ำ":"เหลือน้อย","lowX":"เหลือ X","หมด":"สินค้าหมด","น้อยกว่า":"สินค้าไม่เพียงพอ"},"bopisDisabled":"ไม่สามารถรับสินค้าได้ชั่วคราว"," shipFree":"Ship It","ship":"Ship It","productOut":"สินค้านี้หมดสต็อก","productOutNear":"สินค้านี้หมดสต็อกภายใน {{D}} ไมล์จาก {{Z}}","skuOut":"ตัวเลือกรายการที่คุณเลือกหมดในขณะนี้","productOnlineOnly":"รายการนี้ออนไลน์เท่านั้น","skuOnlineOnly":"ตัวเลือกรายการที่เลือกอยู่ในสถานะออนไลน์ เท่านั้น","bopisOnly":"รับที่ร้านเท่านั้น","noShip":"ไม่มีบริการจัดส่ง","bopis":"รับที่ร้านฟรี","notBopis":"ไม่สามารถรับสินค้าได้","noBopisNearby":"รับสินค้า ไม่มีจำหน่ายในบริเวณใกล้เคียง","readyTimeX":"คำสั่งซื้อส่วนใหญ่พร้อมภายใน X ชั่วโมง!","atMyStore":"ไปที่ร้านค้าเพื่อซื้อที่ ","storeClosure":"ร้านค้าปิดชั่วคราว","storeClosed":"ร้านค้าเปิดอยู่ ปิดชั่วคราว","atNearStore":"ไปที่ร้านค้าเพื่อซื้อ","notNearby":"ไม่มีในสต็อกภายใน {{D}} ไมล์","noStoresNearby":"ไม่มีร้านค้าภายใน {{D}} ไมล์", "selectZip":"ลองพื้นที่อื่น","selectStore":"ค้นหาร้านค้า","selectSizeBopisOnly":"เลือกขนาดเพื่อค้นหาในร้านค้า","selectSize":"โปรดเลือกขนาดเพื่อตรวจสอบความพร้อมในร้านค้า" ,"selectSizeForOpt":"เลือกขนาดเพื่อดูตัวเลือกการจัดส่ง","ใกล้เคียง":"มีจำหน่ายในบริเวณใกล้เคียง","noStoresX":"ไม่มีร้าน Belk ตั้งอยู่ใกล้กับ X","notInStockX":"สินค้าไม่มีในสต็อกที่ ร้านค้าใกล้ X","tryArea":"ลองพื้นที่อื่นหรือร้านค้าออนไลน์ แล้วเราจะจัดส่งให้","atStoresX":"ที่ X Stores Near You","estimatedDelivery":" มาถึงใน ","surchargeAmountApplies ":"มีค่าบริการเพิ่มเติมสำหรับสินค้าขนาดใหญ่","preSaleHeader":"Pre-sale","preSaleShipMessage":"จัดส่งพร้อมของขวัญ","preSaleCouponExclusionMessage":"ไม่รวมคูปองและของขวัญที่ไม่ใช่ก่อนการขาย","receiveOptionsHeader": "วิธีการรับ","connsTruckDelivery":"การจัดส่งด้วยรถบรรทุก","connsDeliveryDate":"มาถึง","connsToDeliver":" เพื่อส่งมอบที่ "},"request":"insert"});
เพิ่มในกระเป๋า เพิ่มในรีจิสทรี
เพิ่มเข้าในรายการที่ต้องการ