$(document).ready(function (e) {
    initCF06Pays();
    // Call function recover data for billing step
    recoverDataPayment();
});

// 
function recoverDataPayment() {
    // Container of form
    var formContainer = $('#containerFormPays');
    console.log('ENTRO AQUI')

    var formElements = {
        'inputNameValue': '#form-name',
        'inputSurNameValue': '#form-surname',
        'inputMailValue': ['#form-email', '#form-emailconfirmation'],
        'inputPhoneValue': '#form-phone',
        'inputDofMonthValue': '#formBirth #month',
        'inputDofDayValue': '#formBirth #day',
        'inputDofYearValue': '#formBirth #year',
        'inputCountryValue': '#form-country',
        'inputAddressValue': '#form-address',
        'inputCityValue': '#form-city',
        'inputPostalcodeValue': '#form-postalcode',
        'inputMiddleNameValue': '#form-middleName',
        'inputLastNameValue': '#form-lastName'
    };

    // Fill form with localStorage data
    
    $.each(formElements, function(storageKey, selector) {
        var savedValue = localStorage.getItem(storageKey);
        if (savedValue) {
            if (Array.isArray(selector)) {
                $.each(selector, function(index, value) {
                    formContainer.find(value).val(savedValue);
                });
            } else {
                console.log('Valor asignado:', savedValue);
                formContainer.find(selector).val(savedValue);
            }
        }
    });

    // Select flag with localStorage dataS

    var selectedFlagClass = localStorage.getItem('selectedFlagClass');
    var selectedFlagTitle = localStorage.getItem('selectedFlagTitle');
    if (selectedFlagClass && selectedFlagTitle) {
        var flagElement = $('.iti__selected-flag .iti__flag');
        flagElement.addClass(selectedFlagClass);
        $(".iti__selected-flag").attr('title', selectedFlagTitle)
    }

    var surname = localStorage.getItem('inputSurNameValue');
    if (!surname) {
        var middleName = localStorage.getItem('inputMiddleNameValue') || '';
        var lastName = localStorage.getItem('inputLastNameValue') || '';
        surname = middleName + ' ' + lastName;
    }
    formContainer.find('#form-surname').val(surname.trim());
}

function functionsContinue(iti) {
    $(document).on('click', '.cf05_controlbuttons .continue a.cmp-button', function (e) {
        e.preventDefault();
        functionEventContinueButton(e, iti);
    });
}

function funnelPageView() {
    let variant = sessionStorage.getItem('funnelVariant');
    if($('#zuora_payment').length > 0 && $('#zuora_payment').is(":visible")) {
        funnelstep = 7;
    }else {
       funnelstep = 6; 
    }
    
    funnelaction = 'checkout';
    var productos = getProductTicketsAnalitycs(variant);
    productos = productos.length > 0 ? productos : getProductPackAnalitycs(variant);

    if (cart != undefined && cart.cartItems) {
        var cartExtrasItems = cart.cartItems.filter(product => {
            if (productAvailables != null) {
                let prodId;
                if(product.product != undefined){
                    prodId = product.product.id;
                } else{
                    prodId = product.productId;
                }
                var prCateg = productAvailables.find(el => el.id == prodId)
                if (prCateg != undefined) {
                    prCategTrans = prCateg.category.translations.find(tr => tr.language == languageCalendar);
                    product.categoryDes = prCategTrans != undefined ? prCategTrans.name : "";
                    product.categoryCode = prCateg.category.code;

                    return product;
                }
            }

        });
    }
    $.each(cartExtrasItems, function (key, val) {
        const price_val = cartExtrasItems[key].baseAmount / val.quantity;
        const price = Number(price_val).toFixed(2);
        let name;
        let prodId;
        if(cartExtrasItems[key].product != undefined){
            name = cartExtrasItems[key].product.translations.find(e => e.language === languageCalendar).name;
            prodId = cartExtrasItems[key].product.id;
        } else {
            name = cartExtrasItems[key].productName;
            prodId = cartExtrasItems[key].productId;
        }
        let alreadyAdded = false;
        if(productos.length > 0){
            let checkIsAlreadyAdded = productos.find(e => e.id == prodId);
            if(checkIsAlreadyAdded != undefined){
                alreadyAdded = true;
            }
        }
        if(!alreadyAdded){
            const localStorageExtrasDatedList = localStorage.getItem("listExtrasDated")
            const visitDate = cart && cart.visitDate
            let extraDate = localStorageExtrasDatedList && JSON.parse(localStorageExtrasDatedList).find(e => e === prodId) ? visitDate : 'undated'

            productos.push({
                'id': prodId,
                'name': name,
                'brand': namePark,
                'quantity': val.quantity,
                'price': price,
                'category': 'Extra',
                'variant': variant,
                'productDate': extraDate,
                'originaldiscount': sessionStorage.getItem("originaldiscount"),
                'finaldiscount': sessionStorage.getItem("finaldiscount")
            })
        }
        
    });

    // Check and add insurance product. This part maybe can be useles because it's the same that "commonFunnel.js" Line -> 721.
    let productNameInsurance = true;
    for (const prod of productos) {
        productNameInsurance = (prod.name == "Assurance annulation") ? false : true;
    }

    if (cart != undefined && cart.cancelationInsuranceEnabled && productNameInsurance) {
        const price_var = cart.cancelationInsuranceAmount / dataCart.quantityTickets;
        const price = Number(price_var).toFixed(2);

        const localStorageExtrasDatedList = localStorage.getItem("listExtrasDated")
        const visitDate = cart && cart.visitDate
        let extraDate = localStorageExtrasDatedList && JSON.parse(localStorageExtrasDatedList).find(id => id === prodId) ? visitDate : 'undated'

        productos.push({
            'id': cart.cancelationInsuranceProductId,
            'name': "Assurance annulation",
            'brand': namePark,
            'quantity': dataCart.quantityTickets,
            'price': price,
            'category': 'Extra',
            'variant': variant,
            'productDate': extraDate
        })
    }

    funnelResults.push(funnelstep, funnelaction, productos);
    localStorage.setItem('funnelProducts', JSON.stringify(productos))
    return funnelResults;
}