(function() { WebqCore.register("EQQ.Global", function() { this.initGlobal = function() { EQQ.vfwebqq = alloy.portal.getVfWebQQ() } }) })(); (function() { WebqCore.register("EQQ.Adapter", function(d) { this.proxysend = function(g, f) { alloy.rpcService.send(g, { context: null, method: f.method || "GET", data: { r: d.json.stringify(f.param) }, onSuccess: f.onSuccess, onError: f.onError, onTimeout: f.onTimeout }) }; EQQ.BASE_CONST = alloy.CONST }) })(); (function() { WebqCore.register("EQQ.Extend", function() { this.cgi_module = function(d, g) { return function(f) { g.onError = g.errback || function() { }; g.onTimeout = g.timeback || function() { }; f = f || function() { }; g.onSuccess = function(d) { g.callback(d, f) }; EQQ.Adapter.proxysend(d, g) } }; this.cgi_module_d = function(d, g) { return function(f) { g.onError = g.errback || function() { }; g.onTimeout = g.timeback || function() { }; f = f || function() { }; g.onSuccess = function(d) { g.callback(d, f) }; EQQ.RPCService.send(d, g) } }; this.require = function(d, g) { for (var f = d.length, j = d.length, t = function() { f--; f == 0 && g() }, b = 0; b < j; b++) d[b](t) } }) })(); (function() { WebqCore.register("EQQ", function(d) { var g = this, f = d.dom, j = d.event, t = d.cookie, b = !1, a = {}, c, p = 0, m, z, q, o = !1, i = !1, r, k; k = window.location.host; d.out(">>dName: " + k); this.showLogin = function() { alloy.portal.getLoginLevel(); t.get("ptwebqq") ? EQQ.init2({ panel: { mainPanel: alloy.app.eqq.getWindow().body, taskBar: alloy.layout.getPanel("taskBar").body } }) : alloy.layout.showLoginWindow("eqq", !0) }; var D = { onExit: function() { alloy.layout.confirm("\u60a8\u786e\u8ba4\u8981\u5173\u95ed WebQQ \u5417\uff1f", function() { g.executeExit() }, { modal: !0 }) }, onNeedLogin: function() { alloy.layout.showLoginWindow("eqq") } }; this.CONST = { MAIN_DOMAIN: "qq.com", EQQ_SERVER_URL: "http://" + k + "/", CONN_SERVER_DOMAIN: "http://d.web2.qq.com/", CONN_SERVER_DOMAINS: ["http://d.web2.qq.com/"], CONN_PROXY_URLS: ["http://d.web2.qq.com/proxy.html?v=20110331002"], CONN_SERVER_DOMAIN2: "http://" + k + "/", CONN_PROXY_URL: "http://d.web2.qq.com/proxy.html?v=20110331002", CHAT_PIC_SERVER: "http://" + k + "/", AVATAR_SERVER_DOMAIN: "http://qun.qq.com/", AVATAR_SERVER_DOMAINS: ["http://face1.qun.qq.com/", "http://face2.qun.qq.com/", "http://face3.qun.qq.com/", "http://face4.qun.qq.com/", "http://face5.qun.qq.com/", "http://face6.qun.qq.com/", "http://face7.qun.qq.com/", "http://face8.qun.qq.com/", "http://face9.qun.qq.com/", "http://face10.qun.qq.com/", "http://face11.qun.qq.com/"], SYSTEM_FACE_URL: "http://0.web.qstatic.com/webqqpic/style/face/", LOGIN_PROTECT_FINISH_URL: "./login_protect.html", UPLOAD_CUSTOM_FACE_SERVER: "http://up.web2.qq.com/cgi-bin/cface_upload", DOWNLOAD_CHAT_LOG_SERVER: "http://sns.qq.com/buddy_state/feed/save_chat.php", FILE_SERVER: "http://file1.web.qq.com/", OFFLINE_FILE_SERVER: "http://weboffline.ftn.qq.com:80/ftn_access/", QZONE_SERVER_DOMAIN: "http://qzone.qq.com/", QZONE_USER_SERVER_DOMAIN: "http://user.qzone.qq.com/", QQ_GROUP_URL: "http://qun.qq.com/air/", MAX_LOGIN_AMOUNT: 1, MAX_FAIL_AMOUNT: 2, Z_INDEX_BASE: 3E3, LOAD_AVATAR_AMOUNT: 50, TRANSFER_TABLE: [14, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 0, 50, 51, 96, 53, 54, 73, 74, 75, 76, 77, 78, 55, 56, 57, 58, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 32, 113, 114, 115, 63, 64, 59, 33, 34, 116, 36, 37, 38, 91, 92, 93, 29, 117, 72, 45, 42, 39, 62, 46, 47, 71, 95, 118, 119, 120, 121, 122, 123, 124, 27, 21, 23, 25, 26, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 52, 24, 22, 20, 60, 61, 89, 90, 31, 94, 65, 35, 66, 67, 68, 69, 70, 15, 16, 17, 18, 19, 28, 30, 40, 41, 43, 44, 48, 49], T_TRANSFER_TABLE: { 14: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 10, 11: 11, 12: 12, 13: 13, 0: 14, 50: 15, 51: 16, 96: 17, 53: 18, 54: 19, 73: 20, 74: 21, 75: 22, 76: 23, 77: 24, 78: 25, 55: 26, 56: 27, 57: 28, 58: 29, 79: 30, 80: 31, 81: 32, 82: 33, 83: 34, 84: 35, 85: 36, 86: 37, 87: 38, 88: 39, 97: 40, 98: 41, 99: 42, 100: 43, 101: 44, 102: 45, 103: 46, 104: 47, 105: 48, 106: 49, 107: 50, 108: 51, 109: 52, 110: 53, 111: 54, 112: 55, 32: 56, 113: 57, 114: 58, 115: 59, 63: 60, 64: 61, 59: 62, 33: 63, 34: 64, 116: 65, 36: 66, 37: 67, 38: 68, 91: 69, 92: 70, 93: 71, 29: 72, 117: 73, 72: 74, 45: 75, 42: 76, 39: 77, 62: 78, 46: 79, 47: 80, 71: 81, 95: 82, 118: 83, 119: 84, 120: 85, 121: 86, 122: 87, 123: 88, 124: 89, 27: 90, 21: 91, 23: 92, 25: 93, 26: 94, 125: 95, 126: 96, 127: 97, 128: 98, 129: 99, 130: 100, 131: 101, 132: 102, 133: 103, 134: 104, 52: 105, 24: 106, 22: 107, 20: 108, 60: 109, 61: 110, 89: 111, 90: 112, 31: 113, 94: 114, 65: 115, 35: 116, 66: 117, 67: 118, 68: 119, 69: 120, 70: 121, 15: 122, 16: 123, 17: 124, 18: 125, 19: 126, 28: 127, 30: 128, 40: 129, 41: 130, 43: 131, 44: 132, 48: 133, 49: 134 }, WEBQQMSGTIPS: "\n\u3010\u63d0\u793a\uff1a\u6b64\u7528\u6237\u6b63\u5728\u4f7f\u7528WebQQ\uff1ahttp://" + alloy.CONST.DOMAIN + "/\u3011" }; this.hash = { onlineStatus: { callme: "callme", online: "online", away: "away", busy: "busy", silent: "silent", hidden: "hidden", offline: "offline" }, onlineStatusText: { callme: "Q\u6211\u5427", online: "\u5728\u7ebf", away: "\u79bb\u5f00", busy: "\u5fd9\u788c", silent: "\u9759\u97f3", hidden: "\u9690\u8eab", offline: "\u79bb\u7ebf" }, clientType: { 1: "PC", 2: "PC", 3: "PC", 4: "PC", 5: "PC", 6: "PC", 10: "PC", 21: "Phone", 22: "Phone", 23: "Phone", 24: "Phone", 41: "WebQQ", 42: "PC", 1E4: "PC" }, clientTypeText: { 1: "PC", 2: "PC", 3: "PC", 4: "PC", 5: "PC", 6: "PC", 10: "PC", 21: "\u624b\u673aQQ", 22: "\u624b\u673aQQ", 23: "\u624b\u673aQQ", 24: "\u624b\u673aQQ", 41: "WebQQ", 42: "PC", 1E4: "PC" }, userClassType: { online: "online", stranger: "stranger", blacklist: "blacklist" } }; document.domain = this.CONST.MAIN_DOMAIN; j.on(document, "keydown", function(l) { l.keyCode === 27 && l.preventDefault() }); this.init2 = function(e) { b = !1; a = {}; z = m = null; i = !1; this.panel = e.panel || {}; N = 0; S = !1; Y = 0; j.addObserver(alloy.portal, "exit", C); j.addObserver(alloy.portal, "DesktopSwitch", F); j.addObserver(EQQ, "LoginSuccess", J); j.addObserver(g, "LoginFailure", M); j.addObserver(g, "VerifyLoginProtectSuccess", x); j.addObserver(g, "exit", D.onExit); j.addObserver(g, "needLogin", D.onNeedLogin); j.addObserver(EQQ.RPCService, "NotLogin", Q); j.addObserver(EQQ.RPCService, "NotReLogin", O); j.addObserver(EQQ, "ReLinkStop", H); j.addObserver(EQQ.RPCService, "FailCountOverMax", I); j.addObserver(EQQ, "ReLinkSuccess", A); j.addObserver(EQQ, "ReLinkFailure", I); j.addObserver(EQQ, "UinNotInWhitelist", u); j.addObserver(EQQ, "UinInBlacklist", s); j.addObserver(EQQ, "Overload", K); j.addObserver(EQQ, "PtwebqqFail", G); j.addObserver(EQQ, "EQQLoginSuccess", R); j.addObserver(EQQ.RPCService, "LogoutSuccess", l); j.addObserver(EQQ.RPCService, "PollComplete", P); j.addObserver(EQQ.RPCService, "CheckProtectSuccess", w); j.addObserver(alloy.portal, "UACReady", E); g.createContainer(); EQQ.RPCService.init(); EQQ.Presenter.MainPanel.init(); try { EQQ.Presenter.ChatBox.init(), EQQ.Presenter.TaskBar.init() } catch (h) { } EQQ.Model.BuddyList.init(); EQQ.Model.ChatMsg.init(); EQQ.Presenter.MainPanel.getCookieTips(); EQQ.Presenter.MainPanel.show(); e = alloy.portal.getTryLoginState() || ""; g.login(e) }; this.loginEQQ = function() { this.showLogin() }; this.getDefaultState = function() { return EQQ.hash.onlineStatus[d.string.mapQuery(window.location.search).login_state || "offline"] }; this.getUserDefaultAvatar = function(l) { l = l || 40; return alloy.CONST.CDN_URL + "style/images/avatar_default_" + l + "_" + l + ".gif" }; this.getFaceServer = function(l) { return EQQ.CONST.AVATAR_SERVER_DOMAINS[l % 10] }; this.getUserAvatar = function(l, e, a) { e = "&vfwebqq=" + alloy.portal.getVfWebQQ(); a && (e = ""); return EQQ.getFaceServer(l) + "cgi/svr/face/getface?cache=0&type=1&fid=0&uin=" + l + e }; this.getGroupAvatar = function(l) { return EQQ.getFaceServer(l) + "cgi/svr/face/getface?cache=0&type=4&fid=0&uin=" + l + "&vfwebqq=" + alloy.portal.getVfWebQQ() }; this.getQzoneUrl = function(l) { return EQQ.CONST.QZONE_USER_SERVER_DOMAIN + l }; this.getSendMailUrl = function(l) { return "http://mail.qq.com/cgi-bin/login?Fun=clientwrite&vm=pt&email=" + l + "@qq.com" }; this.createContainer = function() { this.document = f.getDoc(); this.container = f.node("div", { id: "EQQ_Container", "class": "EQQ_Container" }); this.container.innerHTML = '\t\t\t<div id="EQQ_MsgBox" class="EQQ_msgBox">\t\t\t\t<div class="EQQ_titleInMsgBox">\t\t\t\t\t<div class="EQQ_titleTextInMsgBox">\u6d88\u606f\u76d2\u5b50</div>\t\t\t\t\t<div id="EQQ_ViewMainPanelButtonInMsgBox" class="EQQ_viewMainPanelButtonInMsgBox" title="\u70b9\u51fb\u67e5\u770b\u597d\u53cb\u5217\u8868">\u597d\u53cb\u5217\u8868</div>\t\t\t\t</div>\t\t\t\t<div id="EQQ_MessageList" class="EQQ_messageList">\t\t\t\t</div>\t\t\t\t<div id="EQQ_IgnoreAllMsgButtonInMsgBox" class="EQQ_ignoreAllMsgButtonInMsgBox" title="\u70b9\u51fb\u5ffd\u7565\u5168\u90e8\u6d88\u606f">\u5ffd\u7565\u5168\u90e8</div>\t\t\t</div>\t\t\t<div id="EQQ_LoginBox" class="EQQ_LoginBox">\t\t\t\t<div class="EQQ_LoginBox_Title">\t\t\t\t\t<div id="EQQ_LoginBox_CloseButton" class="EQQ_LoginBox_CloseButton" title="\u5173\u95ed">X</div>\t\t\t\t\t<div class="EQQ_LoginBox_TitleText">WebQQ\u767b\u5f55\u4fdd\u62a4</div>\t\t\t\t</div>\t\t\t\t<iframe id="EQQ_LoginBox_Iframe" class="EQQ_LoginBox_Iframe" src="' + alloy.CONST.MAIN_URL + 'domain.html" frameborder="no" scrolling="no"></iframe>\t\t\t</div>\t\t'; this.document.body.appendChild(this.container) }; this.getCookieSkey = function() { return d.cookie.get("skey", EQQ.CONST.MAIN_DOMAIN) }; this.getCookiePtWebQQ = function() { return d.cookie.get("ptwebqq", EQQ.CONST.MAIN_DOMAIN) }; this.getVfWebQQ = function() { return m }; this.setVfWebQQ = function(l) { m = l; alloy.portal.setVfWebQQ(l) }; this.getPsessionid = function() { return z }; this.getClientKey = function() { return q }; this.dna_result_key = ""; this.login = function(l) { EQQ.Presenter.MainPanel.showLogin(); this.loginStart = (new Date).getTime(); l = { status: l || "online", ptwebqq: alloy.portal.getPtwebqq(), passwd_sig: this.dna_result_key }; EQQ.RPCService.sendLogin(l) }; var B = function() { var l = alloy.config.configList.chatboxMode, e = alloy.config.configList.isNotNeedCtrlKey; EQQ.initChatboxMode(l); EQQ.initSendMsgKey(e); alloy.portal.getLoginLevel() > 2 && j.notifyObservers(EQQ, "eqqUacChange", { chatboxMode: l, isNotNeedCtrlKey: e }) }, E = function() { B() }, w = function(l) { l.type == "nop" && EQQ.Presenter.MainPanel.toggleShow() }, x = function(l) { if (l) g.dna_result_key = l, EQQ.Presenter.MainPanel.toggleShow() }, C = function() { EQQ && EQQ.executeExit() }, F = function(l) { j.notifyObservers(EQQ, "DesktopSwitch", l) }; this.executeExit = function() { try { EQQ.View.ChatBox.onExitHotkey() } catch (l) { } d.cookie.remove("ptwebqq", alloy.CONST.MAIN_DOMAIN); j.notifyObservers(EQQ, "CloseWebQQ"); j.removeObserver(alloy.portal, "DesktopSwitch", F); j.removeObserver(alloy.portal, "UACReady", E); r = {}; j.removeObserver(alloy.messageCenter, "MessageHandled", h); alloy.messageCenter.removeNotificationsBySource(50); EQQ.stopPoll(); EQQ.logout(); alloy.portal.removeExitConfirm() }; this.logout = function() { d.out("EQQLOGOUT", null, 2); EQQ.setIsLogin(!1); EQQ.RPCService.sendLogout() }; this.reLogin = function(l) { var e = EQQ.Model.BuddyList.getSelf(), a = "offline", h = "online"; if (e) a = e.state, h = e.oldState || "online"; a == "offline" && (a = h == "offline" ? "online" : h); this.login(l || a) }; var u = function() { window.location = alloy.CONST.MAIN_URL + "overload.html" }, s = function() { }, K = function() { window.location = alloy.CONST.MAIN_URL + "overload.html" }, G = function() { d.out("onPtwebqqFail"); M({ text: "\u767b\u5f55\u5931\u8d25" }); alloy.layout.showLoginWindow("eqq", !0, null, "\u9a8c\u8bc1\u4fe1\u606f\u8fc7\u671f\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\uff01") }, e = function() { var l = { status: EQQ.Model.BuddyList.getSelf().state, ptwebqq: alloy.portal.getPtwebqq(), passwd_sig: g.dna_result_key }; try { d.cookie.set("uin", alloy.portal.getOriginalUin(), alloy.CONST.MAIN_DOMAIN), d.cookie.set("skey", alloy.portal.getSkey(), alloy.CONST.MAIN_DOMAIN), d.cookie.set("ptwebqq", alloy.portal.getPtwebqq(), alloy.CONST.MAIN_DOMAIN) } catch (e) { } EQQ.RPCService.sendReLink(l) }, n = g.showEQQtips = function(l) { if (!g.eqqTips) { var e = g.eqqTips = new d.ui.Bubble({ closeOnHide: !0 }); e.setTitle(l.title); e.setContent(l.content); e.showButton("ok", "\u767b\u5f55", !0); e.showButton("next", "\u53d6\u6d88"); j.addObserver(e, "onBubbleOkBtnClick", function() { l.callback && l.callback(); g.eqqTips = null }); j.addObserver(e, "onBubbleClose", function() { g.eqqTips = null }); j.addObserver(e, "onBubbleNextBtnClick", function() { y(); l.cancle && l.cancle() }); e.show({ pointerPosition: "bottom right", pointerOffset: 15, pointerSize: [18, 12], target: alloy.taskBar.quickPanel.getQuickButton(50).getElement() }) } }, y = g.hideEQQtips = function() { if (g.eqqTips) g.eqqTips.close(), g.eqqTips = null }, A = function(l) { p = 0; g.setVfWebQQ(l.vfwebqq); z = l.psessionid; y(); this.startPoll(); B(); l = EQQ.Model.BuddyList.getSelf().state; j.notifyObservers(EQQ.Model.BuddyList, "SelfStateChange", l) }, H = function() { g.stopPoll(); y(); j.notifyObservers(g, "SelfOffline", { message: "\u8eab\u4efd\u9a8c\u8bc1\u5931\u6548\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55", action: "relogin" }) }, I = function(l) { g.stopPoll(); d.out("reLinkRetryCount: " + p); p >= 2 && (n({ title: "\u8fde\u63a5\u4e2d\u65ad", content: "\u56e0\u7f51\u7edc\u6216\u5176\u4ed6\u539f\u56e0\u4e0e\u670d\u52a1\u5668\u5931\u53bb\u8054\u7cfb\uff0c\u6b63\u5728\u5c1d\u8bd5\u91cd\u65b0\u767b\u5f55...", callback: function() { c && clearTimeout(c); e() }, cancle: function() { c && clearTimeout(c); EQQ.View.MainPanel.setSelfState("offline") } }), j.notifyObservers(EQQ.Model.BuddyList, "SelfStateChange", "offline")); l && l.hasOwnProperty("t") ? c = setTimeout(function() { e() }, (parseInt(l.t) || 0) * 1E3) : l || (c = setTimeout(function() { e() }, 1E4)); p++ }, Q = function() { j.notifyObservers(g, "SelfOffline", { message: "\u4f60\u7684\u767b\u5f55\u5df2\u5931\u6548\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002", action: "relogin" }) }, O = function() { j.notifyObservers(g, "SelfOffline", { message: "\u56e0\u7f51\u7edc\u6216\u5176\u4ed6\u539f\u56e0\u4e0e\u670d\u52a1\u5668\u5931\u53bb\u8054\u7cfb\uff0c\u8bf7\u91cd\u65b0\u767b\u5f55\u3002", action: "relogin" }) }, l = function() { j.notifyObservers(EQQ, "exitSuccess") }, P = function() { EQQ.getIsLogin() && typeof EQQ !== "undefined" && EQQ.keepPoll() }, R = function() { var l = alloy.app.eqq.getRunOption(); if (l && l.directChat) { var e = l.directChatType, a = l.directChat; setTimeout(function() { EQQ.handleNotification(a, e) || WebqCore.api.call(["chat", [e, a]]) }, 500); delete l.directChat; delete l.directChatType } }, J = function(l) { d.out("\u767b\u5f55\u7b2c\u4e00\u6b65\u6210\u529f"); p = 0; g.setVfWebQQ(l.vfwebqq); z = l.psessionid; q = l.clientkey; EQQ.setIsLogin(!0); j.notifyObservers(alloy.portal, "GetLoginInfoSuccess"); g.start(l); B(); y(); d.debug(">>>EQQ.js - onLoginSuccess") }; this.start = function() { this.mode = "master"; d.out("start: " + EQQ); EQQ.Global.initGlobal(); EQQ.Model.BuddyList.reset(); EQQ.Presenter.MainPanel.View.showPullData(); alloy.util.report2h("eqqGetData", "start"); alloy.portal.speedTest.sRTS(14, "start", new Date); alloy.portal.speedTest.sRTS(15, "start", new Date); EQQ.Extend.require([EQQ.Model.BuddyList.sendGetBuddyList({ h: "hello" }), EQQ.Model.BuddyList.sendGetGroupList()], function() { hasGetRecentList = !1; WebqCore.api.ifDataReady.set(!0); r = {}; j.addObserver(EQQ, "MessageReceive", T); j.addObserver(alloy.messageCenter, "MessageHandled", h); EQQ.startPoll(); EQQ.Model.BuddyList.sendGetDiscuList(function() { j.notifyObservers(alloy.portal, "BeforeGetRecentList"); EQQ.Model.BuddyList.sendGetRecentList({})() }); alloy.rpcService.sendGetSignature(alloy.portal.getUin()); alloy.portal.setLoginLevel(alloy.CONST.LOGIN_LEVEL_ALL); setTimeout(function() { WebqCore.api.makeCall() }, 13); alloy.util.report2h("eqqGetData", "end_eqqGetData", "ok"); alloy.portal.speedTest.sRTS(11, "end", new Date, !0); j.notifyObservers(EQQ, "EQQLoginSuccess"); j.notifyObservers(alloy.portal, "EQQLoginSuccess"); setTimeout(function() { WebqCore.api.call(["chat", []]) }, 12E4) }); if (!b) b = !0, this.timer = window.setInterval(U, 6E4) }; this.handleNotification = function(l, e) { var a = l + e; return (a = r[a] && r[a].msgId || 0) ? alloy.messageCenter.handleNotification(a) : !1 }; var T = function(l) { var e, a = l.uin || l.gid || l.did, h; for (h in l.msgList) { e = l.msgList[h]; if (!a) a = e.from_uin; var P = a + e.type, f = !1; /(single)|(group)|(discu)/.test(e.type) && (f = !0, r[P] || (r[P] = { count: 1 })); var c = a, n = void 0, b = void 0, b = { uin: c, title: c, content: "", count: 1, t: new Date, type: e.type, time: e.time || d.date.format(new Date, "YYYY-MM-DD hh:mm:ss"), extra: null }, w = alloy.config.configList.notifySetting || alloy.notifier.ENABLE_FLAGS.ENABLE_ALL, g = alloy.notifier.translateFlag(["badge", "msg", "sound"]); g &= w; n = { from: 50, to: g, type: "Unkown", body: b }; switch (e.type) { case "single": var x = WebqCore.api.__api.getChatBox(c); if (x) g = alloy.notifier.translateFlag(["sound", "title", "marquee"]), n.to = g & w; n.type = "SingleChat"; b.title = e.sender ? e.sender.htmlShowName || c : c; b.content = EQQ.util.trimChatMsg(e); b.extra = { isChatBoxOpen: x }; break; case "group": x = WebqCore.api.__api.getChatBox(c); g = EQQ.Model.BuddyList.isGroupPrompt(c); if (x) if (g) g = alloy.notifier.translateFlag(["title", "marquee", "sound"]), n.to = g & w; else { n = null; break } else if (!g) { n = null; break } n.type = "GroupChat"; w = EQQ.Model.BuddyList.getGroupByGid(c); b.code = w.code; b.title = w ? w.htmlShowName || c : c; b.content = EQQ.util.trimChatMsg(e); b.extra = { isChatBoxOpen: x }; break; case "discu": x = WebqCore.api.__api.getChatBox(c); g = EQQ.Model.BuddyList.isDiscuPrompt(c); if (x) if (g) g = alloy.notifier.translateFlag(["title", "marquee", "sound"]), n.to = g & w; else { n = null; break } else if (!g) { n = null; break } n.type = "DiscuChat"; w = EQQ.Model.BuddyList.getDiscuById(c); b.title = w ? w.htmlName || c : c; b.content = EQQ.util.trimChatMsg(e); b.extra = { isChatBoxOpen: x }; break; case "add_buddy": n.type = "BuddyAdd"; b.content = e.content; b.title = e.title; b.extra = e.opt; break; case "join_group": n.type = "GroupJoin"; b.content = e.content; b.title = e.title; b.extra = e.opt; break; default: n = null } if (e = n) { if (f) e.body.count = r[P].count++; e = alloy.messageCenter.notify(e); if (f) r[P].msgId = e } else f && (r[P] = null) } }, h = function(l) { var e = l.body; r[e.uin + e.type] = null; switch (l.type) { case "SingleChat": WebqCore.api.call(["chat", ["single", e.uin]]); break; case "GroupChat": d.profile("EQQ.onNotifyHasHandled - group.code: " + e.code); WebqCore.api.call(["chat", ["group", e.code]]); break; case "DiscuChat": d.profile("EQQ.onNotifyHasHandled - group.code: " + e.uin); WebqCore.api.call(["chat", ["discu", e.uin]]); break; case "BuddyAdd": alloy.portal.runApp("buddyAdder", e.extra); break; case "GroupJoin": alloy.portal.runApp("groupSystemMsg", e.extra) } }, M = function(l) { EQQ.setIsLogin(!1); d.out("\u5bf9\u4e0d\u8d77\uff0c\u767b\u5f55\u5931\u8d25\uff01"); alloy.portal.setLoginLevel(alloy.CONST.LOGIN_LEVEL_NOCHAT); EQQ.Presenter.MainPanel.showReLoginPanel(l.text) }, L = 0, U = function() { L > 240 && (L = 0); j.notifyObservers(EQQ, "NotifyBeat_1"); L % 2 == 0 && j.notifyObservers(EQQ, "NotifyBeat_2"); L % 5 == 0 && (j.notifyObservers(EQQ, "NotifyBeat_5"), L % 10 == 0 && (j.notifyObservers(EQQ, "NotifyBeat_10"), L % 30 == 0 && (j.notifyObservers(EQQ, "NotifyBeat_30"), L % 60 == 0 && (j.notifyObservers(EQQ, "NotifyBeat_60"), L % 120 == 0 && (j.notifyObservers(EQQ, "NotifyBeat_120"), L % 240 == 0 && j.notifyObservers(EQQ, "NotifyBeat_240")))))); L++ }, V, N = 0, S = !1, Y = 0; this.startBeat2 = function() { S = !0; N = 0; V = window.setInterval(ja, 250); d.out(">>>>>>>>>: startBeat2") }; this.stopBeat = function() { this.stopBeat2(); window.clearInterval(this.timer); this.timer = null }; this.stopBeat2 = function() { S = !1; window.clearInterval(V); N = 0; V = null; d.out(">>>>>>>>>: stopBeat2") }; this.isStartBeat2 = function() { return S }; this.addNeedBeat2 = function(l) { a[l] || (a[l] = !0, Y++); EQQ.isStartBeat2() || EQQ.startBeat2() }; this.removeNeedBeat2 = function(l) { a[l] && (Y > 0 && Y--, delete a[l]); Y === 0 && EQQ.stopBeat2() }; var ja = function() { N > 5E3 && (N = 0); j.notifyObservers(EQQ, "NotifyBeat_250"); N % 2 == 0 && (j.notifyObservers(EQQ, "NotifyBeat_500"), N % 6 == 0 && j.notifyObservers(EQQ, "NotifyBeat_1000"), N % 10 == 0 && (j.notifyObservers(EQQ, "NotifyBeat_3000"), N % 20 == 0 && j.notifyObservers(EQQ, "NotifyBeat_5000"))); N++ }; this.startPoll = function() { this.setNeedPollFlag(!0); this.keepPoll(); EQQ.RPCService.pollWatcher.startWatch() }; this.keepPoll = function() { this.getNeedPollFlag() && EQQ.RPCService.sendPoll() }; this.setNeedPollFlag = function(l) { return i = l }; this.getNeedPollFlag = function() { return i }; this.stopPoll = function() { this.setNeedPollFlag(!1); EQQ.RPCService.pollWatcher.stopWatch() }; this.setIsLogin = function(l) { o = l }; this.getIsLogin = function() { return o }; this.getChatboxMode = function() { return g.chatboxMode ? g.chatboxMode : "free" }; this.getSendMsgKey = function() { return g.isNotNeedCtrlKey }; this.setSendMsgKey = function(l) { g.isNotNeedCtrlKey = l; alloy.rpcService.sendSetConfig({ context: this, data: { retype: 1, r: { appid: qqweb.config.__eqqid, value: { isNotNeedCtrlKey: l } } } }); alloy.hotkeyManager.setSendHotKey(l) }; this.initSendMsgKey = function(l) { g.isNotNeedCtrlKey = l }; this.initChatboxMode = function(l) { g.chatboxMode = l }; this.setChatboxMode = function(l) { g.chatboxMode = l; alloy.rpcService.sendSetConfig({ context: this, data: { retype: 1, r: { appid: qqweb.config.__eqqid, value: { chatboxMode: l } } } }) }; this.getLoadLoginScript = function() { return this.isLoadEqqScript }; this.setLoadLoginScript = function(l) { this.isLoadEqqScript = l }; this.videoNotify = function(l) { d.profile("videoNotify", "video"); var e = l.type, a = l.uin; if (e && a) switch (e) { case "msg": EQQ.Presenter.ChatBox.appendVideoMsg(l.uin, l.context); break; case "setVideoId": d.profile("setVideoId" + l.context, "video"); EQQ.Presenter.ChatBox.setVideoId(a, l.context); break; case "pop": EQQ.Presenter.ChatBox.popVideoWindow(a); break; case "inner": EQQ.Presenter.ChatBox.innerVideoWindow(a); break; case "close": l.context && EQQ.Presenter.ChatBox.appendVideoMsg(l.uin, l.context), EQQ.Presenter.ChatBox.closeVideo(l.uin) } }; this.sendMsg = function(l, e) { EQQ.Model.ChatMsg.sendMsg({ type: "single", to: l, content: [e], isIgnoreHistory: !0 }) } }) })(); (function() { WebqCore.register("EQQ.util", function(d) { var g = d.dom, f = d.string, j = {}, t = 1, b = function(b, g) { var o = null; if (b.from_uin && b.msg_id && b.raw_time && (o = String(b.from_uin) + String(b.msg_id) + String(b.raw_time), j[o])) return j[o]; var i = ""; if (g) for (var r = 0; r < b.content.length; r++) { var k = b.content[r]; if (k[0] === "face") i += a(k[1]); else if (k[0] === "cface") i += b.type == "group" || b.type == "discu" ? p(k[2]) : p(k[1]); else if (k[0] === "cface_idx") i += b.type == "group" || b.type == "discu" ? p(k[2]) : p(k[1]); else if (k[0] !== "pic_id" && k[0] !== "image") if (k[0] === "offpic") { var D = EQQ.Model.ChatMsg.getSendPicUrlByFilePath(k[1]); D != "" && (i += '<img src="' + D + '" id="cface_' + t++ + '" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5" />') } else k[0] === "rffile" ? i += '<div class="msgFileBox">\u60a8\u62d2\u7edd\u63a5\u6536"' + f.encodeHtmlSimple(k[1]) + '",\u6587\u4ef6\u4f20\u8f93\u5931\u8d25.</div>' : k[0] === "agfile" ? i += '<div class="msgFileBox">\u60a8\u540c\u610f\u4e86\u63a5\u6536\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '".</div>' : k[0] === "sendfile" ? i += '<div class="msgFileBox">\u60a8\u53d1\u9001\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '"\u7ed9\u5bf9\u65b9.</div>' : k[0] === "transtimeout" ? i += '<div class="msgFileBox">\u63a5\u6536\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '"\u8d85\u65f6,\u6587\u4ef6\u4f20\u8f93\u5931\u8d25.</div>' : k[0] === "refusedbyclient" ? i += '<div class="msgFileBox">\u5bf9\u65b9\u53d6\u6d88\u4e86\u63a5\u6536\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '",\u6587\u4ef6\u4f20\u8f93\u5931\u8d25.</div>' : k[0] === "transok" ? i += '<div class="msgFileBox">\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '"\u4f20\u8f93\u6210\u529f.</div>' : k[0] === "transerror" ? i += '<div class="msgFileBox">\u5bf9\u65b9\u53d6\u6d88\u4e86\u63a5\u6536\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '"\u6216\u4f20\u8f93\u9519\u8bef,\u6587\u4ef6\u4f20\u8f93\u5931\u8d25.</div>' : d.isArray(k) || (i += m(f.encodeHtmlSimple(m(k, 1)), 2)) } else { var r = b.sender_uin || b.from_uin, D = b.from_uin || 0, B = [], E, w, x; for (x = b.content[0][0] !== "font" ? 0 : 1; x < b.content.length; x++) if (k = b.content[x], d.isString(k) && k.substr(0, 4) === "\u3000 \u3000") b.content[0] = [], k = "", d.platform.iPad && (k = "\u4f46\u60a8\u4f7f\u7528\u7684\u8bbe\u5907\u4e0d\u652f\u6301\u89c6\u9891\u901a\u8bdd\u529f\u80fd\u3002"), i += '<div class="msgFileBox">\u5bf9\u65b9\u5411\u60a8\u53d1\u8d77\u89c6\u9891\u9080\u8bf7\u3002' + k + "</div>"; else if (k[0] === "video") i += '<div class="msgFileBox">' + k[1] + "</div>"; else if (k[0] === "face") i += a(k[1]); else if (k[0] === "cface") if (B.push(k), b.type == "group" || b.type == "discu") { var C = b.group_code || EQQ.Model.BuddyList.decodeDid(b.did), k = k[1], F = b.sender_uin, u = b.raw_time, s = b.group_code ? 0 : 1, K = k.server.toString().split(":"), k = '<img src="' + EQQ.CONST.CHAT_PIC_SERVER + "cgi-bin/get_group_pic?type=" + s + "&gid=" + C + "&uin=" + F + "&rip=" + K[0] + "&rport=" + K[1] + "&fid=" + k.file_id + "&pic=" + k.name + "&vfwebqq=" + alloy.portal.getVfWebQQ() + "&t=" + u + '" id="_cface_' + t++ + '" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5" />'; i += k } else i += c(b.msg_id, k[1], r), alloy.util.report2m(133157), alloy.util.report2m(133158); else if (k[0] === "cface_idx") b.type == "group" || b.type == "discu" ? (C = b.group_code || EQQ.Model.BuddyList.decodeDid(b.did), k = B[k[1]][1], F = Math.round((new Date).getTime() / 1E3), k = '<img src="' + EQQ.CONST.AVATAR_SERVER_DOMAIN + "cgi/svr/chatimg/get?pic=" + k.name + "&gid=" + C + "&time=" + F + '" id="_cface_' + t++ + '" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5" />', i += k) : i += c(b.msg_id, B[k[1]][1], r); else if (k[0] === "pic_id") C = EQQ.Model.BuddyList.getUserByUin(r), !C.type || C.type == "groupBuddy" ? w = !0 : E = k[1]; else if (k[0] === "image") w ? i += "\u3010\u56fe\u7247\u3011\uff08\u5bf9\u65b9\u53d1\u9001\u4e86\u4e00\u5f20\u56fe\u7247\uff0cWebQQ\u4e34\u65f6\u4f1a\u8bdd\u6682\u4e0d\u652f\u6301\u63a5\u6536\uff09" : (i += '<img rdata="image" src="' + EQQ.CONST.CONN_SERVER_DOMAIN + "channel/get_image2?lcid=" + b.msg_id + "&guid={" + E + "}" + k[2] + "." + k[1] + "&to=" + r + "&count=1&time=1&psessionid=" + EQQ.getPsessionid() + "&clientid=" + EQQ.Model.ChatMsg.getClientidFromRpc() + '" id="_cface_' + t++ + '" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5" />', alloy.util.report2m(133153), alloy.util.report2m(133154)); else if (k[0] === "offpic") i += k[1].success == 1 ? '<img rdata="offpic" src="' + EQQ.CONST.CONN_SERVER_DOMAIN + "channel/get_offpic2?file_path=" + k[1].file_path + "&f_uin=" + D + "&clientid=" + EQQ.Model.ChatMsg.getClientidFromRpc() + "&psessionid=" + EQQ.getPsessionid() + '" id="_cface_' + t++ + '" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5" />' : '<img src="style/images/img_error.gif" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5\u63a5\u6536\u9519\u8bef\u6216\u4e0d\u5b58\u5728" />', alloy.util.report2m(133167); else if (k[0] === "rfile") { C = b.from_uin + "_" + k[2]; F = EQQ.Model.ChatMsg.getFilesList(); i += '<div class="msgFileBox">\u5bf9\u65b9\u7ed9\u60a8\u53d1\u9001\u6587\u4ef6:<br />'; u = k[1]; if (typeof u == "undefined" || u == "") u = void 0; else switch (u = u.split("."), u = u[u.length - 1].toLowerCase(), u) { case "excel": case "xls": case "xlsx": u = "excel"; break; case "doc": case "docx": u = "word"; break; case "ppt": case "pptx": u = "ppt"; break; case "bmp": case "png": case "gif": case "jpeg": case "jpg": case "ico": u = "pic"; break; case "tga": case "tif": case "psd": case "tiff": u = "pic"; break; case "mov": case "avi": case "mpeg": case "mpg": case "ra": case "rm": case "rmvb": case "qt": case "asf": case "wmv": case "swf": case "flv": case "mp4": u = "media"; break; case "mp3": case "wav": case "mid": u = "music"; break; case "arj": case "rar": case "zip": case "jar": case "7z": case "tar": case "uc2": case "gz": case "lha": case "ace": case "tgz": u = "rar-zip"; break; case "txt": case "text": u = "share-txt"; break; case "pdf": u = "pdf16"; break; case "com": u = "exe16"; break; default: u = "others" } i += '<span class="icon_' + u + '"> </span>' + f.encodeHtmlSimple(k[1]); i += '<span class="fileAct">'; F[C].isread ? i += " [\u540c\u610f][\u62d2\u7edd]" : (i += ' <a id="agree_' + C + '" href="#">[\u540c\u610f]</a>', i += ' <a id="refuse_' + C + '" href="#">[\u62d2\u7edd]</a>'); i += "</span>"; i += "</div>" } else k[0] === "rffile" ? i += '<div class="msgFileBox">\u5bf9\u65b9\u53d6\u6d88\u4e86\u63a5\u6536\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '",\u6587\u4ef6\u4f20\u8f93\u5931\u8d25.</div>' : k[0] === "rtfile" ? i += '<div class="msgFileBox">\u63a5\u6536\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '"\u8d85\u65f6,\u6587\u4ef6\u4f20\u8f93\u5931\u8d25.</div>' : k[0] === "wrfile" ? i += '<div class="msgFileBox">\u5bf9\u65b9\u5df2\u540c\u610f\u63a5\u6536"' + f.encodeHtmlSimple(k[1]) + '",\u5f00\u59cb\u4f20\u8f93\u6587\u4ef6.</div>' : k[0] === "wrffile" ? i += '<div class="msgFileBox">\u5bf9\u65b9\u62d2\u7edd\u4e86\u63a5\u6536\u6587\u4ef6"' + f.encodeHtmlSimple(k[1]) + '",\u6587\u4ef6\u4f20\u8f93\u5931\u8d25.</div>' : k[0] === "cvideo" ? (i += f.encodeHtmlSimple(k[1]), i += ' <a id="video_' + b.attach.from_uin + "_" + b.attach.msg_id + '" fromuin="' + b.attach.from_uin + '" href="###">\u53d1\u8d77\u89c6\u9891</a>') : i += k[0] === "video" ? f.encodeHtmlSimple(k[1]) : m(f.encodeHtmlSimple(m(k, 1)), 2) } i = i.replace(/\r\n|\r|\n/ig, "<br />"); o && (j[o] = i); return i }, a = function(a) { return '<img class="EQQ_faceImg" src="' + EQQ.CONST.SYSTEM_FACE_URL + EQQ.CONST.T_TRANSFER_TABLE[a] + '.gif" />' }, c = function(a, d, b, c) { return '<img rdata="cface" src="' + EQQ.CONST.CONN_SERVER_DOMAIN + "channel/get_cface2?lcid=" + a + "&guid=" + d + "&to=" + b + "&count=" + (c || 5) + "&time=1&clientid=" + EQQ.RPCService.getClientId() + "&psessionid=" + EQQ.getPsessionid() + '" id="_cface_' + t++ + '" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5" />' }, p = function(a) { return '<img src="' + EQQ.CONST.CONN_SERVER_DOMAIN2 + "cgi-bin/webqq_app/?cmd=2&bd=" + a + '" id="_cface_' + t++ + '" title="\u56fe\u7247\u6216\u81ea\u5b9a\u4e49\u8868\u60c5" />' }, m = function(a, d) { if (d === 2) var b = /\[url\][\s\S]+?\[(\/|/)url\]/g, a = a.replace(b, function(a) { a = a.replace(/(\[url\]|\[(\/|/)url\])/g, ""); return '<a href="' + a.replace(/^www\./, function(a) { return "http://" + a }) + '" class="chatLink" target="_blank"><span class="msgLink">' + a + "</span></a>" }); else b = /((([a-zA-Z0-9]{3,10})?:\/\/)|(www\.)){1}[\w\.\/\?=%&@:#;\*\$\[\]\(\){}'"\-]+([0-9a-zA-Z\/#])+?/g, a = a.replace(b, function(a) { return "[url]" + a + "[/url]" }); return a }; this.transUrl = m; this.translateFontStyle = function(a) { if (a[0] === "font") { var b = a[1].style, c = d.string.encodeHtmlAttributeSimple(a[1].name + ""), c = (c = c.match(/\u5b8b\u4f53|\u9ed1\u4f53|\u96b6\u4e66|\u5fae\u8f6f\u96c5\u9ed1|\u6977\u4f53_GB2312|\u5e7c\u5706|Arial Black|Arial|Verdana|Times New Roman/)) ? c[0] : "\u5b8b\u4f53", f = a[1].color.match(/([0-9a-f]{6})/), f = f ? f[0] : "000"; return "color:#" + f + ";font-family:" + c + ";font-size:" + Number(a[1].size) + "pt;font-weight:" + (b[0] ? "bold" : "normal") + ";font-style:" + (b[1] ? "italic" : "normal") + ";text-decoration:" + (b[2] ? "underline" : "none") + ";" } else return "" }; this.translateChatMsg = b; this.trimChatMsg = function(a) { var a = b(a), a = a.replace(/^(<br \/>| )+/ig, ""), a = a.replace(/(<a([^>]+)>|<\/a>)/ig, ""), a = a.replace(/<div class="msgFileBox">([\s\S]+?)<\/div>/ig, function(a) { a = a.replace(/(<span([\s\S]+?)<\/span>)+?/ig, ""); a = a.replace(/(:<br \/>)+?/ig, ":"); return a.replace(/(<div([^>]+?)>|<\/div>)+/ig, "") }), d = a.indexOf("<br />"); d != -1 && (a = a.substr(0, d)); a = a.replace(/( )+$/ig, ""); return a = a.replace(/<img.*?\/?>/ig, function(a) { return /class="EQQ_faceImg"/.test(a) ? a : '<img src="' + alloy.CONST.CDN_URL + 'style/images/image_icon.png?t=1" />' }) }; this.transResendMsg = function(a) { for (var a = d.json.parse(a.content), b = "", c = 0; c < a.length; c++) { var g = a[c]; if (d.isArray(g)) if (g[0] == "face") b += "[\u56fe\u7247]"; else { if (g[0] == "cface" || g[0] == "offpic") b += "[\u56fe\u7247]" } else g == "\n" || g == " " || (b += g) } b = b.replace(EQQ.CONST.WEBQQMSGTIPS, ""); b.length > 20 && (b = f.cutByBytes(b.toString(), 20) + "..."); return f.encodeHtmlSimple(b) }; this.Marquee = new d.Class({ init: function(a) { var b = this; this.speed = a.speed || 40; this.stopTime = a.stopTime || 3E3; this.lineHeight = a.lineHeight || 20; this.target = a.target; this.intervaler = this.lineTimer = this.timer = null; this.scrollHeight = this.lineHeight; this.isStop = !1; this._onTimeRun = function() { b.scrollOneLine() } }, scrollOneLine: function() { if (this.scrollHeight > 0) { this.scrollHeight--; var a = this.target.style.top.match(/-?\d+/), a = !a ? 0 : parseInt(a[0]); this.target.style.top = --a + "px"; this.lineTimer = setTimeout(this._onTimeRun, this.speed) } else this.isStop || this.update() }, stop: function() { this.timer && clearTimeout(this.timer) }, stopAll: function() { this.stop(); this.lineTimer && clearTimeout(this.lineTimer) }, reset: function() { this.target.style.top = "0px" }, update: function() { if (!this.isStop) { this.timer && clearTimeout(this.timer); this.scrollHeight = this.lineHeight; var a = this.target.style.top.match(/\d+/), b = g.getScrollHeight(this.target); if (a && b && (a = parseInt(a[0]), a >= b)) { this.target.style.top = this.lineHeight + "px"; this.scrollOneLine(); return } this.timer = setTimeout(this._onTimeRun, this.stopTime) } }, walkOnLastLine: function() { this._onTimeRun() } }) }) })(); (function() { WebqCore.register("EQQ.RPCService", function(d) { function g() { var a = this; this.pollRequst = void 0; this.POLLTICK = 0; this._check = function() { a.check() } } var f = this, j = this, t = d.dom, b = d.event; (new Date).getTime(); var a = 0, c = String(d.random(0, 99)) + String((new Date).getTime() % 1E6), p = 0, m = !1, z = 0, q = EQQ.CONST.CONN_SERVER_DOMAINS[0], o, i = function() { return function(a, b) { try { if (arguments.length == 2) return !b || arguments.callee(a); else { var d = alloy.portal.getUin(); if (a.status) var c = [d, a.status, a.responseText.replace(/[\r\t\n\s]/g, "") + ":", decodeURIComponent(a.data), a.uri].join("{1}quot;); else a = a.o, c = [d, a.status, a.responseText.replace(/[\r\t\n\s]/g, "") + ":", decodeURIComponent(a.data), a.uri].join("{1}quot;); alloy.rpcService.formSend("http://tj.qstatic.com/log", { method: "POST", data: { r: c.replace(/,"/g, ":").replace(/[{"}]/g, "") } }) } } catch (f) { } } }, i = i(), r = function() { a++; d.out("onFail: " + a); a > 4 && (a = 0, b.notifyObservers(f, "FailCountOverMax")) }, k = !1, D = [], B; this.onAjaxFrameLoad = function() { d.out(B.readyState, null, 1); if (o = window.frames.EQQ_ProxySendIframe.ajax) { m = !1; for (var a = 0; a < D.length; ++a) { var b = 0 % EQQ.CONST.CONN_PROXY_URLS.length, c = D[a].url; if (c.indexOf(EQQ.CONST.CONN_SERVER_DOMAINS[b]) == -1) c = c.replace(/http:\/\/.*.com\//, ""), D[a].url = EQQ.CONST.CONN_SERVER_DOMAINS[b] + c; c = D[a].url; b = D[a].option; try { return E(c, b) } catch (f) { d.out("eqq ajax\u4ee3\u7406\u51fa\u9519\uff1a" + c + " " + EQQ.CONST.CONN_PROXY_URL); if (!b.onError) break; c = {}; c.arguments = b.arguments || {}; b.onError.call(b.context, c) } } } else a = EQQ.CONST.CONN_PROXY_URLS[0], a += (/\?/.test(a) ? "&" : "?") + "callback=2", B.setAttribute("src", a) }; var E = function(a, b) { b = b || {}; b.cacheTime = b.cacheTime || 0; b.onSuccess = b.onSuccess || function() { }; b.onError = b.onError || function() { }; b.onTimeout = b.onTimeout || function() { }; b.onComplete = b.onComplete || function() { }; var f = { method: b.method || "GET", enctype: b.enctype || "", data: b.data || {}, arguments: b.arguments || {}, context: b.context || null, timeout: b.timeout, onSuccess: function(a) { var c = {}, f = !1; a.responseText = a.responseText || "-"; try { c = d.json.parse(a.responseText) } catch (e) { a.responseText += ":BJF:", f = !0, d.out("JSON\u683c\u5f0f\u51fa\u9519:" + e) } finally { c.arguments = b.arguments || {}, c.o = a, b.onSuccess.call(b.context, c, f) } }, onError: function(a) { b.onError.call(b.context, a) }, onTimeout: function() { var a = {}; a.arguments = b.arguments || {}; b.onTimeout.call(b.context, a) }, onComplete: function() { var a = {}; a.arguments = b.arguments || {}; b.onComplete.call(b.context, a) } }; f.data.clientid = c; f.data.psessionid = EQQ.getPsessionid(); if (m) f.onError(); else { alloy.portal.recoverCookie(); f.data = d.string.toQueryString(f.data); if (f.method == "GET") { var g = f.data; b.cacheTime === 0 && (g += g ? "&t=" + (new Date).getTime() : "t=" + (new Date).getTime()); if (g) { var k = alloy.portal.getVfWebQQ(); k && !/channel/ig.test(a) && (g += "&vfwebqq=" + k); a = a + "?" + g } f.data = null } else f.contentType = "application/x-www-form-urlencoded", a.indexOf("?"); return o(a, f) } }; this._proxy = o; g.prototype = { pollStop: function() { d.out("a poll Over..."); this.pollRequst = null; this.POLLTICK = 0; this.timer = null }, check: function() { d.out("check..."); this.pollRequst == null && (d.out("Oooops, somethingWrong..."), this.POLLTICK++, this.POLLTICK == 1 && setTimeout(this._check, 5E3)); if (this.POLLTICK == 2) d.out("Oooops, send..."), alloy.rpcService.formSend("http://tj.qstatic.com/log", { method: "POST", data: { j: "unwanted-poll-stop" } }), this.POLLTICK = 0 }, startWatch: function() { d.out("start..."); try { b.addObserver(EQQ, "NotifyBeat_2", this._check) } catch (a) { } this.POLLTICK = 0 }, stopWatch: function() { d.out("stop..."); try { b.removeObserver(EQQ, "NotifyBeat_2", this._check) } catch (a) { } this.POLLTICK = 0 } }; this.pollWatcher = new g; this.init = function() { }; this.getClientId = function() { return c }; this.send = function(a, b) { if (o) return E(a, b); else if (D.push({ url: a, option: b }), !k) { k = !0; var d = document.body, c = t.node("div"); c.innerHTML = '<iframe id="EQQ_ProxySendIframe" class="hiddenIframe" name="EQQ_ProxySendIframe" width="1" height="1" src="' + alloy.CONST.MAIN_URL + 'domain.html"></iframe>'; d.appendChild(c); B = t.id("EQQ_ProxySendIframe"); d = EQQ.CONST.CONN_PROXY_URLS[0]; d += (/\?/.test(d) ? "&" : "?") + "callback=2"; B.setAttribute("src", d) } }; this.sendLogin = function(a) { if (window.webTop) a.v = Number(webTop.version) + 1E4; a.clientid = c; a.psessionid = EQQ.getPsessionid(); this.send(q + "channel/login2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: this.sendLoginSuccess, onError: this.sendLoginError, onTimeout: this.sendLoginTimeout }); alloy.util.report2h("eqqLoginCgi", "start"); alloy.portal.speedTest.sRTS(16, "start", new Date) }; this.sendLoginSuccess = function(a, c) { switch (a.retcode) { case 0: z = 1; b.notifyObservers(EQQ, "LoginSuccess", a.result); alloy.portal.speedTest.sRTS(4, "start", new Date); alloy.portal.speedTest.sRTS(5, "start", new Date); break; case 103: b.notifyObservers(this, "NotLogin", a.result); break; case 106: b.notifyObservers(EQQ, "UinNotInWhitelist", a.result); break; case 111: b.notifyObservers(EQQ, "UinInBlacklist", a.result); break; case 112: b.notifyObservers(EQQ, "Overload", a.result); break; case 1E5: case 100001: case 100002: b.notifyObservers(EQQ, "PtwebqqFail", a.result); break; default: d.out("\u672a\u77e5\u767b\u5f55\u5931\u8d25"), b.notifyObservers(EQQ, "LoginFailure", { text: "\u8fde\u63a5\u5931\u8d25" }), d.out("[sendLogin] error: " + a.retcode), i(a, !c) } alloy.util.report2h("eqqLoginCgi", "end_eqqLoginCgi", ["ok"][a.retcode] || a.retcode); i(a, c); alloy.portal.speedTest.sRTS(16, "end", new Date, !0) }; this.sendLoginError = function(a) { d.out("sendLoginError"); b.notifyObservers(EQQ, "LoginFailure", { text: "\u8fde\u63a5\u5931\u8d25" }); alloy.util.report2h("eqqLoginCgi", "end_eqqLoginCgi", "error"); i(a) }; this.sendLoginTimeout = function(a) { d.out("sendLoginError"); b.notifyObservers(EQQ, "LoginFailure", { text: "\u8fde\u63a5\u5931\u8d25" }); alloy.util.report2h("eqqLoginCgi", "end_eqqLoginCgi", "timeout"); i(a) }; this.sendLogout = function(a) { this.send(q + "channel/logout2", { context: this, data: a, onSuccess: function(a) { a.retcode === 0 || a.retcode === 100 ? (z = 0, b.notifyObservers(this, "LogoutSuccess", a.result), d.out(":LogoutSuccess...")) : d.out("[SendLogout] error: " + a.retcode) } }) }; this.sendReLink = function(a) { if (window.webTop) a.v = Number(webTop.version) + 1E4; a.clientid = c; a.psessionid = EQQ.getPsessionid(); if (f._state) a.status = f._state; this.send(q + "channel/login2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: this.sendReLinkSuccess, onError: this.sendReLinkError, onTimeout: this.sendReLinkTimeout }) }; this.sendReLinkSuccess = function(a, d) { switch (a.retcode) { case 0: z = 1; b.notifyObservers(EQQ, "ReLinkSuccess", a.result); break; case 103: b.notifyObservers(this, "NotReLogin", a.result); break; case 113: case 115: case 112: b.notifyObservers(EQQ, "ReLinkFailure", a); break; default: b.notifyObservers(EQQ, "ReLinkStop"), i(a, !d) } i(a, d) }; this.sendReLinkError = function(a) { d.out("sendReLinkError"); b.notifyObservers(EQQ, "ReLinkFailure"); i(a) }; this.sendReLinkTimeout = function(a) { d.out("sendReLinkTimeout"); b.notifyObservers(EQQ, "ReLinkFailure"); i(a) }; this.sendGetOnlineBuddies = function() { this.send(q + "channel/get_online_buddies2", { context: this, data: {}, onSuccess: function(a, d) { a.retcode === 0 ? b.notifyObservers(this, "GetOnlineBuddiesSuccess", a.result) : i(a, !d); i(a, d) }, onError: function(a) { i(a) } }) }; this.sendMsg = function(a) { a.clientid = c; a.psessionid = EQQ.getPsessionid(); this.send(q + "channel/send_buddy_msg2", { context: this, cacheTime: 0, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: function(c, f) { c.retcode === 0 ? b.notifyObservers(this, "SendMsgSuccess", c.result) : (d.out("[sendMsg] error: " + c.retcode + "-" + c.errmsg), b.notifyObservers(this, "SendMsgError", { uin: a.to, retcode: c.retcode, errmsg: c.errmsg, callback: EQQ.RPCService.sendMsg, cbParam: a }), i(c, !f)); i(c, f) }, onError: function(a) { i(a) } }) }; this.sendGroupMsg = function(a) { a.clientid = c; a.psessionid = EQQ.getPsessionid(); this.send(q + "channel/send_qun_msg2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: function(c, f) { c.retcode === 0 ? b.notifyObservers(this, "SendGroupMsgSuccess", c.result) : (d.out("[sendGroupMsg] error: " + c.retcode + "-" + c.errmsg), b.notifyObservers(this, "SendMsgError", { uin: a.group_uin, retcode: c.retcode, errmsg: c.errmsg, callback: EQQ.RPCService.sendGroupMsg, cbParam: a }), i(c, !f)); i(c, f) }, onError: function(a) { i(a) } }) }; this.sendPoll = function(a) { a = a || {}; a = a.data || {}; a.clientid = c; a.psessionid = EQQ.getPsessionid(); a.key = alloy.portal.getSecretKey(); if (p < z) p++, f.pollWatcher.pollRequst = this.send(q + "channel/poll2", { context: this, cacheTime: 0, data: a, timeout: 9E4, onSuccess: this.sendPollSuccess, onError: this.sendPollError, onTimeout: this.sendPollTimeout }) }; this.sendPollSuccess = function(c, g) { f.pollWatcher.pollStop(); (new Date).getTime(); p--; if (c.retcode === 0 || c.retcode === 102) { a = 0; try { b.notifyObservers(this, "PollSuccess", c.result) } catch (m) { d.out("PollSuccess, but [PollSuccess notify] error!!!!!!!!!!!!!!!!!!!!!!!!", 1) } try { b.notifyObservers(this, "PollComplete") } catch (k) { d.out("PollComplete, but [PollComplete notify] error!!!!!!!!!!!!!!!!!!!!!!!!", 1) } } else if (c.retcode === 100) b.notifyObservers(this, "NotReLogin"); else if (c.retcode === 120) b.notifyObservers(EQQ, "ReLinkFailure", c); else if (c.retcode === 121) b.notifyObservers(EQQ, "ReLinkFailure", c); else if (c.retcode === 116) alloy.portal.setPtwebqq(c.p), b.notifyObservers(this, "PollComplete"); else { try { b.notifyObservers(j, "PollComplete") } catch (t) { d.out("PollComplete, but [PollComplete notify] error!!!!!!!!!!!!!!!!!!!!!!!!", 1) } c.retcode != 109 && c.retcode != 110 && r() } i(c, g) }; this.sendPollTimeout = function() { f.pollWatcher.pollStop(); p--; try { b.notifyObservers(this, "PollComplete") } catch (a) { d.out("PollComplete, but [PollComplete notify] error!!!!!!!!!!!!!!!!!!!!!!!!", 1) } r() }; this.sendPollError = function(a) { this.sendPollTimeout(a); i(a) }; this.sendChangeStatus = function(a) { a = a || { newstatus: "hidden" }; this.send(q + "channel/change_status2", { context: this, data: a, arguments: a, onSuccess: function(a, c) { if (a.retcode === 0) b.notifyObservers(this, "ChangeStatusSuccess", a.arguments.newstatus), f._state = a.arguments.newstatus; a.retcode === 108 ? b.notifyObservers(this, "NotReLogin", a.result) : i(a, !c); i(a, c) }, onError: function(a) { i(a) } }) }; this.sendGetSessionSignature = function(a) { a.clientid = c; a.psessionid = EQQ.getPsessionid(); this.send(q + "channel/get_c2cmsg_sig2", { context: this, data: a, arguments: a, onSuccess: function(c, d) { if (c.retcode === 0) { var f = c.result; f.id = a.service_type === 0 ? a.id : EQQ.Model.BuddyList.encodeDid(a.id); f.uin = a.to_uin; b.notifyObservers(this, "GetSessionSignatureSuccess", f) } else i(c, !d); i(c, d) }, onError: function(a) { i(a) } }) }; this.sendGroupBuddyMsg = function(a) { a.clientid = c; a.psessionid = EQQ.getPsessionid(); this.send(q + "channel/send_sess_msg2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: function(c, d) { c.retcode === 0 ? b.notifyObservers(this, "SendMsgSuccess", c.result) : (b.notifyObservers(this, "SendMsgError", { uin: a.to, retcode: c.retcode, errmsg: c.errmsg, callback: EQQ.RPCService.sendGroupBuddyMsg, cbParam: a }), i(c, !d)); i(c, d) }, onError: function(a) { i(a) } }) }; this.sendGetCustomFaceList = function() { alloy.portal.recoverCookie(); d.http.loadScript(EQQ.CONST.CONN_SERVER_DOMAIN2 + "cgi-bin/webqq_app/", { query: "cmd=1?t=" + (new Date).getTime() + "&vfwebqq=" + alloy.portal.getVfWebQQ(), onSuccess: function() { typeof custom_face !== "undefined" ? b.notifyObservers(f, "SendGetCustomFaceListSuccess", custom_face) : f.sendGetCustomFaceList() } }) }; this.sendDeleteCustomFace = function(a) { alloy.portal.recoverCookie(); d.http.loadScript(EQQ.CONST.CONN_SERVER_DOMAIN2 + "cgi-bin/webqq_app/", { query: "cmd=12&bd=" + a.img + "&vfwebqq=" + alloy.portal.getVfWebQQ(), onSuccess: function() { typeof cface_delete_result !== "undefined" && b.notifyObservers(f, "SendDeleteCustomFaceSuccess", a.callback || function() { }) } }) }; this.sendGetGroupCustomFaceKey = function(a) { this.send(q + "channel/get_gface_sig2", { context: this, arguments: a.arguments, onSuccess: function(c, d) { c.retcode === 0 ? b.notifyObservers(this, "SendGetGroupCustomFaceKeySuccess", c) : (b.notifyObservers(this, "SendGetGroupCustomFaceKeyError", { uin: a.to, retcode: c.retcode, errmsg: c.errmsg }), i(c, !d)); i(c, d) }, onError: function(a) { i(a) } }) }; this.sendGetGroupCustomFaceInfo = function(a) { a.clientid = c; a.psessionid = EQQ.getPsessionid(); this.send(q + "channel/send_qun_msg2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: function(c, d) { c.retcode === 0 ? b.notifyObservers(this, "SendGetGroupCustomFaceInfoSuccess", c) : (b.notifyObservers(this, "SendMsgError", { uin: a.group_uin, retcode: c.retcode, errmsg: c.errmsg, callback: EQQ.RPCService.sendGetGroupCustomFaceInfo, cbParam: a }), i(c, !d)); i(c, d) }, onError: function(a) { i(a) } }) }; this.sendGetOfflinePicUrl = function(a) { this.send(q + "channel/apply_offline_pic_dl2", { context: this, data: a, onSuccess: function(a, c) { a.retcode === 0 ? (b.notifyObservers(this, "sendGetOfflinePicUrlSuccess", a), alloy.util.report2m(133173)) : (b.notifyObservers(this, "getSendPicUrlError", a), d.out("[sendGetOfflinePicUrlError] error: "), i(a, !c), alloy.util.report2m(133174)); i(a, c) }, onError: function(a) { i(a); alloy.util.report2m(133174) } }) }; this.sendRefuseFile = function(a) { this.send(q + "channel/refuse_file2", { context: this, data: a, onSuccess: function() { } }) }; this.sendGetMyAvatarFlag = function(a) { a = a || {}; a.type = 1; a.psessionid = EQQ.getPsessionid(); a.clientid = EQQ.RPCService.getClientId(); this.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/query_user_flag", { context: this, method: "GET", data: a, arguments: {}, onSuccess: function(a) { a.retcode === 0 ? b.notifyObservers(this, "GetMyAvatarFlagSuccess", a) : b.notifyObservers(this, "GetMyAvatarFlagError", a) }, onError: function(a) { b.notifyObservers(this, "GetMyAvatarFlagError", a) } }) }; this.sendDeleteMyAvatarFlag = function(a) { a = a || {}; a.vfwebqq = alloy.portal.getVfWebQQ(); a.type = 1; a.img_id = 0; a.psessionid = EQQ.getPsessionid(); a.clientid = EQQ.RPCService.getClientId(); this.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/del_chead", { context: this, method: "POST", data: { r: d.json.stringify(a) }, arguments: {}, onSuccess: function(a) { a.retcode === 0 ? b.notifyObservers(this, "DeleteMyAvatarFlagSuccess", a) : b.notifyObservers(this, "DeleteMyAvatarFlagError", a) }, onError: function(a) { b.notifyObservers(this, "DeleteMyAvatarFlagError", a) } }) }; this.sendGroupRequestJoin = function(a, c, b, d) { a = a || {}; this.send(q + "channel/op_group_join_req", { context: this, data: a, arguments: c || {}, onSuccess: b || function() { }, onError: d || function() { } }) }; this.sendGetDiscuList = function(a) { a = {}; a.clientid = EQQ.RPCService.getClientId(); a.psessionid = EQQ.getPsessionid(); a.vfwebqq = alloy.portal.getVfWebQQ(); this.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/get_discu_list", { context: f, data: a, arguments: a, onSuccess: function(a) { a.retcode === 0 ? (func(), getDiscuListSuccess()) : d.out("\u83b7\u53d6\u7fa4\u6700\u65b0\u4fe1\u606f\u5931\u8d25") }, onError: function() { d.out("\u83b7\u53d6\u7fa4\u6700\u65b0\u4fe1\u606f\u5931\u8d25") } }) }; this.sendDiscuMsg = function(a) { a.clientid = c; a.psessionid = EQQ.getPsessionid(); this.send(q + "channel/send_discu_msg2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: function(c, f) { c.retcode === 0 ? c.result.error == 3 ? b.notifyObservers(this, "DiscuNotExist", a) : b.notifyObservers(this, "SendDiscuMsgSuccess", c.result) : (d.out("[sendDiscuMsg] error: " + c.retcode + "-" + c.errmsg), b.notifyObservers(this, "SendMsgError", { uin: EQQ.Model.BuddyList.encodeDid(a.did), retcode: c.retcode, errmsg: c.errmsg, callback: EQQ.RPCService.sendDiscuMsg, cbParam: a }), i(c, !f)); i(c, f) }, onError: function(a) { i(a) } }) }; this.sendGetDiscuSessionSignature = function(a) { this.send(q + "channel/get_session_sig3", { context: this, data: { did: a.group_uin, to_uin: a.to_uin }, arguments: { group_uin: a.group_uin, to_uin: a.to_uin }, onSuccess: function(a, c) { a.retcode === 0 ? b.notifyObservers(this, "GetDiscuSessionSignatureSuccess", a) : i(a, !c); i(a, c) }, onError: function(a) { i(a) } }) }; this.sendDiscuBuddyMsg = function(a) { a.clientid = c; a.psessionid = EQQ.getPsessionid(); a.service_type = 1; this.send(q + "channel/send_sess_msg2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, onSuccess: function(c, d) { c.retcode === 0 ? b.notifyObservers(this, "SendMsgSuccess", c.result) : (b.notifyObservers(this, "SendMsgError", { uin: a.to, retcode: c.retcode, errmsg: c.errmsg, callback: EQQ.RPCService.sendDiscuBuddyMsg, cbParam: a }), i(c, !d)); i(c, d) }, onError: function(a) { i(a) } }) } }) })(); (function() { WebqCore.register("EQQ.Model.BuddyList", function(d) { var g = this, f = d.event, j, t, b, a, c, p, m, z, q, o, i, r, k, D, B, E, w, x = [], C = []; discuListReloadCount = 0; discuListReloadMax = 1; var F = new d.Class({ init: function(a) { this.uin = a.uin; this.ruin = a.ruin; this.allow = a.allow; this.face = a.face; this.age = a.age; this.gender = a.gender; this.vip = a.vip || !1; this.clientType = a.clientType || "10000"; this.setAvatar(EQQ.getUserAvatar(this.uin)); this.setNick(a.nick || a.ruin || a.uin); this.setState(a.state || EQQ.hash.onlineStatus.offline); this.did = a.did || ""; this.chatSession = {}; this.setClassId(a.classId || 0) }, setClientType: function(a) { this.clientType = a || "10000" }, setAvatar: function(a) { this.avatarUrl = a; f.notifyObservers(EQQ.Model.BuddyList, "AvatarChange", this) }, getAvatar: function() { return EQQ.getUserAvatar(this.uin) }, setNick: function(a) { if (!a && this.ruin) a = this.ruin; this.nick = d.string.toSingleLine(a); this.htmlNick = d.string.encodeHtmlSimple(this.nick); this.titleNick = this.nick; this.updateNames() }, setMarkName: function(a) { this.markName = d.string.toSingleLine(a.toString()); this.htmlMarkName = d.string.encodeHtmlSimple(this.markName.toString()); this.titleMarkName = d.string.encodeHtmlAttributeSimple(this.markName.toString()); this.updateNames() }, updateNames: function() { this.updateShowName(); this.updateAllName(); f.notifyObservers(EQQ.Model.BuddyList, "UserNameChange", this) }, updateShowName: function() { this.showName = (this.markName || this.nick || this.ruin || this.uin) + ""; this.htmlShowName = d.string.encodeHtmlSimple(this.showName.toString()); this.titleShowName = d.string.encodeHtmlAttributeSimple(this.showName.toString()) }, updateAllName: function() { var a = this.allName = ""; this.markName ? (a = this.markName + "(" + this.nick + ")", this.allName = this.markName + "(" + this.nick + ")") : this.allName = a = this.nick; this.htmlAllName = d.string.encodeHtmlSimple(this.allName); this.titleAllName = d.string.encodeHtmlAttributeSimple(a) }, setClassId: function(a) { this.classId = a }, setSignature: function(a) { if (a != void 0) this.signature = a, this.htmlSignature = d.string.encodeHtmlSimple(a), this.titleSignature = d.string.encodeHtmlAttributeSimple(a); f.notifyObservers(EQQ.Model.BuddyList, "UserSignatureChange", this) }, getSignature: function() { this.signature != void 0 ? this.setSignature() : alloy.rpcService.sendGetSignature(this.uin) }, setQQLevel: function(a) { if (a != void 0) this.level = a; f.notifyObservers(EQQ.Model.BuddyList, "UserQQLevelChange", this) }, getQQLevel: function() { this.level != void 0 ? this.setQQLevel() : alloy.rpcService.sendGetQQLevel(this.uin) }, setState: function(a) { this.state = a }, getState: function() { return this.state }, setFace: function(a) { this.face = a }, setGender: function(a) { this.gender = a }, setAllow: function(a) { this.allow = a }, setUsercard: function(a, e) { this.usercard = this.usercard || {}; this.usercard[a] = { title: e, htmlAttribute: d.string.encodeHtmlAttributeSimple(e), html: d.string.encodeHtmlSimple(e) }; f.notifyObservers(EQQ.Model.BuddyList, "UserCardChange", this.usercard) }, getUsercard: function(a) { this.usercard = this.usercard || {}; return this.usercard[a] } }), u = new d.Class({ init: function(a) { this.gid = a.gid; this.code = a.code; this.mask = String(a.mask); this.preMask = String(this.mask); this.setName(a.name); this.setMarkName(a.markName); this.setType(a.type); this.hasManageAuthority = this.isLoadInfo = !1; this.uin2members = {}; this.level = 0 }, setMask: function(a) { this.preMask = String(this.mask); this.mask = String(a); f.notifyObservers(EQQ.Model.BuddyList, "SingleGroupMaskChange", this) }, setName: function(a) { this.name = d.string.toSingleLine(a); this.htmlName = d.string.encodeHtmlSimple(a); this.titleName = d.string.encodeHtmlAttributeSimple(a); this.updateNames() }, setMarkName: function(a) { if (typeof a == "undefined" || a == "") return !1; this.markName = d.string.toSingleLine(a); this.htmlMarkName = d.string.encodeHtmlSimple(a); this.titleMarkName = d.string.encodeHtmlAttributeSimple(a); this.updateNames() }, updateNames: function() { this.updateShowName(); this.updateAllName(); f.notifyObservers(EQQ.Model.BuddyList, "GroupNameChange", this) }, updateShowName: function() { this.showName = this.markName || this.name || String(this.code); this.htmlShowName = d.string.encodeHtmlSimple(this.showName); this.titleShowName = d.string.encodeHtmlAttributeSimple(this.showName) }, updateAllName: function() { var a = ""; this.allName = ""; this.markName ? (a = this.markName + "(" + this.name + ")", this.allName = this.markName + "(" + this.name + ")") : (a = this.name, this.allName = this.name + "<" + this.code + ">"); this.htmlAllName = d.string.encodeHtmlSimple(this.allName); this.titleAllName = d.string.encodeHtmlAttributeSimple(a) }, type2text: { commonGroup: "\u666e\u901a\u7fa4", seniorGroup: "\u9ad8\u7ea7\u7fa4", superGroup: "\u8d85\u7ea7\u7fa4", expireSuperGroup: "\u8fc7\u671f\u7684\u8d85\u7ea7\u7fa4", enterpriseGroup: "\u4f01\u4e1a\u7fa4", forbiddenGroup: "\u7981\u7528" }, setType: function(a) { this.type = a; this.typeText = this.type2text[a] || "\u5176\u4ed6\u7c7b\u578b\u7fa4"; this.htmlTypeText = d.string.encodeHtmlSimple(this.typeText); this.titleTypeText = d.string.encodeHtmlAttributeSimple(this.typeText) }, setLevel: function(a) { this.level = a || 0 }, setAnnouncement: function(a) { if (typeof a != "undefined") this.announcement = a, this.htmlAnnouncement = d.string.encodeHtmlSimple(a), this.titleAnnouncement = d.string.encodeHtmlAttributeSimple(a), f.notifyObservers(g, "GroupAnnouncementChange", this) }, upAnnouncement: function(a) { if (typeof a != "undefined") this.announcement = a, this.htmlAnnouncement = d.string.encodeHtmlSimple(a), this.titleAnnouncement = d.string.encodeHtmlAttributeSimple(a), f.notifyObservers(g, "GroupAnnouncementChange", this) }, updateMembers: function(a, e) { if (a) this.members = a, this.onlineMemberCount = e, this.uin2members[a.uin] = a; f.notifyObservers(g, "GroupMembersChange", this) }, updateMemberState: function(a) { for (var e = a.stats, a = this.members, c = 0, b = {}, d = [], c = 0; c < e.length; c++) b[e[c].uin] = e[c].stat; e = a.length; for (c = 0; c < e; c++) { var h = a[c].info, n = h.uin; b[n] = b[n] || 20; if (h.gstate != b[n] && n != j) d.push({ uin: n, stat: b[n], oldStat: h.gstate }), h.gstate = b[n] } f.notifyObservers(g, "GroupMemberStateChange", { t: this, arg: d }) }, updateMemberCard: function(a) { var e = this.members, c = !1, b; for (b in e) { var n = e[b]; if (n.uin == a.uin) { a.card == "" ? (this.members[b].usercard = d.string.encodeHtmlSimple(n.nick), this.members[b].info.setUsercard(this.code, n.nick)) : (this.members[b].usercard = d.string.encodeHtmlSimple(a.card), this.members[b].info.setUsercard(this.code, a.card)); c = !0; break } } c && f.notifyObservers(g, "GroupMemberCardChange", { gid: this.gid, gcode: this.code, uin: a.uin }) }, getMenberByUin: function(a) { return this.uin2members[a] } }), s = { onSelfInfoReady: function(a) { if (g.getSelf()) { var e = g.getSelf(); e.setNick(a.nick); e.setFace(a.face); e.setGender(a.gender); e.setAllow(a.allow); e.vip = a.vip; e.age = a.age } else g.setSelf(a) }, onSelfInfoChanged: function(a) { var e = g.getSelf(); e.setNick(a.nick); e.setGender(a.gender) }, onGetUserInfoSuccess: function(a) { var e = a.result; if (e) { var c = g.getUserByUin(a.arguments.uin); c ? (c.setNick(e.nick), c.setFace(e.face), c.setGender(e.gender), c.setAllow(e.allow)) : (c = g.createUser({ uin: a.arguments.uin, allow: e.allow, nick: e.nick, face: e.face, ruin: e.ruin, gender: e.gender }), g.addStranger(c)); f.notifyObservers(g, "GetUserInfoSuccess", c) } }, onGetUserInfoError: function() { }, onGetBuddySignatureSuccess: function(a) { var e = a.result, c; c = e.length == 0 ? "" : e[0].lnick; e.length != 0 && e[0].uin == alloy.portal.getUin() && g.setSelfSignature(e[0].lnick); (a = g.getUserByUin(a.arguments.uin)) && a.setSignature(c); f.notifyObservers(g, "GetBuddySignatureSuccess", a) }, onGetMultiBuddySignatureSuccess: function(a) { var a = a.result, e; for (e in a) { var c = g.getUserByUin(a[e].tuin); c && c.setSignature(a[e].lnick) } }, onChangeGroupMaskSuccess: function(a) { a.uin == g.getSelfUin() ? (w = a.mask, f.notifyObservers(g, "GroupMaskChange", w)) : g.getGroupByGid(a.uin).setMask(a.mask) }, onGetQQLevelSuccess: function(a) { var e = g.getUserByUin(a.arguments.uin); e && e.setQQLevel(a.result) }, onGetGroupMaskConfigSuccess: function(a) { for (var e in a) { var c = parseInt(a[e]); e === "global" && (w = c, f.notifyObservers(g, "GroupMaskChange", w)) } }, onGetOnlineBuddiesSuccess: function(a) { g.setAllBuddyState(a) }, onGetSessionSignatureSuccess: function(a) { g.setGroupBuddySessionSignature(a) }, onBuddyStatusChange: function(a) { g.setState(a.uin, a.status, a.client_type) }, onBuddyListChange: function(a) { if (a.removed_friends && a.removed_friends.length > 0) for (var e in a.removed_friends) { var c = a.removed_friends[e]; g.setState(c.uin, EQQ.hash.onlineStatus.offline, null); if (c = g.removeBuddy(c.uin)) { var b = EQQ.hash.onlineStatus.offline, n = g.getClassById(c.classId); d.array.remove(n.list[b], c); n.count -= 1; n.onlineCount = n.count - n.list[b].length; f.notifyObservers(g, "RemoveBuddy", c) } } }, onGetSelfSignatureSuccess: function(a) { g.setSelfSignature(a) }, onGetBuddyListSuccess: function(a) { for (var e = a.categories || [], c = !1, b = 0; b < e.length; b++) e[b].index == 0 && (c = !0); c || e.unshift({ index: 0, name: "\u6211\u7684\u597d\u53cb" }); g.isBuddyList = !0; g.setBuddyClass(a); g.setBuddyList(a); EQQ.RPCService.sendGetOnlineBuddies() }, GetBuddyListError: function() { f.notifyObservers(EQQ, "LoginFailure", { text: "\u62c9\u53d6\u5931\u8d25" }) }, onGetGroupListSuccess: function(a) { g.isGroupList = !0; for (var e = a.gmasklist || [], c = 0, b = 0; b < e.length; b++) { var d = e[b]; if (d.gid === 1E3) c = d.mask; else for (var h = 0; h < a.gnamelist.length; h++) if (a.gnamelist[h].gid === d.gid) { a.gnamelist[h].mask = d.mask; break } } g.setGroupList(a); g.setGroupMask(c) }, GetGroupListError: function() { f.notifyObservers(EQQ, "LoginFailure", { text: "\u62c9\u53d6\u5931\u8d25" }) }, onGetGroupInfoSuccess: function(a) { g.setGroupInfo(a) }, onGetRecentListSuccess: function(a) { g.setRecentList(a) }, onPollSuccess: function(a) { if (a) for (var e = 0; e < a.length; e++) { var c = a[e]; switch (c.poll_type) { case "buddies_status_change": s.onBuddyStatusChange(c.value); break; case "buddylist_change": s.onBuddyListChange(c.value) } } }, onLoginSuccess: function(a) { var e = g.getSelfUin(); g.setState(e, a.status, "QQWeb"); EQQ.index = a.index; EQQ.port = a.port }, onAddANewBuddy: function(a) { var e = a.gid, c = a.newstate, b = a.markname; alloy.rpcService.sendGetUserInfo(a.tuin, null, null, function(a) { if (a.retcode === 0) { var l = a.result, a = a.arguments.uin, d = g.getUserByUin(a); d ? (d.setNick(l.nick), d.setFace(l.face), d.setGender(l.gender), d.setClassId(e), g.addBuddy(d)) : (d = g.createUser({ uin: a, allow: l.allow, nick: l.nick, face: l.face, gender: l.gender, ruin: l.ruin, classId: e }), g.addBuddy(d), EQQ.Model.BuddyList.getClassById(e).count += 1, f.notifyObservers(EQQ.Model.BuddyList, "AddBuddy", { user: d, newstate: c, markname: b })) } }) }, onAddNewGroupToModel: function(a) { var e = g.getGroupByCode(a); if (!d.isUndefined(e) && e) return !0; alloy.rpcService.sendGetGroupPublicInfo(a, a, EQQ.Model.BuddyList.onGetGroupPublicSuccess, function() { }) } }; this.init = function() { t = []; b = {}; a = []; c = {}; p = []; m = {}; z = []; q = {}; o = []; i = {}; m = {}; r = []; k = []; B = {}; E = {}; x = []; C = []; discuListReloadCount = 0; f.addObserver(alloy.portal, "SelfInfoChanged", s.onSelfInfoChanged); f.addObserver(alloy.rpcService, "GetUserInfoSuccess", s.onGetUserInfoSuccess); f.addObserver(alloy.rpcService, "GetUserInfoError", s.onGetUserInfoError); f.addObserver(alloy.rpcService, "GetGroupInfoSuccess", s.onGetGroupInfoSuccess); f.addObserver(alloy.rpcService, "GetQQLevelSuccess", s.onGetQQLevelSuccess); f.addObserver(alloy.rpcService, "GetBuddySignatureSuccess", s.onGetBuddySignatureSuccess); f.addObserver(alloy.rpcService, "GetMultiBuddySignatureSuccess", s.onGetMultiBuddySignatureSuccess); f.addObserver(EQQ, "LoginSuccess", s.onLoginSuccess); f.addObserver(EQQ.RPCService, "GetOnlineBuddiesSuccess", s.onGetOnlineBuddiesSuccess); f.addObserver(EQQ.RPCService, "GetSelfSignatureSuccess", s.onGetSelfSignatureSuccess); f.addObserver(EQQ.RPCService, "GetSessionSignatureSuccess", s.onGetSessionSignatureSuccess); f.addObserver(EQQ.RPCService, "PollSuccess", s.onPollSuccess); f.addObserver(g, "AddANewBuddy", s.onAddANewBuddy); f.addObserver(g, "BuddyStatusChange", s.onBuddyStatusChange); f.addObserver(alloy.portal, "selfInfoReady", s.onSelfInfoReady); f.addObserver(g, "AddNewGroupToModel", s.onAddNewGroupToModel); f.addObserver(g, "ReloadGroupInfo", this.onReloadGroupInfo); f.addObserver(EQQ.RPCService, "GetDiscuSessionSignatureSuccess", Q); f.addObserver(EQQ.RPCService, "DiscuNotExist", O) }; this.reset = function() { j = 0; t = []; b = {}; a = []; c = {}; p = []; m = {}; z = []; q = {}; o = []; i = {}; m = {}; r = []; k = []; B = {}; E = {}; x = []; C = []; discuListReloadCount = 0; this.setSelf({ uin: alloy.portal.getUin() }) }; this.sendGetBuddyList = function(a) { a = a || {}; a.vfwebqq = EQQ.vfwebqq; return EQQ.Extend.cgi_module(EQQ.BASE_CONST.API_SERVER_URL + "get_user_friends2", { context: this, method: "POST", param: a, callback: function(a, e) { a.retcode === 0 ? (s.onGetBuddyListSuccess(a.result), e(a)) : s.GetBuddyListError(a); alloy.util.report2h("eqqGetData", "end_BuddyList", ["ok"][a.retcode] || a.retcode); alloy.portal.speedTest.sRTS(14, "end", new Date, !0) }, errback: function(a) { s.GetBuddyListError(a); alloy.util.report2h("eqqGetData", "end_BuddyList", "error") }, timeback: function(a) { s.GetBuddyListError(a); qqweb.util.report2h("eqqGetData", "end_BuddyList", "timeout") } }) }; this.sendGetGroupList = function(a) { a = a || {}; a.vfwebqq = EQQ.vfwebqq; return EQQ.Extend.cgi_module(EQQ.BASE_CONST.API_SERVER_URL + "get_group_name_list_mask2", { context: this, method: "POST", param: a, callback: function(a, e) { a.retcode === 0 ? (s.onGetGroupListSuccess(a.result), e(a)) : s.GetGroupListError(a); alloy.util.report2h("eqqGetData", "end_GroupList", ["ok"][a.retcode] || a.retcode); alloy.portal.speedTest.sRTS(15, "end", new Date, !0) }, errback: function(a) { s.GetGroupListError(a); alloy.util.report2h("eqqGetData", "end_GroupList", "error") }, timeback: function(a) { s.GetGroupListError(a); qqweb.util.report2h("eqqGetData", "end_GroupList", "timeout") } }) }; this.sendGetRecentList = function(a) { a = a || {}; a.vfwebqq = EQQ.vfwebqq; a.clientid = EQQ.RPCService.getClientId(); a.psessionid = EQQ.getPsessionid(); return EQQ.Extend.cgi_module_d(EQQ.BASE_CONST.CONN_SERVER_DOMAIN2 + "channel/get_recent_list2", { context: this, method: "POST", data: { r: d.json.stringify(a) }, callback: function(a) { if (a.retcode === 0) s.onGetRecentListSuccess(a.result) }, errback: function() { } }) }; this.getUserSignature = function(a) { (a = this.getUserByUin(a)) && a.getSignature() }; this.getMultiUserSignture = function(a) { var e = [], c; for (c in a) { var b = this.getUserByUin(a[c]); typeof b.signature === "undefined" ? e.push(a[c]) : b.setSignature() } e.length && alloy.rpcService.sendGetMultiSignature("[" + e.toString() + "]") }; this.sendGetQQLevel = function(a) { (a = this.getUserByUin(a)) && a.getQQLevel() }; this.setSelf = function(a) { this.createUser({ uin: a.uin || null, allow: a.allow || null, nick: a.nick || null, face: a.face || 0, age: a.age || null, gender: a.gender || null, vip: a.vip || null }); this.setSelfUin(a.uin); var e = EQQ.getDefaultState(); this.setState(a.uin, e, "QQWeb"); f.notifyObservers(this, "SelfInfoChange", this.getSelf()) }; this.getSelf = function() { return this.getUserByUin(this.getSelfUin()) }; this.getSelfState = function() { var a = this.getSelf(); if (a) return a.state }; this.setSelfUin = function(a) { j = a || 0 }; this.getSelfUin = function() { return j }; this.setSelfSignature = function(a) { this.getUserByUin(this.getSelfUin()).setSignature(a); f.notifyObservers(this, "SelfSignatureChange", this.getSelf()) }; this.sendChangeStatus = function(a) { EQQ.RPCService.sendChangeStatus({ newstatus: a }) }; this.sendChangeGroupMask = function(a) { var e = { cAll: a.type === "global" ? a.mask : w, idx: EQQ.index, port: EQQ.port }, c; for (c in k) { var b = k[c]; e[b.gid] = a.type === "single" && a.uin === b.gid ? a.mask : b.mask } qqweb.rpcService.sendMessageFilterConfig({ onSuccess: function() { s.onChangeGroupMaskSuccess({ uin: a.uin, mask: a.mask }) }, context: this, data: { retype: 1, app: "EQQ", itemlist: '{"groupmask":' + d.json.stringify(e) + "}" } }) }; this.setBuddyClass = function(a) { t = a.categories; for (a = 0; a < t.length; a++) { var e = t[a]; e.caculateName = e.name; e.htmlName = d.string.encodeHtmlSimple(e.name); e.titleName = d.string.encodeHtmlAttributeSimple(e.name); e.count = 0; e.onlineCount = 0; e.list = { callme: [], online: [], away: [], busy: [], silent: [], offline: [] }; b[e.index] = e } f.notifyObservers(this, "BuddyClassChange", this.getClassList()) }; this.getClassList = function() { return t }; this.setAllBuddyState = function(a) { r = []; for (var e = 0; e < a.length; e++) { var c = a[e]; this.setState(c.uin, c.status, c.client_type) } f.notifyObservers(this, "AllOnlineBuddyReady", this.getOnlineBuddy()); f.notifyObservers(this, "AllClassOnlineBuddyReady", this.getClassList()) }; this.setState = function(a, e, c) { var b = this.getUserByUin(a); if (b) { var d = b.state; b.setState(e); b.clientType = c; if (a == this.getSelfUin()) f.notifyObservers(this, "SelfStateChange", this.getSelfState()); else if (b.classId !== EQQ.hash.userClassType.stranger && b.classId !== EQQ.hash.userClassType.balck) { var h = this.getClassByUin(b.uin); h.list[b.state].unshift(b); for (var b = h.list[d], n = 0; n < b.length; n++) b[n].uin == a && b.splice(n, 1); b = EQQ.hash.onlineStatus.offline; if (d == b || e == b) { h.onlineCount = h.count - h.list[b].length; if (e == b) for (e = 0; e < r.length; e++) r[e].uin == a && r.splice(e, 1); else r.push({ uin: a, state: e, clientType: c }); f.notifyObservers(this, "OnlineBuddyChange", a) } f.notifyObservers(this, "BuddyStateChange", a) } } }; this.getState = function(a) { return (a = this.getUserByUin(a)) ? a.getState() : null }; this.getOnlineBuddy = function() { return r }; this.addUser = function(e) { c[e.uin] || (c[e.uin] = e, a.push(e)); return e }; this.addBuddy = function(a) { if (!m[a.uin]) a.type = "buddy", m[a.uin] = a, p.push(a); return a }; this.removeBuddy = function(a) { var e = null; m[a] && (e = m[a], m[a] = null, delete m[a], d.array.remove(p, e)); return e }; this.createUser = function(a) { a = new F(a); this.addUser(a); return a }; this.addStranger = function(a) { q[a.uin] || (q[a.uin] = a, z.push(a)); return a }; this.addBlack = function(a) { if (!i[a.uin]) a.type = "black", i[a.uin] = a, o.push(a); return a }; this.getStrangerList = function() { return z }; this.setBuddyList = function(a) { p = []; for (var e = a.friends, c = this.getSelfUin(), b = 0; b < e.length; b++) if (e[b].uin != c) { var d = a.info[b], d = this.createUser({ uin: d.uin, allow: d.allow, nick: d.nick, face: d.face, age: d.age, gender: d.gender, vip: d.vip, ruin: d.ruin, classId: this.getClassById(e[b].categories) ? e[b].categories : 0 }); this.addBuddy(d) } if (a = a.marknames) for (b = 0; b < a.length; b++) (d = this.getUserByUin(a[b].uin)) && d.setMarkName(a[b].markname); for (b = 0; b < p.length; b++) p[b].uin != this.getSelfUin() && (a = this.getClassById(p[b].classId), a.list[p[b].state] || (a.list[p[b].state] = []), a.list[p[b].state].push(p[b]), a.count++); f.notifyObservers(this, "BuddyListChange", this.getBuddyList()) }; this.getBuddyList = function() { return p }; this.addNewBuddy = function() { }; this.searchBuddy = function(a, e) { var a = String(a).toLowerCase(), c = [], b = []; if (a.length > 0) for (var d = 0; d < p.length; d++) { var h = p[d]; if (String(h.nick).toLowerCase().indexOf(a) > -1 && String(h.nick) != "undefined" || String(h.markName).toLowerCase().indexOf(a) > -1 && String(h.markName) != "undefined") String(h.nick).toLowerCase() == a || String(h.markName).toLowerCase() == a ? b.push(h) : c.push(h); if (c.length + b.length >= e) break } Array.prototype.push.apply(b, c); return b }; this.isUser = function(a) { return Boolean(c[a]) }; this.isBuddy = function(a) { return m[a] }; this.getBuddyByUin = function(a) { return m[a] }; this.isStranger = function(a) { return q[a] }; this.isBlack = function(a) { return i[a] }; this.getUserByUin = function(a) { if (c) return c[a] }; this.getClassIdByUin = function(a) { return c[a].classId }; this.getClassByUin = function(a) { return this.getClassById(this.getClassIdByUin(a)) }; this.getClassById = function(a) { return b[a] }; this.addGroup = function(a) { E[a.code] || (E[a.code] = B[a.gid] = a, k.push(a)); return a }; this.removeGroup = function(a) { if (!d.isUndefined(E[a])) { var e = E[a].gid; delete E[a]; delete B[e]; for (var c in k) k[c].code == a && delete k[c] } }; this.onGetGroupPublicSuccess = function(a) { a.retcode != 0 && d.error("onGetGroupPublic error:" + a.retcode); var a = a.result.ginfo, e = "commonGroup"; a.flag & 16 ? e = "seniorGroup" : a.flag & 33554432 ? e = "superGroup" : a.flag & 2 ? e = "forbiddenGroup" : a.flag & 256 ? e = "enterpriseGroup" : a.flag & 67108864 && (e = "expireSuperGroup"); a = new u({ gid: a.gid, code: a.code, type: e, name: a.name, markName: a.name, mask: "0" }); g.addGroup(a); f.notifyObservers(g, "AddNewGroupToList", a) }; this.setGroupList = function(a) { var e = a.gnamelist, a = a.gmarklist || []; k = []; for (var c = 0; c < e.length; c++) { var b = e[c], d = "commonGroup"; b.flag & 16 ? d = "seniorGroup" : b.flag & 33554432 ? d = "superGroup" : b.flag & 2 ? d = "forbiddenGroup" : b.flag & 256 ? d = "enterpriseGroup" : b.flag & 67108864 && (d = "expireSuperGroup"); var h; a: { h = void 0; for (h in a) if (a[h].uin == b.gid) { h = a[h].markname; break a } h = "" } this.addGroup(new u({ gid: b.gid, code: b.code, type: d, name: b.name, markName: h, mask: b.mask || "0" })) } f.notifyObservers(this, "GroupListChange", this.getGroupList()) }; this.setGroupMask = function(a) { w = a; f.notifyObservers(this, "GroupMaskChange", w) }; this.getGroupMask = function() { return w }; this.getGroupList = function() { return k }; this.setRecentList = function(a) { for (var e in a) if (a[e].type == 2) a[e].uin = this.encodeDid(a[e].uin); D = a; f.notifyObservers(this, "RecentListChange", this.getRecentList()) }; this.getRecentList = function() { return D }; this.setGroupInfo = function(a) { for (var e = a.ginfo, c = a.minfo, b = a.stats, n = {}, h = b.length; h--; ) n[b[h].uin] = b[h]; a = a.cards || []; b = this.getGroupByCode(e.code); b.setLevel(e.level); h = this.getSelfUin(); b.setAnnouncement(e.memo || " "); for (var g = e.members, y = [], m = !1, k = 0, i = 0; i < g.length; i++) { var t = "common"; g[i].mflag & 1 ? (t = "manager", g[i].muin === h && (m = !0)) : g[i].mflag & 2 && (t = "manager2", g[i].muin === h && (m = !0)); g[i].muin == e.owner && (t = "master", g[i].muin === h && (m = !0)); var j = g[i].muin, A = (c[i].nick || c[i].ruin || "") + "", p = c[i].nick; p == "" && (p = (c[i].ruin || j) + ""); var H = n[j] && n[j].stat || 20, I = n[j] && n[j].client_type || 1E4; (H != 20 || j === h) && k++; for (var q = A, z = A, o = 0; o < a.length; o++) if (a[o].muin == j) { p = a[o].card; break } if (o = this.getUserByUin(g[i].muin)) { var r = alloy.util.code2state(H); if (o.uin != h) o.setState(r), o.gstate = H; o.type === "groupBuddy" || o.uin === h ? (H = p ? p : o.showName, o.setUsercard(e.code, H)) : p = p === A ? o.showName : p; o.setClientType(I) } else o = this.createUser({ uin: j, nick: A, clientType: I, state: alloy.util.code2state(H) }), o.type = "groupBuddy", o.setClassId(EQQ.hash.userClassType.stranger), o.group = b, o.gstate = H; H = p ? p : o.showName; o.setUsercard(e.code, H); y[i] = { uin: j, flag: t, gcode: e.code, nick: A, htmlNick: d.string.encodeHtmlSimple(A), titleNick: A, showName: q, htmlShowName: d.string.encodeHtmlSimple(q), titleShowName: d.string.encodeHtmlAttributeSimple(q), allName: z, htmlAllName: d.string.encodeHtmlSimple(z), titleAllName: z, usercard: d.string.encodeHtmlSimple(p) }; y[i].info = o; b.uin2members[j] = y[i] } b.isLoadInfo = !0; b.hasManageAuthority = m; b.updateMembers(y, k); f.notifyObservers(this, "GroupInfoChange", b) }; this.setMemberState = function(a) { this.getGroupByCode(a.gcode).updateMemberState(a) }; this.sendGetGroupInfo = function(a) { a.vfwebqq = alloy.portal.getVfWebQQ(); alloy.rpcService.send(alloy.CONST.API_SERVER_URL + "get_group_info_ext2", { context: g, data: a, arguments: a, onSuccess: function(a) { a.retcode === 0 ? g.setGroupInfo(a.result) : d.out("\u83b7\u53d6\u7fa4\u6700\u65b0\u4fe1\u606f\u5931\u8d25") }, onError: function() { d.out("\u83b7\u53d6\u7fa4\u6700\u65b0\u4fe1\u606f\u5931\u8d25") } }) }; this.sendGetMultiGroupInfo = function(a, e) { a.vfwebqq = alloy.portal.getVfWebQQ(); alloy.rpcService.send(alloy.CONST.API_SERVER_URL + "get_group_info", { context: g, data: a, arguments: a, onSuccess: function(a) { a.retcode === 0 ? e ? e(a) : f.notifyObservers(g, "GetMultiGroupInfoSuccess", a) : d.out("\u83b7\u53d6\u7fa4\u4fe1\u606f\u5931\u8d25") }, onError: function() { d.out("\u83b7\u53d6\u7fa4\u4fe1\u606f\u5931\u8d25") } }) }; this.sendGetGroupNewestState = function(a) { a.vfwebqq = alloy.portal.getVfWebQQ(); alloy.rpcService.send(alloy.CONST.API_SERVER_URL + "get_group_member_stat2", { context: g, data: a, arguments: a, onSuccess: function(a) { if (a.retcode === 0) g.onGetGroupNewestStateSuc(a.result); else d.out("\u83b7\u53d6\u7fa4\u6700\u65b0\u4fe1\u606f\u5931\u8d25") }, onError: function() { d.out("\u83b7\u53d6\u7fa4\u6700\u65b0\u4fe1\u606f\u5931\u8d25") } }) }; this.onGetGroupNewestStateSuc = function(a) { this.setMemberState(a) }; this.getGroupByCode = function(a) { return E[a] }; this.getGroupByGid = function(a) { return B[a] }; this.getGroupInfo = function(a) { var e = this.getGroupByCode(a); if (e.isLoadInfo) return e.updateMembers(), e.upAnnouncement(e.announcement), f.notifyObservers(this, "GroupInfoChange", e), e; else this.sendGetGroupInfo({ gcode: a }) }; var K = function(a) { var e = a.arguments.gcode; if (d.isArray(e)) b = g.getGroupByCode(e), f = a.result ? a.result.memo || " " : " ", b.setAnnouncement(f); else for (var c in e) { var b = e[c], b = g.getGroupByCode(b), f = a.result ? a.result.memo || " " : " "; b.setAnnouncement(f) } }; this.getGroupAnnouncement = function(a) { var e = g.getGroupByCode(a); if (typeof e.announcement == "undefined") this.sendGetMultiGroupInfo({ gcode: "[" + a + "]", retainKey: "memo" }, K); else return e }; var G = function(a) { if (a.result) for (var e in a.result) { var b = a.result[e]; g.getGroupByCode(b.gcode).setAnnouncement(b.memo || " ") } }; this.getMultiGroupAnnounce = function(a) { var e = [], b; for (b in a) typeof g.getGroupByCode(a[b]).announcement == "undefined" && e.push(a[b]); e.length && this.sendGetMultiGroupInfo({ gcode: "[" + e.toString() + "]", retainKey: "memo,gcode" }, G) }; this.onReloadGroupInfo = function(a) { var e = this.getGroupByCode(a); if (d.isUndefined(e) || !e) return !1; this.sendGetGroupInfo({ gcode: a }) }; this.sendGetSessionSignature = function(a) { EQQ.RPCService.sendGetSessionSignature(a) }; this.setGroupBuddySessionSignature = function(a) { var e = this.getUserByUin(a.uin), b = a.id; if (a.type === 0) e.chatSession[b] = a.value, f.notifyObservers(this, "GroupBuddySessionSignatureChange", e.uin) }; this.sendGetUserInfo = function(a) { alloy.rpcService.sendGetUserInfo_with_code(a) }; this.isGroupPrompt = function(a) { a = this.getGroupByGid(a); w = parseInt(w); switch (w) { case 0: switch (parseInt(a.mask)) { case 0: return !0; case 1: return !1; case 2: return !1 } break; case 1: return !0; case 2: return !1; case 3: return !1 } }; var e = new d.Class({ init: function(a) { this.did = a.did; this.mask = String(a.mask || 0); this.preMask = String(this.mask); this.setName(a.name); this.isLoadInfo = !1; this.members = []; this.owner = ""; this.notSetName = !1; this.hadModified = !0 }, setName: function(a) { this.notSetName = d.isUndefined(a) || a == "" ? !0 : !1; this.name = a = a || "\u666e\u901a\u8ba8\u8bba\u7ec4"; this.htmlName = d.string.encodeHtmlSimple(a.toString()); this.titleName = d.string.encodeHtmlAttributeSimple(a.toString()); this.setTopic(a) }, setTopic: function(a) { if (d.isUndefined(a)) return !1; this.topic = a; this.htmlTopic = d.string.encodeHtmlSimple(a); this.titleTopic = d.string.encodeHtmlAttributeSimple(a) }, addMember: function(a) { this.members.push(a); var e = g.getUserByUin(a.uin); if (e) { if (e.type == "stranger") e.setNick(a.nick || a.uin.toString()), e.did = this.did } else e = g.createUser({ uin: a.uin, allow: !0, nick: a.nick || a.uin.toString(), face: "", gender: "", state: a.status, ruin: a.ruin, did: this.did }), e.type = "groupBuddy", g.addStranger(e) }, setMembers: function(a) { this.members = a; for (var e in a) { var b = a[e], c = g.getUserByUin(b.uin); if (c) { if (c.type == "stranger") c.setNick(b.nick || b.uin.toString()), c.did = this.did } else c = g.createUser({ uin: b.uin, allow: !0, nick: b.nick || b.uin.toString(), face: "", gender: "", state: b.status, ruin: b.ruin, did: this.did }), c.type = "groupBuddy", g.addStranger(c) } }, getMemberList: function() { }, modifyMemberStatus: function(a) { var e = [], b = [], c; for (c in a) { var f = a[c]; b[f.uin] = f } a = alloy.portal.getPortalSelf("uin"); for (c in this.members) { var f = this.members[c], h = b[f.uin]; if (!d.isUndefined(h) && h.status != f.status) h.old_status = f.status, f.status = a == f.uin && h.status == "offline" ? "hidden" : h.status, e.push(h); if (d.isUndefined(h) && f.status != "offline") h = { uin: f.uin, old_status: f.status, status: a == f.uin ? "hidden" : "offline", client_type: f.client_type }, f.status = "offline", e.push(h) } return e }, setOwner: function(a) { this.owner = a }, setIsLoadInfo: function(a) { this.isLoadInfo = a || !1 }, setMask: function(a) { this.preMask = String(this.mask); this.mask = String(a); f.notifyObservers(EQQ.Model.BuddyList, "SingleDiscuMaskChange", this) }, setHadModified: function(a) { this.hadModified = a }, getMemberByUin: function(a) { var e = this.members, b; for (b in e) if (e[b].uin == a) return e[b]; return null } }); this.encodeDid = function(a) { return "d" + a }; this.decodeDid = function(a) { return a.substring(1) }; this.addDiscu = function(a) { C[a.did] || (a = new e(a), C[a.did] = a, x.push(a)) }; this.removeDiscu = function(a) { if (C[a.did]) { delete C[a.did]; for (var e in x) if (x[e].did == a.did) { x.splice(e, 1); break } } }; this.getDiscuById = function(a) { return C[a] }; this.getDiscuList = function() { return x }; this.sendGetDiscuList = function(a) { var e = {}; e.clientid = EQQ.RPCService.getClientId(); e.psessionid = EQQ.getPsessionid(); e.vfwebqq = alloy.portal.getVfWebQQ(); EQQ.RPCService.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/get_discu_list_new2", { context: g, data: e, arguments: e, onSuccess: function(e) { d.isUndefined(a) || a(); if (e.retcode === 0) { var b = e.result, e = b.dnamelist, c = b.dmasklist, b = [], h; for (h in c) { var y = c[h]; b[y.did] = y.mask } for (h in e) c = e[h], c.mask = b[c.did] || 0, c.did = g.encodeDid(c.did), g.addDiscu(c); f.notifyObservers(g, "DiscuListChange", g.getDiscuList()) } else n() }, onError: function() { n(); d.isUndefined(a) || a() } }) }; var n = function() { d.error("\u83b7\u53d6\u8ba8\u8bba\u7ec4\u5217\u8868\u5931\u8d25"); discuListReloadCount < discuListReloadMax ? (discuListReloadCount++, d.error("\u7b2c" + discuListReloadCount + "\u91cd\u62c9\u8ba8\u8bba\u7ec4\u5217\u8868"), g.sendGetDiscuList()) : f.notifyObservers(EQQ, "GetDiscuListFail", { text: "\u83b7\u53d6\u8ba8\u8bba\u7ec4\u5217\u8868\u5931\u8d25" }) }; this.getDiscuInfo = function(a) { var e = this.getDiscuById(a); !d.isUndefined(e) && e.isLoadInfo ? f.notifyObservers(this, "DiscuInfoChange", e) : y(a) }; this.refreshDiscuInfo = function(a) { y(a) }; var y = function(a) { var e = {}; e.did = g.decodeDid(a); e.clientid = EQQ.RPCService.getClientId(); e.psessionid = EQQ.getPsessionid(); e.vfwebqq = alloy.portal.getVfWebQQ(); EQQ.RPCService.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/get_discu_info", { context: g, data: e, arguments: e, onSuccess: function(a) { a.retcode === 0 ? a.result.error == 3 ? O(e) : g.sendGetDiscuInfoSuccess(a) : d.error("\u83b7\u53d6\u8ba8\u8bba\u7ec4\u4fe1\u606f\u5931\u8d25") }, onError: function() { d.error("\u83b7\u53d6\u8ba8\u8bba\u7ec4\u4fe1\u606f\u5931\u8d25") } }) }; this.sendGetDiscuInfoSuccess = function(a) { var e = this.getDiscuById(g.encodeDid(a.arguments.did)), b = a.result.mem_info, c = a.result.mem_status, d = [], h; for (h in c) { var n = c[h]; d[n.uin] = n.status } c = alloy.portal.getPortalSelf("uin"); n = []; for (h in b) { var y = b[h], m = this.getUserByUin(y.uin); if (m) y.markName = m.markName, y.htmlMarkName = m.htmlMarkName; y.status = d[y.uin] || (y.uin == c ? "hidden" : "offline"); y.name = y.nick; y.htmlName = $S.encodeHtmlSimple(y.nick); y.titleName = $S.encodeHtmlAttributeSimple(y.nick); n.push(y) } e.setName(a.result.info.discu_name); e.setMembers(n); e.setOwner(a.result.info.discu_owner); e.setIsLoadInfo(!0); f.notifyObservers(this, "DiscuInfoChange", e) }; var A, H = function(a, e) { A = alloy.layout.messagebox('<div style="width:100%; height:100%; background-color:#FFFFFF; line-height:30px;">\t\t\t\t\t\t<div style ="text-align: left; padding-left: 10px;">\t\t\t\t\t\t\t<div>\u4e3a\u4e86\u60a8\u7684\u8d26\u53f7\u5b89\u5168\uff0c\u8bf7\u6267\u884c\u8eab\u4efd\u9a8c\u8bc1\uff0c\u5728\u8f93\u5165\u6846\u8f93\u5165\u4e0b\u56fe\u4e2d\u7684\u9a8c\u8bc1\u7801</div>\t\t\t\t\t\t\t<div>\u9a8c\u8bc1\u7801: <input id="eqq_verify_input_code" type="text" style="vertical-align:middle;" /></div>\t\t\t\t\t\t\t<img style="float:left;margin-right:10px" id="eqq_verify_img_code" src="" />\t\t\t\t\t\t\t<a style="display:inline;line-height:60px;" id="eqq_verify_a_code" alt="\u770b\u4e0d\u6e05\u6362\u4e00\u5f20" href="">\u770b\u4e0d\u6e05\u6362\u4e00\u5f20</a>\t\t\t\t\t\t\t<div id="eqq_verify_img_code_wrong" style="display:none;color:red;width:65px;">\u9a8c\u8bc1\u7801\u9519\u8bef</div>\t\t\t\t\t\t</div>\t\t\t\t\t</div>', { title: "\u8eab\u4efd\u9a8c\u8bc1", resize: !0, width: 380, height: 123, hasOkButton: !0, isSetCentered: !0 }); var b = $D.id("eqq_verify_img_code"), c = $D.id("eqq_verify_a_code"), n = $D.id("eqq_verify_input_code"), h = null; f.on(b, "load", function() { h = d.cookie.get("verifysession", alloy.CONST.MAIN_DOMAIN) }); f.on(c, "click", function(a) { a.preventDefault(); $D.id("eqq_verify_img_code").src = "http://captcha.qq.com/getimage?aid=1003901&" + Math.random() }); f.addObserver(A, "clickOkButton", function() { var b = n.value; if (b && h) return e(a, b, h), !1; n.focus(); $D.id("eqq_verify_input_code").innerHTML = "\u8bf7\u5148\u8f93\u5165\u9a8c\u8bc1\u7801\uff01"; return !1 }); n.focus(); f.on(n, "keydown", function(a) { a.keyCode == 13 && f.notifyObservers(A, "clickOkButton") && setTimeout(function() { A.close() }, 0) }); $D.id("eqq_verify_img_code").src = "http://captcha.qq.com/getimage?aid=1003901&" + Math.random() }; this.createDiscu = function(a) { a = a || []; if (a.length < 2) return !1; var e = [], b = [], c = [], d; for (d in a) { var f = a[d]; f.uin = f.uin.toString(); f.gid && f.gid.length > 3 ? (b.push(f.uin), c.push(f.gid.toString())) : e.push(f.uin) } I({ discu_name: "", mem_list: e, mem_list_u: b, mem_list_g: c }) }; var I = g.sendCreateDiscu = function(a, e, b) { a = a || {}; a.code = e; a.verifysession = b; a.clientid = EQQ.RPCService.getClientId(); a.psessionid = EQQ.getPsessionid(); a.vfwebqq = alloy.portal.getVfWebQQ(); EQQ.RPCService.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/create_discu", { context: g, method: "POST", data: { r: d.json.stringify(a) }, arguments: a, onSuccess: function(e) { if (e.retcode === 0) { var b = !1; !d.isUndefined(e.result.result) && e.result.result > 0 && (b = !0); setTimeout(function() { try { A && A.close() } catch (a) { } }, 0); b ? (alloy.layout.alert("\u521b\u5efa\u8ba8\u8bba\u7ec4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5!"), d.error("\u521b\u5efa\u8ba8\u8bba\u7ec4\u5931\u8d25")) : g.sendCreateDiscuSuccess(e) } else e.retcode === 1E3 ? H(a, function(a, e, b) { g.sendCreateDiscu(a, e, b) }) : e.retcode === 1001 ? ($D.id("eqq_verify_img_code_wrong").style.display = "inline", $D.id("eqq_verify_img_code").src = "http://captcha.qq.com/getimage?aid=1003901&" + Math.random(), $D.id("eqq_verify_input_code").value = "", $D.id("eqq_verify_input_code").focus()) : (setTimeout(function() { try { A && A.close() } catch (a) { } }, 0), alloy.layout.alert("\u521b\u5efa\u8ba8\u8bba\u7ec4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5!"), d.error("\u521b\u5efa\u8ba8\u8bba\u7ec4\u5931\u8d25")) }, onError: function() { alloy.layout.alert("\u521b\u5efa\u8ba8\u8bba\u7ec4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5!"); d.error("\u521b\u5efa\u8ba8\u8bba\u7ec4\u5931\u8d25") } }) }; this.sendCreateDiscuSuccess = function(a) { a = g.encodeDid(a.result.did); g.addDiscu({ did: a, name: "" }); var e = g.getDiscuById(a); e.setHadModified(!1); f.notifyObservers(g, "AddNewDiscuToList", e); f.notifyObservers(g, "ToStartDiscuChat", a) }; this.sendModifyDiscuTopic = function(a) { a.did = g.decodeDid(a.did); a = a || {}; a.dtype = 1; a.clientid = EQQ.RPCService.getClientId(); a.psessionid = EQQ.getPsessionid(); a.vfwebqq = alloy.portal.getVfWebQQ(); EQQ.RPCService.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/modify_discu_info", { context: g, method: "POST", data: { r: d.json.stringify(a) }, arguments: a, onSuccess: function(e) { if (e.retcode === 0) if (!d.isUndefined(e.result.error) && e.result.error == 2) alloy.layout.alert("\u4fee\u6539\u8ba8\u8bba\u7ec4\u4e3b\u9898\u5931\u8d25."), d.error("\u4fee\u6539\u8ba8\u8bba\u7ec4\u4e3b\u9898\u5931\u8d25,\u6709\u810f\u8bcd"), e = g.encodeDid(a.did), e = g.getDiscuById(e), f.notifyObservers(g, "ModifyDiscuTopicSuccess", e); else if (!d.isUndefined(e.result.error) && e.result.error == 1) O(a); else { d.info("\u4fee\u6539\u8ba8\u8bba\u7ec4\u4e3b\u9898\u6210\u529f"); var e = a, b = g.encodeDid(e.did), b = g.getDiscuById(b); b.setName(e.discu_name); b.setHadModified(!0); f.notifyObservers(g, "ModifyDiscuTopicSuccess", b) } else alloy.layout.alert("\u4fee\u6539\u8ba8\u8bba\u7ec4\u4e3b\u9898\u5931\u8d25."), d.error("\u4fee\u6539\u8ba8\u8bba\u7ec4\u4e3b\u9898\u5931\u8d25") }, onError: function() { d.error("\u4fee\u6539\u8ba8\u8bba\u7ec4\u4e3b\u9898\u5931\u8d25") } }) }; this.sendQuitDisc = function(a) { var a = a || {}, e = a.did; a.did = g.decodeDid(a.did); a.clientid = EQQ.RPCService.getClientId(); a.psessionid = EQQ.getPsessionid(); a.vfwebqq = alloy.portal.getVfWebQQ(); EQQ.RPCService.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/quit_discu", { context: g, data: a, arguments: a, onSuccess: function(a) { a.retcode === 0 ? (a = { did: e }, g.removeDiscu(a), f.notifyObservers(g, "QuitDiscuSuccess", a)) : (alloy.layout.alert("\u9000\u51fa\u8ba8\u8bba\u7ec4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5!"), d.error("\u9000\u51fa\u8ba8\u8bba\u7ec4\u5931\u8d25")) }, onError: function() { alloy.layout.alert("\u9000\u51fa\u8ba8\u8bba\u7ec4\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5!"); d.error("\u9000\u51fa\u8ba8\u8bba\u7ec4\u5931\u8d25") } }) }; this.modifyDiscuMembers = function(a, e) { a = a || []; if (a.length < 1) return !1; var b = [], c = [], d = [], f; for (f in a) { var n = a[f]; n.uin = n.uin.toString(); n.gid && n.gid.length > 3 ? (c.push(n.uin), d.push(n.gid.toString())) : b.push(n.uin) } e.mem_list = b; e.mem_list_u = c; e.mem_list_g = d; g.sendModifyMember(e) }; this.sendModifyMember = function(a) { var a = a || {}, e = a.did; a.did = g.decodeDid(a.did); a.clientid = EQQ.RPCService.getClientId(); a.psessionid = EQQ.getPsessionid(); a.vfwebqq = alloy.portal.getVfWebQQ(); EQQ.RPCService.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/change_discu_mem", { context: g, method: "POST", data: { r: d.json.stringify(a) }, arguments: a, onSuccess: function(a) { a.retcode === 0 ? (y(e), d.info("\u4fee\u6539\u8ba8\u8bba\u7ec4\u6210\u5458\u6210\u529f")) : (alloy.layout.alert("\u9080\u8bf7\u6210\u5458\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5!"), d.error("\u4fee\u6539\u8ba8\u8bba\u7ec4\u6210\u5458\u5931\u8d25")) }, onError: function() { alloy.layout.alert("\u9080\u8bf7\u6210\u5458\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5!"); d.error("\u4fee\u6539\u8ba8\u8bba\u7ec4\u6210\u5458\u5931\u8d25") } }) }; this.sendGetDiscuMemberStatus = function(a) { a = a || {}; a.did = g.decodeDid(a.did); a.clientid = EQQ.RPCService.getClientId(); a.psessionid = EQQ.getPsessionid(); a.vfwebqq = alloy.portal.getVfWebQQ(); EQQ.RPCService.send(EQQ.CONST.CONN_SERVER_DOMAIN + "channel/get_discu_status_info", { context: g, data: a, arguments: a, onSuccess: function(a) { a.retcode === 0 ? g.getDiscuMemberStatusSuccess(a) : d.error("\u83b7\u53d6\u8ba8\u8bba\u7ec4\u6210\u5458\u72b6\u6001\u5931\u8d25") }, onError: function() { d.error("\u83b7\u53d6\u8ba8\u8bba\u7ec4\u6210\u5458\u72b6\u6001\u5931\u8d25") } }) }; this.getDiscuMemberStatusSuccess = function(a) { var e = g.encodeDid(a.arguments.did), a = g.getDiscuById(e).modifyMemberStatus(a.result.mem_status); a.length > 0 && f.notifyObservers(g, "GetDiscuMemberStatusSuccess", { did: e, list: a }) }; this.isDiscuPrompt = function(a) { a = this.getDiscuById(a); switch (parseInt(a.mask)) { case 0: return !0; case 1: return !1; case 2: return !1 } }; this.sendChangeDiscuMask = function(a) { for (var e = { idx: EQQ.index, port: EQQ.port }, b = 0; b < x.length; b++) { var c = x[b], f = g.decodeDid(c.did); e[f] = a.uin == c.did ? a.mask.toString() : c.mask.toString() } qqweb.rpcService.sendMessageFilterConfig({ onSuccess: function() { var e = { uin: a.uin, mask: a.mask }; g.getDiscuById(e.uin).setMask(e.mask) }, context: this, data: { retype: 1, app: "EQQ", itemlist: '{"discumask":' + d.json.stringify(e) + "}" } }) }; this.getAndAddDiscu = function(a) { a = { did: a.did, name: a.name }; g.addDiscu(a); a = g.getDiscuById(a.did); f.notifyObservers(g, "AddNewDiscuToList", a); f.notifyObservers(g, "AddDiscuByMsgSuccess", a) }; this.sendGetDiscuSessionSignature = function(a) { var e = this.decodeDid(this.getUserByUin(a).did); EQQ.RPCService.sendGetDiscuSessionSignature({ group_uin: e, to_uin: a }) }; var Q = function(a) { var e = g.getUserByUin(a.arguments.to_uin); if (a.result.verify_sig.type === 0 && a.result.group_sig.type === 0) e.chatSession = a.result, f.notifyObservers(g, "GroupBuddySessionSignatureChange", e.uin) }, O = function(a) { alloy.layout.alert("\u8ba8\u8bba\u7ec4\u88ab\u5220\u9664!"); a.did = g.encodeDid(a.did); g.removeDiscu(a); f.notifyObservers(g, "QuitDiscuSuccess", a) } }) })(); (function() { WebqCore.register("EQQ.Model.ChatMsg", function(d) { var g = this, f = d.event, j = {}, t = [], b = [], a = {}, c = [], p = {}, m = [], z = {}, q = null, o = [], i = null, r = {}, k = {}, D = [], B = {}, E = 0, w, x = 0, C; w = (new Date).getTime(); w = (w - w % 1E3) / 1E3; w = w % 1E4 * 1E4; var F = function() { E++; return w + E }, u = function(a) { d.isNumber(a) && (a *= 1E3); return d.date.format(new Date(a), "YYYY-MM-DD hh:mm:ss") }, s = function(a) { if (d.isString(a.content[1]) && a.content[1].substr(0, 4) === "\u3000 \u3000") { RegExp(/(\?.*)\s?$/).test(decodeURIComponent(a.content[1])); var b = d.string.mapQuery(RegExp.$1).vk; if (!g.uinToVideo) g.uinToVideo = []; a = a.from_uin; g.uinToVideo[a] = { k: b }; f.notifyObservers(g, "AskForVideo", { uin: a, k: b }) } }; this.init = function() { j = {}; b = []; a = {}; c = []; p = {}; i = null; r = {}; k = {}; D = []; B = {}; x = E = 0; C = null; f.addObserver(EQQ.RPCService, "SendMsgSuccess", d.bind(this.onSendMsgSuccess, this)); f.addObserver(EQQ.RPCService, "PollSuccess", d.bind(this.onPollSuccess, this)); f.addObserver(EQQ.RPCService, "SendMsgError", d.bind(this.onSendMsgError, this)); f.addObserver(EQQ.RPCService, "SendGetGroupCustomFaceKeySuccess", d.bind(this.onSendGetGroupCustomFaceKeySuccess, this)); f.addObserver(EQQ.RPCService, "sendGetOfflinePicUrlSuccess", d.bind(this.onGetOfflinePicUrlSuccess, this)); f.addObserver(EQQ.RPCService, "getSendPicUrlError", d.bind(this.onSetSendPicUrlError, this)); f.addObserver(EQQ.Model.BuddyList, "AddDiscuByMsgSuccess", d.bind(this.onAddDiscuByMsgSuccess, this)) }; this.getMsgId = F; this.setGroupCustomFaceKey = function(a) { x = d.now(); C = { key: a.gface_key, signature: a.gface_sig } }; this.getGroupCustomFaceKey = function() { return C }; this.isGroupCustomFaceKeyTimeout = function() { return d.now() - x > 432E6 }; this.sendGetGroupCustomFaceKey = function(a) { EQQ.RPCService.sendGetGroupCustomFaceKey({ arguments: { msg: a } }) }; this.onSendGetGroupCustomFaceKeySuccess = function(a) { var b = a.arguments.msg; this.setGroupCustomFaceKey(a.result); this.sendGetGroupCustomFaceInfo(b) }; this.sendGetGroupCustomFaceInfo = function(a) { for (var b = this.getGroupCustomFaceKey(), c = 0; c < a.content.length; c++) { var g = a.content[c]; g[0] === "face" && (g[1] = EQQ.CONST.TRANSFER_TABLE[g[1]]) } if (a.type == "discu") return this.sendDiscuCustomFaceInfo(a), !0; EQQ.RPCService.sendGetGroupCustomFaceInfo({ group_uin: a.to, group_code: EQQ.Model.BuddyList.getGroupByGid(a.to).code, key: b.key, sig: b.signature, content: d.json.stringify(a.content) }); b = F(); c = EQQ.Model.BuddyList.getSelf(); b = { type: a.type, from_uin: 0, sender_uin: c.uin, sender: c, time: u(new Date), content: a.content, msg_id: b, group_code: EQQ.Model.BuddyList.getGroupByGid(a.to).code }; f.notifyObservers(this, "GroupMessageListChange", { gid: a.to, msgList: [b] }) }; this.sendDiscuCustomFaceInfo = function(a) { var b = EQQ.Model.BuddyList.getDiscuById(a.to); b && G(b, a.content); b = this.getGroupCustomFaceKey(); EQQ.RPCService.sendDiscuMsg({ did: EQQ.Model.BuddyList.decodeDid(a.to), key: b.key, sig: b.signature, content: d.json.stringify(a.content) }); var b = F(), c = EQQ.Model.BuddyList.getSelf(), b = { type: a.type, from_uin: 0, sender_uin: c.uin, sender: c, time: u(new Date), content: a.content, msg_id: b, did: a.to }; f.notifyObservers(this, "DiscuMessageListChange", { did: a.to, msgList: [b] }) }; this.callbackSendPic = function(a) { if (a.filesize > 1048576) a.retcode = "100", a.maxFileSize = "1MB", f.notifyObservers(this, "uploadSendPicError", a); else if (a.retcode != 0) f.notifyObservers(this, "uploadSendPicError", a); else { r[a.filepath] = a; var b = EQQ.Model.BuddyList.getSelf(); EQQ.RPCService.sendGetOfflinePicUrl({ f_uin: b.uin, file_path: a.filepath, clientid: g.getClientidFromRpc() }); alloy.util.report2m(133171) } }; this.onGetOfflinePicUrlSuccess = function(a) { r[a.result.file_path].fileurl = a.result.url; if (r[a.result.file_path]) a.fileid = r[a.result.file_path].fileid; f.notifyObservers(this, "GetSendPicUrlSuccess", a) }; this.onSetSendPicUrlError = function(a) { if (r[a.result.file_path]) a.fileid = r[a.result.file_path].fileid; f.notifyObservers(this, "getSendPicUrlError", a) }; this.getSendPicUrlByFilePath = function(a) { return typeof r[a] == "undefined" ? "" : r[a].fileurl }; this.callbackSendPicGroup = function(a) { if (a.ret === 0) { var b = /[A-Fa-f0-9]{32}\.[A-Za-z]{3}/, c = a.msg; c.length > 36 && (c = c.substring(0, 36)); f.notifyObservers(this, "getSendPicGroupSuccess", c) } else a.ret === 4 ? (b = /[A-Fa-f0-9]{32}\.[A-Za-z]{3}/, c = a.msg, c.length > 36 ? (c = c.substring(0, 36), b.test(c) ? f.notifyObservers(this, "getSendPicGroupSuccess", c) : f.notifyObservers(this, "sendPicGroupError", a)) : f.notifyObservers(this, "sendPicGroupError", a)) : f.notifyObservers(this, "sendPicGroupError", a) }; this.sendMsg = function(a) { var b = F(), c = "", c = {}, a = a || {}; a.type = a.type || "single"; for (var g = typeof a.attach != "undefined" && a.attach ? a.attach : "", m = EQQ.Model.BuddyList.getSelf(), c = 0; c < a.content.length; c++) { var i = a.content[c]; i[0] === "face" && (i[1] = EQQ.CONST.TRANSFER_TABLE[i[1]]) } c = d.json.stringify(a.content); if (a.type === "group") c = { group_uin: a.to, content: c, msg_id: b }, EQQ.RPCService.sendGroupMsg(c), b = { type: a.type, from_uin: 0, sender_uin: m.uin, sender: m, time: u(new Date), content: a.content, msg_id: b, group_code: EQQ.Model.BuddyList.getGroupByGid(a.to).code }, f.notifyObservers(this, "GroupMessageListChange", { gid: a.to, msgList: [b] }); else if (a.type === "discu") (g = EQQ.Model.BuddyList.getDiscuById(a.to)) && G(g, a.content), c = { did: EQQ.Model.BuddyList.decodeDid(a.to), content: c, msg_id: b }, EQQ.RPCService.sendDiscuMsg(c), b = { type: a.type, from_uin: 0, sender_uin: m.uin, sender: m, time: u(new Date), content: a.content, msg_id: b, did: a.to }, f.notifyObservers(this, "DiscuMessageListChange", { did: a.to, msgList: [b] }); else { i = EQQ.Model.BuddyList.getUserByUin(a.to); if (i.type === "groupBuddy") { var k = i.currentId, c = { to: a.to, group_sig: i.chatSession[k], face: a.face, content: c, msg_id: b, service_type: isNaN(k) ? 1 : 0 }; EQQ.RPCService.sendGroupBuddyMsg(c) } else c = { to: a.to, face: a.face, content: c, msg_id: b }, EQQ.RPCService.sendMsg(c); b = { type: a.type, from_uin: 0, sender_uin: m.uin, sender: m, time: u(new Date), content: a.content, msg_id: b, attach: g }; a.isIgnoreHistory || f.notifyObservers(this, "MessageListChange", { uin: a.to, msgList: [b] }) } a.isIgnoreHistory || (j[a.to] ? j[a.to].msgList.push(b) : j[a.to] = { last: 0, msgList: [b] }) }; this.addMsgToList = function(a) { var b = EQQ.Model.BuddyList.getSelf(), c = F(), b = { type: a.type, from_uin: a.from_uin, sender_uin: b.uin, sender: b, time: u(new Date), content: a.content, msg_id: c, attach: typeof a.attach != "undefined" && a.attach ? a.attach : "" }; f.notifyObservers(this, "MessageListChange", { uin: a.to, msgList: [b] }); j[a.to] ? j[a.to].msgList.push(b) : j[a.to] = { last: 0, msgList: [b] } }; this.onSendMsgSuccess = function(a) { f.notifyObservers(this, "SendMsgError", a) }; this.onSendMsgError = function(a) { f.notifyObservers(this, "SendMsgError", a) }; this.getMsgHistory = function(a) { j[a] && f.notifyObservers(this, "MessageListChange", { uin: a, msgList: j[a].msgList }) }; this.getGroupMsgHistory = function(a) { j[a] && f.notifyObservers(this, "GroupMessageListChange", { gid: a, msgList: j[a].msgList }) }; this.clearChatLog = function(a) { j[a] && (j[a] = { last: 0, msgList: [] }) }; this.receiveMsg = function(a) { var b = a.from_uin, c = !1, g = 0, m = typeof a.attach != "undefined" && a.attach ? a.attach : "", m = { type: "single", from_uin: b, sender_uin: b, sender: EQQ.Model.BuddyList.getUserByUin(b), msg_id: a.msg_id, content: a.content, time: u(a.time), raw_time: a.time, attach: m }; if (j[b]) { for (var i = j[b].msgList, k = i.length, a = 0; a < k; a++) if (i[a].msg_id == m.msg_id) { c = !0; d.out("\u53d1\u73b0\u91cd\u590d\u4e2a\u4eba\u6d88\u606f\uff0cmsg_id\uff1a" + m.msg_id); break } c || (i.push(m), g++) } else j[b] = { last: 0, msgList: [] }, j[b].msgList.push(m), g++; B[b] = m.msg_id; c = { last: 0, msgList: [] }; if (g > 0) { for (a = 0; a < g; a++) c.msgList.push(j[b].msgList[j[b].msgList.length - (g - a)]); j[b].last = 0; f.notifyObservers(this, "MessageListChange", { uin: b, msgList: c.msgList }); f.notifyObservers(EQQ, "MessageReceive", { uin: b, msgList: c.msgList }) } }; this.receiveSystemMsg = function(a) { var b; switch (a.type) { case "added_buddy_sig": case "added_buddy_nosig": b = "\u6dfb\u52a0\u60a8\u4e3a\u597d\u53cb"; break; case "verify_pass_add": b = "\u63a5\u53d7\u4e86\u60a8\u7684\u8bf7\u6c42\uff0c\u5e76\u6dfb\u52a0\u60a8\u4e3a\u597d\u53cb"; var c = { uin: a.from_uin, status: alloy.util.code2state(a.stat), client_type: a.client_type }; f.notifyObservers(EQQ.Model.BuddyList, "AddANewBuddy", { tuin: a.from_uin, gid: a.group_id, newstate: c }); break; case "verify_pass": b = "\u63a5\u53d7\u4e86\u60a8\u7684\u8bf7\u6c42"; c = { uin: a.from_uin, status: alloy.util.code2state(a.stat), client_type: a.client_type }; f.notifyObservers(EQQ.Model.BuddyList, "AddANewBuddy", { tuin: a.from_uin, gid: 0, newstate: c }); break; case "verify_required": b = "\u8bf7\u6c42\u6dfb\u52a0\u60a8\u4e3a\u597d\u53cb\uff0c\u9644\u52a0\u4fe1\u606f(" + (a.msg || "\u65e0") + ")"; break; case "verify_rejected": b = "\u62d2\u7edd\u4e86\u60a8\u7684\u8bf7\u6c42\uff0c\u9644\u52a0\u4fe1\u606f(" + (a.msg || "\u65e0") + ")"; break; default: b = a.type } f.notifyObservers(EQQ, "MessageReceive", { msgList: [{ type: "add_buddy", sender: { htmlShowName: String(a.account) }, from_uin: a.from_uin, title: a.account, content: b, msg_id: a.seq, opt: { uin: a.from_uin, account: a.account, nick: a.account, allow: a.allow, type: a.type, msg: a.msg, gid: a.group_id } }] }) }; this.receiveSysGroupMsg = function(a) { var b, c = alloy.portal.getUin(); switch (a.type) { case "group_join": b = c == a.new_member ? "\u60a8\u5df2\u7ecf\u52a0\u5165\u7fa4" + a.t_gcode : a.t_new_member + "\u5df2\u52a0\u5165\u7fa4" + a.t_gcode + "\u3002"; break; case "group_leave": a.op_type == 1 ? b = c == a.admin_uin ? "\u60a8\u5df2\u7ecf\u6210\u529f\u5730\u89e3\u6563\u4e86\u7fa4" + a.t_gcode : "\u7fa4" + a.t_gcode + "\u5df2\u7ecf\u88ab\u89e3\u6563" : a.op_type == 2 ? c != a.old_member && (b = a.t_old_member + "\u9000\u51fa\u7fa4" + a.t_gcode + "\u3002") : a.op_type == 3 && (b = c == a.old_member ? "\u60a8\u5df2\u7ecf\u88ab\u79fb\u9664\u51fa\u7fa4" + a.t_gcode : a.t_old_member + "\u5df2\u88ab\u7ba1\u7406\u5458\u79fb\u9664\u51fa\u7fa4" + a.t_gcode + "\u3002"); a.type = a.type + "_" + a.op_type; break; case "group_request_join": b = a.t_request_uin + "\u7533\u8bf7\u52a0\u5165\u7fa4" + a.t_gcode; break; case "group_request_join_agree": b = "\u7ba1\u7406\u5458\u5df2\u540c\u610f\u60a8\u52a0\u5165\u7fa4" + a.t_gcode; break; case "group_request_join_deny": b = "\u7ba1\u7406\u5458\u5df2\u62d2\u7edd\u60a8\u52a0\u5165\u7fa4" + a.t_gcode; break; case "group_admin_op": if (a.op_type == 0 || a.op_type == 2) b = c == a.uin ? "\u60a8\u5df2\u7ecf\u88ab\u53d6\u6d88\u7fa4" + a.t_gcode + "\u7684\u7ba1\u7406\u5458\u8eab\u4efd\u3002" : a.t_uin + "\u5df2\u7ecf\u88ab\u53d6\u6d88\u7fa4" + a.t_gcode + "\u7684\u7ba1\u7406\u5458\u8eab\u4efd\u3002"; else if (a.op_type == 1 || a.op_type == 3) b = c == a.uin ? "\u60a8\u5df2\u6210\u4e3a\u7fa4" + a.t_gcode + "\u7684\u7ba1\u7406\u5458\u3002" : a.t_uin + "\u5df2\u6210\u4e3a\u7fa4" + a.t_gcode + "\u7684\u7ba1\u7406\u5458\u3002"; else if (a.op_type == 255) if (c == a.old_uin) b = "\u60a8\u5df2\u7ecf\u6210\u529f\u5c06\u7fa4" + a.t_gcode + "\u7684\u7fa4\u4e3b\u8eab\u4efd\u8f6c\u8ba9\u7ed9" + a.t_new_uin + "\u3002"; else if (c == a.new_uin) b = a.t_gcode + "\u7684\u7fa4\u4e3b" + a.t_old_uin + "\u5df2\u7ecf\u5c06\u8be5\u7fa4\u8f6c\u8ba9\u7ed9\u60a8\uff0c\u73b0\u5728\u60a8\u4e3a\u8be5\u7fa4\u7fa4\u4e3b\u3002"; else return !1; a.type = a.type + "_" + a.op_type; break; case "group_create": b = "\u60a8\u5df2\u7ecf\u6210\u529f\u521b\u5efa\u7fa4" + a.t_gcode; break; default: return !1 } f.notifyObservers(EQQ, "MessageReceive", { msgList: [{ type: "join_group", sender: { htmlShowName: String(a.from_uin) }, from_uin: a.from_uin + "_" + a.type, title: "\u7fa4\u7cfb\u7edf\u6d88\u606f", content: b, msg_id: a.msg_id, opt: { uin: a.from_uin || 0, nick: a.from_uin, allow: a.allow, type: a.type, msg: a.msg || "", gid: a.from_uin, value: a } }] }) }; this.receiveGroupMsg = function(a) { var b = a.from_uin, c = !1, g = 0, m = { type: "group", from_uin: b, sender_uin: a.send_uin, sender: EQQ.Model.BuddyList.getUserByUin(a.send_uin), msg_id: a.msg_id, content: a.content, group_code: EQQ.Model.BuddyList.getGroupByGid(b).code, time: u(a.time), raw_time: a.time }; if (j[b]) { for (var a = j[b].msgList.length, i = 0; i < a; i++) { var k = j[b].msgList[i]; if (m.sender_uin == k.sender_uin && k.msg_id == m.msg_id) { c = !0; d.out("\u53d1\u73b0\u91cd\u590d\u7fa4\u6d88\u606f\uff0cmsg_id\uff1a" + m.msg_id); break } } c || (j[b].msgList.push(m), g++) } else j[b] = { last: 0, msgList: [] }, j[b].msgList.push(m), g++; B[b] = m.msg_id; c = j[b].msgList; a = c.length; m = []; if (g > 0) { for (i = g; i > 0; i--) m.push(c[a - i]); j[b].last = 0; f.notifyObservers(this, "GroupMessageListChange", { gid: b, msgList: m }); f.notifyObservers(EQQ, "MessageReceive", { gid: b, msgList: m }) } }; this.addMessageBoxUserList = function(e) { var c = a[e.from_uin]; c ? d.array.remove(b, c) : f.notifyObservers(this, "flexStartJump", e.from_uin); a[e.from_uin] = e; b.push(e); f.notifyObservers(this, "MessageBoxUserListChange", this.getMessageBoxUserList()) }; this.getMessageBoxUserList = function() { return b }; this.removeMessageBoxUserList = function(e) { var c = a[e]; c && d.array.remove(b, c); delete a[e]; f.notifyObservers(this, "flexStopJump", e); f.notifyObservers(this, "MessageBoxUserListChange", this.getMessageBoxUserList()) }; this.addMessageBoxGroupList = function(a) { var b = p[a.from_uin]; b && d.array.remove(c, b); p[a.from_uin] = a; c.push(a); f.notifyObservers(this, "MessageBoxGroupListChange", this.getMessageBoxGroupList()) }; this.getMessageBoxGroupList = function() { return c }; this.removeMessageBoxGroupList = function(a) { var b = p[a]; b && d.array.remove(c, b); delete p[a]; f.notifyObservers(this, "MessageBoxGroupListChange", this.getMessageBoxGroupList()) }; this.preloadGroupMessageImages = function(a, b) { var b = b || 0, c = a.content, f = a.send_uin, g = "", g = "", m = null, i = a.group_code || EQQ.Model.BuddyList.decodeDid(a.did), k = a.time, l = "", j = !0; a.did && (j = !1); for (var t = function() { m = null; d.out("preload-image-success!"); j && alloy.rpcService.reportQstatic("Monitor|Group|imgperload|Succeed") }, p = function() { m = null; d.out("preload-image-error!"); j && alloy.rpcService.reportQstatic("Monitor|Group|imgperload|Failed") }, o = 0, h = c.length; o < h; o++) if (c[o][0] === "cface") l = c[o][1], g = l.server.toString().split(":"), g = EQQ.CONST.CHAT_PIC_SERVER + "cgi-bin/get_group_pic?type=" + b + "&gid=" + i + "&uin=" + f + "&rip=" + g[0] + "&rport=" + g[1] + "&fid=" + l.file_id + "&pic=" + l.name + "&vfwebqq=" + alloy.portal.getVfWebQQ() + "&t=" + k, m = new Image, m.src = g, m.onload = t, m.onerror = p }; this.onPollSuccess = function(a) { if (a) { a.sort(function(a, b) { return (a.value && a.value.time || 0) < (b.value && b.value.time || 0) ? 1 : -1 }); for (var b = a.length - 1; b >= 0; b--) { var c = a[b]; switch (c.poll_type) { case "message": c = c.value; EQQ.Model.BuddyList.isUser(c.from_uin) ? this.receiveBuddyMsg(c) : c.msg_type === 9 ? this.receiveStrangerMsg(c) : (c.msg_type === 31 || c.msg_type === 140) && this.receiveGroupBuddyMsg(c); break; case "sess_message": c = c.value; this.receiveGroupBuddyMsg(c); break; case "group_message": c = c.value; this.addMessageBoxGroupList(c); this.preloadGroupMessageImages(c); this.receiveGroupMsg(c); break; case "kick_message": d.out("\u8e22\u7ebf\u901a\u77e5\uff1a" + c.value); var c = c.value, g = "\u60a8\u7684\u5e10\u53f7\u5728\u53e6\u4e00\u5730\u70b9\u767b\u5f55\uff0c\u60a8\u5df2\u88ab\u8feb\u4e0b\u7ebf\u3002\u5982\u6709\u7591\u95ee\uff0c\u8bf7\u767b\u5f55:safe.qq.com\u4e86\u89e3\u66f4\u591a\u3002"; if (c.show_reason !== 0) g = c.reason; f.notifyObservers(EQQ, "SelfOffline", { message: g, action: "none" }); break; case "file_message": d.out("\u6587\u4ef6\u4fe1\u9053\u901a\u77e5" + c.value); this.receiveFile(c.value); break; case "system_message": d.out("\u6536\u5230\u7cfb\u7edf\u6d88\u606f" + c.value); this.receiveSystemMsg(c.value); f.notifyObservers(EQQ, "SystemMessageRecive", c.value); break; case "filesrv_transfer": d.out("\u6587\u4ef6\u4f20\u8f93\u6d88\u606f" + c.value); this.receiveTransferMsg(c.value); break; case "tips": d.out("\u6536\u5230tips\u6d88\u606f" + c.value); this.receiveTipsMsg(c.value); break; case "sys_g_msg": d.out("\u6536\u5230\u7fa4\u7cfb\u7edf\u6d88\u606f" + c.value); this.receiveSysGroupMsg(c.value); break; case "av_request": d.out("\u6536\u5230\u89c6\u9891\u8bf7\u6c42" + c.value); this.receiveVideoMsg(c.value); break; case "discu_message": d.out("\u6536\u5230\u8ba8\u8bba\u7ec4\u6d88\u606f" + c.value), this.receiveDiscuMsg(c.value) } } } }; this.receiveBuddyMsg = function(a) { s(a); this.addMessageBoxUserList(a); this.receiveMsg(a) }; this.receiveStrangerMsg = function(a) { var b = a.from_uin, c = { uin: b }, m = EQQ.Model.BuddyList.isStranger(b), i = function() { if (!m) { var b = EQQ.Model.BuddyList.createUser(c); b.type = "stranger"; EQQ.Model.BuddyList.addStranger(b); b.setClassId(EQQ.hash.userClassType.stranger); EQQ.Model.BuddyList.setState(b.uin, "online", "10000"); f.notifyObservers(g, "NewStranger", b) } s(a); g.addMessageBoxUserList(a); g.receiveMsg(a); d.out("receiveStrangerMsg") }; m ? i() : alloy.rpcService.sendGetUserInfo_with_code(b, "", "", function(a) { if (a.retcode === 0) c = a.result; i() }, function() { i() }) }; this.receiveGroupBuddyMsg = function(a) { var b = a.from_uin, c, m = { uin: b }, i = EQQ.Model.BuddyList.isUser(b), k = function() { i ? c = EQQ.Model.BuddyList.getUserByUin(b) : (c = EQQ.Model.BuddyList.createUser(m), c.type = "groupBuddy", EQQ.Model.BuddyList.addStranger(c), c.setClassId(EQQ.hash.userClassType.stranger), EQQ.Model.BuddyList.setState(c.uin, "online", "10000"), f.notifyObservers(g, "NewStranger", c), EQQ.Model.BuddyList.sendGetUserInfo(b)); if ("service_type" in a) if (a.service_type === 0) c.currentId = a.id; else if (a.service_type === 1) c.currentId = EQQ.Model.BuddyList.encodeDid(a.id); s(a); g.addMessageBoxUserList(a); g.receiveMsg(a); d.out("receiveGroupBuddyMsg") }; i ? k() : alloy.rpcService.sendGetUserInfo_with_code(b, "", "", function(a) { if (a.retcode === 0) m = a.result; k() }, function() { k() }) }; this.getMessagePointer = function(a) { return B[a] || 0 }; this.getCustomFaceList = function() { return i }; this.getSendPicList = function() { return r }; this.loadCustomFaceList = function() { f.addObserver(EQQ.RPCService, "SendGetCustomFaceListSuccess", K); EQQ.RPCService.sendGetCustomFaceList() }; var K = function(a) { i = d.array.bubbleSort(a.data, function(a, b) { if (a && b) return a[1] - b[1] }); f.notifyObservers(g, "GetCustomFaceListSuccess", i); f.removeObserver(EQQ.RPCService, "SendGetCustomFaceListSuccess", K) }; this.deleteCustomFace = function(a) { EQQ.RPCService.sendDeleteCustomFace(a) }; this.getClientidFromRpc = function() { return EQQ.RPCService.getClientId() }; this.sendFile = function(a) { var b = [["sendfile", a.filename]], c = { type: "sendfile", name: a.filename, from_uin: a.to_uin, time: (new Date).getTime(), isread: !0, session_id: a.lcid }; k[a.to_uin + "_" + a.lcid] = c; g.addMsgToList({ type: "single", from_uin: 0, to: a.to_uin, content: b, attach: c }) }; this.receiveFile = function(a) { if (a.mode === "recv") { var b = [["rfile", a.name, a.session_id]]; a.content = b; a.attach = { type: "rfile", name: a.name, from_uin: a.from_uin, time: a.time, isread: !1, session_id: a.session_id, msg_type: a.msg_type }; var c = a.from_uin + "_" + a.session_id; k[c] ? k[c] = a.attach : (k[c] = a.attach, this.fileMsgToJumpUserList(a), this.receiveMsg(a)); alloy.util.report2m(133161) } else if (a.mode === "refuse") { if (a.type !== 161) { if (a.cancel_type == 2 && (D[a.session_id] = !0, b = parseInt(a.session_id, 10).toString(2), b.length >= 12)) b = b.substr(b.length - 12, 12), a.session_id = parseInt(b, 2).toString(10); var c = a.from_uin + "_" + a.session_id, d = k[c]; if (typeof d == "undefined") return !1; if (d.isFinished) return !1; else k[c].isFinished = !0; b = [["rffile", d.name]]; d.type = "rffile"; if (a.cancel_type == 2) b = [["wrffile", d.name]], d.type = "wrffile"; else if (a.cancel_type == 3) b = [["rtfile", d.name]], d.type = "rtfile"; a.content = b; a.attach = d; this.fileMsgToJumpUserList(a); this.receiveMsg(a); a.cancel_type != 2 && f.notifyObservers(this, "fromCancenFile", c); alloy.util.report2m(133178) } } else if (a.mode === "send_ack") { b = parseInt(a.session_id, 10).toString(2); if (b.length < 12) return !1; b = b.substr(b.length - 12, 12); a.session_id = parseInt(b, 2).toString(10); c = a.from_uin + "_" + a.session_id; d = k[c]; b = [["wrfile", d.name, d.session_id]]; a.content = b; a.attach = { type: "wrfile", name: d.name, from_uin: d.from_uin, time: a.time, session_id: a.session_id }; this.fileMsgToJumpUserList(a); this.receiveMsg(a); alloy.util.report2m(133179) } }; this.receiveVideoMsg = function(a) { a.content = [["cvideo", "\u5bf9\u65b9\u6b63\u5728\u4f7f\u7528QQ\u5ba2\u6237\u7aef\u5411\u60a8\u53d1\u8d77\u89c6\u9891\u9080\u8bf7\uff0cWebQQ\u6682\u65f6\u4e0d\u80fd\u54cd\u5e94\u5ba2\u6237\u7aef\u89c6\u9891\u9080\u8bf7\uff0c\u4f46\u60a8\u53ef\u4ee5\u4e3b\u52a8\u53d1\u8d77\u89c6\u9891\u3002"]]; a.attach = { type: "cvideo", from_uin: a.from_uin, msg_id: a.msg_id, isCvideo: !0 }; this.fileMsgToJumpUserList(a); this.receiveMsg(a); EQQ.sendMsg(a.from_uin, " \u5bf9\u65b9\u6b63\u5728\u4f7f\u7528WebQQ\u4e0d\u80fd\u54cd\u5e94\u60a8\u7684\u89c6\u9891\u9080\u8bf7\uff0c\u4f46\u5bf9\u65b9\u53ef\u4ee5\u4e3b\u52a8\u53d1\u8d77\uff08\u60a8\u9700\u8981\u70b9\u51fb\u9080\u8bf7\u94fe\u63a5\u8df3\u8f6c\u81f3WebQQ\u4e0e\u597d\u53cb\u8fdb\u884c\u89c6\u9891\u4f1a\u8bdd\uff09\u3002"); qqweb.util.report2im("mining|c2w|invite") }; this.agreeReceiveFile = function(a) { var b = [["agfile", a.name, a.session_id]]; a.type = "agfile"; g.addMsgToList({ type: "single", from_uin: 0, to: a.from_uin, content: b, attach: a }) }; this.refuseReceiveFile = function(a) { var b = [["rffile", a.name, a.session_id]]; a.type = "rffile"; g.addMsgToList({ type: "single", from_uin: 0, to: a.from_uin, content: b, attach: a }); k[a.from_uin + "_" + a.session_id].isFinished = !0; b = g.getClientidFromRpc(); EQQ.RPCService.sendRefuseFile({ to: a.from_uin, lcid: a.session_id, clientid: b }) }; this.getFilesList = function() { return k }; this.fileMsgToJumpUserList = function(a) { if (a.cancel_type && a.cancel_type == 2) return this.addMessageBoxUserList(a), !0; if (typeof a.msg_type === "undefined" && !a.msg_type) { var b = k[a.from_uin + "_" + a.session_id]; if (typeof b.msg_type === "undefined" && !b.msg_type) return !1; a.msg_type = b.msg_type } b = EQQ.Model.BuddyList.isBuddy(a.from_uin); a.msg_type === 9 ? b ? this.addMessageBoxUserList(a) : this.receiveStrangerFileMsg(a) : a.msg_type === 10 ? b && this.receiveStrangerFileMsg(a) : a.msg_type === 31 && this.receiveGroupBuddyFileMsg(a) }; this.receiveStrangerFileMsg = function(a) { var b = a.from_uin; EQQ.Model.BuddyList.isStranger(b) || (b = EQQ.Model.BuddyList.createUser({ uin: b }), EQQ.Model.BuddyList.addStranger(b), b.setClassId(EQQ.hash.userClassType.stranger), EQQ.Model.BuddyList.setState(b.uin, "online", "unknown"), f.notifyObservers(this, "NewStranger", b)); this.addMessageBoxUserList(a); d.out("receiveStrangerFileMsg") }; this.receiveGroupBuddyFileMsg = function(a) { var b = a.from_uin; if (!EQQ.Model.BuddyList.isStranger(b)) { var c = EQQ.Model.BuddyList.createUser({ uin: b }); EQQ.Model.BuddyList.addStranger(c); c.type = "groupBuddy"; c.setClassId(EQQ.hash.userClassType.stranger); EQQ.Model.BuddyList.setState(c.uin, "online", "unknown"); f.notifyObservers(this, "NewStranger", c); EQQ.Model.BuddyList.sendGetUserInfo(b) } this.addMessageBoxUserList(a); d.out("receiveGroupBuddyFileMsg, finish") }; this.receiveTransferMsg = function(a) { var b = a.file_infos[0]; if (b.file_name != "") { var c = "", d = ""; if (b.file_status == 51) c = [["transtimeout", b.file_name, a.lc_id]], d = { type: "transtimeout", name: b.file_name, isread: !0 }; else if (b.file_status == 50) c = [["transerror", b.file_name, a.lc_id]], d = { type: "transerror", name: b.file_name, isread: !0 }; else if (b.file_status == 53) c = [["refusedbyclient", b.file_name, a.lc_id]], d = { type: "refusedbyclient", name: b.file_name, isread: !0 }; else if (b.file_status == 0) c = [["transok", b.file_name, a.lc_id]], d = { type: "transok", name: b.file_name, isread: !0 }, alloy.util.report2m(133176), a.operation == 1 ? alloy.util.report2m(133152) : a.operation == 2 && alloy.util.report2m(133165); else return b.file_status != 10 && alloy.util.report2m(133177), !1; b = k[a.from_uin + "_" + a.lc_id] || {}; if (b.isFinished || typeof D[a.session_id] != "undefined" && D[a.session_id] === !0) return !1; else b.isFinished = !0; g.addMsgToList({ type: "single", from_uin: 0, to: a.to_uin, content: c, attach: d }) } }; this.receiveTipsMsg = function(a) { if ((a.url || "").indexOf("run=mySignature") === -1) return !1; var b = a.txt3.replace("\r\n", ":"); a.content = b; a.type = "mysigntips"; b = { type: "mysigntips", sender: { htmlShowName: String(a.from_uin) }, from_uin: a.from_uin, allow: 1, content: b, msg_id: a.msg_id, opt: { uin: a.from_uin, nick: a.from_uin, msg_id: a.msg_id, type: "mysigntips" } }; a.aMag = b; f.notifyObservers(EQQ, "MessageReceive", { msgList: [b] }) }; this.getMoreLog = function(a) { qqweb.rpcService.sendGetGroupLogByTime({ c: a.total, gid: a.gid, gcode: a.gcode, uk: a.uin, tt: a.time, m: a.precount }, this.getMoreLogSuccess, this.getMoreLogError) }; this.getMoreLogSuccess = function(a) { f.notifyObservers(EQQ.Model.ChatMsg, "GetMoreLogSuccess", a) }; this.getMoreLogError = function(a) { f.notifyObservers(EQQ.Model.ChatMsg, "GetMoreLogError", a); d.error("getMoreLogError") }; this.receiveDiscuMsg = function(a) { a.did = EQQ.Model.BuddyList.encodeDid(a.did); var b = EQQ.Model.BuddyList.getDiscuById(a.did); if (b) this.addMessageBoxDiscuList(a), this.preloadGroupMessageImages(a, 1), this.parseDiscuMsg(a), G(b, a.content); else { o[a.did] = o[a.did] || []; o[a.did].push(a); for (var b = { did: a.did }, c = "", f = 0; f < a.content.length; f++) { var g = a.content[f]; if (d.isArray(g)) if (g[0] == "face") { c = "[\u8868\u60c5]"; break } else { if (g[0] == "cface") { c = "[\u56fe\u7247]"; break } } else { c = $S.cutByBytes(g.toString(), 20); break } } b.name = c; EQQ.Model.BuddyList.getAndAddDiscu(b) } }; this.parseDiscuMsg = function(a) { var b = a.did, c = !1, g = 0, m = { type: "discu", from_uin: b, sender_uin: a.send_uin, sender: EQQ.Model.BuddyList.getUserByUin(a.send_uin), msg_id: a.msg_id, content: a.content, did: b, time: u(a.time), raw_time: a.time }; if (j[b]) { for (var i = j[b].msgList.length, k = 0; k < i; k++) { var t = j[b].msgList[k]; if (m.sender_uin == t.sender_uin && t.msg_id == m.msg_id) { c = !0; d.out("\u53d1\u73b0\u91cd\u590ddiscu\u6d88\u606f\uff0cmsg_id\uff1a" + m.msg_id); break } } c || (j[b].msgList.push(m), g++) } else j[b] = { last: 0, msgList: [] }, j[b].msgList.push(m), g++; B[b] = m.msg_id; c = j[b].msgList; i = c.length; m = []; if (g > 0) { for (k = g; k > 0; k--) m.push(c[i - k]); j[b].last = 0; f.notifyObservers(this, "DiscuMessageListChange", { did: b, msgList: m }); f.notifyObservers(EQQ, "MessageReceive", { did: b, msgList: m }) } q != null && q != a.info_seq && f.notifyObservers(this, "ServerDiscuInfochange", { did: b }); q = a.info_seq }; this.addMessageBoxDiscuList = function(a) { var b = z[a.did]; b && d.array.remove(m, b); z[a.did] = a; m.push(a); f.notifyObservers(this, "MessageBoxDiscuListChange", this.getMessageBoxDiscuList()) }; this.getMessageBoxDiscuList = function() { return m }; this.removeMessageBoxDiscuList = function(a) { var b = z[a]; b && d.array.remove(m, b); delete z[a]; f.notifyObservers(this, "MessageBoxDiscuListChange", this.getMessageBoxDiscuList()) }; this.getDiscuMsgHistory = function(a) { j[a] && f.notifyObservers(this, "DiscuMessageListChange", { did: a, msgList: j[a].msgList }) }; this.onAddDiscuByMsgSuccess = function(a) { var a = o[a.did], b; for (b in a) { var c = a[b]; c.did = EQQ.Model.BuddyList.decodeDid(c.did); this.receiveDiscuMsg(c) } }; var G = function(a, b) { if (!a.notSetName || a.hadModified) return !1; for (var c = { did: a.did }, f = "", g = 0; g < b.length; g++) { var m = b[g]; if (d.isArray(m)) if (m[0] == "face") { f = "[\u8868\u60c5]"; break } else { if (m[0] == "cface") { f = "[\u56fe\u7247]"; break } } else if (!(m == "\n" || m == " ")) { f = $S.cutByBytes(m.toString(), 20); break } } c.discu_name = f; EQQ.Model.BuddyList.sendModifyDiscuTopic(c) }; this.saveHtmlMsg = function(a, b) { t[a] = t[a] || []; t[a].push(b) }; this.getHtmlMsg = function(a) { return d.isUndefined(t[a]) ? "" : t[a].join("") } }) })(); (function() { var d = { statePanel: '<li class="EQQ_statePanel_li" id="EQQ_SetOnline" state="online"><div class="EQQ_stateSelect_icon EQQ_online"></div><div class="EQQ_stateSelect_text">\u6211\u5728\u7ebf\u4e0a</div></li> <li class="EQQ_statePanel_li" id="EQQ_SetCallme" state="callme"><div class="EQQ_stateSelect_icon EQQ_callme"></div><div class="EQQ_stateSelect_text">Q\u6211\u5427</div></li> <li class="EQQ_statePanel_li" id="EQQ_SetAway" state="away"><div class="EQQ_stateSelect_icon EQQ_away"></div><div class="EQQ_stateSelect_text">\u79bb\u5f00</div></li> <li class="EQQ_statePanel_li" id="EQQ_SetBusy" state="busy"><div class="EQQ_stateSelect_icon EQQ_busy"></div><div class="EQQ_stateSelect_text">\u5fd9\u788c</div></li> <li class="EQQ_statePanel_li" id="EQQ_SetSilent" state="silent"><div class="EQQ_stateSelect_icon EQQ_silent"></div><div class="EQQ_stateSelect_text">\u8bf7\u52ff\u6253\u6270</div></li> <li class="EQQ_statePanel_li" id="EQQ_SetHidden" state="hidden"><div class="EQQ_stateSelect_icon EQQ_hidden"></div><div class="EQQ_stateSelect_text">\u9690\u8eab</div></li> <li class="EQQ_statePanel_li" id="EQQ_SetOffline" state="offline"><div class="EQQ_stateSelect_icon EQQ_offline"></div><div class="EQQ_stateSelect_text">\u79bb\u7ebf</div></li> <li class="EQQ_statePanel_li EQQ_SetSound statusBar_sound_open" id="EQQ_SetSound"><div class="EQQ_stateSelect_icon EQQ_SetSound_icon"></div><div class="EQQ_stateSelect_text">\u9759\u97f3</div></li>', groupMaskPanel: '<a id="GroupMask_Costom" state="0" class="simpleMenuItem" href="###"><div class="selectedIcon"></div>\u4f7f\u7528\u7fa4\u81ea\u8eab\u7684\u6d88\u606f\u8bbe\u7f6e</a>\t\t\t\t\t\t<a id="GroupMask_Prompt" state="1" class="simpleMenuItem" href="###"><div class="selectedIcon"></div>\u6240\u6709\u7fa4\u63a5\u6536\u5e76\u63d0\u793a\u6d88\u606f</a>\t\t\t\t\t\t<a id="GroupMask_NoPrompt" state="2" class="simpleMenuItem" href="###"><div class="selectedIcon"></div>\u6240\u6709\u7fa4\u63a5\u6536\u4e0d\u63d0\u793a\u6d88\u606f</a>\t\t\t\t\t\t<a id="GroupMask_Mask" state="3" class="simpleMenuItem" href="###"><div class="selectedIcon"></div>\u6240\u6709\u7fa4\u5b8c\u5168\u963b\u6b62\u7fa4\u6d88\u606f</a>', miniCardPanel: '<div class="panel_1_outer">\t\t\t\t<div class="panel_1_inner">\t\t\t\t\t<div class="panel_1_container">\t\t\t\t\t\t<div id="panel_1_center" class="panel_1 panel_1_center"></div>\t\t\t\t\t\t<div id="panel_1_t" class="panel_1 panel_1_t"></div>\t\t\t\t\t\t<div id="panel_1_rt" class="panel_1 panel_1_rt"></div>\t\t\t\t\t\t<div id="panel_1_r" class="panel_1 panel_1_r"></div>\t\t\t\t\t\t<div id="panel_1_rb" class="panel_1 panel_1_rb"></div>\t\t\t\t\t\t<div id="panel_1_b" class="panel_1 panel_1_b"></div>\t\t\t\t\t\t<div id="panel_1_lb" class="panel_1 panel_1_lb"></div>\t\t\t\t\t\t<div id="panel_1_l" class="panel_1 panel_1_l"></div>\t\t\t\t\t\t<div id="panel_1_lt" class="panel_1 panel_1_lt"></div>\t\t\t\t\t</div>\t\t\t\t\t<div id="miniCardBody" class="panel_1_content">\t\t\t\t\t\t<img id="miniCard_avatar" class="miniCard_avatar" />\t\t\t\t\t\t<div class="miniCard_name">\t\t\t\t\t\t\t<div id="miniCard_name_inner" class="miniCard_name_inner"></div>\t\t\t\t\t\t</div>\t\t\t\t\t\t<div id="miniCard_signature" class="miniCard_signature">\t\t\t\t\t\t\t<div id="miniCard_signature_inner" class="miniCard_signature_inner"></div>\t\t\t\t\t\t</div>\t\t\t\t\t\t<div id="miniCard_clientType_innerWrapper" class ="miniCard_clientType_innerWrapper"><div class ="miniCard_clientTypeIcon"></div><div id="miniCard_clientType_inner" class="miniCard_clientType_inner"></div></div>\t\t\t\t\t\t<div id="miniCard_level" class="miniCard_level"></div>\t\t\t\t\t\t<div id="miniCard_level_upinfo" class="miniCard_level_upinfo"></div>\t\t\t\t\t\t<div id="miniCard_quickLink" class="miniCard_quickLink">\t\t\t\t\t\t\t<a id="miniCard_video" class="miniCard_video" type="video" title="\u5f00\u59cb\u89c6\u9891\u4f1a\u8bdd" hidefocus target="_blank" href="###"></a>\t\t\t\t\t\t\t<a id="miniCard_qzone" class="miniCard_qzone" type="qzone" title="\u8bbf\u95eeQQ\u7a7a\u95f4" hidefocus target="_blank" href="###"></a>\t\t\t\t\t\t\t<a id="miniCard_qmail" class="miniCard_qmail" type="qmail" title="\u53d1\u9001\u90ae\u4ef6" hidefocus target="_blank" href="###"></a>\t\t\t\t\t\t</div>\t\t\t\t\t\t<div id="miniCard_buddyOption_tabHead" class="buddyOption_tabHead">\t\t\t\t\t\t\t<div id="miniCard_userDetails" class="buddyOption_tabHead_div">\u8be6\u7ec6\u8d44\u6599</div>\t\t\t\t\t\t</div>\t\t\t\t\t\t<div id="miniCard_buddyOption_tabBody" class="buddyOption_tabBody">\t\t\t\t\t\t</div>\t\t\t\t\t</div>\t\t\t\t</div>\t\t\t</div>', myPanel: '<div id="EQQ_MyPanel" class="EQQ_myPanel"> <img id="EQQ_MyAvatar" class="EQQ_myAvatar"/> <div id="EQQ_myInfo" class="EQQ_myInfo"> <div id="EQQ_MyState" class="EQQ_myState" title="\u6211\u7684\u72b6\u6001"> <div id="EQQ_MyStateShow" class="EQQ_myStateShow EQQ_offline">\u72b6\u6001</div> <div class="EQQ_myStateDown">\u4e0b</div> </div> <div id="EQQ_MyNick" class="EQQ_myNick" title=""></div> <\!--div id="EQQ_MyPanel_ExitButton" title="\u9000\u51fa">\u9000\u51fa</div--\> </div> <div id="EQQ_myService" class="EQQ_myService"> <div id="EQQ_mySignature_wraper" class="EQQ_mySignature_wraper"><input id="EQQ_MySignature" class="EQQ_mySignature" type="text" title="" /></div> </div> </div> <div id="eqqMypanelToolbar" class="eqq_mypanel_toolbar"> <a href="###" title="QQ\u7a7a\u95f4" appId="16" report="qzone" class="eqq_mypanel_toolbar_button"><span class="eqq_mypanel_toolbar_icon eqq_mypanel_toolbar_qzone"></span></a> <a href="###" title="QQ\u90ae\u7bb1" appId="17" report="mail" class="eqq_mypanel_toolbar_button "><span class="eqq_mypanel_toolbar_icon eqq_mypanel_toolbar_mail"></span></a> <a href="###" title="\u817e\u8baf\u5fae\u535a" appId="2" report="weibo" class="eqq_mypanel_toolbar_button "><span class="eqq_mypanel_toolbar_icon eqq_mypanel_toolbar_weibo"></span></a> <a href="###" title="\u6211\u7684\u8d44\u8baf" appId="14" report="news" class="eqq_mypanel_toolbar_button "><span class="eqq_mypanel_toolbar_icon eqq_mypanel_toolbar_news"></span></a> <a href="###" title="QQ\u94b1\u5305" appId="4333" report="money" class="eqq_mypanel_toolbar_button "><span class="eqq_mypanel_toolbar_icon eqq_mypanel_toolbar_money"></span></a> <a href="###" title="\u817e\u8baf\u670b\u53cb" appId="21" report="pengyou" class="eqq_mypanel_toolbar_button "><span class="eqq_mypanel_toolbar_icon eqq_mypanel_toolbar_pengyou"></span></a> <a href="###" title="\u7f51\u7edc\u786c\u76d8" appId="13" report="harddisk" class="eqq_mypanel_toolbar_button "><span class="eqq_mypanel_toolbar_icon eqq_mypanel_toolbar_harddisk" ' + (Jet().platform.iPad ? ' style="opacity:0.3;" ' : "") + " ></span></a> </div>", mainPanelHeader: '<div class="EQQ_title">\t\t\t\t<div id="EQQ_PinDownButton" class="EQQ_PinDownButton" title="\u9489\u4f4f/\u6536\u8d77">\u9489\u4f4f/\u6536\u8d77</div>\t\t\t\t<div id="EQQ_CloseButton" class="EQQ_CloseButton" title="\u9690\u85cf\u597d\u53cb\u5217\u8868">\u6700\u5c0f\u5316</div>\t\t\t\t<div id="EQQ_MinButton" class="EQQ_MinButton" title="\u8bbe\u7f6e">\u8bbe\u7f6e</div>\t\t\t\t<a class="EQQ_FeedbackButton2" href="http://support.qq.com/portal/discuss_pdt/420_1.html" target="_blank">\u53cd\u9988</a>\t\t\t\t<div id="EQQ_SettingButton" class="EQQ_settingButton" title="\u8bbe\u7f6eWebQQ">\t\t\t\t\t<div class="EQQ_settingButtonIcon">\u4e0b</div>\t\t\t\t\t<div>\u8bbe\u7f6e</div>\t\t\t\t</div>\t\t\t\t<div class="EQQ_titleText" href="#" target="_blank" title="\u8054\u7cfb\u4eba">\u8054\u7cfb\u4eba</div>\t\t\t\t<div class="EQQ_betaText" title="1.0.10.12"></div>\t\t\t</div>\t\t\t<div id="EQQ_YellowTips" class="EQQ_YellowTips">\t\t\t\t<div id="EQQ_YellowTips_CloseButton" class="EQQ_YellowTips_CloseButton" title="\u5173\u95ed\u63d0\u793a">X</div>\t\t\t\t<a class="EQQ_YellowTips_Link" href="http://survey.qq.com/cgi-bin/submitsurvey?id=2473&qpage=1&page=1&rm=dnN4k1bBG" target="_blank">\u9080\u8bf7\u53c2\u4e0eWebQQ\u7528\u6237\u8c03\u67e5</a>\t\t\t</div>', mainPanelFooter: '<div> <div id="EQQ_Logining">\u53d1\u8d77\u8fde\u63a5...</div> </div> <div id="EQQ_Logining_feedback"><a href="http://support.qq.com/write.shtml?guest=1&fid=513" target="_blank"> <span class="warnning_yellow"> </span>\u53cd\u9988\u767b\u5f55\u5efa\u8bae</a></div> <div id="EQQ_ReLoginPanel"> <div id="EQQ_ReLoginPanel_inner"><div style="display:inline;" id="EQQ_ReLoginButton_text">\u767b\u5f55\u5931\u8d25</div>\uff0c<span id="EQQ_ReLoginButton">\u91cd\u8bd5</span></div> </div>', searchReaultPanel: '<div id="EQQ_SearchResultPanel" class="EQQ_SearchResultPanel-1"> <div class="EQQ_SearchResultItem" title="">Kevity1(666666)</div> <div class="EQQ_SearchResultItemHover" title="">Kevity2(666666)</div> <div class="EQQ_SearchResultItem" title="">Kevity3(66666)</div> </div>', searchReaultPanelFlex: '<div id="EQQ_SearchResultPanel_iframeWrap" class="EQQ_SearchResultPanel_iframeWrap"> <div id="EQQ_SearchResultPanel" class="EQQ_SearchResultPanel"> <div class="EQQ_SearchResultItem" title="">Kevity1(666666)</div> <div class="EQQ_SearchResultItemHover" title="">Kevity2(666666)</div> <div class="EQQ_SearchResultItem" title="">Kevity3(66666)</div> </div> <iframe class="EQQ_SearchResultPanel_iframe"></iframe> </div>', buddyListBody: "", buddyListBodyFlex: '<iframe id="iframe_fflist" width="100%" height="100%" border="0" frameborder="0" style="border:0;overflow:hidden;" allowtransparency="true" src="' + qqweb.CONST.MAIN_URL + 'swf/fflist.html?t=20110113001"></iframe> <\!--<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="100%" id="fflist" align="middle"> <param name="movie" value="./module/eqq/swf/fflist.swf" /> <param name="quality" value="high" /> <param name="play" value="true" /> <param name="loop" value="true" /> <param name="wmode" value="transparent" /> <param name="scale" value="showall" /> <param name="menu" value="true" /> <param name="devicefont" value="false" /> <param name="salign" value="" /> <param name="allowScriptAccess" value="always" /> <embed wmode="transparent" src="./module/eqq/swf/fflist.swf" width="100%" height="100%" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"type="application/x-shockwave-flash"></embed></object--\>', mainPanelBody: '<div id="EQQ_LoginSuccess">\t\t\t\t<div id="EQQ_SearchBar" class="EQQ_SearchBar">\t\t\t\t\t<input id="EQQ_SearchBox" class="EQQ_SearchBox" name="" type="text" value="\u641c\u7d22\u597d\u53cb..." title="\u641c\u7d22\u597d\u53cb..." />\t\t\t\t\t<div id="EQQ_SearchButton" class="EQQ_SearchButton" title="\u641c\u7d22...">\u641c\u7d22\u6309\u94ae</div>\t\t\t\t</div>\t\t\t\t<%=searchReaultPanel%>\t\t\t\t<ul class="EQQ_tab">\t\t\t\t\t<li id="EQQ_TabBuddyList" class="EQQ_tabBuddyList" title="\u8054\u7cfb\u4eba"><a href="###" id="EQQ_TabBuddyList_MenuIcon" class="EQQ_tabmenu_icon"></a><div class="EQQ_tabBuddyList_icon"></div></li>\t\t\t\t\t<li id="EQQ_TabGroupList" class="EQQ_tabGroupList" title="\u7fa4/\u8ba8\u8bba\u7ec4"><a href="###" id="EQQ_TabGroupList_MenuIcon" class="EQQ_tabmenu_icon"></a><div class="EQQ_tabGroupList_icon"></div></li>\t\t\t\t\t<li id="EQQ_TabRecentList" class="EQQ_tabRecentList" title="\u6700\u8fd1\u8054\u7cfb\u4eba"><a href="###" id="EQQ_TabRecentList_MenuIcon" class="EQQ_tabmenu_icon"></a><div class="EQQ_tabRecentList_icon"></div></li>\t\t\t\t</ul>\t\t\t\t<div id="EQQ_ListContainer">\t\t\t\t\t<div id="EQQ_buddyListPanel" class="EQQ_buddyListPanel ">\t\t\t\t\t\t<div id="EQQ_buddyList" class="EQQ_buddyList">\t\t\t\t\t\t<%=buddyListBody%> </div>\t\t\t\t\t\t<div id="EQQ_buddyListPanelBottom" class="EQQ_ListBottom">\t\t\t\t\t\t\t\t<a href="" id="EQQ_findBuddy" class="searchBuddy" target="_blank"><div class="searchBuddy_div"></div>\u67e5\u627e</a>\t\t\t\t\t\t\t\t<a href="" id="EQQ_buddyManage" class="buddy_manage_icon" target="_blank"><div class="buddy_manage_icon_div"></div>\u597d\u53cb\u7ba1\u7406</a> <a href="" id="EQQ_messageManage" class="message_manage_icon" target="_blank"><div class="message_manage_icon_div"></div>\u6d88\u606f\u7ba1\u7406</a>\t\t\t\t\t\t</div>\t\t\t\t\t</div>\t\t\t\t\t<div id="EQQ_groupListPanel" class="EQQ_groupListPanel ">\t\t\t\t\t\t<ul id="EQQ_groupTab" class="EQQ_groupTab"><li id="EQQ_groupTabGroup" class="seled">QQ\u7fa4</li><li id="EQQ_groupTabDiscu">\u8ba8\u8bba\u7ec4</li></ul>\t\t\t\t\t\t<div id="EQQ_groupBox" class="EQQ_groupBox">\t\t\t\t\t\t\t<div id="EQQ_groupListOuter" class="EQQ_groupListOuter"><div id="EQQ_groupListInner" class="EQQ_groupListInner"></div></div>\t\t\t\t\t\t\t<div id="EQQ_groupListPanelBottom" class="EQQ_ListBottom">\t\t\t\t\t\t\t\t<a id="EQQ_createGroupButton" class="createGroup" href="http://qun.qq.com/air/create" target="_blank" title="\u521b\u5efa\u7fa4"><div class="createGroup_div"></div>\u521b\u5efa</a>\t\t\t\t\t\t\t\t<a id="EQQ_searchGroupButton" class="searchGroup" href="http://qun.qq.com/air/search" target="_blank" title="\u67e5\u627e\u7fa4"><div class="searchGroup_div"></div>\u67e5\u627e</a>\t\t\t\t\t\t\t\t<div id="EQQ_ListBottom_maskButton"><div></div>\u7fa4\u5c4f\u853d</div>\t\t\t\t\t\t\t</div>\t\t\t\t\t\t</div>\t\t\t\t\t\t<div id="EQQ_discuBox" class="EQQ_groupBox" style="display:none">\t\t\t\t\t\t\t<div id="EQQ_discuListOuter" class="EQQ_groupListOuter">\t\t\t\t\t\t\t\t<div id="EQQ_discuListInner" class="EQQ_groupListInner"></div>\t\t\t\t\t\t\t\t<div id="EQQ_discuListFail" class="EQQ_groupListInner EQQ_failBox">\t\t\t\t\t\t\t\t\t<div id="EQQ_discuReLogin_text" style="display: inline;">\u767b\u5f55\u5931\u8d25,<a href="#">\u91cd\u8bd5</a></div> \t\t\t\t\t\t\t\t\t<div id="EQQ_discuReLogining_text" class="EQQ_discuReLogining_text">Loading...</div>\t\t\t\t\t\t\t\t</div>\t\t\t\t\t\t\t\t<div id="EQQ_discuCreate" class="EQQ_discuCreate">\t\t\t\t\t\t\t\t\t<div class="EQQ_discuCreate_text">\u8ba8\u8bba\u7ec4\u80fd\u8f7b\u677e\u53d1\u8d77\u591a\u4eba\u4f1a\u8bdd</div>\t\t\t\t\t\t\t\t\t<div class="EQQ_discuCreate_button_container">\t\t\t\t\t\t\t\t\t\t<a id="EQQ_discuCreate_button" class="createGroup" href="#" target="_blank" title="\u521b\u5efa\u8ba8\u8bba\u7ec4"></a>\t\t\t\t\t\t\t\t\t</div>\t\t\t\t\t\t\t\t</div>\t\t\t\t\t\t\t</div>\t\t\t\t\t\t\t<div id="EQQ_discuListPanelBottom" class="EQQ_ListBottom">\t\t\t\t\t\t\t\t<a id="EQQ_createDiscuButton" class="createGroup" href="#" target="_blank" title="\u521b\u5efa\u8ba8\u8bba\u7ec4"><div class="createGroup_div"></div>\u521b\u5efa\u8ba8\u8bba\u7ec4</a>\t\t\t\t\t\t\t</div>\t\t\t\t\t\t</div>\t\t\t\t\t</div>\t\t\t\t\t<div id="EQQ_recentListPanel" class="EQQ_recentListPanel "><div id="EQQ_recentList" class="EQQ_recentList"></div></div>\t\t\t\t</div>\t\t\t</div>' }, g = function(d) { $D = d.dom; $E = d.event; $S = d.string; var b = !1; this.createDiscu = function(a) { a.preventDefault(); alloy.portal.runApp("selectBuddy", { title: "\u521b\u5efa\u8ba8\u8bba\u7ec4", isAddSelf: !0, maxBuddy: 20, onSelected: EQQ.Model.BuddyList.createDiscu }) }; this.onDiscuListClick = function(a) { a = a.getAttribute("did"); $E.notifyObservers(this, "StartDiscuChat", a); pgvSendClick({ hottag: "web2qq.qqpanel.discu.sendmsg" }); alloy.util.report2im("qqpanel|dicussions|sendmsg") }; this.getNewNode = function(a, b) { var b = b || !1, d = "", f = b ? "EQQ_RecentList_State_" + a.did : "EQQ_discuList_State_" + a.did, g = b ? "EQQ_RecentDiscuList_State_" + a.did : "EQQ_discuList_Name_" + a.did; parseInt(a.mask) > 0 && (d = " EQQ_GroupMask_State"); d = $S.template('\t\t\t\t<div class="EQQ_GroupList_AvatarContainer">\t\t\t\t\t<div class="EQQ_discuList_Avatar"></div>\t\t\t\t\t<div class="EQQ_GroupList_State ' + d + '" id="' + f + '" title="\u8ba8\u8bba\u7ec4\u5c4f\u853d"></div>\t\t\t\t</div>\t\t\t\t<div class="EQQ_GroupList_RightContainer" title="<%=titleName%>">\t\t\t\t\t<div id="' + g + '" class="EQQ_GroupList_Name"><%=htmlName%></div>\t\t\t\t</div>\t\t\t', a); f = $D.node("div", { id: b ? "EQQ_Recent_" + a.did : "EQQ_Discu_" + a.did, did: a.did, "class": "EQQ_GroupList_Group" }); f.innerHTML = d; return f }; this.removeDiscu = function(a) { var b = $D.id("EQQ_Discu_" + a); if (b && ($E.off(b), b.parentNode)) { var d = b.parentNode; d.removeChild(b) } if (a = $D.id("EQQ_Recent_" + a)) if ($E.off(a), a.parentNode) d = a.parentNode, d.removeChild(a); (d = $D.id("EQQ_discuListInner")) && d.innerHTML == "" && this.showCreatePanel() }; this.discuJumpUp = function(a) { b = !0; for (var c = 0; c < a.length; c++) { var d = $D.id("EQQ_Discu_" + a[c]); d && $D.addClass(d, "EQQ_jumpUpInGroupList") } }; this.discuJumpDown = function(a) { b = !1; for (var c = 0; c < a.length; c++) { var d = $D.id("EQQ_Discu_" + a[c]); d && $D.removeClass(d, "EQQ_jumpUpInGroupList") } }; this.discuJumpAvatar = function(a) { b ? this.discuJumpDown(a) : this.discuJumpUp(a) }; this.onCreateDiscu = function(a, b) { a.preventDefault(); alloy.portal.runApp("selectBuddy", { title: "\u521b\u5efa\u8ba8\u8bba\u7ec4", isAddSelef: !0, maxBuddy: 20, onSelected: EQQ.Model.BuddyList.createDiscu }); d.isUndefined(b) && alloy.util.report2im("qqpanel|dicussions|create") }; this.updateDiscuName = function(a) { var b = $D.id("EQQ_discuList_Name_" + a.did); b.parentNode.title = a.titleName; b.innerHTML = a.htmlName; if (b = $D.id("EQQ_RecentDiscuList_State_" + a.did)) b.parentNode.title = a.titleName, b.innerHTML = a.htmlName }; this.setDiscuListMaskState = function(a, b) { var d = $D.id("EQQ_discuList_State_" + a), f = $D.id("EQQ_RecentList_State_" + a); parseInt(b) > 0 ? (d && $D.addClass(d, "EQQ_GroupMask_State"), f && $D.addClass(f, "EQQ_GroupMask_State")) : (d && $D.removeClass(d, "EQQ_GroupMask_State"), f && $D.removeClass(f, "EQQ_GroupMask_State")) }; this.onDiscuListContextMenu = function(a) { a.preventDefault(); this.discuGlobalMenu.setZIndex(qqweb.layout.getTopZIndex(3)); this.discuGlobalMenu.show(a.clientX, a.clientY); qqweb.util.report2qqweb("contextmenu|dicussions|all") }; this.onDiscuContextMenu = function(a, b) { a.preventDefault(); a.stopPropagation(); this.setDiscuMaskItemState(b); this.discuMenu.setArgument(b); this.discuMenu.setZIndex(qqweb.layout.getTopZIndex(3)); this.discuMenu.show(a.clientX, a.clientY) }; this.setDiscuMaskItemState = function(a) { var a = EQQ.Model.BuddyList.getDiscuById(a), b = 2, b = [this.discuMenu.getItemAt(b++), this.discuMenu.getItemAt(b++), this.discuMenu.getItemAt(b++)], a = a.mask, d; for (d in b) b[d].option.argument.state == a ? b[d].setIcon({ style: "background: url(./style/images/eqq_sprite.gif) no-repeat 5px -33px;" }) : b[d].setIcon(null) }; this.onDiscuMaskItemClick = function(a, b) { var d = b.option.argument, f = this.discuMenu.getArgument(); EQQ.Model.BuddyList.sendChangeDiscuMask({ type: "single", uin: f, mask: d.state }); qqweb.util.report2qqweb("contextmenu|dicussions|" + d.flag) }; this.showReloadDiscuList = function() { this.EQQ_discuListInner.innerHTML = ""; var a = $D.id("EQQ_discuListFail"), b = $D.id("EQQ_discuReLogin_text"), d = $D.id("EQQ_discuReLogining_text"); $D.show(a); $D.show(b); $D.hide(d); $E.off(a, "click"); $E.on(a, "click", function(a) { a.preventDefault(); a.stopPropagation(); EQQ.Model.BuddyList.sendGetDiscuList(); $D.show(d); $D.hide(b) }); this.hideCreatePanel() }; this.hideReloadDiscuList = function() { var a = $D.id("EQQ_discuListFail"); $D.isShow(a) && $D.hide(a) }; this.showCreatePanel = function() { var a = $D.id("EQQ_discuCreate"); $D.isShow(a) || $D.show(a) }; this.hideCreatePanel = function() { var a = $D.id("EQQ_discuCreate"); $D.isShow(a) && $D.hide(a) } }, f = function(f) { var b = this, a = f.dom, c = f.event, j = f.string, m = !1, z = !1, q = !1, o = !1, i = {}, r = [], k = [], D = [], B = [], E = [], w = {}, x = 0, C = 160, F = "0", u = alloy.layout.getPanel("desktop").body, s, K, G = [], e = !1, n = !1, y, A = "single", H = "group", I = "", Q = !1, O; EQQ.avatarMouseoverTimer = null; var l = {}, P = !1; g.apply(this, [f]); var R = function(a, b) { var c = b.option.argument, d; c.type == "single" ? (d = h.getArgument(), d = EQQ.Model.BuddyList.getGroupByCode(d).gid, d = { type: c.type, uin: d, mask: c.state + "" }) : d = { type: c.type, uin: EQQ.Model.BuddyList.getSelfUin(), mask: c.state + "" }; EQQ.Model.BuddyList.sendChangeGroupMask(d); qqweb.util.report2qqweb("contextmenu|group|" + c.flag) }, J, T, h, M, L, U, V, N, S, Y = [{ text: "\u53d1\u9001\u5373\u65f6\u6d88\u606f", onClick: function() { var a = J.getArgument(); c.notifyObservers(b, "StartChat", a); qqweb.util.report2qqweb("contextmenu|contancts|sendmsg") } }, { text: "\u53d1\u9001\u7535\u5b50\u90ae\u4ef6", onClick: function() { var a = J.getArgument(); qqweb.rpcService.sendGetFriendUin2(a, 3, function(a) { qqweb.portal.runApp("6", { url: EQQ.getSendMailUrl(a.result.account) }); qqweb.util.report2qqweb("contextmenu|contancts|mail") }) } }, { type: "separator" }, { text: "\u8bbf\u95eeQQ\u7a7a\u95f4", onClick: function() { var a = J.getArgument(); qqweb.rpcService.sendGetFriendUin2(a, 2, function(a) { qqweb.portal.runApp("6", { url: EQQ.getQzoneUrl(a.result.account) }); qqweb.util.report2qqweb("contextmenu|contancts|qzone") }) } }, { text: "\u521b\u5efa\u684c\u9762\u8054\u7cfb\u4eba", onClick: function() { var a = J.getArgument(); alloy.desktopContact.addContactIcon({ t: "uin", id: Number(a) }); qqweb.util.report2qqweb("contextmenu|contancts|adddeskcontanct") } }, { type: "separator" }, { text: "\u79fb\u52a8\u5206\u7ec4", onClick: function() { qqweb.portal.runApp("5", {}); qqweb.util.report2qqweb("contextmenu|contancts|manage") } }, { text: "\u5220\u9664\u597d\u53cb", onClick: function() { qqweb.portal.runApp("5", {}); qqweb.util.report2qqweb("contextmenu|contancts|manage") } }, { text: "\u4fee\u6539\u5907\u6ce8", onClick: function() { qqweb.portal.runApp("5", {}); qqweb.util.report2qqweb("contextmenu|contancts|manage") } }, { text: "\u9690\u8eab\u8bbe\u7f6e", onClick: function() { qqweb.portal.runApp("5", {}); qqweb.util.report2qqweb("contextmenu|contancts|manage") } }, { type: "separator" }, { text: "\u6d88\u606f\u8bb0\u5f55", onClick: function() { var a = J.getArgument(); qqweb.portal.runApp("chatLogViewer", a); qqweb.util.report2qqweb("contextmenu|contancts|chats") } }, { text: "\u67e5\u770b\u8d44\u6599", onClick: function() { var a = J.getArgument(); qqweb.portal.runApp("userDetails", a); qqweb.util.report2qqweb("contextmenu|contancts|profile") } }], ja = [{ text: "\u5934\u50cf\u663e\u793a", type: "submenu", icon: { className: "eqq_header_switch_icon" }, beforeShow: function(a) { ba() ? (a.getItemAt(0).setIcon({ className: "eqq_cxmenu_check_icon" }), a.getItemAt(1).setIcon()) : (a.getItemAt(0).setIcon(), a.getItemAt(1).setIcon({ className: "eqq_cxmenu_check_icon" })) }, items: [{ text: "\u5927\u5934\u50cf", onClick: function() { b.ifFlexReady ? b.setFlexBigHead(!0) : W("single", !0); X("single", !0); qqweb.util.report2qqweb("contextmenu|contancts|largeicon") } }, { text: "\u5c0f\u5934\u50cf", onClick: function() { b.ifFlexReady ? b.setFlexBigHead(!1) : W("single", !1); X("single", !1); qqweb.util.report2qqweb("contextmenu|contancts|normalicon") } }] }, { text: "\u663e\u793a\u5728\u7ebf\u8054\u7cfb\u4eba", onClick: function(v, c) { if (P) { for (var d = f.dom.mini(".EQQ_offlineBuddy", b.EQQ_buddyListPanel), e = 0, g = d.length; e < g; e++) a.show(d[e]); c.setText("\u663e\u793a\u5728\u7ebf\u8054\u7cfb\u4eba"); P = !1 } else { d = f.dom.mini(".EQQ_offlineBuddy", b.EQQ_buddyListPanel); e = 0; for (g = d.length; e < g; e++) a.hide(d[e]); c.setText("\u663e\u793a\u6240\u6709\u8054\u7cfb\u4eba"); P = !0 } qqweb.util.report2qqweb("contextmenu|contancts|onlineonly") } }, { text: "\u597d\u53cb\u6279\u91cf\u7ba1\u7406", onClick: function() { qqweb.portal.runApp("5", {}); qqweb.util.report2qqweb("contextmenu|contancts|manage") } }, { text: "\u67e5\u627e/\u6dfb\u52a0\u597d\u53cb", onClick: function() { qqweb.portal.runApp("buddyFinder", {}); qqweb.util.report2qqweb("contextmenu|contancts|add") } }], Ca = [{ text: "\u53d1\u9001\u7fa4\u6d88\u606f", onClick: function() { var a = h.getArgument(); c.notifyObservers(b, "StartGroupChat", a); qqweb.util.report2qqweb("contextmenu|group|sendmsg") } }, { type: "separator" }, { text: "\u8bbf\u95ee\u7fa4\u793e\u533a", onClick: function(a, b) { var c = h.getArgument(); l[c] ? (qqweb.portal.openInWebBrowser({ url: EQQ.CONST.QQ_GROUP_URL + l[c], title: b.option.title }), qqweb.util.report2qqweb("contextmenu|group|qun")) : qqweb.rpcService.sendGetFriendUin2(c, 4, function(a) { qqweb.portal.openInWebBrowser({ url: EQQ.CONST.QQ_GROUP_URL + a.result.account, title: b.option.title }); qqweb.util.report2qqweb("contextmenu|group|qun") }) } }, { text: "\u67e5\u770b\u7fa4\u8d44\u6599", onClick: function() { var a = h.getArgument(), a = { gid: EQQ.Model.BuddyList.getGroupByCode(a).gid, gcode: a, from: "groupDetail" }; qqweb.portal.runApp("groupDetails", a); qqweb.util.report2qqweb("contextmenu|group|profile") } }, { text: "\u67e5\u770b\u6d88\u606f\u8bb0\u5f55", onClick: function() { var a = h.getArgument(), a = { gid: EQQ.Model.BuddyList.getGroupByCode(a).gid, gcode: a, from: "group" }; qqweb.portal.runApp("chatLogViewer", a); qqweb.util.report2qqweb("contextmenu|group|chats") } }, { type: "separator" }, { text: "\u63a5\u6536\u5e76\u63d0\u793a\u7fa4\u6d88\u606f", argument: { type: "single", state: 0, flag: "single|withalert" }, onClick: R }, { text: "\u63a5\u6536\u4e0d\u63d0\u793a\u7fa4\u6d88\u606f", argument: { type: "single", state: 1, flag: "single|withoutalert" }, onClick: R }, { text: "\u5b8c\u5168\u963b\u6b62\u7fa4\u6d88\u606f", argument: { type: "single", state: 2, flag: "single|block" }, onClick: R }, { type: "separator" }, { text: "\u521b\u5efa\u684c\u9762\u8054\u7cfb\u4eba", onClick: function() { var a = h.getArgument(), b = EQQ.Model.BuddyList.getGroupByCode(a).gid; alloy.desktopContact.addContactIcon({ t: "gid", id: Number(a), gid: b }); qqweb.util.report2qqweb("contextmenu|group|adddeskcontanct") } }, { text: "\u9000\u51fa\u8be5\u7fa4", onClick: function() { var a = h.getArgument(); qqweb.layout.confirm("\u60a8\u771f\u7684\u8981\u9000\u51fa\u8be5\u7fa4\u5417?(\u9000\u7fa4\u901a\u77e5\u4ec5\u7ba1\u7406\u5458\u53ef\u89c1)", function() { qqweb.rpcService.sendQuitGroup({ gcode: a }); qqweb.util.report2qqweb("contextmenu|group|quit") }) } }], Da = [{ text: "\u5934\u50cf\u663e\u793a", type: "submenu", icon: { className: "eqq_header_switch_icon" }, beforeShow: function(a) { ca() ? (a.getItemAt(0).setIcon({ className: "eqq_cxmenu_check_icon" }), a.getItemAt(1).setIcon()) : (a.getItemAt(0).setIcon(), a.getItemAt(1).setIcon({ className: "eqq_cxmenu_check_icon" })) }, items: [{ text: "\u5927\u5934\u50cf", onClick: function() { W("group", !0); X("group", !0); qqweb.util.report2qqweb("contextmenu|group|largeicon") } }, { text: "\u5c0f\u5934\u50cf", onClick: function() { W("group", !1); X("group", !1); qqweb.util.report2qqweb("contextmenu|group|normalicon") } }] }, { text: "\u8bbf\u95ee\u6211\u7684\u7fa4\u4e3b\u9875", link: EQQ.CONST.QQ_GROUP_URL, onClick: function(a, b) { a.preventDefault(); qqweb.portal.openInWebBrowser({ url: b.option.link, title: b.option.title }); qqweb.util.report2qqweb("contextmenu|group|all|qun") } }, { type: "separator" }, { text: "\u4f7f\u7528\u7fa4\u81ea\u8eab\u7684\u6d88\u606f\u8bbe\u7f6e", argument: { type: "global", state: 0, flag: "all|self" }, onClick: R }, { text: "\u6240\u6709\u7fa4\u63a5\u6536\u5e76\u63d0\u793a\u6d88\u606f", argument: { type: "global", state: 1, flag: "all|withalert" }, onClick: R }, { text: "\u6240\u6709\u7fa4\u63a5\u6536\u4e0d\u63d0\u793a\u6d88\u606f", argument: { type: "global", state: 2, flag: "all|withoutalert" }, onClick: R }, { text: "\u6240\u6709\u7fa4\u5b8c\u5168\u963b\u6b62\u7fa4\u6d88\u606f", argument: { type: "global", state: 3, flag: "all|block" }, onClick: R }, { type: "separator" }, { text: "\u67e5\u627e\u6dfb\u52a0\u7fa4", link: EQQ.CONST.QQ_GROUP_URL + "search", onClick: function(a, b) { a.preventDefault(); qqweb.portal.openInWebBrowser({ url: b.option.link, title: b.option.title }); qqweb.util.report2qqweb("contextmenu|group|search") } }, { text: "\u521b\u5efa\u4e00\u4e2a\u7fa4", link: EQQ.CONST.QQ_GROUP_URL + "create", onClick: function(a, b) { a.preventDefault(); qqweb.portal.openInWebBrowser({ url: b.option.link, title: b.option.title }); qqweb.util.report2qqweb("contextmenu|group|create") } }], Ea = [{ text: "\u53d1\u9001\u8ba8\u8bba\u7ec4\u6d88\u606f", onClick: function() { var a = V.getArgument(); c.notifyObservers(b, "StartDiscuChat", a); alloy.util.report2im("contextmenu|dicussions|sendmsg") } }, { type: "separator" }, { text: "\u63a5\u6536\u5e76\u63d0\u793a\u8ba8\u8bba\u7ec4\u6d88\u606f", argument: { type: "single", state: 0, flag: "single|withalert" }, onClick: function(a, c) { b.onDiscuMaskItemClick(a, c) } }, { text: "\u63a5\u6536\u4e0d\u63d0\u793a\u8ba8\u8bba\u7ec4\u6d88\u606f", argument: { type: "single", state: 1, flag: "single|withoutalert" }, onClick: function(a, c) { b.onDiscuMaskItemClick(a, c) } }, { text: "\u5b8c\u5168\u963b\u6b62\u8ba8\u8bba\u7ec4\u6d88\u606f", argument: { type: "single", state: 2, flag: "single|block" }, onClick: function(a, c) { b.onDiscuMaskItemClick(a, c) } }, { type: "separator" }, { text: "\u9000\u51fa\u8be5\u8ba8\u8bba\u7ec4", onClick: function() { var a = V.getArgument(); qqweb.layout.confirm("\u60a8\u771f\u7684\u8981\u9000\u51fa\u8be5\u8ba8\u8bba\u7ec4\u5417?", function() { c.notifyObservers(EQQ, "QuitDiscu", { did: a }); qqweb.util.report2qqweb("contextmenu|dicussions|quit") }) } }], Fa = [{ text: "\u5934\u50cf\u663e\u793a", type: "submenu", icon: { className: "eqq_header_switch_icon" }, beforeShow: function(a) { ca() ? (a.getItemAt(0).setIcon({ className: "eqq_cxmenu_check_icon" }), a.getItemAt(1).setIcon()) : (a.getItemAt(0).setIcon(), a.getItemAt(1).setIcon({ className: "eqq_cxmenu_check_icon" })) }, items: [{ text: "\u5927\u5934\u50cf", onClick: function() { W("group", !0); X("group", !0); qqweb.util.report2qqweb("contextmenu|dicussions|largeicon") } }, { text: "\u5c0f\u5934\u50cf", onClick: function() { W("group", !1); X("group", !1); qqweb.util.report2qqweb("contextmenu|dicussions|normalicon") } }] }, { text: "\u521b\u5efa\u8ba8\u8bba\u7ec4", onClick: function(a) { a.preventDefault(); b.onCreateDiscu(a, "contextmenu"); alloy.util.report2im("contextmenu|dicussions|create") } }], Ga = [{ text: "\u5934\u50cf\u663e\u793a", type: "submenu", icon: { className: "eqq_header_switch_icon" }, beforeShow: function(a) { da() ? (a.getItemAt(0).setIcon({ className: "eqq_cxmenu_check_icon" }), a.getItemAt(1).setIcon()) : (a.getItemAt(0).setIcon(), a.getItemAt(1).setIcon({ className: "eqq_cxmenu_check_icon" })) }, items: [{ text: "\u5927\u5934\u50cf", onClick: function() { W("recent", !0); X("recent", !0); qqweb.util.report2qqweb("contextmenu|recent|largeicon") } }, { text: "\u5c0f\u5934\u50cf", onClick: function() { W("recent", !1); X("recent", !1); qqweb.util.report2qqweb("contextmenu|recent|normalicon") } }] }]; this.createContextMenu = function() { J = new f.ui.ContextMenu({ id: "singleMenu", container: qqweb.layout.getDesktop().body, items: Y }); T = new f.ui.ContextMenu({ id: "singleGlobalMenu", container: qqweb.layout.getDesktop().body, items: ja }); h = new f.ui.ContextMenu({ id: "groupMenu", container: qqweb.layout.getDesktop().body, width: 150, items: Ca }); M = new f.ui.ContextMenu({ id: "groupGlobalMenu", container: qqweb.layout.getDesktop().body, width: 180, beforeShow: Na, items: Da }); V = new f.ui.ContextMenu({ id: "discuMenu", container: qqweb.layout.getDesktop().body, width: 180, items: Ea }); N = new f.ui.ContextMenu({ id: "discuGlobalMenu", container: qqweb.layout.getDesktop().body, width: 150, items: Fa }); S = new f.ui.ContextMenu({ id: "recentGlobalMenu", container: qqweb.layout.getDesktop().body, width: 150, items: Ga }); b.discuMenu = V; b.discuGlobalMenu = N; y = { single: T, group: M, discu: N, recent: S }; c.addObserver(qqweb.rpcService, "sendQuitGroupSuccess", Oa) }; var Ha = function(a) { a.preventDefault(); T.setZIndex(qqweb.layout.getTopZIndex(3)); T.show(a.clientX, a.clientY); qqweb.util.report2qqweb("contextmenu|contancts|all") }, Ia = function(a) { a.preventDefault(); M.setZIndex(qqweb.layout.getTopZIndex(3)); M.show(a.clientX, a.clientY); qqweb.util.report2qqweb("contextmenu|group|all") }, Ja = function(a) { a.preventDefault(); S.setZIndex(qqweb.layout.getTopZIndex(3)); S.show(a.clientX, a.clientY) }, oa = function(a) { a.preventDefault(); a.stopPropagation(); J.setArgument(this.getAttribute("uin")); J.setZIndex(qqweb.layout.getTopZIndex(3)); J.show(a.clientX, a.clientY); qqweb.util.report2qqweb("contextmenu|contancts|person") }, Ka = function(a) { a.preventDefault(); a.stopPropagation(); J.setArgument(this.getAttribute("uin")); J.setZIndex(qqweb.layout.getTopZIndex(3)); J.show(a.clientX, a.clientY); qqweb.util.report2qqweb("contextmenu|recent|person") }, La = function(a) { a.preventDefault(); a.stopPropagation(); var b = this.getAttribute("code"); pa(b); h.setArgument(b); h.setZIndex(qqweb.layout.getTopZIndex(3)); h.show(a.clientX, a.clientY); qqweb.util.report2qqweb("contextmenu|group|single") }, Ma = function(a) { a.preventDefault(); a.stopPropagation(); var b = this.getAttribute("code"); pa(b); h.setArgument(b); h.setZIndex(qqweb.layout.getTopZIndex(3)); h.show(a.clientX, a.clientY); qqweb.util.report2qqweb("contextmenu|recent|single") }, ka = function(b) { b.preventDefault(); b.stopPropagation(); b = A === "group" ? H : A; if (y[b]) { b = y[b]; b.setZIndex(qqweb.layout.getTopZIndex(3)); var c = a.getClientXY(this); b.show(c[0], c[1] + 28, 0) } switch (A) { case "single": qqweb.util.report2qqweb("qqpanel|contacts|tabmenu|menu"); break; case "group": qqweb.util.report2qqweb("qqpanel|groups|tabmenu|menu"); break; case "recent": qqweb.util.report2qqweb("qqpanel|recent|tabmenu|menu") } }, Pa = function(c) { c.preventDefault(); c = a.getClientXY(this); c[0] -= b.statePanel ? b.statePanel.getWidth() : 100; c[1] -= b.statePanel ? b.statePanel.getHeight() : 176; ga(c); alloy.util.report2im("contextmenu|statechange") }, Oa = function(a) { a = a.arguments.gcode; qqweb.portal.getApp("50").run({ api: ["exitGroup", [a]], loginMode: "logined" }) }, pa = function(a) { a = EQQ.Model.BuddyList.getGroupByCode(a); if (!L) { var b = 6; L = [h.getItemAt(b++), h.getItemAt(b++), h.getItemAt(b++)] } var a = a.mask, c; for (c in L) L[c].option.argument.state == a ? L[c].setIcon({ className: "eqq_cxmenu_check_icon" }) : L[c].setIcon(null) }, Na = function() { if (!U) { var a = 3; U = [M.getItemAt(a++), M.getItemAt(a++), M.getItemAt(a++), M.getItemAt(a++)] } var a = EQQ.Model.BuddyList.getGroupMask(), b; for (b in U) U[b].option.argument.state == a ? U[b].setIcon({ className: "eqq_cxmenu_check_icon" }) : U[b].setIcon(null) }, X = this.setBigHead = function(a, b) { var c = alloy.config.configList.useBigHead; switch (a) { case "single": b ? c |= 1 : c &= -2; break; case "group": b ? (c |= 2, e || (e = !0, qa())) : c &= -3; break; case "recent": b ? (c |= 4, n || (n = !0, ra())) : c &= -5 } EQQ.Presenter.MainPanel.saveBigHeadSetting(c) }, W = function(c, d) { var f; switch (c) { case "single": f = b.EQQ_buddyListPanel; break; case "group": f = b.EQQ_groupListPanel; break; case "recent": f = b.EQQ_recentListPanel } f && (d ? a.addClass(f, "EQQ_List_BigHead") : (a.removeClass(f, "EQQ_List_BigHead"), c == "single" && la())) }, sa = function() { ba() ? b.ifFlexReady ? b.setFlexBigHead(!0) : a.addClass(b.EQQ_buddyListPanel, "EQQ_List_BigHead") : b.ifFlexReady ? b.setFlexBigHead(!1) : a.removeClass(b.EQQ_buddyListPanel, "EQQ_List_BigHead"); ca() ? a.addClass(b.EQQ_groupListPanel, "EQQ_List_BigHead") : a.removeClass(b.EQQ_groupListPanel, "EQQ_List_BigHead"); da() ? a.addClass(b.EQQ_recentListPanel, "EQQ_List_BigHead") : a.removeClass(b.EQQ_recentListPanel, "EQQ_List_BigHead") }, ba = this.isBuddyListUseBigHead = function() { return alloy.config.configList.useBigHead & 1 }, ca = function() { return alloy.config.configList.useBigHead & 2 }, da = function() { return alloy.config.configList.useBigHead & 4 }, Qa = function() { var a = this.getAttribute("state"); b.setSelfState(a); pgvSendClick({ hottag: "web2qq.corner.topright." + a }) }, ta = function() { a.setStyle(this, "backgroundColor", "#cbe7fc") }, ua = function() { a.setStyle(this, "backgroundColor", "transparent") }, Ra = function() { a.removeClass(b.EQQ_MyState, "hover") }, Sa = function() { a.addClass(b.EQQ_MyState, "hover") }, Ta = function() { }, va = function(a) { b.toggleStatePanel(a) }, ga = va, Ua = function(c) { c.stopPropagation(); c = a.getClientXY(b.EQQ_MyState); c[1] += 16; ga(c); alloy.util.report2im("personalinfo|statechange") }, Va = function() { var a = this.getAttribute("classIndex"); b.toggleClass(a) }, Wa = function(a) { a.preventDefault(); alloy.sound.isMute() ? (alloy.sound.setMute(!1), alloy.util.report2im("personalinfo|setting|sound")) : (alloy.sound.setMute(!0), alloy.util.report2im("personalinfo|setting|mute")) }, wa = function(c) { b.EQQ_SetSound && (c ? a.replaceClass(b.EQQ_SetSound, "statusBar_sound_open", "statusBar_sound_mute") : a.replaceClass(b.EQQ_SetSound, "statusBar_sound_mute", "statusBar_sound_open")) }, Z = function() { a.setStyle(this, "backgroundColor", "#cbe7fc") }, $ = function() { a.setStyle(this, "backgroundColor", "transparent") }, ha = function() { var v = this.getAttribute("uin"); if (v) { if (EQQ.avatarMouseoverTimer) clearTimeout(EQQ.avatarMouseoverTimer), EQQ.avatarMouseoverTimer = null; var d = a.getClientXY(this); d[0] -= 218; d[1] -= 5; b.showMiniCardPanel(v, d); c.notifyObservers(b, "AvatarMouseover", v) } }, ia = function() { EQQ.avatarMouseoverTimer = window.setTimeout(xa, 500) }, xa = function() { b.hideMiniCardPanel() }, Xa = function() { if (EQQ.avatarMouseoverTimer) clearTimeout(EQQ.avatarMouseoverTimer), EQQ.avatarMouseoverTimer = null }, Ya = function() { EQQ.avatarMouseoverTimer = window.setTimeout(xa, 500) }, Za = function() { alloy.portal.runApp("userDetails", b.miniCardPanel.uin); pgvSendClick({ hottag: "web2qq.minicard.contacts.more" }); alloy.util.report2im("minicard|contacts|more") }, $a = function(a) { a.preventDefault(); var b = this.getAttribute("href"), c = /\d+/, a = parseInt(b.match(c)[0]); alloy.rpcService.sendGetFriendUin2(a, 2, function(a) { O = a.result.account; alloy.portal.runApp("6", { url: b.replace(c, O) }) }); pgvSendClick({ hottag: "web2qq.minicard.contacts.qzone" }); alloy.util.report2im("minicard|contacts|qzone") }, ab = function(a) { a.preventDefault(); var b = this.getAttribute("href"), c = /\d+/, a = parseInt(b.match(c)[0]); a == alloy.portal.getUin() ? alloy.portal.runApp("17", { url: b }) : alloy.rpcService.sendGetFriendUin2(a, 3, function(a) { O = a.result.account; alloy.portal.runApp("6", { url: b.replace(c, O) }) }); pgvSendClick({ hottag: "web2qq.minicard.contacts.qqmail" }); alloy.util.report2im("minicard|contacts|email") }, bb = function(a) { a.preventDefault(); a = this.getAttribute("uin"); c.notifyObservers(b, "AskVideo", { uin: a }); c.notifyObservers(b, "StartChat", a) }, aa = function(a) { a.stopPropagation() }, ma = function(a) { a.preventDefault(); a.stopPropagation(); a = this.getAttribute("uin"); c.notifyObservers(b, "StartChat", a) }, ya = function() { var a = this.getAttribute("code"); c.notifyObservers(b, "StartGroupChat", a) }, cb = function(a) { a.preventDefault(); a.stopPropagation(); pgvSendClick({ hottag: "WEB2QQ.QQPANEL.QUN.GROUPSEEK" }); alloy.util.report2im("qqpanel|groups|seek"); qqweb.portal.runApp("buddyFinder", { from: "group" }) }, db = function() { a.addClass(this, "EQQ_MySignature_hover") }, eb = function() { a.removeClass(this, "EQQ_MySignature_hover") }, fb = function(v) { v.preventDefault(); if (!Q) Q = !0, I = b.EQQ_MySignature.value, c.on(b.EQQ_MySignature, "blur", na), a.addClass(b.EQQ_MySignature_wraper, "EQQ_MySignature_edit"), b.EQQ_MySignature.focus(), b.EQQ_MySignature.select(), pgvSendClick({ hottag: "web2qq.corner.topright.personalmsg" }) }, za = function() { Q = !1; c.off(b.EQQ_MySignature, "blur", na); a.removeClass(b.EQQ_MySignature_wraper, "EQQ_MySignature_edit"); b.EQQ_MySignature.blur() }, na = function() { za(); b.EQQ_MySignature.value == I ? b.EQQ_MySignature.title = I : (b.EQQ_MySignature.title = "\u7b7e\u540d\u66f4\u65b0\u4e2d:" + b.EQQ_MySignature.value, alloy.rpcService.sendSetSignature(b.EQQ_MySignature.value), alloy.util.report2im("personalinfo|personalmsg|personalmsgedit")) }, hb = function(a) { switch (a.keyCode) { case 13: na(); break; case 27: a.stopPropagation(); za(); b.EQQ_MySignature.title = I; b.EQQ_MySignature.value = I; break; default: gb() } }, gb = function() { Aa(this, 150) }, Aa = function(a, b) { var c = String(a.value); if (c.replace(/[^\x00-\xff]/g, "aaa").length > b) a.value = f.string.cutRight(c, 1), Aa(a, b) }, ib = function() { var a = parseInt(this.getAttribute("uin"), 10); a && (alloy.portal.runApp("userDetails", a), alloy.util.report2im("personalinfo|icon")) }, jb = function(a) { var b = a.target; b.tagName == "SPAN" ? b = b.parentNode : b.tagName != "A" && (b = null); if (b) { var c = b.getAttribute("appId"); c && (a.preventDefault(), alloy.portal.runApp(c, {}), alloy.util.report2im("personalinfo|icon|" + b.getAttribute("target"))) } }; this.init = function() { G = []; o = q = z = m = !1; i = {}; r = []; k = []; D = []; B = []; E = []; w = {}; x = 0; K = s = null; b.ifFlexReady = !1; c.notifyObservers(b, "AddPObservers"); c.addObserver(alloy.sound, "SoundMuteChange", wa); c.addObserver(alloy.app.eqq.window, "resize", f.bind(this.onEqqResize, this)); f.browser.ie !== 7 && c.addObserver(alloy.app.eqq.window, "dragEnd", Ba); this.contactDragController = alloy.layout.getDesktopManager().getDragController(); this.EQQ_Container = a.id("EQQ_Container"); this.EQQ_MainPanel = a.id("EQQ_MainPanel"); this.EQQ_MyPanel = a.id("EQQ_MyPanel"); this.EQQ_MyAvatar = a.id("EQQ_MyAvatar"); this.EQQ_MyNick = a.id("EQQ_MyNick"); this.EQQ_MyState = a.id("EQQ_MyState"); this.EQQ_MyStateShow = a.id("EQQ_MyStateShow"); this.EQQ_MySignature = a.id("EQQ_MySignature"); this.EQQ_MySignature_wraper = a.id("EQQ_mySignature_wraper"); this.EQQ_myService = a.id("EQQ_myService"); this.EQQ_myInfo = a.id("EQQ_myInfo"); var v = a.id("eqqMypanelToolbar"); this.EQQ_MyState.title = "\u66f4\u6539\u5728\u7ebf\u72b6\u6001"; c.on(v, "click", jb); c.on(this.EQQ_MyAvatar, "mouseover", ha); c.on(this.EQQ_MyAvatar, "mouseout", ia); c.on(this.EQQ_MyAvatar, "click", ib); c.on(this.EQQ_MySignature_wraper, "mouseover", db); c.on(this.EQQ_MySignature_wraper, "mouseout", eb); c.on(this.EQQ_MySignature, "click", fb); c.on(this.EQQ_MySignature, "keyup", hb); c.off(this.EQQ_MyState, "click"); c.on(this.EQQ_MyState, "click", Ua); this.EQQ_YellowTips = a.id("EQQ_YellowTips"); c.on(this.EQQ_YellowTips, "click", this.onYellowTipsClick); this.EQQ_LoginSuccess = a.id("EQQ_LoginSuccess"); this.EQQ_SearchBar = a.id("EQQ_SearchBar"); this.EQQ_SearchBox = a.id("EQQ_SearchBox"); this.EQQ_SearchButton = a.id("EQQ_SearchButton"); this.EQQ_SearchResultPanel = a.id("EQQ_SearchResultPanel"); this.EQQ_SearchResultPanel_iframeWrap = a.id("EQQ_SearchResultPanel_iframeWrap"); c.on(this.EQQ_SearchBox, "mouseover", this.onSearchBoxMouseover); c.on(this.EQQ_SearchBox, "mouseout", this.onSearchBoxMouseout); c.on(this.EQQ_SearchBox, "focus", this.onSearchBoxFocus); c.on(this.EQQ_SearchBox, "blur", this.onSearchBoxBlur); c.on(this.EQQ_SearchBox, "keyup", this.onSearchBoxKeyup); c.on(this.EQQ_SearchBox, "keydown", this.onSearchBoxKeydown); c.on(this.EQQ_SearchBox, "click", f.bind(this.startSearch, this)); c.on(this.EQQ_SearchButton, "click", f.bind(function() { s && (b.hideSearchResult(), c.notifyObservers(b, "StartChat", s.uin), pgvSendClick({ hottag: "web2qq.qqpanel.searchcontacts" }), alloy.util.report2im("qqpanel|searchcontacts")) }, this)); this.EQQ_Logining = a.id("EQQ_Logining"); this.EQQ_Logining_Container = this.EQQ_Logining.parentNode; this.EQQ_Logining_feedback = a.id("EQQ_Logining_feedback"); this.EQQ_ReLoginPanel = a.id("EQQ_ReLoginPanel"); this.EQQ_ReLoginButton = a.id("EQQ_ReLoginButton"); this.EQQ_ReLoginButton_text = a.id("EQQ_ReLoginButton_text"); c.on(this.EQQ_ReLoginButton, "click", this.onReLoginButtonClick); this.EQQ_TabBuddyList = a.id("EQQ_TabBuddyList"); this.EQQ_TabGroupList = a.id("EQQ_TabGroupList"); this.EQQ_TabRecentList = a.id("EQQ_TabRecentList"); var v = a.id("EQQ_TabBuddyList_MenuIcon"), d = a.id("EQQ_TabGroupList_MenuIcon"), g = a.id("EQQ_TabRecentList_MenuIcon"); c.on(v, "click", ka); c.on(d, "click", ka); c.on(g, "click", ka); this.EQQ_ListContainer = a.id("EQQ_ListContainer"); this.EQQ_buddyListPanel = a.id("EQQ_buddyListPanel"); this.EQQ_buddyListPanelBottom = a.id("EQQ_buddyListPanelBottom"); this.EQQ_groupListOuter = a.id("EQQ_groupListOuter"); this.EQQ_groupListPanelBottom = a.id("EQQ_groupListPanelBottom"); f.platform.iPad && new f.ui.TouchScroller(this.EQQ_buddyListPanel); this.EQQ_buddyList = a.id("EQQ_buddyList"); c.on(this.EQQ_buddyList, "mousedown", aa); c.on(this.EQQ_buddyListPanel, "scroll", ea); this.EQQ_createGroupButton = a.id("EQQ_createGroupButton"); this.EQQ_searchGroupButton = a.id("EQQ_searchGroupButton"); c.on(this.EQQ_createGroupButton, "click", alloy.util.observer.openInWebBrowser); c.on(this.EQQ_createGroupButton, "click", function() { pgvSendClick({ hottag: "WEB2QQ.QQPANEL.QUN.CREATE" }); alloy.util.report2im("qqpanel|groups|create") }); c.on(this.EQQ_searchGroupButton, "click", cb); this.EQQ_ListBottom_maskButton = a.id("EQQ_ListBottom_maskButton"); c.on(this.EQQ_ListBottom_maskButton, "click", kb); this.EQQ_groupListPanel = a.id("EQQ_groupListPanel"); this.EQQ_groupListInner = a.id("EQQ_groupListInner"); f.platform.iPad && new f.ui.TouchScroller(this.EQQ_groupListInner.parentNode); c.on(this.EQQ_groupListInner, "mousedown", aa); this.EQQ_groupTabGroup = a.id("EQQ_groupTabGroup"); this.EQQ_groupTabDiscu = a.id("EQQ_groupTabDiscu"); this.EQQ_groupBox = a.id("EQQ_groupBox"); this.EQQ_discuBox = a.id("EQQ_discuBox"); c.on(this.EQQ_groupTabGroup, "click", function() { a.addClass(b.EQQ_groupTabGroup, "seled"); a.removeClass(b.EQQ_groupTabDiscu, "seled"); a.show(b.EQQ_groupBox); a.hide(b.EQQ_discuBox); H = "group"; alloy.util.report2im("qqpanel|groups|tab") }); c.on(this.EQQ_groupTabDiscu, "click", function() { a.removeClass(b.EQQ_groupTabGroup, "seled"); a.addClass(b.EQQ_groupTabDiscu, "seled"); a.hide(b.EQQ_groupBox); a.show(b.EQQ_discuBox); H = "discu"; alloy.util.report2im("qqpanel|dicussions|tab") }); this.EQQ_discuListOuter = a.id("EQQ_discuListOuter"); this.EQQ_discuListInner = a.id("EQQ_discuListInner"); this.EQQ_discuListPanelBottom = a.id("EQQ_discuListPanelBottom"); this.EQQ_createDiscuButton = a.id("EQQ_createDiscuButton"); c.on(this.EQQ_createDiscuButton, "click", this.onCreateDiscu); this.EQQ_discuCreate_button = a.id("EQQ_discuCreate_button"); c.on(this.EQQ_discuCreate_button, "click", this.onCreateDiscu); f.platform.iPad && new f.ui.TouchScroller(this.EQQ_discuListInner.parentNode); this.EQQ_recentListPanel = a.id("EQQ_recentListPanel"); f.platform.iPad && new f.ui.TouchScroller(this.EQQ_recentListPanel); this.EQQ_recentList = a.id("EQQ_recentList"); c.on(this.EQQ_recentList, "mousedown", aa); this.EQQ_findBuddy = a.id("EQQ_findBuddy"); this.EQQ_buddyManage = a.id("EQQ_buddyManage"); this.EQQ_messageManage = a.id("EQQ_messageManage"); f.browser.mobileSafari && a.hide(this.EQQ_buddyManage); c.on(this.EQQ_findBuddy, "click", function(a) { a.preventDefault(); a.stopPropagation(); pgvSendClick({ hottag: "WEB2QQ.QQPANEL.CONTACTS.SEEK" }); alloy.util.report2im("qqpanel|contacts|seek"); alloy.portal.runApp("buddyFinder", {}) }); c.on(this.EQQ_buddyManage, "click", function(a) { a.preventDefault(); a.stopPropagation(); pgvSendClick({ hottag: "WEB2QQ.QQPANEL.CONTACTS.MANAGE" }); alloy.util.report2im("qqpanel|contacts|manage"); alloy.portal.runApp("5", {}) }); c.on(this.EQQ_messageManage, "click", function(a) { a.preventDefault(); a.stopPropagation(); pgvSendClick({ hottag: "WEB2QQ.QQPANEL.CONTACTS.MSGMGR" }); alloy.util.report2im("qqpanel|contacts|msgmgr"); alloy.portal.runApp("messageManager", {}) }); this.mainTab = new f.ui.Tab; this.mainTab.add({ trigger: this.EQQ_TabBuddyList, sheet: this.EQQ_buddyListPanel }); this.mainTab.add({ trigger: this.EQQ_TabGroupList, sheet: this.EQQ_groupListPanel }); this.mainTab.add({ trigger: this.EQQ_TabRecentList, sheet: this.EQQ_recentListPanel }); this.mainTab.config.triggerEvent = "click"; this.mainTab.config.slideEnabled = !1; this.mainTab.init(); c.addObserver(this.mainTab, "show", function(a) { switch (this.indexOf(a)) { case 0: A = "single"; pgvSendClick({ hottag: "WEB2QQ.QQPANEL.CONTACTS.CONTACTSLIST" }); alloy.util.report2im("qqpanel|contacts|list"); break; case 1: A = "group"; !e && ca() && (e = !0, qa()); pgvSendClick({ hottag: "WEB2QQ.QQPANEL.QUN.QUNLIST" }); alloy.util.report2im("qqpanel|groups|list"); break; case 2: A = "recent", !n && da() && (n = !0, ra()), pgvSendClick({ hottag: "WEB2QQ.QQPANEL.RECENT.RECENTLIST" }), alloy.util.report2im("qqpanel|recent|list") } }); c.on(this.EQQ_buddyListPanel, "contextmenu", Ha); c.on(this.EQQ_groupBox, "contextmenu", Ia); c.on(this.EQQ_discuBox, "contextmenu", f.bind(this.onDiscuListContextMenu, this)); c.on(this.EQQ_recentListPanel, "contextmenu", Ja); c.on(this.EQQ_buddyListPanelBottom, "contextmenu", aa); c.on(this.EQQ_groupListPanelBottom, "contextmenu", aa); c.on(this.EQQ_discuListPanelBottom, "contextmenu", aa); v = alloy.taskBar.quickPanel.getQuickButton(50); v.setClass("EQQ_qucikButton"); c.on(v.getElement(), "contextmenu", Pa); this.onEqqResize(alloy.app.eqq.window.getBodySize()); this.onWindowResize(); a.show(this.EQQ_MyState); sa(); c.addObserver(EQQ, "eqqUacChange", sa) }; this.createStatePanelDom = function() { var b, e = d.statePanel; f.browser.ie == 7 ? (b = a.node("div", { id: "EQQ_StatePanel", "class": "EQQ_statePanel_warp" }), e = '<ul class="EQQ_statePanel EQQ_statePanel_ul">' + e + '</ul><iframe class="ui_maskBgIframe"></iframe>') : b = a.node("ul", { id: "EQQ_StatePanel", "class": "EQQ_statePanel" }); b.innerHTML = e; u.appendChild(b); this.statePanel = new alloy.layout.PopupBox({ noCatchMouseUp: !0, container: b }); c.addObserver(this.statePanel, "hide", Ra); c.addObserver(this.statePanel, "show", Sa); this.EQQ_SetOnline = a.id("EQQ_SetOnline"); this.EQQ_SetCallme = a.id("EQQ_SetCallme"); this.EQQ_SetAway = a.id("EQQ_SetAway"); this.EQQ_SetBusy = a.id("EQQ_SetBusy"); this.EQQ_SetSilent = a.id("EQQ_SetSilent"); this.EQQ_SetHidden = a.id("EQQ_SetHidden"); this.EQQ_SetOffline = a.id("EQQ_SetOffline"); this.EQQ_SetSound = a.id("EQQ_SetSound"); c.on(this.EQQ_SetSound, "mouseover", ta); c.on(this.EQQ_SetSound, "mouseout", ua); c.on(this.EQQ_SetSound, "click", Wa); b = [this.EQQ_SetOnline, this.EQQ_SetCallme, this.EQQ_SetAway, this.EQQ_SetBusy, this.EQQ_SetSilent, this.EQQ_SetHidden, this.EQQ_SetOffline]; f.array.forEach(b, function(a) { c.on(a, "mouseover", ta) }); f.array.forEach(b, function(a) { c.on(a, "mouseout", ua) }); f.array.forEach(b, function(a) { c.on(a, "click", Qa) }) }; this.createGroupMaskPanelDom = function() { var v = a.id("groupMaskPanelMenu"); v || (v = a.node("div", { "class": "groupMaskPanel", id: "groupMaskPanelMenu" })); u.appendChild(v); b.groupMaskPanel = new alloy.layout.PopupBox({ container: v, html: d.groupMaskPanel }); this.costomDom = a.id("GroupMask_Costom"); this.promptDom = a.id("GroupMask_Prompt"); this.noPromptDom = a.id("GroupMask_NoPrompt"); this.maskDom = a.id("GroupMask_Mask"); f.array.forEach([this.costomDom, this.promptDom, this.noPromptDom, this.maskDom], function(a) { c.on(a, "click", lb) }); this.setGroupMaskState(F) }; var lb = function(a) { a.preventDefault(); F = a = parseInt(this.getAttribute("state")); c.notifyObservers(b, "SetGroupMaskState", a); switch (a) { case "0": case 0: pgvSendClick({ hottag: "WEB2QQ.QQPANEL.MESSAGESETTING.QUNSELF" }); alloy.util.report2im("qqpanel|groups|msgsetting|self"); break; case "1": case 1: pgvSendClick({ hottag: "WEB2QQ.QQPANEL.MESSAGESETTING.WIDTHALERTS" }); alloy.util.report2im("qqpanel|groups|msgsetting|withalert"); break; case "2": case 2: pgvSendClick({ hottag: "WEB2QQ.QQPANEL.MESSAGESETTING.WIDTHOUTALERTS" }); alloy.util.report2im("qqpanel|groups|msgsetting|withoutalert"); break; case "3": case 3: pgvSendClick({ hottag: "WEB2QQ.QQPANEL.MESSAGESETTING.BLOCK" }), alloy.util.report2im("qqpanel|groups|msgsetting|block") } }; this.setGroupMaskState = function(b) { a.removeClass(this.costomDom, "simpleMenuItemSelected"); a.removeClass(this.promptDom, "simpleMenuItemSelected"); a.removeClass(this.noPromptDom, "simpleMenuItemSelected"); a.removeClass(this.maskDom, "simpleMenuItemSelected"); b = parseInt(b); switch (b) { case 0: a.addClass(this.costomDom, "simpleMenuItemSelected"); break; case 1: a.addClass(this.promptDom, "simpleMenuItemSelected"); break; case 2: a.addClass(this.noPromptDom, "simpleMenuItemSelected"); break; case 3: a.addClass(this.maskDom, "simpleMenuItemSelected") } }; this.setGroupListMaskState = function(b, c) { var d = a.id("EQQ_GroupList_State_" + b), f = a.id("EQQ_RecentList_State_" + b); c ? (d && a.removeClass(d, "EQQ_GroupMask_State"), f && a.removeClass(f, "EQQ_GroupMask_State")) : (d && a.addClass(d, "EQQ_GroupMask_State"), f && a.addClass(f, "EQQ_GroupMask_State")) }; var kb = function(c) { c.stopPropagation(); alloy.util.report2im("qqpanel|groups|msgsetting"); c = a.getClientXY(b.EQQ_ListBottom_maskButton); b.toggleGroupMaskStatePanel(c) }; this.toggleGroupMaskStatePanel = function(a) { this.groupMaskPanel && this.groupMaskPanel.isShow() ? this.hideGroupMaskStatePanel() : this.showGroupMaskStatePanel(a) }; this.showGroupMaskStatePanel = function(a) { this.groupMaskPanel || this.createGroupMaskPanelDom(); if (a) { var b = this.groupMaskPanel.getWidth(), c = this.groupMaskPanel.getHeight(), d = alloy.layout.getClientWidth(), f = alloy.layout.getClientHeight(), e = a[0], a = a[1] - 100; e < 2 && (e = 2); a < 2 && (a = 2); e > d - b - 2 && (e = d - b - 2); a > f - c - 2 && (a = f - c - 2); this.groupMaskPanel.setXY(e, a) } this.groupMaskPanel.setZIndex(alloy.layout.getTopZIndex(3)); this.groupMaskPanel.show() }; this.hideGroupMaskStatePanel = function() { this.groupMaskPanel && this.groupMaskPanel.hide() }; this.createMiniCardPanelDom = function() { var v = a.node("div", { id: "miniCard", "class": "panel_1" }); v.innerHTML = d.miniCardPanel; u.appendChild(v); var e = a.id("miniCard_avatar"), g = a.id("miniCard_name_inner"), h = a.id("miniCard_signature"), m = a.id("miniCard_signature_inner"), i = a.id("miniCard_clientType_inner"), k = a.id("miniCard_clientType_innerWrapper"), l = a.id("miniCard_level"), j = a.id("miniCard_level_upinfo"), o = a.id("miniCard_qzone"), n = a.id("miniCard_qmail"), q = a.id("miniCard_video"); f.platform.iPad && a.hide(q); var M = a.id("miniCard_userDetails"); c.on(v, "mouseover", Xa); c.on(v, "mouseout", Ya); c.on(M, "click", Za); c.on(o, "click", $a); c.on(n, "click", ab); c.on(q, "click", bb); this.miniCardPanel = new alloy.layout.Panel({ container: v, body: a.id("miniCardBody"), html: "" }); this.miniCardPanel.setInfo = function(v) { this.uin = v.uin; var d = v.uin == alloy.portal.getUin(); e.src = EQQ.getUserDefaultAvatar(); e.src = v.avatarUrl; d ? (M.innerHTML = "\u4fee\u6539\u8d44\u6599", e.src = alloy.util.getUserAvatar(v.uin, 1) + "&t=" + (new Date).getTime(), a.hide(q)) : (M.innerHTML = "\u8be6\u7ec6\u8d44\u6599", a.show(q)); f.platform.iPad && a.hide(q); g.innerHTML = v.htmlAllName; g.title = v.allName; m.innerHTML = ""; l.innerHTML = ""; j.innerHTML = ""; o.href = EQQ.getQzoneUrl(v.uin); n.title = v.uin == alloy.portal.getUin() ? "\u8fdb\u5165\u90ae\u7bb1" : "\u53d1\u9001\u90ae\u4ef6"; n.href = EQQ.getSendMailUrl(v.uin); q.setAttribute("uin", v.uin); d || v.clientType == "1" || v.clientType == "10000" || v.type == "stranger" || !v.clientType ? (k.className = "miniCard_clientType_innerWrapper", h.style.display = "block") : (k.className = "miniCard_clientType_" + EQQ.hash.clientType[v.clientType || "10000"], i.innerHTML = EQQ.hash.clientTypeText[v.clientType || "10000"] + "\u767b\u5f55\u4e2d", h.style.display = "none"); c.notifyObservers(b, "MiniCardShow", v) }; this.miniCardPanel.setSignature = function(a) { m.innerHTML = a.htmlSignature; m.title = a.signature }; this.miniCardPanel.setClientType = function(a) { if (this.uin == a.uin) a.clientType == "1" ? (k.className = "miniCard_clientType_" + EQQ.hash.clientType[a.clientType || "10000"], i.innerHTML = EQQ.hash.clientTypeText[a.clientType || "10000"] + "\u767b\u5f55\u4e2d", h.style.display = "none") : (k.className = "miniCard_clientType_innerWrapper", h.style.display = "block") }; this.miniCardPanel.setQQLevel = function(a) { for (var b = a.level, c = b.level, v = parseInt(c / 64), d = parseInt(c % 64 / 16), f = parseInt(c % 64 % 16 / 4), e = c % 64 % 16 % 4, g = "", h = 0; h < v; h++) g += '<div class="miniCard_level_div qqLevel_queen"></div>'; for (h = 0; h < d; h++) g += '<div class="miniCard_level_div qqLevel_sun"></div>'; for (h = 0; h < f; h++) g += '<div class="miniCard_level_div qqLevel_moon"></div>'; for (h = 0; h < e; h++) g += '<div class="miniCard_level_div qqLevel_star"></div>'; l.innerHTML = g; l.title = "\u7b49\u7ea7: " + c; if (a.uin == alloy.portal.getUin()) j.innerHTML = '<div class="miniCard_level_upinfo_div" title="\u6d3b\u8dc3\u5929\u6570\uff1a' + b.days + '"><span class="icon days"></span>' + b.days + '\u5929</div><div class="miniCard_level_upinfo_div" title="\u8ddd\u5347\u7ea7\u5230' + (c + 1) + "\u7ea7\u8fd8\u6709" + b.remainDays + '\u5929"><span class="icon remainDays"></span>' + b.remainDays + "\u5929</div>" } }; this.showMiniCardPanel = function(a, b) { this.miniCardPanel || this.createMiniCardPanelDom(); if (b) { var c = this.miniCardPanel.getWidth() + 10, d = this.miniCardPanel.getHeight() + 10, f = alloy.layout.getClientWidth(), e = alloy.layout.getClientHeight(), g = b[0], h = b[1]; g < 2 && (g = 2); h < 2 && (h = 2); g > f - c - 2 && (g = f - c - 2); h > e - d - 2 && (h = e - d - 2); this.miniCardPanel.setXY(g, h) } this.miniCardPanel.setInfo(EQQ.Model.BuddyList.getUserByUin(a), a); this.miniCardPanel.setZIndex(alloy.layout.getTopZIndex(3)); this.miniCardPanel.show() }; this.hideMiniCardPanel = function() { if (this.miniCardPanel) { var b = a.id("miniCard_buddyOption_tabBody"); a.setStyle(b, "display", "none"); this.miniCardPanel.hide() } }; this.setNoneFlashStyle = function() { a.addClass(this.EQQ_buddyList, "EQQ_buddyList_noneFlash") }; this.getHtml = function() { return d.myPanel + '<div id="EQQ_MainPanel" class="EQQ_mainPanel">' + d.mainPanelHeader + f.string.template(d.mainPanelBody, { searchReaultPanel: d.searchReaultPanel, buddyListBody: d.buddyListBody }) + d.mainPanelFooter + "</div>" }; this.createDom = function() { var a = this.getHtml(); alloy.app.eqq.getWindow().setHtml(a); this.createContextMenu() }; this.onYellowTipsClick = function() { b.hideYellowTips(); c.notifyObservers(b, "CloseYellowTipsFinish") }; this.showYellowTips = function() { C += 20; this.onWindowResize(); a.show(this.EQQ_YellowTips) }; this.hideYellowTips = function() { a.hide(this.EQQ_YellowTips); C -= 20; this.onWindowResize() }; this.onEqqResize = function(b) { var c = b.width, b = b.height - 50; b < 5 && (b = 5); var d = b - 5 - 77; a.setStyle(this.EQQ_myInfo, "width", c - 60 + "px"); a.setStyle(this.EQQ_MyNick, "width", c - 90 + "px"); a.setStyle(this.EQQ_myService, "width", c - 55 + "px"); f.browser.ie == 6 && (d += 3); a.setStyle(this.EQQ_ListContainer, "height", d + "px"); a.setStyle(this.EQQ_Logining_Container, "height", b - 2 + "px"); a.setStyle(this.EQQ_ReLoginPanel, "height", b - 2 + "px"); a.setStyle(this.EQQ_buddyListPanel, "height", d - 25 + "px"); a.setStyle(this.EQQ_groupListOuter, "height", d - 50 + "px"); a.setStyle(this.EQQ_discuListOuter, "height", d - 50 + "px"); a.setStyle(this.EQQ_groupBox, "height", d - 25 + "px"); a.setStyle(this.EQQ_discuBox, "height", d - 25 + "px"); la() }; this.onWindowResize = function() { }; this.onSearchBoxMouseover = function() { a.setClass(this, "EQQ_SearchBoxHover") }; this.onSearchBoxMouseout = function() { a.setClass(this, "EQQ_SearchBox") }; this.onSearchBoxFocus = function() { c.off(b.EQQ_SearchBox, "mouseover", b.onSearchBoxMouseover); c.off(b.EQQ_SearchBox, "mouseout", b.onSearchBoxMouseout); a.setClass(this, "EQQ_SearchBoxFocus"); a.setClass(b.EQQ_SearchButton, "EQQ_SearchButton EQQ_SearchButtonHightLight"); b.clearSearchBox(this); this.select(); b.startSearch() }; this.onSearchBoxBlur = function() { c.on(b.EQQ_SearchBox, "mouseover", b.onSearchBoxMouseover); c.on(b.EQQ_SearchBox, "mouseout", b.onSearchBoxMouseout); a.setClass(this, "EQQ_SearchBox"); a.setClass(b.EQQ_SearchButton, "EQQ_SearchButton"); b.resetSearchBox(this) }; this.resetSearchBox = function(a) { if (a.value == "") a.value = "\u641c\u7d22\u597d\u53cb..." }; this.clearSearchBox = function(a) { if (f.string.trim(a.value) == "\u641c\u7d22\u597d\u53cb...") a.value = "" }; this.onSearchButtonClick = function() { b.startSearch() }; this.onSearchBoxKeyup = function(a) { a.stopPropagation(); b.EQQ_SearchBox.value ? a.keyCode != 38 && a.keyCode != 40 && b.startSearch() : b.hideSearchResult() }; this.onSearchBoxKeydown = function(d) { switch (d.keyCode) { case 13: s && (d.preventDefault(), b.hideSearchResult(), c.notifyObservers(b, "StartChat", s.uin), pgvSendClick({ hottag: "web2qq.qqpanel.searchcontacts" }), alloy.util.report2im("qqpanel|searchcontacts")); break; case 38: x > 0 && (d = a.id("EQQ_SearchResultItem_" + s.uin), a.setStyle(d, "backgroundColor", "transparent"), x--, s = K[x], (d = a.id("EQQ_SearchResultItem_" + s.uin)) && a.setStyle(d, "backgroundColor", "#cbe7fc")); break; case 40: x < K.length - 1 && (d = a.id("EQQ_SearchResultItem_" + s.uin), a.setStyle(d, "backgroundColor", "transparent"), x++, s = K[x], (d = a.id("EQQ_SearchResultItem_" + s.uin)) && a.setStyle(d, "backgroundColor", "#cbe7fc")) } }; this.startSearch = function() { this.clearSearchBox(this.EQQ_SearchBox); c.notifyObservers(this, "Search", this.EQQ_SearchBox.value) }; this.showSearchResult = function(b) { if (this.EQQ_SearchBox.value) { K = b; var d = a.getRelativeXY(this.EQQ_SearchBox, this.EQQ_MainPanel); a.setStyle(this.EQQ_SearchResultPanel, "left", d[0] + "px"); a.setStyle(this.EQQ_SearchResultPanel, "top", d[1] + 26 + "px"); a.show(this.EQQ_SearchResultPanel); this.EQQ_SearchResultPanel.innerHTML = ""; if (b.length == 0) s = x = null, this.EQQ_SearchResultPanel.innerHTML = '<div class="EQQ_SearchResultNo">\u6ca1\u6709\u627e\u5230\u76f8\u5173\u597d\u53cb</div>'; else { x = 0; s = b[0]; for (d = 0; d < b.length; d++) { var e = b[d], g = a.node("div"); a.setClass(g, "EQQ_SearchResultItem"); g.id = "EQQ_SearchResultItem_" + e.uin; g.setAttribute("uin", e.uin); g.innerHTML = e.htmlAllName; g.title = e.allName; this.EQQ_SearchResultPanel.appendChild(g); d == 0 && a.setStyle(g, "backgroundColor", "#cbe7fc"); c.on(g, "mouseover", this.onSearchResultMouseover); c.on(g, "mouseout", this.onSearchResultMouseout); c.on(g, "mousedown", this.onSearchResultClick) } } c.on(document, "mousedown", f.bind(this.hideSearchResult, this)) } }; this.hideSearchResult = function() { a.hide(this.EQQ_SearchResultPanel); c.off(document, "mousedown") }; this.onSearchResultMouseover = function() { a.setStyle(this, "backgroundColor", "#cbe7fc") }; this.onSearchResultMouseout = function() { a.setStyle(this, "backgroundColor", "transparent") }; this.onSearchResultClick = function() { var a = this.getAttribute("uin"); b.hideSearchResult(); c.notifyObservers(b, "StartChat", a); pgvSendClick({ hottag: "web2qq.qqpanel.searchcontacts" }); alloy.util.report2im("qqpanel|searchcontacts") }; this.show = function() { a.show(this.EQQ_MainPanel) }; this.hide = function() { a.hide(this.EQQ_MainPanel) }; this.updateSelftAvatar = function() { var a = alloy.portal.getUin(); this.EQQ_MyAvatar.src = alloy.util.getUserAvatar(a, 1) + "&t=" + (new Date).getTime() }; this.updateSelfInfoChange = function(a) { this.EQQ_MyAvatar.src = EQQ.getUserAvatar(a.uin); this.EQQ_MyAvatar.title = "\u4fee\u6539\u8d44\u6599"; this.EQQ_MyAvatar.setAttribute("uin", a.uin); this.EQQ_MyNick.innerHTML = a.htmlNick; this.EQQ_MyNick.title = a.titleNick + "<" + a.uin + ">" }; this.updateSelfStateChange = function(b) { a.setClass(this.EQQ_MyStateShow, "EQQ_myStateShow EQQ_" + b); b === "offline" ? a.addClass(this.EQQ_MyAvatar, "EQQ_myAvatar_offline") : a.removeClass(this.EQQ_MyAvatar, "EQQ_myAvatar_offline"); var c = alloy.taskBar.quickPanel.getQuickButton(50); b == "online" ? c.setStateClass("") : c.setStateClass("EQQ_" + b) }; this.updateSelfSignatureChange = function(a) { (I = a = a.signature) || (a = "\u70b9\u51fb\u7f16\u8f91\u7b7e\u540d"); this.EQQ_MySignature.value = a; this.EQQ_MySignature.title = a }; this.createBuddyClass = function(a) { this.addOnlineBuddyClass(); for (var b = 0; b < a.length; b++) this.addBuddyClass(a[b]); this.addStrangerBuddyClass(); this.addBlackListBuddyClass() }; this.addOnlineBuddyClass = function() { var a = {}; a.index = EQQ.hash.userClassType.online; a.name = "\u5728\u7ebf\u597d\u53cb"; a.htmlName = f.string.toHtml(a.name); a.titleName = f.string.encodeHtmlSimple(a.name); a.count = 0; a.onlineCount = 0; a.list = { callme: [], online: [], away: [], busy: [], silent: [], offline: [] }; this.addBuddyClass(a) }; this.addStrangerBuddyClass = function() { var a = {}; a.index = EQQ.hash.userClassType.stranger; a.name = "\u964c\u751f\u4eba"; a.htmlName = f.string.toHtml(a.name); a.titleName = f.string.encodeHtmlSimple(a.name); a.count = 0; a.onlineCount = 0; a.list = { callme: [], online: [], away: [], busy: [], silent: [], offline: [] }; this.addBuddyClass(a) }; this.addBlackListBuddyClass = function() { var a = {}; a.index = EQQ.hash.userClassType.blacklist; a.name = "\u9ed1\u540d\u5355"; a.htmlName = f.string.toHtml(a.name); a.titleName = f.string.encodeHtmlSimple(a.name); a.count = 0; a.onlineCount = 0; a.list = { callme: [], online: [], away: [], busy: [], silent: [], offline: [] }; this.addBuddyClass(a) }; var Ba = function(b) { for (var b = b.width, c = G.length; --c >= 0; ) { var d = G[c].el = G[c].el || a.id("EQQ_Class_" + G[c].index + "_className"), f = G[c].len, e = G[c].html, g = G[c].html_short; if (b <= 200) d.innerHTML = g; else if (b > f + 20) d.innerHTML = e } }; this.addBuddyClass = function(b, d) { var e, g; e = a.node("div", { id: "EQQ_listClassHead_" + b.index, classIndex: b.index }); g = b.index == EQQ.hash.userClassType.online ? '\t\t\t\t\t<div class="EQQ_listClassHeadIcon">icon</div>\t\t\t\t\t<div class="EQQ_ClassList_RightContainer" title="<%=titleName%>">\t\t\t\t\t\t<div class="EQQ_Class_className" id="EQQ_Class_<%=index%>_className"><%=cut_htmlName%></div>[<span id="EQQ_Class_<%=index%>_OnlineCounter"><%=onlineCount%></span>]\t\t\t\t\t</div>\t\t\t\t' : '\t\t\t\t\t<div class="EQQ_listClassHeadIcon">icon</div>\t\t\t\t\t<div class="EQQ_ClassList_RightContainer" title="<%=titleName%>">\t\t\t\t\t\t<div class="EQQ_Class_className" id="EQQ_Class_<%=index%>_className"><%=cut_htmlName%> </div>[<span id="EQQ_Class_<%=index%>_OnlineCounter"><%=onlineCount%></span>/<span id="EQQ_Class_<%=index%>_Counter"><%=count%></span>]\t\t\t\t\t</div>\t\t\t\t'; b.cut_htmlName = b.htmlName; if (b.caculateName) { var h = j.getCharWidth(b.caculateName + ("[" + b.onlineCount + "/" + (b.count || 1) + "]"), 12); if (h > 120) h = { index: b.index, len: h, html: b.cut_htmlName }, b.cut_htmlName = '<div class="mainpanel_limit_class_width_outer"><div class="mainpanel_limit_class_width_inner">' + b.htmlName + "</div></div>...", h.html_short = b.cut_htmlName, G.push(h) } g = f.string.template(g, b); e.innerHTML = g; d ? this.EQQ_buddyList.insertBefore(e, d) : this.EQQ_buddyList.appendChild(e); c.on(e, "click", Va); h = a.node("div", { id: "EQQ_listClassBody_" + b.index, "class": "EQQ_listClassBody" }); g = f.string.template('\t\t\t\t<div id="EQQ_Class_<%=index%>_callme" class="EQQ_callmeBuddy"></div>\t\t\t\t<div id="EQQ_Class_<%=index%>_online" class="EQQ_onlineBuddy"></div>\t\t\t\t<div id="EQQ_Class_<%=index%>_busy" class="EQQ_busyBuddy"></div>\t\t\t\t<div id="EQQ_Class_<%=index%>_away" class="EQQ_awayBuddy"></div>\t\t\t\t<div id="EQQ_Class_<%=index%>_silent" class="EQQ_silentBuddy"></div>\t\t\t\t<div id="EQQ_Class_<%=index%>_offline" class="EQQ_offlineBuddy"></div>\t\t\t', b); h.innerHTML = g; this.EQQ_buddyList.insertBefore(h, e.nextSibling); this.collapsedClass(b.index) }; this.hideLogin = function() { a.hide(this.EQQ_Logining_Container); a.hide(this.EQQ_Logining_feedback); a.hide(this.EQQ_ReLoginPanel); a.show(this.EQQ_LoginSuccess); a.setStyle(this.EQQ_LoginSuccess, "height", "100%"); var b = { height: alloy.app.eqq.window.getBodySize().height, width: alloy.app.eqq.window.getBodySize().width }; this.onEqqResize(b); f.browser.ie !== 7 && Ba(b) }; this.showLogin = function(b) { a.show(this.EQQ_Logining_Container); this.EQQ_Logining.innerHTML = b || "\u53d1\u8d77\u8fde\u63a5..."; a.show(this.EQQ_Logining_feedback); a.hide(this.EQQ_ReLoginPanel); a.hide(this.EQQ_LoginSuccess); a.setStyle(this.EQQ_LoginSuccess, "height", "0px") }; this.showPullData = function() { a.show(this.EQQ_Logining_Container); this.EQQ_Logining.innerHTML = "\u62c9\u53d6\u6570\u636e..." }; this.clearBuddyList = function() { this.EQQ_buddyList.innerHTML = "" }; this.createBuddyList = function(a) { f.timedChunk(a, this.addBuddy, this, !1, function() { c.notifyObservers(b, "BuddyListReady") }) }; this.getClassExpandFlag = function(a) { return i[a] }; this.setClassExpandFlag = function(a, b) { return i[a] = b }; this.getClassAvatarLoadFlag = function(a) { return w[a] }; this.setClassAvatarLoadFlag = function(a, b) { return w[a] = b }; this.toggleClass = function(a) { i[a] ? this.collapsedClass(a) : this.expandClass(a) }; this.collapsedClass = function(b) { var c = a.id("EQQ_listClassHead_" + b), d = a.id("EQQ_listClassBody_" + b); b == EQQ.hash.userClassType.online ? (a.setClass(c, "EQQ_onlineClassHeadCollapsed"), a.removeClass(c, "expand_online")) : (a.setClass(c, "EQQ_listClassHeadCollapsed"), a.removeClass(c, "expand")); a.setStyle(d, "height", "0"); this.setClassExpandFlag(b, !1) }; this.expandClass = function(b) { var c = a.id("EQQ_listClassHead_" + b), d = a.id("EQQ_listClassBody_" + b); b == EQQ.hash.userClassType.online ? (a.setClass(c, "EQQ_onlineClassHeadExpand"), a.addClass(c, "expand_online")) : (a.setClass(c, "EQQ_listClassHeadExpand"), a.addClass(c, "expand")); a.setStyle(d, "height", "auto"); this.setClassExpandFlag(b, !0); f.out("index: " + b); fa() }; var fa = this.loadBuddyListAvatar = function() { for (var c = b.EQQ_buddyListPanel, d = parseInt(a.getStyle(c, "height"), 10), c = a.getXY(c)[1], e = 0; e < r.length; ) { var g = r[e], h = g.imgEl, m = g.classId, i = a.getXY(h)[1] - c; b.getClassExpandFlag(m) && h && i > 0 && i < d ? (f.out("checkAndLoadAvatar & loadAvatar containerHeight: " + d + ", imgTop2:" + i), h.src = EQQ.getUserAvatar(g.uin), r.splice(e, 1)) : e++ } if (ba()) { c = b.EQQ_buddyListPanel; d = parseInt(a.getStyle(c, "height"), 10); c = a.getXY(c)[1]; for (e = 0; e < k.length; ) m = k[e], g = m.el, h = m.uin, m = m.classId, i = a.getXY(g)[1] - c, b.getClassExpandFlag(m) && g && i > 0 && i < d ? (g.hasSign || EQQ.Model.BuddyList.getUserSignature(h), k.splice(e, 1)) : e++ } }, ea = function() { la() }, la = function() { if (ea.timer) window.clearTimeout(ea.timer), ea.timer = null; ea.timer = window.setTimeout(fa, 500) }, qa = function() { for (var a = [], b; b = D.shift(); ) { var c = b.gcode; b.el.hasSign || a.push(c) } a.length && EQQ.Model.BuddyList.getMultiGroupAnnounce(a) }, ra = function() { for (var a = [], b; b = B.shift(); ) { var c = b.el; b = b.uin; c.hasSign || a.push(b) } a.length && EQQ.Model.BuddyList.getMultiUserSignture(a); for (a = []; b = E.shift(); ) c = b.el, b = b.gcode, c.hasSign || a.push(b); a.length && EQQ.Model.BuddyList.getMultiGroupAnnounce(a) }; this.addBuddy = function(d) { if (d) { var e = f.string.template('\t\t\t\t\t<div class="EQQ_BuddyList_ClientType" uin="<%=uin%>" id="EQQ_BuddyList_ClientType_Title_<%=uin%>" title="' + EQQ.hash.clientTypeText[d.clientType || "PC"] + '">\t\t\t\t\t\t<div id="EQQ_BuddyList_ClientType_<%=uin%>" class="EQQ_BuddyList_ClientType_' + EQQ.hash.clientType[d.clientType || "10000"] + '"></div>\t\t\t\t\t</div>\t\t\t\t\t<div id="EQQ_BuddyList_AvatarContainer_<%=uin%>" class="EQQ_BuddyList_AvatarContainer" uin="<%=uin%>" title="' + EQQ.hash.onlineStatusText[d.state] + '">\t\t\t\t\t\t<img id="EQQ_BuddyList_Avatar_<%=uin%>" class="EQQ_BuddyList_Avatar" src="' + alloy.CONST.CDN_URL + 'style/images/avatar_default_20_20.gif" />\t\t\t\t\t\t<div class="EQQ_BuddyList_State"></div>\t\t\t\t\t</div>\t\t\t\t\t<div id="EQQ_BuddyList_RightContainer_<%=uin%>" class="EQQ_BuddyList_RightContainer" >\t\t\t\t\t\t<div id="EQQ_BuddyList_Nick_<%=uin%>" title="<%=titleAllName%> - ' + EQQ.hash.onlineStatusText[d.state] + '" class="EQQ_BuddyList_Nick"><%=htmlShowName%></div>\t\t\t\t\t\t<div id="EQQ_BuddyList_Sign_<%=uin%>" title="" class="EQQ_BuddyList_Sign"></div>\t\t\t\t\t</div>\t\t\t\t', d), g = a.id("EQQ_Class_" + d.classId + "_" + d.state); a.show(g); var h = a.node("div", { id: "EQQ_Buddy_" + d.uin, "class": "EQQ_BuddyList_Buddy", uin: d.uin, fileId: d.uin, uid: "buddy_uin_" + d.uin, from: "buddy", type: "uin" }); h.innerHTML = e; g.appendChild(h); c.on(h, "mouseover", Z); c.on(h, "mouseout", $); c.on(h, "click", function(a) { ma.apply(this, [a]); pgvSendClick({ hottag: "web2qq.qqpanel.contacts.sendmsg" }); alloy.util.report2im("qqpanel|contacts|sendmsg") }); c.on(h, "contextmenu", oa); e = a.id("EQQ_BuddyList_AvatarContainer_" + d.uin); c.on(e, "mouseover", ha); c.on(e, "mouseout", ia); f.platform.iPad || b.contactDragController.addDragClass(h); h = a.id("EQQ_BuddyList_Avatar_" + d.uin); this.getClassExpandFlag(d.classId) ? (f.out("addBuddy & loadAvatar"), h.src = EQQ.getUserAvatar(d.uin)) : r.push({ uin: d.uin, imgEl: h, classId: d.classId }); ba() && this.getClassExpandFlag(d.classId) ? EQQ.Model.BuddyList.getUserSignature(d.uin) : (h = a.id("EQQ_BuddyList_Sign_" + d.uin), k.push({ uin: d.uin, el: h, classId: d.classId })) } }; this.removeBuddy = function(b) { var d = a.id("EQQ_Buddy_" + b.uin); if (d) { c.off(d, "mouseover"); c.off(d, "mouseout"); c.off(d, "click"); c.off(d, "contextmenu"); if (b = a.id("EQQ_BuddyList_AvatarContainer_" + b.uin)) c.off(b, "mouseover"), c.off(b, "mouseout"); d.parentNode && d.parentNode.removeChild(d); return !0 } else return !1 }; this.addOnlineBuddy = function(d) { if (d) { var e = f.string.template('\t\t\t\t\t<div class="EQQ_BuddyList_ClientType" uin="<%=uin%>" id="EQQ_OnlineBuddyList_ClientType_Title_<%=uin%>" title="' + EQQ.hash.clientTypeText[d.clientType] + '">\t\t\t\t\t\t<div id="EQQ_OnlineBuddyList_ClientType_<%=uin%>" class="EQQ_BuddyList_ClientType_' + EQQ.hash.clientType[d.clientType || "10000"] + '"></div>\t\t\t\t\t</div>\t\t\t\t\t<div id="EQQ_OnlineBuddyList_AvatarContainer_<%=uin%>" class="EQQ_BuddyList_AvatarContainer" uin="<%=uin%>" title="' + EQQ.hash.onlineStatusText[d.state] + '">\t\t\t\t\t\t<img id="EQQ_OnlineBuddyList_Avatar_<%=uin%>" class="EQQ_BuddyList_Avatar" src="' + alloy.CONST.CDN_URL + 'style/images/avatar_default_20_20.gif" />\t\t\t\t\t\t<div class="EQQ_BuddyList_State"></div>\t\t\t\t\t</div>\t\t\t\t\t<div class="EQQ_BuddyList_RightContainer">\t\t\t\t\t\t<div class="EQQ_BuddyList_Nick" title="<%=titleAllName%> - ' + (EQQ.hash.clientTypeText[d.clientType || "pc"] === "PC" ? "" : EQQ.hash.clientTypeText[d.clientType || "pc"]) + EQQ.hash.onlineStatusText[d.state] + '"><%=htmlShowName%></div> <div id="EQQ_OnlineBuddyList_Sign_<%=uin%>" title="" class="EQQ_BuddyList_Sign"></div>\t\t\t\t\t</div>\t\t\t\t', d), g = a.id("EQQ_Class_" + EQQ.hash.userClassType.online + "_" + d.state); a.setStyle(g, "display", "block"); var h = a.node("div", { id: "EQQ_OnlineBuddy_" + d.uin, uin: d.uin, fileId: d.uin, uid: "online_uin_" + d.uin, from: "buddy", type: "uin" }); h.innerHTML = e; g.appendChild(h); c.on(h, "mouseover", Z); c.on(h, "mouseout", $); c.on(h, "click", function(a) { ma.apply(this, [a]); pgvSendClick({ hottag: "web2qq.qqpanel.contacts.sendmsg" }); alloy.util.report2im("qqpanel|contacts|sendmsg") }); c.on(h, "contextmenu", oa); a.addClass(h, "EQQ_BuddyList_Buddy"); e = a.id("EQQ_OnlineBuddyList_AvatarContainer_" + d.uin); c.on(e, "mouseover", ha); c.on(e, "mouseout", ia); f.platform.iPad || b.contactDragController.addDragClass(h); e = a.id("EQQ_OnlineBuddyList_Avatar_" + d.uin); h = EQQ.hash.userClassType.online; this.getClassExpandFlag(h) ? (f.out("addOnlineBuddy & loadAvatar"), e.src = EQQ.getUserAvatar(d.uin)) : r.push({ uin: d.uin, imgEl: e, classId: h }); ba() && this.getClassExpandFlag(h) ? EQQ.Model.BuddyList.getUserSignature(d.uin) : (e = a.id("EQQ_OnlineBuddyList_Sign_" + d.uin), k.push({ uin: d.uin, el: e, classId: h })) } fa() }; this.removeOnlineBuddy = function(b) { var d = a.id("EQQ_OnlineBuddy_" + b.uin); if (d) { c.off(d, "mouseover"); c.off(d, "mouseout"); c.off(d, "click"); c.off(d, "contextmenu"); if (b = a.id("EQQ_OnlineBuddyList_AvatarContainer_" + b.uin)) c.off(b, "mouseover"), c.off(b, "mouseout"); d.parentNode && d.parentNode.removeChild(d); return !0 } else return !1 }; this.updateOnlineBuddyClass = function(b) { b = b.length; a.id("EQQ_Class_" + EQQ.hash.userClassType.online + "_OnlineCounter").innerHTML = b }; this.updateBuddySignature = function(b) { if (b) { var c = a.id("EQQ_OnlineBuddyList_Sign_" + b.uin), d = a.id("EQQ_BuddyList_Sign_" + b.uin), f = a.id("EQQ_RecentList_Sign_" + b.uin); if (c && !c.hasSign) c.innerHTML = b.htmlSignature, c.title = b.titleSignature, c.hasSign = !0; if (d && !d.hasSign) d.innerHTML = b.htmlSignature, d.title = b.titleSignature, d.hasSign = !0; if (f && !f.hasSign) f.innerHTML = b.htmlSignature, f.title = b.titleSignature, f.hasSign = !0 } }; this.updateGroupAnnouncement = function(b) { var c = a.id("EQQ_GroupList_Bulletin_" + b.gid), d = a.id("EQQ_GroupRecentList_Bulletin_" + b.gid); if (c && !c.hasSign) c.innerHTML = b.htmlAnnouncement, c.title = b.titleAnnouncement, c.hasSign = !0; if (d && !d.hasSign) d.innerHTML = b.htmlAnnouncement, d.title = b.titleAnnouncement, d.hasSign = !0 }; this.jumpUp = function(b) { m = !0; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_Buddy_" + b[c]); d && a.addClass(d, "EQQ_jumpUpInBuddyList") } }; this.jumpDown = function(b) { m = !1; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_Buddy_" + b[c]); d && a.removeClass(d, "EQQ_jumpUpInBuddyList") } }; this.jumpAvatar = function(a) { m ? this.jumpDown(a) : this.jumpUp(a) }; this.flickerClassHide = function(b) { o = !0; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_listClassHead_" + b[c]); a.addClass(d, "EQQ_flickerHideInBuddyList") } }; this.flickerClassShow = function(b) { o = !1; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_listClassHead_" + b[c]); a.removeClass(d, "EQQ_flickerHideInBuddyList") } }; this.flickerClass = function(a) { o ? this.flickerClassShow(a) : this.flickerClassHide(a) }; this.groupJumpUp = function(b) { z = !0; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_Group_" + b[c]); d && a.addClass(d, "EQQ_jumpUpInGroupList") } }; this.groupJumpDown = function(b) { z = !1; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_Group_" + b[c]); d && a.removeClass(d, "EQQ_jumpUpInGroupList") } }; this.groupJumpAvatar = function(a) { z ? this.groupJumpDown(a) : this.groupJumpUp(a) }; this.recentJumpUp = function(b) { q = !0; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_Recent_" + b[c]); d && (a.addClass(d, "EQQ_jumpUpInBuddyList"), a.addClass(d, "EQQ_jumpUpInGroupList")) } }; this.recentJumpDown = function(b) { q = !1; for (var c = 0; c < b.length; c++) { var d = a.id("EQQ_Recent_" + b[c]); d && (a.removeClass(d, "EQQ_jumpUpInBuddyList"), a.removeClass(d, "EQQ_jumpUpInGroupList")) } }; this.recentJumpAvatar = function(a) { q ? this.recentJumpDown(a) : this.recentJumpUp(a) }; this.moveBuddy = function(b) { var c = a.id("EQQ_Buddy_" + b.uin), d = a.id("EQQ_Class_" + b.classId + "_" + b.state); if (d && c) { a.setStyle(d, "display", "block"); var f = c.parentNode; d.insertBefore(c, d.firstChild); var c = a.id("EQQ_BuddyList_AvatarContainer_" + b.uin), d = a.id("EQQ_BuddyList_RightContainer_" + b.uin), e = a.id("EQQ_RecentList_AvatarContainer_" + b.uin), h = a.id("EQQ_RecentList_RightContainer_" + b.uin); if (c) c.title = EQQ.hash.onlineStatusText[b.state]; if (d) d.title = b.allName + " - " + EQQ.hash.onlineStatusText[b.state]; if (e) e.title = EQQ.hash.onlineStatusText[b.state]; if (h) h.title = b.allName + " - " + EQQ.hash.onlineStatusText[b.state]; f.childNodes.length == 0 && a.setStyle(f, "display", "none") } fa() }; this.moveOnlineBuddy = function(b) { var c = a.id("EQQ_OnlineBuddy_" + b.uin); if ((b = a.id("EQQ_Class_" + EQQ.hash.userClassType.online + "_" + b.state)) && c) { a.setStyle(b, "display", "block"); var d = c.parentNode; b.insertBefore(c, b.firstChild); d.childNodes.length == 0 && a.setStyle(d, "display", "none") } fa() }; this.updateClientType = function(b) { var c = EQQ.hash.clientType[b.clientType], d = EQQ.hash.clientTypeText[b.clientType || "PC"], f = a.id("EQQ_BuddyList_ClientType_" + b.uin) || {}, e = a.id("EQQ_BuddyList_ClientType_Title_" + b.uin) || {}; f.className = "EQQ_BuddyList_ClientType_" + c; e.title = d; f = a.id("EQQ_OnlineBuddyList_ClientType_" + b.uin) || {}; e = a.id("EQQ_OnlineBuddyList_ClientType_Title_" + b.uin) || {}; f.className = "EQQ_BuddyList_ClientType_" + c; e.title = d }; this.updateBuddyClassOnlineBuddy = function(b) { a.id("EQQ_Class_" + b.index + "_OnlineCounter").innerHTML = b.onlineCount }; this.updateRecentState = function(b) { var c = a.id("EQQ_Recent_" + b.uin); if (c) { c.className = ""; a.addClass(c, "EQQ_BuddyList_Buddy"); a.addClass(c, "EQQ_" + EQQ.hash.onlineStatus[b.state] + "Buddy"); var c = EQQ.hash.clientType[b.clientType], d = EQQ.hash.clientTypeText[b.clientType || "PC"], f = a.id("EQQ_RecentList_ClientType_" + b.uin) || {}, b = a.id("EQQ_RecentList_ClientType_Title_" + b.uin) || {}; f.className = "EQQ_BuddyList_ClientType_" + c; b.title = d } }; this.updateBuddyClassCount = function(b) { a.id("EQQ_Class_" + b.index + "_Counter").innerHTML = b.count }; this.updateStrangerClassOnlineCount = function(b) { a.id("EQQ_Class_" + EQQ.hash.userClassType.stranger + "_OnlineCounter").innerHTML = b }; this.updateStrangerClassCount = function(b) { b = b.length; a.id("EQQ_Class_" + EQQ.hash.userClassType.stranger + "_Counter").innerHTML = b }; this.setUserName = function(b) { var c = b.uin, d = a.id("EQQ_BuddyList_Nick_" + c), c = a.id("EQQ_BuddyList_RightContainer_" + c); if (d && c) d.innerHTML = b.htmlShowName, c.title = b.allName }; this.setGroupMask = function(c) { F = c; switch (c) { case "0": case 0: a.id("EQQ_ListBottom_maskButton").className = "accept"; a.id("EQQ_ListBottom_maskButton").childNodes[0].className = "accept_div"; break; case "1": case 1: a.id("EQQ_ListBottom_maskButton").className = "accept"; a.id("EQQ_ListBottom_maskButton").childNodes[0].className = "accept_div"; break; case "2": case 2: a.id("EQQ_ListBottom_maskButton").className = "mask"; a.id("EQQ_ListBottom_maskButton").childNodes[0].className = "mask_div"; break; case "3": case 3: a.id("EQQ_ListBottom_maskButton").className = "mask", a.id("EQQ_ListBottom_maskButton").childNodes[0].className = "mask_div" } b.groupMaskPanel && b.setGroupMaskState(F) }; this.showReLoginPanel = function(b) { this.EQQ_ReLoginButton_text.innerHTML = b; a.hide(this.EQQ_Logining_Container); a.hide(this.EQQ_Logining_feedback); a.show(this.EQQ_ReLoginPanel); a.hide(this.EQQ_LoginSuccess) }; this.onReLoginButtonClick = function() { a.show(b.EQQ_Logining_Container); a.show(b.EQQ_Logining_feedback); a.hide(b.EQQ_ReLoginPanel); a.hide(b.EQQ_LoginSuccess); c.notifyObservers(b, "ReLogin") }; this.createGroupList = function(a) { this.EQQ_groupListInner.innerHTML = ""; for (var b = 0; b < a.length; b++) this.addGroup(a[b]) }; this.addGroup = function(d) { var e = '\t\t\t\t<div class="EQQ_GroupList_AvatarContainer" title="">\t\t\t\t\t<img id="EQQ_GroupList_Avatar_' + d.gid + '" class="EQQ_GroupList_Avatar" src="' + EQQ.getGroupAvatar(d.code) + '" />\t\t\t\t\t<div class="EQQ_GroupList_State" id="EQQ_GroupList_State_' + d.gid + '" title="\u7fa4\u5c4f\u853d"></div>\t\t\t\t</div>\t\t\t\t<div class="EQQ_GroupList_RightContainer">\t\t\t\t\t<div id="EQQ_GroupList_Name_' + d.gid + '" title="<%=titleAllName%> - <%=titleTypeText%>" class="EQQ_GroupList_Name"><%=htmlShowName%></div>\t\t\t\t\t<div id="EQQ_GroupList_Bulletin_' + d.gid + '" title="" class="EQQ_GroupList_Bulletin"></div>\t\t\t\t</div>\t\t\t', e = f.string.template(e, d), h = a.node("div", { id: "EQQ_Group_" + d.gid, code: d.code, gid: d.gid, fileId: d.code, uid: "group_gid_" + d.code, from: "buddy", type: "gid" }); h.innerHTML = e; this.EQQ_groupListInner.appendChild(h); f.platform.iPad || b.contactDragController.addDragClass(h); c.on(h, "mouseover", Z); c.on(h, "mouseout", $); c.on(h, "click", function(a) { ya.apply(this, [a]); pgvSendClick({ hottag: "web2qq.qqpanel.qun.sendmsg" }); alloy.util.report2im("qqpanel|groups|sendmsg") }); c.on(h, "contextmenu", La); a.addClass(h, "EQQ_GroupList_Group"); A === "group" && ca() ? EQQ.Model.BuddyList.getGroupAnnouncement(d.code) : (e = a.id("EQQ_GroupList_Bulletin_" + d.gid), D.push({ gcode: d.code, el: e })) }; this.updateGroupMarkName = function(b) { var c = a.id("EQQ_GroupList_Name_" + b.gid); if (c) c.innerHTML = b.htmlShowName; if (c = a.id("EQQ_GroupRecentList_Name_" + b.gid)) c.innerHTML = b.htmlShowName }; this.addDiscu = function(a) { a = this.getNewNode(a); this.EQQ_discuListInner.appendChild(a); c.on(a, "mouseover", Z); c.on(a, "mouseout", $); c.on(a, "click", function() { b.onDiscuListClick(this) }); c.on(a, "contextmenu", function(a) { var c = this.getAttribute("did"); b.onDiscuContextMenu(a, c) }); this.hideReloadDiscuList(); this.hideCreatePanel() }; this.createDiscuList = function(a) { this.EQQ_discuListInner.innerHTML = ""; a.length == 0 && this.showCreatePanel(); for (var b in a) this.addDiscu(a[b]) }; this.createRecentList = function(a) { this.EQQ_recentList.innerHTML = ""; for (var b = 0; b < a.length; b++) this.addRecent(a[b]) }; this.addRecent = function(d) { if (d.content) if (d.type == 0) { var d = d.content, e = f.string.template('\t\t\t\t\t\t<div class="EQQ_RecentList_ClientType" uin="<%=uin%>" id="EQQ_BuddyList_ClientType_Title_<%=uin%>" title="' + EQQ.hash.clientTypeText[d.clientType || "PC"] + '">\t\t\t\t\t\t\t<div id="EQQ_RecentList_ClientType_<%=uin%>" class="EQQ_BuddyList_ClientType_' + EQQ.hash.clientType[d.clientType || "10000"] + '"></div>\t\t\t\t\t\t</div>\t\t\t\t\t\t<div id="EQQ_RecentList_AvatarContainer_<%=uin%>" class="EQQ_BuddyList_AvatarContainer" uin="<%=uin%>" title="' + EQQ.hash.onlineStatusText[d.state] + '">\t\t\t\t\t\t\t<img id="EQQ_RecentList_Avatar_<%=uin%>" class="EQQ_BuddyList_Avatar" src="' + alloy.CONST.CDN_URL + 'style/images/avatar_default_20_20.gif" />\t\t\t\t\t\t\t<div class="EQQ_BuddyList_State"></div>\t\t\t\t\t\t</div>\t\t\t\t\t\t<div id="EQQ_RecentList_RightContainer_<%=uin%>" class="EQQ_BuddyList_RightContainer">\t\t\t\t\t\t\t<div id="EQQ_BuddyList_Nick_<%=uin%>" class="EQQ_BuddyList_Nick" title="<%=titleAllName%> - ' + EQQ.hash.onlineStatusText[d.state] + '"><%=htmlShowName%></div> <div id="EQQ_RecentList_Sign_<%=uin%>" title="" class="EQQ_BuddyList_Sign"></div>\t\t\t\t\t\t</div>\t\t\t\t\t', d), h = a.node("div", { id: "EQQ_Recent_" + d.uin, uin: d.uin, uin: d.uin, fileId: d.uin, uid: "recent_uin_" + d.uin, from: "buddy", type: "uin" }); h.innerHTML = e; this.EQQ_recentList.insertBefore(h, this.EQQ_recentList.firstChild); c.on(h, "mouseover", Z); c.on(h, "mouseout", $); c.on(h, "click", function(a) { ma.apply(this, [a]); pgvSendClick({ hottag: "web2qq.qqpanel.recent.sendC2Cmsg" }); alloy.util.report2im("qqpanel|recent|sendC2Cmsg") }); c.on(h, "contextmenu", Ka); f.platform.iPad || b.contactDragController.addDragClass(h); e = a.id("EQQ_RecentList_AvatarContainer_" + d.uin); c.on(e, "mouseover", ha); c.on(e, "mouseout", ia); a.addClass(h, "EQQ_BuddyList_Buddy"); a.addClass(h, "EQQ_" + EQQ.hash.onlineStatus[d.state] + "Buddy"); e = a.id("EQQ_RecentList_Avatar_" + d.uin); if (d.uin && e) e.src = EQQ.getUserAvatar(d.uin); A === "recent" && da() ? EQQ.Model.BuddyList.getUserSignature(d.uin) : (e = a.id("EQQ_RecentList_Sign_" + d.uin), B.push({ uin: d.uin, el: e })) } else d.type == 1 ? (d = d.content, e = '\t\t\t\t\t<div class="EQQ_GroupList_AvatarContainer" title="">\t\t\t\t\t\t<img id="EQQ_GroupList_Avatar_' + d.gid + '" class="EQQ_GroupList_Avatar" src="' + EQQ.getGroupAvatar(d.code) + '" />\t\t\t\t\t\t<div class="EQQ_GroupList_State" id="EQQ_RecentList_State_' + d.gid + '" title="\u7fa4\u5c4f\u853d"></div>\t\t\t\t\t</div>\t\t\t\t\t<div class="EQQ_GroupList_RightContainer" title="<%=titleAllName%> - <%=titleTypeText%>">\t\t\t\t\t\t<div id="EQQ_GroupRecentList_Name_' + d.gid + '" class="EQQ_GroupList_Name"><%=htmlShowName%></div> <div id="EQQ_GroupRecentList_Bulletin_' + d.gid + '" title="" class="EQQ_GroupList_Bulletin"></div>\t\t\t\t\t</div>\t\t\t\t', e = f.string.template(e, d), h = a.node("div", { id: "EQQ_Recent_" + d.gid, code: d.code, gid: d.gid, fileId: d.code, uid: "recent_gid_" + d.code, from: "buddy", type: "gid" }), h.innerHTML = e, this.EQQ_recentList.insertBefore(h, this.EQQ_recentList.firstChild), f.platform.iPad || b.contactDragController.addDragClass(h), c.on(h, "mouseover", Z), c.on(h, "mouseout", $), c.on(h, "click", function(a) { ya.apply(this, [a]); pgvSendClick({ hottag: "web2qq.qqpanel.recent.sendqunmsg" }); alloy.util.report2im("qqpanel|recent|sendgroupsmsg") }), c.on(h, "contextmenu", Ma), a.addClass(h, "EQQ_GroupList_Group"), A === "recent" && da() ? EQQ.Model.BuddyList.getGroupAnnouncement(d.code) : (e = a.id("EQQ_GroupRecentList_Bulletin_" + d.gid), E.push({ gcode: d.code, el: e }))) : d.type == 2 && (d = this.getNewNode(d.content, !0), this.EQQ_recentList.insertBefore(d, this.EQQ_recentList.firstChild), c.on(d, "mouseover", Z), c.on(d, "mouseout", $), c.on(d, "click", function() { b.onDiscuListClick(this) }), c.on(d, "contextmenu", function(a) { var c = this.getAttribute("did"); b.onDiscuContextMenu(a, c) })) }; this.removeRecentBuddy = function(b) { var d = a.id("EQQ_Recent_" + b.uin); if (d) { c.off(d, "mouseover"); c.off(d, "mouseout"); c.off(d, "click"); c.off(d, "contextmenu"); if (b = a.id("EQQ_RecentList_AvatarContainer_" + b.uin)) c.off(b, "mouseover"), c.off(b, "mouseout"); d.parentNode && d.parentNode.removeChild(d) } }; this.updateRecentByBuddy = function(b) { var c = a.id("EQQ_Recent_" + b.uin); c ? this.EQQ_recentList.insertBefore(c, this.EQQ_recentList.firstChild) : this.addRecent({ type: 0, content: b }) }; this.updateRecentByGroup = function(b) { var c = a.id("EQQ_Recent_" + b.gid); c ? this.EQQ_recentList.insertBefore(c, this.EQQ_recentList.firstChild) : this.addRecent({ type: 1, content: b }) }; this.updateRecentByDiscu = function(b) { var c = a.id("EQQ_Recent_" + b.did); c ? this.EQQ_recentList.insertBefore(c, this.EQQ_recentList.firstChild) : this.addRecent({ type: 2, content: b }) }; this.setMode = function(b) { switch (b) { case "master": ga = va; a.removeClass(this.EQQ_MyState, "EQQ_DisableMyStateSelect"); this.EQQ_MyState.title = "\u66f4\u6539\u5728\u7ebf\u72b6\u6001"; break; case "slave": ga = Ta, a.addClass(this.EQQ_MyState, "EQQ_DisableMyStateSelect"), this.EQQ_MyState.title = "WebQQ\u73b0\u5728\u5904\u4e8e\u8f85\u6a21\u5f0f\uff0c\u8bf7\u4ece\u5ba2\u6237\u7aefQQ\u4fee\u6539\u60a8\u7684\u5728\u7ebf\u72b6\u6001\u3002" } }; this.toggleStatePanel = function(a) { this.statePanel && this.statePanel.isShow() ? this.hideStatePanel() : this.showStatePanel(a) }; this.showStatePanel = function(b) { a.id("EQQ_StatePanel") || this.createStatePanelDom(); if (b) { var c = this.statePanel.getWidth(), d = this.statePanel.getHeight(), e = alloy.layout.getClientWidth(), f = alloy.layout.getClientHeight(), h = b[0], b = b[1]; h < 2 && (h = 2); b < 2 && (b = 2); h > e - c - 2 && (h = e - c - 2); b > f - d - 2 && (b = f - d - 2); this.statePanel.setXY(h, b) } this.statePanel.setZIndex(alloy.layout.getTopZIndex(3)); this.statePanel.show(); wa(alloy.sound.isMute()) }; this.hideStatePanel = function() { this.statePanel && this.statePanel.hide() }; this.setSelfState = function(a) { c.notifyObservers(this, "SelfStateChange", a); this.updateSelfStateChange(a) }; this.removeGroup = function(b) { var d = EQQ.Model.BuddyList.getGroupByCode(b), b = d.gid; f.out(d); var e = a.id("EQQ_Group_" + b); if (e && (c.off(e), e.parentNode)) d = e.parentNode, d.removeChild(e); f.out(e); if (b = a.id("EQQ_Recent_" + b)) if (c.off(b), b.parentNode) d = b.parentNode, d.removeChild(b); f.out(b) } }; WebqCore.register("EQQ.View.MainPanel", f); var j; j = Jx().extend(function(g) { f.call(this, g); var b = this, a = g.dom, c = g.event; this.getHtml = function() { return d.myPanel + '<div id="EQQ_MainPanel" class="EQQ_mainPanel">' + d.mainPanelHeader + g.string.template(d.mainPanelBody, { searchReaultPanel: d.searchReaultPanelFlex, buddyListBody: d.buddyListBodyFlex }) + d.mainPanelFooter + "</div>" }; this.viewQzone = function(a) { qqweb.rpcService.sendGetFriendUin2(a, 2, function(a) { qqweb.portal.runApp("6", { url: EQQ.CONST.QZONE_USER_SERVER_DOMAIN + a.result.account }); qqweb.util.report2qqweb("contextmenu|contancts|qzone") }); return !0 }; this.sendQMail = function(a) { qqweb.rpcService.sendGetFriendUin2(a, 3, function(a) { qqweb.portal.runApp("6", { url: EQQ.getSendMailUrl(a.result.account) }); qqweb.util.report2qqweb("contextmenu|contancts|mail") }); return !0 }; this.chatFromFlashMenu = function(a) { c.notifyObservers(b, "StartChat", a); qqweb.util.report2qqweb("contextmenu|contancts|sendmsg"); return !0 }; this.viewDetailFromFlashMenu = function(a) { qqweb.portal.runApp("userDetails", a); qqweb.util.report2qqweb("contextmenu|contancts|profile"); return !0 }; this.viewLogFromFlashMenu = function(a) { qqweb.portal.runApp("chatLogViewer", a); qqweb.util.report2qqweb("contextmenu|contancts|chats"); return !0 }; this.ManageFriendFromFlashMenu = function() { qqweb.portal.runApp("5", {}); qqweb.util.report2qqweb("contextmenu|contancts|manage"); return !0 }; this.findFriendFromFlashMenu = function() { qqweb.portal.runApp("buddyFinder", {}); qqweb.util.report2qqweb("contextmenu|contancts|add"); return !0 }; this.onAvatarMouseover = function(d, f) { if (d && f) { if (EQQ.avatarMouseoverTimer) clearTimeout(EQQ.avatarMouseoverTimer), EQQ.avatarMouseoverTimer = null; var g = a.getClientXY(b.EQQ_buddyList); g[0] -= 218; g[1] += f.y; b.showMiniCardPanel(d, g); c.notifyObservers(b, "AvatarMouseover", d) } }; this.onFlexException = function() { g.out("Flex-Exception"); b.flex = window.frames.iframe_fflist.document.getElementById("fflist"); b.ifFlexReady = !0; c.notifyObservers(EQQ, "LoginFailure", { text: "\u62c9\u53d6\u5931\u8d25" }) }; this.buddyListReady = function() { b.flex = window.frames.iframe_fflist.document.getElementById("fflist"); b.ifFlexReady = !0; c.notifyObservers(b, "BuddyListReady"); this.setFlexBigHead(this.isBuddyListUseBigHead()) }; var j = function() { b.hideMiniCardPanel() }; this.onAvatarMouseout = function() { EQQ.avatarMouseoverTimer = window.setTimeout(j, 500) }; this.onBuddyListClick = function(a) { c.notifyObservers(b, "StartChat", a) }; this.showSearchResult = function(b) { if (this.EQQ_SearchBox.value) { var d = a.getRelativeXY(this.EQQ_SearchBox, this.EQQ_MainPanel); a.setStyle(this.EQQ_SearchResultPanel_iframeWrap, "left", d[0] + "px"); a.setStyle(this.EQQ_SearchResultPanel_iframeWrap, "top", d[1] + 26 + "px"); a.show(this.EQQ_SearchResultPanel); a.show(this.EQQ_SearchResultPanel_iframeWrap); this.EQQ_SearchResultPanel.innerHTML = ""; if (b.length == 0) this.EQQ_SearchResultPanel.innerHTML = '<div class="EQQ_SearchResultNo">\u6ca1\u6709\u627e\u5230\u76f8\u5173\u597d\u53cb</div>'; else for (d = 0; d < b.length; d++) { var f = b[d], j = a.node("div"); a.setClass(j, "EQQ_SearchResultItem"); j.id = "EQQ_SearchResultItem_" + f.uin; j.setAttribute("uin", f.uin); j.innerHTML = f.htmlAllName; j.title = f.allName; this.EQQ_SearchResultPanel.appendChild(j); d == 0 && a.setStyle(j, "backgroundColor", "#cbe7fc"); c.on(j, "mouseover", this.onSearchResultMouseover); c.on(j, "mouseout", this.onSearchResultMouseout); c.on(j, "mousedown", this.onSearchResultClick) } c.on(document, "mousedown", g.bind(this.hideSearchResult, this)) } }; this.hideSearchResult = function() { a.hide(this.EQQ_SearchResultPanel_iframeWrap); c.off(document, "mousedown") }; this.createBuddyClass = function() { }; this.addBuddyClass = function(b, d) { var f, j; f = a.node("div", { id: "EQQ_listClassHead_" + b.index, classIndex: b.index }); j = b.index == EQQ.hash.userClassType.online ? ' <div class="EQQ_listClassHeadIcon">icon</div> <div class="EQQ_ClassList_RightContainer" title="<%=titleName%>"> <%=htmlName%>[<span id="EQQ_Class_<%=index%>_OnlineCounter"><%=onlineCount%></span>] </div> ' : ' <div class="EQQ_listClassHeadIcon">icon</div> <div class="EQQ_ClassList_RightContainer" title="<%=titleName%>"> <%=htmlName%> [<span id="EQQ_Class_<%=index%>_OnlineCounter"><%=onlineCount%></span>/<span id="EQQ_Class_<%=index%>_Counter"><%=count%></span>] </div> '; j = g.string.template(j, b); f.innerHTML = j; d ? this.EQQ_buddyList.insertBefore(f, d) : this.EQQ_buddyList.appendChild(f); c.on(f, "click", onClassHeadElClick); var i = a.node("div", { id: "EQQ_listClassBody_" + b.index, "class": "EQQ_listClassBody" }); j = g.string.template(' <div id="EQQ_Class_<%=index%>_callme" class="EQQ_callmeBuddy"></div> <div id="EQQ_Class_<%=index%>_online" class="EQQ_onlineBuddy"></div> <div id="EQQ_Class_<%=index%>_busy" class="EQQ_busyBuddy"></div> <div id="EQQ_Class_<%=index%>_away" class="EQQ_awayBuddy"></div> <div id="EQQ_Class_<%=index%>_silent" class="EQQ_silentBuddy"></div> <div id="EQQ_Class_<%=index%>_offline" class="EQQ_offlineBuddy"></div> ', b); i.innerHTML = j; this.EQQ_buddyList.insertBefore(i, f.nextSibling); this.collapsedClass(b.index) }; this.showPullData = function() { }; this.clearBuddyList = function() { b.ifFlexReady && this.flex.clearBuddyList() }; this.createBuddyList = function() { }; this.collapsedClass = function(b) { var c = a.id("EQQ_listClassHead_" + b), d = a.id("EQQ_listClassBody_" + b); b == EQQ.hash.userClassType.online ? a.setClass(c, "EQQ_onlineClassHeadCollapsed") : a.setClass(c, "EQQ_listClassHeadCollapsed"); a.setStyle(d, "height", "0"); this.setClassExpandFlag(b, !1) }; this.expandClass = function(c) { var d = a.id("EQQ_listClassHead_" + c), f = a.id("EQQ_listClassBody_" + c); c == EQQ.hash.userClassType.online ? a.setClass(d, "EQQ_onlineClassHeadExpand") : a.setClass(d, "EQQ_listClassHeadExpand"); a.setStyle(f, "height", "auto"); this.setClassExpandFlag(c, !0); g.out("index: " + c); b.loadBuddyListAvatar() }; this.onBuddyStateChange = function(a) { if (b.ifFlexReady) this.flex.onBuddyStateChange(a) }; this.onOnlineBuddyChange = function(a) { if (b.ifFlexReady) this.flex.onOnlineBuddyChange(a) }; this.addBuddy = function(a) { a = { classId: a.classId, uin: a.uin, clientType: a.clientType, state: a.state, nick: a.nick }; b.ifFlexReady && this.flex.addBuddy(a) }; this.addOnlineBuddy = function(a) { a = { uin: a.uin, clientType: a.clientType, state: a.state, nick: a.nick }; b.ifFlexReady && this.flex.addOnlineBuddy(a) }; this.removeOnlineBuddy = function(a) { b.ifFlexReady && this.flex.removeOnlineBuddy(a.uin) }; this.updateOnlineBuddyClass = function(a) { b.ifFlexReady && this.flex.updateOnlineBuddyClass(a.length) }; this.flexStartJump = function(a) { b.ifFlexReady && this.flex.startjump(a) }; this.flexStopJump = function(a) { b.ifFlexReady && this.flex.stopjump(a) }; this.jumpUp = function() { }; this.jumpDown = function() { }; this.jumpAvatar = function() { }; this.flickerClassHide = function() { }; this.flickerClassShow = function() { }; this.flickerClass = function() { }; this.moveBuddy = function(a) { a = { uin: a.uin, state: a.state }; b.ifFlexReady && this.flex.moveBuddy(a) }; this.moveOnlineBuddy = function(a) { a = { uin: a.uin, state: a.state }; b.ifFlexReady && this.flex.moveOnlineBuddy(a) }; this.updateClientType = function(a) { a = { uin: a.uin, clientType: a.clientType }; b.ifFlexReady && this.flex.updateClientType(a) }; this.updateBuddyClassOnlineBuddy = function(a) { a = { index: a.index, onlineCount: a.onlineCount }; b.ifFlexReady && this.flex.updateBuddyClassOnlineBuddy(a) }; this.updateBuddyClassCount = function(a) { a = { index: a.index, count: a.count }; b.ifFlexReady && this.flex.updateBuddyClassCount(a) }; this.updateStrangerClassOnlineCount = function(a) { b.ifFlexReady && this.flex.updateStrangerClassOnlineCount(a) }; this.updateStrangerClassCount = function(a) { b.ifFlexReady && this.flex.updateStrangerClassCount(a.length) }; this.setUserName = function(a) { a.markName && (a = { uin: a.uin, nick: a.markName }, b.ifFlexReady ? this.flex.setUserName(a) : recent.type == 2 && (a = this.getNewNode(recent.content, !0), this.EQQ_recentList.insertBefore(a, this.EQQ_recentList.firstChild), c.on(a, "mouseover", onListMouseover), c.on(a, "mouseout", onListMouseout), c.on(a, "click", function() { b.onDiscuListClick(this) }), c.on(a, "contextmenu", function(a) { var c = this.getAttribute("did"); b.onDiscuContextMenu(a, c) }))) }; this.setUseBigHead = function(a) { this.setBigHead("single", a) }; this.setFlexBigHead = function(a) { a ? this.flex.viewBigHead() : this.flex.viewSmallHead() } }, f); WebqCore.register("EQQ.View.MainPanelFlex", j) })(); (function() { WebqCore.register("EQQ.Presenter.MainPanel", function(d) { var g = this, f = d.event, j = !1, t = [], b = [], a = [], c = [], p = [], m = !0, z = !1, q = !1, o = !1, i = !1; this.init = function() { j = !1; t = []; b = []; a = []; c = []; p = []; m = !0; i = o = q = z = !1; this.View = EQQ.View.MainPanel; if (d.browser.ie && d.browser.ie == 7) { var h = d.GetSwfVer(); h != -1 ? (h = h.split(" ")[1].split(","), parseInt(h[0]) >= 10 ? (o = !0, this.View = EQQ.View.MainPanelFlex, f.addObserver(EQQ.Model.ChatMsg, "flexStartJump", d.bind(this.onFlexStartJump, this)), f.addObserver(EQQ.Model.ChatMsg, "flexStopJump", d.bind(this.onFlexStopJump, this))) : r()) : r() } this.View.createDom(this.getContainer()); f.addObserver(EQQ, "CloseWebQQ", d.bind(this.onCloseWebQQ, this)); f.addObserver(EQQ, "SelfOffline", d.bind(this.onSelfOffline, this)); f.addObserver(EQQ, "LoginSuccess", w); f.addObserver(EQQ, "LoginFailure", d.bind(x, this)); f.addObserver(EQQ, "PtwebqqFail", d.bind(C, this)); f.addObserver(EQQ.RPCService, "ChangeStatusSuccess", d.bind(u, this)); f.addObserver(alloy.portal, "UserAvatarChanged", d.bind(this.onUserAvatarChanged, this)); f.addObserver(alloy.portal, "selfInfoReady", d.bind(this.onSelfInfoReady, this)); f.addObserver(alloy.rpcService, "SetBuddySignatureSuccess", d.bind(this.onSetBuddySignatureSuccess, this)); f.addObserver(alloy.rpcService, "SetBuddySignatureError", d.bind(this.onSetBuddySignatureError, this)); f.addObserver(EQQ.Model.BuddyList, "SelfInfoChange", d.bind(this.onSelfInfoChange, this)); f.addObserver(EQQ.Model.BuddyList, "SelfStateChange", d.bind(this.updateSelfStateChange, this)); f.addObserver(EQQ.Model.BuddyList, "SelfSignatureChange", d.bind(this.handleSelfSignatureChange, this)); f.addObserver(EQQ.Model.BuddyList, "UserSignatureChange", k); f.addObserver(EQQ.Model.BuddyList, "UserQQLevelChange", D); f.addObserver(EQQ.Model.BuddyList, "GroupAnnouncementChange", B); f.addObserver(EQQ.Model.BuddyList, "LoginFail", d.bind(this.onLoginFail, this)); f.addObserver(EQQ.Model.BuddyList, "GetUserInfoSuccess", d.bind(this.onGetUserInfoSuccess, this)); f.addObserver(EQQ.Model.BuddyList, "BuddyClassChange", d.bind(this.onBuddyClassChange, this)); f.addObserver(EQQ.Model.BuddyList, "AllClassOnlineBuddyReady", d.bind(this.onAllClassOnlineBuddyReady, this)); f.addObserver(this.View, "SendGetRecentList", s); f.addObserver(EQQ.Model.BuddyList, "GroupNameChange", this.onOnGroupNameChange); f.addObserver(EQQ.Model.BuddyList, "AddBuddy", d.bind(this.onAddANewBuddy, this)); f.addObserver(EQQ.Model.BuddyList, "RemoveBuddy", d.bind(this.onRemoveBuddy, this)); f.addObserver(EQQ.Model.BuddyList, "GroupListChange", d.bind(this.onGroupListChange, this)); f.addObserver(EQQ.Model.BuddyList, "AddNewGroupToList", d.bind(this.onAddNewGroupToList, this)); f.addObserver(EQQ.Model.BuddyList, "GroupMaskChange", d.bind(this.onGroupMaskChange, this)); f.addObserver(EQQ.Model.BuddyList, "SingleGroupMaskChange", d.bind(this.onSingleGroupMaskChange, this)); f.addObserver(EQQ.Model.BuddyList, "RecentListChange", d.bind(this.onRecentListChange, this)); f.addObserver(EQQ.Model.ChatMsg, "NewStranger", d.bind(this.onNewStranger, this)); f.addObserver(EQQ.Model.ChatMsg, "MessageBoxUserListChange", d.bind(this.onMessageBoxUserListChange, this)); f.addObserver(EQQ.Model.ChatMsg, "MessageBoxGroupListChange", d.bind(this.onMessageBoxGroupListChange, this)); f.addObserver(EQQ.Model.ChatMsg, "MessageListChange", d.bind(this.onMessageListChange, this)); f.addObserver(EQQ.Model.ChatMsg, "GroupMessageListChange", d.bind(this.onGroupMessageListChange, this)); f.addObserver(this.View, "StartChat", G); f.addObserver(this.View, "AskVideo", e); f.addObserver(this.View, "StartGroupChat", n); f.addObserver(this.View, "StartDiscuChat", Q); f.addObserver(this.View, "SelfStateChange", d.bind(this.onViewSelfStateChange, this)); f.addObserver(this.View, "SetGroupMaskState", K); f.addObserver(this.View, "AddPObservers", d.bind(this.onAddPObservers, this)); f.addObserver(this.View, "ExitPortal", d.bind(this.onExitPortal, this)); f.addObserver(this.View, "CloseWebQQ", d.bind(y, this)); f.addObserver(this.View, "MinMainPanel", d.bind(A, this)); f.addObserver(this.View, "ReLogin", d.bind(H, this)); f.addObserver(this.View, "Search", d.bind(this.onSearch, this)); f.addObserver(this.View, "BuddyListReady", d.bind(this.onBuddyListDomReady, this)); f.addObserver(this.View, "CloseYellowTipsFinish", d.bind(this.onCloseYellowTipsFinish, this)); f.addObserver(this.View, "MiniCardShow", E); f.addObserver(EQQ.Model.BuddyList, "DiscuListChange", d.bind(this.onDiscuListChange, this)); f.addObserver(EQQ.Model.BuddyList, "AddNewDiscuToList", d.bind(this.onAddNewDiscuToList, this)); f.addObserver(EQQ.Model.BuddyList, "ToStartDiscuChat", Q); f.addObserver(EQQ.Model.BuddyList, "ModifyDiscuTopicSuccess", O); f.addObserver(EQQ, "QuitDiscu", l); f.addObserver(EQQ.Model.BuddyList, "QuitDiscuSuccess", P); f.addObserver(EQQ.Model.ChatMsg, "MessageBoxDiscuListChange", d.bind(this.onMessageBoxDiscuListChange, this)); f.addObserver(EQQ.Model.BuddyList, "SingleDiscuMaskChange", R); f.addObserver(EQQ.Model.ChatMsg, "ServerDiscuInfochange", J); f.addObserver(EQQ.Model.BuddyList, "DiscuInfoChange", O); f.addObserver(EQQ.Model.ChatMsg, "DiscuMessageListChange", d.bind(this.onDiscuMessageListChange, this)); f.addObserver(EQQ, "GetDiscuListFail", T); this.View.init(); this.View.setNoneFlashStyle && this.View.setNoneFlashStyle() }; var r = function() { alloy.layout.getWindowManager().createWindow("Window", { title: "\u6e29\u99a8\u63d0\u793a", modeSwitch: !0, dragable: !0, resize: !0, width: 400, height: 50, hasCloseButton: !0, hasOkButton: !0, isSetCentered: !0 }).setHtml('<div style="width:100%; height:100%; background-color:#FFFFFF; line-height:60px;text-align:center; vertical-align:middle;">\t\t\t\t\t\t\u68c0\u6d4b\u5230\u60a8\u4e3aIE7\u5185\u6838\u7528\u6237\uff0c\u8bf7\u5b89\u88c5\u6700\u65b0<a target="_blank" href="http://get.adobe.com/flashplayer">Flash\u7248\u672c</a>\uff0c\u83b7\u5f97\u66f4\u597d\u4f53\u9a8c\uff01\t\t\t\t\t </div>') }; this.onAddPObservers = function() { m = !1; f.addObserver(EQQ.Model.BuddyList, "BuddyListChange", d.bind(this.onBuddyListChange, this)); f.addObserver(EQQ.Model.BuddyList, "BuddyStateChange", d.bind(this.onBuddyStateChange, this)); f.addObserver(EQQ.Model.BuddyList, "OnlineBuddyChange", d.bind(this.onOnlineBuddyChange, this)) }; this.onBuddyListDomReady = function() { if (!z) { if (m) this.onAddPObservers(); f.addObserver(EQQ.Model.BuddyList, "UserNameChange", d.bind(this.onUserNameChange, this)); z = !0 } q = !0 }; this.getContainer = function() { return EQQ.panel.mainPanel }; var k = function(a) { g.View.miniCardPanel && (d.out("onUserSignatureChange 33:" + a.uin), g.View.miniCardPanel.setSignature(a)); g.View.updateBuddySignature(a) }, D = function(a) { g.View.miniCardPanel && (d.out("onUserQQLevelChange 33:" + a.uin), g.View.miniCardPanel.setQQLevel(a)) }, B = function(a) { g.View.updateGroupAnnouncement(a) }, E = function(a) { a && (EQQ.Model.BuddyList.getUserSignature(a.uin), EQQ.Model.BuddyList.sendGetQQLevel(a.uin)) }; this.showYellowTips = function() { this.View.showYellowTips() }; this.hideYellowTips = function() { this.View.hideYellowTips() }; this.onCloseYellowTipsFinish = function() { this.setCookieTips("hide") }; this.getCookieTips = function() { return d.cookie.get("is_close_tips", EQQ.CONST.MAIN_DOMAIN) }; this.setCookieTips = function(a) { d.cookie.set("is_close_tips", a, EQQ.CONST.MAIN_DOMAIN, null, 120) }; this.onSearch = function(a) { this.View.showSearchResult(EQQ.Model.BuddyList.searchBuddy(a, 5)) }; this.showMiniCardPanel = function(a, b) { this.View.showMiniCardPanel(a, b) }; this.hideMiniCardPanel = function() { this.View.hideMiniCardPanel() }; this.onLoginFail = function() { alloy.layout.alert("\u767b\u5f55\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5") }; this.onSelfInfoChange = function(a) { this.View.updateSelfInfoChange(a) }; this.onSelfInfoReady = function(a) { this.View.updateSelfInfoChange(a) }; this.onSetBuddySignatureSuccess = function(a) { EQQ.Model.BuddyList.getSelf().setSignature(a); this.handleSelfSignatureChange({ signature: a }); alloy.util.report2im("personalinfo|personalmsg|personalmsgsucceed") }; this.onSetBuddySignatureError = function() { alloy.layout.alert("\u7b7e\u540d\u4fee\u6539\u5931\u8d25") }; this.onUserAvatarChanged = function() { this.View.updateSelftAvatar() }; this.onOnGroupNameChange = function(a) { typeof g.View != "undefined" && g.View.updateGroupMarkName(a) }; this.updateSelfStateChange = function(a) { this.View.updateSelfStateChange(a) }; this.handleSelfSignatureChange = function(a) { this.View.updateSelfSignatureChange(a) }; this.onSelfOffline = function(a) { var b = EQQ.Model.BuddyList.getSelf(); q = i = !1; EQQ.stopPoll(); if (b) b.oldState = b.state, b.state = "offline"; this.updateSelfStateChange("offline"); a.action == "relogin" ? F(a.message) : EQQ.showEQQtips({ title: "\u8fde\u63a5\u4e2d\u65ad", content: a.message, callback: function() { EQQ.reLogin() } }) }; var w = function() { }, x = function() { this.updateSelfStateChange("offline") }, C = function() { this.updateSelfStateChange("offline") }, F = function(a) { EQQ.hideEQQtips(); alloy.layout.showLoginWindow("eqq", !0, null, a) }, u = function(a) { var b = EQQ.Model.BuddyList.getSelf(); b && (b.state = a) }; this.onBuddyClassChange = function(a) { this.clearBuddyList(); this.View.createBuddyClass(a); this.View.hideLogin() }; this.onAllClassOnlineBuddyReady = function() { i || (i = !0, this.onBuddyClassListReady()) }; this.onBuddyClassListReady = function() { EQQ.loginEnd = (new Date).getTime(); var a = EQQ.loginEnd - EQQ.loginStart; a /= 1E3; d.out("time: " + a) }; this.onBuddyListChange = function(a) { !q && !o && (this.updateAllBuddyClassCount(EQQ.Model.BuddyList.getClassList()), this.createBuddyList(a)) }; this.onRemoveBuddy = function(a) { o || this.View.removeBuddy(a) && this.View.updateBuddyClassCount(EQQ.Model.BuddyList.getClassById(a.classId)); this.View.removeRecentBuddy(a) }; this.onGroupListChange = function(a) { this.View.createGroupList(a) }; this.onAddNewGroupToList = function(a) { this.View.addGroup(a) }; this.onAddANewBuddy = function(a) { var b = a.user, c = a.newstate; this.View.addBuddy(b); this.View.updateBuddyClassCount(EQQ.Model.BuddyList.getClassById(b.classId)); a.markname && EQQ.Model.BuddyList.getBuddyByUin(b.uin).setMarkName(a.markname); f.notifyObservers(EQQ.Model.BuddyList, "BuddyStatusChange", c) }; this.onRecentListChange = function(a) { for (var b = [], c = a.length - 1; c >= 0; c--) { if (a[c].type == 0) a[c].content = EQQ.Model.BuddyList.getBuddyByUin(a[c].uin); else if (a[c].type == 1) a[c].content = EQQ.Model.BuddyList.getGroupByGid(a[c].uin); else if (a[c].type == 2) a[c].content = EQQ.Model.BuddyList.getDiscuById(a[c].uin); b.push(a[c]) } this.View.createRecentList(b) }; this.onUserNameChange = function(a) { this.View.setUserName(a) }; this.onGroupMaskChange = function(a) { for (var b = EQQ.Model.BuddyList.getGroupList(), c = 0; c < b.length; c++) { var d = b[c], e = EQQ.Model.BuddyList.isGroupPrompt(d.gid); this.View.setGroupListMaskState(d.gid, e) } this.View.setGroupMask(a) }; this.onSingleGroupMaskChange = function(a) { var b = EQQ.Model.BuddyList.isGroupPrompt(a.gid); this.View.setGroupListMaskState(a.gid, b) }; this.onGetUserInfoSuccess = function() { }; this.onNewStranger = function(a) { var b = EQQ.Model.BuddyList.getStrangerList(); this.View.updateStrangerClassOnlineCount(b.length); this.View.updateStrangerClassCount(b); this.View.addBuddy(a) }; this.updateAllBuddyClassCount = function(a) { for (var b = 0; b < a.length; b++) this.updateBuddyClassCount(a[b]) }; this.updateBuddyClassCount = function(a) { this.View.updateBuddyClassCount(a) }; this.createBuddyList = function(a) { this.View.createBuddyList(a) }; this.updateRecentByBuddy = function(a) { this.View.updateRecentByBuddy(a) }; this.updateRecentByGroup = function(a) { this.View.updateRecentByGroup(a) }; this.updateRecentByDiscu = function(a) { this.View.updateRecentByDiscu(a) }; this.onBuddyStateChange = function(a) { o ? q && (a = EQQ.Model.BuddyList.getUserByUin(a), this.View.onBuddyStateChange({ uin: a.uin, client_type: a.clientType, state: a.state, nick: a.nick })) : (a = EQQ.Model.BuddyList.getUserByUin(a), this.View.moveBuddy(a), this.View.moveOnlineBuddy(a), this.View.updateClientType(a), this.View.updateRecentState(a), this.View.miniCardPanel && this.View.miniCardPanel.setClientType(a)) }; this.onOnlineBuddyChange = function(a) { if (o) { if (q) { var b = EQQ.Model.BuddyList.getUserByUin(a); this.View.onOnlineBuddyChange({ uin: b.uin, client_type: b.clientType, state: b.state, nick: b.showName }) } } else { var b = EQQ.Model.BuddyList.getUserByUin(a), a = EQQ.Model.BuddyList.getClassByUin(a), c = EQQ.hash.onlineStatus.offline, d = EQQ.Model.BuddyList.getOnlineBuddy(); this.View.updateBuddyClassOnlineBuddy(a); this.View.updateOnlineBuddyClass(d); b.state == c ? this.View.removeOnlineBuddy(b) : this.View.addOnlineBuddy(b) } }; this.onFlexStartJump = function(a) { this.View.flexStartJump(a) }; this.onFlexStopJump = function(a) { this.View.flexStopJump(a) }; this.onMessageBoxUserListChange = function(c) { EQQ.Model.BuddyList.getSelf(); var d = typeof EQQ.Presenter.TaskBar != "undefined" ? EQQ.Presenter.TaskBar.getCurrentTaskUin() : !1; this.View.jumpDown(b); this.View.flickerClassShow(a); t = []; b = []; a = []; for (var e = 0; e < c.length; e++) d != c[e].from_uin && (t.push(c[e].from_uin), EQQ.Model.BuddyList.getSelfState() == "callme" && G(c[e].from_uin)); t.length !== 0 && (EQQ.addNeedBeat2("mainPanel"), f.addObserver(EQQ, "NotifyBeat_250", I)) }; this.onMessageBoxGroupListChange = function(a) { EQQ.Model.BuddyList.getSelf(); var b; try { b = EQQ.Presenter.TaskBar.getCurrentTaskUin() } catch (d) { } this.View.jumpDown(c); c = []; for (var e = 0; e < a.length; e++) b != a[e].from_uin && EQQ.Model.BuddyList.isGroupPrompt(a[e].from_uin) && c.push(a[e].from_uin), EQQ.Model.BuddyList.getSelfState() == "callme" && EQQ.Model.BuddyList.isGroupPrompt(a[e].from_uin) && n(a[e].group_code); c.length !== 0 && (EQQ.addNeedBeat2("mainPanel"), f.addObserver(EQQ, "NotifyBeat_250", I)) }; this.onMessageListChange = function(a) { (a = EQQ.Model.BuddyList.getBuddyByUin(a.uin)) && this.View.updateRecentByBuddy(a) }; this.onGroupMessageListChange = function(a) { (a = EQQ.Model.BuddyList.getGroupByGid(a.gid)) && this.View.updateRecentByGroup(a) }; this.onDiscuMessageListChange = function(a) { (a = EQQ.Model.BuddyList.getDiscuById(a.did)) && this.View.updateRecentByDiscu(a) }; var s = function() { EQQ.Model.BuddyList.sendGetRecentList()() }, K = function(a) { EQQ.Model.BuddyList.sendChangeGroupMask({ type: "global", uin: EQQ.Model.BuddyList.getSelfUin(), mask: a }) }, G = function(a) { EQQ.handleNotification(a, "single") || WebqCore.api.call(["chat", ["single", a]]) }, e = function(a) { a = a.uin; if (!EQQ.Model.ChatMsg.uinToVideo) EQQ.Model.ChatMsg.uinToVideo = []; EQQ.Model.ChatMsg.uinToVideo[a] = {}; f.notifyObservers(g, "AskVideo", { uin: a }) }, n = function(a) { var b = EQQ.Model.BuddyList.getGroupByCode(a).gid; EQQ.handleNotification(b, "group") || WebqCore.api.call(["chat", ["group", a]]) }; this.collapsedAllClass = function() { for (var a = EQQ.Model.BuddyList.getClassList(), b = 0; b < a.length; b++) this.View.collapsedClass(a[b].index) }; var y = function() { EQQ.exit() }, A = function() { this.hide() }, H = function() { EQQ.reLogin() }; this.onExitPortal = function() { alloy.portal.exit() }; this.onCloseWebQQ = function() { q = i = !1; this.hide(); this.View.showLogin() }; this.clearBuddyList = function() { this.View.clearBuddyList() }; this.showLogin = function() { this.View.showLogin() }; this.show = function() { j = !0; this.View.show() }; this.hide = function() { j = !1; this.View.hide() }; this.toggleShow = function() { j ? this.hide() : this.show() }; this.showReLoginPanel = function(a) { this.View.showReLoginPanel(a) }; var I = function() { b = []; a = []; var e = t.concat(c, p); e.length === 0 && (f.removeObserver(EQQ, "NotifyBeat_250", I), EQQ.removeNeedBeat2("mainPanel")); for (var i = 0; i < t.length; i++) { var j = t[i], k = EQQ.Model.BuddyList.getClassIdByUin(j); g.View.getClassExpandFlag(k) ? b.push(j) : d.array.indexOf(a, k) == -1 && a.push(k) } b.length > 0 && g.View.jumpAvatar(b); a.length > 0 && g.View.flickerClass(a); c.length > 0 && g.View.groupJumpAvatar(c); e.length > 0 && g.View.recentJumpAvatar(e); p.length > 0 && g.View.discuJumpAvatar(p) }; this.onViewSelfStateChange = function(a) { var b = "offline", c = EQQ.Model.BuddyList.getSelf(); if (c) b = c.state; d.out("==onViewSelfStateChange, self: " + a + ", old: " + b); b == "offline" && a != "offline" ? EQQ.login(a) : EQQ.Model.BuddyList.sendChangeStatus(a); a == "offline" && (q = i = !1, EQQ.stopPoll()) }; this.removeGroup = function(a) { g.View.removeGroup(a); EQQ.Model.BuddyList.removeGroup(a) }; this.removeDiscu = function(a) { g.View.removeDiscu(a) }; var Q = function(a) { EQQ.handleNotification(a, "discu") || WebqCore.api.call(["chat", ["discu", a]]) }; this.onDiscuListChange = function(a) { this.View.createDiscuList(a) }; this.onAddNewDiscuToList = function(a) { this.View.addDiscu(a) }; var O = function(a) { g.View.updateDiscuName(a) }, l = function(a) { EQQ.Model.BuddyList.sendQuitDisc(a) }, P = function(a) { g.removeDiscu(a.did) }; this.onMessageBoxDiscuListChange = function(a) { EQQ.Model.BuddyList.getSelf(); var b = ""; try { b = EQQ.Presenter.TaskBar.getCurrentTaskUin() } catch (c) { } this.View.discuJumpDown(p); p = []; for (var d = 0; d < a.length; d++) { var e = a[d]; b != e.did && EQQ.Model.BuddyList.isDiscuPrompt(e.did) && p.push(e.did); EQQ.Model.BuddyList.getSelfState() == "callme" && EQQ.Model.BuddyList.isDiscuPrompt(e.did) && Q(e.did) } p.length !== 0 && (EQQ.addNeedBeat2("mainPanel"), f.addObserver(EQQ, "NotifyBeat_250", I)) }; var R = function(a) { g.View.setDiscuListMaskState(a.did, a.mask) }, J = function(a) { EQQ.Model.BuddyList.refreshDiscuInfo(a.did) }, T = function() { g.View.showReloadDiscuList() }; this.saveBigHeadSetting = function(a) { alloy.config.configList.useBigHead = a; alloy.rpcService.sendSetConfig({ data: { r: { appid: 50, value: { useBigHead: a } } } }) } }) })();