feixn jPlugin.js

(function(g) {
    var e = /(http:\/\/|https:\/\/|ftp:\/\/|www\.){1}[\w-]+(\.[\w-]+)*(:[\d]+)?(\/[\w-\.\/?&=]*)?/ig;
    var a = /<img\s[\s\S]*?(alt='[^']*'|alt="[^"]*"|alt=[\S]*)[\s\S]*?(>[^<]*<\/img>|>)/gi;
    var c = /^<br\s*\/?>$/i;
    g.extend(g.fn, {
        jChatWindow: function(at) {
            var w = g.extend({
                maxRelative: g(document.body),
                mode: "singleChat",
                user: {},
                buddy: {},
                defaultHeight: 365,
                defaultWidth: 448,
                onActive: function() {},
                onClosed: function() {},
                onFocus: function() {},
                onMined: function() {},
                onMaxed: function() {},
                onResized: function() {},
                onSendMessage: function() {}
            },
            at);
            var X = g("<div />").attr("id", "Main_chatWindow_" + w.user.uid + "_" + w.buddy.uid).addClass("pop_default_message pop_dm_bg w450").css({
                top: "-1000px",
                left: "-1000px"
            });
            var s = g("<div />").addClass("pop_outer_new1");
            var aa = g("<div />").addClass("pop_inner_new1");
            X.append(s.append(aa));
            X.appendTo(document.body);
            w.maxRelative = ((typeof w.maxRelative == "string") ? g("#" + w.maxRelative) : w.maxRelative);
            X.maxRelative = w.maxRelative;
            var aE = g("<div />").addClass("pop_message_title h42_new1");
            var D = w.buddy.statusClass;
            var F = buddyPor(w.buddy, D, 2);
            var t = g("<i />").addClass("nobg");
            var o = g("<img />").attr("src", F);
            var aG = g("<em />").addClass(status);
            t.append(o).append(aG);
            var ai = g("<span />").addClass("status");
            var u = g("<strong />").addClass("pl20");
            var J = g("<p />");
            var aw = g("<h2 />").append(t).append(u).append(ai);
            aE.append(aw).append(J);
            aa.append(aE);
            var ar = g("<div />").addClass("pop_ctr_bar");
            var aH = g("<i />").addClass("close");
            var W = g("<i />").addClass("max");
            var z = g("<i />").addClass("min");
            ar.append(z).append(W).append(aH);
            aa.append(ar);
            var B = g("<div />").addClass("message_main_new1 clearfix");
            var G = g("<div />").addClass("message_content_new1");
            var ad = G;
            var y = g("<div />").addClass("chat_info chat_new1 chat_append_sec").css({
                height: "158px"
            });
            var p = g("<div class='chat_append_tip chat_append_tip1'>请勿轻信汇款、中奖和话费充值等信息,谨防受骗。</div>");
            y.append(p);
            var m = g("<div />").addClass("face_main");
            var j = g("<a />").attr("href", "#").attr("title", "选择表情").addClass("btn_face_new");
            var ae = g("<a />").attr("href", "#").attr("title", "设置字体").addClass("btn_fonts none");
            var H = jChatWindowPopExpression();
            H.css("display", "none");
            var al = g("<div />").addClass("chat_input chat_pc");
            var an = "edit" + w.buddy.uid;
            var R = g("<div contenteditable='true' id='" + an + "'/>").addClass("chat_textarea");
            if (g.browser.mozilla) {
                R.append("<br/>")
            }
            al.append(R);
            var ax = g("<div />").addClass("send_btn");
            var P = g("<a />").attr("href", "#").addClass("btn_send_new").append("发&nbsp;送");
            var aB = g("<span>");
            var aj = X.attr("id") + "_checkbox";
            var C = g("<input />").attr("name", "checkbox").attr("type", "checkbox").attr("id", aj).attr("checked", "checked");
            var Z = g("<label />").attr("for", aj).append("以短信方式发送");
            aB.append(C).append(Z);
            var aA = g("<strong />").attr("id", X.attr("id") + "smsWordCounter").html("180");
            var az = g("<em />").append("还可输入").append(aA).append("字");
            ax.append(P).append(aB).append(az);
            G.append(y).append(m.append(j).append(ae).append(H)).append(al).append(ax);
            var ac = g("<div />").addClass("extend_btn");
            var x = g("<a />").attr("href", "#").addClass("btn_display none").append("显示");
            var I = g("<a />").attr("href", "#").addClass("btn_hide").append("隐藏");
            X.isExpanded = true;
            ac.append(x).append(I);
            var aq = g("<div />").addClass("avatar");
            var E = g("<img alt='' complete='complete' />").attr("src", portrait.defaultIcon);
            var am = g("<div />").addClass("user_info_topnew1");
            var q = "";
            var ag = "";
            if (w.buddy.mn && w.buddy.mn.trim().length > 0) {
                ag = "fetion_mobile_new1";
                q = w.buddy.mn
            } else {
                var r = new jCompactUri(w.buddy.uri);
                ag = "fetion_num_new1";
                if (r.isMobileNo) {
                    ag = "fetion_mobile_new1"
                }
                q = r.mobileNoOrSid
            }
            var k = g("<a href='#' target='_blank'>申请公开手机号</a>");
            am.append(g("<div class='user_head_90new1' />").append(E)).append('<ul class="user_info_new1"><li><i id="buddy_icon" class=' + ag + "></i><label id='buddy_num' class=\"fetion_gray\">" + q + "</label></li></ul>");
            var ah = g("<div />").addClass("user_info_botnew1");
            var l = g("<img alt='' complete='complete' />").attr("src", portrait.defaultIcon);
            ah.append(g("<i class='user_head_90new1' />").append(l));
            aq.append(am).append(ah);
            var L = null;
            B.append(G).append(aq).append(ac);
            aa.append(B);
            var ab = g("<div class='chat_move_right' direction='right' />").css("cursor", "e-resize");
            var Y = g("<div class='chat_move_left' direction='left' />").css("cursor", "w-resize");
            var Q = g("<div class='chat_move_bottom' direction='bottom'><img alt='' src='images/onepixel.jpg' complete='complete' style='height:1px;width:1px' /></div>").css("cursor", "s-resize");
            var aI = g("<div class='chat_move_rb' direction='right_bottom'><img alt='' src='images/onepixel.jpg' complete='complete' style='height:1px;width:1px' /></div>").css("cursor", "se-resize");
            var aF = g("<div class='chat_move_lb' direction='left_bottom'><img alt='' src='images/onepixel.jpg' complete='complete' style='height:1px;width:1px' /></div>").css("cursor", "sw-resize");
            var N = g("<div class='chat_move_top' direction='top'><img alt='' src='images/onepixel.jpg' complete='complete' style='height:1px;width:1px' /></div>").css("cursor", "n-resize");
            var av = g("<div class='chat_move_rt' direction='right_top'><img alt='' src='images/onepixel.jpg' complete='complete' style='height:1px;width:1px' /></div>").css("cursor", "ne-resize");
            var au = g("<div class='chat_move_lt' direction='left_top'><img alt='' src='images/onepixel.jpg' complete='complete' style='height:1px;width:1px' /></div>").css("cursor", "nw-resize");
            X.append(N).append(Q).append(Y).append(ab).append(aI).append(av).append(aF).append(au);
            X.lastPosition = {
                top: X.css("top"),
                left: X.css("left")
            };
            X.lastSize = {
                height: X.height(),
                width: X.width(),
                isExpanded: X.isExpanded
            };
            X.isActived = false;
            X.isShow = false;
            X.isExpanded = true;
            X.maxed = false;
            X.enablechatInput = true;
            X.inputPermission = 0;
            X.hasShown = false;
            function af(aK) {
                stopPropagation(aK);
                X.css("z-index", __zIndex++);
                w.onFocus(X)
            }
            function T() {
                H.css("display", "none")
            }
            X.close = function() {
                X.css("z-index", -1);
                if (X.maxed) {
                    X.maxed = false;
                    X.css({
                        top: X.lastPosition.top,
                        left: X.lastPosition.left
                    });
                    y.scrollTop(y.get(0).scrollHeight)
                }
                X.css({
                    top: "-1000px",
                    left: "-1000px"
                });
                X.isActived = false;
                X.isShow = false;
                X.hasShown = false;
                X.expand();
                T();
                R.get(0).innerHTML = g.browser.mozilla ? "<br/>": "";
                w.onClosed(X)
            };
            X.active = function() {
                X.isActived = true;
                X.css("z-index", -1);
                X.resize(w.defaultHeight, w.defaultWidth);
                w.onActive(X)
            };
            X.show = function(aL, aK) {
                if (typeof aL == "number" && typeof aK == "number" && !X.maxed) {
                    X.css({
                        top: aL + "px",
                        left: aK + "px"
                    })
                }
                X.css({
                    "z-index": __zIndex++,
                    display: "block"
                });
                X.isShow = true;
                X.hasShown = true;
                R.blur();
                R.focus();
                X.resize();
                w.onFocus(X)
            };
            X.focus = function() {
                w.onFocus(X)
            };
            X.hide = function() {
                X.css({
                    "z-index": -1,
                    display: "none"
                });
                T();
                X.isShow = false
            };
            X.resize = function(aM, aL) {
                if (typeof aM != "number") {
                    aM = X.height()
                }
                if (typeof aL != "number") {
                    aL = X.width()
                }
                y.height(0);
                X.get(0).style.height = aM + "px";
                X.get(0).style.width = aL + "px";
                if (X.maxed) {
                    if (X.isExpanded) {
                        G.get(0).style.width = (aL - 123) + "px"
                    } else {
                        G.get(0).style.width = (aL - 11) + "px"
                    }
                } else {
                    if (X.isExpanded) {
                        G.get(0).style.width = (aL - 123) + "px"
                    } else {
                        G.get(0).style.width = (aL - 11) + "px"
                    }
                }
                var aK = 0;
                y.parent().children().each(function(aN) {
                    aK += g(this).outerHeight()
                });
                aK = aM - (aK + y.outerHeight()) - aE.outerHeight();
                if (L && L.css("display") == "none") {
                    aK += L.outerHeight()
                }
                aK = ((aK < 0) ? 0 : aK);
                y.get(0).style.height = aK + "px";
                T();
                w.onResized(X)
            };
            X.bind("click",
            function() {
                T()
            });
            var K;
            var aC;
            X.logSelfMsg = function(aO) {
                R.get(0).innerHTML = g.browser.mozilla ? "<br/>": "";
                var aL = g("<dl />").addClass("self");
                var aN = new Date();
                var aM = aN.getHours() + ":" + (aN.getMinutes() < 10 ? "0" + aN.getMinutes() : aN.getMinutes());
                if (typeof K == "undefined" || typeof aC == "undefined" || !K || aM != aC) {
                    var aP = g("<dt />").append(htmlEncode(cnSubstr(w.user.displayName, 18)));
                    aP.append(g("<strong />").append("说"));
                    aP.append(g("<span />").append("(" + aM + "):"))
                }
                K = true;
                aC = aM;
                aO = aO.replace(/\u000a|\u000d\u000a/gi, "<br>");
                aO = aO.replace(__hrefReg,
                function(aQ) {
                    if (aQ.indexOf("://") >= 0) {
                        return "<a href='" + aQ + "' target='_blank'>" + aQ + "</a>"
                    } else {
                        return "<a href='http://" + aQ + "' target='_blank'>" + aQ + "</a>"
                    }
                });
                var aK = g("<dd />").append(EmoticonReplace(aO));
                aL.append(aP).append(aK);
                y.append(aL);
                y.scrollTop(y.get(0).scrollHeight)
            };
            X.logFriendMsg = function(aO) {
                var aL = g("<dl />").addClass("friend");
                var aN = new Date();
                var aM = aN.getHours() + ":" + (aN.getMinutes() < 10 ? "0" + aN.getMinutes() : aN.getMinutes());
                if (typeof K == "undefined" || typeof aC == "undefined" || K || aM != aC) {
                    var aP = g("<dt />").append(htmlEncode(cnSubstr(w.buddy.displayName, 18)));
                    aP.append(g("<strong />").append("说"));
                    aP.append(g("<span />").append("(" + aM + "):"))
                }
                K = false;
                aC = aM;
                aO = htmlEncode(aO);
                aO = aO.replace(/\u000a|\u000d\u000a/gi, "<br>");
                aO = aO.replace(__hrefReg,
                function(aQ) {
                    if (aQ.indexOf("://") >= 0) {
                        return "<a href='" + aQ + "' target='_blank'>" + aQ + "</a>"
                    } else {
                        return "<a href='http://" + aQ + "' target='_blank'>" + aQ + "</a>"
                    }
                });
                var aK = g("<dd />").append(EmoticonReplace(aO));
                aL.append(aP).append(aK);
                y.append(aL);
                y.scrollTop(y.get(0).scrollHeight)
            };
            X.logErrorInfo = function(aK) {
                var aL = g("<div />").addClass("code_error").append(aK);
                y.append(aL).append("<br/>");
                y.scrollTop(y.get(0).scrollHeight)
            };
            X.getSendMessagePlainText = function(aK) {
                var aL = aK ? aK: R.get(0).innerHTML;
                if (!aL) {
                    return ""
                } else {
                    if (!g.browser.msie) {
                        aL = aL.replace(/<br[ ]*[\/]?>$/i, "");
                        aL = aL.replace(/<br[ ]*[\/]?>/gi, "http://www.cnblogs.com/xihulangzi/admin/file://u000a/")
                    }
                    aL = aL.replace(/<br[ ]*[\/]?>/gi, "http://www.cnblogs.com/xihulangzi/admin/file://u000d//u000a");
                    aL = aL.replace(a,
                    function(aN) {
                        var aO = g(aN).attr("src");
                        var aM = aO.substring(aO.lastIndexOf("/") + 1, aO.lastIndexOf("."));
                        return GetEmotionKey(aM)
                    });
                    return aL
                }
                return ""
            };
            X.enableInput = function(aK) {
                X.enablechatInput = aK;
                if (aK) {
                    X.inputPermission = 0;
                    al.removeClass().addClass("chat_input chat_pc").css("background-color", "");
                    R.removeAttr("disabled").attr("contenteditable", "true").css("background-color", "");
                    j.find("img").removeAttr("disabled").attr("src", "images/face_btn.png");
                    P.removeAttr("disabled").removeClass().addClass("btn_send_new")
                } else {
                    al.removeClass().addClass("chat_fileinput chat_pc").css("background-color", "#f0f0f0");
                    R.attr("disabled", "disabled").attr("contenteditable", "false").css("background-color", "#f0f0f0");
                    j.find("img").attr("disabled", "disabled").attr("src", "images/face_btnfile.png");
                    P.attr("disabled", "disabled").removeClass().addClass("btn_sendfile_new")
                }
            };
            X.collapse = function() {
                var aK = 0;
                if (X.maxed) {
                    var aL = ac.width() + aq.width();
                    G.width(G.width() + aL);
                    aK = X.width()
                } else {
                    aK = X.width() - aq.width()
                }
                X.isExpanded = false;
                X.resize(X.height(), aK);
                x.removeClass("none");
                I.addClass("none");
                aq.addClass("none")
            };
            X.expand = function() {
                var aK = 0;
                if (X.maxed) {
                    var aL = ac.width() + aq.width();
                    G.width(G.width() - aL);
                    aK = X.width()
                } else {
                    aK = X.width() + aq.width()
                }
                X.isExpanded = true;
                X.resize(X.height(), aK);
                x.addClass("none");
                I.removeClass("none");
                aq.removeClass("none")
            };
            x.bind("click", X.expand);
            I.bind("click", X.collapse);
            X.recalWordCount = function() {
                if (C.attr("checked")) {
                    setTimeout(function() {
                        var aK = X.getSendMessagePlainText();
                        var aL = 180 - aK.length;
                        aA.html(aL);
                        if (aL < 0) {
                            az.addClass("font_warning")
                        } else {
                            az.removeClass("font_warning")
                        }
                        aK = null
                    },
                    200)
                }
            };
            X.onCkbSmsCheckerChanged = function(aK) {
                if (aK) {
                    if (C.attr("checked")) {
                        az.css("display", "");
                        U = true;
                        g.increaseCounters("500600001")
                    } else {
                        az.css("display", "none");
                        U = false
                    }
                } else {
                    az.css("display", "none");
                    U = false
                }
                X.recalWordCount()
            };
            C.bind("click", X.onCkbSmsCheckerChanged);
            var aJ = ContactStatus.Unknown;
            var ap = ContactType.Unknown;
            var v = true;
            var U = false;
            var n = false;
            function A(aK, aL) {
                if (aK.cas != "0" || aK.sms != "0.0:0:0") {
                    C.removeAttr("checked");
                    X.onCkbSmsCheckerChanged(false);
                    C.attr("disabled", "disabled");
                    Z.css("color", "rgb(128, 128, 128)")
                } else {
                    if (aL) {
                        C.removeAttr("disabled");
                        Z.css("color", "")
                    }
                }
            }
            function O(aK, aN, aL) {
                U = false;
                n = false;
                if (aN == ContactType.MobileBuddy) {
                    if (L) {
                        L.remove()
                    }
                    if (w.user.isCM) {
                        L = jChatWindowPopMessage({
                            target: ad,
                            canClose: true,
                            className: "pop_blacktxt",
                            onClose: X.resize
                        });
                        L.setInnerHtml("对方是您的手机好友,您的消息将以长短信方式发送到对方手机。");
                        v = true
                    } else {
                        L = jChatWindowPopMessage({
                            target: ad,
                            canClose: false,
                            className: "pop_blacklist",
                            onClose: X.resize
                        });
                        L.setInnerHtml("对方是您的手机好友,您尚未绑定手机号,无法与其发起会话。");
                        v = false
                    }
                    U = true;
                    C.attr("checked", "checked");
                    X.onCkbSmsCheckerChanged(true);
                    C.attr("disabled", "disabled");
                    Z.css("color", "rgb(128, 128, 128)");
                    X.resize()
                } else {
                    if (aN == ContactType.ChatFriend) {
                        if (L) {
                            L.remove()
                        }
                        L = jChatWindowPopMessage({
                            target: ad,
                            canClose: true,
                            className: "pop_blacktxt",
                            onClose: X.resize
                        });
                        if ((aL & ContactStatus.CloseService) == ContactStatus.CloseService) {
                            L.setInnerHtml("对方没有开通服务,您不能和其会话。");
                            C.attr("disabled", "disabled");
                            Z.css("color", "rgb(128, 128, 128)");
                            v = false
                        } else {
                            var aM = g("<span>该用户不在您的好友列表中。</span><a href=#>点击此处添加为好友</a><br/><span>请勿轻信汇款、中奖等消息。</span><a href=#>点击此处将其加入黑名单</a>");
                            L.setInnerHtml(aM);
                            C.attr("disabled", "disabled");
                            Z.css("color", "rgb(128, 128, 128)");
                            X.resize();
                            aM.eq(1).bind("click",
                            function() {
                                createAddBuddyTab(aK.sid);
                                return false
                            });
                            aM.eq(4).bind("click",
                            function() {
                                OpBuddy(aK.uid, "1");
                                return false
                            });
                            if (getUserPermission(__user.gp, "contact") != 1) {
                                v = false
                            } else {
                                v = true
                            }
                        }
                        C.removeAttr("checked");
                        X.onCkbSmsCheckerChanged(false);
                        C.attr("disabled", "disabled");
                        Z.css("color", "rgb(128, 128, 128)")
                    } else {
                        if (aN == ContactType.FetionBuddy) {
                            ao(aK, aL)
                        }
                    }
                }
                X.onCkbSmsCheckerChanged(v);
                A(aK, false)
            }
            function ao(aK, aL) {
                if (L) {
                    L.remove()
                }
                if (aK.bss == "0" && aK.mn == "") {
                    L = jChatWindowPopMessage({
                        target: ad,
                        canClose: false,
                        className: "pop_blacktxt",
                        onClose: X.resize
                    });
                    L.setInnerHtml("对方没有开通服务,您不能和其会话。");
                    C.removeAttr("checked");
                    X.onCkbSmsCheckerChanged(false);
                    C.attr("disabled", "disabled");
                    Z.css("color", "rgb(128, 128, 128)");
                    X.resize();
                    v = false
                } else {
                    if ((aL & ContactStatus.Online) == ContactStatus.Online) {
                        X.resize();
                        C.removeAttr("checked");
                        X.onCkbSmsCheckerChanged(false);
                        C.removeAttr("disabled");
                        Z.css("color", "");
                        v = true
                    } else {
                        if ((aL & ContactStatus.Busy) == ContactStatus.Busy) {
                            L = jChatWindowPopMessage({
                                target: ad,
                                canClose: true,
                                className: "pop_blacktxt",
                                onClose: X.resize
                            });
                            L.setInnerHtml("对方“忙碌”,可能无法及时回复您的消息。");
                            X.resize();
                            C.removeAttr("checked");
                            X.onCkbSmsCheckerChanged(false);
                            C.removeAttr("disabled");
                            Z.css("color", "");
                            v = true
                        } else {
                            if ((aL & ContactStatus.Away) == ContactStatus.Away) {
                                L = jChatWindowPopMessage({
                                    target: ad,
                                    canClose: true,
                                    className: "pop_blacktxt",
                                    onClose: X.resize
                                });
                                L.setInnerHtml("对方“离开”,可能无法及时回复您的消息。");
                                X.resize();
                                C.removeAttr("checked");
                                X.onCkbSmsCheckerChanged(false);
                                C.removeAttr("disabled");
                                Z.css("color", "");
                                v = true
                            } else {
                                if ((aL & ContactStatus.SmsOnline) == ContactStatus.SmsOnline) {
                                    L = jChatWindowPopMessage({
                                        target: ad,
                                        canClose: true,
                                        className: "pop_blacktxt",
                                        onClose: X.resize
                                    });
                                    if (w.user.isCM) {
                                        L.setInnerHtml("对方短信在线,您的消息会以短信发送到对方手机。");
                                        C.removeAttr("checked");
                                        X.onCkbSmsCheckerChanged(false);
                                        C.removeAttr("disabled");
                                        Z.css("color", "");
                                        n = true
                                    } else {
                                        L.setInnerHtml("对方离线,您的消息将在对方下次登录时发送。");
                                        C.removeAttr("checked");
                                        X.onCkbSmsCheckerChanged(false);
                                        C.attr("disabled", "disabled");
                                        Z.css("color", "rgb(128, 128, 128)")
                                    }
                                    X.resize();
                                    v = true
                                } else {
                                    if ((aL & ContactStatus.Offline) == ContactStatus.Offline) {
                                        L = jChatWindowPopMessage({
                                            target: ad,
                                            canClose: true,
                                            className: "pop_blacktxt",
                                            onClose: X.resize
                                        });
                                        L.setInnerHtml("对方离线,您的消息将在对方下次登录时发送。");
                                        X.resize();
                                        C.removeAttr("checked");
                                        X.onCkbSmsCheckerChanged(false);
                                        C.attr("disabled", "disabled");
                                        Z.css("color", "rgb(128, 128, 128)");
                                        v = true
                                    } else {
                                        X.resize();
                                        C.removeAttr("checked");
                                        X.onCkbSmsCheckerChanged(false);
                                        C.removeAttr("disabled");
                                        Z.css("color", "");
                                        v = true
                                    }
                                }
                            }
                        }
                    }
                }
                A(aK, false)
            }
            X.setBuddyStatus = function(aR) {
                w.buddy = aR;
                A(aR, true);
                var aS = aR.type,
                aM = aR.status;
                var aK = (ap != aS);
                var aL = (aJ != aM);
                if (aS != ContactType.ChatFriend) {
                    var aP = aR.pd ? cnSubstr(aR.pd.trim(), 6) : getStatusDesc(aR, aS, aM);
                    ai.text("(" + aP + ")")
                } else {
                    ai.text("- 陌生人")
                }
                if (!aK && !aL) {
                    return
                }
                var aQ = aR.statusClass;
                aG.removeClass().addClass(aQ);
                var aO = w.buddy.statusClass;
                var aN = buddyPor(w.buddy, aO, 2);
                o.attr("src", aN);
                if ((aM & ContactStatus.BlockList) > 0) {
                    if (L) {
                        L.remove()
                    }
                    L = jChatWindowPopMessage({
                        target: ad,
                        canClose: true,
                        className: "pop_blacktxt",
                        onClose: X.resize
                    });
                    L.setInnerHtml("对方在您的黑名单中,您不能和其会话。");
                    X.resize();
                    C.removeAttr("checked");
                    X.onCkbSmsCheckerChanged(false);
                    C.attr("disabled", "disabled");
                    Z.css("color", "rgb(128, 128, 128)");
                    v = false
                } else {
                    O(aR, aS, aM)
                }
                aJ = aM;
                ap = aS;
                X.enableInput(v)
            };
            X.setBuddyStatus(w.buddy);
            X.getBuddyDisplayNo = function(aL) {
                var aK = "";
                var aN = "";
                if (aL.mn && aL.mn.trim().length > 0) {
                    aN = "fetion_mobile_new1";
                    aK = aL.mn
                } else {
                    var aM = new jCompactUri(aL.uri);
                    aN = "fetion_num_new1";
                    if (aM.isMobileNo) {
                        aN = "fetion_mobile_new1"
                    }
                    aK = aM.mobileNoOrSid
                }
                return {
                    num: aK,
                    className: aN
                }
            };
            X.setBuddyInfo = function(aL) {
                w.buddy = aL;
                u.text(cnSubstr(aL.displayName, 18));
                J.text(cnSubstr(aL.ct == 1 ? "": aL.i, 38));
                var aM = aL.statusClass;
                var aN = buddyPor(aL, aM, 2);
                o.attr("src", aN);
                E.attr("src", getUserPortraitUrl(w.buddy));
                var aK = X.getBuddyDisplayNo(w.buddy);
                am.find("#buddy_icon").removeClass().addClass(aK.className);
                am.find("#buddy_num").text(aK.num)
            };
            X.setBuddyInfo(w.buddy);
            X.setUserInfo = function(aK) {
                w.user = aK;
                l.attr("src", getUserPortraitUrl(aK));
                if (w.user.cas != "0" && w.user.isCM) {
                    C.removeAttr("checked");
                    X.onCkbSmsCheckerChanged(false);
                    C.attr("disabled", "disabled");
                    Z.css("color", "rgb(128, 128, 128)")
                }
            };
            X.setUserInfo(w.user);
            function S(aM) {
                T();
                if (!X.maxed) {
                    aM = window.event || aM;
                    if (X.get(0).setCapture) {
                        X.get(0).setCapture()
                    } else {
                        if (window.captureEvents) {
                            window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP)
                        }
                    }
                    var aN = X.offset();
                    var aK = getViewportHeight();
                    var aL = getViewportWidth();
                    var aO = {
                        win: X,
                        mOffsetX: aM.clientX - aN.left,
                        mOffsetY: aM.clientY - aN.top,
                        viewH: aK,
                        viewW: aL
                    };
                    g.appendMaskPage(99);
                    X.bind("mousemove", aO, b).bind("mouseup", aO, h)
                }
            }
            aE.bind("mousedown", S);
            function V(aM) {
                T();
                if (!X.maxed) {
                    aM = window.event || aM;
                    if (X.get(0).setCapture) {
                        X.get(0).setCapture()
                    } else {
                        if (window.captureEvents) {
                            window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP)
                        }
                    }
                    var aK = getViewportHeight();
                    var aL = getViewportWidth();
                    var aN = g(this).attr("direction");
                    var aO = {
                        win: X,
                        originSize: {
                            H: X.height(),
                            W: X.width()
                        },
                        moveDire: aN,
                        originX: aM.clientX,
                        originY: aM.clientY,
                        viewH: aK,
                        viewW: aL
                    };
                    g.appendMaskPage(99);
                    X.bind("mousemove", aO, f).bind("mouseup", aO, d)
                }
            }
            X.find("div[direction]").bind("mousedown", V);
            ar.bind("mousedown", af);
            ar.find("i").bind("mouseover",
            function() {
                var aK = g(this).attr("class");
                g(this).attr("class", aK + "_on")
            }).bind("mouseout",
            function() {
                var aK = g(this).attr("class");
                g(this).attr("class", aK.replace(/^(.*)_on$/, "$1"))
            });
            X.isOnFocus = function() {
                return parseInt(X.css("z-index")) == __zIndex - 1 && X.isActived
            };
            aw.bind("mousedown", af);
            J.bind("mousedown", af);
            aH.bind("click", X.close);
            z.bind("click",
            function() {
                X.hide();
                w.onMined(X)
            });
            X.max = function() {
                X.resize(w.maxRelative.height() - 3, w.maxRelative.width() - 2)
            };
            function aD() {
                if (!X.maxed) {
                    X.maxed = true;
                    W.removeClass().addClass("resume");
                    X.lastPosition = {
                        top: X.css("top"),
                        left: X.css("left")
                    };
                    X.lastSize = {
                        height: X.height(),
                        width: X.width(),
                        isExpanded: X.isExpanded
                    };
                    var aK = w.maxRelative.offset();
                    X.css({
                        top: aK.top,
                        left: aK.left
                    });
                    X.max();
                    w.onMaxed(X, true)
                } else {
                    X.maxed = false;
                    W.removeClass().addClass("max");
                    X.css({
                        top: X.lastPosition.top,
                        left: X.lastPosition.left
                    });
                    if (X.isExpanded != X.lastSize.isExpanded) {
                        if (X.lastSize.isExpanded) {
                            X.expand()
                        } else {
                            X.collapse()
                        }
                    }
                    X.resize(X.lastSize.height, X.lastSize.width);
                    w.onMaxed(X, false)
                }
                y.scrollTop(y.get(0).scrollHeight);
                R.blur();
                R.focus()
            }
            W.bind("click", aD);
            aE.bind("dblclick", aD);
            X.bind("mousedown",
            function() {
                X.css("z-index", __zIndex++);
                w.onFocus(X)
            });
            var i, ak;
            function M() {
                if (document.selection) {
                    i = document.selection.createRange()
                } else {
                    if (window.getSelection) {
                        ak = window.getSelection().getRangeAt(0)
                    }
                }
            }
            var ay = Math.ceil(parseFloat(R.css("line-height")));
            R.bind("keydown",
            function(aM) {
                aM = window.event || aM;
                var aL = aM.keyCode || aM.charCode;
                function aN() {
                    return (aL == 13 && aM.ctrlKey) || (aL == 13 && aM.shiftKey) || (aL == 13 && aM.altKey)
                }
                function aK() {
                    return aL == 13
                }
                M();
                if (aN()) {
                    if (i) {
                        i.text = "\r\n";
                        i.select()
                    } else {
                        if (ak) {
                            replaceSelection(ak, "<br>");
                            replaceSelection(ak, " ");
                            R.scrollTop(R.scrollTop() + ay)
                        }
                    }
                    if (aM.preventDefault) {
                        aM.preventDefault()
                    } else {
                        aM.returnValue = false
                    }
                } else {
                    if (aK()) {
                        if (aM.preventDefault) {
                            aM.preventDefault()
                        } else {
                            aM.returnValue = false
                        }
                        P.click()
                    }
                }
            }).bind("keypress", M).bind("keyup", M).bind("mousedown", M).bind("mouseup", M).bind("click", M);
            R.bind("keydown", X.recalWordCount);
            R.bind("keyup", X.recalWordCount);
            R.bind("paste",
            function(aO) {
                aO = window.event || aO;
                if (window.clipboardData) {
                    var aR = window.clipboardData.getData("Text");
                    window.clipboardData.setData("Text", aR)
                } else {
                    if (!g.browser.mozilla) {
                        if (aO.preventDefault) {
                            aO.preventDefault()
                        } else {
                            aO.returnValue = false
                        }
                        var aQ = R.get(0);
                        aQ.focus();
                        var aM = window.getSelection();
                        var aL = aM.getRangeAt(0);
                        var aP = "";
                        aP = aO.clipboardData.getData("Text");
                        var aR = new String(aP);
                        aL.deleteContents();
                        var aK = aL.createContextualFragment(aR);
                        var aN = aK.lastChild;
                        aL.insertNode(aK);
                        aL.setEndAfter(aN);
                        aL.collapse(false);
                        aM.removeAllRanges();
                        aM.addRange(aL);
                        aL.detach();
                        aL = null
                    }
                }
                if (g.browser.mozilla) {
                    setTimeout(function() {
                        var aS = R.get(0).textContent;
                        R.get(0).innerHTML = "";
                        R.append(aS)
                    },
                    10)
                }
                X.recalWordCount()
            });
            P.bind("mousedown", af).bind("click",
            function() {
                var aO = X.getSendMessagePlainText();
                if (aO == "") {
                    return
                }
                if (C.attr("checked")) {
                    var aS = "rgb(255,204,204)";
                    if (aO.length > 180) {
                        var aN = R.get(0);
                        var aR = 0;
                        var aL = 0;
                        var aM = 0;
                        var aQ = function() {
                            aN.style.backgroundColor = aS;
                            aR = setTimeout(aP, 100);
                            aK(); ++aM
                        };
                        var aP = function() {
                            aN.style.backgroundColor = "";
                            aL = setTimeout(aQ, 100);
                            aK(); ++aM
                        };
                        var aK = function() {
                            if (aM > 3) {
                                clearTimeout(aR);
                                clearTimeout(aL);
                                aN.style.backgroundColor = ""
                            }
                        };
                        aQ();
                        return
                    }
                }
                aO = htmlDecode(aO);
                aO = htmlEncode(aO);
                if (!g.browser.msie) {
                    aO = aO.replace(/\\u000a/gi, "\u000a")
                }
                aO = aO.replace(/\\u000d\\u000a/gi, "\u000d\u000a");
                if (C.attr("checked")) {
                    U = true;
                    n = false
                } else {
                    U = false
                }
                w.onSendMessage(X, w.buddy.uid, aO, U, n);
                R.blur();
                R.focus();
                X.recalWordCount()
            });
            j.bind("mousedown", af).bind("mouseover",
            function() {
                j.addClass("btn_hover")
            }).bind("mouseout",
            function() {
                j.removeClass("btn_hover")
            }).bind("click",
            function(aK) {
                j.toggleClass("btn_fechove");
                if (H.css("display") == "none") {
                    H.css("display", "")
                } else {
                    H.css("display", "none")
                }
                stopPropagation(aK)
            });
            X.setInput = function(aK) {
                R.get(0).innerHTML = EmoticonReplace(aK);
                if (g.browser.mozilla) {
                    R.append("<br>")
                }
            };
            setTimeout(function() {
                H.fillImgs();
                H.bindItemClick(function(aK, aL) {
                    stopPropagation(aL);
                    setTimeout(function() {
                        var aN = g(aK).children("img");
                        var aP = EntityReplace(aN.attr("pattern"));
                        var aO = EmoticonReplace(aP);
                        if (i && i.parentElement && i.parentElement().id == an) {
                            replaceSelection(i, aO)
                        } else {
                            if ((ak && ak.startContainer && ak.startContainer.id == an) || (ak && ak.startContainer && ak.startContainer.parentNode && ak.startContainer.parentNode.id == an)) {
                                replaceSelection(ak, aO);
                                if (ak) {
                                    R.blur();
                                    R.focus()
                                }
                            } else {
                                var aM = R.get(0).innerHTML;
                                if (g.browser.mozilla) {
                                    aM = aM.replace(/<br[ ]*[\/]?>$/i, aO + "<br>")
                                } else {
                                    aM += aO
                                }
                                R.get(0).innerHTML = aM
                            }
                        }
                        j.toggleClass("btn_fechove")
                    },
                    50)
                })
            },
            1000);
            X.fixPosition = function() {
                var aK = {
                    top: X.css("top"),
                    left: X.css("left")
                };
                X.css({
                    top: "-1000px",
                    left: "-1000px"
                });
                window.setTimeout(function() {
                    X.css({
                        top: aK.top,
                        left: aK.left
                    })
                },
                300)
            };
            return X
        }
    });
    function b(n) {
        var o = n.data;
        var m = o.win;
        var l = o.mOffsetX;
        var j = o.mOffsetY;
        var k = o.viewH - m.outerHeight();
        var i = o.viewW - m.outerWidth();
        k = (k < 0 ? 0 : k);
        i = (i < 0 ? 0 : i);
        var q = window.event || n;
        if (q.button < 2) {
            var p = parseInt(q.clientY) - parseInt(j);
            var r = parseInt(q.clientX) - parseInt(l);
            p = (p < 0 ? 0 : p);
            r = (r < 0 ? 0 : r);
            p = (p > k ? k: p);
            r = (r > i ? i: r);
            m.css({
                top: p + "px",
                left: r + "px"
            })
        }
    }
    function h(i) {
        var k = i.data;
        var j = k.win;
        if (j.get(0).releaseCapture) {
            j.get(0).releaseCapture()
        } else {
            if (window.releaseEvents) {
                window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP)
            }
        }
        g.removeMaskPage();
        j.unbind("mousemove").unbind("mouseup")
    }
    function f(n) {
        var o = n.data;
        var m = o.win;
        var j = o.originSize;
        var t = o.moveDire;
        var s = o.originX;
        var q = o.originY;
        var p = window.event || n;
        if (p.clientX < 0 || p.clientY < 0 || p.clientX > o.viewW || p.clientY > o.viewH) {
            return
        }
        var k = j.W;
        var i = j.H;
        var r = false;
        var l = false;
        switch (t) {
        case "right":
            k = j.W + (p.clientX - s);
            break;
        case "left":
            k = j.W - (p.clientX - s);
            l = true;
            break;
        case "top":
            i = j.H - (p.clientY - q);
            r = true;
            break;
        case "bottom":
            i = j.H + (p.clientY - q);
            break;
        case "right_top":
            k = j.W + (p.clientX - s);
            i = j.H - (p.clientY - q);
            r = true;
            break;
        case "right_bottom":
            k = j.W + (p.clientX - s);
            i = j.H + (p.clientY - q);
            break;
        case "left_top":
            k = j.W - (p.clientX - s);
            i = j.H - (p.clientY - q);
            r = true;
            l = true;
            break;
        case "left_bottom":
            k = j.W - (p.clientX - s);
            i = j.H + (p.clientY - q);
            l = true;
            break
        }
        if (k >= 448 && l) {
            m.css("left", p.clientX)
        }
        if (i >= 365 && r) {
            m.css("top", p.clientY)
        }
        k = (k < 448 ? 448 : k);
        i = (i < 365 ? 365 : i);
        m.resize(i, k)
    }
    function d(i) {
        var k = i.data;
        var j = k.win;
        if (j.get(0).releaseCapture) {
            j.get(0).releaseCapture()
        } else {
            if (window.releaseEvents) {
                window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP)
            }
        }
        g.removeMaskPage();
        j.unbind("mousemove").unbind("mouseup")
    }
})(jQuery); (function(a) {
    a.extend(a.fn, {
        jContactTree: function(c) {
            var g = a.extend({
                target: a(document.body),
                enable: true,
                isSinglePattern: true,
                user: {},
                onBuddyListExpand: function() {},
                onBuddyItemDbClick: function() {},
                onBuddyItemClick: function() {},
                onBuddyItemMouseOver: function() {},
                onBuddyItemMouseOut: function() {},
                onBuddyItemRightClick: function() {}
            },
            c);
            g.target = ((typeof g.target == "string") ? a("#" + g.target) : g.target);
            var f = a("<div id='friends_list'><dl /></div>").addClass("friends_list");
            if (g.isSinglePattern) {
                f.addClass("friends_list_1")
            }
            g.target.append(f);
            f.adjustHeight = function(i) {
                if (typeof i == "undefined") {
                    i = g.target.innerHeight() - a("#search_friends").outerHeight(true) - a("#add_friend").outerHeight(true) - 46
                }
                f.height(i)
            };
            f.adjustHeight();
            f.setPattern = function(h) {
                g.isSinglePattern = h
            };
            f.createBuddyList = function(n, j) {
                var h = new Object();
                var o = "";
                var l = "";
                var i = htmlEncode(n.n);
                if (j) {
                    o = "<dt id='buddyList_" + n.id + "' title='" + i + "' class='open'><b>" + i + "</b><em>(0/0)</em></dt>";
                    l = "<dd>"
                } else {
                    o = "<dt id='buddyList_" + n.id + "' title='" + i + "'><b>" + i + "</b><em>(0/0)</em></dt>";
                    l = "<dd style='display:none'>"
                }
                if (g.isSinglePattern) {
                    l += "<ul class='friends_list_small'>"
                } else {
                    l += "<ul>"
                }
                var m = "</ul></dd>";
                var k = new Array();
                h.pushContent = function(p) {
                    k.push(p)
                };
                h.toHtmlString = function() {
                    k.sort(function(u, t) {
                        return buddyComparator(u.buddyObj, t.buddyObj)
                    });
                    var s = "";
                    s += l;
                    var p = 0;
                    var r = k.length;
                    for (var q = 0; q < r; q++) {
                        s += k[q].strContent;
                        if (k[q].buddyObj.currIsOc) {
                            p++
                        }
                    }
                    s += m;
                    o = o.replace("<em>(0/0)</em>", "<em>(" + p + "/" + r + ")</em>");
                    s = o + s;
                    return s
                };
                return h
            };
            f.createBuddyItem = function(n) {
                var i = new Object();
                var o = "buddyitem_" + n.uid;
                var m = n.statusClass;
                var h = EmotionNonhtmlReplace(n.displayName, -1, true);
                var k = cnSubstr((!n.i || n.ct == 1) ? "": EmotionNonhtmlReplace(n.i, -1, true), 22 - h.length, true);
                var j = "";
                if (n.isVip) {
                    j = " style='color:red;'"
                }
                i.buddyObj = n;
                var l = "";
                var p = portrait.fetion_16;
                if (g.isSinglePattern) {
                    l = getContactPresDesc(n);
                    i.strContent = "<li id='" + o + "' on='' user='" + n.uid + "'><div class=friends_info><h5><strong class=BuddyList_Container><img src='" + p + "'><em class='" + m + "'></em></strong><label " + j + ">" + h + "</label>&nbsp;<span>" + k + "</span><em>&nbsp;" + l + "</em></h5></div><div class=friend_control></div></li>"
                } else {
                    var l = n.pd ? cnSubstr(n.pd.trim(), 6) : getStatusDesc(n);
                    l = htmlEncode(l);
                    i.strContent = "<li id='" + o + "' user='" + n.uid + "'><div class=friends_photo_box><img class=friends_photo alt='' src='" + p + "' complete='complete' /></div><div class=friends_info><h5><i class='" + m + "'></i><label " + j + ">" + h + "</label>&nbsp;<em> " + l + "</em></h5><p>" + k + "</p></div><div class=friend_control></div></li>"
                }
                return i
            };
            f.firstTop = 0;
            f.h = 0;
            f.portraitFlag = false;
            f.bind("mousedown",
            function() {
                var h = parseInt(f.css("height"));
                if (f.firstTop == 0) {
                    f.firstTop = f.find("dt:first").offset().top
                }
                f.h = h + f.firstTop
            }).bind("scroll",
            function() {
                var k, j;
                j = f.find("dt[class='open']");
                if (j.size() <= 0) {
                    return
                }
                k = j.next();
                var i = k.find("ul > li[on!='1']");
                if (i.size() > 0 && i.first().offset().top <= f.h) {
                    var h;
                    i.each(function(l, m) {
                        a(m).attr("on", "1");
                        var o = a(m).attr("id").substring(10);
                        if (__contactMap.containsKey(o)) {
                            h = __contactMap.get(o);
                            var n = buddyPor(h, h.statusClass, 1);
                            a(m).find(".BuddyList_Container > img").attr("src", n)
                        }
                        if (l >= 29) {
                            if (!a(m).next().attr("id") || a(m).next().offset().top > f.h) {
                                return false
                            }
                        }
                    })
                }
            });
            f.bindEventToList = function() {
                f.find("dt").bind("click",
                function() {
                    var k = {
                        expanded: false
                    };
                    var i = a(this);
                    var j = i.next();
                    if (j.css("display") == "none") {
                        k.expanded = true;
                        i.addClass("open");
                        j.css("display", "");
                        if (__contactMap.size() > 10 && j.find("ul > li[on='1']").size() <= 0) {
                            var h;
                            j.find("ul > li").each(function(l, m) {
                                a(m).attr("on", "1");
                                var o = a(m).attr("id").substring(10);
                                if (__contactMap.containsKey(o)) {
                                    h = __contactMap.get(o);
                                    var n = buddyPor(h, h.statusClass, 1);
                                    a(m).find(".BuddyList_Container > img").attr("src", n)
                                }
                                if (l >= 29) {
                                    if (!a(m).next().attr("id") || a(m).next().offset().top > f.h) {
                                        return false
                                    }
                                }
                            })
                        }
                    } else {
                        k.expanded = false;
                        i.removeAttr("class");
                        j.css("display", "none")
                    }
                    return false
                })
            };
            f.bindEventToItem = function() {
                var h = f.find("li");
                h.bind("mouseover",
                function(i) {
                    if (isMouseOver(this, i)) {
                        this.className = "hover";
                        g.onBuddyItemMouseOver(this, a(this).attr("user"))
                    }
                }).bind("mouseout",
                function(i) {
                    if (isMouseOut(this, i)) {
                        this.className = "";
                        g.onBuddyItemMouseOut(this, a(this).attr("user"))
                    }
                }).bind("dblclick",
                function() {
                    g.onBuddyItemDbClick(this, a(this).attr("user"))
                }).bind("click",
                function() {
                    g.onBuddyItemClick(this, a(this).attr("user"))
                });
                h.each(function(l) {
                    var m = a(this);
                    var k = a(this).attr("user");
                    var j;
                    if (g.isSinglePattern) {
                        j = m.children().eq(1)
                    } else {
                        j = m.children().eq(2)
                    }
                    j.bind("click",
                    function() {
                        g.onBuddyItemRightClick(this, k);
                        this.className = "friend_control friend_control_down"
                    })
                })
            };
            f.fixSpecialList = function(k) {
                for (var j = 0,
                l = k.length; j < l; j++) {
                    var h = __contactTree.getBuddyList(k[j]);
                    var m = h.eq(1).find("ul > li:first");
                    if (m.length <= 0) {
                        h.eq(0).css("display", "none")
                    } else {
                        h.eq(0).css("display", "")
                    }
                }
            };
            f.setInnerHtml = function(h) {
                f.children().get(0).innerHTML = h;
                f.bindEventToList();
                f.bindEventToItem();
                f.fixSpecialList(["0", "-1"])
            };
            f.insertBuddyList = function(m, l) {
                var p = f;
                var n = a("<dt><b /><em /></dt><dd><ul /></dd>");
                var k = n.eq(0).attr("id", "buddyList_" + m.id).attr("title", m.n);
                var h = k.find("b").text(m.n);
                var j = k.find("em").text("(0/0)");
                var i = n.eq(1).css("display", "none");
                k.bind("click",
                function() {
                    var q = {
                        expanded: false
                    };
                    if (i.css("display") == "none") {
                        q.expanded = true;
                        k.addClass("open");
                        i.css("display", "")
                    } else {
                        q.expanded = false;
                        k.removeClass("open");
                        i.css("display", "none")
                    }
                    return false
                });
                var o = p.find("dt");
                if (o.length <= 0) {
                    p.children().eq(0).append(n)
                } else {
                    if (typeof l == "number" && l >= 0 && l < o.length) {
                        o.eq(l).before(n)
                    } else {
                        p.children().eq(0).append(n)
                    }
                }
                return n
            };
            function e(i) {
                var h = i.attr("user");
                return __contactMap.get(h)
            }
            function d(n, m) {
                var j = n.size();
                if (j <= 0) {
                    return - 1
                } else {
                    var r = e(n.eq(0));
                    if (buddyComparator(m, r) <= 0) {
                        return 0
                    }
                    var l = e(n.eq(j - 1));
                    if (buddyComparator(m, l) > 0) {
                        return j
                    }
                    var i = 0;
                    var k = j - 1;
                    var p = 0;
                    while (k - i > 1) {
                        var p = Math.floor((i + k) / 2);
                        var q = e(n.eq(p));
                        var h = buddyComparator(m, q);
                        if (h <= 0) {
                            k = p
                        } else {
                            if (h > 0) {
                                i = p
                            }
                        }
                    }
                    var o = e(n.eq(i));
                    if (buddyComparator(m, o) == 0) {
                        return i
                    } else {
                        return k
                    }
                }
            }
            f.getBuddyList = function(j) {
                var h = f;
                var i = null;
                if (typeof j != "undefined" && j != null) {
                    var k = h.find("#buddyList_" + j).next();
                    i = k.prev().andSelf()
                }
                return i
            };
            f.isBuddyListOpen = function(h) {
                var i = f.getBuddyList(h);
                if (i == null || i.size() == 0) {
                    return false
                } else {
                    return "none" != i.eq(1).css("display")
                }
            };
            f.insertBuddyItem = function(u, i) {
                var x = f.getBuddyList(i);
                if (x.size() == 0) {
                    return
                }
                var q = "buddyitem_" + u.uid;
                var s, m;
                if (g.isSinglePattern) {
                    s = a("<li><div /><div /></li>").attr("id", q);
                    var v = s.children();
                    var o = buddyPor(u, u.statusClass, 1);
                    var z = a('<strong class="BuddyList_Container"><img src="' + o + '"><em class="' + u.statusClass + '"></em></strong>');
                    var w = a("<label />");
                    var p = a("<span />");
                    var l = a("<em />");
                    w.text(u.displayName);
                    l.text(" " + getContactPresDesc(u));
                    var r = a("<h5 />").append(z).append(w).append("&nbsp;").append(p).append(l);
                    v.eq(0).addClass("friends_info").append(r);
                    m = v.eq(1)
                } else {
                    s = a("<li><div /><div /><div /></li>").attr("id", q);
                    var j = a("<img complete='complete' alt=''/>").addClass("friends_photo");
                    j.attr("src", getUserPortraitUrl(u, "3"));
                    var v = s.children();
                    v.eq(0).addClass("friends_photo_box").append(j);
                    var z = a("<i />").addClass(u.statusClass);
                    var h = a("<em />");
                    var w = a("<label />");
                    var y = u.pd ? cnSubstr(u.pd.trim(), 6) : getStatusDesc(u);
                    h.text(" " + y);
                    w.text(u.displayName);
                    var r = a("<h5 />").append(z).append(w).append(h);
                    var p = a("<p />");
                    v.eq(1).addClass("friends_info").append(r).append(p);
                    m = v.eq(2)
                }
                m.addClass("friend_control");
                m.bind("click",
                function() {
                    g.onBuddyItemRightClick(s, u.uid.toString());
                    this.className = "friend_control friend_control_down"
                });
                s.bind("mouseover",
                function() {
                    this.className = "hover";
                    g.onBuddyItemMouseOver(this, u.uid.toString())
                }).bind("mouseout",
                function() {
                    this.className = "";
                    g.onBuddyItemMouseOut(this, u.uid.toString())
                }).bind("dblclick",
                function() {
                    g.onBuddyItemDbClick(this, u.uid.toString())
                }).bind("click",
                function() {
                    g.onBuddyItemClick(this, u.uid.toString())
                });
                var t = x.eq(1).find("ul > li[id!='" + q + "']");
                var k = t.size();
                var n = d(t, u);
                if (n < 0 || n >= k) {
                    x.eq(1).find("ul").append(s)
                } else {
                    t.eq(n).before(s)
                }
                if (u.currIsOc) {
                    f.updateBuddyStat(i, 1, 1)
                } else {
                    f.updateBuddyStat(i, 0, 1)
                }
                if (i == "0" || i == "-1") {
                    f.fixSpecialList([i])
                }
            };
            var b = /^\(([\d]+)\/([\d]+)\)$/ig;
            f.updateBuddyStat = function(j, i, h) {
                var l = f.getBuddyList(j);
                if (l.size() == 0) {
                    return
                }
                var m = l.eq(0).children("em:first");
                var k = m.text().trim();
                k = k.replace(b,
                function(o, n, p) {
                    return "(" + (parseInt(n) + i) + "/" + (parseInt(p) + h) + ")"
                });
                m.text(k)
            };
            f.deleteBuddyItem = function(i, j) {
                var l = f.getBuddyList(i);
                if (l.size() == 0) {
                    return null
                }
                var k = l.eq(1).find("#buddyitem_" + j);
                if (k.size() == 0) {
                    return null
                }
                k.remove();
                var h = __contactMap.get(j);
                if (h && h.currIsOc) {
                    f.updateBuddyStat(i, -1, -1)
                } else {
                    f.updateBuddyStat(i, 0, -1)
                }
                if (i == "0" || i == "-1") {
                    f.fixSpecialList([i])
                }
                return k
            };
            f.getBuddyItem = function(h, i) {
                var j = f.getBuddyList(h);
                return j.eq(1).find("#buddyitem_" + i)
            };
            f.updateBuddyItem = function(h, v) {
                var x = f.getBuddyList(h);
                var y = f.getBuddyItem(h, v.uid);
                var r = "buddyitem_" + v.uid;
                if (y.size() == 0) {
                    return
                }
                var s, p, i;
                if (g.isSinglePattern) {
                    s = y.find("div:nth-child(1) > h5 > span:first");
                    p = y.find("div:nth-child(1) > h5 > strong> em:first");
                    i = y.find("div:nth-child(1) > h5 > label:first");
                    var o = y.find("div:nth-child(1) > h5 > strong> img:first");
                    var j = v.statusClass;
                    var m = buddyPor(v, j, 1);
                    o.attr("src", m);
                    var l = y.find("div:nth-child(1) > h5 > em:first");
                    l.text(" " + getContactPresDesc(v))
                } else {
                    s = y.find("div:nth-child(2) > p:first");
                    p = y.find("div:nth-child(2) > h5 > i:first");
                    i = y.find("div:nth-child(2) > h5 > label:first");
                    var o = y.find("div:first-child > img:first");
                    var l = y.find("div:nth-child(2) > h5 > em:first");
                    o.attr("src", getUserPortraitUrl(v, "3"));
                    var z = v.pd ? cnSubstr(v.pd.trim(), 6) : getStatusDesc(v);
                    l.text(" " + z)
                }
                p.removeClass().addClass(v.statusClass);
                i.get(0).innerHTML = EmotionNonhtmlReplace(v.displayName, -1, true);
                var w = i.text().length;
                s.get(0).innerHTML = cnSubstr(!v.i || v.ct == 1 ? "": EmotionNonhtmlReplace(v.i, -1, true), 22 - w, true);
                if (v.isVip) {
                    i.css("color", "red")
                }
                var t = x.eq(1).find("ul > li[id!='" + r + "']");
                var k = t.size();
                var n = d(t, v);
                if (n < 0 || n >= k) {
                    x.eq(1).find("ul").append(y)
                } else {
                    t.eq(n).before(y)
                }
                var u = v.lastIsOc;
                var q = v.currIsOc;
                if (u != q) {
                    if (u && !q) {
                        f.updateBuddyStat(h, -1, 0)
                    } else {
                        f.updateBuddyStat(h, 1, 0)
                    }
                }
            };
            return f
        }
    })
})(jQuery); (function(b) {
    var a = 0;
    b.extend(b.fn, {
        jTabWindow: function(d) {
            var g = b.extend({
                target: "",
                id: ""
            },
            d);
            g.target = ((typeof g.target == "string") ? b("#" + g.target) : g.target);
            var c = b("<div />").attr("id", g.id).addClass("main_cont");
            var f = b("<div />").addClass("top_tab");
            var e = b("<div />").addClass("content");
            c.append(f).append(e);
            g.target.append(c);
            c.adjustContentHeight = function(j) {
                if (typeof j == "undefined") {
                    j = g.target.height() - f.height()
                }
                var l = e.find("iframe");
                l.each(function(h) {
                    b(this).height(0)
                });
                e.height(j);
                var m = j;
                if ((!b.browser.msie) && getViewportWidth() < 1000) {
                    var k = getScrollBarWidth();
                    var i = k.horizontal;
                    m = j - i
                }
                l.each(function(h) {
                    b(this).height(m)
                })
            };
            c.adjustContentHeight();
            f.append("<p>网页版飞信无法保存您的聊天记录,更多功能请下载<a id='topTabDownload' href=\"" + __downloadUrl + '" title="" target="_blank">飞信客户端</a></p>');
            f.append("<ul />");
            c.createTab = function(m, l, h) {
                var i = a++;
                var j = b("<li />").attr("id", "tab_" + i);
                j.append("<span></span>" + m);
                f.children("ul").eq(0).append(j);
                var k = b("<div />").attr("id", "content_" + i);
                if (l.indexOf("?") < 0) {
                    l += "?tabIndex=" + i
                } else {
                    l += "&tabIndex=" + i
                }
                k.append(b("<iframe frameborder=0 />").attr("src", l).css({
                    height: "100%",
                    width: "100%",
                    scrolling: "auto"
                }));
                e.append(k);
                j.bind("click",
                function() {
                    f.find("li").each(function() {
                        var o = b(this);
                        if (o.attr("id") == "tab_" + i) {
                            o.removeClass().addClass("on")
                        } else {
                            o.removeClass()
                        }
                    });
                    e.children("div").each(function() {
                        var o = b(this);
                        if (o.attr("id") == "content_" + i) {
                            o.css("display", "block")
                        } else {
                            o.css("display", "none")
                        }
                    });
                    return false
                });
                if (h) {
                    var n = b("<em />");
                    j.append(n);
                    n.bind("click",
                    function() {
                        j.remove();
                        j = null;
                        k.remove();
                        k = null;
                        var o = f.find("li");
                        if (o.length > 0) {
                            o.eq(0).click()
                        }
                        return false
                    })
                }
                c.adjustContentHeight();
                j.click()
            };
            c.removeTab = function(j) {
                c.find("#tab_" + j).remove();
                c.find("#content_" + j).remove();
                var h = f.find("li");
                if (h.length > 0) {
                    h.eq(0).click()
                }
            };
            c.getTabByUrl = function(i) {
                var h = null;
                e.find("iframe").each(function(j) {
                    if (this.src.startsWith(i)) {
                        h = new Object();
                        h.topTab = f.children("ul").eq(0).children().eq(j);
                        h.content = e.children().eq(j);
                        return false
                    }
                });
                return h
            };
            return c
        }
    })
})(jQuery); (function(c) {
    var d = c("<div style='position:absolute;top:0;left:0;z-index:-1' /> ");
    d.append('<iframe style="FILTER:Alpha(opacity=3);width:100%;height:100%" onclick="alert()" />');
    c.extend(c.fn, {
        fetionHintWindow: function(i) {
            var e = c.extend({
                modal: true
            },
            i);
            var g = c("<div />").addClass("hint").css({
                display: "none",
                "z-index": "-1"
            });
            g.appendTo(document.body);
            var m = c("<h3><span /><i /><b /></h3>");
            var k = c("<div />").addClass("hint_cont");
            var f = c("<div />").addClass("hint_cont_left");
            var h = c("<p />");
            var n = c("<div />").addClass("hint_btn");
            var j = c("<button type=button />").text("确定");
            var l = c("<button type=button />").addClass("btn_cancel").text("取消");
            n.append(j).append(l);
            k.append(f).append(h).append(n);
            g.append(m).append(k);
            g.show = function(v, w, t, o, u, x) {
                m.children().eq(2).text(w);
                h.get(0).innerHTML = v;
                var r = m.children().eq(0);
                if (typeof t == "string" && t == "OK") {
                    l.css("display", "none");
                    j.css("display", "");
                    if (x) {
                        f.append(c("<img class='user_head_52' alt='' complete='complete'/>").attr("src", x))
                    } else {
                        f.addClass("hcl_bg_confirm")
                    }
                    j.bind("click",
                    function() {
                        if (typeof o == "function") {
                            o()
                        }
                        g.close()
                    });
                    r.bind("click",
                    function(p) {
                        stopPropagation(p);
                        if (typeof o == "function") {
                            o()
                        }
                        g.close()
                    })
                } else {
                    if (typeof t == "string" && t == "OKCancel") {
                        l.css("display", "");
                        j.css("display", "");
                        if (x) {
                            f.append(c("<img class='user_head_52' alt='' complete='complete'/>").attr("src", x))
                        } else {
                            f.addClass("hcl_bg_tips")
                        }
                        j.bind("click",
                        function() {
                            if (typeof o == "function") {
                                o()
                            }
                            g.close()
                        });
                        l.bind("click",
                        function() {
                            if (typeof u == "function") {
                                u()
                            }
                            g.close()
                        });
                        r.bind("click",
                        function(p) {
                            stopPropagation(p);
                            if (typeof o == "function") {
                                u()
                            }
                            g.close()
                        })
                    }
                }
                var s = getViewportCenter();
                var q = {
                    top: s.y - g.height() / 2,
                    left: s.x - g.width() / 2
                };
                if (q.top < 50) {
                    q.top = 50
                }
                if (q.left < 50) {
                    q.left = 50
                }
                g.css({
                    top: q.top + "px",
                    left: q.left + "px"
                });
                g.css({
                    display: "",
                    "z-index": "1000000"
                });
                if (e.modal) {
                    c.appendMaskPage()
                }
            };
            g.close = function() {
                g.css("display", "none");
                g.css("z-index", -1);
                if (e.modal) {
                    c.removeMaskPage()
                }
                g.remove()
            };
            m.bind("mousedown",
            function(o) {
                o = window.event || o;
                if (g.get(0).setCapture) {
                    g.get(0).setCapture()
                } else {
                    if (window.captureEvents) {
                        window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP)
                    }
                }
                var q = g.offset();
                var r = {
                    win: g,
                    mOffsetX: o.clientX - q.left,
                    mOffsetY: o.clientY - q.top,
                    maskPage: !e.modal
                };
                if (!e.modal) {
                    c.appendMaskPage(99)
                }
                g.bind("mousemove", r, b).bind("mouseup", r, a)
            });
            return g
        }
    });
    c.extend({
        initMaskPage: function() {
            d.css({
                width: (getViewportWidth() - 4) + "px",
                height: getViewportHeight() + "px"
            });
            d.appendTo(document.body)
        },
        appendMaskPage: function(e) {
            if (typeof e != "number") {
                e = 99999
            }
            d.css("z-index", "" + e)
        },
        removeMaskPage: function() {
            d.css("z-index", "-1")
        }
    });
    function b(k) {
        var l = k.data;
        var g = l.win;
        var f = l.mOffsetX;
        var m = l.mOffsetY;
        var j = window.event || k;
        if (j.button == 1) {
            var h = parseInt(j.clientY) - parseInt(m);
            var i = parseInt(j.clientX) - parseInt(f);
            h = (h < -10 ? 0 : h);
            i = (i < -10 ? 0 : i);
            g.css({
                top: h + "px",
                left: i + "px"
            })
        }
    }
    function a(g) {
        var h = g.data;
        var f = h.win;
        if (f.get(0).releaseCapture) {
            f.get(0).releaseCapture()
        } else {
            if (window.releaseEvents) {
                window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP)
            }
        }
        if (h.maskPage) {
            c.removeMaskPage()
        }
        f.unbind("mousemove").unbind("mouseup")
    }
})(jQuery); (function(b) {
    b.extend(b.fn, {
        friendInviteWindow: function(t) {
            var n = b.extend({
                initPostion: {
                    top: 100,
                    left: 200
                },
                buddy: {},
                inviteType: 0,
                onConfirm: function() {},
                onCancel: function() {}
            },
            t);
            var f = b("<div id='invited_" + n.buddy.uid + "'></div>").addClass("hint friend_invite").css({
                width: "408px",
                top: n.initPostion.top + "px",
                left: n.initPostion.left + "px"
            });
            f.appendTo(document.body);
            var w = b("<h3><span /><i /><b>提示</b></h3>");
            f.append(w);
            var o = b("<div />").addClass("hint_cont");
            f.append(o);
            var p = b("<div class='invite_top'><div class='invite_top_inside'></div></div>");
            var d = b("<img alt='' />").attr("src", portrait.defaultIcon);
            var g = b("<p />");
            p.children().eq(0).append(d).append(g);
            o.append(p);
            var j = ' style="display:none"';
            if (1 == n.inviteType) {
                j = ""
            }
            var m = "agreeradio" + n.buddy.uid,
            h = "agree" + n.buddy.uid,
            e = "disagree" + n.buddy.uid,
            r = "refuse_select" + n.buddy.uid;
            var i = b('<div class="invite_main"><h4>回应</h4><p' + j + '>提示:对方是通过您的手机号码添加您,同意后将会公开您的手机号和姓名。</p><table border="0" cellspacing="0" cellpadding="0"><tbody><tr><td width="142"><input id="' + h + '" value="1" checked type="radio" name="' + m + '"><label for="' + h + '"> 同意,设置显示名称</label></td><td><input id="LocalName" maxlength="64" class="text_150" name="">(可选)</td></tr><tr><td align="right">添加到该分组&nbsp;&nbsp;&nbsp;&nbsp;</td><td><select id="test09" class="group" name=""></select><font size="+0">网页版飞信无法新增好友分组</font></td></tr><tr><td colspan="2"><input id="' + e + '" value="0" type="radio" name="' + m + '"><label for="' + e + '"> 不同意</label><div class="refuse"><input id="' + r + '" value="" type="checkbox" name="" disabled="disabled"><label for="' + r + '">拒绝此人再和我联系</label></div></td><td>&nbsp;</td></tr></tbody></table></div>');
            o.append(i);
            var v = o.find("#" + e);
            var u = o.find("#" + r);
            o.find("input[name='" + m + "']").bind("click",
            function() {
                if (v.attr("checked")) {
                    u.removeAttr("disabled")
                } else {
                    u.attr("disabled", "disabled").removeAttr("checked")
                }
            });
            var q = b("<button>确定</button>").bind("click",
            function() {
                var x = new Object();
                x.data = {
                    Buddy: n.buddy,
                    Result: o.find("input[name='" + m + "']:checked").val(),
                    LocalName: o.find("#LocalName").val(),
                    BuddyList: o.find(".group").val(),
                    Blocked: o.find("#" + r).attr("checked") ? 1 : 0
                };
                f.remove();
                n.onConfirm(x);
                return false
            });
            var l = b("<button>取消</button>").addClass("btn_cancel").bind("click",
            function() {
                f.remove();
                n.onCancel();
                return false
            });
            var s = b("<div />").addClass("hint_btn").append(q).append(l);
            o.append(s);
            w.bind("mousedown",
            function(z) {
                z = window.event || z;
                if (f.get(0).setCapture) {
                    f.get(0).setCapture()
                } else {
                    if (window.captureEvents) {
                        window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP)
                    }
                }
                var A = f.offset();
                var x = getViewportHeight();
                var y = getViewportWidth();
                var B = {
                    win: f,
                    mOffsetX: z.clientX - A.left,
                    mOffsetY: z.clientY - A.top,
                    viewH: x,
                    viewW: y
                };
                f.bind("mousemove", B, a).bind("mouseup", B, c)
            });
            w.children("span:first").bind("click",
            function(x) {
                f.css("display", "none");
                f.css("z-index", -1);
                stopPropagation(x)
            });
            var k = o.find(".group");
            f.insertBuddyList = function(z, y) {
                var x = b("<option value='" + z + "'></option>");
                x.text(y);
                k.append(x)
            };
            f.insertDesc = function(x) {
                g.text(x)
            };
            return f
        },
        setSmsWindow: function(g) {
            var d = b.extend({
                onConfirm: function() {},
                onCancel: function() {}
            },
            g);
            var h = b("<div />").addClass("hint set_message").css({
                top: "-1000px",
                left: "-1000px"
            });
            h.appendTo(document.body);
            var l = b("<h3><span /><i /><b>设置</b></h3>");
            h.append(l);
            var j = b("<div />").addClass("hint_cont");
            h.append(j);
            var e = b("<p />");
            e.append("您在这里可以设置不接收短信/彩信,并且能够定制一个时间期限。在这期间,您不会收到来自飞信的短信,但不影响您登录飞信的客户端接收消息<br><span>您希望这段时间是:</span><br>");
            e.append('<input value="1" type="radio" name="sms_time" checked="checked">&nbsp;<label for="time_1">24小时</label><br>');
            e.append('<input value="2" type="radio" name="sms_time">&nbsp;<label for="time_2">3天</label><br>');
            e.append('<input value="3" type="radio" name="sms_time">&nbsp;<label for="time_3">1周</label><br>');
            e.append('<input value="4" type="radio" name="sms_time">&nbsp;<label for="time_4">永远</label>');
            j.append(e);
            var f = b("<button>确定</button>").bind("click",
            function() {
                h.css({
                    display: "none",
                    "z-index": "-1"
                });
                d.onConfirm(h, e.find("input[checked]").val());
                return false
            });
            var i = b("<button>取消</button>").addClass("btn_cancel").bind("click",
            function() {
                h.css({
                    display: "none",
                    "z-index": "-1"
                });
                d.onCancel(h);
                return false
            });
            var k = b("<div />").addClass("hint_btn").append(f).append(i);
            j.append(k);
            l.bind("mousedown",
            function(o) {
                o = window.event || o;
                if (h.get(0).setCapture) {
                    h.get(0).setCapture()
                } else {
                    if (window.captureEvents) {
                        window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP)
                    }
                }
                var q = h.offset();
                var m = getViewportHeight();
                var n = getViewportWidth();
                var r = {
                    win: h,
                    mOffsetX: o.clientX - q.left,
                    mOffsetY: o.clientY - q.top,
                    viewH: m,
                    viewW: n
                };
                h.bind("mousemove", r, a).bind("mouseup", r, c)
            });
            l.children("span:first").bind("click",
            function(m) {
                stopPropagation(m);
                h.css({
                    display: "none",
                    "z-index": "-1"
                });
                d.onCancel(h)
            });
            h.show = function() {
                var n = getViewportCenter();
                var m = {
                    top: n.y - 171,
                    left: n.x - 108
                };
                if (m.top < 50) {
                    m.top = 50
                }
                if (m.left < 50) {
                    m.left = 50
                }
                h.css({
                    top: m.top + "px",
                    left: m.left + "px"
                });
                h.css({
                    display: "",
                    "z-index": "8888"
                })
            };
            return h
        }
    });
    function a(k) {
        var l = k.data;
        var h = l.win;
        var j = l.mOffsetX;
        var g = l.mOffsetY;
        var i = l.viewH - h.outerHeight();
        var f = l.viewW - h.outerWidth();
        i = (i < 0 ? 0 : i);
        f = (f < 0 ? 0 : f);
        var n = window.event || k;
        if (n.button < 2) {
            var m = parseInt(n.clientY) - parseInt(g);
            var o = parseInt(n.clientX) - parseInt(j);
            m = (m < 0 ? 0 : m);
            o = (o < 0 ? 0 : o);
            m = (m > i ? i: m);
            o = (o > f ? f: o);
            h.css({
                top: m + "px",
                left: o + "px"
            })
        }
    }
    function c(g) {
        var h = g.data;
        var f = h.win;
        if (f.get(0).releaseCapture) {
            f.get(0).releaseCapture()
        } else {
            if (window.releaseEvents) {
                window.releaseEvents(Event.MOUSEMOVE | Event.MOUSEUP)
            }
        }
        b.removeMaskPage();
        f.unbind("mousemove").unbind("mouseup")
    }
})(jQuery); (function(a) {
    a.extend(a.fn, {
        jRemindMsgList: function(e) {
            var b = a.extend({
                target: a(document.body),
                relative: "msg_remind",
                maxHold: 5,
                onClearAll: function() {}
            },
            e);
            b.target = ((typeof b.target == "string") ? a("#" + b.target) : b.target);
            b.relative = ((typeof b.relative == "string") ? a("#" + b.relative) : b.relative);
            var c = a("<div />").attr("id", "Main_BuddyMsgList").addClass("pop_box pop_msg_all").css({
                "z-index": "999",
                width: "129",
                background: "#fff"
            });
            c.isShow = false;
            c.appendTo(b.target);
            var i = a("<div />").addClass("pop_box_inside");
            c.append(i);
            var g = a("<div />").addClass("clear_all");
            var d = a("<a />").attr("href", "#").attr("title", "清空").text("全部清空").bind("click",
            function() {
                j.find("li").remove();
                c.hide();
                b.onClearAll(c)
            });
            i.append(a("<div />").addClass("clear_all").append(d));
            i.append(a("<div />").addClass("line"));
            var j = a("<ul />").addClass("friends_list_small");
            i.append(j);
            i.append(a("<div />").addClass("line"));
            var f = a("<ul />").addClass("up_down_control");
            var k = a("<li />").append(a("<em />")).bind("mouseover",
            function() {
                k.addClass("active")
            }).bind("mouseout",
            function() {
                k.removeClass("active")
            });
            var l = a("<li>").addClass("septation");
            var h = a("<li />").bind("mouseover",
            function() {
                h.addClass("active")
            }).bind("mouseout",
            function() {
                h.removeClass("active")
            }).append(a("<em />").addClass("down"));
            f.append(k).append(l).append(h);
            i.append(f);
            c.hide = function() {
                c.css("display", "none");
                c.isShow = false
            };
            c.show = function() {
                var m = j.find("li");
                var o = m.size();
                m.each(function(p) {
                    if (p < o - b.maxHold) {
                        a(this).css("display", "none")
                    } else {
                        a(this).css("display", "block")
                    }
                });
                c.css("display", "block");
                c.isShow = true;
                var n = b.relative.offset();
                c.css({
                    top: n.top - c.height(),
                    left: 0
                })
            };
            c.moveItems = function(o) {
                var m = j.find("li");
                var n = m.length;
                if (n <= b.maxHold) {
                    m.each(function() {
                        a(this).css("display", "block")
                    });
                    return
                }
                var p = 0;
                m.each(function(q) {
                    if (a(this).css("display") != "none") {
                        p = q;
                        return false
                    }
                });
                if (o == "up") {
                    p--
                } else {
                    p++
                }
                if (p < 0) {
                    p = 0
                } else {
                    if (p + b.maxHold >= n) {
                        p = n - b.maxHold
                    }
                }
                m.each(function(q) {
                    if (q >= p && q < p + b.maxHold) {
                        a(this).css("display", "block")
                    } else {
                        a(this).css("display", "none")
                    }
                })
            };
            c.addItem = function(m) {
                j.prepend(m);
                if (j.find("li").size() <= b.maxHold) {
                    m.css("display", "block")
                } else {
                    m.css("display", "none")
                }
            };
            c.bind("mouseout",
            function(m) {
                if (isMouseOut(this, m)) {
                    c.hide()
                }
            }).bind("mouseover",
            function() {
                clearTimeout(__hideRemindMsgTimer)
            });
            return c
        },
        jRemindMsgItem: function(d, b, h) {
            var g = a("<i  class='Buddy_photo'/>").attr("id", "remindmsg_" + d.uid).append("<img src='" + h + "'>");
            var f = a("<b />").text(cnSubstr(d.displayName, 8, true));
            var c = a("<strong />").text("1");
            var e = a("<li />");
            e.append(g).append(f).append(" (").append(c).append(") ");
            e.bind("click",
            function() {
                if (!b.isActived) {
                    b.active();
                    var i = getChatWinPosition();
                    b.show(i.top, i.left)
                } else {
                    if (!b.hasShown) {
                        var i = getChatWinPosition();
                        b.show(i.top, i.left)
                    } else {
                        b.show()
                    }
                }
                __remindMsgDiv.hide()
            }).bind("mouseover",
            function() {
                this.className = "hover"
            }).bind("mouseout",
            function() {
                this.className = ""
            });
            e.msgCount = function(i) {
                if (!i) {
                    return parseInt(c.text())
                } else {
                    c.text(i)
                }
            };
            e.updateItem = function(i, j) {
                if (j) {
                    g.find("img").attr("src", j)
                }
                f.text(cnSubstr(i.displayName, 8, true))
            };
            return e
        }
    })
})(jQuery); (function(a) {
    a.extend(a.fn, {
        jMoreMsgLists: function(c) {
            var b = a.extend({
                target: a(document.body),
                maxHold: 5,
                relative: "msg_more"
            },
            c);
            b.target = ((typeof b.target == "string") ? a("#" + b.target) : b.target);
            b.relative = ((typeof b.relative == "string") ? a("#" + b.relative) : b.relative);
            var k = a("<div />").attr("id", "Main_MoreBuddyMsgs").addClass("pop_box pop_chat_win").css({
                "z-index": "999",
                width: "102px",
                background: "#fff"
            });
            var g = a("<div />").addClass("pop_box_inside");
            var h = a("<ul />").attr("id", "more_buddy_list").addClass("msg_list");
            var d = a("<div />").addClass("line");
            var e = a("<ul />").addClass("up_down_control");
            var i = a("<li />").append(a("<em />")).bind("mouseover",
            function() {
                a(this).addClass("active")
            }).bind("mouseout",
            function() {
                a(this).removeClass()
            }).bind("click",
            function() {
                k.moveItems("up")
            }).bind("dblclick",
            function() {
                k.moveItems("up")
            });
            var j = a("<li>").addClass("septation");
            var f = a("<li />").bind("mouseover",
            function() {
                a(this).addClass("active")
            }).bind("mouseout",
            function() {
                a(this).removeClass()
            }).append(a("<em />").addClass("down")).bind("click",
            function() {
                k.moveItems("down")
            }).bind("dblclick",
            function() {
                k.moveItems("down")
            });
            e.append(i).append(j).append(f);
            g.append(h).append(d).append(e);
            k.append(g);
            k.appendTo(b.target);
            k.hide = function() {
                k.css("display", "none");
                k.isShow = false
            };
            k.show = function() {
                var l = h.find("li");
                var n = l.size();
                l.each(function(o) {
                    if (o < n - b.maxHold) {
                        a(this).css("display", "none")
                    } else {
                        a(this).css("display", "block")
                    }
                });
                k.css("display", "block");
                k.isShow = true;
                var m = b.relative.offset();
                k.css({
                    top: m.top - k.height(),
                    left: m.left - k.width() + b.relative.width()
                })
            };
            k.moveItems = function(n) {
                var l = h.find("li");
                var m = l.length;
                if (m <= b.maxHold) {
                    l.each(function() {
                        a(this).css("display", "block")
                    });
                    return
                }
                var o = 0;
                l.each(function(p) {
                    if (a(this).css("display") != "none") {
                        o = p;
                        return false
                    }
                });
                if (n == "up") {
                    o--
                } else {
                    o++
                }
                if (o < 0) {
                    o = 0
                } else {
                    if (o + b.maxHold >= m) {
                        o = m - b.maxHold
                    }
                }
                l.each(function(p) {
                    if (p >= o && p < o + b.maxHold) {
                        a(this).css("display", "block")
                    } else {
                        a(this).css("display", "none")
                    }
                })
            };
            k.addItem = function(l) {
                h.prepend(l);
                if (h.find("li").size() <= b.maxHold) {
                    l.css("display", "block")
                } else {
                    l.css("display", "none")
                }
            };
            k.getItems = function() {
                return h.find("li")
            };
            k.bind("mouseout",
            function(l) {
                if (isMouseOut(this, l)) {
                    k.hide()
                }
            }).bind("mouseover",
            function() {
                clearTimeout(__hideMoreMsgListTimer)
            });
            return k
        },
        jFooterItem: function(d, c, h) {
            var e = a("<li></li>").attr("id", "footer_" + d.uid).bind("click",
            function(k) {
                if (c.isShow && c.isOnFocus()) {
                    c.hide()
                } else {
                    if (!c.hasShown) {
                        var j = getChatWinPosition();
                        c.show(j.top, j.left)
                    } else {
                        c.show()
                    }
                    c.css("display", "")
                }
            }).bind("mouseover",
            function() {
                if (this.className != "call") {
                    this.className = "hover"
                }
            }).bind("mouseout",
            function() {
                if (this.className != "call") {
                    this.className = ""
                }
            });
            var i = a("<em />").bind("click",
            function(j) {
                stopPropagation(j);
                c.close();
                e.remove();
                reInitialFooter()
            });
            e.append(i);
            var g = a('<i class="Buddy_photo"><img src=' + h + "></i>");
            e.append(g);
            var b = cnSubstr(d.displayName, 8, true);
            var f = a("<lable />").addClass("tit_name").text(b);
            e.append(f);
            e.updateItem = function(j, k) {
                g.find("img").attr("src", k);
                b = cnSubstr(j.displayName, 8, true);
                f.text(b)
            };
            e.isInMoreMsgList = function() {
                if (e.inMore) {
                    return true
                } else {
                    return e.parent().attr("id") == "more_buddy_list"
                }
            };
            return e
        }
    })
})(jQuery);
posted on 2012-07-10 23:15  西湖浪子  阅读(374)  评论(0)    收藏  举报