;(function ($, document){
'use strict';
const main_data={
action: 'pdp_get_products',
container: '.inbank--calculator',
classLoader: 'inbank-loader',
separator: '|||',
}
$(document).ready(function(){
getPositions();
function getPositions(){
let positions={
action: main_data.action
};
try {
request('', positions, false);
} catch (error){
console.error(error);
}}
function startScrolling(elm){
let scrollingText=elm,
container=elm.closest('.main-calculator-container');
if(!container.is(':visible')){
return;
}
let containerWidth=container.width(),
textWidth=scrollingText.outerWidth(true);
if(containerWidth===0||textWidth===0){
return;
}
scrollingText.css({ left: containerWidth });
function animateText(){
scrollingText.stop(true, true).animate({ left: -textWidth },
{
duration: Math.max(4000, (textWidth + containerWidth) * 8),
easing: 'linear',
step: function (now, fx){
if(!container.is(':visible')){
scrollingText.stop();
}},
complete: function (){
startScrolling(elm);
},
}
);
}
requestAnimationFrame(animateText);
}
$(window).resize(function(){
checkAndStartScrolling();
});
function checkAndStartScrolling(){
let container=$('.main-calculator-container');
container.each(function(){
let scrollingText=$(this).find('.scrolling_text');
if(scrollingText.length){
enableDisableRunningAttr(scrollingText, $(this));
}});
}
function enableDisableRunningAttr(scrollingText, cnt){
if(!cnt.is(':visible')){
scrollingText.attr('data-running', false)
return;
}
if(scrollingText.attr('data-running')=='false'){
scrollingText.attr('data-running', true)
startScrolling(scrollingText);
}}
function addRunningLine(container){
let scrollingText='.scrolling_text';
if(container.find(scrollingText).length){
container.find(scrollingText).each(function(){
startScrolling($(this));
});
}}
async function request(position, data, insert){
let loader=getLoader(insert, position);
let jQueryVersion=jQuery.fn.jquery;
if(isOlderVersion(jQueryVersion, "1.5")){
await $.ajax(inbank_pdp_payments.ajax_url, {
type: 'POST',
dataType: 'json',
async: true,
data: data
}).complete(function(responseData){
if(loader){
loader.remove();
}
processResponse(responseData, insert, position);
}).fail(function(data){
if(loader){
loader.remove();
}});
}else{
await $.ajax(inbank_pdp_payments.ajax_url, {
type: 'POST',
dataType: 'json',
async: true,
data: data
}).always(function(responseData){
if(loader){
loader.remove();
}
processResponse(responseData, insert, position);
}).fail(function(data){
if(loader){
loader.remove();
}});
}}
function isOlderVersion(currentVersion, targetVersion){
var current=currentVersion.split('.').map(Number);
var target=targetVersion.split('.').map(Number);
for (var i=0; i < target.length; i++){
if(current[i] < target[i]) return true;
if(current[i] > target[i]) return false;
}
return false;
}
function processResponse(data, insert, position){
if(data&&'result' in data&&data.result){
if(insert){
let response=$(data.result);
if(insert=='after'){
response.insertAfter(position);
}else{
response.insertBefore(position);
}
addRunningLine(response);
$(main_data.container).slideDown('slow');
}else{
updatePositions(data.result);
}}
}
function getLoader(insert, position){
if(!insert){
return false;
}
let loader=$('<div />').addClass(main_data.classLoader).append($('<div />'));
if(insert=='after'){
loader.insertAfter(position);
}else{
loader.insertBefore(position);
}
return loader;
}
function updatePositions(responsePositions){
if(!responsePositions){
return;
}
let positions=responsePositions.split(',');
if(positions.length){
positions.forEach(updatePaymentsOnPDP);
}}
async function processDataBasedOnLocation(location, item){
let customValue=location.position;
let data={
action: main_data.action,
id: parseInt(inbank_pdp_payments.product_id),
position: item
}
if(customValue.indexOf(main_data.separator)!==-1&&item=='woocommerce_inbank_custom'){
let customValueData=customValue.split(main_data.separator);
for (let i=0; i <=customValueData.length - 1; i++){
location.position=customValueData[i];
await sendRequest(location, data);
}}else{
await sendRequest(location, data);
}}
async function sendRequest(location, data){
try {
await request(location.position, data, location.insert);
} catch (error){
console.error(error);
}}
function updatePaymentsOnPDP(item){
let location=getPaymentLocation(item);
if(!location.hasOwnProperty('insert')||!location.hasOwnProperty('position')){
return;
}
processDataBasedOnLocation(location, item);
}
function getPaymentLocation(item){
let location={}
if(item=='woocommerce_after_add_to_cart_form'){
location.position='.product .entry-summary form.cart';
location.insert='after';
}
if(item=='woocommerce_before_add_to_cart_button'){
location.position='.product .entry-summary form .quantity';
location.insert='before';
}
if(item=='woocommerce_after_add_to_cart_button'){
location.position='.product .entry-summary form .single_add_to_cart_button';
location.insert='after';
}
if(item=='woocommerce_single_product_summary'){
location.position='.product .entry-summary .product_title';
location.insert='after';
}
if(item=='woocommerce_product_meta_start'){
location.position='.product .entry-summary .product_meta';
location.insert='before';
}
if(item=='woocommerce_product_meta_end'){
location.position='.product .entry-summary .product_meta';
location.insert='after';
}
if(item=='woocommerce_share'){
location.position='.product .entry-summary .edit-link';
location.insert='before';
}
if(item=='woocommerce_inbank_custom'){
location.position=inbank_pdp_payments.inbank_custom
? inbank_pdp_payments.inbank_custom
: '.product .entry-summary .product_title';
location.insert='after';
}
return location;
}});
})(jQuery, document);