(function ($) {

    function getDevice() {
        let id = localStorage.getItem("brp_dev");
        if (!id) {
            id = "dev_" + Math.random().toString(36).substring(2);
            localStorage.setItem("brp_dev", id);
        }
        return id;
    }

    /* Flying heart burst */
    function flyBurst(el) {
        let p = el.offset();
        let b = $('<span class="brp-burst">❤️</span>');
        $("body").append(b);

        b.css({
            left: p.left + 8,
            top: p.top - 8,
            position: "absolute"
        });

        setTimeout(() => b.remove(), 1000);
    }

    $(document).ready(function () {

        $(".brp-heart").on("click", function () {

            let heart = $(this);
            let rating = heart.data("value");
            let dev = getDevice();

            /* Low rating auto remove */
            if (rating <= 3) {
                $("#brp-pro-message").html(
                    "<b>Please give 4 or 5 ❤️ to support!</b>"
                );
                return;
            }

            /* Remove previous filled hearts */
            $(".brp-heart").removeClass("active-heart");

            /* Make clicked heart filled ❤️ */
            heart.addClass("active-heart pop");

            /* Flying animation */
            flyBurst(heart);

            setTimeout(() => heart.removeClass("pop"), 450);

            /* Save rating */
            $.post(brpProHeart.ajax_url, {
                action: "brp_pro_save",
                post_id: brpProHeart.post_id,
                rating: rating,
                device_id: dev,
                _ajax_nonce: brpProHeart.nonce
            }, function (res) {
                if (res.success) {
                    $("#brp-pro-message").html(res.data.message);
                }
            });

        });

    });

})(jQuery);
