var interval = 1;//断开后计时 var new_interval = 1;//消息提醒计时 var connect = 0;//连接状态 var new_msg = 0;//新消息数 var obj = {}; var msg_dialog = ''; var socket = {}; var chat_log = {}; var connect_list = {};$('div[nctype="a-barLoginBox"]').trigger("click"); var connect_n = 0; var web_info = new Array();//页面信息 var friend_list = new Array();//我的好友 var recent_list = new Array();//最近联系人 var user_list = new Array();//所有会员信息 var msg_list = new Array();//收到消息 var goods_list = new Array();//所有商品信息 var left_list = new Array();//左侧的会员 var right_list = new Array();//右侧的会员 var dialog_show = 0;//对话框是否打开 var user_show = 0;//当前选择的会员 var msg_max = 20;//消息数 var time_max = 10;//定时(分钟)刷新防止登录超时退出,为0时关闭 $(function(){ if(layout == 'layout/seller_layout.php') { return ; } if(user['u_id'] != '') { web_info['html_title'] = $(document).attr('title'); web_info['msg_dialog'] = '
'+ '
'+ '
'+ ' 
'+ '
'+ '
表情'+ '输入聊天信息聊天记录
'+ '
'+ '
'+ '
'; var chat_user_list = '

联系人

'+ '
'+ '我的好友
'+ '
最近联系人
'+ '
'; var ajaxurl = CHAT_SITE_URL+'/index.php?act=web_chat&op=get_user_list&n=99&f_id='+user['u_id']; $.ajax({ type: "GET", url: ajaxurl, dataType:"jsonp", async: true, success: function(u_list){ for (var u_id in u_list){ var user_info = u_list[u_id]; connect_list[u_id] = 0; connect_n++; set_user_info(u_id,"u_name",user_info['u_name']); set_user_info(u_id,"avatar",user_info['avatar']); if ( user_info['friend'] == 1 ) friend_list[u_id] = user_info; if ( user_info['recent'] == 1 ) recent_list[u_id] = user_info; } setTimeout("getconnect()",1000); $("#web_chat_dialog").prepend(chat_user_list); $('#chat_user_list').perfectScrollbar(); setInterval( function () { $.get(CHAT_SITE_URL+'/index.php?act=web_chat&op=get_session&key=member_id'); }, time_max*60000); $("#chat_show_user").click(function() { chat_show_list(); }); } }); } else { var n = send_state(); if (n > 0) setTimeout("getconnect()",2000); $("#chat_show_user").click(function() { $('div[nctype="a-barLoginBox"]').trigger("click"); }); } $('#dialog_clear,#dialog_right_clear').live('click', function() { if (dialog_show == 1) msg_dialog_close('new_msg_dialog'); }); }); window.onerror=function(){return true;} if (typeof JSON !== 'object') {//兼容IE7 $.getScript(RESOURCE_SITE_URL+'/js/json2.js'); } function msg_dialog_close(id){ if (dialog_show == 1) $("#"+id).hide("slide" ,{ direction: 'right' }, 300); dialog_show = 0; close_chat_log(user_show); if ( connect === 1 ) $("#web_chat_dialog").show(); } function msg_dialog_show(id){ if (dialog_show == 0) { $("#"+id).show( "slide" ,{ direction: 'right' }, 600, function() { $("#send_message").focus(); var obj_msg = obj.find("div[select_user_msg='"+user_show+"']"); obj.find("#msg_list").scrollTop(obj_msg.height()); }); } else { $("#send_message").focus(); } dialog_show = 1; if($("#msg_count").html() == '') { $("#send_message").charCount({//输入字数控制 allowed: 255, warning: 10, counterContainerID:'msg_count', firstCounterText:'还可以输入', endCounterText:'字', errorCounterText:'已经超出' }); $("#chat_show_smilies").smilies({smilies_id:"send_message"}); } } function send_state(){//向服务器请求页面中的相关会员的在线状态 var u_list = connect_list; var n = connect_n; if(layout == 'layout/store_layout.php') { $("[member_id]").each(function(){ n++; var u_id = $(this).attr("member_id"); if ( u_id > 0 && u_id != user['u_id'] ) u_list[u_id] = 0; }); } else { switch (act_op){ case "act_op"://不显示状态 break; case "member_snsfriend_findlist"://会员中心好友中"查找好友"不显示状态 case "member_snsfriend_follow"://会员中心好友中"我关注的"不显示状态 case "member_snsfriend_fan"://会员中心好友中"关注我的"不显示状态 break; case "brand_list": case "search_index": $(".list_pic em[member_id]").each(function(){ n++; var u_id = $(this).attr("member_id"); if ( u_id > 0 && u_id != user['u_id'] ) u_list[u_id] = 0; }); break; default: $("[member_id]").each(function(){ n++; var u_id = $(this).attr("member_id"); if ( u_id > 0 && u_id != user['u_id'] ) u_list[u_id] = 0; }); break; } } $('[nctype="mcard"]').each(function(){ var data_str = $(this).attr('data-param'); eval('var mcard_obj = '+data_str); var u_id = mcard_obj["id"]; if ( u_id > 0 && u_id != user['u_id'] ) { n++; u_list[u_id] = 0; } }); if(connect === 1) { if(n > 0) { socket.emit('get_state', u_list); } else { if (user['u_id'] == '') { socket.disconnect(); } } } else { return n; } } function get_state(list){//返回会员的状态并在页面显示 var u_list = list['u_state']; set_user_list(list['user']); if(layout == 'layout/store_layout.php' || act_op == 'goods_index') {//店铺页面 var store_id = 0; var store_name = ''; if($("div.service-list").size() > 0) { store_id = $("div.service-list").attr("store_id"); store_name = $("div.service-list").attr("store_name"); } $("[member_id]").each(function(){ var u_id = $(this).attr("member_id"); if(store_id > 0) { set_user_info(u_id,"s_id",store_id); set_user_info(u_id,"s_name",store_name); } if($(this).find(".chat").size()==0) { $(this).prepend(get_chat(u_id,u_list[u_id])); if($(this).attr("c_name")) {//店铺客服 var c_name = $(this).attr("c_name"); set_user_info(u_id,"c_name",c_name); $(this).find(".chat").attr("href","JavaScript:store_chat("+u_id+",'"+c_name+"');"); } } }); } else { switch (act_op){ case "member_snsfriend_findlist"://会员中心好友中"查找好友"不显示状态 case "member_snsfriend_follow"://会员中心好友中"我关注的"不显示状态 case "member_snsfriend_fan"://会员中心好友中"关注我的"不显示状态 break; case "brand_list": case "search_index": $(".list_pic em[member_id]").each(function(){ var u_id = $(this).attr("member_id"); if($(this).find(".chat").size()==0) { $(this).prepend(get_chat(u_id,u_list[u_id])); $(this).after("

在线客服

"); } }); break; default: $("[member_id]").each(function(){ var u_id = $(this).attr("member_id"); if($(this).find(".chat").size()==0) { $(this).prepend(get_chat(u_id,u_list[u_id])); } }); break; } } if(user['u_id'] != '') { update_recent(); update_friends(); } else { socket.disconnect(); } } function show_obj(){//弹出框 if(user_show < 1) { chat_show_list(); return false; } msg_dialog_show('new_msg_dialog'); } function send_focus(){ $("#send_alert").html(''); } function send_keyup(event){//回车发消息 var t_msg = $.trim($("#send_message").val()); if(event.keyCode == 13 && t_msg.length > 0) { send_msg(); } } function send_msg(){//发消息 if(user_show < 1) { $("#send_alert").html('未选择聊天会员'); return false; } var msg = {}; msg['f_id'] = user['u_id']; msg['f_name'] = user['u_name']; msg['t_id'] = user_show; msg['t_name'] = user_list[user_show]['u_name']; msg['t_msg'] = $.trim($("#send_message").val()); if(msg['t_msg'].length < 1) { $("#send_alert").html('发送内容不能为空'); return false; } if(msg['t_msg'].length > 255) { $("#send_alert").html('一次最多只能发送255字'); return false; } if(connect < 1) { $("#send_alert").html('处于离线状态,稍后再试'); return false; } $.ajax({ type: "POST", url: CHAT_SITE_URL+'/index.php?act=web_chat&op=send_msg', dataType:"jsonp", data: msg, async: false, success: function(t_msg){ if(t_msg['error']) { $("#send_alert").html(''+t_msg['error']); return false; } else { if ( connect === 1 ) { socket.emit('send_msg', t_msg); $("#send_message").val(''); $("#send_message").focus(); $("#send_alert").html(''); show_t_msg(t_msg); return true; } else { $("#send_alert").html('由于网络原因未发送成功,稍后再试'); return false; } } } }); } function get_msg(list){//接收消息 var msg = {}; for (var k in list){ msg = list[k]; var m_id = msg['m_id']; var u_id = msg['f_id']; set_user(u_id,msg['f_name']); if (typeof msg_list[u_id][m_id] === "object") {//防止重复计数 continue; } if (typeof msg['user'] === "object" && typeof msg['user']['avatar'] !== "undefined" ) { var user_info = msg['user']; var u_name = user_info['u_name']; set_user_info(u_id,"u_name",u_name); set_user_info(u_id,"s_id",user_info['s_id']); set_user_info(u_id,"s_name",user_info['s_name']); set_user_info(u_id,"avatar",user_info['avatar']); if ( user_info['online'] > 0 ) set_user_info(u_id,"online",1); } if ( typeof user_list[u_id]['avatar'] === "undefined" ) {//当没获得会员信息时调用一次 var ajaxurl = CHAT_SITE_URL+'/index.php?act=web_chat&op=get_info&t=member&u_id='+u_id; $.ajax({ type: "GET", url: ajaxurl, dataType:"jsonp", async: false, success: function(member){ var u_name = member['member_name']; set_user_info(u_id,"s_id",member['store_id']); set_user_info(u_id,"s_name",member['store_name']); set_user_info(u_id,"avatar",member['member_avatar']); } }); } msg_list[u_id][m_id] = msg; if(dialog_show == 0 || obj.find("li[select_u_id='"+u_id+"']").size()==0) {//没有打开对话窗口时计数 user_list[u_id]['new_msg']++; new_msg++; } else { if ( user_show == u_id) { show_msg(u_id);//当前对话的会员消息设为已读 } else { user_list[u_id]['new_msg']++; new_msg++; } } alert_user_msg(u_id); } alert_msg(); } function get_chat_log(time_from){ var obj_chat_log = $("#dialog_chat_log"); if(obj_chat_log.html() == '') { var chat_log_list = '

聊天记录

'+ '
'+ '7天15天30天
'+ '

已到第一页

已到最后一页

'+ '
'; obj_chat_log.append(chat_log_list); } obj_chat_log.show(); chat_log['u_id'] = user_show; chat_log['now_page'] = 0; chat_log['total_page'] = 0; chat_log['time_from'] = 7; chat_log['list'] = new Array(); var time_id = obj_chat_log.find("span.current").attr("time_id"); if(time_from != time_id) { obj_chat_log.find("span.current").removeClass("current"); obj_chat_log.find("span[time_id='"+time_from+"']").addClass("current"); chat_log['time_from'] = time_from; } get_chat_msg(false); } function get_chat_next(){ var now_page = chat_log['now_page'] - 1; if(now_page >= 1) { show_chat_msg(now_page); chat_log['now_page'] = now_page; } else { $('.chat_log_last').show(); setTimeout("$('.chat_log_last').hide()",2000); } } function get_chat_previous(){ var now_page = chat_log['now_page'] + 1; if(chat_log['total_page'] >= now_page) { if (typeof chat_log['list'][now_page] === "undefined" ) { get_chat_msg(false); } else { show_chat_msg(now_page); chat_log['now_page'] = now_page; if(chat_log['total_page'] > now_page && typeof chat_log['list'][now_page+1] === "undefined") get_chat_msg(true); } } else { $('.chat_log_first').show(); setTimeout("$('.chat_log_first').hide()",2000); } } function get_chat_msg(t){ var ajaxurl = CHAT_SITE_URL+'/index.php?act=web_chat&op=get_chat_log&page=30&f_id='+user['u_id']+'&t_id='+chat_log['u_id']+'&t='+chat_log['time_from']; if(chat_log['now_page'] > 0) ajaxurl += '&curpage='+(chat_log['now_page']+1); $.ajax({ type: "GET", url: ajaxurl, dataType:"jsonp", async: t, success: function(chat_msg){ var now_page = chat_log['now_page'] + 1; chat_log['list'][now_page] = chat_msg['list']; if(t == false) { chat_log['now_page'] = now_page; show_chat_msg(now_page); } chat_log['total_page'] = chat_msg['total_page']; if(chat_log['total_page'] > 1 && chat_log['total_page'] > now_page && t == false) { get_chat_msg(true); } } }); } function get_goods_info(msg){//显示商品图片和名称 if ( typeof msg['goods_id'] === "undefined" ) {//没有定义商品编号时调用检测一次 var t_msg = msg['t_msg']; var shop_site = SHOP_SITE_URL; var re = new RegExp(shop_site+"/index.php\\?act=goods&op=index&goods_id=(\\d+)$","g"); var arr = re.exec(t_msg); goods_id = RegExp.$1; if ( arr == null) { re = new RegExp(shop_site+"/item-(\\d+)\\.html$","g"); arr = re.exec(t_msg); goods_id = RegExp.$1; if ( arr == null) { goods_id = 0; } } if ( goods_id > 0 ) { if ( typeof goods_list[goods_id] === "undefined" ) { var ajaxurl = CHAT_SITE_URL+'/index.php?act=web_chat&op=get_goods_info&goods_id='+goods_id; $.ajax({ type: "GET", url: ajaxurl, dataType:"jsonp", async: true, success: function(goods){ if (typeof goods['goods_id'] !== "undefined" ) { goods_id = goods['goods_id']; msg['goods_id'] = goods_id; msg['goods_info'] = goods; show_msg_goods(msg); if ( typeof goods_list[goods_id] === "undefined" ) { goods_list[goods_id] = goods; } } } }); } else { msg['goods_id'] = goods_id; msg['goods_info'] = goods_list[goods_id]; show_msg_goods(msg); } } } else { show_msg_goods(msg); } } function update_msg(u_id){//更新已读 var u_name = user_list[u_id]['u_name']; user_list[u_id]['new_msg'] = 0; alert_user_msg(u_id); new_msg--; alert_msg(); } function store_chat(u_id,c_name){//店铺客服对话窗口 set_user_info(u_id,"c_name",c_name);//设置客服别名 chat(u_id); } function chat(u_id){//打开对话窗口 if(user['u_id'] == '') {//未登录时弹出登录窗口 $("#chat_login").trigger("click"); return ; } if(u_id == user['u_id']) return ; if ( typeof user_list[u_id] === "undefined" || typeof user_list[u_id]['avatar'] === "undefined" ) { var ajaxurl = CHAT_SITE_URL+'/index.php?act=web_chat&op=get_info&t=member&u_id='+u_id; $.ajax({ type: "GET", url: ajaxurl, dataType:"jsonp", async: false, success: function(member){ var u_name = member['member_name']; if( typeof u_name === "undefined" || u_name == '') return false; set_user_info(u_id,"u_name",u_name); set_user_info(u_id,"s_id",member['store_id']); set_user_info(u_id,"s_name",member['store_name']); set_user_info(u_id,"avatar",member['member_avatar']); } }); } update_user(u_id); show_msg(u_id); show_obj(); } function show_dialog(){//显示窗口 update_dialog(); show_obj(); } function update_dialog(){//显示会员的对话 if ( new_msg < 1 ) return true; var select_user = 0; for (var u_id in user_list){ if ( user_list[u_id]['new_msg'] > 0 ) { update_user(u_id); obj.find("em[unread_id='"+u_id+"']").addClass("unread"); obj.find("em[unread_id='"+u_id+"']").html(user_list[u_id]['new_msg']); } } select_user = obj.find(".unread").first().attr("unread_id"); if ( select_user > 0 ) show_msg(select_user); } function show_chat_log(){ if(user_show < 1) { $("#send_alert").html('未选择聊天会员'); return false; } if (typeof chat_log['u_id'] === "undefined" || chat_log['u_id'] != user_show) { $("#web_chat_dialog").hide(); $("#dialog_right_clear").hide(); get_chat_log(7); obj.find(".chat-log-btn").removeClass("off"); obj.find(".chat-log-btn").addClass("on"); } else { close_chat_log(user_show); } } function show_msg(u_id){//显示会员的消息 var user_info = user_list[u_id]; var u_name = user_info['u_name']; if(obj.find("div[select_user_msg='"+u_id+"']").size()==0) { obj.find("#user_msg_list").prepend('
'); } obj.find(".msg_list").hide(); obj.find("div[select_user_msg='"+u_id+"']").show(); obj.find("li[select_u_id]").removeClass("select_user"); obj.find("li[select_u_id='"+u_id+"']").addClass("select_user"); if(user_show != u_id) { close_chat_log(user_show); var add_html = ''; if (typeof user_info['c_name'] !== "undefined") add_html = '--'+user_info['c_name']; if (typeof user_info['s_name'] !== "undefined") add_html = '
'+user_info['s_name']+add_html+'
'; obj.find(".user-info").html('
'+u_name+'
'+u_name+'
'+add_html); obj.find('#msg_list').perfectScrollbar('destroy'); obj.find('#msg_list').perfectScrollbar(); } user_show = u_id; var max_id = 0; for (var m_id in msg_list[u_id]){ if(obj.find("div[m_id='"+m_id+"']").size()==0) { var msg = msg_list[u_id][m_id]; show_f_msg(msg); update_msg(u_id); delete msg_list[u_id][m_id];//删除消息 if ( m_id > max_id ) max_id = m_id; } } var obj_msg = obj.find("div[select_user_msg='"+u_id+"']"); obj.find("#msg_list").scrollTop(obj_msg.height()); $("#send_message").focus(); if ( max_id > 0 && connect === 1 ) socket.emit('del_msg', {'max_id':max_id,'f_id':u_id}); } function show_f_msg(msg){//显示收到的消息 var u_id = msg['f_id']; var user_info = user_list[u_id]; var text_append = ''; var obj_msg = obj.find("div[select_user_msg='"+u_id+"']"); text_append += '
'; text_append += ''; text_append += '
'; text_append += msg['add_time']+'
'; text_append += '
'; text_append += update_chat_msg(msg['t_msg'])+'
'; text_append += '
'; text_append += '
'; text_append += '
'; obj_msg.append(text_append); get_goods_info(msg); var n = obj_msg.find("div[m_id]").size(); if ( n >= msg_max && n % msg_max ==1) { obj_msg.append('
清除已上历史消息
'); } obj.find("#msg_list").scrollTop(obj_msg.height()); } function show_t_msg(msg){//显示发出的消息 var user_info = user; var u_id = msg['t_id']; var text_append = ''; var obj_msg = obj.find("div[select_user_msg='"+u_id+"']"); text_append += '
'; text_append += ''; text_append += '
'; text_append += msg['add_time']+'
'; text_append += '
'; text_append += update_chat_msg(msg['t_msg'])+'
'; text_append += '
'; text_append += '
'; text_append += '
'; obj_msg.append(text_append); get_goods_info(msg); var n = obj_msg.find("div[m_id]").size(); if ( n >= msg_max && n % msg_max ==1) { obj_msg.append('
清除已上历史消息
'); } obj.find("#msg_list").scrollTop(obj_msg.height()); } function show_chat_msg(now_page){ var log_list = chat_log['list'][now_page]; $('#chat_log_msg').html(''); for (var k in log_list){ var class_html = ''; var text_append = ''; var msg = log_list[k]; msg['u_name'] = msg['f_name']; if ( msg['u_name'] == user['u_name'] ) { msg['u_name'] = '我'; class_html = 'chat_user'; } text_append += '
'; text_append += '

'+msg['u_name']+''; text_append += ''+msg['time']+'

'; text_append += '

'+update_chat_msg(msg['t_msg'])+'

'; text_append += '
'; $('#chat_log_msg').prepend(text_append); } $('#chat_log_list').perfectScrollbar('destroy'); $('#chat_log_list').perfectScrollbar(); $('#chat_log_list').scrollTop($('#chat_log_msg').height()); } function show_msg_goods(msg){ var m_id = msg['m_id']; var goods_id = msg['goods_id']; if ( goods_id != '' && goods_id > 0 ) { var goods = msg['goods_info']; var text_append = ''; text_append += '
'; text_append += '
'; text_append += goods['goods_name']+'
'; text_append += '
¥'+goods['goods_promotion_price']+'
'; text_append += '
'; text_append += '
'; obj.find("div.msg_list div[m_id='"+m_id+"'] dd[class$='-msg-text']").append(text_append); } } function chat_show_user_list(chat_show){ var obj_chat = $("#chat_user_"+chat_show); if (obj_chat.find("dt span").attr("class") == 'hide') { obj_chat.find("dd[u_id]").show(); obj_chat.find("dt span").attr("class","show"); } else { obj_chat.find("dd[u_id]").hide(); obj_chat.find("dt span").attr("class","hide"); } } function chat_show_list(){ if(user['u_id'] == '') { return ; } var obj_chat = $(".chat-list"); if (new_msg > 0 || obj_chat.css("display") == 'none') { obj_chat.show("slide" ,{ direction: 'right' }, 300); if (new_msg > 0) show_dialog(); } else { obj_chat.hide("slide" ,{ direction: 'right' }, 300); } } function del_msg(msg){//已读消息处理 var max_id = msg['max_id'];//最大的消息编号 var u_id = msg['f_id'];//消息发送人 for (var m_id in msg_list[u_id]){ if ( max_id >= m_id) { delete msg_list[u_id][m_id]; if ( user_list[u_id]['new_msg'] > 0 ) user_list[u_id]['new_msg']--; if ( new_msg > 0 ) new_msg--; alert_user_msg(u_id); } } alert_msg(); } function alert_user_msg(u_id){ if ( user_list[u_id]['new_msg'] > 0 ) { obj.find("em[unread_id='"+u_id+"']").addClass("unread"); obj.find("em[unread_id='"+u_id+"']").html(user_list[u_id]['new_msg']); $("#chat_user_recent dd[u_id='"+u_id+"'] a").addClass("msg"); } else { obj.find("em[unread_id='"+u_id+"']").html(""); obj.find("em[unread_id='"+u_id+"']").removeClass("unread"); $("#chat_user_recent dd[u_id='"+u_id+"'] a").removeClass("msg"); } } function alert_msg(){ var new_n = 0; clearInterval(new_interval); if ( new_msg > 0 ) {//消息提醒 new_interval = setInterval( function () { new_n++; if ( connect === 1 ) $(document).attr('title','新消息('+new_msg+') '+web_info['html_title']); if ( new_n % 3 > 1 ) $(document).attr('title',web_info['html_title']); }, 500); $("#new_msg").show().html(new_msg); } else { new_msg = 0; $("#new_msg").hide().html(''); } $(document).attr('title',web_info['html_title']); } function get_chat(u_id,online){//显示链接地址 var add_html = '在线'; if (u_id != user['u_id'] && u_id > 0 ) { var class_html = 'chat_offline'; var text_html = '离线'; if ( online > 0 ) { class_html = 'chat_online'; text_html = '在线'; } add_html = ''+text_html+''; } return add_html; } function clear_msg(u_id,m_id){//清除消息处理 var obj_msg = obj.find("div[select_user_msg='"+u_id+"']"); obj_msg.find("div[clear_id='"+m_id+"']").prevAll().remove(); obj_msg.find("div[clear_id='"+m_id+"']").remove(); } function set_user_list(list){//初始化会员列表 for (var k in list){ var user_info = list[k]; var u_id = user_info['u_id']; var u_name = user_info['u_name']; var online = 0; if ( user_info['online'] > 0 ) online = 1; set_user_info(u_id,"u_name",u_name); set_user_info(u_id,"s_id",user_info['s_id']); set_user_info(u_id,"s_name",user_info['s_name']); set_user_info(u_id,"avatar",user_info['avatar']); set_user_info(u_id,"online",online); } } function set_user(u_id,u_name){//初始化会员信息 var user_info = new Array(); user_info['u_id'] = u_id; user_info['u_name'] = u_name; user_info['new_msg'] = 0; user_info['online'] = 0; if ( typeof user_list[u_id] === "undefined" ) user_list[u_id] = user_info; if ( typeof msg_list[u_id] === "undefined" ) msg_list[u_id] = new Array(); } function set_user_info(u_id,k,v){//设置会员信息 if ( typeof user_list[u_id] === "undefined" ) set_user(u_id,''); user_list[u_id][k] = v; } function close_chat_log(u_id){ if (user_show == 0 || chat_log['u_id'] == u_id) { chat_log = {}; $("#dialog_chat_log").hide(); $("#dialog_right_clear").show(); $('#chat_log_msg').html(''); obj.find(".chat-log-btn").removeClass("on"); obj.find(".chat-log-btn").addClass("off"); if ( connect === 1 ) $("#web_chat_dialog").show(); } } function close_dialog(u_id){ obj.find("li[select_u_id='"+u_id+"']").remove(); obj.find("div[select_user_msg='"+u_id+"']").hide(); if(obj.find("li[select_u_id]").size()==0) { msg_dialog_close('new_msg_dialog'); } else { if ( user_show == u_id ) obj.find("li[select_u_id]").first().trigger("click"); } if ( user_show == u_id ) { user_show = 0; close_chat_log(u_id); } if(obj.find("li[select_u_id]").size() < 2) obj.find(".user-tab-bar").hide(); } function update_chat_msg(msg){ if (typeof smilies_array !== "undefined") { msg = ''+msg; for(var i in smilies_array[1]) { var s = smilies_array[1][i]; var re = new RegExp(""+s[1],"g"); var smilieimg = ''+s[6]+''; msg = msg.replace(re,smilieimg); } } return msg; } function update_friends(){ var obj_friend = $("#chat_friends"); for (var u_id in friend_list){ if(obj_friend.parent().find("dd[u_id='"+u_id+"']").size()==0) { if(user_list[u_id]['online'] > 0 ) { obj_friend.before('
'+user_list[u_id]['u_name']
						+'
'+user_list[u_id]['u_name']+'
'); } else { obj_friend.after('
'+user_list[u_id]['u_name']
						+'
'+user_list[u_id]['u_name']+'
'); } } } obj_friend.remove(); chat_show_user_list('friends'); } function update_recent(){ var obj_recent = $("#chat_recent"); for (var u_id in recent_list){ if(obj_recent.parent().find("dd[u_id='"+u_id+"']").size()==0) { if(user_list[u_id]['online'] > 0 ) { obj_recent.before('
'+user_list[u_id]['u_name']
						+'
'+user_list[u_id]['u_name']+'
'); } else { obj_recent.after('
'+user_list[u_id]['u_name']
						+'
'+user_list[u_id]['u_name']+'
'); } } } obj_recent.remove(); } function update_user(u_id){ if(obj.find("li[select_u_id='"+u_id+"']").size()==0) { var user_info = user_list[u_id]; var u_name = user_info['u_name']; var text_append = ''; var class_html = 'offline'; if ( user_info['online'] > 0 ) class_html = 'online'; text_append += '
  • '; text_append += ''; text_append += ''+u_name+''; text_append += ''; text_append += u_name+''; text_append += ''; text_append += ''; text_append += '
  • '; obj.find("#user_list").append(text_append); obj.find("#user_list").sortable({ items: 'li' }); obj.find("li[select_u_id='"+u_id+"'] .ac-ico").bind("click", function() { close_dialog(u_id);return false; }); if(obj.find("li[select_u_id]").size() > 1) obj.find(".user-tab-bar").show(); } obj.find(".user-tab-bar").perfectScrollbar(); } function getconnect(){ $.getScript(connect_url+"/resource/socket.io.js", function(){ clearInterval(interval); if ( typeof io === "object" ) { socket = io.connect(connect_url, { 'resource': 'resource', 'reconnect': false }); socket.on('connect', function () { connect = 1; send_state(); socket.on('get_state', function (u_list) { get_state(u_list); }); if(user['u_id'] == '') return false;//未登录时不取消息 $("#web_chat_dialog").show(); if($("#new_msg_dialog").size()==0) $("#web_chat_dialog").after(web_info['msg_dialog']); obj = $("#new_msg_dialog"); socket.emit('update_user', user); socket.on('get_msg', function (msg_list) { get_msg(msg_list); }); socket.on('del_msg', function (msg) { del_msg(msg); }); socket.on('disconnect', function () { connect = 0; $("#web_chat_dialog").hide(); interval = setInterval( getconnect, 60000);//断开1分钟后重新连接服务器 }); }); } }); }