%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/itworks/wp-content/plugins/woocommerce-multilingual/res/js/
Upload File :
Create Path :
Current File : /var/www/html/itworks/wp-content/plugins/woocommerce-multilingual/res/js/multi-currency.js

jQuery( function($){

    WCML_Multi_Currency = {

        _currency_languages_saving : 0,

        init:  function(){

            $(document).ready( function(){

                WCML_Multi_Currency.setup_multi_currency_toggle();

                $(document).on('change','.currency_code select', WCML_Multi_Currency.select_currency);

                $(document).on('click','.delete_currency', WCML_Multi_Currency.delete_currency);

                $(document).on('click', '.wcml_currency_options .currency_options_save', WCML_Multi_Currency.save_currency);

                $(document).on('click','.js-display-tooltip', WCML_Multi_Currency.tooltip);

                $(document).on('click', '.currency_languages a.otgs-ico-no', WCML_Multi_Currency.enable_currency_for_language);
                $(document).on('click', '.currency_languages a.otgs-ico-yes', WCML_Multi_Currency.disable_currency_for_language);

                $(document).on('change', '.default_currency select', WCML_Multi_Currency.change_default_currency);

                WCML_Multi_Currency.setup_currencies_sorting();

                $(document).on('change','.currency_option_position', WCML_Multi_Currency.price_preview);
                $(document).on('change','.currency_option_thousand_sep', WCML_Multi_Currency.price_preview);
                $(document).on('change','.currency_option_decimal_sep', WCML_Multi_Currency.price_preview);
                $(document).on('change','.currency_option_decimals', WCML_Multi_Currency.price_preview);
                $(document).on('change','.currency_code select', WCML_Multi_Currency.price_preview);
                $(document).on('change','.wcml-gateways-enabled', WCML_Multi_Currency.display_gateways);
                $(document).on('change','#wcml_currency_options_gateway_code_paypal', WCML_Multi_Currency.preset_paypal_email);
                $(document).on('change','#wcml_currency_options_gateway_code_stripe', WCML_Multi_Currency.preset_stripe_settings);

                $(document).on('keypress', '.currency_option_decimals', function (event) {
                    // 8 for backspace, 0 for null values, 48-57 for 0-9 numbers
                    if (event.which != 8 && event.which != 0 && event.which < 48 || event.which > 57) {
                        event.preventDefault();
                    }
                });

                $(document).on('keyup','.wcml-exchange-rate', WCML_Multi_Currency.exchange_rate_check);

                if($('#wcml_mc_options').length){
                    WCML_Multi_Currency.wcml_mc_form_submitted = false;
                    WCML_Multi_Currency.read_form_fields_status();

                    window.onbeforeunload = function(e) {
                        if(
                            ( !WCML_Multi_Currency.wcml_mc_form_submitted && WCML_Multi_Currency.form_fields_changed() ) ||
                            WCML_Multi_Currency.is_update_currency_lang_in_progress()
                        ){
                            return $('#wcml_warn_message').val();
                        }
                    }

                    $('#wcml_mc_options').on('submit', function(){
                        WCML_Multi_Currency.wcml_mc_form_submitted = true;
                    })
                }

            } );

        },

        setup_multi_currency_toggle: function(){

            $('#multi_currency_independent').change(function(){

                if($(this).attr('checked') == 'checked'){
                    $('#currency-switcher, #currency-switcher-widget, #currency-switcher-product, #multi-currency-per-language-details, #online-exchange-rates').fadeIn();
                }else{
                    $('#currency-switcher, #currency-switcher-widget, #currency-switcher-product, #multi-currency-per-language-details, #online-exchange-rates').fadeOut();
                }

            })


        },

        select_currency: function(){
            var parent = $(this).closest('.wcml_currency_options');
            var close_button = parent.find('.wcml-dialog-close-button');
            var previous_currency = parent.find('.this-currency').text();
            var gateways = parent.find('.wcml-gateways-switcher');
            var gateways_currency_select = parent.find('.wcml-gateways select[name*="[currency]"] option[value="'+previous_currency+'"]');
            var gateway_new_label_text = gateways.find('label.otgs-on-off-switch').text().replace( previous_currency, $(this).val() );

            close_button.attr('data-currency', $(this).val());
            close_button.attr('data-symbol', $(this).find('option:selected').attr('data-symbol'));

            parent.find('.this-currency').html( $(this).val() );
            gateways.find('label.otgs-on-off-switch').text( gateway_new_label_text );
            gateways_currency_select.val( $(this).val() );
            gateways_currency_select.html( $(this).val() );
        },

        delete_currency: function(e){

            e.preventDefault();
            var is_return = false;
            var currency        = $(this).data('currency');
            var currency_name   = $(this).data('currency_name');
            var currency_symbol = $(this).data('currency_symbol');

            $( '.currency_lang_table .wcml-row-currency-lang:first .currency_languages').each( function(){
                if( !WCML_Multi_Currency.check_currency_language( $(this).find('li').data('lang'), currency ) ){
                    is_return = true;
                    return false;
                }
            });

            if( is_return ){
                return;
            }

            $('#currency_row_' + currency + ' .currency_action_update').hide();
            var ajaxLoader = $('<span class="spinner" style="visibility: visible;margin:0;">');
            $(this).hide();
            $(this).parent().append(ajaxLoader).show();

            $.ajax({
                type : "post",
                url : ajaxurl,
                data : {
                    action: "wcml_delete_currency",
                    wcml_nonce: $('#del_currency_nonce').val(),
                    code: currency
                },
                success: function(response) {
                    $('#currency_row_' + currency).remove();
                    $('#currency_row_langs_' + currency).remove();
                    $('#wcml-row-currency-actions-' + currency).remove();

                    $('#wcml_currencies_order .wcml_currencies_order_'+ currency).remove();

                    $('#wcml_currency_options_code_').prepend('<option data-symbol="' + currency_symbol + '" value="' + currency + '">' + currency_name + '</option>');
                    $('#wcml_currency_options_code_').val(currency).trigger('change');

                    //remove from default currency list
                    $('#currency-lang-table').find('tr.default_currency select').each( function(){
                        $(this).find("option[value='"+currency+"']").remove();
                    });
                    $('.wcml-ui-dialog').each(function(){
                        WCML_Currency_Switcher_Settings.currency_switcher_preview( $(this) );
                    });


                    if( $('.wcml-row-currency').length == 1 ){
                        $('#online-exchange-rates-no-currencies').next().hide();
                        $('#online-exchange-rates-no-currencies').show();
                    }
                },
                done: function() {
                    ajaxLoader.remove();
                }
            });

            return false;

        },

        save_currency: function(){

            var parent = $(this).closest('.wcml-dialog-container');
            var chk_autosub = WCML_Multi_Currency.check_on_numeric(parent,'.abstract_amount');

            if( chk_autosub ){
                return false;
            }

            $('.wcml-currency-options-dialog :submit, .wcml-currency-options-dialog :button').prop('disabled', true);
            var currency = parent.find('[name="currency_options[code]"]').val();

            var ajaxLoader = $('<span class="spinner" style="visibility:visible;position:absolute;margin-left:10px;"></span>');

            ajaxLoader.show();
            $(this).parent().prepend(ajaxLoader);

            $.ajax({
                url: ajaxurl,
                type: 'POST',
                dataType: 'json',
                data: parent.find('[name^="currency_options"]').serialize() + '&action=wcml_save_currency&wcml_nonce=' + jQuery('#wcml_save_currency_nonce').val(),
                success: function(response){
                    parent.find('.wcml-dialog-close-button').trigger('click');

                    $('.wcml-ui-dialog').each(function(){
                        WCML_Currency_Switcher_Settings.currency_switcher_preview( $(this) );
                    });

                    if( $('#currency_row_' + currency).length == 0 ) {

                        var tr = $('#currency-table tr.wcml-row-currency:last').clone();
                        tr.attr('id', 'currency_row_' + currency);

                        $('#currency-table').find('tr.default_currency').before( tr );

                        var tr = $('.empty-currency-language-row').clone();
                        tr.attr('id', 'currency_row_langs_' + currency);
                        $('#currency-lang-table').find('tr.default_currency').before( tr );

                        tr.removeClass('hidden empty-currency-language-row');
                        tr.find('.on a').each( function(){
                            $(this).attr('data-currency', currency);
                            $(this).attr('title', $(this).attr('title').replace('%code%', response.currency_name));
                            $(this).attr('data-title-alt', $(this).attr('data-title-alt').replace('%code%', response.currency_name));
                        });

                        //add to default currency list
                        $('#currency-lang-table').find('tr.default_currency select').each( function(){
                            $(this).append('<option value="'+currency+'">'+currency+'</option>');
                        });

                        //add to orders list
                        $('#wcml_currencies_order').append('<li class="wcml_currencies_order_'+currency+' ui-sortable-handle" cur="'+currency+'">'+response.currency_name_formatted+'</li>');


                        var settings_row = $('#currency-settings-table tr.wcml-row-currencies-actions:last').clone();
                        settings_row.attr('id', 'wcml-row-currency-actions-' + currency);

                        var edit_link = settings_row.find('.wcml-col-edit a');
                        edit_link.attr('data-content', 'wcml_currency_options_' + currency);
                        edit_link.attr('data-currency', currency);
                        edit_link.data('dialog', 'wcml_currency_options_' + currency);
                        edit_link.removeClass('hidden');

                        var del_link = settings_row.find('.delete_currency');
                        del_link.removeClass('hidden');
                        del_link.attr('data-currency', currency);
                        del_link.attr('data-currency_name', response.currency_name);
                        del_link.attr('data-currency_symbol', response.currency_symbol);
                        $('#currency-settings-table').find('tr.default_currency').before( settings_row );

                    }

                    $('#currency_row_' + currency + ' .wcml-col-currency').html(response.currency_name_formatted);
                    $('#currency_row_' + currency + ' .wcml-col-rate').html(response.currency_meta_info);

                    var gateways_switcher = $('#wcml_currency_options_' + currency).find('.wcml-gateways-switcher');
                    if( 0 == gateways_switcher.length ){
                        gateways_switcher = $('#wcml_currency_options_').find('.wcml-gateways-switcher').clone();
                    }

                    $('#wcml_currency_options_' + currency).remove();
                    $('#wcml_mc_options').before(response.currency_options);

                    $('#wcml_currency_options_code_ option[value="'+currency+'"]').remove();

                    if( $('#online-exchange-rates-no-currencies').is(':visible') ){
                        $('#online-exchange-rates-no-currencies').hide();
                        $('#online-exchange-rates-no-currencies').next().show();
                    }

                    var currency_options_dialog = $('#wcml_currency_options_' + currency);
                    var is_gateway_switcher_checked = currency_options_dialog.find('.wcml-gateways-switcher input[type="checkbox"]:checked').length > 0;
                    currency_options_dialog.find('.wcml-gateways-switcher').remove();
                    currency_options_dialog.find('.wcml-gateways').before(gateways_switcher);
                    if( is_gateway_switcher_checked ){
                        currency_options_dialog.find('.wcml-gateways-switcher input[type="checkbox"]').attr('checked', 'checked');
                    }else{
                        currency_options_dialog.find('.wcml-gateways-switcher input[type="checkbox"]').removeAttr('checked');
                    }
                }
            })

            return false;
        },

        check_on_numeric: function(parent, elem){

            var messageContainer = $('<span class="wcml-error">');

            if(!WCML_Multi_Currency.is_number(parent.find(elem).val())){
                if(parent.find(elem).parent().find('.wcml-error').size() == 0){
                    parent.find(elem).parent().append( messageContainer );
                    messageContainer.text( parent.find(elem).data('message') );
                }
                return true;
            }else{
                if(parent.find(elem).parent().find('.wcml-error').size() > 0){
                    parent.find(elem).parent().find('.wcml-error').remove();
                }
                return false;
            }

        },

        tooltip: function(){
            var $thiz = $(this);

            // hide this pointer if other pointer is opened.
            $('.wp-pointer').fadeOut(100);

            $(this).pointer({
                content: '<h3>'+$thiz.data('header')+'</h3><p>'+$thiz.data('content')+'</p>',
                position: {
                    edge: 'left',
                    align: 'center',
                    offset: '15 0'
                }
            }).pointer('open');
        },

        enable_currency_for_language: function(e){

            if( WCML_Multi_Currency.is_update_currency_lang_in_progress() ) return false;

            e.preventDefault();
            $(this).addClass('spinner').removeClass('otgs-ico-no').css('visibility', 'visible');

            var index = $(this).closest('tr')[0].rowIndex;
            $('.default_currency select[rel="'+$(this).data('language')+'"]').append('<option value="'+$(this).data('currency')+'">'+$(this).data('currency')+'</option>');
            WCML_Multi_Currency.update_currency_lang($(this),1,0);

            var title_alt = $(this).data( 'title-alt' );
            $(this).data( 'title-alt', $(this).attr('title') );
            $(this).attr('title', title_alt);

        },

        disable_currency_for_language: function(e){

            if( WCML_Multi_Currency.is_update_currency_lang_in_progress() ) return false;

            e.preventDefault();

            $(this).addClass('spinner').removeClass('otgs-ico-yes').css('visibility', 'visible');

            var lang = $(this).data('language');

            if( !WCML_Multi_Currency.check_currency_language( lang ) ){
                $(this).removeClass('spinner').addClass('otgs-ico-yes');
                return;
            }

            var index = $(this).closest('tr')[0].rowIndex;

            if($('.currency_languages select[rel="'+$(this).data('language')+'"]').val() == $(this).data('currency')){
                WCML_Multi_Currency.update_currency_lang($(this),0,1);
            }else{
                WCML_Multi_Currency.update_currency_lang($(this),0,0);
            }
            $('.default_currency select[rel="'+$(this).data('language')+'"] option[value="'+$(this).data('currency')+'"]').remove();

            var title_alt = $(this).data( 'title-alt' );
            $(this).data( 'title-alt', $(this).attr('title') );
            $(this).attr('title', title_alt);

        },

        check_currency_language: function( lang, currency ){

            var elem = $( '#currency-lang-table a.otgs-ico-yes[data-language="'+lang+'"]' );

            if( currency ){
                elem = $( '#currency-lang-table a.otgs-ico-yes[data-language="'+lang+'"]' ).not( $( '[data-currency="'+currency+'"]' ) );
            }

            if( elem.length == 0 ){
                alert( $( '#wcml_warn_disable_language_massage' ).val() );
                return false;
            }

            return true;

        },

        is_update_currency_lang_in_progress: function(){
            var is =
                ( typeof WCML_Multi_Currency._update_currency_lang_sync_flag != 'undefined' )
                && WCML_Multi_Currency._update_currency_lang_sync_flag == 1;

            return is;
        },

        set_update_currency_lang_in_progress: function( val ){
            WCML_Multi_Currency._update_currency_lang_sync_flag = val;
        },

        update_currency_lang: function(elem, value, upd_def){

            WCML_Multi_Currency._currency_languages_saving++;
            $('#wcml_mc_options :submit').attr('disabled','disabled');

            $('input[name="wcml_mc_options"]').attr('disabled','disabled');

            var lang = elem.data('language');
            var code = elem.data('currency');
            discard = true;

            WCML_Multi_Currency.set_update_currency_lang_in_progress( 1 );

            $.ajax({
                type: 'post',
                url: ajaxurl,
                data: {
                    action: 'wcml_update_currency_lang',
                    value: value,
                    lang: lang,
                    code: code,
                    wcml_nonce: $('#update_currency_lang_nonce').val()
                },
                success: function(){
                    if(upd_def){
                        WCML_Multi_Currency.update_default_currency(lang,0);
                    }
                },
                complete: function() {
                    $('input[name="wcml_mc_options"]').removeAttr('disabled');
                    discard = false;

                    elem.removeClass('spinner').css('visibility', 'visible');
                    if(value){
                        elem.addClass('otgs-ico-yes');
                    }else{
                        elem.addClass('otgs-ico-no');
                    }

                    WCML_Multi_Currency._currency_languages_saving--;
                    if(WCML_Multi_Currency._currency_languages_saving == 0){
                        $('#wcml_mc_options :submit').removeAttr('disabled');
                    }
                    WCML_Multi_Currency.set_update_currency_lang_in_progress( 0 );
                }
            });

        },

        change_default_currency: function(){
            WCML_Multi_Currency.update_default_currency($(this).attr('rel'), $(this).val(), $(this) );
        },

        update_default_currency: function(lang, code, select){
            $('#wcml_mc_options_submit').attr('disabled', 'disabled');
            if( select ){
                var ajaxLoader = $('<span class="spinner" style="visibility: visible;float:none;position: absolute">');
                select.parent().append(ajaxLoader);
            }

            discard = true;
            $.ajax({
                type: 'post',
                url: ajaxurl,
                data: {
                    action: 'wcml_update_default_currency',
                    lang: lang,
                    code: code,
                    wcml_nonce: $('#wcml_update_default_currency_nonce').val()
                },
                complete: function(){
                    discard = false;
                    $('#wcml_mc_options_submit').removeAttr('disabled');
                    if( select ) {
                        select.parent().find('.spinner').remove();
                    }
                }
            });
        },

        is_number: function(n){
            return !isNaN(parseFloat(n)) && isFinite(n);
        },

        setup_currencies_sorting: function(){

            $('#wcml_currencies_order').sortable({
                update: function(){
                    var currencies_order = [];
                    $('#wcml_currencies_order').find('li').each(function(){
                        currencies_order.push($(this).attr('cur'));
                    });
                    $.ajax({
                        type: "POST",
                        url: ajaxurl,
                        dataType: 'json',
                        data: {
                            action: 'wcml_currencies_order',
                            wcml_nonce: $('#wcml_currencies_order_order_nonce').val(),
                            order: currencies_order.join(';')
                        },
                        success: function(resp){
                            if ( resp.success ) {
                                fadeInAjxResp('.wcml_currencies_order_ajx_resp', resp.data.message);
                                $('.wcml-ui-dialog').each(function(){
                                    WCML_Currency_Switcher_Settings.currency_switcher_preview( $(this) );
                                });
                            }
                        }
                    });
                }
            });

        },

        price_preview: function(){

            var parent = $(this).closest('.wcml_currency_options');

            var position = parent.find('.currency_option_position').val();
            var thousand_sep = parent.find('.currency_option_thousand_sep').val();
            var thousand_sep = parent.find('.currency_option_thousand_sep').val();
            var decimal_sep  = parent.find('.currency_option_decimal_sep').val();
            var symbol       = $(this).closest('.wcml_currency_options').find('.wcml-dialog-close-button').attr('data-symbol');
            var decimals     = '56789'.substr(0, parent.find('.currency_option_decimals').val());
            if(decimals == ''){
                decimal_sep = '';
            }

            var format   = '';

            switch(position){
                case 'left':
                    format = '{symbol}1{thousand_sep}234{decimal_sep}{decimals}';
                    break;
                case 'right':
                    format = '1{thousand_sep}234{decimal_sep}{decimals}{symbol}';
                    break;
                case 'left_space':
                    format = '{symbol}&nbsp;1{thousand_sep}234{decimal_sep}{decimals}';
                    break;
                case 'right_space':
                    format = '1{thousand_sep}234{decimal_sep}{decimals}&nbsp;{symbol}';
                    break;

            }

            var preview = format.replace(/\{symbol\}/, symbol).replace(/\{thousand_sep\}/, thousand_sep).replace(
                /\{decimal_sep\}/, decimal_sep).replace(/\{decimals\}/, decimals);

            parent.find('.wcml-co-preview-value').html( preview );

            return false;

        },

        display_gateways: function(){

            if ($(this).attr('checked') == 'checked') {
                $('.wcml-gateways').slideDown();
                WCML_Tooltip.init();
            } else {
                $('.wcml-gateways').slideUp();
            }
        },

        preset_paypal_email: function(){

            var paypal_value_input = $('input[name="currency_options[gateways_settings][paypal][value]"]');
            var paypal_warning = $('.paypal-gateway-warning');

            paypal_value_input.val( $(this).find(":selected").data('email') );

            if(  $(this).find(":selected").data('is-valid') ){
                paypal_warning.hide();
                paypal_value_input.removeAttr('readonly');
            }else{
                paypal_warning.show();
                paypal_value_input.val('');
                paypal_value_input.attr('readonly','readonly');
            }
        },

        preset_stripe_settings: function(){

            $('input[name="currency_options[gateways_settings][stripe][publishable_key]"]').val( $(this).find(":selected").data('publishable-key') );
            $('input[name="currency_options[gateways_settings][stripe][secret_key]"]').val( $(this).find(":selected").data('secret-key') );

        },

        read_form_fields_status: function(){
            this.mc_form_status = $('#wcml_mc_options').serialize();
        },

        form_fields_changed: function(){
            return this.mc_form_status != $('#wcml_mc_options').serialize();
        },

        exchange_rate_check: function( e ){

            if (typeof KeyEvent == "undefined") {
                var KeyEvent = {
                    DOM_SUBTRACT: 109,
                    DOM_DASH: 189,
                    DOM_E: 69
                };
            }

            if(
                $( this ).val() <= 0 ||
                !WCML_Multi_Currency.is_number( $( this ).val() ) ||
                e.keyCode == KeyEvent.DOM_SUBTRACT ||
                e.keyCode == KeyEvent.DOM_DASH ||
                e.keyCode == KeyEvent.DOM_E
            ){
                $('.wcml-co-set-rate .wcml-error').fadeIn();
                $('.currency_options_save').attr( 'disabled', 'disabled' );
            }else{
                $('.wcml-co-set-rate .wcml-error').fadeOut();
                $('.currency_options_save').removeAttr('disabled');
            }
        }
    }


    WCML_Multi_Currency.init();


} );

Zerion Mini Shell 1.0