jQuery(document).ready(function ($) { 'use strict'; woocommerce_multi_currency_switcher.use_session = _woocommerce_multi_currency_params.use_session; woocommerce_multi_currency_switcher.ajax_url = _woocommerce_multi_currency_params.ajax_url; woocommerce_multi_currency_switcher.switch_by_js = _woocommerce_multi_currency_params.switch_by_js; woocommerce_multi_currency_switcher.init(); jQuery(document.body).on('wmc_cache_compatible_finish', function () { jQuery('.wmc-currency-loading').removeClass('wmc-currency-loading'); jQuery('.wmc-select-currency-js').prop('disabled', false); if (_woocommerce_multi_currency_params.do_not_reload_page == 1) { if (typeof wc_checkout_params !== 'undefined') { if (parseInt(wc_checkout_params.is_checkout) === 1) { jQuery(document.body).trigger('update_checkout'); } } if (typeof wc_add_to_cart_params !== 'undefined') { if (parseInt(wc_add_to_cart_params.is_cart) === 1) { jQuery('[name="update_cart"]').prop('disabled', false).trigger('click'); } } } }); jQuery(document.body).on('wc_fragments_refreshed', function (event) { }); }); window.woocommerce_multi_currency_switcher = { use_session: 0, ajax_url: '', switch_by_js: '', init: function () { jQuery('body').on('click', '.wmc-currency-redirect', function (e) { let $select = jQuery(this), $wmc_currency = $select.closest('.wmc-currency'), $container = $select.closest('.woocommerce-multi-currency'); if ($wmc_currency.hasClass('wmc-active')) { e.preventDefault(); return false; } e.stopPropagation(); if (woocommerce_multi_currency_switcher.switch_by_js) { e.preventDefault(); wmcSwitchCurrency($select); } if ($container.hasClass('wmc-currency-trigger-click')) { let $current = $container.find('.wmc-current-currency'), $arrow = $container.find('.wmc-current-currency-arrow'); if ($arrow.length === 0) { $arrow = $container.find('.wmc-open-dropdown-currencies'); } let $sub_currency = $select.closest('.wmc-sub-currency'); $sub_currency.find('.wmc-hidden').removeClass('wmc-hidden'); $wmc_currency.addClass('wmc-hidden'); if ($container.hasClass('wmc-price-switcher')) { $current.html($select.html()); $current.find('.wmc-price-switcher-code,.wmc-price-switcher-price').remove(); } else { if ($container.data('layout') === 'layout10') { $current.find('.vi-flag-64').replaceWith($select.find('.vi-flag-64')); jQuery('.wmc-text').attr('class', `wmc-text wmc-text-${$select.data('currency')}`).html(`(${$select.data('currency')})${$select.data('currency_symbol')}`); } else { $current.html($select.html()); } if ($arrow.length > 0) { $current.append($arrow) } } $select.closest('.wmc-currency-trigger-click-active').removeClass('wmc-currency-trigger-click-active'); } }).on('click', '.wmc-currency-wrapper .wmc-sub-currency > .wmc-currency', function (e) { if ( _woocommerce_multi_currency_params.switch_container === '0' ) { return; } let $select = jQuery(this).find('.wmc-currency-redirect'), $wmc_currency = $select.closest('.wmc-currency'), $container = $select.closest('.woocommerce-multi-currency'); if ($wmc_currency.hasClass('wmc-active')) { e.preventDefault(); return false; } e.stopPropagation(); if (woocommerce_multi_currency_switcher.switch_by_js) { e.preventDefault(); wmcSwitchCurrency($select); } if ($container.hasClass('wmc-currency-trigger-click')) { let $current = $container.find('.wmc-current-currency'), $arrow = $container.find('.wmc-current-currency-arrow'); if ($arrow.length === 0) { $arrow = $container.find('.wmc-open-dropdown-currencies'); } let $sub_currency = $select.closest('.wmc-sub-currency'); $sub_currency.find('.wmc-hidden').removeClass('wmc-hidden'); $wmc_currency.addClass('wmc-hidden'); if ($container.hasClass('wmc-price-switcher')) { $current.html($select.html()); $current.find('.wmc-price-switcher-code,.wmc-price-switcher-price').remove(); } else { if ($container.data('layout') === 'layout10') { $current.find('.vi-flag-64').replaceWith($select.find('.vi-flag-64')); jQuery('.wmc-text').attr('class', `wmc-text wmc-text-${$select.data('currency')}`).html(`(${$select.data('currency')})${$select.data('currency_symbol')}`); } else { $current.html($select.html()); } if ($arrow.length > 0) { $current.append($arrow) } } $select.closest('.wmc-currency-trigger-click-active').removeClass('wmc-currency-trigger-click-active'); } }); jQuery('.wmc-select-currency-js').on('change', function (e) { e.preventDefault(); if (woocommerce_multi_currency_switcher.switch_by_js) { wmcSwitchCurrency(jQuery(this)); } else { if (parseInt(_woocommerce_multi_currency_params.posts_submit) > 0) { window.location.href = jQuery(this).val(); } else { window.history.replaceState({}, '', jQuery(this).val()); window.location.reload(); } } }) }, setCookie: function (cname, cvalue, expire) { var d = new Date(); d.setTime(d.getTime() + (expire * 1000)); var expires = "expires=" + d.toUTCString(); document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; }, getCookie: function (cname) { var name = cname + "="; var decodedCookie = decodeURIComponent(document.cookie); var ca = decodedCookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; }, reload: function () { let url = new URL(window.location.href); if (parseInt(_woocommerce_multi_currency_params.posts_submit) > 0) { url.searchParams.delete('wmc-currency'); window.location.href = url.href.replace(url.hash, ''); } else { if (url.searchParams.get('wmc-currency')) { url.searchParams.delete('wmc-currency'); window.history.replaceState({}, '', url.href); } window.location.reload(); } }, }; var wmcSwitchCurrency = function ($switcher) { let $wmc = $switcher.closest('.woocommerce-multi-currency'), currency = '', hash = ''; if (!$wmc.hasClass('wmc-currency-loading')) { if ($switcher.is('.wmc-select-currency-js')) { currency = $switcher.val(); } else { currency = $switcher.data('currency'); } if (currency) { $wmc.addClass('wmc-currency-loading'); if ($switcher.is('.wmc-select-currency-js')) { $wmc.prop('disabled', true); } if (woocommerce_multi_currency_switcher.use_session != 'cookie' && woocommerce_multi_currency_switcher.use_session != 0) { jQuery.ajax({ type: 'GET', data: 'action=wmc_currency_switcher&wmc-currency=' + currency, url: woocommerce_multi_currency_switcher.ajax_url, xhrFields: {withCredentials: true}, success: function (data) { if (typeof wc_cart_fragments_params === 'undefined' || wc_cart_fragments_params === null) { } else { sessionStorage.removeItem(wc_cart_fragments_params.fragment_name); } if (_woocommerce_multi_currency_params.do_not_reload_page == 1) { window.woocommerce_multi_currency.cacheCompatible(); jQuery(document.body).trigger('wc_fragment_refresh'); } else { jQuery.when(jQuery(document.body).trigger('wc_fragment_refresh')).done(function () { woocommerce_multi_currency_switcher.reload(); }); } }, error: function (html) { }, complete: function () { if (_woocommerce_multi_currency_params.do_not_reload_page != 1) { jQuery('.wmc-currency-loading').removeClass('wmc-currency-loading'); jQuery('.wmc-select-currency-js').prop('disabled', false); } }, }) } else { woocommerce_multi_currency_switcher.setCookie('wmc_current_currency', currency, 86400); woocommerce_multi_currency_switcher.setCookie('wmc_current_currency_old', currency, 86400); jQuery(document.body).trigger('wmc_switch_currency_by_js_set_cookie', currency); if (typeof wc_cart_fragments_params === 'undefined' || wc_cart_fragments_params === null) { } else { sessionStorage.removeItem(wc_cart_fragments_params.fragment_name); } if (_woocommerce_multi_currency_params.do_not_reload_page == 1) { window.woocommerce_multi_currency.cacheCompatible(); jQuery(document.body).trigger('wc_fragment_refresh'); } else { jQuery.when(jQuery(document.body).trigger('wc_fragment_refresh')).done(function () { jQuery('.wmc-currency-loading').removeClass('wmc-currency-loading'); woocommerce_multi_currency_switcher.reload(); }); } } } } };