( function( window, document, $ ) { 'use strict'; var TMEPOJS; function tm_set_subscription_period( epoObject ) { var cart_id; var $cart; var subscription_period; var variations_subscription_period; var base; var is_subscription; var is_hidden; var variation_id_selector; var current_variation; var $_cart; var this_epo_totals_container = epoObject.this_epo_totals_container; var main_product = epoObject.main_product; var subscription_sign_up_fee; var formatted_final_total; var nativeProductPriceSelector; var tcAPI = $.tcAPI ? $.tcAPI() : null; var tc_totals_ob; var args; this_epo_totals_container.each( function() { var $this = $( this ); tc_totals_ob = $this.data( 'tc_totals_ob' ); cart_id = $this.attr( 'data-cart-id' ); $cart = main_product.find( '.tm-extra-product-options.tm-cart-' + cart_id ); subscription_period = $this.data( 'subscription-period' ); variations_subscription_period = $this.data( 'variations-subscription-period' ); base = $cart.find( '.tmcp-field' ).closest( '.tmcp-field-wrap' ); is_subscription = $this.data( 'is-subscription' ); if ( is_subscription ) { base.find( '.tmperiod' ).remove(); is_hidden = base.find( '.amount' ).is( '.hidden' ); if ( is_hidden ) { is_hidden = ' hidden'; } else { is_hidden = ''; } variation_id_selector = "input[name^='variation_id']"; $_cart = $this.data( 'tm_for_cart' ); if ( $_cart ) { if ( $_cart.find( 'input.variation_id' ).length > 0 ) { variation_id_selector = 'input.variation_id'; } current_variation = $_cart.find( variation_id_selector ).val(); if ( ! current_variation ) { current_variation = 0; } if ( variations_subscription_period[ $.epoAPI.math.toFloat( current_variation ) ] ) { subscription_period = variations_subscription_period[ $.epoAPI.math.toFloat( current_variation ) ]; } } base.find( '.amount' ).after( '' ); $this.find( '.tmperiod' ).remove(); $this .find( '.amount.options' ) .after( '' + ' ' + subscription_period + '' ); $this .find( '.amount.final' ) .after( '' + ' ' + subscription_period + '' ); if ( tcAPI ) { if ( tc_totals_ob ) { subscription_sign_up_fee = tc_totals_ob.subscription_sign_up_fee; args = { symbol: '', format: '', decimal: tcAPI.localDecimalSeparator, thousand: tcAPI.localThousandSeparator, precision: TMEPOJS.currency_format_num_decimals }; formatted_final_total = $.epoAPI.applyFilter( 'tc_formatPrice', $.epoAPI.math.format( tc_totals_ob.product_total_price, args ), args ); } nativeProductPriceSelector = $( tcAPI.nativeProductPriceSelector ); if ( subscription_sign_up_fee && formatted_final_total ) { nativeProductPriceSelector .html( $.epoAPI.util.decodeHTML( $.epoAPI.template.html( tcAPI.templateEngine.tc_formatted_price, { price: formatted_final_total } ) ) + ' ' + subscription_period + TMEPOJS.i18n_and_a + $.epoAPI.util.decodeHTML( $.epoAPI.template.html( tcAPI.templateEngine.tc_formatted_price, { price: subscription_sign_up_fee } ) ) + TMEPOJS.i18n_sign_up_fee ) .show(); } else { nativeProductPriceSelector .html( $.epoAPI.util.decodeHTML( $.epoAPI.template.html( tcAPI.templateEngine.tc_formatted_price, { price: formatted_final_total } ) ) + ' ' + subscription_period ) .show(); } } } } ); } function tc_adjust_tc_totals_ob( tc_totals_ob, data ) { var subscription_options_total = 0; var formatted_subscription_fee_total = ''; var subscription_sign_up_fee; var subscription_total; var show_sign_up_fee = false; var showTotal = data.showTotal; var epoHolder = data.epoHolder; var totalsHolder = data.totalsHolder; var tm_set_price_totals = data.tm_set_price_totals; epoHolder .find( '.tmcp-sub-fee-field' ) .filter( '.tcenabled' ) .toArray() .forEach( function( field ) { var option_price = 0; var options; field = $( field ); if ( field.is( ':checkbox, :radio, :input' ) ) { if ( field.is( '.tmcp-checkbox, .tmcp-radio' ) ) { if ( field.is( ':checked' ) ) { option_price = field.data( 'raw_price' ); showTotal = true; field.data( 'isset', 1 ); } else { field.data( 'isset', 0 ); } } else if ( field.is( '.tmcp-select' ) ) { option_price = field.find( 'option:selected' ).data( 'raw_price' ); options = field.children( 'option:selected' ); if ( ! ( options.val() === '' && options.attr( 'data-rulestype' ) === '' ) ) { showTotal = true; } field.find( 'option' ).data( 'isset', 0 ); field.find( 'option:selected' ).data( 'isset', 1 ); } else if ( field.val() ) { option_price = field.data( 'raw_price' ); showTotal = true; field.data( 'isset', 1 ); } else { field.data( 'isset', 0 ); } if ( ! option_price ) { option_price = 0; } if ( field.is( '.tmcp-sub-fee-field' ) ) { subscription_options_total = parseFloat( subscription_options_total ) + parseFloat( option_price ); } } } ); if ( totalsHolder.data( 'is-subscription' ) ) { subscription_sign_up_fee = parseFloat( totalsHolder.data( 'subscription-sign-up-fee' ) ); if ( ! Number.isFinite( subscription_sign_up_fee ) ) { subscription_sign_up_fee = 0; } subscription_total = subscription_sign_up_fee + parseFloat( subscription_options_total ); if ( subscription_total ) { show_sign_up_fee = true; formatted_subscription_fee_total = tm_set_price_totals( subscription_total, totalsHolder, false, true ); } } tc_totals_ob.formatted_subscription_fee_total = formatted_subscription_fee_total; tc_totals_ob.subscription_sign_up_fee = subscription_total; tc_totals_ob.show_sign_up_fee = show_sign_up_fee; tc_totals_ob.sign_up_fee = TMEPOJS.i18n_subscription_sign_up_fee; tc_totals_ob.showTotal = showTotal; return tc_totals_ob; } // document ready $( function() { TMEPOJS = window.TMEPOJS || null; if ( ! TMEPOJS ) { return; } $( window ).on( 'tm-epo-init-end', function( event, eventData ) { if ( event && eventData && eventData.epo ) { tm_set_subscription_period( eventData.epo ); } } ); $( window ).on( 'tc-epo-after-update', function( event, eventData ) { if ( event && eventData && eventData.data && eventData.data.epo_object ) { tm_set_subscription_period( eventData.data.epo_object ); } } ); $( window ).on( 'tm-epo-found-variation', function( event, eventData ) { var totalsHolder; var variation; var variations; if ( event && eventData && eventData.epo ) { totalsHolder = eventData.totalsHolder; variation = eventData.variation; variations = totalsHolder.data( 'variations' ); if ( variations && variation && variation.variation_id ) { if ( variation.tc_subscription_sign_up_fee !== undefined ) { totalsHolder.data( 'subscription-sign-up-fee', variation.tc_subscription_sign_up_fee ); } else { totalsHolder.data( 'subscription-sign-up-fee', 0 ); } if ( variation.tc_subscription_period !== undefined ) { totalsHolder.data( 'subscription-period', variation.tc_subscription_period ); } } } } ); $.epoAPI.addFilter( 'tc_adjust_tc_totals_ob', tc_adjust_tc_totals_ob, 10, 2 ); } ); }( window, document, window.jQuery ) );