www.hooshops.com Open in urlscan Pro
104.17.247.119  Public Scan

Submitted URL: http://www.hooshops.com/0.9232618644003948
Effective URL: https://www.hooshops.com/0.9232618644003948
Submission: On July 14 via api from US — Scanned from DE

Form analysis 6 forms found in the DOM

<form>
  <input name="variant_id" type="hidden" value="${data.variants[0].id}">
  <button type="button" class="product-snippet__quick-shop-icon" role="addToCart" data-quick-shop="${data.handle}" data-track-product-id="${data.id}" data-track="click" data-track-content="add_to_cart" data-track-source="quick_shop">
    <svg class="" width="16" height="16" xmlns="http://www.w3.org/2000/svg">
      <path d="M8.6 1.9a.3.3 0 0 0-.3-.3h-.6a.3.3 0 0 0-.3.3v5.5H1.9a.3.3 0 0 0-.3.3v.6a.3.3 0 0 0 .3.3h5.5v5.5a.3.3 0 0 0 .3.3h.6a.3.3 0 0 0 .3-.3V8.6h5.5a.3.3 0 0 0 .3-.3v-.6a.3.3 0 0 0-.3-.3H8.6V1.9z" fill="currentColor"></path>
    </svg>
  </button>
</form>

GET /search

<form class="flex items-center" action="/search" method="get">
  <button type="submit" class="clear text-0 text-inherit cursor-pointer">
    <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg">
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M17.925 20.057A9.955 9.955 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10a9.968 9.968 0 0 1-2.864 7.006l4.929 4.928a.8.8 0 0 1-1.132 1.132l-5-5-.008-.01zM20.4 12a8.4 8.4 0 1 1-16.8 0 8.4 8.4 0 0 1 16.8 0z"
        fill="currentColor"></path>
    </svg>
  </button>
  <input @input-debounced="header_search_predictive_render-sidebar.rerender(data=event.value, redo=true);" class="header__search_sidebar-input flex-1 text-base leading-none type-text-font-family clear" type="text" autocomplete="off" name="q"
    placeholder="Search products">
  <button type="reset" class="header__search-modal-close text-0 text-inherit clear cursor-pointer" @tap="header_search_sidebar.close()">
    <svg class="" width="26" height="26" xmlns="http://www.w3.org/2000/svg">
      <path d="M21.502 5.732A.85.85 0 0 0 20.3 4.53l-7.32 7.32L5.734 4.6a.85.85 0 0 0-1.202 1.203l7.248 7.247L4.53 20.3A.85.85 0 0 0 5.733 21.5l7.248-7.248 7.319 7.319a.85.85 0 0 0 1.202-1.202l-7.319-7.319 7.319-7.319z" fill="currentColor"></path>
    </svg>
  </button>
</form>

GET

<form id="smart-search-form" class="smart-search-form" method="GET" is="spz-form" @submit="smart-search.handleSearchSubmit(value=event.q);">
  <div class="smart-search-input-content">
    <svg class="icon-search " width="18" height="18" xmlns="http://www.w3.org/2000/svg">
      <path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
      <path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
        fill="currentColor"></path>
    </svg>
    <input class="smart-search-input" type="search" name="q" spz-if="${data.isOpenAutoThink}" @input-debounced="smart-search.handleFormInput(keyword=event.value);" autocorrect="off" autocomplete="off" autocapitalize="off" spellcheck="false">
    <input class="smart-search-input" type="search" name="q" spz-else="">
    <spz-carousel class="hot-keyword-carousel" spz-if="${data.isOpenFindKeyword}" layout="container" loop="" autoplay="" delay="3000" direct="vertical" @slideend="smart-search.handleFindKeyword(index=event.index);">
      <span class="hot-keyword line-clamp-1" spz-for="(item,index) in data.findKeywordList" key="index">${item}</span>
    </spz-carousel>
    <button class="smart-search-reset-btn" type="reset" @tap="smart-search-form.clear();smart-search.handleFormInput(keyword='');">
      <svg class="icon_header_input_close icon-smart-search-reset" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
        <path
          d="M2.746 1.992a.2.2 0 0 0-.283 0l-.471.471a.2.2 0 0 0 0 .283L5.245 6 1.992 9.25a.2.2 0 0 0 0 .283l.471.472a.2.2 0 0 0 .283 0L6 6.753l3.252 3.253a.2.2 0 0 0 .283 0l.472-.472a.2.2 0 0 0 0-.283L6.753 6l3.253-3.253a.2.2 0 0 0 0-.283l-.472-.471a.2.2 0 0 0-.283 0L6 5.245 2.746 1.992z"
          fill="currentColor"></path>
      </svg>
    </button>
  </div>
  <button type="submit" class="smart-search-submit-btn button-primary"> Search </button>
</form>

<form>
  <div class="quick-shop-content rounded-global-small">
    <div class="quick-shop-inner-content">
      <spz-variants name="quick-shop-variant" id="quick-shop-variants" class="pointer-events-none" layout="container" template="quick-shop-variant-template" spz-if="${product_options &amp;&amp; product_options.length > 0}"
        @mouseout="${mouse_out_event}" interact="hover" interference="" ${mouse_over_event}=""></spz-variants>
      <button class="relative mt-5 lg:mt-6 button-primary flex items-center justify-center body-plus-2  type-text-font-family rounded-btn quick-shop_atc_btn" type="button" role="addToCart" data-track="click" data-track-content="add_to_cart"
        data-track-source="add_to_cart">
        <span role="content">${statusLan}</span>
        <spz-render id="quick-shop-btn-price" layout="container" template="quick-shop-button-price-template" manual=""></spz-render>
        <div class="loading items-center justify-center absolute inset-0" role="loading" show="">
          <div class="loading-bounce"></div>
        </div>
      </button>
    </div>
  </div>
</form>

<form class="">
  <div class="zb-flex">
    <a href="${product.url}?${toQuery({ aid: 'smart_recommend.2.' + data.id, ifb: product.ifb || '', cfb: product.cfb || '', scm: product.scm || data.scm || '', ssp: data.ssp || '' })}" impr="1" imprevt="1" class="zb-w-[132px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0" data-prdct="${product.id}" data-ifb="${product.ifb || ''}" data-cfb="${product.cfb || ''}" data-scm="${product.scm || data.scm || ''}" data-spm="${productIndex}"> <ljs-render layout="container" id="smart_cart_pop_image_${product.id}" template="smart_cart_pop_image_template" manual=""></ljs-render> </a>
    <div class="zb-flex zb-flex-col zb-flex-grow zb-justify-between">
      <div>
        <div class="zb-line-clamp-2 zb-text-sm zb-mb-2">${product.title}</div> <ljs-render layout="container" id="smart_cart_pop_price_${product.id}" template="smart_cart_pop_price_template" manual=""></ljs-render>
      </div>
      <div>
        <div class="zb-relative zb-w-full zb-cursor-pointer">
          <div class="zb-border zb-border-solid zb-border-[#eee] zb-px-3 zb-py-[10px] zb-flex zb-items-center zb-justify-between zb-font-semibold zb-text-sm zb-rounded-sm"
            @tap="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);smart_cart_pop_variant_${product.id}_mobile.toggleClass(class=zb-hidden);smart_cart_pop_variant_${product.id}_pc.toggleClass(class=smart_cart_pop_variant_pc_show,force=true);smart_cart_pop_variant_modal_${product.id}.open"
            spz-if="${!!(product.options &amp;&amp; product.options.length &amp;&amp; product.options.length > 0) &amp;&amp; data.config.variant_select_visible}"> <ljs-render manual="" layout="container" id="smart_cart_pop_variant_text_${product.id}"
              template="smart_cart_pop_variant_text_template"></ljs-render> <svg id="smart_pop_variant-select-${product.id}" width="12" height="8" class="zb-ml-2" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
              <path
                d="M6.00002 7.06738C6.19244 7.06775 6.38498 6.99453 6.5318 6.84772C6.54504 6.83447 6.55769 6.82086 6.56973 6.8069L11.1251 2.25152C11.418 1.95863 11.418 1.48375 11.1251 1.19086C10.8322 0.897968 10.3573 0.897968 10.0645 1.19086L6.00003 5.25529L1.9356 1.19086C1.64271 0.897968 1.16784 0.897968 0.874943 1.19086C0.58205 1.48375 0.58205 1.95863 0.874943 2.25152L5.43033 6.8069C5.44237 6.82086 5.45502 6.83447 5.46826 6.84772C5.61507 6.99453 5.8076 7.06775 6.00002 7.06738Z"
                fill="#0A1533"></path>
            </svg> </div> <ljs-lightbox layout="nodisplay" disable-unmount="" class="smart_cart_pop_lightbox_pc" id="smart_cart_pop_variant_modal_${product.id}" @close="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);">
            <div id="smart_cart_pop_variant_${product.id}_pc" class="zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
                class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template"
                onclick="event.stopPropagation()" disabled-dj-event="" interference=""> </ljs-variants></div>
          </ljs-lightbox>
        </div>
        <div class="zb-mt-3"> <button product-id="${product.id}" id="smart_cart_pop_atc_btn_${product.id}"
            class="zb-flex zb-items-center zb-justify-center zb-w-full zb-text-white zb-py-[10px] zb-h-9 zb-text-xs zb-font-normal zb-border-none zb-rounded-[4px] smart_cart_pop_atc_btn_bg" type="button" role="addToCart"
            @tap="smart_cart_pop_loading_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_btn_${product.id}.toggleClass(class=zb-pointer-events-none);custom-func.addATCHook(activity_id='${data.id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${product.scm || data.scm}',ssp='${data.ssp}',spm='${data.spmBase}.${productIndex}')">
            <ljs-render layout="container" id="smart_cart_pop_atc_${product.id}" template="smart_cart_pop_atc_template" mamual="" class="notranslate"> </ljs-render>
            <div id="smart_cart_pop_added_${product.id}" class="zb-hidden"><span class="zb-flex zb-justify-center zb-gap-1"><svg width="14" height="15" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
                  <path
                    d="M8 16.5006C3.58171 16.5006 0 12.9183 0 8.5C0 4.08171 3.58171 0.5 8 0.5C12.4183 0.5 16 4.08171 16 8.5C16 12.9183 12.4183 16.5006 8 16.5006ZM8 2.04344C4.21314 2.04344 1.54287 4.71371 1.54287 8.50057C1.54287 12.2874 4.21314 14.9577 8 14.9577C11.7869 14.9577 14.4571 12.2874 14.4571 8.50057C14.4571 4.71371 11.7869 2.04344 8 2.04344ZM7.26057 11.1909L7.12229 11.3286L7.09543 11.3017C7.02286 11.336 6.94286 11.3577 6.85714 11.3577C6.73543 11.3577 6.62857 11.3109 6.536 11.2463L6.52229 11.2594L6.45371 11.1909C6.45314 11.1903 6.45314 11.1903 6.45257 11.1897L4.09771 8.83486L4.90629 8.02686L6.85714 9.97771L11.1629 5.67143L11.9714 6.48L7.26171 11.1897C7.26114 11.1903 7.26114 11.1903 7.26057 11.1909Z"
                    fill="white"></path>
                </svg>Added</span></div>
            <div id="smart_cart_pop_loading_${product.id}" class="zb-hidden">
              <div class="smart_cart_pop_loading"></div>
            </div>
          </button> </div>
      </div>
    </div>
  </div>
  <div id="smart_cart_pop_variant_${product.id}_mobile" class="zb-hidden md:zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
      class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template" onclick="event.stopPropagation()"
      disabled-dj-event="" interference=""> </ljs-variants></div>
</form>

POST //translate.googleapis.com/translate_voting?client=te

<form id="goog-gt-votingForm" action="//translate.googleapis.com/translate_voting?client=te" method="post" target="votingFrame" class="VIpgJd-yAWNEb-hvhgNd-aXYTce"><input type="text" name="sl" id="goog-gt-votingInputSrcLang"><input type="text"
    name="tl" id="goog-gt-votingInputTrgLang"><input type="text" name="query" id="goog-gt-votingInputSrcText"><input type="text" name="gtrans" id="goog-gt-votingInputTrgText"><input type="text" name="vote" id="goog-gt-votingInputVote"></form>

Text Content

${(function(){ const get_random_six_digits = () => { return
Math.random().toString().slice(-6) }; const wholesale_enabled = false; const
setting_product_image_display = "natural"; const product_image = data.image;
const secondary_image = data.secondImage; const image_width =
product_image.width; let image_height = product_image.height;
if(setting_product_image_display == '100%'){ image_height = image_width }else
if(setting_product_image_display == '133.33%'){ image_height = image_width *
1.3333; }; const product_image_hover_on = true && !!secondary_image.src; const
has_save_label = false && ((+data.compare_at_price) > (+data.price)); const
is_single_variant = data.variants.length == 1; const min_price_variant_href =
(data.min_price_variant && data.min_price_variant.available) ?
data.min_price_variant.withinUrl : data.withinUrl; const retail_price_max =
data.retail_price_max || data.compare_at_price_max; const THUMBNAILS_MAX_SIZE =
3; const thumbnails = data.thumbVariants.slice(0, THUMBNAILS_MAX_SIZE); const
image_wrap_id = 'image_wrap_' + get_random_six_digits(); const image_carousel_id
= 'image_carousel_' + get_random_six_digits(); const thumbnails_selector_id =
'thumbnails_selector_' + get_random_six_digits(); const form_id = 'form_' +
get_random_six_digits(); const mixed_wholesale = data.mixed_wholesale; return `

${ data.available ? `` : "Sold out" }
Mixed Lot


${DATA.TITLE}

${ data.price_min != data.price_max ? `from ` : ` ` } ` })()}

Free Gift on Orders Over US$109

$10 off on orders over $59, $20 off on orders over $99

$30 off on orders over $139, $50 off on orders over $199



Free Gift on Orders Over US$109

$10 off on orders over $59, $20 off on orders over $99




$10 off on orders over $59, $20 off on orders over $99

$30 off on orders over $139, $50 off on orders over $199

Free Gift on Orders Over US$99

Free shipping for orders over €81.50

const marketSlot = document.querySelector(".plugin_c_market"); if(marketSlot) {
marketSlot.remove(); } const SITE = (window.C_SETTINGS ||
window[atob('U0hPUExBWlpB')])?.routes?.root || ''; const MARKET_THEME_SETTINGS =
`${SITE}/api/markets/theme_setting`; const MARKET_COUNTRIES =
`${SITE}/api/markets/countries`; const IP_MATCHING_MARKET =
`${SITE}/api/front/station`; const MARKET_LANGUAGES =
`${SITE}/api/markets/:id/active_languages`; const URL_REDIRECT =
'_market_redirected'; const COOKIE_TIPS_NAME = 'market_no_tips'; const
COOKIE_TIPS_EXPIRES = 1000 * 60 * 60 * 24 * 14; const MARKET_COUNTRY_COOKIE =
'_shoplazza_market_country'; const MARKET_MODAL_LOADED =
'__market_modal_loaded__'; const PROPERTY_SELECTED = 'selected'; const
MARKET_PC_HEADER_TRIGGER = 'market-pc-header-trigger'; const
MARKET_PC_HEADER_COUNTRY_SELECT_TITLE = 'market-pc-header-country-select-title';
const MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE =
'market-pc-header-language-select-title'; const
MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE =
'market-pc-header-language-select-sub-title'; const
MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE =
'market-pc-header-country-select-sub-title'; const MARKET_FLAG = 'market-flag';
const MARKET_SELECT_VALUE = 'market-select-value'; const MARKET_CURRENCY =
'market-currency'; const MARKET_CURRENCY_SYMBOL = 'market-currency-symbol';
const MARKET_SELECT_ITEM = 'market-select-item'; const MARKET_SELECT_ITEM_ID =
'market-select-item-id'; const MARKET_SELECT_LIST = 'market-select-list'; const
MARKET_LANGUAGE_SELECT = 'market-language-select'; const MARKET_COUNTRY_SELECT =
'market-country-select'; const MARKET_MODAL = 'market-modal'; const
MARKET_GATEWAY_REDIRECT_MODAL = 'market-gateway-redirect-modal'; const
MARKET_RESELECT_MODAL = 'market-reselect-modal'; const MARKET_MODAL_FLAG =
'market-modal-flag'; const MARKET_MODAL_COUNTRY_CODE =
'market-modal-country-code'; const MARKET_MODAL_CURRENCY_SYMBOL =
'market-modal-currency-symbol'; const MARKET_MODAL_CLOSE = 'market-modal-close';
const MARKET_MODAL_CONFIRM = 'market-modal-confirm'; const MARKET_MODAL_RESELECT
= 'market-modal-reselect'; const MARKET_MODAL_RESELECT_COUNTRY_SELECT =
'market-modal-reselect-country-select'; const DATA_SECTION_TYPE =
'data-section-type'; const SECTION_TYPE_HEADER = 'header'; const
SECTION_TYPE_FOOTER = 'footer'; class SpzCustomMarket extends SPZ.BaseElement {
constructor(element) { super(element); this.global = null;
this.useCountrySelect_ = false; this.useLanguageSelect_ = false; this.useModal_
= false; this.isSingleSelectMode_ = false; this.blockSectionPosition_ = '';
this.isEditMode = false; this.ipMatchingMarket = null; this.marketCountryList =
[]; this.marketLanguages = []; this.toast = null; } static deferredMount() {
return false; } isLayoutSupported(layout) { return layout ==
SPZCore.Layout.LOGIC; } buildCallback() { console.debug('Geolocation');
this.xhr_ = SPZServices.xhrFor(this.win); const platform =
SPZServices.platformFor(this.win); this.isIOS_ = platform.isIos(); this.action_
= SPZServices.actionServiceForDoc(this.element); this.global =
this.win.C_SETTINGS || this.win[atob('U0hPUExBWlpB')]; this.isEditMode = new
URLSearchParams(this.win.location.search).get('preview_theme_id') && new
URLSearchParams(this.win.location.search).get('oseid'); this.init_(); }
showToast_(content) { if (!this.toast) { this.toast =
self.document.createElement('ljs-toast'); this.toast.setAttribute('layout',
'nodisplay'); this.toast.setAttribute('hidden', '');
this.toast.setAttribute('duration', '2000');
this.element.appendChild(this.toast); }
SPZ.whenApiDefined(this.toast).then((apis) => { apis.showToast(content); }); }
triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win,
`${TAG}.${name}`, data); this.action_.trigger(this.element, name, event); }
findBlockSectionPosition() { let current = this.element; while (current) { const
dataSectionType = current.getAttribute(DATA_SECTION_TYPE); if ( dataSectionType
=== SECTION_TYPE_HEADER || dataSectionType === SECTION_TYPE_FOOTER ) { return
dataSectionType; } current = current.parentElement; } return ''; } async
initSettings_() { await this.getMarketThemeSettings_(); if
(this.useCountrySelect_) { this.element.setAttribute('use-country-select',
true); } if (this.useLanguageSelect_) {
this.element.setAttribute('use-language-select', true); } if (this.useModal_) {
this.element.setAttribute('use-modal', true); } if ( (this.useCountrySelect_ &&
!this.useLanguageSelect_) || (!this.useCountrySelect_ &&
this.useLanguageSelect_) ) { this.isSingleSelectMode_ = true; }
this.blockSectionPosition_ = this.findBlockSectionPosition(); this.isPCLayout_ =
this.win.matchMedia('(min-width: 960px)').matches; }
renderMarketSelectTemplateNode_(clonedTemplate, data) {
this.renderTemplateImg_(clonedTemplate, MARKET_FLAG, { src: data?.flag, width:
'24', height: '24', }); this.renderTemplateElement_( clonedTemplate,
MARKET_SELECT_VALUE, data.value ); this.renderTemplateElement_( clonedTemplate,
MARKET_CURRENCY, data?.currency ); this.renderTemplateElement_( clonedTemplate,
MARKET_CURRENCY_SYMBOL, data?.currencySymbol ); }
bindDropdownOpenClickEvent_(triggerElement, dropdown) { if (!triggerElement)
return; const triggerOpen = () => { SPZ.whenApiDefined(dropdown).then((apis) =>
{ if (!dropdown.hasAttribute('open')) { apis.open(triggerElement); } }); }; if
(this.isIOS_) { triggerElement.addEventListener('touchstart', triggerOpen); }
else { triggerElement.addEventListener('click', triggerOpen); } }
createDropdown_() { const dropdown =
self.document.createElement('ljs-dropdown'); dropdown.setAttribute('layout',
'nodisplay'); if (this.blockSectionPosition_ === 'header') {
dropdown.setAttribute('overlay-style', 'top: 4px;');
dropdown.setAttribute('placement', 'bottomRight'); } else if
(this.blockSectionPosition_ === 'footer') {
dropdown.setAttribute('overlay-style', 'top: -4px;');
dropdown.setAttribute('placement', 'top'); } return dropdown; }
createDropdownIcon_() { const svgElement =
document.createElementNS("http://www.w3.org/2000/svg", "svg");
svgElement.setAttribute("class", "market-rotate-180");
svgElement.setAttribute("width", "16"); svgElement.setAttribute("height", "16");
const path1 = document.createElementNS("http://www.w3.org/2000/svg", "path");
path1.setAttribute("d", "M7.47 5.172a.75.75 0 0 1 1.06 0l4.596 4.596a.75.75 0 1
1-1.06 1.06L7.468 6.232a.75.75 0 0 1 0-1.06Z"); path1.setAttribute("fill",
"currentColor"); const path2 =
document.createElementNS("http://www.w3.org/2000/svg", "path");
path2.setAttribute("d", "M8.533 5.172a.75.75 0 0 1 0 1.06l-4.596 4.596a.75.75 0
1 1-1.061-1.06l4.596-4.596a.75.75 0 0 1 1.06 0Z"); path2.setAttribute("fill",
"currentColor"); svgElement.appendChild(path1); svgElement.appendChild(path2);
return svgElement; } renderDropdownListWithClickEvent_({ triggerElement,
dataList, subTitleRole, listElementWithTemplate, defaultValue, itemHandler,
shouldUpdateSelectedItem = false, }) { const dropdown = this.createDropdown_();
const itemTemplate = SPZCore.Dom.scopedQuerySelector( listElementWithTemplate,
'template' ); const clonedItemTemplate = itemTemplate.cloneNode(true); const
fragment = self.document.createDocumentFragment(); dataList.forEach((data) => {
const tempParentNode = self.document.createElement('div'); const clonedTemplate
= self.document.importNode( clonedItemTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
tempParentNode.firstElementChild.classList.add( 'market-select-item' );
this.renderMarketSelectTemplateNode_(tempParentNode, data); const
selectItemElement = SPZCore.Dom.scopedQuerySelector( tempParentNode,
`[role="${MARKET_SELECT_ITEM}"]` ); if (!selectItemElement) { return; } if
(defaultValue === data.value) { if (shouldUpdateSelectedItem) { const
clonedSelectItemElement = selectItemElement.cloneNode(true);
triggerElement.replaceChild( clonedSelectItemElement,
triggerElement.firstElementChild ); }
selectItemElement.setAttribute(PROPERTY_SELECTED, ''); }
selectItemElement.setAttribute(MARKET_SELECT_ITEM_ID, data.value);
fragment.appendChild(tempParentNode.firstElementChild); }); let value =
defaultValue; listElementWithTemplate.addEventListener( 'click', (e) => { if
(this.isEditMode) { this.showToast_('编辑器下不支持切换国家');
SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } let
targetElement = e.target; while (targetElement) { if ( !targetElement ||
targetElement.getAttribute(MARKET_SELECT_ITEM_ID) ) { break; } targetElement =
targetElement.parentNode; } if ( !targetElement ||
!targetElement.hasAttribute(MARKET_SELECT_ITEM_ID) ) { return; } const
selectValue = targetElement.getAttribute(MARKET_SELECT_ITEM_ID); if (value ===
selectValue) { SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); });
return; } const selectedData = dataList.find((c) => c.value === selectValue); if
(shouldUpdateSelectedItem) { const tempParentNode =
self.document.createElement('div'); const clonedTemplate =
self.document.importNode( clonedItemTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
this.renderMarketSelectTemplateNode_(tempParentNode, selectedData);
tempParentNode.firstElementChild.classList.add( 'market-select-item' );
triggerElement.replaceChild( tempParentNode.firstElementChild,
triggerElement.firstElementChild ); } value = selectValue;
itemHandler?.(selectedData); SPZ.whenApiDefined(dropdown).then((apis) => {
apis.close(); }); }, false ); listElementWithTemplate.removeChild(itemTemplate);
listElementWithTemplate.appendChild(fragment);
listElementWithTemplate.classList.add('market-select-list');
dropdown.appendChild(listElementWithTemplate); if (subTitleRole) {
this.renderSelectTitle_(dropdown, subTitleRole); } return dropdown; }
createSelect_({ parent, defaultValue, dataList, listElementWithTemplate,
itemHandler, titleRole, }) { const triggerElement =
self.document.createElement('div');
triggerElement.classList.add('market-select'); const displayElement =
self.document.createElement('div'); triggerElement.appendChild(displayElement);
triggerElement.appendChild(this.createDropdownIcon_()); const dropdown =
this.renderDropdownListWithClickEvent_({ triggerElement, dataList,
listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem:
true, }); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); const
dropdownContainer = self.document.createElement('div');
dropdownContainer.appendChild(triggerElement);
dropdownContainer.appendChild(dropdown);
dropdownContainer.classList.add('market-select-container');
this.renderSelectTitle_(dropdownContainer, titleRole);
parent.appendChild(dropdownContainer); } getListElementWithTemplate_(role) {
const template = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${role}"]` ); if (template) { const clonedTemplate =
template.cloneNode(true); const tempParent = self.document.createElement("div");
tempParent.appendChild(clonedTemplate.content); const listElementWithTemplate =
SPZCore.Dom.scopedQuerySelector( tempParent, `[role="${MARKET_SELECT_LIST}"]` );
return listElementWithTemplate; } return null; } renderSelectTitle_(parent,
role) { if (!parent || !role) { return; } const template =
SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); const
content = self.document.importNode(template.content, true);
parent.insertBefore(content, parent.firstElementChild);
parent.firstElementChild.classList.add( role.includes('sub') ?
'market-pc-header-select-sub-title' : 'market-pc-header-select-title' ); }
initSelect_(rootNode, options) { const parent = rootNode || this.element; if
(this.useCountrySelect_) { this.createSelect_({ parent, titleRole:
options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_COUNTRY_SELECT_TITLE :
undefined, defaultValue: this.getDefaultCountryValue_(), dataList:
this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler:
this.handleCountrySelectChange_.bind(this), }); } if (this.useLanguageSelect_) {
this.createSelect_({ parent, titleRole: options?.shouldRenderSelectTitle ?
MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE : undefined, defaultValue:
this.getDefaultLanguageValue_(), dataList:
this.marketLanguages.map(this.mapLanguageRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_LANGUAGE_SELECT ), itemHandler:
this.handleLanguageSelectChange_.bind(this), }); } }
initPcHeaderTriggerElement() { const headerTriggerElementTemplate =
SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${MARKET_PC_HEADER_TRIGGER}"]` ); const headerTriggerElement =
self.document.importNode( headerTriggerElementTemplate.content, true ); const
parentDivElement = self.document.createElement('div');
parentDivElement.setAttribute('role', MARKET_PC_HEADER_TRIGGER);
parentDivElement.appendChild(headerTriggerElement);
this.element.removeChild(headerTriggerElementTemplate); return parentDivElement;
} initPanelWithSelect_() { const triggerElement =
this.initPcHeaderTriggerElement(); const dropdown = this.createDropdown_();
const panelElement = self.document.createElement('div');
panelElement.classList.add('market-panel'); this.initSelect_(panelElement,
{shouldRenderSelectTitle: true}); dropdown.appendChild(panelElement);
this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
this.element.appendChild(triggerElement); this.element.insertBefore(dropdown,
triggerElement); } initSingleSelectDropdown_() { const triggerElement =
this.initPcHeaderTriggerElement(); let dropdown; if (this.useCountrySelect_) {
dropdown = this.renderDropdownListWithClickEvent_({ triggerElement,
subTitleRole: MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE, dataList:
this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), defaultValue:
this.getDefaultCountryValue_(), itemHandler:
this.handleCountrySelectChange_.bind(this), }); } else if
(this.useLanguageSelect_) { dropdown = this.renderDropdownListWithClickEvent_({
triggerElement, subTitleRole: MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE,
dataList: this.marketLanguages.map(this.mapLanguageRenderData_),
listElementWithTemplate: this.getListElementWithTemplate_(
MARKET_LANGUAGE_SELECT ), defaultValue: this.getDefaultLanguageValue_(),
itemHandler: this.handleLanguageSelectChange_.bind(this), }); } if (dropdown) {
this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
this.element.appendChild(triggerElement); this.element.appendChild(dropdown); }
} initEntry_() { if (this.blockSectionPosition_ === SECTION_TYPE_HEADER) { if
(this.isSingleSelectMode_) { this.initSingleSelectDropdown_(); } else if
(this.useCountrySelect_ && this.useLanguageSelect_) {
this.initPanelWithSelect_(); } } this.initSelect_(this.element); } async
initData_() { const promises = []; if (this.useCountrySelect_ || this.useModal_)
{ promises.push(this.getCountryList_(), this.getIpMatchingMarket_()); } if
(this.useLanguageSelect_) {
promises.push(this.getMarketLanguages_(this.global.market.market_id)); } return
Promise.all(promises).then((results) => { const ipMatchingMarket =
results.find((result) => result.hasOwnProperty('matching_station') ); const
marketCountryList = results.find((result) => result.hasOwnProperty('data') ); if
(ipMatchingMarket && marketCountryList) { this.ipMatchingMarket =
ipMatchingMarket?.matching_station?.find?.( (item) => item.type ===
'multiple_market' ) || { img: marketCountryList.length ?
marketCountryList?.[0]?.detail && marketCountryList[0].detail?.flag : '', }; }
}); } initModal_() { if ( this.isEditMode || !this.ipMatchingMarket?.market_id
|| !this.useModal_ || this.hasCookie_(COOKIE_TIPS_NAME) ||
this.win[MARKET_MODAL_LOADED] ) { return; } this.win[MARKET_MODAL_LOADED] =
true; const redirectParam = new URLSearchParams(this.win.location.search).get(
URL_REDIRECT ); if (redirectParam) {
this.initModalEntry_(MARKET_GATEWAY_REDIRECT_MODAL); } else if (
this.ipMatchingMarket.market_id !== this.global?.market?.market_id ) {
this.initModalEntry_(MARKET_MODAL); } } async init_() { await
this.initSettings_(); await this.initData_(); this.initEntry_();
this.initModal_(); } getDefaultCountryValue_() { return
this.getCookie_(MARKET_COUNTRY_COOKIE) ||
this.marketCountryList[0]?.country_code; } mapCountryRenderData_(country) {
return { flag: country?.detail?.flag || '', value: country?.country_code,
currency: country?.currency, currencySymbol: country?.symbol?.val || '', url:
country?.url, }; } handleCountrySelectChange_(selectedData) {
this.setCookie_(MARKET_COUNTRY_COOKIE, selectedData.value);
this.handleChangeURL_(selectedData.url); } getDefaultLanguageValue_() { return
this.marketLanguages?.find?.( (lang) => lang.code ===
this.global?.market?.market_lang )?.name; } mapLanguageRenderData_(language) {
return { value: language.name, url: language.url, }; }
handleLanguageSelectChange_(selectedData) {
this.handleChangeURL_(selectedData.url); } renderTemplateElement_(parent, role,
value) { const elements = SPZCore.Dom.scopedQuerySelectorAll( parent,
`[role="${role}"]` ); elements.forEach((element) => { if (element && value) {
element.innerHTML = value; } }); } renderTemplateImg_(parent, role, options) {
const flagElement = SPZCore.Dom.scopedQuerySelector( parent, `[role="${role}"]`
); if (flagElement && options?.src && options?.height && options?.width) { const
spzImg = self.document.createElement('ljs-img'); spzImg.setAttribute('src',
options.src); spzImg.setAttribute('layout', 'responsive');
spzImg.setAttribute('width', options.width); spzImg.setAttribute('height',
options.height); spzImg.setAttribute( 'style', `width: ${options.width}px;
height: ${options.height}px;` ); flagElement.appendChild(spzImg); } }
handleChangeURL_(url) { if (!!url) { let {origin, pathname, search} =
this.win.location; pathname = pathname.replace(SITE, url != '/' ? url : '');
this.win.location.href = `${origin}${pathname}${search}`; } else {
this.win.location.reload(true); } } initModalEntry_(role) { const
marketModalTemplate = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${role}"]` ); if (marketModalTemplate) { const tempParentNode =
self.document.createElement('div'); const clonedTemplate =
self.document.importNode( marketModalTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
this.renderTemplateImg_(tempParentNode, MARKET_MODAL_FLAG, { src:
this.ipMatchingMarket?.img, width: '80', height: '80', });
this.renderTemplateElement_( tempParentNode, MARKET_MODAL_COUNTRY_CODE,
this.ipMatchingMarket?.name ); this.renderTemplateElement_( tempParentNode,
MARKET_MODAL_CURRENCY_SYMBOL, this.ipMatchingMarket?.currency_with_symbol );
const lightbox = self.document.createElement('ljs-lightbox');
lightbox.setAttribute('layout', 'nodisplay');
lightbox.appendChild(tempParentNode.firstElementChild);
self.document.body.appendChild(lightbox);
SPZ.whenApiDefined(lightbox).then((apis) => {
SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]`
).forEach((ele) => { ele.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); });
const marketModalConfirmElement = SPZCore.Dom.scopedQuerySelector( lightbox,
`[role="${MARKET_MODAL_CONFIRM}"]` ); if (marketModalConfirmElement &&
this.ipMatchingMarket?.url) {
marketModalConfirmElement.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES);
this.setCookie_(MARKET_COUNTRY_COOKIE, this.ipMatchingMarket?.name);
this.handleChangeURL_(this.ipMatchingMarket?.url); }); } const
marketModalReselectElement = SPZCore.Dom.scopedQuerySelector( lightbox,
`[role="${MARKET_MODAL_RESELECT}"]` ); if (marketModalReselectElement) {
marketModalReselectElement.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); const
marketReselectTemplate = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${MARKET_RESELECT_MODAL}"]` ); if (marketReselectTemplate &&
lightbox.firstElementChild) { const clonedTemplate = self.document.importNode(
marketReselectTemplate.content, true ); const selectParent =
SPZCore.Dom.scopedQuerySelector( clonedTemplate,
`[role="${MARKET_MODAL_RESELECT_COUNTRY_SELECT}"]` ); if (selectParent) {
this.createSelect_({ parent: selectParent, defaultValue:
this.getDefaultCountryValue_(), dataList: this.marketCountryList.map(
this.mapCountryRenderData_ ), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler:
this.handleCountrySelectChange_.bind(this), }); }
lightbox.replaceChild(clonedTemplate, lightbox.firstElementChild);
SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]`
).forEach((ele) => { ele.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); });
} }); } apis.open(); }); } } async getMarketThemeSettings_() { return
this.xhr_.fetchJson(MARKET_THEME_SETTINGS).then((res) => {
this.useCountrySelect_ = !!res.country_selector_enabled; this.useLanguageSelect_
= !!res.language_selector_enabled && this.global?.market?.market_id;
this.useModal_ = !!res.redirect_pop_enabled; return res; }); } async
getCountryList_() { return this.xhr_.fetchJson(MARKET_COUNTRIES).then((res) => {
this.marketCountryList = res.data.length ? res.data : []; return res; }); }
async getIpMatchingMarket_() { return this.xhr_.fetchJson(IP_MATCHING_MARKET, {
method: 'POST', body: { stations: [], }, }); } async
getMarketLanguages_(marketId) { return this.xhr_
.fetchJson(MARKET_LANGUAGES.replace(/:id/gim, marketId)) .then((res) => {
this.marketLanguages = res?.languages?.length ? res.languages : []; return res;
}); } hasCookie_(name) { const m = self.document.cookie .split(';')
.filter((pair) => pair.trim().startsWith(name + '=')); return !!(m && m[0]); }
getCookie_(name) { const m = self.document.cookie .split(';') .filter((pair) =>
pair.trim().startsWith(name + '=')); return m && m[0] ? m[0].split('=')[1] :
null; } setCookie_(name, value, expires) { const expiresDate = new
Date(Date.now() + expires).toGMTString(); self.document.cookie =
`${name}=${encodeURIComponent( value )};expires=${expiresDate};path=/`; } }
SPZ.defineElement('spz-custom-market', SpzCustomMarket);
Region/Country
Region/Country

(


)
Language
Language

Switch to based on your location
 * Purchase with
 * Get shipping options for

Cancel
Switch
Set to based on your location
 * Purchase with
 * Get shipping options for

Continue Shopping
Modify Country/Region
Modify Country/Region

Continue Shopping
Cancel

Region/Country
US
(
USD
$
)
AD
(
EUR
€
)
AT
(
EUR
€
)
BE
(
EUR
€
)
CY
(
EUR
€
)
DE
(
EUR
€
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FR
(
EUR
€
)
GR
(
EUR
€
)
IE
(
EUR
€
)
IT
(
EUR
€
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
ME
(
EUR
€
)
MT
(
EUR
€
)
NL
(
EUR
€
)
PT
(
EUR
€
)
SI
(
EUR
€
)
SK
(
EUR
€
)
SM
(
EUR
€
)
VA
(
EUR
€
)
XK
(
EUR
€
)
JP
(
JPY
¥
)
GB
(
GBP
£
)
TH
(
THB
฿
)
NZ
(
NZD
NZ$
)
AU
(
AUD
A$
)
CA
(
CAD
CA$
)
CH
(
CHF
CHF
)
DK
(
DKK
kr
)
SG
(
SGD
S$
)
DE
(
EUR
€
)
US
(
USD
$
)
AD
(
EUR
€
)
AT
(
EUR
€
)
BE
(
EUR
€
)
CY
(
EUR
€
)
DE
(
EUR
€
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FR
(
EUR
€
)
GR
(
EUR
€
)
IE
(
EUR
€
)
IT
(
EUR
€
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
ME
(
EUR
€
)
MT
(
EUR
€
)
NL
(
EUR
€
)
PT
(
EUR
€
)
SI
(
EUR
€
)
SK
(
EUR
€
)
SM
(
EUR
€
)
VA
(
EUR
€
)
XK
(
EUR
€
)
JP
(
JPY
¥
)
GB
(
GBP
£
)
TH
(
THB
฿
)
NZ
(
NZD
NZ$
)
AU
(
AUD
A$
)
CA
(
CAD
CA$
)
CH
(
CHF
CHF
)
DK
(
DKK
kr
)
SG
(
SGD
S$
)

Powered by Google Übersetzer
English,Français,Deutsch,Italiano,Español,Português,dansk,日本語,ไทย

 * Log in
 * Create an account


${data.data && data.data.count}

 * SHOP ALL
    * Tops Short Sleeve Shirts Long Sleeve Shirts Hoodies & Sweatshirts Polo
      Shirts👕 V-Neck Suit Vest/Tuxedo Waistcoat And Tie 100% Cotton Tees Long
      Sleeved T-Shirt Shirt with Breast Pocket
    * Bottoms Men's Short Sets Shorts
    * Accessories Hats Scarf🧣 Sunglasses Belts & Suspenders Shoes
    * Chic Matching Set
    * Dresses 👗

 * HOT SALE
 * HOLIDAY SHIRTS🎉
   * Patriots' Day Shirts
   * Cute Costume Shirts 🤠
   * LGBT Pride Month 🌈
   * Columbus Day ☠️
   * Hippie Festival Shirts 🐙
   * Halloween's Day Shirts 🎃
   * Thanksgiving Day Tops 🦃
   * Christmas Day Shirts 🎅
   * New Year Shirts 🎉
   * Mardi Gras Shirts 🤡
   * Valentine's Day Shirts 💕
   * St. Patrick's Day Shirts ☘
   * Easter Day Shirts 🐇
   * Cinco De Mayo 💃
   * Happy Father's Day🎁
 * NEW ARRIVALS
    * SHOP BY CATRGORY New in Short Sleeve Shirts New in Hawaiian Shirts New in
      Polos New in Shorts

 * Short Sleeve Shirts
    * Shop By Category Short Sleeve Shirts Shirt with Breast Pocket Tees Polos
      Tuxedo Waistcoat And Tie
    * Shop By Features Funny Holiday 70's Style 🎵 50‘s Style🔥 Ukiyo-e 🌊 Cat
      😸 Car 🏁🏎 Music 🎸 Flag Resort🏖️ Beauties Print Costume Shirts🦸‍♂ Mid
      Century Style Oriental Culture Inspired 🏮 Hawaiian Shirts 🏄

 * LONG SLEEVE TOPS
   * Long Sleeve Shirts
   * Hoodies & Sweatshirts
   * Long Sleeve Polos
   * Long Sleeve T-Shirts
 * BOTTOMS & SETS
   * Summer Chic Set
   * Fashion Short Sets
   * Shorts
 * ⚡CLEARANCE
 * More links
   ${(function(){ const formatLinks = (links) => { return links.map(link => {
   link.tag = tags[link.title.toUpperCase()] || {}; link.target_attr =
   link.target == '_blank' ? 'target="_blank"' : ''; link.href_attr = link.url ?
   `href="${link.url}"` : ''; if(link.children && link.children.length){
   link.children = formatLinks(link.children); } return link; }) }; const tags =
   "{}"; let linkList = [ { id: 63889891, title: "SHOP ALL", url:
   "\/collections\/all-new", target: "", levels: 2, product0: { id: (null) },
   children: [ { title: "Tops", url: "\/collections\/tops-new", target: "",
   levels: 1, children: [ { title: "Short Sleeve Shirts", url:
   "\/collections\/short-sleeve-shirts-new", target: "", levels: 0, }, { title:
   "Long Sleeve Shirts", url: "\/collections\/long-sleeve-shirts", target: "",
   levels: 0, }, { title: "Hoodies & Sweatshirts", url:
   "\/collections\/hoodies-sweatshirts", target: "", levels: 0, }, { title:
   "Polo Shirts\ud83d\udc55", url: "\/collections\/polo-shirts", target: "",
   levels: 0, }, { title: "V-Neck Suit Vest\/Tuxedo Waistcoat And Tie", url:
   "\/collections\/v-neck-suit-vest-tuxedo-waistcoat-and-tie", target: "",
   levels: 0, }, { title: "100% Cotton Tees", url:
   "\/collections\/new-in-100-cotton-tees", target: "", levels: 0, }, { title:
   "Long Sleeved T-Shirt", url: "\/collections\/long-sleeved-t-shirt", target:
   "", levels: 0, }, { title: "Shirt with Breast Pocket", url:
   "\/collections\/shirt-with-breast-pocket", target: "", levels: 0, }, ] }, {
   title: "Bottoms", url: "\/collections\/bottoms", target: "", levels: 1,
   children: [ { title: "Men's Short Sets", url: "\/collections\/short-sets",
   target: "", levels: 0, }, { title: "Shorts", url:
   "\/collections\/shorts-new", target: "", levels: 0, }, ] }, { title:
   "Accessories", url: "\/collections\/accessories", target: "", levels: 1,
   children: [ { title: "Hats", url: "\/collections\/hats", target: "", levels:
   0, }, { title: "Scarf\ud83e\udde3", url: "\/collections\/scarf", target: "",
   levels: 0, }, { title: "Sunglasses", url: "\/collections\/sunglasses",
   target: "", levels: 0, }, { title: "Belts & Suspenders", url:
   "\/collections\/belts-suspenders", target: "", levels: 0, }, { title:
   "Shoes", url: "\/collections\/shoes", target: "", levels: 0, }, ] }, { title:
   "Chic Matching Set", url: "\/collections\/two-piece-set", target: "", levels:
   0, children: [ ] }, { title: "Dresses \ud83d\udc57", url:
   "\/collections\/womens-dresses", target: "", levels: 0, children: [ ] }, ] },
   { id: 63889933, title: "HOT SALE", url: "\/collections\/hot-sale-new",
   target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id:
   63889935, title: "HOLIDAY SHIRTS\ud83c\udf89", url:
   "\/collections\/holidays", target: "", levels: 1, product0: { id: (null) },
   children: [ { title: "Patriots' Day Shirts", url: "\/collections\/nation",
   target: "", levels: 0, children: [ ] }, { title: "Cute Costume Shirts
   \ud83e\udd20", url: "\/collections\/cartoon-costume-shirts-new", target: "",
   levels: 0, children: [ ] }, { title: "LGBT Pride Month \ud83c\udf08", url:
   "\/collections\/rainbow-series-new", target: "", levels: 0, children: [ ] },
   { title: "Columbus Day \u2620\ufe0f", url: "\/collections\/columbus-day",
   target: "", levels: 0, children: [ ] }, { title: "Hippie Festival Shirts
   \ud83d\udc19", url: "\/collections\/hippie-festival", target: "", levels: 0,
   children: [ ] }, { title: "Halloween's Day Shirts \ud83c\udf83", url:
   "\/collections\/halloween-day-shirts", target: "", levels: 0, children: [ ]
   }, { title: "Thanksgiving Day Tops \ud83e\udd83", url:
   "\/collections\/thanksgiving-tops", target: "", levels: 0, children: [ ] }, {
   title: "Christmas Day Shirts \ud83c\udf85", url: "\/collections\/christmas",
   target: "", levels: 0, children: [ ] }, { title: "New Year Shirts
   \ud83c\udf89", url: "\/collections\/new-year-shirts", target: "", levels: 0,
   children: [ ] }, { title: "Mardi Gras Shirts \ud83e\udd21", url:
   "\/collections\/mardi-gras-shirts-1", target: "", levels: 0, children: [ ] },
   { title: "Valentine's Day Shirts \ud83d\udc95", url:
   "\/collections\/valentines-day-shirts", target: "", levels: 0, children: [ ]
   }, { title: "St. Patrick's Day Shirts \u2618", url:
   "\/collections\/st-patricks-day", target: "", levels: 0, children: [ ] }, {
   title: "Easter Day Shirts \ud83d\udc07", url: "\/collections\/easter-series",
   target: "", levels: 0, children: [ ] }, { title: "Cinco De Mayo
   \ud83d\udc83", url: "\/collections\/cinco-de-mayo", target: "", levels: 0,
   children: [ ] }, { title: "Happy Father's Day\ud83c\udf81", url:
   "\/collections\/happy-fathers-day", target: "", levels: 0, children: [ ] }, ]
   }, { id: 63889967, title: "NEW ARRIVALS", url: "\/collections\/new-arrivals",
   target: "", levels: 2, product0: { id: (null) }, children: [ { title: "SHOP
   BY CATRGORY", url: "", target: "", levels: 1, children: [ { title: "New in
   Short Sleeve Shirts", url: "\/collections\/new-in-short-sleeve-shirts",
   target: "", levels: 0, }, { title: "New in Hawaiian Shirts", url:
   "\/collections\/new-in-hawaiian-shirts", target: "", levels: 0, }, { title:
   "New in Polos", url: "\/collections\/new-in-polos", target: "", levels: 0, },
   { title: "New in Shorts", url: "\/collections\/new-in-shorts", target: "",
   levels: 0, }, ] }, ] }, { id: 63889991, title: "Short Sleeve Shirts", url:
   "\/collections\/short-sleeve-shirts-new", target: "", levels: 2, product0: {
   id: (null) }, children: [ { title: "Shop By Category", url: "", target: "",
   levels: 1, children: [ { title: "Short Sleeve Shirts", url:
   "\/collections\/short-sleeve-shirts-new", target: "_blank", levels: 0, }, {
   title: "Shirt with Breast Pocket", url:
   "\/collections\/shirts-with-breast-pocket-new", target: "", levels: 0, }, {
   title: "Tees", url: "\/collections\/tees", target: "", levels: 0, }, { title:
   "Polos", url: "\/collections\/polos-new", target: "", levels: 0, }, { title:
   "Tuxedo Waistcoat And Tie", url:
   "\/collections\/v-neck-suit-vest-tuxedo-waistcoat-and-tie", target: "",
   levels: 0, }, ] }, { title: "Shop By Features", url: "", target: "", levels:
   1, children: [ { title: "Funny Holiday ", url: "\/collections\/holidays",
   target: "", levels: 0, }, { title: "70's Style \ud83c\udfb5", url:
   "\/collections\/70s-style-shirts-new", target: "", levels: 0, }, { title:
   "50\u2018s Style\ud83d\udd25", url: "\/collections\/retro-style-shirts-new",
   target: "", levels: 0, }, { title: "Ukiyo-e \ud83c\udf0a", url:
   "\/collections\/art-style-ukiyo-e-printed-new", target: "", levels: 0, }, {
   title: "Cat \ud83d\ude38", url: "\/collections\/cat-series", target: "",
   levels: 0, }, { title: "Car \ud83c\udfc1\ud83c\udfce", url:
   "\/collections\/cars", target: "", levels: 0, }, { title: "Music
   \ud83c\udfb8", url: "\/collections\/musical-style", target: "", levels: 0, },
   { title: "Flag ", url: "\/collections\/nation", target: "", levels: 0, }, {
   title: "Resort\ud83c\udfd6\ufe0f", url: "\/collections\/resort-shirts-new",
   target: "", levels: 0, }, { title: "Beauties Print", url:
   "\/collections\/beauties-print", target: "", levels: 0, }, { title: "Costume
   Shirts\ud83e\uddb8\u200d\u2642", url:
   "\/collections\/cartoon-costume-shirts-new", target: "", levels: 0, }, {
   title: "Mid Century Style", url: "\/collections\/mid-century-style", target:
   "", levels: 0, }, { title: "Oriental Culture Inspired \ud83c\udfee", url:
   "\/collections\/mysterious-oriental", target: "", levels: 0, }, { title:
   "Hawaiian Shirts \ud83c\udfc4", url: "\/collections\/hawaiian-style", target:
   "", levels: 0, }, ] }, ] }, { id: 63890063, title: "LONG SLEEVE TOPS", url:
   "\/collections\/long-sleeve", target: "", levels: 1, product0: { id: (null)
   }, children: [ { title: "Long Sleeve Shirts", url:
   "\/collections\/long-sleeve-shirts", target: "", levels: 0, children: [ ] },
   { title: "Hoodies & Sweatshirts", url: "\/collections\/hoodies-sweatshirts",
   target: "", levels: 0, children: [ ] }, { title: "Long Sleeve Polos", url:
   "\/collections\/long-sleeve-polos", target: "", levels: 0, children: [ ] }, {
   title: "Long Sleeve T-Shirts", url: "\/collections\/long-sleeved-t-shirt",
   target: "", levels: 0, children: [ ] }, ] }, { id: 63890073, title: "BOTTOMS
   & SETS", url: "\/collections\/bottoms", target: "", levels: 1, product0: {
   id: (null) }, children: [ { title: "Summer Chic Set", url:
   "\/collections\/two-piece-set-new", target: "", levels: 0, children: [ ] }, {
   title: "Fashion Short Sets", url: "\/collections\/short-sets", target: "",
   levels: 0, children: [ ] }, { title: "Shorts", url:
   "\/collections\/shorts-new", target: "", levels: 0, children: [ ] }, ] }, {
   id: 63890081, title: "\u26a1CLEARANCE", url:
   "\/collections\/on-sale-items-1", target: "", levels: 0, product0: { id:
   (null) }, children: [ ] }, ].slice(offset); linkList = formatLinks(linkList);
   const hasChild = linkList.some(link => !!(link.children &&
   link.children.length || link.product0.id)); return `
    * ${link.title} ${link.tag.label}
   
    * ${second_link.title} ${second_link.tag.label} ${third_links.title}
      ${third_links.tag.label}
   
   
    * ${link.title} ${link.tag.label}
   
   ` })()}

 * SHOP ALL
    * Tops Short Sleeve Shirts Long Sleeve Shirts Hoodies & Sweatshirts Polo
      Shirts👕 V-Neck Suit Vest/Tuxedo Waistcoat And Tie 100% Cotton Tees Long
      Sleeved T-Shirt Shirt with Breast Pocket
    * Bottoms Men's Short Sets Shorts
    * Accessories Hats Scarf🧣 Sunglasses Belts & Suspenders Shoes
    * Chic Matching Set
    * Dresses 👗

 * HOT SALE
 * HOLIDAY SHIRTS🎉
   * Patriots' Day Shirts
   * Cute Costume Shirts 🤠
   * LGBT Pride Month 🌈
   * Columbus Day ☠️
   * Hippie Festival Shirts 🐙
   * Halloween's Day Shirts 🎃
   * Thanksgiving Day Tops 🦃
   * Christmas Day Shirts 🎅
   * New Year Shirts 🎉
   * Mardi Gras Shirts 🤡
   * Valentine's Day Shirts 💕
   * St. Patrick's Day Shirts ☘
   * Easter Day Shirts 🐇
   * Cinco De Mayo 💃
   * Happy Father's Day🎁
 * NEW ARRIVALS
    * SHOP BY CATRGORY New in Short Sleeve Shirts New in Hawaiian Shirts New in
      Polos New in Shorts

 * Short Sleeve Shirts
    * Shop By Category Short Sleeve Shirts Shirt with Breast Pocket Tees Polos
      Tuxedo Waistcoat And Tie
    * Shop By Features Funny Holiday 70's Style 🎵 50‘s Style🔥 Ukiyo-e 🌊 Cat
      😸 Car 🏁🏎 Music 🎸 Flag Resort🏖️ Beauties Print Costume Shirts🦸‍♂ Mid
      Century Style Oriental Culture Inspired 🏮 Hawaiian Shirts 🏄

 * LONG SLEEVE TOPS
   * Long Sleeve Shirts
   * Hoodies & Sweatshirts
   * Long Sleeve Polos
   * Long Sleeve T-Shirts
 * BOTTOMS & SETS
   * Summer Chic Set
   * Fashion Short Sets
   * Shorts
 * ⚡CLEARANCE
 * More links
   ${(function(){ const formatLinks = (links) => { return links.map(link => {
   link.tag = tags[link.title.toUpperCase()] || {}; link.target_attr =
   link.target == '_blank' ? 'target="_blank"' : ''; link.href_attr = link.url ?
   `href="${link.url}"` : ''; if(link.children && link.children.length){
   link.children = formatLinks(link.children); } return link; }) }; const tags =
   "{}"; let linkList = [ { id: 63889891, title: "SHOP ALL", url:
   "\/collections\/all-new", target: "", levels: 2, product0: { id: (null) },
   children: [ { title: "Tops", url: "\/collections\/tops-new", target: "",
   levels: 1, children: [ { title: "Short Sleeve Shirts", url:
   "\/collections\/short-sleeve-shirts-new", target: "", levels: 0, }, { title:
   "Long Sleeve Shirts", url: "\/collections\/long-sleeve-shirts", target: "",
   levels: 0, }, { title: "Hoodies & Sweatshirts", url:
   "\/collections\/hoodies-sweatshirts", target: "", levels: 0, }, { title:
   "Polo Shirts\ud83d\udc55", url: "\/collections\/polo-shirts", target: "",
   levels: 0, }, { title: "V-Neck Suit Vest\/Tuxedo Waistcoat And Tie", url:
   "\/collections\/v-neck-suit-vest-tuxedo-waistcoat-and-tie", target: "",
   levels: 0, }, { title: "100% Cotton Tees", url:
   "\/collections\/new-in-100-cotton-tees", target: "", levels: 0, }, { title:
   "Long Sleeved T-Shirt", url: "\/collections\/long-sleeved-t-shirt", target:
   "", levels: 0, }, { title: "Shirt with Breast Pocket", url:
   "\/collections\/shirt-with-breast-pocket", target: "", levels: 0, }, ] }, {
   title: "Bottoms", url: "\/collections\/bottoms", target: "", levels: 1,
   children: [ { title: "Men's Short Sets", url: "\/collections\/short-sets",
   target: "", levels: 0, }, { title: "Shorts", url:
   "\/collections\/shorts-new", target: "", levels: 0, }, ] }, { title:
   "Accessories", url: "\/collections\/accessories", target: "", levels: 1,
   children: [ { title: "Hats", url: "\/collections\/hats", target: "", levels:
   0, }, { title: "Scarf\ud83e\udde3", url: "\/collections\/scarf", target: "",
   levels: 0, }, { title: "Sunglasses", url: "\/collections\/sunglasses",
   target: "", levels: 0, }, { title: "Belts & Suspenders", url:
   "\/collections\/belts-suspenders", target: "", levels: 0, }, { title:
   "Shoes", url: "\/collections\/shoes", target: "", levels: 0, }, ] }, { title:
   "Chic Matching Set", url: "\/collections\/two-piece-set", target: "", levels:
   0, children: [ ] }, { title: "Dresses \ud83d\udc57", url:
   "\/collections\/womens-dresses", target: "", levels: 0, children: [ ] }, ] },
   { id: 63889933, title: "HOT SALE", url: "\/collections\/hot-sale-new",
   target: "", levels: 0, product0: { id: (null) }, children: [ ] }, { id:
   63889935, title: "HOLIDAY SHIRTS\ud83c\udf89", url:
   "\/collections\/holidays", target: "", levels: 1, product0: { id: (null) },
   children: [ { title: "Patriots' Day Shirts", url: "\/collections\/nation",
   target: "", levels: 0, children: [ ] }, { title: "Cute Costume Shirts
   \ud83e\udd20", url: "\/collections\/cartoon-costume-shirts-new", target: "",
   levels: 0, children: [ ] }, { title: "LGBT Pride Month \ud83c\udf08", url:
   "\/collections\/rainbow-series-new", target: "", levels: 0, children: [ ] },
   { title: "Columbus Day \u2620\ufe0f", url: "\/collections\/columbus-day",
   target: "", levels: 0, children: [ ] }, { title: "Hippie Festival Shirts
   \ud83d\udc19", url: "\/collections\/hippie-festival", target: "", levels: 0,
   children: [ ] }, { title: "Halloween's Day Shirts \ud83c\udf83", url:
   "\/collections\/halloween-day-shirts", target: "", levels: 0, children: [ ]
   }, { title: "Thanksgiving Day Tops \ud83e\udd83", url:
   "\/collections\/thanksgiving-tops", target: "", levels: 0, children: [ ] }, {
   title: "Christmas Day Shirts \ud83c\udf85", url: "\/collections\/christmas",
   target: "", levels: 0, children: [ ] }, { title: "New Year Shirts
   \ud83c\udf89", url: "\/collections\/new-year-shirts", target: "", levels: 0,
   children: [ ] }, { title: "Mardi Gras Shirts \ud83e\udd21", url:
   "\/collections\/mardi-gras-shirts-1", target: "", levels: 0, children: [ ] },
   { title: "Valentine's Day Shirts \ud83d\udc95", url:
   "\/collections\/valentines-day-shirts", target: "", levels: 0, children: [ ]
   }, { title: "St. Patrick's Day Shirts \u2618", url:
   "\/collections\/st-patricks-day", target: "", levels: 0, children: [ ] }, {
   title: "Easter Day Shirts \ud83d\udc07", url: "\/collections\/easter-series",
   target: "", levels: 0, children: [ ] }, { title: "Cinco De Mayo
   \ud83d\udc83", url: "\/collections\/cinco-de-mayo", target: "", levels: 0,
   children: [ ] }, { title: "Happy Father's Day\ud83c\udf81", url:
   "\/collections\/happy-fathers-day", target: "", levels: 0, children: [ ] }, ]
   }, { id: 63889967, title: "NEW ARRIVALS", url: "\/collections\/new-arrivals",
   target: "", levels: 2, product0: { id: (null) }, children: [ { title: "SHOP
   BY CATRGORY", url: "", target: "", levels: 1, children: [ { title: "New in
   Short Sleeve Shirts", url: "\/collections\/new-in-short-sleeve-shirts",
   target: "", levels: 0, }, { title: "New in Hawaiian Shirts", url:
   "\/collections\/new-in-hawaiian-shirts", target: "", levels: 0, }, { title:
   "New in Polos", url: "\/collections\/new-in-polos", target: "", levels: 0, },
   { title: "New in Shorts", url: "\/collections\/new-in-shorts", target: "",
   levels: 0, }, ] }, ] }, { id: 63889991, title: "Short Sleeve Shirts", url:
   "\/collections\/short-sleeve-shirts-new", target: "", levels: 2, product0: {
   id: (null) }, children: [ { title: "Shop By Category", url: "", target: "",
   levels: 1, children: [ { title: "Short Sleeve Shirts", url:
   "\/collections\/short-sleeve-shirts-new", target: "_blank", levels: 0, }, {
   title: "Shirt with Breast Pocket", url:
   "\/collections\/shirts-with-breast-pocket-new", target: "", levels: 0, }, {
   title: "Tees", url: "\/collections\/tees", target: "", levels: 0, }, { title:
   "Polos", url: "\/collections\/polos-new", target: "", levels: 0, }, { title:
   "Tuxedo Waistcoat And Tie", url:
   "\/collections\/v-neck-suit-vest-tuxedo-waistcoat-and-tie", target: "",
   levels: 0, }, ] }, { title: "Shop By Features", url: "", target: "", levels:
   1, children: [ { title: "Funny Holiday ", url: "\/collections\/holidays",
   target: "", levels: 0, }, { title: "70's Style \ud83c\udfb5", url:
   "\/collections\/70s-style-shirts-new", target: "", levels: 0, }, { title:
   "50\u2018s Style\ud83d\udd25", url: "\/collections\/retro-style-shirts-new",
   target: "", levels: 0, }, { title: "Ukiyo-e \ud83c\udf0a", url:
   "\/collections\/art-style-ukiyo-e-printed-new", target: "", levels: 0, }, {
   title: "Cat \ud83d\ude38", url: "\/collections\/cat-series", target: "",
   levels: 0, }, { title: "Car \ud83c\udfc1\ud83c\udfce", url:
   "\/collections\/cars", target: "", levels: 0, }, { title: "Music
   \ud83c\udfb8", url: "\/collections\/musical-style", target: "", levels: 0, },
   { title: "Flag ", url: "\/collections\/nation", target: "", levels: 0, }, {
   title: "Resort\ud83c\udfd6\ufe0f", url: "\/collections\/resort-shirts-new",
   target: "", levels: 0, }, { title: "Beauties Print", url:
   "\/collections\/beauties-print", target: "", levels: 0, }, { title: "Costume
   Shirts\ud83e\uddb8\u200d\u2642", url:
   "\/collections\/cartoon-costume-shirts-new", target: "", levels: 0, }, {
   title: "Mid Century Style", url: "\/collections\/mid-century-style", target:
   "", levels: 0, }, { title: "Oriental Culture Inspired \ud83c\udfee", url:
   "\/collections\/mysterious-oriental", target: "", levels: 0, }, { title:
   "Hawaiian Shirts \ud83c\udfc4", url: "\/collections\/hawaiian-style", target:
   "", levels: 0, }, ] }, ] }, { id: 63890063, title: "LONG SLEEVE TOPS", url:
   "\/collections\/long-sleeve", target: "", levels: 1, product0: { id: (null)
   }, children: [ { title: "Long Sleeve Shirts", url:
   "\/collections\/long-sleeve-shirts", target: "", levels: 0, children: [ ] },
   { title: "Hoodies & Sweatshirts", url: "\/collections\/hoodies-sweatshirts",
   target: "", levels: 0, children: [ ] }, { title: "Long Sleeve Polos", url:
   "\/collections\/long-sleeve-polos", target: "", levels: 0, children: [ ] }, {
   title: "Long Sleeve T-Shirts", url: "\/collections\/long-sleeved-t-shirt",
   target: "", levels: 0, children: [ ] }, ] }, { id: 63890073, title: "BOTTOMS
   & SETS", url: "\/collections\/bottoms", target: "", levels: 1, product0: {
   id: (null) }, children: [ { title: "Summer Chic Set", url:
   "\/collections\/two-piece-set-new", target: "", levels: 0, children: [ ] }, {
   title: "Fashion Short Sets", url: "\/collections\/short-sets", target: "",
   levels: 0, children: [ ] }, { title: "Shorts", url:
   "\/collections\/shorts-new", target: "", levels: 0, children: [ ] }, ] }, {
   id: 63890081, title: "\u26a1CLEARANCE", url:
   "\/collections\/on-sale-items-1", target: "", levels: 0, product0: { id:
   (null) }, children: [ ] }, ].slice(offset); linkList = formatLinks(linkList);
   const hasChild = linkList.some(link => !!(link.children &&
   link.children.length || link.product0.id)); return `
    * ${link.title} ${link.tag.label}
   
    * ${second_link.title} ${second_link.tag.label} ${third_links.title}
      ${third_links.tag.label}
   
   
    * ${link.title} ${link.tag.label}
   
   ` })()}


const marketSlot = document.querySelector(".plugin_c_market"); if(marketSlot) {
marketSlot.remove(); } const SITE = (window.C_SETTINGS ||
window[atob('U0hPUExBWlpB')])?.routes?.root || ''; const MARKET_THEME_SETTINGS =
`${SITE}/api/markets/theme_setting`; const MARKET_COUNTRIES =
`${SITE}/api/markets/countries`; const IP_MATCHING_MARKET =
`${SITE}/api/front/station`; const MARKET_LANGUAGES =
`${SITE}/api/markets/:id/active_languages`; const URL_REDIRECT =
'_market_redirected'; const COOKIE_TIPS_NAME = 'market_no_tips'; const
COOKIE_TIPS_EXPIRES = 1000 * 60 * 60 * 24 * 14; const MARKET_COUNTRY_COOKIE =
'_shoplazza_market_country'; const MARKET_MODAL_LOADED =
'__market_modal_loaded__'; const PROPERTY_SELECTED = 'selected'; const
MARKET_PC_HEADER_TRIGGER = 'market-pc-header-trigger'; const
MARKET_PC_HEADER_COUNTRY_SELECT_TITLE = 'market-pc-header-country-select-title';
const MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE =
'market-pc-header-language-select-title'; const
MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE =
'market-pc-header-language-select-sub-title'; const
MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE =
'market-pc-header-country-select-sub-title'; const MARKET_FLAG = 'market-flag';
const MARKET_SELECT_VALUE = 'market-select-value'; const MARKET_CURRENCY =
'market-currency'; const MARKET_CURRENCY_SYMBOL = 'market-currency-symbol';
const MARKET_SELECT_ITEM = 'market-select-item'; const MARKET_SELECT_ITEM_ID =
'market-select-item-id'; const MARKET_SELECT_LIST = 'market-select-list'; const
MARKET_LANGUAGE_SELECT = 'market-language-select'; const MARKET_COUNTRY_SELECT =
'market-country-select'; const MARKET_MODAL = 'market-modal'; const
MARKET_GATEWAY_REDIRECT_MODAL = 'market-gateway-redirect-modal'; const
MARKET_RESELECT_MODAL = 'market-reselect-modal'; const MARKET_MODAL_FLAG =
'market-modal-flag'; const MARKET_MODAL_COUNTRY_CODE =
'market-modal-country-code'; const MARKET_MODAL_CURRENCY_SYMBOL =
'market-modal-currency-symbol'; const MARKET_MODAL_CLOSE = 'market-modal-close';
const MARKET_MODAL_CONFIRM = 'market-modal-confirm'; const MARKET_MODAL_RESELECT
= 'market-modal-reselect'; const MARKET_MODAL_RESELECT_COUNTRY_SELECT =
'market-modal-reselect-country-select'; const DATA_SECTION_TYPE =
'data-section-type'; const SECTION_TYPE_HEADER = 'header'; const
SECTION_TYPE_FOOTER = 'footer'; class SpzCustomMarket extends SPZ.BaseElement {
constructor(element) { super(element); this.global = null;
this.useCountrySelect_ = false; this.useLanguageSelect_ = false; this.useModal_
= false; this.isSingleSelectMode_ = false; this.blockSectionPosition_ = '';
this.isEditMode = false; this.ipMatchingMarket = null; this.marketCountryList =
[]; this.marketLanguages = []; this.toast = null; } static deferredMount() {
return false; } isLayoutSupported(layout) { return layout ==
SPZCore.Layout.LOGIC; } buildCallback() { console.debug('Geolocation');
this.xhr_ = SPZServices.xhrFor(this.win); const platform =
SPZServices.platformFor(this.win); this.isIOS_ = platform.isIos(); this.action_
= SPZServices.actionServiceForDoc(this.element); this.global =
this.win.C_SETTINGS || this.win[atob('U0hPUExBWlpB')]; this.isEditMode = new
URLSearchParams(this.win.location.search).get('preview_theme_id') && new
URLSearchParams(this.win.location.search).get('oseid'); this.init_(); }
showToast_(content) { if (!this.toast) { this.toast =
self.document.createElement('ljs-toast'); this.toast.setAttribute('layout',
'nodisplay'); this.toast.setAttribute('hidden', '');
this.toast.setAttribute('duration', '2000');
this.element.appendChild(this.toast); }
SPZ.whenApiDefined(this.toast).then((apis) => { apis.showToast(content); }); }
triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win,
`${TAG}.${name}`, data); this.action_.trigger(this.element, name, event); }
findBlockSectionPosition() { let current = this.element; while (current) { const
dataSectionType = current.getAttribute(DATA_SECTION_TYPE); if ( dataSectionType
=== SECTION_TYPE_HEADER || dataSectionType === SECTION_TYPE_FOOTER ) { return
dataSectionType; } current = current.parentElement; } return ''; } async
initSettings_() { await this.getMarketThemeSettings_(); if
(this.useCountrySelect_) { this.element.setAttribute('use-country-select',
true); } if (this.useLanguageSelect_) {
this.element.setAttribute('use-language-select', true); } if (this.useModal_) {
this.element.setAttribute('use-modal', true); } if ( (this.useCountrySelect_ &&
!this.useLanguageSelect_) || (!this.useCountrySelect_ &&
this.useLanguageSelect_) ) { this.isSingleSelectMode_ = true; }
this.blockSectionPosition_ = this.findBlockSectionPosition(); this.isPCLayout_ =
this.win.matchMedia('(min-width: 960px)').matches; }
renderMarketSelectTemplateNode_(clonedTemplate, data) {
this.renderTemplateImg_(clonedTemplate, MARKET_FLAG, { src: data?.flag, width:
'24', height: '24', }); this.renderTemplateElement_( clonedTemplate,
MARKET_SELECT_VALUE, data.value ); this.renderTemplateElement_( clonedTemplate,
MARKET_CURRENCY, data?.currency ); this.renderTemplateElement_( clonedTemplate,
MARKET_CURRENCY_SYMBOL, data?.currencySymbol ); }
bindDropdownOpenClickEvent_(triggerElement, dropdown) { if (!triggerElement)
return; const triggerOpen = () => { SPZ.whenApiDefined(dropdown).then((apis) =>
{ if (!dropdown.hasAttribute('open')) { apis.open(triggerElement); } }); }; if
(this.isIOS_) { triggerElement.addEventListener('touchstart', triggerOpen); }
else { triggerElement.addEventListener('click', triggerOpen); } }
createDropdown_() { const dropdown =
self.document.createElement('ljs-dropdown'); dropdown.setAttribute('layout',
'nodisplay'); if (this.blockSectionPosition_ === 'header') {
dropdown.setAttribute('overlay-style', 'top: 4px;');
dropdown.setAttribute('placement', 'bottomRight'); } else if
(this.blockSectionPosition_ === 'footer') {
dropdown.setAttribute('overlay-style', 'top: -4px;');
dropdown.setAttribute('placement', 'top'); } return dropdown; }
createDropdownIcon_() { const svgElement =
document.createElementNS("http://www.w3.org/2000/svg", "svg");
svgElement.setAttribute("class", "market-rotate-180");
svgElement.setAttribute("width", "16"); svgElement.setAttribute("height", "16");
const path1 = document.createElementNS("http://www.w3.org/2000/svg", "path");
path1.setAttribute("d", "M7.47 5.172a.75.75 0 0 1 1.06 0l4.596 4.596a.75.75 0 1
1-1.06 1.06L7.468 6.232a.75.75 0 0 1 0-1.06Z"); path1.setAttribute("fill",
"currentColor"); const path2 =
document.createElementNS("http://www.w3.org/2000/svg", "path");
path2.setAttribute("d", "M8.533 5.172a.75.75 0 0 1 0 1.06l-4.596 4.596a.75.75 0
1 1-1.061-1.06l4.596-4.596a.75.75 0 0 1 1.06 0Z"); path2.setAttribute("fill",
"currentColor"); svgElement.appendChild(path1); svgElement.appendChild(path2);
return svgElement; } renderDropdownListWithClickEvent_({ triggerElement,
dataList, subTitleRole, listElementWithTemplate, defaultValue, itemHandler,
shouldUpdateSelectedItem = false, }) { const dropdown = this.createDropdown_();
const itemTemplate = SPZCore.Dom.scopedQuerySelector( listElementWithTemplate,
'template' ); const clonedItemTemplate = itemTemplate.cloneNode(true); const
fragment = self.document.createDocumentFragment(); dataList.forEach((data) => {
const tempParentNode = self.document.createElement('div'); const clonedTemplate
= self.document.importNode( clonedItemTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
tempParentNode.firstElementChild.classList.add( 'market-select-item' );
this.renderMarketSelectTemplateNode_(tempParentNode, data); const
selectItemElement = SPZCore.Dom.scopedQuerySelector( tempParentNode,
`[role="${MARKET_SELECT_ITEM}"]` ); if (!selectItemElement) { return; } if
(defaultValue === data.value) { if (shouldUpdateSelectedItem) { const
clonedSelectItemElement = selectItemElement.cloneNode(true);
triggerElement.replaceChild( clonedSelectItemElement,
triggerElement.firstElementChild ); }
selectItemElement.setAttribute(PROPERTY_SELECTED, ''); }
selectItemElement.setAttribute(MARKET_SELECT_ITEM_ID, data.value);
fragment.appendChild(tempParentNode.firstElementChild); }); let value =
defaultValue; listElementWithTemplate.addEventListener( 'click', (e) => { if
(this.isEditMode) { this.showToast_('编辑器下不支持切换国家');
SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } let
targetElement = e.target; while (targetElement) { if ( !targetElement ||
targetElement.getAttribute(MARKET_SELECT_ITEM_ID) ) { break; } targetElement =
targetElement.parentNode; } if ( !targetElement ||
!targetElement.hasAttribute(MARKET_SELECT_ITEM_ID) ) { return; } const
selectValue = targetElement.getAttribute(MARKET_SELECT_ITEM_ID); if (value ===
selectValue) { SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); });
return; } const selectedData = dataList.find((c) => c.value === selectValue); if
(shouldUpdateSelectedItem) { const tempParentNode =
self.document.createElement('div'); const clonedTemplate =
self.document.importNode( clonedItemTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
this.renderMarketSelectTemplateNode_(tempParentNode, selectedData);
tempParentNode.firstElementChild.classList.add( 'market-select-item' );
triggerElement.replaceChild( tempParentNode.firstElementChild,
triggerElement.firstElementChild ); } value = selectValue;
itemHandler?.(selectedData); SPZ.whenApiDefined(dropdown).then((apis) => {
apis.close(); }); }, false ); listElementWithTemplate.removeChild(itemTemplate);
listElementWithTemplate.appendChild(fragment);
listElementWithTemplate.classList.add('market-select-list');
dropdown.appendChild(listElementWithTemplate); if (subTitleRole) {
this.renderSelectTitle_(dropdown, subTitleRole); } return dropdown; }
createSelect_({ parent, defaultValue, dataList, listElementWithTemplate,
itemHandler, titleRole, }) { const triggerElement =
self.document.createElement('div');
triggerElement.classList.add('market-select'); const displayElement =
self.document.createElement('div'); triggerElement.appendChild(displayElement);
triggerElement.appendChild(this.createDropdownIcon_()); const dropdown =
this.renderDropdownListWithClickEvent_({ triggerElement, dataList,
listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem:
true, }); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); const
dropdownContainer = self.document.createElement('div');
dropdownContainer.appendChild(triggerElement);
dropdownContainer.appendChild(dropdown);
dropdownContainer.classList.add('market-select-container');
this.renderSelectTitle_(dropdownContainer, titleRole);
parent.appendChild(dropdownContainer); } getListElementWithTemplate_(role) {
const template = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${role}"]` ); if (template) { const clonedTemplate =
template.cloneNode(true); const tempParent = self.document.createElement("div");
tempParent.appendChild(clonedTemplate.content); const listElementWithTemplate =
SPZCore.Dom.scopedQuerySelector( tempParent, `[role="${MARKET_SELECT_LIST}"]` );
return listElementWithTemplate; } return null; } renderSelectTitle_(parent,
role) { if (!parent || !role) { return; } const template =
SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); const
content = self.document.importNode(template.content, true);
parent.insertBefore(content, parent.firstElementChild);
parent.firstElementChild.classList.add( role.includes('sub') ?
'market-pc-header-select-sub-title' : 'market-pc-header-select-title' ); }
initSelect_(rootNode, options) { const parent = rootNode || this.element; if
(this.useCountrySelect_) { this.createSelect_({ parent, titleRole:
options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_COUNTRY_SELECT_TITLE :
undefined, defaultValue: this.getDefaultCountryValue_(), dataList:
this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler:
this.handleCountrySelectChange_.bind(this), }); } if (this.useLanguageSelect_) {
this.createSelect_({ parent, titleRole: options?.shouldRenderSelectTitle ?
MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE : undefined, defaultValue:
this.getDefaultLanguageValue_(), dataList:
this.marketLanguages.map(this.mapLanguageRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_LANGUAGE_SELECT ), itemHandler:
this.handleLanguageSelectChange_.bind(this), }); } }
initPcHeaderTriggerElement() { const headerTriggerElementTemplate =
SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${MARKET_PC_HEADER_TRIGGER}"]` ); const headerTriggerElement =
self.document.importNode( headerTriggerElementTemplate.content, true ); const
parentDivElement = self.document.createElement('div');
parentDivElement.setAttribute('role', MARKET_PC_HEADER_TRIGGER);
parentDivElement.appendChild(headerTriggerElement);
this.element.removeChild(headerTriggerElementTemplate); return parentDivElement;
} initPanelWithSelect_() { const triggerElement =
this.initPcHeaderTriggerElement(); const dropdown = this.createDropdown_();
const panelElement = self.document.createElement('div');
panelElement.classList.add('market-panel'); this.initSelect_(panelElement,
{shouldRenderSelectTitle: true}); dropdown.appendChild(panelElement);
this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
this.element.appendChild(triggerElement); this.element.insertBefore(dropdown,
triggerElement); } initSingleSelectDropdown_() { const triggerElement =
this.initPcHeaderTriggerElement(); let dropdown; if (this.useCountrySelect_) {
dropdown = this.renderDropdownListWithClickEvent_({ triggerElement,
subTitleRole: MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE, dataList:
this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), defaultValue:
this.getDefaultCountryValue_(), itemHandler:
this.handleCountrySelectChange_.bind(this), }); } else if
(this.useLanguageSelect_) { dropdown = this.renderDropdownListWithClickEvent_({
triggerElement, subTitleRole: MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE,
dataList: this.marketLanguages.map(this.mapLanguageRenderData_),
listElementWithTemplate: this.getListElementWithTemplate_(
MARKET_LANGUAGE_SELECT ), defaultValue: this.getDefaultLanguageValue_(),
itemHandler: this.handleLanguageSelectChange_.bind(this), }); } if (dropdown) {
this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
this.element.appendChild(triggerElement); this.element.appendChild(dropdown); }
} initEntry_() { if (this.blockSectionPosition_ === SECTION_TYPE_HEADER) { if
(this.isSingleSelectMode_) { this.initSingleSelectDropdown_(); } else if
(this.useCountrySelect_ && this.useLanguageSelect_) {
this.initPanelWithSelect_(); } } this.initSelect_(this.element); } async
initData_() { const promises = []; if (this.useCountrySelect_ || this.useModal_)
{ promises.push(this.getCountryList_(), this.getIpMatchingMarket_()); } if
(this.useLanguageSelect_) {
promises.push(this.getMarketLanguages_(this.global.market.market_id)); } return
Promise.all(promises).then((results) => { const ipMatchingMarket =
results.find((result) => result.hasOwnProperty('matching_station') ); const
marketCountryList = results.find((result) => result.hasOwnProperty('data') ); if
(ipMatchingMarket && marketCountryList) { this.ipMatchingMarket =
ipMatchingMarket?.matching_station?.find?.( (item) => item.type ===
'multiple_market' ) || { img: marketCountryList.length ?
marketCountryList?.[0]?.detail && marketCountryList[0].detail?.flag : '', }; }
}); } initModal_() { if ( this.isEditMode || !this.ipMatchingMarket?.market_id
|| !this.useModal_ || this.hasCookie_(COOKIE_TIPS_NAME) ||
this.win[MARKET_MODAL_LOADED] ) { return; } this.win[MARKET_MODAL_LOADED] =
true; const redirectParam = new URLSearchParams(this.win.location.search).get(
URL_REDIRECT ); if (redirectParam) {
this.initModalEntry_(MARKET_GATEWAY_REDIRECT_MODAL); } else if (
this.ipMatchingMarket.market_id !== this.global?.market?.market_id ) {
this.initModalEntry_(MARKET_MODAL); } } async init_() { await
this.initSettings_(); await this.initData_(); this.initEntry_();
this.initModal_(); } getDefaultCountryValue_() { return
this.getCookie_(MARKET_COUNTRY_COOKIE) ||
this.marketCountryList[0]?.country_code; } mapCountryRenderData_(country) {
return { flag: country?.detail?.flag || '', value: country?.country_code,
currency: country?.currency, currencySymbol: country?.symbol?.val || '', url:
country?.url, }; } handleCountrySelectChange_(selectedData) {
this.setCookie_(MARKET_COUNTRY_COOKIE, selectedData.value);
this.handleChangeURL_(selectedData.url); } getDefaultLanguageValue_() { return
this.marketLanguages?.find?.( (lang) => lang.code ===
this.global?.market?.market_lang )?.name; } mapLanguageRenderData_(language) {
return { value: language.name, url: language.url, }; }
handleLanguageSelectChange_(selectedData) {
this.handleChangeURL_(selectedData.url); } renderTemplateElement_(parent, role,
value) { const elements = SPZCore.Dom.scopedQuerySelectorAll( parent,
`[role="${role}"]` ); elements.forEach((element) => { if (element && value) {
element.innerHTML = value; } }); } renderTemplateImg_(parent, role, options) {
const flagElement = SPZCore.Dom.scopedQuerySelector( parent, `[role="${role}"]`
); if (flagElement && options?.src && options?.height && options?.width) { const
spzImg = self.document.createElement('ljs-img'); spzImg.setAttribute('src',
options.src); spzImg.setAttribute('layout', 'responsive');
spzImg.setAttribute('width', options.width); spzImg.setAttribute('height',
options.height); spzImg.setAttribute( 'style', `width: ${options.width}px;
height: ${options.height}px;` ); flagElement.appendChild(spzImg); } }
handleChangeURL_(url) { if (!!url) { let {origin, pathname, search} =
this.win.location; pathname = pathname.replace(SITE, url != '/' ? url : '');
this.win.location.href = `${origin}${pathname}${search}`; } else {
this.win.location.reload(true); } } initModalEntry_(role) { const
marketModalTemplate = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${role}"]` ); if (marketModalTemplate) { const tempParentNode =
self.document.createElement('div'); const clonedTemplate =
self.document.importNode( marketModalTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
this.renderTemplateImg_(tempParentNode, MARKET_MODAL_FLAG, { src:
this.ipMatchingMarket?.img, width: '80', height: '80', });
this.renderTemplateElement_( tempParentNode, MARKET_MODAL_COUNTRY_CODE,
this.ipMatchingMarket?.name ); this.renderTemplateElement_( tempParentNode,
MARKET_MODAL_CURRENCY_SYMBOL, this.ipMatchingMarket?.currency_with_symbol );
const lightbox = self.document.createElement('ljs-lightbox');
lightbox.setAttribute('layout', 'nodisplay');
lightbox.appendChild(tempParentNode.firstElementChild);
self.document.body.appendChild(lightbox);
SPZ.whenApiDefined(lightbox).then((apis) => {
SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]`
).forEach((ele) => { ele.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); });
const marketModalConfirmElement = SPZCore.Dom.scopedQuerySelector( lightbox,
`[role="${MARKET_MODAL_CONFIRM}"]` ); if (marketModalConfirmElement &&
this.ipMatchingMarket?.url) {
marketModalConfirmElement.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES);
this.setCookie_(MARKET_COUNTRY_COOKIE, this.ipMatchingMarket?.name);
this.handleChangeURL_(this.ipMatchingMarket?.url); }); } const
marketModalReselectElement = SPZCore.Dom.scopedQuerySelector( lightbox,
`[role="${MARKET_MODAL_RESELECT}"]` ); if (marketModalReselectElement) {
marketModalReselectElement.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); const
marketReselectTemplate = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${MARKET_RESELECT_MODAL}"]` ); if (marketReselectTemplate &&
lightbox.firstElementChild) { const clonedTemplate = self.document.importNode(
marketReselectTemplate.content, true ); const selectParent =
SPZCore.Dom.scopedQuerySelector( clonedTemplate,
`[role="${MARKET_MODAL_RESELECT_COUNTRY_SELECT}"]` ); if (selectParent) {
this.createSelect_({ parent: selectParent, defaultValue:
this.getDefaultCountryValue_(), dataList: this.marketCountryList.map(
this.mapCountryRenderData_ ), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler:
this.handleCountrySelectChange_.bind(this), }); }
lightbox.replaceChild(clonedTemplate, lightbox.firstElementChild);
SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]`
).forEach((ele) => { ele.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); });
} }); } apis.open(); }); } } async getMarketThemeSettings_() { return
this.xhr_.fetchJson(MARKET_THEME_SETTINGS).then((res) => {
this.useCountrySelect_ = !!res.country_selector_enabled; this.useLanguageSelect_
= !!res.language_selector_enabled && this.global?.market?.market_id;
this.useModal_ = !!res.redirect_pop_enabled; return res; }); } async
getCountryList_() { return this.xhr_.fetchJson(MARKET_COUNTRIES).then((res) => {
this.marketCountryList = res.data.length ? res.data : []; return res; }); }
async getIpMatchingMarket_() { return this.xhr_.fetchJson(IP_MATCHING_MARKET, {
method: 'POST', body: { stations: [], }, }); } async
getMarketLanguages_(marketId) { return this.xhr_
.fetchJson(MARKET_LANGUAGES.replace(/:id/gim, marketId)) .then((res) => {
this.marketLanguages = res?.languages?.length ? res.languages : []; return res;
}); } hasCookie_(name) { const m = self.document.cookie .split(';')
.filter((pair) => pair.trim().startsWith(name + '=')); return !!(m && m[0]); }
getCookie_(name) { const m = self.document.cookie .split(';') .filter((pair) =>
pair.trim().startsWith(name + '=')); return m && m[0] ? m[0].split('=')[1] :
null; } setCookie_(name, value, expires) { const expiresDate = new
Date(Date.now() + expires).toGMTString(); self.document.cookie =
`${name}=${encodeURIComponent( value )};expires=${expiresDate};path=/`; } }
SPZ.defineElement('spz-custom-market', SpzCustomMarket);
Region/Country
Region/Country

(


)
Language
Language

Switch to based on your location
 * Purchase with
 * Get shipping options for

Cancel
Switch
Set to based on your location
 * Purchase with
 * Get shipping options for

Continue Shopping
Modify Country/Region
Modify Country/Region

Continue Shopping
Cancel

Region/Country
US
(
USD
$
)
AD
(
EUR
€
)
AT
(
EUR
€
)
BE
(
EUR
€
)
CY
(
EUR
€
)
DE
(
EUR
€
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FR
(
EUR
€
)
GR
(
EUR
€
)
IE
(
EUR
€
)
IT
(
EUR
€
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
ME
(
EUR
€
)
MT
(
EUR
€
)
NL
(
EUR
€
)
PT
(
EUR
€
)
SI
(
EUR
€
)
SK
(
EUR
€
)
SM
(
EUR
€
)
VA
(
EUR
€
)
XK
(
EUR
€
)
JP
(
JPY
¥
)
GB
(
GBP
£
)
TH
(
THB
฿
)
NZ
(
NZD
NZ$
)
AU
(
AUD
A$
)
CA
(
CAD
CA$
)
CH
(
CHF
CHF
)
DK
(
DKK
kr
)
SG
(
SGD
S$
)
DE
(
EUR
€
)
US
(
USD
$
)
AD
(
EUR
€
)
AT
(
EUR
€
)
BE
(
EUR
€
)
CY
(
EUR
€
)
DE
(
EUR
€
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FR
(
EUR
€
)
GR
(
EUR
€
)
IE
(
EUR
€
)
IT
(
EUR
€
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
ME
(
EUR
€
)
MT
(
EUR
€
)
NL
(
EUR
€
)
PT
(
EUR
€
)
SI
(
EUR
€
)
SK
(
EUR
€
)
SM
(
EUR
€
)
VA
(
EUR
€
)
XK
(
EUR
€
)
JP
(
JPY
¥
)
GB
(
GBP
£
)
TH
(
THB
฿
)
NZ
(
NZD
NZ$
)
AU
(
AUD
A$
)
CA
(
CAD
CA$
)
CH
(
CHF
CHF
)
DK
(
DKK
kr
)
SG
(
SGD
S$
)

English,Français,Deutsch,Italiano,Español,Português,dansk,日本語,ไทย

const marketSlot = document.querySelector(".plugin_c_market"); if(marketSlot) {
marketSlot.remove(); } const SITE = (window.C_SETTINGS ||
window[atob('U0hPUExBWlpB')])?.routes?.root || ''; const MARKET_THEME_SETTINGS =
`${SITE}/api/markets/theme_setting`; const MARKET_COUNTRIES =
`${SITE}/api/markets/countries`; const IP_MATCHING_MARKET =
`${SITE}/api/front/station`; const MARKET_LANGUAGES =
`${SITE}/api/markets/:id/active_languages`; const URL_REDIRECT =
'_market_redirected'; const COOKIE_TIPS_NAME = 'market_no_tips'; const
COOKIE_TIPS_EXPIRES = 1000 * 60 * 60 * 24 * 14; const MARKET_COUNTRY_COOKIE =
'_shoplazza_market_country'; const MARKET_MODAL_LOADED =
'__market_modal_loaded__'; const PROPERTY_SELECTED = 'selected'; const
MARKET_PC_HEADER_TRIGGER = 'market-pc-header-trigger'; const
MARKET_PC_HEADER_COUNTRY_SELECT_TITLE = 'market-pc-header-country-select-title';
const MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE =
'market-pc-header-language-select-title'; const
MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE =
'market-pc-header-language-select-sub-title'; const
MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE =
'market-pc-header-country-select-sub-title'; const MARKET_FLAG = 'market-flag';
const MARKET_SELECT_VALUE = 'market-select-value'; const MARKET_CURRENCY =
'market-currency'; const MARKET_CURRENCY_SYMBOL = 'market-currency-symbol';
const MARKET_SELECT_ITEM = 'market-select-item'; const MARKET_SELECT_ITEM_ID =
'market-select-item-id'; const MARKET_SELECT_LIST = 'market-select-list'; const
MARKET_LANGUAGE_SELECT = 'market-language-select'; const MARKET_COUNTRY_SELECT =
'market-country-select'; const MARKET_MODAL = 'market-modal'; const
MARKET_GATEWAY_REDIRECT_MODAL = 'market-gateway-redirect-modal'; const
MARKET_RESELECT_MODAL = 'market-reselect-modal'; const MARKET_MODAL_FLAG =
'market-modal-flag'; const MARKET_MODAL_COUNTRY_CODE =
'market-modal-country-code'; const MARKET_MODAL_CURRENCY_SYMBOL =
'market-modal-currency-symbol'; const MARKET_MODAL_CLOSE = 'market-modal-close';
const MARKET_MODAL_CONFIRM = 'market-modal-confirm'; const MARKET_MODAL_RESELECT
= 'market-modal-reselect'; const MARKET_MODAL_RESELECT_COUNTRY_SELECT =
'market-modal-reselect-country-select'; const DATA_SECTION_TYPE =
'data-section-type'; const SECTION_TYPE_HEADER = 'header'; const
SECTION_TYPE_FOOTER = 'footer'; class SpzCustomMarket extends SPZ.BaseElement {
constructor(element) { super(element); this.global = null;
this.useCountrySelect_ = false; this.useLanguageSelect_ = false; this.useModal_
= false; this.isSingleSelectMode_ = false; this.blockSectionPosition_ = '';
this.isEditMode = false; this.ipMatchingMarket = null; this.marketCountryList =
[]; this.marketLanguages = []; this.toast = null; } static deferredMount() {
return false; } isLayoutSupported(layout) { return layout ==
SPZCore.Layout.LOGIC; } buildCallback() { console.debug('Geolocation');
this.xhr_ = SPZServices.xhrFor(this.win); const platform =
SPZServices.platformFor(this.win); this.isIOS_ = platform.isIos(); this.action_
= SPZServices.actionServiceForDoc(this.element); this.global =
this.win.C_SETTINGS || this.win[atob('U0hPUExBWlpB')]; this.isEditMode = new
URLSearchParams(this.win.location.search).get('preview_theme_id') && new
URLSearchParams(this.win.location.search).get('oseid'); this.init_(); }
showToast_(content) { if (!this.toast) { this.toast =
self.document.createElement('ljs-toast'); this.toast.setAttribute('layout',
'nodisplay'); this.toast.setAttribute('hidden', '');
this.toast.setAttribute('duration', '2000');
this.element.appendChild(this.toast); }
SPZ.whenApiDefined(this.toast).then((apis) => { apis.showToast(content); }); }
triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win,
`${TAG}.${name}`, data); this.action_.trigger(this.element, name, event); }
findBlockSectionPosition() { let current = this.element; while (current) { const
dataSectionType = current.getAttribute(DATA_SECTION_TYPE); if ( dataSectionType
=== SECTION_TYPE_HEADER || dataSectionType === SECTION_TYPE_FOOTER ) { return
dataSectionType; } current = current.parentElement; } return ''; } async
initSettings_() { await this.getMarketThemeSettings_(); if
(this.useCountrySelect_) { this.element.setAttribute('use-country-select',
true); } if (this.useLanguageSelect_) {
this.element.setAttribute('use-language-select', true); } if (this.useModal_) {
this.element.setAttribute('use-modal', true); } if ( (this.useCountrySelect_ &&
!this.useLanguageSelect_) || (!this.useCountrySelect_ &&
this.useLanguageSelect_) ) { this.isSingleSelectMode_ = true; }
this.blockSectionPosition_ = this.findBlockSectionPosition(); this.isPCLayout_ =
this.win.matchMedia('(min-width: 960px)').matches; }
renderMarketSelectTemplateNode_(clonedTemplate, data) {
this.renderTemplateImg_(clonedTemplate, MARKET_FLAG, { src: data?.flag, width:
'24', height: '24', }); this.renderTemplateElement_( clonedTemplate,
MARKET_SELECT_VALUE, data.value ); this.renderTemplateElement_( clonedTemplate,
MARKET_CURRENCY, data?.currency ); this.renderTemplateElement_( clonedTemplate,
MARKET_CURRENCY_SYMBOL, data?.currencySymbol ); }
bindDropdownOpenClickEvent_(triggerElement, dropdown) { if (!triggerElement)
return; const triggerOpen = () => { SPZ.whenApiDefined(dropdown).then((apis) =>
{ if (!dropdown.hasAttribute('open')) { apis.open(triggerElement); } }); }; if
(this.isIOS_) { triggerElement.addEventListener('touchstart', triggerOpen); }
else { triggerElement.addEventListener('click', triggerOpen); } }
createDropdown_() { const dropdown =
self.document.createElement('ljs-dropdown'); dropdown.setAttribute('layout',
'nodisplay'); if (this.blockSectionPosition_ === 'header') {
dropdown.setAttribute('overlay-style', 'top: 4px;');
dropdown.setAttribute('placement', 'bottomRight'); } else if
(this.blockSectionPosition_ === 'footer') {
dropdown.setAttribute('overlay-style', 'top: -4px;');
dropdown.setAttribute('placement', 'top'); } return dropdown; }
createDropdownIcon_() { const svgElement =
document.createElementNS("http://www.w3.org/2000/svg", "svg");
svgElement.setAttribute("class", "market-rotate-180");
svgElement.setAttribute("width", "16"); svgElement.setAttribute("height", "16");
const path1 = document.createElementNS("http://www.w3.org/2000/svg", "path");
path1.setAttribute("d", "M7.47 5.172a.75.75 0 0 1 1.06 0l4.596 4.596a.75.75 0 1
1-1.06 1.06L7.468 6.232a.75.75 0 0 1 0-1.06Z"); path1.setAttribute("fill",
"currentColor"); const path2 =
document.createElementNS("http://www.w3.org/2000/svg", "path");
path2.setAttribute("d", "M8.533 5.172a.75.75 0 0 1 0 1.06l-4.596 4.596a.75.75 0
1 1-1.061-1.06l4.596-4.596a.75.75 0 0 1 1.06 0Z"); path2.setAttribute("fill",
"currentColor"); svgElement.appendChild(path1); svgElement.appendChild(path2);
return svgElement; } renderDropdownListWithClickEvent_({ triggerElement,
dataList, subTitleRole, listElementWithTemplate, defaultValue, itemHandler,
shouldUpdateSelectedItem = false, }) { const dropdown = this.createDropdown_();
const itemTemplate = SPZCore.Dom.scopedQuerySelector( listElementWithTemplate,
'template' ); const clonedItemTemplate = itemTemplate.cloneNode(true); const
fragment = self.document.createDocumentFragment(); dataList.forEach((data) => {
const tempParentNode = self.document.createElement('div'); const clonedTemplate
= self.document.importNode( clonedItemTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
tempParentNode.firstElementChild.classList.add( 'market-select-item' );
this.renderMarketSelectTemplateNode_(tempParentNode, data); const
selectItemElement = SPZCore.Dom.scopedQuerySelector( tempParentNode,
`[role="${MARKET_SELECT_ITEM}"]` ); if (!selectItemElement) { return; } if
(defaultValue === data.value) { if (shouldUpdateSelectedItem) { const
clonedSelectItemElement = selectItemElement.cloneNode(true);
triggerElement.replaceChild( clonedSelectItemElement,
triggerElement.firstElementChild ); }
selectItemElement.setAttribute(PROPERTY_SELECTED, ''); }
selectItemElement.setAttribute(MARKET_SELECT_ITEM_ID, data.value);
fragment.appendChild(tempParentNode.firstElementChild); }); let value =
defaultValue; listElementWithTemplate.addEventListener( 'click', (e) => { if
(this.isEditMode) { this.showToast_('编辑器下不支持切换国家');
SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } let
targetElement = e.target; while (targetElement) { if ( !targetElement ||
targetElement.getAttribute(MARKET_SELECT_ITEM_ID) ) { break; } targetElement =
targetElement.parentNode; } if ( !targetElement ||
!targetElement.hasAttribute(MARKET_SELECT_ITEM_ID) ) { return; } const
selectValue = targetElement.getAttribute(MARKET_SELECT_ITEM_ID); if (value ===
selectValue) { SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); });
return; } const selectedData = dataList.find((c) => c.value === selectValue); if
(shouldUpdateSelectedItem) { const tempParentNode =
self.document.createElement('div'); const clonedTemplate =
self.document.importNode( clonedItemTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
this.renderMarketSelectTemplateNode_(tempParentNode, selectedData);
tempParentNode.firstElementChild.classList.add( 'market-select-item' );
triggerElement.replaceChild( tempParentNode.firstElementChild,
triggerElement.firstElementChild ); } value = selectValue;
itemHandler?.(selectedData); SPZ.whenApiDefined(dropdown).then((apis) => {
apis.close(); }); }, false ); listElementWithTemplate.removeChild(itemTemplate);
listElementWithTemplate.appendChild(fragment);
listElementWithTemplate.classList.add('market-select-list');
dropdown.appendChild(listElementWithTemplate); if (subTitleRole) {
this.renderSelectTitle_(dropdown, subTitleRole); } return dropdown; }
createSelect_({ parent, defaultValue, dataList, listElementWithTemplate,
itemHandler, titleRole, }) { const triggerElement =
self.document.createElement('div');
triggerElement.classList.add('market-select'); const displayElement =
self.document.createElement('div'); triggerElement.appendChild(displayElement);
triggerElement.appendChild(this.createDropdownIcon_()); const dropdown =
this.renderDropdownListWithClickEvent_({ triggerElement, dataList,
listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem:
true, }); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); const
dropdownContainer = self.document.createElement('div');
dropdownContainer.appendChild(triggerElement);
dropdownContainer.appendChild(dropdown);
dropdownContainer.classList.add('market-select-container');
this.renderSelectTitle_(dropdownContainer, titleRole);
parent.appendChild(dropdownContainer); } getListElementWithTemplate_(role) {
const template = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${role}"]` ); if (template) { const clonedTemplate =
template.cloneNode(true); const tempParent = self.document.createElement("div");
tempParent.appendChild(clonedTemplate.content); const listElementWithTemplate =
SPZCore.Dom.scopedQuerySelector( tempParent, `[role="${MARKET_SELECT_LIST}"]` );
return listElementWithTemplate; } return null; } renderSelectTitle_(parent,
role) { if (!parent || !role) { return; } const template =
SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); const
content = self.document.importNode(template.content, true);
parent.insertBefore(content, parent.firstElementChild);
parent.firstElementChild.classList.add( role.includes('sub') ?
'market-pc-header-select-sub-title' : 'market-pc-header-select-title' ); }
initSelect_(rootNode, options) { const parent = rootNode || this.element; if
(this.useCountrySelect_) { this.createSelect_({ parent, titleRole:
options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_COUNTRY_SELECT_TITLE :
undefined, defaultValue: this.getDefaultCountryValue_(), dataList:
this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler:
this.handleCountrySelectChange_.bind(this), }); } if (this.useLanguageSelect_) {
this.createSelect_({ parent, titleRole: options?.shouldRenderSelectTitle ?
MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE : undefined, defaultValue:
this.getDefaultLanguageValue_(), dataList:
this.marketLanguages.map(this.mapLanguageRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_LANGUAGE_SELECT ), itemHandler:
this.handleLanguageSelectChange_.bind(this), }); } }
initPcHeaderTriggerElement() { const headerTriggerElementTemplate =
SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${MARKET_PC_HEADER_TRIGGER}"]` ); const headerTriggerElement =
self.document.importNode( headerTriggerElementTemplate.content, true ); const
parentDivElement = self.document.createElement('div');
parentDivElement.setAttribute('role', MARKET_PC_HEADER_TRIGGER);
parentDivElement.appendChild(headerTriggerElement);
this.element.removeChild(headerTriggerElementTemplate); return parentDivElement;
} initPanelWithSelect_() { const triggerElement =
this.initPcHeaderTriggerElement(); const dropdown = this.createDropdown_();
const panelElement = self.document.createElement('div');
panelElement.classList.add('market-panel'); this.initSelect_(panelElement,
{shouldRenderSelectTitle: true}); dropdown.appendChild(panelElement);
this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
this.element.appendChild(triggerElement); this.element.insertBefore(dropdown,
triggerElement); } initSingleSelectDropdown_() { const triggerElement =
this.initPcHeaderTriggerElement(); let dropdown; if (this.useCountrySelect_) {
dropdown = this.renderDropdownListWithClickEvent_({ triggerElement,
subTitleRole: MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE, dataList:
this.marketCountryList.map(this.mapCountryRenderData_), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), defaultValue:
this.getDefaultCountryValue_(), itemHandler:
this.handleCountrySelectChange_.bind(this), }); } else if
(this.useLanguageSelect_) { dropdown = this.renderDropdownListWithClickEvent_({
triggerElement, subTitleRole: MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE,
dataList: this.marketLanguages.map(this.mapLanguageRenderData_),
listElementWithTemplate: this.getListElementWithTemplate_(
MARKET_LANGUAGE_SELECT ), defaultValue: this.getDefaultLanguageValue_(),
itemHandler: this.handleLanguageSelectChange_.bind(this), }); } if (dropdown) {
this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
this.element.appendChild(triggerElement); this.element.appendChild(dropdown); }
} initEntry_() { if (this.blockSectionPosition_ === SECTION_TYPE_HEADER) { if
(this.isSingleSelectMode_) { this.initSingleSelectDropdown_(); } else if
(this.useCountrySelect_ && this.useLanguageSelect_) {
this.initPanelWithSelect_(); } } this.initSelect_(this.element); } async
initData_() { const promises = []; if (this.useCountrySelect_ || this.useModal_)
{ promises.push(this.getCountryList_(), this.getIpMatchingMarket_()); } if
(this.useLanguageSelect_) {
promises.push(this.getMarketLanguages_(this.global.market.market_id)); } return
Promise.all(promises).then((results) => { const ipMatchingMarket =
results.find((result) => result.hasOwnProperty('matching_station') ); const
marketCountryList = results.find((result) => result.hasOwnProperty('data') ); if
(ipMatchingMarket && marketCountryList) { this.ipMatchingMarket =
ipMatchingMarket?.matching_station?.find?.( (item) => item.type ===
'multiple_market' ) || { img: marketCountryList.length ?
marketCountryList?.[0]?.detail && marketCountryList[0].detail?.flag : '', }; }
}); } initModal_() { if ( this.isEditMode || !this.ipMatchingMarket?.market_id
|| !this.useModal_ || this.hasCookie_(COOKIE_TIPS_NAME) ||
this.win[MARKET_MODAL_LOADED] ) { return; } this.win[MARKET_MODAL_LOADED] =
true; const redirectParam = new URLSearchParams(this.win.location.search).get(
URL_REDIRECT ); if (redirectParam) {
this.initModalEntry_(MARKET_GATEWAY_REDIRECT_MODAL); } else if (
this.ipMatchingMarket.market_id !== this.global?.market?.market_id ) {
this.initModalEntry_(MARKET_MODAL); } } async init_() { await
this.initSettings_(); await this.initData_(); this.initEntry_();
this.initModal_(); } getDefaultCountryValue_() { return
this.getCookie_(MARKET_COUNTRY_COOKIE) ||
this.marketCountryList[0]?.country_code; } mapCountryRenderData_(country) {
return { flag: country?.detail?.flag || '', value: country?.country_code,
currency: country?.currency, currencySymbol: country?.symbol?.val || '', url:
country?.url, }; } handleCountrySelectChange_(selectedData) {
this.setCookie_(MARKET_COUNTRY_COOKIE, selectedData.value);
this.handleChangeURL_(selectedData.url); } getDefaultLanguageValue_() { return
this.marketLanguages?.find?.( (lang) => lang.code ===
this.global?.market?.market_lang )?.name; } mapLanguageRenderData_(language) {
return { value: language.name, url: language.url, }; }
handleLanguageSelectChange_(selectedData) {
this.handleChangeURL_(selectedData.url); } renderTemplateElement_(parent, role,
value) { const elements = SPZCore.Dom.scopedQuerySelectorAll( parent,
`[role="${role}"]` ); elements.forEach((element) => { if (element && value) {
element.innerHTML = value; } }); } renderTemplateImg_(parent, role, options) {
const flagElement = SPZCore.Dom.scopedQuerySelector( parent, `[role="${role}"]`
); if (flagElement && options?.src && options?.height && options?.width) { const
spzImg = self.document.createElement('ljs-img'); spzImg.setAttribute('src',
options.src); spzImg.setAttribute('layout', 'responsive');
spzImg.setAttribute('width', options.width); spzImg.setAttribute('height',
options.height); spzImg.setAttribute( 'style', `width: ${options.width}px;
height: ${options.height}px;` ); flagElement.appendChild(spzImg); } }
handleChangeURL_(url) { if (!!url) { let {origin, pathname, search} =
this.win.location; pathname = pathname.replace(SITE, url != '/' ? url : '');
this.win.location.href = `${origin}${pathname}${search}`; } else {
this.win.location.reload(true); } } initModalEntry_(role) { const
marketModalTemplate = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${role}"]` ); if (marketModalTemplate) { const tempParentNode =
self.document.createElement('div'); const clonedTemplate =
self.document.importNode( marketModalTemplate.content, true );
tempParentNode.appendChild(clonedTemplate);
this.renderTemplateImg_(tempParentNode, MARKET_MODAL_FLAG, { src:
this.ipMatchingMarket?.img, width: '80', height: '80', });
this.renderTemplateElement_( tempParentNode, MARKET_MODAL_COUNTRY_CODE,
this.ipMatchingMarket?.name ); this.renderTemplateElement_( tempParentNode,
MARKET_MODAL_CURRENCY_SYMBOL, this.ipMatchingMarket?.currency_with_symbol );
const lightbox = self.document.createElement('ljs-lightbox');
lightbox.setAttribute('layout', 'nodisplay');
lightbox.appendChild(tempParentNode.firstElementChild);
self.document.body.appendChild(lightbox);
SPZ.whenApiDefined(lightbox).then((apis) => {
SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]`
).forEach((ele) => { ele.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); });
const marketModalConfirmElement = SPZCore.Dom.scopedQuerySelector( lightbox,
`[role="${MARKET_MODAL_CONFIRM}"]` ); if (marketModalConfirmElement &&
this.ipMatchingMarket?.url) {
marketModalConfirmElement.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES);
this.setCookie_(MARKET_COUNTRY_COOKIE, this.ipMatchingMarket?.name);
this.handleChangeURL_(this.ipMatchingMarket?.url); }); } const
marketModalReselectElement = SPZCore.Dom.scopedQuerySelector( lightbox,
`[role="${MARKET_MODAL_RESELECT}"]` ); if (marketModalReselectElement) {
marketModalReselectElement.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); const
marketReselectTemplate = SPZCore.Dom.scopedQuerySelector( this.element,
`[role="${MARKET_RESELECT_MODAL}"]` ); if (marketReselectTemplate &&
lightbox.firstElementChild) { const clonedTemplate = self.document.importNode(
marketReselectTemplate.content, true ); const selectParent =
SPZCore.Dom.scopedQuerySelector( clonedTemplate,
`[role="${MARKET_MODAL_RESELECT_COUNTRY_SELECT}"]` ); if (selectParent) {
this.createSelect_({ parent: selectParent, defaultValue:
this.getDefaultCountryValue_(), dataList: this.marketCountryList.map(
this.mapCountryRenderData_ ), listElementWithTemplate:
this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler:
this.handleCountrySelectChange_.bind(this), }); }
lightbox.replaceChild(clonedTemplate, lightbox.firstElementChild);
SPZCore.Dom.scopedQuerySelectorAll( lightbox, `[role="${MARKET_MODAL_CLOSE}"]`
).forEach((ele) => { ele.addEventListener('click', () => {
this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); apis.close(); }); });
} }); } apis.open(); }); } } async getMarketThemeSettings_() { return
this.xhr_.fetchJson(MARKET_THEME_SETTINGS).then((res) => {
this.useCountrySelect_ = !!res.country_selector_enabled; this.useLanguageSelect_
= !!res.language_selector_enabled && this.global?.market?.market_id;
this.useModal_ = !!res.redirect_pop_enabled; return res; }); } async
getCountryList_() { return this.xhr_.fetchJson(MARKET_COUNTRIES).then((res) => {
this.marketCountryList = res.data.length ? res.data : []; return res; }); }
async getIpMatchingMarket_() { return this.xhr_.fetchJson(IP_MATCHING_MARKET, {
method: 'POST', body: { stations: [], }, }); } async
getMarketLanguages_(marketId) { return this.xhr_
.fetchJson(MARKET_LANGUAGES.replace(/:id/gim, marketId)) .then((res) => {
this.marketLanguages = res?.languages?.length ? res.languages : []; return res;
}); } hasCookie_(name) { const m = self.document.cookie .split(';')
.filter((pair) => pair.trim().startsWith(name + '=')); return !!(m && m[0]); }
getCookie_(name) { const m = self.document.cookie .split(';') .filter((pair) =>
pair.trim().startsWith(name + '=')); return m && m[0] ? m[0].split('=')[1] :
null; } setCookie_(name, value, expires) { const expiresDate = new
Date(Date.now() + expires).toGMTString(); self.document.cookie =
`${name}=${encodeURIComponent( value )};expires=${expiresDate};path=/`; } }
SPZ.defineElement('spz-custom-market', SpzCustomMarket);
Region/Country
Region/Country

(


)
Language
Language

Switch to based on your location
 * Purchase with
 * Get shipping options for

Cancel
Switch
Set to based on your location
 * Purchase with
 * Get shipping options for

Continue Shopping
Modify Country/Region
Modify Country/Region

Continue Shopping
Cancel

Region/Country
US
(
USD
$
)
AD
(
EUR
€
)
AT
(
EUR
€
)
BE
(
EUR
€
)
CY
(
EUR
€
)
DE
(
EUR
€
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FR
(
EUR
€
)
GR
(
EUR
€
)
IE
(
EUR
€
)
IT
(
EUR
€
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
ME
(
EUR
€
)
MT
(
EUR
€
)
NL
(
EUR
€
)
PT
(
EUR
€
)
SI
(
EUR
€
)
SK
(
EUR
€
)
SM
(
EUR
€
)
VA
(
EUR
€
)
XK
(
EUR
€
)
JP
(
JPY
¥
)
GB
(
GBP
£
)
TH
(
THB
฿
)
NZ
(
NZD
NZ$
)
AU
(
AUD
A$
)
CA
(
CAD
CA$
)
CH
(
CHF
CHF
)
DK
(
DKK
kr
)
SG
(
SGD
S$
)
DE
(
EUR
€
)
US
(
USD
$
)
AD
(
EUR
€
)
AT
(
EUR
€
)
BE
(
EUR
€
)
CY
(
EUR
€
)
DE
(
EUR
€
)
EE
(
EUR
€
)
ES
(
EUR
€
)
FI
(
EUR
€
)
FR
(
EUR
€
)
GR
(
EUR
€
)
IE
(
EUR
€
)
IT
(
EUR
€
)
LT
(
EUR
€
)
LU
(
EUR
€
)
LV
(
EUR
€
)
MC
(
EUR
€
)
ME
(
EUR
€
)
MT
(
EUR
€
)
NL
(
EUR
€
)
PT
(
EUR
€
)
SI
(
EUR
€
)
SK
(
EUR
€
)
SM
(
EUR
€
)
VA
(
EUR
€
)
XK
(
EUR
€
)
JP
(
JPY
¥
)
GB
(
GBP
£
)
TH
(
THB
฿
)
NZ
(
NZD
NZ$
)
AU
(
AUD
A$
)
CA
(
CAD
CA$
)
CH
(
CHF
CHF
)
DK
(
DKK
kr
)
SG
(
SGD
S$
)

English,Français,Deutsch,Italiano,Español,Português,dansk,日本語,ไทย

 * Log in
 * Create an account

${data.data && data.data.count}


${(function(){ if (data === undefined || typeof data !== 'string' || data == '')
return ''; const keyword = encodeURIComponent(data); return `
View more
Your search for '${data}' did not yield any results.

` })()}
${item}
Search
Recently searched
 * ${item}

Hot searches
 * 
   ${item.word}


Results
${item.highlightHtml}

 * SHOP ALL
   * SHOP ALL
   * Tops
     * Tops
     * Short Sleeve Shirts
     * Long Sleeve Shirts
     * Hoodies & Sweatshirts
     * Polo Shirts👕
     * V-Neck Suit Vest/Tuxedo Waistcoat And Tie
     * 100% Cotton Tees
     * Long Sleeved T-Shirt
     * Shirt with Breast Pocket
   * Bottoms
     * Bottoms
     * Men's Short Sets
     * Shorts
   * Accessories
     * Accessories
     * Hats
     * Scarf🧣
     * Sunglasses
     * Belts & Suspenders
     * Shoes
   * Chic Matching Set
   * Dresses 👗
 * HOT SALE
 * HOLIDAY SHIRTS🎉
   * HOLIDAY SHIRTS🎉
   * Patriots' Day Shirts
   * Cute Costume Shirts 🤠
   * LGBT Pride Month 🌈
   * Columbus Day ☠️
   * Hippie Festival Shirts 🐙
   * Halloween's Day Shirts 🎃
   * Thanksgiving Day Tops 🦃
   * Christmas Day Shirts 🎅
   * New Year Shirts 🎉
   * Mardi Gras Shirts 🤡
   * Valentine's Day Shirts 💕
   * St. Patrick's Day Shirts ☘
   * Easter Day Shirts 🐇
   * Cinco De Mayo 💃
   * Happy Father's Day🎁
 * NEW ARRIVALS
   * NEW ARRIVALS
   * SHOP BY CATRGORY
     * SHOP BY CATRGORY
     * New in Short Sleeve Shirts
     * New in Hawaiian Shirts
     * New in Polos
     * New in Shorts
 * Short Sleeve Shirts
   * Short Sleeve Shirts
   * Shop By Category
     * Shop By Category
     * Short Sleeve Shirts
     * Shirt with Breast Pocket
     * Tees
     * Polos
     * Tuxedo Waistcoat And Tie
   * Shop By Features
     * Shop By Features
     * Funny Holiday
     * 70's Style 🎵
     * 50‘s Style🔥
     * Ukiyo-e 🌊
     * Cat 😸
     * Car 🏁🏎
     * Music 🎸
     * Flag
     * Resort🏖️
     * Beauties Print
     * Costume Shirts🦸‍♂
     * Mid Century Style
     * Oriental Culture Inspired 🏮
     * Hawaiian Shirts 🏄
 * LONG SLEEVE TOPS
   * LONG SLEEVE TOPS
   * Long Sleeve Shirts
   * Hoodies & Sweatshirts
   * Long Sleeve Polos
   * Long Sleeve T-Shirts
 * BOTTOMS & SETS
   * BOTTOMS & SETS
   * Summer Chic Set
   * Fashion Short Sets
   * Shorts
 * ⚡CLEARANCE
   const marketSlot = document.querySelector(".plugin_c_market"); if(marketSlot)
   { marketSlot.remove(); } const SITE = (window.C_SETTINGS ||
   window[atob('U0hPUExBWlpB')])?.routes?.root || ''; const
   MARKET_THEME_SETTINGS = `${SITE}/api/markets/theme_setting`; const
   MARKET_COUNTRIES = `${SITE}/api/markets/countries`; const IP_MATCHING_MARKET
   = `${SITE}/api/front/station`; const MARKET_LANGUAGES =
   `${SITE}/api/markets/:id/active_languages`; const URL_REDIRECT =
   '_market_redirected'; const COOKIE_TIPS_NAME = 'market_no_tips'; const
   COOKIE_TIPS_EXPIRES = 1000 * 60 * 60 * 24 * 14; const MARKET_COUNTRY_COOKIE =
   '_shoplazza_market_country'; const MARKET_MODAL_LOADED =
   '__market_modal_loaded__'; const PROPERTY_SELECTED = 'selected'; const
   MARKET_PC_HEADER_TRIGGER = 'market-pc-header-trigger'; const
   MARKET_PC_HEADER_COUNTRY_SELECT_TITLE =
   'market-pc-header-country-select-title'; const
   MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE =
   'market-pc-header-language-select-title'; const
   MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE =
   'market-pc-header-language-select-sub-title'; const
   MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE =
   'market-pc-header-country-select-sub-title'; const MARKET_FLAG =
   'market-flag'; const MARKET_SELECT_VALUE = 'market-select-value'; const
   MARKET_CURRENCY = 'market-currency'; const MARKET_CURRENCY_SYMBOL =
   'market-currency-symbol'; const MARKET_SELECT_ITEM = 'market-select-item';
   const MARKET_SELECT_ITEM_ID = 'market-select-item-id'; const
   MARKET_SELECT_LIST = 'market-select-list'; const MARKET_LANGUAGE_SELECT =
   'market-language-select'; const MARKET_COUNTRY_SELECT =
   'market-country-select'; const MARKET_MODAL = 'market-modal'; const
   MARKET_GATEWAY_REDIRECT_MODAL = 'market-gateway-redirect-modal'; const
   MARKET_RESELECT_MODAL = 'market-reselect-modal'; const MARKET_MODAL_FLAG =
   'market-modal-flag'; const MARKET_MODAL_COUNTRY_CODE =
   'market-modal-country-code'; const MARKET_MODAL_CURRENCY_SYMBOL =
   'market-modal-currency-symbol'; const MARKET_MODAL_CLOSE =
   'market-modal-close'; const MARKET_MODAL_CONFIRM = 'market-modal-confirm';
   const MARKET_MODAL_RESELECT = 'market-modal-reselect'; const
   MARKET_MODAL_RESELECT_COUNTRY_SELECT =
   'market-modal-reselect-country-select'; const DATA_SECTION_TYPE =
   'data-section-type'; const SECTION_TYPE_HEADER = 'header'; const
   SECTION_TYPE_FOOTER = 'footer'; class SpzCustomMarket extends SPZ.BaseElement
   { constructor(element) { super(element); this.global = null;
   this.useCountrySelect_ = false; this.useLanguageSelect_ = false;
   this.useModal_ = false; this.isSingleSelectMode_ = false;
   this.blockSectionPosition_ = ''; this.isEditMode = false;
   this.ipMatchingMarket = null; this.marketCountryList = [];
   this.marketLanguages = []; this.toast = null; } static deferredMount() {
   return false; } isLayoutSupported(layout) { return layout ==
   SPZCore.Layout.LOGIC; } buildCallback() { console.debug('Geolocation');
   this.xhr_ = SPZServices.xhrFor(this.win); const platform =
   SPZServices.platformFor(this.win); this.isIOS_ = platform.isIos();
   this.action_ = SPZServices.actionServiceForDoc(this.element); this.global =
   this.win.C_SETTINGS || this.win[atob('U0hPUExBWlpB')]; this.isEditMode = new
   URLSearchParams(this.win.location.search).get('preview_theme_id') && new
   URLSearchParams(this.win.location.search).get('oseid'); this.init_(); }
   showToast_(content) { if (!this.toast) { this.toast =
   self.document.createElement('ljs-toast'); this.toast.setAttribute('layout',
   'nodisplay'); this.toast.setAttribute('hidden', '');
   this.toast.setAttribute('duration', '2000');
   this.element.appendChild(this.toast); }
   SPZ.whenApiDefined(this.toast).then((apis) => { apis.showToast(content); });
   } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win,
   `${TAG}.${name}`, data); this.action_.trigger(this.element, name, event); }
   findBlockSectionPosition() { let current = this.element; while (current) {
   const dataSectionType = current.getAttribute(DATA_SECTION_TYPE); if (
   dataSectionType === SECTION_TYPE_HEADER || dataSectionType ===
   SECTION_TYPE_FOOTER ) { return dataSectionType; } current =
   current.parentElement; } return ''; } async initSettings_() { await
   this.getMarketThemeSettings_(); if (this.useCountrySelect_) {
   this.element.setAttribute('use-country-select', true); } if
   (this.useLanguageSelect_) { this.element.setAttribute('use-language-select',
   true); } if (this.useModal_) { this.element.setAttribute('use-modal', true);
   } if ( (this.useCountrySelect_ && !this.useLanguageSelect_) ||
   (!this.useCountrySelect_ && this.useLanguageSelect_) ) {
   this.isSingleSelectMode_ = true; } this.blockSectionPosition_ =
   this.findBlockSectionPosition(); this.isPCLayout_ =
   this.win.matchMedia('(min-width: 960px)').matches; }
   renderMarketSelectTemplateNode_(clonedTemplate, data) {
   this.renderTemplateImg_(clonedTemplate, MARKET_FLAG, { src: data?.flag,
   width: '24', height: '24', }); this.renderTemplateElement_( clonedTemplate,
   MARKET_SELECT_VALUE, data.value ); this.renderTemplateElement_(
   clonedTemplate, MARKET_CURRENCY, data?.currency );
   this.renderTemplateElement_( clonedTemplate, MARKET_CURRENCY_SYMBOL,
   data?.currencySymbol ); } bindDropdownOpenClickEvent_(triggerElement,
   dropdown) { if (!triggerElement) return; const triggerOpen = () => {
   SPZ.whenApiDefined(dropdown).then((apis) => { if
   (!dropdown.hasAttribute('open')) { apis.open(triggerElement); } }); }; if
   (this.isIOS_) { triggerElement.addEventListener('touchstart', triggerOpen); }
   else { triggerElement.addEventListener('click', triggerOpen); } }
   createDropdown_() { const dropdown =
   self.document.createElement('ljs-dropdown'); dropdown.setAttribute('layout',
   'nodisplay'); if (this.blockSectionPosition_ === 'header') {
   dropdown.setAttribute('overlay-style', 'top: 4px;');
   dropdown.setAttribute('placement', 'bottomRight'); } else if
   (this.blockSectionPosition_ === 'footer') {
   dropdown.setAttribute('overlay-style', 'top: -4px;');
   dropdown.setAttribute('placement', 'top'); } return dropdown; }
   createDropdownIcon_() { const svgElement =
   document.createElementNS("http://www.w3.org/2000/svg", "svg");
   svgElement.setAttribute("class", "market-rotate-180");
   svgElement.setAttribute("width", "16"); svgElement.setAttribute("height",
   "16"); const path1 = document.createElementNS("http://www.w3.org/2000/svg",
   "path"); path1.setAttribute("d", "M7.47 5.172a.75.75 0 0 1 1.06 0l4.596
   4.596a.75.75 0 1 1-1.06 1.06L7.468 6.232a.75.75 0 0 1 0-1.06Z");
   path1.setAttribute("fill", "currentColor"); const path2 =
   document.createElementNS("http://www.w3.org/2000/svg", "path");
   path2.setAttribute("d", "M8.533 5.172a.75.75 0 0 1 0 1.06l-4.596 4.596a.75.75
   0 1 1-1.061-1.06l4.596-4.596a.75.75 0 0 1 1.06 0Z");
   path2.setAttribute("fill", "currentColor"); svgElement.appendChild(path1);
   svgElement.appendChild(path2); return svgElement; }
   renderDropdownListWithClickEvent_({ triggerElement, dataList, subTitleRole,
   listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem
   = false, }) { const dropdown = this.createDropdown_(); const itemTemplate =
   SPZCore.Dom.scopedQuerySelector( listElementWithTemplate, 'template' ); const
   clonedItemTemplate = itemTemplate.cloneNode(true); const fragment =
   self.document.createDocumentFragment(); dataList.forEach((data) => { const
   tempParentNode = self.document.createElement('div'); const clonedTemplate =
   self.document.importNode( clonedItemTemplate.content, true );
   tempParentNode.appendChild(clonedTemplate);
   tempParentNode.firstElementChild.classList.add( 'market-select-item' );
   this.renderMarketSelectTemplateNode_(tempParentNode, data); const
   selectItemElement = SPZCore.Dom.scopedQuerySelector( tempParentNode,
   `[role="${MARKET_SELECT_ITEM}"]` ); if (!selectItemElement) { return; } if
   (defaultValue === data.value) { if (shouldUpdateSelectedItem) { const
   clonedSelectItemElement = selectItemElement.cloneNode(true);
   triggerElement.replaceChild( clonedSelectItemElement,
   triggerElement.firstElementChild ); }
   selectItemElement.setAttribute(PROPERTY_SELECTED, ''); }
   selectItemElement.setAttribute(MARKET_SELECT_ITEM_ID, data.value);
   fragment.appendChild(tempParentNode.firstElementChild); }); let value =
   defaultValue; listElementWithTemplate.addEventListener( 'click', (e) => { if
   (this.isEditMode) { this.showToast_('编辑器下不支持切换国家');
   SPZ.whenApiDefined(dropdown).then((apis) => { apis.close(); }); return; } let
   targetElement = e.target; while (targetElement) { if ( !targetElement ||
   targetElement.getAttribute(MARKET_SELECT_ITEM_ID) ) { break; } targetElement
   = targetElement.parentNode; } if ( !targetElement ||
   !targetElement.hasAttribute(MARKET_SELECT_ITEM_ID) ) { return; } const
   selectValue = targetElement.getAttribute(MARKET_SELECT_ITEM_ID); if (value
   === selectValue) { SPZ.whenApiDefined(dropdown).then((apis) => {
   apis.close(); }); return; } const selectedData = dataList.find((c) => c.value
   === selectValue); if (shouldUpdateSelectedItem) { const tempParentNode =
   self.document.createElement('div'); const clonedTemplate =
   self.document.importNode( clonedItemTemplate.content, true );
   tempParentNode.appendChild(clonedTemplate);
   this.renderMarketSelectTemplateNode_(tempParentNode, selectedData);
   tempParentNode.firstElementChild.classList.add( 'market-select-item' );
   triggerElement.replaceChild( tempParentNode.firstElementChild,
   triggerElement.firstElementChild ); } value = selectValue;
   itemHandler?.(selectedData); SPZ.whenApiDefined(dropdown).then((apis) => {
   apis.close(); }); }, false );
   listElementWithTemplate.removeChild(itemTemplate);
   listElementWithTemplate.appendChild(fragment);
   listElementWithTemplate.classList.add('market-select-list');
   dropdown.appendChild(listElementWithTemplate); if (subTitleRole) {
   this.renderSelectTitle_(dropdown, subTitleRole); } return dropdown; }
   createSelect_({ parent, defaultValue, dataList, listElementWithTemplate,
   itemHandler, titleRole, }) { const triggerElement =
   self.document.createElement('div');
   triggerElement.classList.add('market-select'); const displayElement =
   self.document.createElement('div');
   triggerElement.appendChild(displayElement);
   triggerElement.appendChild(this.createDropdownIcon_()); const dropdown =
   this.renderDropdownListWithClickEvent_({ triggerElement, dataList,
   listElementWithTemplate, defaultValue, itemHandler, shouldUpdateSelectedItem:
   true, }); this.bindDropdownOpenClickEvent_(triggerElement, dropdown); const
   dropdownContainer = self.document.createElement('div');
   dropdownContainer.appendChild(triggerElement);
   dropdownContainer.appendChild(dropdown);
   dropdownContainer.classList.add('market-select-container');
   this.renderSelectTitle_(dropdownContainer, titleRole);
   parent.appendChild(dropdownContainer); } getListElementWithTemplate_(role) {
   const template = SPZCore.Dom.scopedQuerySelector( this.element,
   `[role="${role}"]` ); if (template) { const clonedTemplate =
   template.cloneNode(true); const tempParent =
   self.document.createElement("div");
   tempParent.appendChild(clonedTemplate.content); const listElementWithTemplate
   = SPZCore.Dom.scopedQuerySelector( tempParent,
   `[role="${MARKET_SELECT_LIST}"]` ); return listElementWithTemplate; } return
   null; } renderSelectTitle_(parent, role) { if (!parent || !role) { return; }
   const template = SPZCore.Dom.scopedQuerySelector( this.element,
   `[role="${role}"]` ); const content =
   self.document.importNode(template.content, true);
   parent.insertBefore(content, parent.firstElementChild);
   parent.firstElementChild.classList.add( role.includes('sub') ?
   'market-pc-header-select-sub-title' : 'market-pc-header-select-title' ); }
   initSelect_(rootNode, options) { const parent = rootNode || this.element; if
   (this.useCountrySelect_) { this.createSelect_({ parent, titleRole:
   options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_COUNTRY_SELECT_TITLE :
   undefined, defaultValue: this.getDefaultCountryValue_(), dataList:
   this.marketCountryList.map(this.mapCountryRenderData_),
   listElementWithTemplate: this.getListElementWithTemplate_(
   MARKET_COUNTRY_SELECT ), itemHandler:
   this.handleCountrySelectChange_.bind(this), }); } if
   (this.useLanguageSelect_) { this.createSelect_({ parent, titleRole:
   options?.shouldRenderSelectTitle ? MARKET_PC_HEADER_LANGUAGE_SELECT_TITLE :
   undefined, defaultValue: this.getDefaultLanguageValue_(), dataList:
   this.marketLanguages.map(this.mapLanguageRenderData_),
   listElementWithTemplate: this.getListElementWithTemplate_(
   MARKET_LANGUAGE_SELECT ), itemHandler:
   this.handleLanguageSelectChange_.bind(this), }); } }
   initPcHeaderTriggerElement() { const headerTriggerElementTemplate =
   SPZCore.Dom.scopedQuerySelector( this.element,
   `[role="${MARKET_PC_HEADER_TRIGGER}"]` ); const headerTriggerElement =
   self.document.importNode( headerTriggerElementTemplate.content, true ); const
   parentDivElement = self.document.createElement('div');
   parentDivElement.setAttribute('role', MARKET_PC_HEADER_TRIGGER);
   parentDivElement.appendChild(headerTriggerElement);
   this.element.removeChild(headerTriggerElementTemplate); return
   parentDivElement; } initPanelWithSelect_() { const triggerElement =
   this.initPcHeaderTriggerElement(); const dropdown = this.createDropdown_();
   const panelElement = self.document.createElement('div');
   panelElement.classList.add('market-panel'); this.initSelect_(panelElement,
   {shouldRenderSelectTitle: true}); dropdown.appendChild(panelElement);
   this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
   this.element.appendChild(triggerElement); this.element.insertBefore(dropdown,
   triggerElement); } initSingleSelectDropdown_() { const triggerElement =
   this.initPcHeaderTriggerElement(); let dropdown; if (this.useCountrySelect_)
   { dropdown = this.renderDropdownListWithClickEvent_({ triggerElement,
   subTitleRole: MARKET_PC_HEADER_COUNTRY_SELECT_SUB_TITLE, dataList:
   this.marketCountryList.map(this.mapCountryRenderData_),
   listElementWithTemplate: this.getListElementWithTemplate_(
   MARKET_COUNTRY_SELECT ), defaultValue: this.getDefaultCountryValue_(),
   itemHandler: this.handleCountrySelectChange_.bind(this), }); } else if
   (this.useLanguageSelect_) { dropdown =
   this.renderDropdownListWithClickEvent_({ triggerElement, subTitleRole:
   MARKET_PC_HEADER_LANGUAGE_SELECT_SUB_TITLE, dataList:
   this.marketLanguages.map(this.mapLanguageRenderData_),
   listElementWithTemplate: this.getListElementWithTemplate_(
   MARKET_LANGUAGE_SELECT ), defaultValue: this.getDefaultLanguageValue_(),
   itemHandler: this.handleLanguageSelectChange_.bind(this), }); } if (dropdown)
   { this.bindDropdownOpenClickEvent_(triggerElement, dropdown);
   this.element.appendChild(triggerElement); this.element.appendChild(dropdown);
   } } initEntry_() { if (this.blockSectionPosition_ === SECTION_TYPE_HEADER) {
   if (this.isSingleSelectMode_) { this.initSingleSelectDropdown_(); } else if
   (this.useCountrySelect_ && this.useLanguageSelect_) {
   this.initPanelWithSelect_(); } } this.initSelect_(this.element); } async
   initData_() { const promises = []; if (this.useCountrySelect_ ||
   this.useModal_) { promises.push(this.getCountryList_(),
   this.getIpMatchingMarket_()); } if (this.useLanguageSelect_) {
   promises.push(this.getMarketLanguages_(this.global.market.market_id)); }
   return Promise.all(promises).then((results) => { const ipMatchingMarket =
   results.find((result) => result.hasOwnProperty('matching_station') ); const
   marketCountryList = results.find((result) => result.hasOwnProperty('data') );
   if (ipMatchingMarket && marketCountryList) { this.ipMatchingMarket =
   ipMatchingMarket?.matching_station?.find?.( (item) => item.type ===
   'multiple_market' ) || { img: marketCountryList.length ?
   marketCountryList?.[0]?.detail && marketCountryList[0].detail?.flag : '', };
   } }); } initModal_() { if ( this.isEditMode ||
   !this.ipMatchingMarket?.market_id || !this.useModal_ ||
   this.hasCookie_(COOKIE_TIPS_NAME) || this.win[MARKET_MODAL_LOADED] ) {
   return; } this.win[MARKET_MODAL_LOADED] = true; const redirectParam = new
   URLSearchParams(this.win.location.search).get( URL_REDIRECT ); if
   (redirectParam) { this.initModalEntry_(MARKET_GATEWAY_REDIRECT_MODAL); } else
   if ( this.ipMatchingMarket.market_id !== this.global?.market?.market_id ) {
   this.initModalEntry_(MARKET_MODAL); } } async init_() { await
   this.initSettings_(); await this.initData_(); this.initEntry_();
   this.initModal_(); } getDefaultCountryValue_() { return
   this.getCookie_(MARKET_COUNTRY_COOKIE) ||
   this.marketCountryList[0]?.country_code; } mapCountryRenderData_(country) {
   return { flag: country?.detail?.flag || '', value: country?.country_code,
   currency: country?.currency, currencySymbol: country?.symbol?.val || '', url:
   country?.url, }; } handleCountrySelectChange_(selectedData) {
   this.setCookie_(MARKET_COUNTRY_COOKIE, selectedData.value);
   this.handleChangeURL_(selectedData.url); } getDefaultLanguageValue_() {
   return this.marketLanguages?.find?.( (lang) => lang.code ===
   this.global?.market?.market_lang )?.name; } mapLanguageRenderData_(language)
   { return { value: language.name, url: language.url, }; }
   handleLanguageSelectChange_(selectedData) {
   this.handleChangeURL_(selectedData.url); } renderTemplateElement_(parent,
   role, value) { const elements = SPZCore.Dom.scopedQuerySelectorAll( parent,
   `[role="${role}"]` ); elements.forEach((element) => { if (element && value) {
   element.innerHTML = value; } }); } renderTemplateImg_(parent, role, options)
   { const flagElement = SPZCore.Dom.scopedQuerySelector( parent,
   `[role="${role}"]` ); if (flagElement && options?.src && options?.height &&
   options?.width) { const spzImg = self.document.createElement('ljs-img');
   spzImg.setAttribute('src', options.src); spzImg.setAttribute('layout',
   'responsive'); spzImg.setAttribute('width', options.width);
   spzImg.setAttribute('height', options.height); spzImg.setAttribute( 'style',
   `width: ${options.width}px; height: ${options.height}px;` );
   flagElement.appendChild(spzImg); } } handleChangeURL_(url) { if (!!url) { let
   {origin, pathname, search} = this.win.location; pathname =
   pathname.replace(SITE, url != '/' ? url : ''); this.win.location.href =
   `${origin}${pathname}${search}`; } else { this.win.location.reload(true); } }
   initModalEntry_(role) { const marketModalTemplate =
   SPZCore.Dom.scopedQuerySelector( this.element, `[role="${role}"]` ); if
   (marketModalTemplate) { const tempParentNode =
   self.document.createElement('div'); const clonedTemplate =
   self.document.importNode( marketModalTemplate.content, true );
   tempParentNode.appendChild(clonedTemplate);
   this.renderTemplateImg_(tempParentNode, MARKET_MODAL_FLAG, { src:
   this.ipMatchingMarket?.img, width: '80', height: '80', });
   this.renderTemplateElement_( tempParentNode, MARKET_MODAL_COUNTRY_CODE,
   this.ipMatchingMarket?.name ); this.renderTemplateElement_( tempParentNode,
   MARKET_MODAL_CURRENCY_SYMBOL, this.ipMatchingMarket?.currency_with_symbol );
   const lightbox = self.document.createElement('ljs-lightbox');
   lightbox.setAttribute('layout', 'nodisplay');
   lightbox.appendChild(tempParentNode.firstElementChild);
   self.document.body.appendChild(lightbox);
   SPZ.whenApiDefined(lightbox).then((apis) => {
   SPZCore.Dom.scopedQuerySelectorAll( lightbox,
   `[role="${MARKET_MODAL_CLOSE}"]` ).forEach((ele) => {
   ele.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1,
   COOKIE_TIPS_EXPIRES); apis.close(); }); }); const marketModalConfirmElement =
   SPZCore.Dom.scopedQuerySelector( lightbox, `[role="${MARKET_MODAL_CONFIRM}"]`
   ); if (marketModalConfirmElement && this.ipMatchingMarket?.url) {
   marketModalConfirmElement.addEventListener('click', () => {
   this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES);
   this.setCookie_(MARKET_COUNTRY_COOKIE, this.ipMatchingMarket?.name);
   this.handleChangeURL_(this.ipMatchingMarket?.url); }); } const
   marketModalReselectElement = SPZCore.Dom.scopedQuerySelector( lightbox,
   `[role="${MARKET_MODAL_RESELECT}"]` ); if (marketModalReselectElement) {
   marketModalReselectElement.addEventListener('click', () => {
   this.setCookie_(COOKIE_TIPS_NAME, 1, COOKIE_TIPS_EXPIRES); const
   marketReselectTemplate = SPZCore.Dom.scopedQuerySelector( this.element,
   `[role="${MARKET_RESELECT_MODAL}"]` ); if (marketReselectTemplate &&
   lightbox.firstElementChild) { const clonedTemplate =
   self.document.importNode( marketReselectTemplate.content, true ); const
   selectParent = SPZCore.Dom.scopedQuerySelector( clonedTemplate,
   `[role="${MARKET_MODAL_RESELECT_COUNTRY_SELECT}"]` ); if (selectParent) {
   this.createSelect_({ parent: selectParent, defaultValue:
   this.getDefaultCountryValue_(), dataList: this.marketCountryList.map(
   this.mapCountryRenderData_ ), listElementWithTemplate:
   this.getListElementWithTemplate_( MARKET_COUNTRY_SELECT ), itemHandler:
   this.handleCountrySelectChange_.bind(this), }); }
   lightbox.replaceChild(clonedTemplate, lightbox.firstElementChild);
   SPZCore.Dom.scopedQuerySelectorAll( lightbox,
   `[role="${MARKET_MODAL_CLOSE}"]` ).forEach((ele) => {
   ele.addEventListener('click', () => { this.setCookie_(COOKIE_TIPS_NAME, 1,
   COOKIE_TIPS_EXPIRES); apis.close(); }); }); } }); } apis.open(); }); } }
   async getMarketThemeSettings_() { return
   this.xhr_.fetchJson(MARKET_THEME_SETTINGS).then((res) => {
   this.useCountrySelect_ = !!res.country_selector_enabled;
   this.useLanguageSelect_ = !!res.language_selector_enabled &&
   this.global?.market?.market_id; this.useModal_ = !!res.redirect_pop_enabled;
   return res; }); } async getCountryList_() { return
   this.xhr_.fetchJson(MARKET_COUNTRIES).then((res) => { this.marketCountryList
   = res.data.length ? res.data : []; return res; }); } async
   getIpMatchingMarket_() { return this.xhr_.fetchJson(IP_MATCHING_MARKET, {
   method: 'POST', body: { stations: [], }, }); } async
   getMarketLanguages_(marketId) { return this.xhr_
   .fetchJson(MARKET_LANGUAGES.replace(/:id/gim, marketId)) .then((res) => {
   this.marketLanguages = res?.languages?.length ? res.languages : []; return
   res; }); } hasCookie_(name) { const m = self.document.cookie .split(';')
   .filter((pair) => pair.trim().startsWith(name + '=')); return !!(m && m[0]);
   } getCookie_(name) { const m = self.document.cookie .split(';')
   .filter((pair) => pair.trim().startsWith(name + '=')); return m && m[0] ?
   m[0].split('=')[1] : null; } setCookie_(name, value, expires) { const
   expiresDate = new Date(Date.now() + expires).toGMTString();
   self.document.cookie = `${name}=${encodeURIComponent( value
   )};expires=${expiresDate};path=/`; } } SPZ.defineElement('spz-custom-market',
   SpzCustomMarket);
   Region/Country
   Region/Country
   
   (
   
   
   )
   Language
   Language
   
   Switch to based on your location
    * Purchase with
    * Get shipping options for
   
   Cancel
   Switch
   Set to based on your location
    * Purchase with
    * Get shipping options for
   
   Continue Shopping
   Modify Country/Region
   Modify Country/Region
   
   Continue Shopping
   Cancel
   
   Region/Country
   US
   (
   USD
   $
   )
   AD
   (
   EUR
   €
   )
   AT
   (
   EUR
   €
   )
   BE
   (
   EUR
   €
   )
   CY
   (
   EUR
   €
   )
   DE
   (
   EUR
   €
   )
   EE
   (
   EUR
   €
   )
   ES
   (
   EUR
   €
   )
   FI
   (
   EUR
   €
   )
   FR
   (
   EUR
   €
   )
   GR
   (
   EUR
   €
   )
   IE
   (
   EUR
   €
   )
   IT
   (
   EUR
   €
   )
   LT
   (
   EUR
   €
   )
   LU
   (
   EUR
   €
   )
   LV
   (
   EUR
   €
   )
   MC
   (
   EUR
   €
   )
   ME
   (
   EUR
   €
   )
   MT
   (
   EUR
   €
   )
   NL
   (
   EUR
   €
   )
   PT
   (
   EUR
   €
   )
   SI
   (
   EUR
   €
   )
   SK
   (
   EUR
   €
   )
   SM
   (
   EUR
   €
   )
   VA
   (
   EUR
   €
   )
   XK
   (
   EUR
   €
   )
   JP
   (
   JPY
   ¥
   )
   GB
   (
   GBP
   £
   )
   TH
   (
   THB
   ฿
   )
   NZ
   (
   NZD
   NZ$
   )
   AU
   (
   AUD
   A$
   )
   CA
   (
   CAD
   CA$
   )
   CH
   (
   CHF
   CHF
   )
   DK
   (
   DKK
   kr
   )
   SG
   (
   SGD
   S$
   )
   DE
   (
   EUR
   €
   )
   US
   (
   USD
   $
   )
   AD
   (
   EUR
   €
   )
   AT
   (
   EUR
   €
   )
   BE
   (
   EUR
   €
   )
   CY
   (
   EUR
   €
   )
   DE
   (
   EUR
   €
   )
   EE
   (
   EUR
   €
   )
   ES
   (
   EUR
   €
   )
   FI
   (
   EUR
   €
   )
   FR
   (
   EUR
   €
   )
   GR
   (
   EUR
   €
   )
   IE
   (
   EUR
   €
   )
   IT
   (
   EUR
   €
   )
   LT
   (
   EUR
   €
   )
   LU
   (
   EUR
   €
   )
   LV
   (
   EUR
   €
   )
   MC
   (
   EUR
   €
   )
   ME
   (
   EUR
   €
   )
   MT
   (
   EUR
   €
   )
   NL
   (
   EUR
   €
   )
   PT
   (
   EUR
   €
   )
   SI
   (
   EUR
   €
   )
   SK
   (
   EUR
   €
   )
   SM
   (
   EUR
   €
   )
   VA
   (
   EUR
   €
   )
   XK
   (
   EUR
   €
   )
   JP
   (
   JPY
   ¥
   )
   GB
   (
   GBP
   £
   )
   TH
   (
   THB
   ฿
   )
   NZ
   (
   NZD
   NZ$
   )
   AU
   (
   AUD
   A$
   )
   CA
   (
   CAD
   CA$
   )
   CH
   (
   CHF
   CHF
   )
   DK
   (
   DKK
   kr
   )
   SG
   (
   SGD
   S$
   )
   
   English,Français,Deutsch,Italiano,Español,Português,dansk,日本語,ไทย
   

Log in Create an account
(function(){ let w = window.innerWidth; function setHeaderCssVar() { const
headerEle = document.getElementById('shoplaza-section-header'); if(!headerEle){
return }; document.body.style.setProperty('--window-height',
`${window.innerHeight}px`); document.body.style.setProperty('--header-height',
`${headerEle.clientHeight}px`); const mdScorllHideEle =
headerEle.querySelector('.header__mobile .header__scroll_hide'); if
(mdScorllHideEle) {
document.body.style.setProperty('--header-scroll-hide-height-md',
`${mdScorllHideEle.clientHeight}px`); } const pcScorllHideEle =
headerEle.querySelector('.header__desktop .header__scroll_hide'); if
(pcScorllHideEle) {
document.body.style.setProperty('--header-scroll-hide-height-pc',
`${pcScorllHideEle.clientHeight}px`); } } function handlResize() { if(w ==
window.innerWidth){return}; w = window.innerWidth; setHeaderCssVar(); };
function init(){ setHeaderCssVar(); window.removeEventListener('resize',
window._theme_header_listener) window._theme_header_listener = handlResize;
window.addEventListener('resize', window._theme_header_listener); } init();
})();


404 | PAGE NOT FOUND

The page you are looking for cannot be found.
Continue shopping

Information

 * Our Story
 * Privacy Policy
 * Terms of Service
 * Affiliate Program
 * Influencer Program
 * Uniforms, Mass Customization and B2B Service
 * Intellectual Property Rights

Information

 * Our Story
 * Privacy Policy
 * Terms of Service
 * Affiliate Program
 * Influencer Program
 * Uniforms, Mass Customization and B2B Service
 * Intellectual Property Rights

Customer services

 * Size Guide
 * Payment Methods
 * Shipping Policy
 * Exchange / Return / Refund Policy
 * Order Tracking
 * Do Not Sell My Personal Information
 * FAQs

Customer services

 * Size Guide
 * Payment Methods
 * Shipping Policy
 * Exchange / Return / Refund Policy
 * Order Tracking
 * Do Not Sell My Personal Information
 * FAQs

Get in touch

Contact Us Leave FB Message

Get in touch

Contact Us Leave FB Message

Follow us

 * 
 * 
 * 
 * 
 * 

Follow us

 * 
 * 
 * 
 * 
 * 

We accept

 * PayPal
 * American Express
 * Diners Club
 * Discover
 * Mastercard
 * Visa
 * JCB
 * Maestro

We accept

 * PayPal
 * American Express
 * Diners Club
 * Discover
 * Mastercard
 * Visa
 * JCB
 * Maestro

© 2024 HOO® Size Guide Payment Methods Shipping Policy Exchange / Return /
Refund Policy Order Tracking Do Not Sell My Personal Information FAQs

CART



Your shopping bag is empty
Continue shopping
 * ${item.product_title}
    * ${item.options.map(option => option.value).join('/')}
    * ${propertie.name}/${propertie.isImage ? `View image` : propertie.value}
   
   Free gift
   Mixed Lot
   *${item.quantity}
   ${item.item_text}
   
   ${discount_item.title}
   (-)

${(function(){ var total_price = data.total_price; var postageFreeAmount =
81.497656; var freeAmount = postageFreeAmount - total_price; var isFreeShipping
= freeAmount <= 0; var rate = Math.min(total_price / postageFreeAmount * 100,
100).toFixed(2); const textArray = ("Spend {{ amount }} more and get free
shipping!").split(/\{\{\s*amount\s*\}\}/); const textArrayHtml =
textArray.map((text, index) => { if (index == 0) { return `${text}`; } return
`${text}`; }).join(''); return `
${textArrayHtml}
You've got free shipping

${rate}%
` })()}
Total:

${function() { const textArray = ("Save
{{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 &&
textArray.length < 2) { textArray.push(''); } return textArray.map((text, index)
=> { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()}
${function() { const textArray = ("Save
{{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 &&
textArray.length < 2) { textArray.push(''); } return textArray.map((text, index)
=> { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()}
 * ${discount_application.title}: -

${data.invalid_msg}
Check out

Taxes and shipping calculated at checkout

${(function(){ var total_price = data.total_price; var postageFreeAmount =
81.497656; var freeAmount = postageFreeAmount - total_price; var isFreeShipping
= freeAmount <= 0; var rate = Math.min(total_price / postageFreeAmount * 100,
100).toFixed(2); const textArray = ("Spend {{ amount }} more and get free
shipping!").split(/\{\{\s*amount\s*\}\}/); const textArrayHtml =
textArray.map((text, index) => { if (index == 0) { return `${text}`; } return
`${text}`; }).join(''); return `
${textArrayHtml}
You've got free shipping

${rate}%
` })()}
${data.invalid_msg}
Total: 

${function() { const textArray = ("Save
{{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 &&
textArray.length < 2) { textArray.push(''); } return textArray.map((text, index)
=> { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()}
${function() { const textArray = ("Save
{{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 &&
textArray.length < 2) { textArray.push(''); } return textArray.map((text, index)
=> { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()}
${function() { const textArray = ("Save
{{save_amount}}").split(/\{\{\s*save_amount\}\}/); if (textArray.length > 0 &&
textArray.length < 2) { textArray.push(''); } return textArray.map((text, index)
=> { if (index == 0) { return `${text}`; } return ` ${text} `; }).join(''); }()}
 * ${discount_application.title}: -

Check out

${data.invalid_msg}
Check out

Taxes and shipping calculated at checkout
 * Subtotal:
 * ${discount_application.title}: -

Total:

Check out

Taxes and shipping calculated at checkout
const summaryStickyRender =
document.querySelector('#cart-drawer-summary-sticky-render'); if
(summaryStickyRender) {
document.body.style.setProperty('--cart-drawer-summary-sticky-height',
summaryStickyRender.clientHeight + 'px'); }

View Cart
${function(){ const productData = data.product; let product_change_event = '',
mouse_over_event = ' '; mouse_out_event = ''; const product_options =
productData.options.filter(Boolean) || []; for (let opt of product_options) {
const nameEscape = opt.name.replace(/\/|\\|\s|\'|\"|`|\<|\>/g, '')
product_change_event = product_change_event +
`quick-shop-selected-variant-${opt.id}.rerender(data=event.selectedValues.${opt.name});`;
mouse_out_event = mouse_out_event +
`quick-shop-selected-variant-${opt.id}.rerender(data=event.selectData.${opt.name});`;
mouse_over_event = mouse_over_event +
`@${nameEscape}Mouseover="quick-shop-selected-variant-${opt.id}.rerender(data=event);"`;
} const selectedVariant = productData.variants.find(v => v.available) ||
productData.variants[0]; const statusLan = ((selectedVariant &&
!selectedVariant.available) || (!selectedVariant && !productData.available)) ?
"Sold out" : "Add to cart"; return `
${statusLan}

` }()}

${function(){ const currentSelectVariant = data.variant; const defaultVariant =
(data.product && data.product.variants && data.product.variants[0]); const
variantData = currentSelectVariant || defaultVariant || data; const retail_price
= variantData.retail_price || 0; return `
Retail
` }()} ${function(){ const wholesale_enabled = false; const qty = data.quantity
|| 1; const currentSelectVariant = data.variant; const defaultVariant =
(data.product && data.product.variants && data.product.variants[0]); const
productVariant = null; const variantData = currentSelectVariant ||
defaultVariant || productVariant; const wholesale_price =
variantData.wholesale_price || []; if(wholesale_enabled &&
wholesale_price.length > 0) { let wholesaleIndex =
wholesale_price.findIndex(item => { return item.min_quantity > qty; });
if(wholesaleIndex < 0){ wholesaleIndex = wholesale_price.length - 1; }else
if(wholesaleIndex > 0){ wholesaleIndex = wholesaleIndex - 1; } const
wholesalePrice = wholesale_price[wholesaleIndex] || ''; return `

` }else { const price = variantData && variantData.price; return price !=
undefined ? `

` : ''; } }()}
${function() { let variantImageShowed = false; const currentProduct =
data.product; return (currentProduct.options || []).map((option, index) => {
const optionName = option.name || ''; const optionId = option.id || ''; const
position = `option${index + 1}`; let isThumbImage = false; if
(currentProduct.need_variant_image && !variantImageShowed) { const variantNames
= ["color"] || []; for (let i = 0, len = variantNames.length; i < len; i++) {
const name = variantNames[i].toLowerCase(); if (name ===
optionName.toLowerCase()) { isThumbImage = true; variantImageShowed = true; } }
} const variantType = "button"; const thumbStyle = "image"; return `
${optionName}: 
${option.values.map((value, idx) => { const selected =
data.selectedValues[optionName] == value ? 'checked' : ''; let thumbImage =
null; if (isThumbImage) { const variants = currentProduct.variants; for (let i =
0, len = variants.length; i < len; i++) { const variant = variants[i]; if
(variant[position] == value && thumbImage == null) { thumbImage = variant.image;
break; } } } return `
${value}
` }).join('')}
${optionName}
${option.values.map(value => { const selected = data.selectedValues[optionName]
== value ? 'selected' : ''; return `${value}` }).join('')}
` }).join(''); }()}
${data.originData && data.originData.value || data.value}


111

111
Item has been added
${(function(){ const products = data.products; const getDefaultVariant =
function(product){ if (product.min_price_variant.available){ return
product.min_price_variant; }else { const avail_variants =
product.variants.filter(function(variant){ return variant.available; }); if
(avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj
=> Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v =>
`${k}[]=${encodeURIComponent(v)}`).join('&') :
`${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams =
function(product, index){ const variant = getDefaultVariant(product); const
params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm ||
'', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams =
Object.keys(params).map(function(key){ return params[key]; }).join('__'); return
trackParams; }; const hasMore = (data.products.length -
data.target_top_product_num - data.page * data.limit) === 0; return `
${(function(){ return `
${data.config.pop_title}

${data.rebate_tips || ''}
`; })()}
${product.title}
Added




`; })()}

class SpzCustomComponent extends SPZ.BaseElement { constructor(element) {
super(element); this.templates_ = null; this.container_ = null;
this._atcLineItem = {}; this.cart_ = {}; this.top_product_ids_ = [];
this.products_ = []; this.activityId_ = null; this.rendered_ = false;
this.myInterceptor_ = null; this.i18n_ = {}; this.config_ = {}; this.page_ = 1;
this.limit_ = 10; this.loading_ = false; } static deferredMount() { return
false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER;
} buildCallback() { this.templates_ = SPZServices.templatesForDoc(this.element);
this.setAction_(); } mountCallback() { console.log('pop mounted'); this.i18n_ =
window.smartRecommendI18n &&
window.smartRecommendI18n[document.documentElement.lang || 'en-US'] || {}; const
cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const
modalEl = document.getElementById("smart_cart_pop_modal"); const spmBase =
`smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, };
const that = this; document.addEventListener('dj.addToCart', (event) => { try {
const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block ||
this.rendered_) return; that.fetchActivityData({product_id: e.product_id,
variant_id: e.variant_id}).then(data => { if (!data || !data.products ||
!data.products.length) return; that.config_ = data.config; const recommendStyle
= document.createElement('style'); recommendStyle.innerHTML = `
#plugin_recommend_atc_pop { display: none !important; } `;
document.head.appendChild(recommendStyle); if (data.config.pop_frequency ===
'once' && window.sessionStorage.getItem('smart_pop_times') > 0) return;
SPZ.whenApiDefined(cartPopRenderEl).then(function(api){
api.render(Object.assign({}, data, extra), true).then(function() {
that.rendered_ = true; if (data.products.length) { const headEl =
document.getElementById("smart_cart_pop_head_render"); if (headEl) {
SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); });
} SPZ.whenApiDefined(modalEl).then(function(api){
that.impressListen('#smart_cart_pop_activity', function(){
that.trackPluginImpression_(data); }); api.open(); const intersectionObserver =
new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio
> 0){ !that.loading_ && (that.products_.length - that.target_top_product_num_)
=== that.page_ * that.limit_ && that.viewMore(); } }, { threshold: [0.1] } );
intersectionObserver.observe(
document.querySelector('#smart_cart_pop_view_more_text') ); }); } }) }); }) }
catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const
cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const that =
this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){
that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_
}).then(function(data) { data.products = that.products_;
data.target_top_product_num = that.target_top_product_num_; data.i18n =
that.i18n_; data.spmBase = `smart_recommend_2`; api.render(data); }) }) }
fetchActivityData(data) { const that = this; if (data.product_id) {
that._atcLineItem = data; } that.loading_ = true; return
that.getCart().then(cart => { that.cart_ = cart.cart; return
fetch(window.SHOPLAZZA.routes.root + "/api/possum/recommend_activities", {
method: "POST", headers: { "Content-Type": "application/json", "store-id":
window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ "show_type": 2,
"line_item": { "product_id": that._atcLineItem.product_id, "variant_id":
that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page":
data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){
return res.json(); } }).then(function(data){ data.cart = cart.cart; if
(data.page === 1) { that.target_top_product_num_ = data.target_top_product_num
|| 0; } that.products_ = that.products_.concat(data.products || []); that.page_
= data.page || 1; that.limit_ = data.limit || 10; return data;
}).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ =
false; }) }); }; setAction_() { this.registerAction('changeBannerColor', (data)
=> { if (!data.args.data || !data.args.data.data || !data.args.data.data.data)
return false; const config = data.args.data.data.data.config; const bannerBgEl =
document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) {
bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color =
config.banner_text_color; } }); this.registerAction('handleProductChange',
(data) => { const that = this; const imageEl =
document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`);
SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data:
data.args.data, config: that.config_ }); }); const atcTextEl =
document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`);
SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data:
data.args.data, defaultText: data.args.defaultText, soldOutText:
that.i18n_.sold_out }); }); if (data.args.data.variant.available) {
document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none');
} else {
document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none');
} }); this.registerAction('handleProduct', (detail) => { const that = this;
this.renderProductsForm_(detail.args.data.data); });
this.registerAction('addATCHook', (data) => { const params = data.args;
this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({
event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id,
ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm:
`..${window.SHOPLAZZA.meta.page.template_name}.${params.spm}`, }, once: true });
}); this.registerAction('handleAtcSuccess', (detail) => {
detail.args.data.product = detail.args.data.product || {};
detail.args.data.variant = detail.args.data.variant || {}; const defParams =
detail.args.product.split('__'); const product_id = detail.args.data.product.id;
const product_title = detail.args.data.product.title; const variant_id =
detail.args.data.variant.id; const price = detail.args.data.variant.price; const
aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb =
detail.args.data.product.cfb; const scm = defParams[1]; const spm =
defParams[2]; const ssp = defParams[3]; const params = { id: product_id,
product_id: product_id, number: 1, name: product_title, variant_id: variant_id,
childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid:
aid, ifb: ifb, cfb: cfb, scm: scm, spm:
`..${window.SHOPLAZZA.meta.page.template_name}.${spm}`, ssp: ssp, } }; const
activity_id = `${detail.args.activity_id}`; const target_drive_way =
detail.args.target_drive_way;
document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden');
document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden');
setTimeout(() => {
document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden');
document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden');
document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none');
}, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') {
const bannerEl = document.getElementById(`smart_cart_pop_banner`);
this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) {
bannerEl.innerHTML = res.rebate_tips; } }) } });
this.registerAction('handleCartSummary', (event) => { const that = this; const
checkoutButtonEle = document.getElementById("smart_cart_pop_checkout_button");
if (checkoutButtonEle) {
SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n:
that.i18n_ }, false); }); } const tipEl =
document.getElementById("smart_cart_pop_tip_info"); const cart = event &&
event.args && event.args.data && event.args.data.data; if (!tipEl || !cart)
return; let total_price = cart.total_price; if (!total_price) {
SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price:
total_price, i18n: that.i18n_ }, false); }); } else {
this.getBindDiscount_(cart.line_items).then(res => { if (res &&
res.discount_code){ const total = cart.line_price - cart.total_discount -
res.bundle_discount_value; if (total > 0) { total_price = total; } else {
total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({
total_price: total_price, i18n: that.i18n_ }, false); }); }) } });
this.registerAction('open', () => {
window.sessionStorage.setItem('smart_pop_times',
Number(window.sessionStorage.getItem('smart_pop_times')) + 1); });
this.registerAction('close', () => { this.rendered_ = false; this.products_ =
[]; window.djInterceptors &&
window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return
fetch(`${window.SHOPLAZZA.routes.root || ''}/api/cart`, { method: 'GET',
headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res =>
res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart
=> { this.cart_ = cart.cart; return fetch(`${window.SHOPLAZZA.routes.root ||
''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type':
'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2,
rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item:
this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data)
{ const products = data.products; const listPopRenderEl =
document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return;
listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){
el.style.background = data.config.add_to_cart_button_color; });
products.forEach(function(product){ const productId = product.id; const
productFormEls =
listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`);
let variantsEl =
listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]
#smart_cart_pop_variant_${productId}_mobile ljs-variants`); if
(window.innerWidth > 768) { variantsEl =
listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]
#smart_cart_pop_variant_${productId}_pc ljs-variants`); }
productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){
api.setProduct(product); }); }); variantsEl.forEach(function(el){
SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) });
} tranckAddToCart(detail) { if (window.$) {
window.$(document.body).trigger('dj.addToCart', detail); } }
trackPluginImpression_(rule){ if (window.sa && window.sa.track) {
window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` });
} } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids =
sessionStorage['bundle_sale_ids'] &&
JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) =>
arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); }
if (!carts.length) { Promise.resolve(); } return
fetch(`${window.SHOPLAZZA.routes.root || ''}/api/bundle-sales/cart`, { method:
'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8',
'store-id': window.SHOPLAZZA.shop.shop_id, }, body: JSON.stringify({ cart:
carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) }
impressListen(selector, cb) { const el = document.querySelector(selector); const
onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el &&
!el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else
if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart',
SpzCustomComponent); ${function(){ return `
${data.data.rebate_tips || ''}
`; }()} ${function(){ const getImageHeight = function(image){ const width =
image.width || 500; const height = image.height || 500; const image_size =
data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height
/ width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 *
ratio; }; const image = data.data.variant.image || data.data.product.image;
return ` `; }()}
${(function(){ const product = data.product; const avail_variants =
product.variants.filter(function(variant){ return variant.available; }); const
selected_variant = product.min_price_variant.available ?
product.min_price_variant : avail_variants.length && avail_variants[0]; return `
${option.name}
${ option.values.map(function(value, index){ const checked =
selected_variant["option"+option.position] == value ? "checked": ""; return `
${value}
` }).join("") }
` })()}
${(function(){ const variant = data.variant; return `

`; })()} ${(function(){ const variant = data.variant; return `
${ variant.options.map(function(option){ return option.value; }).join("/") ||
'Not exist' }
`; })()} ${(function(){ const variant = data.data && data.data.variant; const
defaultText = data.defaultText || 'Add To Cart'; const text = (!variant ||
variant.available) ? defaultText: data.soldOutText; return `
${text}
`; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; }
return `
${cart.item_count >=0 ? cart.item_count : '..'}
`; })()} ${(function(){ return `
${data.i18n.checkout}
`; })()}
GIFTS

POINTS



€0.00



1




Originaltext

Diese Übersetzung bewerten
Mit deinem Feedback können wir Google Übersetzer weiter verbessern