File: /home/xedaptot/partner.naniguide.com/wp-content/plugins/woocommerce-currency-switcher/js/front.js
"use strict";
var woocs_loading_first_time = true;//simply flag var
var woocs_sumbit_currency_changing = true;//just a flag variable for drop-down redraws when prices redraws by AJAX
jQuery(function ($) {
if (typeof woocs_array_of_get === 'undefined') {
return;//to avoid notices and errors
}
woocs_array_of_get = JSON.parse(woocs_array_of_get);
//wp-content\plugins\woocommerce\assets\js\frontend\cart.js
if (Object.keys(woocs_array_of_get).length !== 0) {
if ('currency' in woocs_array_of_get) {
//this code nessesary for correct redrawing of the shipping methods while currency changes on the cart page
$('body.woocommerce-cart .shop_table.cart').closest('form').find('input[name="update_cart"]').prop('disabled', false);
$('body.woocommerce-cart .shop_table.cart').closest('form').find('input[name="update_cart"]').trigger('click');
}
}
//keeps data of $_GET array
if (Object.keys(woocs_array_of_get).length == 0) {
woocs_array_of_get = {};
}
//***
woocs_array_no_cents = JSON.parse(woocs_array_no_cents);
//***
//emptying cart widget after checkout
if (!parseInt(woocs_get_cookie('woocommerce_items_in_cart'), 10)) {
$('.widget_shopping_cart_content').empty();
$(document.body).trigger('wc_fragment_refresh');
}
if (woocs_array_of_get.currency != undefined || woocs_array_of_get.removed_item != undefined || woocs_array_of_get.key != undefined)
{
woocs_refresh_mini_cart(555);
}
if (woocs_redraw_cart) {
//intercept adding to cart event to redraw mini-cart widget
jQuery(document).on("adding_to_cart", function () {
woocs_refresh_mini_cart(999);
});
}
//to make price popup mobile friendly
jQuery('body').on('click', '.woocs_price_info', function () {
return false;
});
//+++++++++++++++++++++++++++++++++++++++++++++++
if (woocs_drop_down_view == 'chosen' || woocs_drop_down_view == 'chosen_dark') {
try {
if (jQuery("select.woocommerce-currency-switcher").not('.woocs_clean_select').length) {
jQuery("select.woocommerce-currency-switcher").not('.woocs_clean_select').chosen({
disable_search_threshold: 10
});
jQuery.each(jQuery('.woocommerce-currency-switcher-form .chosen-container'), function (index, obj) {
jQuery(obj).css({'width': jQuery(this).prev('select').data('width')});
});
}
} catch (e) {
console.log(e);
}
}
if (woocs_drop_down_view == 'ddslick') {
try {
woocs_init_ddslick_select();
} catch (e) {
console.log(e);
}
}
woocs_loading_first_time = false;
if (woocs_drop_down_view == 'wselect' && woocs_is_mobile != 1) {
try {
//https://github.com/websanova/wSelect#wselectjs
jQuery('select.woocommerce-currency-switcher').not('.woocs_clean_select').wSelect({
size: 7
});
} catch (e) {
console.log(e);
}
}
//for flags view instead of drop-down
jQuery('.woocs_flag_view_item').on("click", function () {
if (woocs_sumbit_currency_changing) {
if (jQuery(this).hasClass('woocs_flag_view_item_current')) {
return false;
}
//***
if (Object.keys(woocs_array_of_get).length == 0) {
window.location = window.location.href + '?currency=' + jQuery(this).data('currency');
} else {
woocs_redirect(jQuery(this).data('currency'));
}
}
return false;
});
//for converter
if (jQuery('.woocs_converter_shortcode').length) {
jQuery('.woocs_converter_shortcode_button').on("click", function () {
var amount = jQuery(this).parent('.woocs_converter_shortcode').find('.woocs_converter_shortcode_amount').eq(0).val();
var from = jQuery(this).parent('.woocs_converter_shortcode').find('.woocs_converter_shortcode_from').eq(0).val();
var to = jQuery(this).parent('.woocs_converter_shortcode').find('.woocs_converter_shortcode_to').eq(0).val();
var precision = jQuery(this).parent('.woocs_converter_shortcode').find('.woocs_converter_shortcode_precision').eq(0).val();
var results_obj = jQuery(this).parent('.woocs_converter_shortcode').find('.woocs_converter_shortcode_results').eq(0);
jQuery(results_obj).val(woocs_lang_loading + ' ...');
var data = {
action: "woocs_convert_currency",
amount: amount,
from: from,
to: to,
precision: precision
};
jQuery.post(woocs_ajaxurl, data, function (value) {
jQuery(results_obj).val(value);
});
return false;
});
}
//for rates
if (jQuery('.woocs_rates_shortcode').length) {
jQuery('body').on('change', '.woocs_rates_current_currency', function () {
var _this = this;
var data = {
action: "woocs_rates_current_currency",
current_currency: jQuery(this).val(),
precision: jQuery(this).data('precision'),
exclude: jQuery(this).data('exclude')
};
jQuery.post(woocs_ajaxurl, data, function (html) {
jQuery(_this).parent('.woocs_rates_shortcode').html(html);
});
return false;
});
}
//if we using js price update while the site is cached
if (typeof woocs_shop_is_cached !== 'undefined') {
if (woocs_shop_is_cached) {
setTimeout(function () {
woocs_sumbit_currency_changing = false;
if (typeof woocs_array_of_get.currency === 'undefined') {
if (jQuery('body').hasClass('single')) {
// jQuery('.woocs_price_info').remove();
}
/****/
var custom_prices = [];
jQuery.each(jQuery('.woocs_amount_custom_price'), function (index, item) {
let decimals = jQuery(item).data('decimals');
let value = jQuery(item).data('value');
let currency = jQuery(item).data('currency');
custom_prices.push({
decimals: decimals,
value: value,
currency: currency
});
});
if (custom_prices.length != 0) {
var data = {
action: "woocs_get_custom_price_html",
custom_prices: custom_prices,
current_currency: woocs_current_currency['name']
};
jQuery.post(woocs_ajaxurl, data, function (data) {
data = JSON.parse(data);
if (!jQuery.isEmptyObject(data)) {
jQuery.each(data, function (val, price) {
jQuery(".woocs_amount_custom_price[data-value='" + val + "']").replaceWith(price);
});
}
});
}
/****/
var variation_ids = [];
var var_data = jQuery("form.variations_form").data("product_variations");
if (typeof var_data != "undefined") {
jQuery.each(var_data, function (indx, attr) {
variation_ids.push(attr['variation_id']);
});
if (variation_ids.length != 0) {
var data_var = {
action: "woocs_get_variation_products_price_html",
var_products_ids: variation_ids,
current_currency: woocs_current_currency['name']
};
jQuery.post(woocs_ajaxurl, data_var, function (data) {
data = JSON.parse(data);
if (!jQuery.isEmptyObject(data)) {
jQuery.each(var_data, function (indx, attr) {
if (typeof data[attr['variation_id']] != "undefined") {
var_data[indx]['price_html'] = data[attr['variation_id']];
}
});
jQuery("form.variations_form").data("product_variations", var_data);
}
});
}
}
//***
var products_ids = {};
var products_currency = {};
jQuery.each(jQuery('.woocs_price_code'), function (index, item) {
products_ids[jQuery(item).data('redraw-id')] = jQuery(item).data('product-id');
if (jQuery(item).data('currency')) {
products_currency[jQuery(item).data('redraw-id')] = jQuery(item).data('currency');
}
});
//if no prices on the page - do nothing
if (Object.keys(products_ids).length === 0) {
woocs_sumbit_currency_changing = true;
return;
}
var data = {
action: "woocs_get_products_price_html",
products_ids: products_ids,
products_currency: products_currency,
current_currency: woocs_current_currency['name']
};
jQuery.post(woocs_ajaxurl, data, function (data) {
data = JSON.parse(data);
if (jQuery.isEmptyObject(data)) {
woocs_sumbit_currency_changing = true;
}
if (!jQuery.isEmptyObject(data)) {
jQuery('.woocs_price_info').remove();
jQuery('.woocs_price_approx.woocs_cart_item_price').remove();
jQuery.each(jQuery('.woocs_price_code'), function (index, item) {
if (data.ids[jQuery(item).data('redraw-id')] != undefined) {
jQuery(item).replaceWith(data.ids[jQuery(item).data('redraw-id')]);
}
});
jQuery('.woocs_price_code').removeClass('woocs_preloader_ajax');
//***
jQuery('.woocommerce-currency-switcher').val(data.current_currency);
//***
if (woocs_drop_down_view == 'chosen' || woocs_drop_down_view == 'chosen_dark') {
try {
if (jQuery("select.woocommerce-currency-switcher").not('.woocs_clean_select').length) {
jQuery("select.woocommerce-currency-switcher").not('.woocs_clean_select').chosen({
disable_search_threshold: 10
});
jQuery('select.woocommerce-currency-switcher').trigger("chosen:updated");
}
} catch (e) {
console.log(e);
}
}
if (typeof data.currency_data != "undefined") {
woocs_current_currency = data.currency_data;
/* Price slider */
var min = jQuery('.price_slider_amount #min_price').val();
var max = jQuery('.price_slider_amount #max_price').val();
if (typeof max != 'undefined' && typeof min != 'undefined') {
max = woocs_convert_price_slider(max);
min = woocs_convert_price_slider(min);
jQuery(document.body).trigger('price_slider_create', [min, max]);
}
}
//***
if (woocs_drop_down_view == 'ddslick') {
try {
jQuery('div.dd-container').ddslick('destroy');
jQuery('select.woocommerce-currency-switcher').not('.woocs_clean_select').val(data.current_currency);
woocs_init_ddslick_select();
} catch (e) {
console.log(e);
}
}
//***
if (woocs_drop_down_view == 'wselect' && woocs_is_mobile != 1) {
//https://github.com/websanova/wSelect
try {
jQuery('select.woocommerce-currency-switcher').not('.woocs_clean_select').val(data.current_currency).trigger("change");
} catch (e) {
console.log(e);
}
}
//***
/* auto switcher*/
var auto_switcher = jQuery('.woocs_auto_switcher');
if (auto_switcher.length > 0) {
woocs_auto_switcher_redraw(data.current_currency, auto_switcher);
}
woocs_sumbit_currency_changing = true;
var shortcode_currency = jQuery('strong.woocs_current_currency_code');
if (shortcode_currency.length) {
shortcode_currency.text(data.current_currency);
}
//***
//for another woocs switchers styles
document.dispatchEvent(new CustomEvent('after_woocs_get_products_price_html', {detail: {
current_currency: data.current_currency
}}));
}
});
} else {
woocs_sumbit_currency_changing = true;
}
jQuery( ".single_variation_wrap" ).on( "show_variation", function ( event, variation ) {
jQuery('.woocs_price_code').removeClass('woocs_preloader_ajax');
} );
jQuery('.woocs_price_code').removeClass('woocs_preloader_ajax');
}, 300);
}
}
//***
//removing price info on single page near variation prices
setTimeout(function () {
//jQuery('body.single-product .woocommerce-variation-price').find('.woocs_price_info').remove();
}, 300);
//***
});
function woocs_redirect(currency) {
if (!woocs_sumbit_currency_changing) {
return;
}
//***
var l = window.location.href;
// l = l.replace('#', '');
var l_tmp = l.split('#');
l = l_tmp[0];
var id_key = "";
if (l_tmp.length > 1) {
id_key = "#" + l_tmp[1]
}
//for #id navigation l = l.replace(/(#.+$)/gi, '');
l = l.split('?');
l = l[0];
var string_of_get = '?';
woocs_array_of_get.currency = currency;
/*
l = l.replace(/(\?currency=[a-zA-Z]+)/g, '?');
l = l.replace(/(¤cy=[a-zA-Z]+)/g, '');
*/
if (woocs_special_ajax_mode) {
string_of_get = "";
var data = {
action: "woocs_set_currency_ajax",
currency: currency
};
jQuery.post(woocs_ajaxurl, data, function (value) {
location.reload();
});
} else {
if (Object.keys(woocs_array_of_get).length > 0) {
jQuery.each(woocs_array_of_get, function (index, value) {
string_of_get = string_of_get + "&" + index + "=" + value;
});
}
window.location = l + string_of_get + id_key;
}
}
function woocs_refresh_mini_cart(delay) {
/** Cart Handling */
setTimeout(function () {
try {
//for refreshing mini cart
$fragment_refresh = {
url: wc_cart_fragments_params.ajax_url,
type: 'POST',
data: {action: 'woocommerce_get_refreshed_fragments', woocs_woocommerce_before_mini_cart: 'mini_cart_refreshing'},
success: function (data) {
if (data && data.fragments) {
jQuery.each(data.fragments, function (key, value) {
jQuery(key).replaceWith(value);
});
try {
if ($supports_html5_storage) {
sessionStorage.setItem(wc_cart_fragments_params.fragment_name, JSON.stringify(data.fragments));
sessionStorage.setItem('wc_cart_hash', data.cart_hash);
}
} catch (e) {
}
jQuery('body').trigger('wc_fragments_refreshed');
}
}
};
jQuery.ajax($fragment_refresh);
/* Cart hiding */
try {
if (woocs_get_cookie('woocommerce_items_in_cart') > 0)
{
jQuery('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').show();
} else {
jQuery('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').hide();
}
} catch (e) {
//***
}
jQuery('body').on('adding_to_cart', function () {
jQuery('.hide_cart_widget_if_empty').closest('.widget_shopping_cart').show();
});
} catch (e) {
//***
}
}, delay);
}
function woocs_get_cookie(name) {
var matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
/*auto switcher*/
jQuery(function () {
jQuery('.woocs_auto_switcher_link').on('click', function () {
woocs_redirect(jQuery(this).data('currency'));
return false;
});
jQuery('.woocs_auto_switcher li').on('click', function (e) {
woocs_redirect(jQuery(this).find('a.woocs_auto_switcher_link').data('currency'));
return false;
});
});
function woocs_auto_switcher_redraw(curr_curr, switcher) {
var view = switcher.data('view');
switch (view) {
case 'classic_blocks':
switcher.find('a').removeClass('woocs_curr_curr');
switcher.find('a[data-currency="' + curr_curr + '"]').addClass('woocs_curr_curr');
break;
case 'roll_blocks':
switcher.find('a').removeClass('woocs_curr_curr');
switcher.find('li').removeClass('woocs_auto_bg_woocs_curr_curr');
var current_link = switcher.find('a[data-currency="' + curr_curr + '"]');
current_link.addClass('woocs_curr_curr');
current_link.parents('li').addClass('woocs_auto_bg_woocs_curr_curr');
break;
case 'round_select':
switcher.find('a').removeClass('woocs_curr_curr');
var current_link = switcher.find('a[data-currency="' + curr_curr + '"]');
current_link.addClass('woocs_curr_curr');
jQuery('.woocs_current_text').html(current_link.find('.woocs_base_text').html());
break;
default:
break;
}
}
function woocs_remove_link_param(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param === key) {
params_arr.splice(i, 1);
}
}
rtn = rtn + "?" + params_arr.join("&");
}
return rtn;
}
function woocs_init_ddslick_select() {
jQuery.each(jQuery('select.woocommerce-currency-switcher').not('.woocs_clean_select'), function (index, obj) {
var width = jQuery(obj).data('width');
var flag_position = jQuery(obj).data('flag-position');
jQuery(obj).ddslick({
//data: ddData,
width: width,
imagePosition: flag_position,
selectText: "Select currency",
//background:'#ff0000',
onSelected: function (data) {
if (!woocs_loading_first_time)
{
var form = jQuery(data.selectedItem).closest('form.woocommerce-currency-switcher-form');
jQuery(form).find('input[name="woocommerce-currency-switcher"]').eq(0).val(data.selectedData.value);
if (Object.keys(woocs_array_of_get).length == 0) {
//jQuery(form).submit();
woocs_redirect(data.selectedData.value);
} else {
woocs_redirect(data.selectedData.value);
}
}
}
});
});
}