<?php @$other_users = @mysqli_query($bdd,"SELECT * FROM ".$prefix."_userconnect uc INNER JOIN ".$prefix."_user user ON uc.user_id = user.id WHERE uc.user_id != '".$_SESSION['user_id']."'");
if($_SESSION['connected_info']==1&&@mysqli_num_rows($other_users)>0&&$_SESSION['auth_chat'] == 1) { ?>
<script language="javascript">
$(document).ready(function () {
    let chatOpen = false;
    let currentUser = <?= json_encode($_SESSION['login']); ?>;
    let receiverId = null;
    let lastMessageId = null;
    let refreshInterval = null;

    // Ajout d'un son de notification
    let notificationSound = new Audio("img/wav/notif.wav"); // Remplace avec le chemin du son

    $(document).on("click", ".chat-user", function () {
        let otherUser = $(this).data("user");
        let clickedUserId = $(this).data("user-id");

        // Si on clique sur l'utilisateur actif, on ferme la chat-box
        if (chatOpen && receiverId === clickedUserId) {
            $("#chat-box").fadeOut();
            chatOpen = false;
            receiverId = null;
        } else {
            receiverId = clickedUserId;
            $("#chat-user-name").text(otherUser);
            $("#chat-box").fadeIn();
            chatOpen = true;
            lastMessageId = null; 
            loadMessages(receiverId);
        }
    });

    $("#close-chat").click(function () {
        $("#chat-box").fadeOut();
        chatOpen = false;
    });

    $("#chat-send").click(function () {
        sendMessage();
    });

    $("#chat-input").keypress(function (event) {
        if (event.which === 13) {
            sendMessage();
        }
    });

    function sendMessage() {
        let message = $("#chat-input").val().trim();
        if (message === "") return;

        $.post("db/proc/tchat_send.php", {
            sender: currentUser,
            receiver: receiverId,
            message: message
        }, function () {
            $("#chat-input").val("");
            loadMessages(receiverId);
        });
    }

    function loadMessages(receiverId) {
        if (!receiverId) return;

        $.get("db/proc/tchat_load.php?user=" + receiverId, function (data) {
            let messages = $(data).find(".message");
            if (messages.length === 0) return;

            let lastMessage = messages.last();
            let messageId = lastMessage.data("message-id");
            let senderName = lastMessage.find(".message-sender").text();

            if (lastMessageId !== messageId) { // Nouveau message détecté
                lastMessageId = messageId; 

                if (senderName !== currentUser) { // Message venant d'un autre utilisateur
                    notificationSound.play(); // Jouer le son
                    showNotificationBadge(); // Ajouter une alerte visuelle

                    if (!chatOpen) { 
                        $("#chat-box").fadeIn(); // Ouvrir la boîte si elle est fermée
                        $("#chat-user-name").text(senderName);
                        receiverId = lastMessage.data("sender-id"); // Mettre à jour le destinataire
                        chatOpen = true;
                    }
                }
            }

            $("#chat-messages").html(data);
            $("#chat-messages").scrollTop($("#chat-messages")[0].scrollHeight);
        });
    }

    if (Notification.permission === "default") {
        Notification.requestPermission();
    }

    const CHAT1 = <?= json_encode(CHAT1); ?>;

    // Fonction pour afficher une notification navigateur
    function showBrowserNotification(sender, message) {
        if (Notification.permission === "granted") {
            let notification = new Notification(CHAT1 + " " + sender, {
                body: message,
                icon: "/img/bell.png" // Icône de la notification
            });

            // Ouvrir le chat au clic sur la notification
            notification.onclick = function () {
                $("#chat-box").fadeIn();
                $("#chat-user-name").text(sender);
                chatOpen = true;
            };
        }
    }
    function checkNewMessages() {
        $.get("db/proc/tchat_check_new.php", function (data) {
            let newMessages = JSON.parse(data);

            if (newMessages.length > 0) {
                newMessages.forEach(msg => {
                    if (msg.sender_id !== currentUser) { // Message venant d'un autre utilisateur
                        notificationSound.play();
                        showBrowserNotification(msg.sender, msg.message); // Notification navigateur

                        if (!chatOpen) {
                            $("#chat-box").fadeIn();
                            $("#chat-user-name").text(msg.sender);
                            receiverId = msg.sender_id;
                            chatOpen = true;
                        }
                    }
                });
            }
        });
    }

    function showNotificationBadge() {
        $("#chat-icon").addClass("has-new-message"); // Ajouter un indicateur (assurez-vous d’avoir du CSS)
    }

    refreshInterval = setInterval(function () {
        if (chatOpen) {
            loadMessages(receiverId);
        }
        checkNewMessages(); // Vérifier les nouveaux messages même si la boîte est fermée
    }, 2000);
});
</script>
<?php } ?>