﻿/*
 * ISC License
 *
 * Copyright (c) 2026 idnovate.com
 * idnovate is a Registered Trademark & Property of idnovate.com, innovación y desarrollo SCP
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
 * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
 * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
 * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
 * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 *
 * @author    idnovate
 * @copyright 2026 idnovate.com
 * @license   https://www.isc.org/licenses/ https://opensource.org/licenses/ISC ISC License
 */
$(document).ready(function() {
    prestashop.on(
        'updateCart',
        function() {
            $.post(prestashop.urls.loyaltyeditpoints_ajax_controller+'?ajax=1&action=refreshPoints').then((resp) => {
                $('.loyalty-block-shopping-cart').replaceWith(resp.loyalty_block_shopping_cart)
            });
        }
    );

    var lang = document.documentElement.lang || 'en';

    $('.lep-range-slider').each(function() {
        var $slider = $(this);
        var pointValue = parseFloat($slider.attr('data-point-value'));
        var currencyIso = $slider.attr('data-currency');
        var formatter = new Intl.NumberFormat(lang, { style: 'currency', currency: currencyIso });
        var $form = $slider.closest('form');

        function updateSlider(el) {
            var points = parseInt(el.value, 10);
            var min = parseInt(el.min, 10);
            var max = parseInt(el.max, 10);
            var pct = ((points - min) / (max - min)) * 100;
            el.style.setProperty('--lep-fill', pct + '%');
            $form.find('.lep-display-points').text(points);
            $form.find('.lep-display-voucher').text(formatter.format(points * pointValue));
        }

        $slider.on('input change', function() { updateSlider(this); });
        updateSlider($slider[0]);
    });
});
