$(document).ready(function(){ setInterval(function(){ updateUserList(); updateUnreadMessageCount(); }, 60000); setInterval(function(){ showTypingStatus(); updateUserChat(); }, 5000); $(".messages").animate({ scrollTop: $(document).height() }, "fast"); $(document).on("click", '#profile-img', function(event) { $("#status-options").toggleClass("active"); }); $(document).on("click", '.expand-button', function(event) { $("#profile").toggleClass("expanded"); $("#contacts").toggleClass("expanded"); }); $(document).on("click", '#status-options ul li', function(event) { $("#profile-img").removeClass(); $("#status-online").removeClass("active"); $("#status-away").removeClass("active"); $("#status-busy").removeClass("active"); $("#status-offline").removeClass("active"); $(this).addClass("active"); if($("#status-online").hasClass("active")) { $("#profile-img").addClass("online"); } else if ($("#status-away").hasClass("active")) { $("#profile-img").addClass("away"); } else if ($("#status-busy").hasClass("active")) { $("#profile-img").addClass("busy"); } else if ($("#status-offline").hasClass("active")) { $("#profile-img").addClass("offline"); } else { $("#profile-img").removeClass(); }; $("#status-options").removeClass("active"); }); $(document).on('click', '.contact', function(){ $('.contact').removeClass('active'); $(this).addClass('active'); var to_user_id = $(this).data('touserid'); showUserChat(to_user_id); $(".chatMessage").attr('id', 'chatMessage'+to_user_id); $(".chatButton").attr('id', 'chatButton'+to_user_id); }); $(document).on("click", '.submit', function(event) { var to_user_id = $(this).attr('id'); to_user_id = to_user_id.replace(/chatButton/g, ""); sendMessage(to_user_id); }); $(document).on('focus', '.message-input', function(){ var is_type = 'yes'; $.ajax({ url:"chat_action.php", method:"POST", data:{is_type:is_type, action:'update_typing_status'}, success:function(){ } }); }); $(document).on('blur', '.message-input', function(){ var is_type = 'no'; $.ajax({ url:"chat_action.php", method:"POST", data:{is_type:is_type, action:'update_typing_status'}, success:function() { } }); }); }); function updateUserList() { $.ajax({ url:"chat_action.php", method:"POST", dataType: "json", data:{action:'update_user_list'}, success:function(response){ var obj = response.profileHTML; Object.keys(obj).forEach(function(key) { // update user online/offline status if($("#"+obj[key].userid).length) { if(obj[key].online == 1 && !$("#status_"+obj[key].userid).hasClass('online')) { $("#status_"+obj[key].userid).addClass('online'); } else if(obj[key].online == 0){ $("#status_"+obj[key].userid).removeClass('online'); } } }); } }); } function sendMessage(to_user_id) { message = $(".message-input input").val(); $('.message-input input').val(''); if($.trim(message) == '') { return false; } $.ajax({ url:"chat_action.php", method:"POST", data:{to_user_id:to_user_id, chat_message:message, action:'insert_chat'}, dataType: "json", success:function(response) { var resp = $.parseJSON(response); $('#conversation').html(resp.conversation); $(".messages").animate({ scrollTop: $('.messages').height() }, "fast"); }, }); } function showUserChat(to_user_id){ $.ajax({ url:"chat_action.php", method:"POST", data:{to_user_id:to_user_id, action:'show_chat'}, dataType: "json", success:function(response){ $('#userSection').html(response.userSection); $('#conversation').html(response.conversation); $('#unread_'+to_user_id).html(''); } }); } function updateUserChat() { $('li.contact.active').each(function(){ var to_user_id = $(this).attr('data-touserid'); $.ajax({ url:"chat_action.php", method:"POST", data:{to_user_id:to_user_id, action:'update_user_chat'}, dataType: "json", success:function(response){ $('#conversation').html(response.conversation); } }); }); } function updateUnreadMessageCount() { $('li.contact').each(function(){ if(!$(this).hasClass('active')) { var to_user_id = $(this).attr('data-touserid'); $.ajax({ url:"chat_action.php", method:"POST", data:{to_user_id:to_user_id, action:'update_unread_message'}, dataType: "json", success:function(response){ if(response.count) { $('#unread_'+to_user_id).html(response.count); } } }); } }); } function showTypingStatus() { $('li.contact.active').each(function(){ var to_user_id = $(this).attr('data-touserid'); $.ajax({ url:"chat_action.php", method:"POST", data:{to_user_id:to_user_id, action:'show_typing_status'}, dataType: "json", success:function(response){ $('#isTyping_'+to_user_id).html(response.message); } }); }); }